--- a/CREDITS Sat Dec 14 21:16:20 2013 +0400
+++ b/CREDITS Tue Dec 17 00:02:52 2013 +0400
@@ -17,8 +17,7 @@
==========
- Robinator -> Terminator (2010)
- shingo666 -> Samus (2010)
-- MeinCookie95 -> InfernalHorns (2010)
-- MeinCookie95 -> Mummy (2010)
+- MeinCookie95 -> InfernalHorns (2010), Mummy (2010), war_* (2010-2011)
- thuban -> Elvis (2010)
- Miphica -> Disguise (2010)
- Blayde -> Deer (2010), Moose (2010)
--- a/ChangeLog.txt Sat Dec 14 21:16:20 2013 +0400
+++ b/ChangeLog.txt Tue Dec 17 00:02:52 2013 +0400
@@ -3,6 +3,7 @@
0.9.19 -> ???:
* increase precision in damage calcs; extra damage affects fire properly now
+ * visual enhancements for whip
0.9.18 -> 0.9.19:
+ New Freezer weapon - freezes terrain, water, hedgehogs, mines, cases, explosives
--- a/QTfrontend/game.cpp Sat Dec 14 21:16:20 2013 +0400
+++ b/QTfrontend/game.cpp Tue Dec 17 00:02:52 2013 +0400
@@ -506,7 +506,7 @@
void HWGame::sendCampaignVar(const QByteArray &varToSend)
{
- QString varToFind(varToSend);
+ QString varToFind = QString::fromUtf8(varToSend);
QSettings teamfile(QString("physfs://Teams/%1.hwt").arg(campaignTeam), QSettings::IniFormat, 0);
teamfile.setIniCodec("UTF-8");
QString varValue = teamfile.value("Campaign " + campaign + "/" + varToFind, "").toString();
--- a/QTfrontend/model/HatModel.cpp Sat Dec 14 21:16:20 2013 +0400
+++ b/QTfrontend/model/HatModel.cpp Tue Dec 17 00:02:52 2013 +0400
@@ -37,6 +37,8 @@
void HatModel::loadHats()
{
+ qDebug("HatModel::loadHats()");
+
// this method resets the contents of this model (important to know for views).
QStandardItemModel::beginResetModel();
QStandardItemModel::clear();
--- a/QTfrontend/model/MapModel.cpp Sat Dec 14 21:16:20 2013 +0400
+++ b/QTfrontend/model/MapModel.cpp Tue Dec 17 00:02:52 2013 +0400
@@ -28,12 +28,26 @@
#include "HWApplication.h"
#include "hwconsts.h"
-MapModel::MapInfo MapModel::MapInfoRandom = {MapModel::GeneratedMap, "+rnd+", "", 0, "", "", ""};
-MapModel::MapInfo MapModel::MapInfoMaze = {MapModel::GeneratedMaze, "+maze+", "", 0, "", "", ""};
-MapModel::MapInfo MapModel::MapInfoDrawn = {MapModel::HandDrawnMap, "+drawn+", "", 0, "", "", ""};
+MapModel::MapInfo MapModel::MapInfoRandom = {MapModel::GeneratedMap, "+rnd+", "", 0, "", "", "", false};
+MapModel::MapInfo MapModel::MapInfoMaze = {MapModel::GeneratedMaze, "+maze+", "", 0, "", "", "", false};
+MapModel::MapInfo MapModel::MapInfoDrawn = {MapModel::HandDrawnMap, "+drawn+", "", 0, "", "", "", false};
+
-void MapModel::loadMaps(MapType maptype)
+MapModel::MapModel(MapType maptype, QObject *parent) : QStandardItemModel(parent)
+{
+ m_maptype = maptype;
+ m_loaded = false;
+}
+
+bool MapModel::loadMaps()
{
+ if(m_loaded)
+ return false;
+
+ m_loaded = true;
+
+ qDebug("[LAZINESS] MapModel::loadMaps()");
+
// this method resets the contents of this model (important to know for views).
beginResetModel();
@@ -75,7 +89,7 @@
MapType type = isMission ? MissionMap : StaticMap;
// if we're supposed to ignore this type, continue
- if (type != maptype) continue;
+ if (type != m_maptype) continue;
// load map info from file
QTextStream input(&mapCfgFile);
@@ -149,15 +163,19 @@
QStandardItemModel::appendColumn(mapList);
endResetModel();
+
+ return true;
}
-bool MapModel::mapExists(const QString & map) const
+bool MapModel::mapExists(const QString & map)
{
return findMap(map) >= 0;
}
-int MapModel::findMap(const QString & map) const
+int MapModel::findMap(const QString & map)
{
+ loadMaps();
+
return m_mapIndexes.value(map, -1);
}
--- a/QTfrontend/model/MapModel.h Sat Dec 14 21:16:20 2013 +0400
+++ b/QTfrontend/model/MapModel.h Tue Dec 17 00:02:52 2013 +0400
@@ -67,12 +67,14 @@
bool dlc; ///< True if this map was not packaged with the game
};
+ MapModel(MapType maptype, QObject *parent = 0);
+
/**
* @brief Searches maps in model to find out if one exists
* @param map map of which to check existence
* @return true if it exists
*/
- bool mapExists(const QString & map) const;
+ bool mapExists(const QString & map);
/**
* @brief Finds a map index (column, row) for a map name
@@ -86,7 +88,7 @@
* @param map map of which to find index
* @return int of index, or -1 if map not found
*/
- int findMap(const QString & map) const;
+ int findMap(const QString & map);
/**
* @brief Finds and returns a map item for a map name
@@ -98,16 +100,16 @@
// Static MapInfos for drawn and generated maps
static MapInfo MapInfoRandom, MapInfoMaze, MapInfoDrawn;
- public slots:
- /// Reloads the maps using the DataManager.
- /// Accepts two map types: StaticMap or MissionMap.
- void loadMaps(MapType maptype);
+ /// Loads the maps
+ bool loadMaps();
private:
/// map index lookup table. QPair<int, int> contains: <column, index>
//QHash<QString, QPair<int, int> > m_mapIndexes;
QHash<QString, int> m_mapIndexes;
+ MapType m_maptype;
+ bool m_loaded;
/**
* @brief Creates a QStandardItem, that holds the map info and item appearance.
--- a/QTfrontend/model/ThemeModel.cpp Sat Dec 14 21:16:20 2013 +0400
+++ b/QTfrontend/model/ThemeModel.cpp Tue Dec 17 00:02:52 2013 +0400
@@ -29,6 +29,8 @@
QAbstractListModel(parent)
{
m_data = QList<QMap<int, QVariant> >();
+
+ m_themesLoaded = false;
}
int ThemeModel::rowCount(const QModelIndex &parent) const
@@ -36,7 +38,11 @@
if(parent.isValid())
return 0;
else
+ {
+ if(!m_themesLoaded)
+ loadThemes();
return m_data.size();
+ }
}
@@ -45,13 +51,21 @@
if(index.column() > 0 || index.row() >= m_data.size())
return QVariant();
else
+ {
+ if(!m_themesLoaded)
+ loadThemes();
+
return m_data.at(index.row()).value(role);
+ }
}
-void ThemeModel::loadThemes()
+void ThemeModel::loadThemes() const
{
- beginResetModel();
+ qDebug("[LAZINESS ThemeModel::loadThemes()]");
+
+ m_themesLoaded = true;
+
DataManager & datamgr = DataManager::instance();
@@ -94,7 +108,4 @@
m_data.append(dataset);
}
-
-
- endResetModel();
}
--- a/QTfrontend/model/ThemeModel.h Sat Dec 14 21:16:20 2013 +0400
+++ b/QTfrontend/model/ThemeModel.h Tue Dec 17 00:02:52 2013 +0400
@@ -45,14 +45,11 @@
int rowCount(const QModelIndex &parent = QModelIndex()) const;
QVariant data(const QModelIndex &index, int role) const;
+ private:
+ mutable QList<QMap<int, QVariant> > m_data;
+ mutable bool m_themesLoaded;
- public slots:
- /// reloads the themes from the DataManager
- void loadThemes();
-
-
- private:
- QList<QMap<int, QVariant> > m_data;
+ void loadThemes() const;
};
#endif // HEDGEWARS_THEMEMODEL_H
--- a/QTfrontend/model/playerslistmodel.cpp Sat Dec 14 21:16:20 2013 +0400
+++ b/QTfrontend/model/playerslistmodel.cpp Tue Dec 17 00:02:52 2013 +0400
@@ -84,6 +84,15 @@
return true;
}
+QModelIndex PlayersListModel::nicknameIndex(const QString & nickname)
+{
+ QModelIndexList mil = match(index(0), Qt::DisplayRole, nickname, 1, Qt::MatchExactly);
+
+ if(mil.size() > 0)
+ return mil[0];
+ else
+ return QModelIndex();
+}
void PlayersListModel::addPlayer(const QString & nickname, bool notify)
{
@@ -105,22 +114,22 @@
else
emit nickRemovedLobby(nickname, msg);
- QModelIndexList mil = match(index(0), Qt::DisplayRole, nickname, 1, Qt::MatchExactly);
+ QModelIndex mi = nicknameIndex(nickname);
- if(mil.size())
- removeRow(mil[0].row());
+ if(mi.isValid())
+ removeRow(mi.row());
}
void PlayersListModel::playerJoinedRoom(const QString & nickname, bool notify)
{
- QModelIndexList mil = match(index(0), Qt::DisplayRole, nickname, 1, Qt::MatchExactly);
+ QModelIndex mi = nicknameIndex(nickname);
- if(mil.size())
+ if(mi.isValid())
{
- setData(mil[0], true, RoomFilterRole);
- updateIcon(mil[0]);
- updateSortData(mil[0]);
+ setData(mi, true, RoomFilterRole);
+ updateIcon(mi);
+ updateSortData(mi);
}
emit nickAdded(nickname, notify);
@@ -131,62 +140,65 @@
{
emit nickRemoved(nickname);
- QModelIndexList mil = match(index(0), Qt::DisplayRole, nickname, 1, Qt::MatchExactly);
+ QModelIndex mi = nicknameIndex(nickname);
- if(mil.size())
+ if(mi.isValid())
{
- setData(mil[0], false, RoomFilterRole);
- setData(mil[0], false, RoomAdmin);
- setData(mil[0], false, Ready);
- setData(mil[0], false, InGame);
- updateIcon(mil[0]);
+ setData(mi, false, RoomFilterRole);
+ setData(mi, false, RoomAdmin);
+ setData(mi, false, Ready);
+ setData(mi, false, InGame);
+ updateIcon(mi);
}
}
void PlayersListModel::setFlag(const QString &nickname, StateFlag flagType, bool isSet)
{
- QModelIndexList mil = match(index(0), Qt::DisplayRole, nickname, 1, Qt::MatchExactly);
+ if(flagType == Friend)
+ {
+ if(isSet)
+ m_friendsSet.insert(nickname.toLower());
+ else
+ m_friendsSet.remove(nickname.toLower());
- if(mil.size())
+ saveSet(m_friendsSet, "friends");
+ }
+ else if(flagType == Ignore)
{
- setData(mil[0], isSet, flagType);
+ if(isSet)
+ m_ignoredSet.insert(nickname.toLower());
+ else
+ m_ignoredSet.remove(nickname.toLower());
+
+ saveSet(m_ignoredSet, "ignore");
+ }
+
+ QModelIndex mi = nicknameIndex(nickname);
+
+ if(mi.isValid())
+ {
+ setData(mi, isSet, flagType);
if(flagType == Friend || flagType == ServerAdmin
|| flagType == Ignore || flagType == RoomAdmin)
- updateSortData(mil[0]);
-
- if(flagType == Friend)
- {
- if(isSet)
- m_friendsSet.insert(nickname.toLower());
- else
- m_friendsSet.remove(nickname.toLower());
-
- saveSet(m_friendsSet, "friends");
- }
+ updateSortData(mi);
- if(flagType == Ignore)
- {
- if(isSet)
- m_ignoredSet.insert(nickname.toLower());
- else
- m_ignoredSet.remove(nickname.toLower());
-
- saveSet(m_ignoredSet, "ignore");
- }
-
- updateIcon(mil[0]);
+ updateIcon(mi);
}
}
bool PlayersListModel::isFlagSet(const QString & nickname, StateFlag flagType)
{
- QModelIndexList mil = match(index(0), Qt::DisplayRole, nickname, 1, Qt::MatchExactly);
+ QModelIndex mi = nicknameIndex(nickname);
- if(mil.size())
- return mil[0].data(flagType).toBool();
+ if(mi.isValid())
+ return mi.data(flagType).toBool();
+ else if(flagType == Friend)
+ return isFriend(nickname);
+ else if(flagType == Ignore)
+ return isIgnored(nickname);
else
return false;
}
@@ -344,11 +356,20 @@
checkFriendIgnore(index(i));
}
+bool PlayersListModel::isFriend(const QString & nickname)
+{
+ return m_friendsSet.contains(nickname.toLower());
+}
+
+bool PlayersListModel::isIgnored(const QString & nickname)
+{
+ return m_ignoredSet.contains(nickname.toLower());
+}
void PlayersListModel::checkFriendIgnore(const QModelIndex &mi)
{
- setData(mi, m_friendsSet.contains(mi.data().toString().toLower()), Friend);
- setData(mi, m_ignoredSet.contains(mi.data().toString().toLower()), Ignore);
+ setData(mi, isFriend(mi.data().toString()), Friend);
+ setData(mi, isIgnored(mi.data().toString()), Ignore);
updateIcon(mi);
updateSortData(mi);
--- a/QTfrontend/model/playerslistmodel.h Sat Dec 14 21:16:20 2013 +0400
+++ b/QTfrontend/model/playerslistmodel.h Tue Dec 17 00:02:52 2013 +0400
@@ -43,6 +43,8 @@
bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex());
bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex());
+ QModelIndex nicknameIndex(const QString & nickname);
+
public slots:
void addPlayer(const QString & nickname, bool notify);
void removePlayer(const QString & nickname, const QString & msg = QString());
@@ -71,6 +73,8 @@
void loadSet(QSet<QString> & set, const QString & suffix);
void saveSet(const QSet<QString> & set, const QString & suffix);
void checkFriendIgnore(const QModelIndex & mi);
+ bool isFriend(const QString & nickname);
+ bool isIgnored(const QString & nickname);
};
#endif // PLAYERSLISTMODEL_H
--- a/QTfrontend/model/roomslistmodel.cpp Sat Dec 14 21:16:20 2013 +0400
+++ b/QTfrontend/model/roomslistmodel.cpp Tue Dec 17 00:02:52 2013 +0400
@@ -30,7 +30,7 @@
RoomsListModel::RoomsListModel(QObject *parent) :
QAbstractTableModel(parent),
- c_nColumns(8)
+ c_nColumns(9)
{
m_headerData =
QStringList()
@@ -40,6 +40,7 @@
<< tr("T")
<< tr("Owner")
<< tr("Map")
+ << tr("Script")
<< tr("Rules")
<< tr("Weapons");
--- a/QTfrontend/net/newnetclient.cpp Sat Dec 14 21:16:20 2013 +0400
+++ b/QTfrontend/net/newnetclient.cpp Tue Dec 17 00:02:52 2013 +0400
@@ -311,14 +311,12 @@
if (lst[0] == "ROOMS")
{
- if(lst.size() % 8 != 1)
+ if(lst.size() % 9 != 1)
{
qWarning("Net: Malformed ROOMS message");
return;
}
- QStringList tmp = lst;
- tmp.removeFirst();
- m_roomsListModel->setRoomsList(tmp);
+ m_roomsListModel->setRoomsList(lst.mid(1));
if (m_private_game == false && m_nick_registered == false)
{
emit NickNotRegistered(mynick);
@@ -406,7 +404,7 @@
return;
}
- if (lst[0] == "CLIENT_FLAGS")
+ if (lst[0] == "CLIENT_FLAGS" || lst[0] == "CF")
{
if(lst.size() < 3 || lst[1].size() < 2)
{
@@ -527,7 +525,7 @@
return;
}
- if(lst[0] == "ROOM" && lst.size() == 10 && lst[1] == "ADD")
+ if(lst[0] == "ROOM" && lst.size() == 11 && lst[1] == "ADD")
{
QStringList tmp = lst;
tmp.removeFirst();
@@ -537,7 +535,7 @@
return;
}
- if(lst[0] == "ROOM" && lst.size() == 11 && lst[1] == "UPD")
+ if(lst[0] == "ROOM" && lst.size() == 12 && lst[1] == "UPD")
{
QStringList tmp = lst;
tmp.removeFirst();
@@ -627,15 +625,9 @@
return;
}
- if (lst[0] == "ADMIN_ACCESS")
- {
- // obsolete, see +a client flag
- return;
- }
-
if(lst[0] == "JOINING")
{
- if(lst.size() < 2)
+ if(lst.size() != 2)
{
qWarning("Net: Bad JOINING message");
return;
@@ -643,6 +635,7 @@
myroom = lst[1];
emit roomNameUpdated(myroom);
+ return;
}
if(netClientState == InLobby && lst[0] == "JOINED")
@@ -818,17 +811,6 @@
m_playersModel->playerLeftRoom(lst[1]);
return;
}
-
- // obsolete
- if (lst[0] == "ROOM_CONTROL_ACCESS")
- {
- if (lst.size() < 2)
- {
- qWarning("Net: Bad ROOM_CONTROL_ACCESS message");
- return;
- }
- return;
- }
}
qWarning() << "Net: Unknown message or wrong state:" << lst;
--- a/QTfrontend/team.cpp Sat Dec 14 21:16:20 2013 +0400
+++ b/QTfrontend/team.cpp Tue Dec 17 00:02:52 2013 +0400
@@ -276,6 +276,9 @@
sl.push_back(QString("evoicepack " + m_voicepack));
sl.push_back(QString("eflag " + m_flag));
+ if(!m_owner.isEmpty())
+ sl.push_back(QString("eowner ") + m_owner);
+
for (int t = 0; t < m_numHedgehogs; t++)
{
sl.push_back(QString("eaddhh %1 %2 %3")
--- a/QTfrontend/ui/page/pageeditteam.cpp Sat Dec 14 21:16:20 2013 +0400
+++ b/QTfrontend/ui/page/pageeditteam.cpp Tue Dec 17 00:02:52 2013 +0400
@@ -211,7 +211,12 @@
{
if(m_loaded) return;
m_loaded = true;
- qDebug("[LAZYNESS] PageEditTeam::lazyLoad()");
+ qDebug("[LAZINESS] PageEditTeam::lazyLoad()");
+
+ HatModel * hatsModel = DataManager::instance().hatModel();
+ for(int i = 0; i < HEDGEHOGS_PER_TEAM; i++)
+ HHHats[i]->setModel(hatsModel);
+
QRegExp pngSuffix("\\.png$");
DataManager & dataMgr = DataManager::instance();
--- a/QTfrontend/ui/page/pageroomslist.cpp Sat Dec 14 21:16:20 2013 +0400
+++ b/QTfrontend/ui/page/pageroomslist.cpp Tue Dec 17 00:02:52 2013 +0400
@@ -169,47 +169,11 @@
stateMenu->addAction(showGamesInProgress);
btnState->setMenu(stateMenu);
- // Rules dropdown
-
- CBRules = new QComboBox(this);
- CBRules->setStyleSheet("QComboBox { border-top-left-radius: 0px; border-bottom-left-radius: 0px; border-left-width: 2px; }");
-
- QLabel * ruleLabel = new QLabel(tr("Rules:"), this);
- ruleLabel->setFixedHeight(CBRules->height());
- ruleLabel->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
- ruleLabel->setStyleSheet("border: solid; border-width: 3px; border-right-width: 0px; border-color: #ffcc00; border-top-left-radius: 10px; border-bottom-left-radius: 10px; background-color: rgba(13, 5, 68, 70%);");
-
- filterLayout->addWidget(ruleLabel);
- filterLayout->addWidget(CBRules);
- filterLayout->addSpacing(filterSpacing);
-
- // Weapons dropdown
-
- CBWeapons = new QComboBox(this);
- CBWeapons->setStyleSheet("QComboBox { border-top-left-radius: 0px; border-bottom-left-radius: 0px; border-left-width: 2px; }");
-
- QLabel * weaponLabel = new QLabel(tr("Weapons:"), this);
- weaponLabel->setFixedHeight(CBWeapons->height());
- weaponLabel->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
- weaponLabel->setStyleSheet("border: solid; border-width: 3px; border-right-width: 0px; border-color: #ffcc00; border-top-left-radius: 10px; border-bottom-left-radius: 10px; background-color: rgba(13, 5, 68, 70%);");
-
- filterLayout->addWidget(weaponLabel);
- filterLayout->addWidget(CBWeapons);
- filterLayout->addSpacing(filterSpacing);
-
- // Clear filters button
-
- BtnClear = addButton(tr("Clear filters"), filterLayout, 0);
- weaponLabel->setFixedHeight(CBWeapons->height());
- BtnClear->setStyleSheet("padding: 4px;");
-
// Lobby chat
chatWidget = new HWChatWidget(this, false);
m_splitter->addWidget(chatWidget);
- CBRules->addItem(QComboBox::tr("Any"));
-
return pageLayout;
}
@@ -230,7 +194,6 @@
connect(BtnCreate, SIGNAL(clicked()), this, SLOT(onCreateClick()));
connect(BtnJoin, SIGNAL(clicked()), this, SLOT(onJoinClick()));
- connect(BtnClear, SIGNAL(clicked()), this, SLOT(onClearClick()));
connect(searchText, SIGNAL(moveUp()), this, SLOT(moveSelectionUp()));
connect(searchText, SIGNAL(moveDown()), this, SLOT(moveSelectionDown()));
connect(searchText, SIGNAL(returnPressed()), this, SLOT(onJoinClick()));
@@ -238,8 +201,6 @@
connect(roomsList, SIGNAL(clicked (const QModelIndex &)), searchText, SLOT(setFocus()));
connect(showGamesInLobby, SIGNAL(triggered()), this, SLOT(onFilterChanged()));
connect(showGamesInProgress, SIGNAL(triggered()), this, SLOT(onFilterChanged()));
- connect(CBRules, SIGNAL(currentIndexChanged (int)), this, SLOT(onFilterChanged()));
- connect(CBWeapons, SIGNAL(currentIndexChanged (int)), this, SLOT(onFilterChanged()));
connect(searchText, SIGNAL(textChanged (const QString &)), this, SLOT(onFilterChanged()));
connect(this, SIGNAL(askJoinConfirmation (const QString &)), this, SLOT(onJoinConfirmation(const QString &)), Qt::QueuedConnection);
@@ -273,22 +234,8 @@
{
roomsModel = NULL;
stateFilteredModel = NULL;
- schemeFilteredModel = NULL;
- weaponsFilteredModel = NULL;
initPage();
-
- // not the most elegant solution but it works
- ammoSchemeModel = new AmmoSchemeModel(this, NULL);
- for (int i = 0; i < ammoSchemeModel->predefSchemesNames.count(); i++)
- CBRules->addItem(ammoSchemeModel->predefSchemesNames.at(i).toAscii().constData());
-
- CBWeapons->addItem(QComboBox::tr("Any"));
- for (int i = 0; i < cDefaultAmmos.count(); i++)
- {
- QPair<QString,QString> ammo = cDefaultAmmos.at(i);
- CBWeapons->addItem(ammo.first.toAscii().constData());
- }
}
@@ -578,16 +525,6 @@
emit askForRoomList();
}
-void PageRoomsList::onClearClick()
-{
- showGamesInLobby->setChecked(true);
- showGamesInProgress->setChecked(true);
- CBRules->setCurrentIndex(0);
- CBWeapons->setCurrentIndex(0);
- searchText->clear();
- searchText->setFocus();
-}
-
void PageRoomsList::onJoinConfirmation(const QString & room)
{
@@ -628,25 +565,15 @@
roomsModel->sort(RoomsListModel::StateColumn, Qt::AscendingOrder);
stateFilteredModel = new QSortFilterProxyModel(this);
- schemeFilteredModel = new QSortFilterProxyModel(this);
- weaponsFilteredModel = new QSortFilterProxyModel(this);
stateFilteredModel->setDynamicSortFilter(true);
- schemeFilteredModel->setDynamicSortFilter(true);
- weaponsFilteredModel->setDynamicSortFilter(true);
roomsModel->setFilterKeyColumn(-1); // search in all columns
stateFilteredModel->setFilterKeyColumn(RoomsListModel::StateColumn);
- schemeFilteredModel->setFilterKeyColumn(RoomsListModel::SchemeColumn);
- weaponsFilteredModel->setFilterKeyColumn(RoomsListModel::WeaponsColumn);
roomsModel->setFilterCaseSensitivity(Qt::CaseInsensitive);
- schemeFilteredModel->setFilterCaseSensitivity(Qt::CaseInsensitive);
- weaponsFilteredModel->setFilterCaseSensitivity(Qt::CaseInsensitive);
- schemeFilteredModel->setSourceModel(stateFilteredModel);
- weaponsFilteredModel->setSourceModel(schemeFilteredModel);
- roomsModel->setSourceModel(weaponsFilteredModel);
+ roomsModel->setSourceModel(stateFilteredModel);
// let the table view display the last model in the filter chain
roomsList->setModel(roomsModel);
@@ -660,8 +587,6 @@
stateFilteredModel->setSourceModel(model);
- roomsList->hideColumn(RoomsListModel::StateColumn);
-
QHeaderView * h = roomsList->horizontalHeader();
h->setSortIndicatorShown(true);
@@ -678,6 +603,8 @@
h->resizeSection(RoomsListModel::WeaponsColumn, 100);
}
+ // hide column used for filtering
+ roomsList->hideColumn(RoomsListModel::StateColumn);
// save header state on change
connect(roomsList->horizontalHeader(), SIGNAL(sortIndicatorChanged(int, Qt::SortOrder)),
@@ -714,29 +641,17 @@
if (roomsModel == NULL)
return;
- roomsModel->setFilterWildcard(QString("*%1*").arg(searchText->text()));
+ roomsModel->setFilterFixedString(searchText->text());
bool stateLobby = showGamesInLobby->isChecked();
bool stateProgress = showGamesInProgress->isChecked();
if (stateLobby && stateProgress)
- stateFilteredModel->setFilterWildcard("*"); // "any"
+ stateFilteredModel->setFilterFixedString(QString()); // "any"
else if (stateLobby != stateProgress)
stateFilteredModel->setFilterFixedString(QString(stateProgress));
else
stateFilteredModel->setFilterFixedString(QString("none")); // Basically, none.
-
- if (CBRules->currentIndex() == 0)
- schemeFilteredModel->setFilterWildcard("*"); // "any"
- else
- schemeFilteredModel->setFilterWildcard(
- QString("*%1*").arg(CBRules->currentText()));
-
- if (CBWeapons->currentIndex() == 0)
- weaponsFilteredModel->setFilterWildcard("*"); // "any"
- else
- weaponsFilteredModel->setFilterWildcard(
- QString("*%1*").arg(CBWeapons->currentText()));
}
void PageRoomsList::setSettings(QSettings *settings)
--- a/QTfrontend/ui/page/pageroomslist.h Sat Dec 14 21:16:20 2013 +0400
+++ b/QTfrontend/ui/page/pageroomslist.h Tue Dec 17 00:02:52 2013 +0400
@@ -55,10 +55,7 @@
QPushButton * BtnCreate;
QPushButton * BtnJoin;
QPushButton * BtnAdmin;
- QPushButton * BtnClear;
QComboBox * CBState;
- QComboBox * CBRules;
- QComboBox * CBWeapons;
HWChatWidget * chatWidget;
QLabel * lblCount;
@@ -84,7 +81,6 @@
void onCreateClick();
void onJoinClick();
void onRefreshClick();
- void onClearClick();
void onJoinConfirmation(const QString &);
void onSortIndicatorChanged(int logicalIndex, Qt::SortOrder order);
void onFilterChanged();
@@ -98,8 +94,6 @@
QSettings * m_gameSettings;
QSortFilterProxyModel * roomsModel;
QSortFilterProxyModel * stateFilteredModel;
- QSortFilterProxyModel * schemeFilteredModel;
- QSortFilterProxyModel * weaponsFilteredModel;
QAction * showGamesInLobby;
QAction * showGamesInProgress;
QSplitter * m_splitter;
--- a/QTfrontend/ui/widget/chatwidget.cpp Sat Dec 14 21:16:20 2013 +0400
+++ b/QTfrontend/ui/widget/chatwidget.cpp Tue Dec 17 00:02:52 2013 +0400
@@ -861,6 +861,8 @@
else
nick = m_clickedNick;
+ bool isOnline = (mil.size() > 0);
+
QSortFilterProxyModel * playersSortFilterModel = qobject_cast<QSortFilterProxyModel *>(chatNicks->model());
if(!playersSortFilterModel)
return;
@@ -871,8 +873,11 @@
return;
bool isSelf = (nick == m_userNick);
+ bool isInRoom = players->isFlagSet(nick, PlayersListModel::InRoom);
- acFollow->setVisible(!isSelf);
+ acFollow->setVisible(!isSelf && isInRoom);
+
+ acInfo->setVisible(isOnline);
// update context menu labels according to possible action
if(players->isFlagSet(nick, PlayersListModel::Ignore))
@@ -901,7 +906,7 @@
if (m_isAdmin)
{
- acKick->setVisible(!isSelf);
+ acKick->setVisible(!isSelf && isOnline);
acBan->setVisible(!isSelf);
}
--- a/QTfrontend/ui/widget/gamecfgwidget.cpp Sat Dec 14 21:16:20 2013 +0400
+++ b/QTfrontend/ui/widget/gamecfgwidget.cpp Tue Dec 17 00:02:52 2013 +0400
@@ -390,7 +390,10 @@
seedChanged(pMapContainer->getCurrentSeed());
templateFilterChanged(pMapContainer->getTemplateFilter());
- themeChanged(pMapContainer->getCurrentTheme());
+
+ QString t = pMapContainer->getCurrentTheme();
+ if(!t.isEmpty())
+ themeChanged(t);
schemeChanged(GameSchemes->currentIndex());
scriptChanged(Scripts->currentIndex());
--- a/QTfrontend/ui/widget/hatbutton.cpp Sat Dec 14 21:16:20 2013 +0400
+++ b/QTfrontend/ui/widget/hatbutton.cpp Tue Dec 17 00:02:52 2013 +0400
@@ -19,7 +19,6 @@
#include <QDebug>
#include "hatprompt.h"
-#include "DataManager.h"
#include "HatModel.h"
#include "hatbutton.h"
@@ -28,8 +27,13 @@
setIconSize(QSize(32, 37));
setFixedSize(44, 44);
- m_hatModel = DataManager::instance().hatModel();
+ m_hatModel = 0;
connect(this, SIGNAL(clicked()), this, SLOT(showPrompt()));
+}
+
+void HatButton::setModel(HatModel *model)
+{
+ m_hatModel = model;
setCurrentIndex(0);
}
--- a/QTfrontend/ui/widget/hatbutton.h Sat Dec 14 21:16:20 2013 +0400
+++ b/QTfrontend/ui/widget/hatbutton.h Tue Dec 17 00:02:52 2013 +0400
@@ -35,6 +35,7 @@
HatButton(QWidget* parent);
int currentIndex();
QString currentHat() const;
+ void setModel(HatModel * model);
private:
QModelIndex m_hat;
--- a/QTfrontend/ui/widget/mapContainer.cpp Sat Dec 14 21:16:20 2013 +0400
+++ b/QTfrontend/ui/widget/mapContainer.cpp Tue Dec 17 00:02:52 2013 +0400
@@ -55,6 +55,11 @@
mapgen(MAPGEN_REGULAR),
m_previewSize(256, 128)
{
+ // don't show preview anything until first show event
+ m_previewEnabled = false;
+ m_missionsViewSetup = false;
+ m_staticViewSetup = false;
+
hhSmall.load(":/res/hh_small.png");
hhLimit = 18;
templateFilter = 0;
@@ -158,28 +163,14 @@
/* Static maps list */
staticMapList = new QListView;
- staticMapList->setModel(m_staticMapModel);
rightLayout->addWidget(staticMapList, 1);
- staticMapList->setEditTriggers(QAbstractItemView::NoEditTriggers);
m_childWidgets << staticMapList;
- QItemSelectionModel * staticSelectionModel = staticMapList->selectionModel();
- connect(staticSelectionModel,
- SIGNAL(currentRowChanged(const QModelIndex &, const QModelIndex &)),
- this,
- SLOT(staticMapChanged(const QModelIndex &, const QModelIndex &)));
/* Mission maps list */
- missionMapList = new QListView;
- missionMapList->setModel(m_missionMapModel);
- missionMapList->setEditTriggers(QAbstractItemView::NoEditTriggers);
+ missionMapList = new QListView(this);
rightLayout->addWidget(missionMapList, 1);
m_childWidgets << missionMapList;
- QItemSelectionModel * missionSelectionModel = missionMapList->selectionModel();
- connect(missionSelectionModel,
- SIGNAL(currentRowChanged(const QModelIndex &, const QModelIndex &)),
- this,
- SLOT(missionMapChanged(const QModelIndex &, const QModelIndex &)));
/* Map load and edit buttons */
@@ -261,7 +252,6 @@
staticMapChanged(m_staticMapModel->index(0, 0));
missionMapChanged(m_missionMapModel->index(0, 0));
changeMapType(MapModel::GeneratedMap);
- setRandomTheme();
}
void HWMapContainer::setImage(const QImage newImage)
@@ -608,8 +598,22 @@
updatePreview();
}
+void HWMapContainer::showEvent(QShowEvent * event)
+{
+ if (!m_previewEnabled) {
+ m_previewEnabled = true;
+ setRandomTheme();
+ updatePreview();
+ }
+ QWidget::showEvent(event);
+}
+
void HWMapContainer::updatePreview()
{
+ // abort if the widget isn't supposed to show anything yet
+ if (!m_previewEnabled)
+ return;
+
if (pMap)
{
disconnect(pMap, 0, this, SLOT(setImage(const QImage)));
@@ -726,6 +730,7 @@
btnEditMap->show();
break;
case MapModel::MissionMap:
+ setupMissionMapsView();
mapgen = MAPGEN_MAP;
missionMapChanged(newMap.isValid() ? newMap : missionMapList->currentIndex());
lblMapList->setText(tr("Mission:"));
@@ -736,6 +741,7 @@
emit mapChanged(m_curMap);
break;
case MapModel::StaticMap:
+ setupStaticMapsView();
mapgen = MAPGEN_MAP;
staticMapChanged(newMap.isValid() ? newMap : staticMapList->currentIndex());
lblMapList->setText(tr("Map:"));
@@ -935,3 +941,35 @@
btnTheme->setIcon(QIcon());
btnTheme->setText(tr("Theme: %1").arg(name));
}
+
+void HWMapContainer::setupMissionMapsView()
+{
+ if(m_missionsViewSetup) return;
+ m_missionsViewSetup = true;
+
+ m_missionMapModel->loadMaps();
+ missionMapList->setModel(m_missionMapModel);
+ missionMapList->setEditTriggers(QAbstractItemView::NoEditTriggers);
+ QItemSelectionModel * missionSelectionModel = missionMapList->selectionModel();
+ connect(missionSelectionModel,
+ SIGNAL(currentRowChanged(const QModelIndex &, const QModelIndex &)),
+ this,
+ SLOT(missionMapChanged(const QModelIndex &, const QModelIndex &)));
+ missionSelectionModel->setCurrentIndex(m_missionMapModel->index(0, 0), QItemSelectionModel::Clear | QItemSelectionModel::SelectCurrent);
+}
+
+void HWMapContainer::setupStaticMapsView()
+{
+ if(m_staticViewSetup) return;
+ m_staticViewSetup = true;
+
+ m_staticMapModel->loadMaps();
+ staticMapList->setModel(m_staticMapModel);
+ staticMapList->setEditTriggers(QAbstractItemView::NoEditTriggers);
+ QItemSelectionModel * staticSelectionModel = staticMapList->selectionModel();
+ connect(staticSelectionModel,
+ SIGNAL(currentRowChanged(const QModelIndex &, const QModelIndex &)),
+ this,
+ SLOT(staticMapChanged(const QModelIndex &, const QModelIndex &)));
+ staticSelectionModel->setCurrentIndex(m_staticMapModel->index(0, 0), QItemSelectionModel::Clear | QItemSelectionModel::SelectCurrent);
+}
--- a/QTfrontend/ui/widget/mapContainer.h Sat Dec 14 21:16:20 2013 +0400
+++ b/QTfrontend/ui/widget/mapContainer.h Tue Dec 17 00:02:52 2013 +0400
@@ -111,6 +111,7 @@
protected:
virtual void resizeEvent ( QResizeEvent * event );
+ virtual void showEvent ( QShowEvent * event );
private:
QVBoxLayout mainLayout;
@@ -149,6 +150,9 @@
QPushButton * btnSeed;
bool m_master;
QList<QWidget *> m_childWidgets;
+ bool m_previewEnabled;
+ bool m_missionsViewSetup;
+ bool m_staticViewSetup;
void intSetSeed(const QString & seed);
void intSetMap(const QString & map);
@@ -161,6 +165,8 @@
void changeMapType(MapModel::MapType type, const QModelIndex & newMap = QModelIndex());
void updatePreview();
void updateThemeButtonSize();
+ void setupMissionMapsView();
+ void setupStaticMapsView();
MapModel::MapInfo m_mapInfo;
int m_themeID;
--- a/QTfrontend/util/DataManager.cpp Sat Dec 14 21:16:20 2013 +0400
+++ b/QTfrontend/util/DataManager.cpp Tue Dec 17 00:02:52 2013 +0400
@@ -98,8 +98,7 @@
MapModel * DataManager::staticMapModel()
{
if (m_staticMapModel == NULL) {
- m_staticMapModel = new MapModel();
- m_staticMapModel->loadMaps(MapModel::StaticMap);
+ m_staticMapModel = new MapModel(MapModel::StaticMap, this);
}
return m_staticMapModel;
}
@@ -107,8 +106,7 @@
MapModel * DataManager::missionMapModel()
{
if (m_missionMapModel == NULL) {
- m_missionMapModel = new MapModel();
- m_missionMapModel->loadMaps(MapModel::MissionMap);
+ m_missionMapModel = new MapModel(MapModel::MissionMap, this);
}
return m_missionMapModel;
}
@@ -117,7 +115,6 @@
{
if (m_themeModel == NULL) {
m_themeModel = new ThemeModel();
- m_themeModel->loadThemes();
}
return m_themeModel;
}
--- a/QTfrontend/weapons.h Sat Dec 14 21:16:20 2013 +0400
+++ b/QTfrontend/weapons.h Tue Dec 17 00:02:52 2013 +0400
@@ -21,45 +21,46 @@
//skip---------------------------------|
//structure------------------------------------------------------------------|
-#define AMMOLINE_DEFAULT_QT "9391929422199121032235111001201000000211110101011111121"
-#define AMMOLINE_DEFAULT_PROB "0405040541600655546554464776576666666155510101115411121"
-#define AMMOLINE_DEFAULT_DELAY "0000000000000205500000040007004000000000220000000600020"
-#define AMMOLINE_DEFAULT_CRATE "1311110312111111123114111111111111111211111101111111121"
-#define AMMOLINE_CRAZY_QT "9999999999999999992999999999999999299999999909999992999"
-#define AMMOLINE_CRAZY_PROB "1111110111111111111111111111111111111111111101111111111"
-#define AMMOLINE_CRAZY_DELAY "0000000000000000000000000000000000000000000000000000000"
-#define AMMOLINE_CRAZY_CRATE "1311110312111111123114111111111111111211110101111111121"
+#define AMMOLINE_DEFAULT_QT "93919294221991210322351110012000000002111001010111110001"
+#define AMMOLINE_DEFAULT_PROB "04050405416006555465544647765766666661555101011154111111"
+#define AMMOLINE_DEFAULT_DELAY "00000000000002055000000400070040000000002200000006000200"
+#define AMMOLINE_DEFAULT_CRATE "13111103121111111231141111111111111112111111011111111111"
-#define AMMOLINE_PROMODE_QT "9090009000000000000009000000000000000000000000000000000"
-#define AMMOLINE_PROMODE_PROB "0000000000000000000000000000000000000000000000000000000"
-#define AMMOLINE_PROMODE_DELAY "0000000000000205500000040007004000000000200000000000020"
-#define AMMOLINE_PROMODE_CRATE "1111110111111111111111111111111111111111100101111111121"
+#define AMMOLINE_CRAZY_QT "99999999999999999929999999999999992999999999099999929991"
+#define AMMOLINE_CRAZY_PROB "11111101111111111111111111111111111111111111011111111111"
+#define AMMOLINE_CRAZY_DELAY "00000000000000000000000000000000000000000000000000000000"
+#define AMMOLINE_CRAZY_CRATE "13111103121111111231141111111111111112111101011111111111"
-#define AMMOLINE_SHOPPA_QT "0000009900000000000000000000000000000000000000000000000"
-#define AMMOLINE_SHOPPA_PROB "4444410044244402210112121222422000000002000400010011001"
-#define AMMOLINE_SHOPPA_DELAY "0000000000000000000000000000000000000000000000000000000"
-#define AMMOLINE_SHOPPA_CRATE "1111110111111111111111111111111111111111101101111111121"
+#define AMMOLINE_PROMODE_QT "90900090000000000000090000000000000000000000000000000000"
+#define AMMOLINE_PROMODE_PROB "00000000000000000000000000000000000000000000000000000000"
+#define AMMOLINE_PROMODE_DELAY "00000000000002055000000400070040000000002000000000000200"
+#define AMMOLINE_PROMODE_CRATE "11111101111111111111111111111111111111111001011111111111"
-#define AMMOLINE_CLEAN_QT "1010009000010000011000000000000000000000000000001000000"
-#define AMMOLINE_CLEAN_PROB "0405040541600655546554464776576666666155510101115411121"
-#define AMMOLINE_CLEAN_DELAY "0000000000000000000000000000000000000000000000000000020"
-#define AMMOLINE_CLEAN_CRATE "1311110312111111123114111111111111111211111101111111121"
+#define AMMOLINE_SHOPPA_QT "00000099000000000000000000000000000000000000000000000000"
+#define AMMOLINE_SHOPPA_PROB "44444100442444022101121212224220000000020004000100110010"
+#define AMMOLINE_SHOPPA_DELAY "00000000000000000000000000000000000000000000000000000000"
+#define AMMOLINE_SHOPPA_CRATE "11111101111111111111111111111111111111111011011111111110"
-#define AMMOLINE_MINES_QT "0000009900090000000300000000000000000000000000000000000"
-#define AMMOLINE_MINES_PROB "0000000000000000000000000000000000000000000000000000000"
-#define AMMOLINE_MINES_DELAY "0000000000000205500000040007004000000000200000000600020"
-#define AMMOLINE_MINES_CRATE "1111110111111111111111111111111111111111111101111111121"
+#define AMMOLINE_CLEAN_QT "10100090000100000110000000000000000000000000000010000000"
+#define AMMOLINE_CLEAN_PROB "04050405416006555465544647765766666661555101011154111211"
+#define AMMOLINE_CLEAN_DELAY "00000000000000000000000000000000000000000000000000000200"
+#define AMMOLINE_CLEAN_CRATE "13111103121111111231141111111111111112111111011111111111"
-#define AMMOLINE_PORTALS_QT "9000009002000000002100000000000000110000090000000000000"
-#define AMMOLINE_PORTALS_PROB "0405040541600655546554464776576666666155510101115411121"
-#define AMMOLINE_PORTALS_DELAY "0000000000000205500000040007004000000000200000000600020"
-#define AMMOLINE_PORTALS_CRATE "1311110312111111123114111111111111111211111101111111121"
+#define AMMOLINE_MINES_QT "00000099000900000003000000000000000000000000000000000000"
+#define AMMOLINE_MINES_PROB "00000000000000000000000000000000000000000000000000000000"
+#define AMMOLINE_MINES_DELAY "00000000000002055000000400070040000000002000000006000200"
+#define AMMOLINE_MINES_CRATE "11111101111111111111111111111111111111111111011111111111"
-#define AMMOLINE_ONEEVERY_QT "1111119111111111111111111111111111111111111111111111111"
-#define AMMOLINE_ONEEVERY_PROB "1111110111111111111111111111111111111111111111111111111"
-#define AMMOLINE_ONEEVERY_DELAY "0000000000000000000000000000000000000000000000000000000"
-#define AMMOLINE_ONEEVERY_CRATE "1111110111111111111111111111111111111111111111111111111"
+#define AMMOLINE_PORTALS_QT "90000090020000000021000000000000001100000900000000000000"
+#define AMMOLINE_PORTALS_PROB "04050405416006555465544647765766666661555101011154111211"
+#define AMMOLINE_PORTALS_DELAY "00000000000002055000000400070040000000002000000006000200"
+#define AMMOLINE_PORTALS_CRATE "13111103121111111231141111111111111112111111011111111111"
+
+#define AMMOLINE_ONEEVERY_QT "11111191111111111111111111111111111111111111111111111111"
+#define AMMOLINE_ONEEVERY_PROB "11111101111111111111111111111111111111111111111111111111"
+#define AMMOLINE_ONEEVERY_DELAY "00000000000000000000000000000000000000000000000000000000"
+#define AMMOLINE_ONEEVERY_CRATE "11111101111111111111111111111111111111111111111111111111"
//When adding new weapons also insert one element in cDefaultAmmos list (hwconsts.cpp.in)
--- a/gameServer/Actions.hs Sat Dec 14 21:16:20 2013 +0400
+++ b/gameServer/Actions.hs Tue Dec 17 00:02:52 2013 +0400
@@ -21,6 +21,7 @@
import System.Process
import Network.Socket
import System.Random
+import qualified Data.Traversable as DT
-----------------------------
#if defined(OFFICIAL_SERVER)
import OfficialServer.GameReplayStore
@@ -187,13 +188,14 @@
ri <- clientRoomA
rnc <- gets roomsClients
playersNum <- io $ room'sM rnc playersIn ri
+ specialRoom <- io $ room'sM rnc isSpecial ri
master <- client's isMaster
-- client <- client's id
clNick <- client's nick
chans <- othersChans
if master then
- if playersNum > 1 then
+ if (playersNum > 1) || specialRoom then
mapM_ processAction [ChangeMaster Nothing, NoticeMessage AdminLeft, RemoveClientTeams, AnswerClients chans ["LEFT", clNick, msg]]
else
processAction RemoveRoom
@@ -205,7 +207,7 @@
-- when not removing room
ready <- client's isReady
- when (not master || playersNum > 1) . io $ do
+ when (not master || playersNum > 1 || specialRoom) . io $ do
modifyRoom rnc (\r -> r{
playersIn = playersIn r - 1,
readyPlayers = if ready then readyPlayers r - 1 else readyPlayers r
@@ -218,31 +220,40 @@
proto <- client's clientProto
ri <- clientRoomA
rnc <- gets roomsClients
- newMasterId <- liftM (\ids -> fromMaybe (last . filter (/= ci) $ ids) delegateId) . io $ roomClientsIndicesM rnc ri
- newMaster <- io $ client'sM rnc id newMasterId
+ specialRoom <- io $ room'sM rnc isSpecial ri
+ newMasterId <- liftM (\ids -> fromMaybe (listToMaybe . reverse . filter (/= ci) $ ids) $ liftM Just delegateId) . io $ roomClientsIndicesM rnc ri
+ newMaster <- io $ client'sM rnc id `DT.mapM` newMasterId
oldMasterId <- io $ room'sM rnc masterID ri
- oldMaster <- io $ client'sM rnc id oldMasterId
oldRoomName <- io $ room'sM rnc name ri
kicked <- client's isKickedFromServer
thisRoomChans <- liftM (map sendChan) $ roomClientsS ri
- let newRoomName = if (proto < 42) || kicked then nick newMaster else oldRoomName
- mapM_ processAction [
+ let newRoomName = if ((proto < 42) || kicked) && (not specialRoom) then maybeNick newMaster else oldRoomName
+
+ when (isJust oldMasterId) $ do
+ oldMasterNick <- io $ client'sM rnc nick (fromJust oldMasterId)
+ mapM_ processAction [
+ ModifyClient2 (fromJust oldMasterId) (\c -> c{isMaster = False})
+ , AnswerClients thisRoomChans ["CLIENT_FLAGS", "-h", oldMasterNick]
+ ]
+
+ when (isJust newMasterId) $
+ mapM_ processAction [
+ ModifyClient2 (fromJust newMasterId) (\c -> c{isMaster = True})
+ , AnswerClients [sendChan $ fromJust newMaster] ["ROOM_CONTROL_ACCESS", "1"]
+ , AnswerClients thisRoomChans ["CLIENT_FLAGS", "+h", nick $ fromJust newMaster]
+ ]
+
+ processAction $
ModifyRoom (\r -> r{masterID = newMasterId
, name = newRoomName
, isRestrictedJoins = False
, isRestrictedTeams = False
- , isRegisteredOnly = False}
+ , isRegisteredOnly = isSpecial r}
)
- , ModifyClient2 newMasterId (\c -> c{isMaster = True})
- , ModifyClient2 oldMasterId (\c -> c{isMaster = False})
- , AnswerClients [sendChan newMaster] ["ROOM_CONTROL_ACCESS", "1"]
- , AnswerClients thisRoomChans ["CLIENT_FLAGS", "-h", nick oldMaster]
- , AnswerClients thisRoomChans ["CLIENT_FLAGS", "+h", nick newMaster]
- ]
newRoom' <- io $ room'sM rnc id ri
chans <- liftM (map sendChan) $! sameProtoClientsS proto
- processAction $ AnswerClients chans ("ROOM" : "UPD" : oldRoomName : roomInfo (nick newMaster) newRoom')
+ processAction $ AnswerClients chans ("ROOM" : "UPD" : oldRoomName : roomInfo proto (maybeNick newMaster) newRoom')
processAction (AddRoom roomName roomPassword) = do
@@ -252,7 +263,7 @@
n <- client's nick
let rm = newRoom{
- masterID = clId,
+ masterID = Just clId,
name = roomName,
password = roomPassword,
roomProto = proto
@@ -265,7 +276,7 @@
chans <- liftM (map sendChan) $! sameProtoClientsS proto
mapM_ processAction [
- AnswerClients chans ("ROOM" : "ADD" : roomInfo n rm{playersIn = 1})
+ AnswerClients chans ("ROOM" : "ADD" : roomInfo proto n rm{playersIn = 1})
]
@@ -292,9 +303,9 @@
rnc <- gets roomsClients
ri <- io $ clientRoomM rnc clId
rm <- io $ room'sM rnc id ri
- n <- io $ client'sM rnc nick (masterID rm)
+ masterCl <- io $ client'sM rnc id `DT.mapM` (masterID rm)
chans <- liftM (map sendChan) $! sameProtoClientsS proto
- processAction $ AnswerClients chans ("ROOM" : "UPD" : name rm : roomInfo n rm)
+ processAction $ AnswerClients chans ("ROOM" : "UPD" : name rm : roomInfo proto (maybeNick masterCl) rm)
processAction UnreadyRoomClients = do
@@ -433,10 +444,8 @@
checkerLogin "" False False
else
processAction JoinLobby
- Admin -> do
+ Admin ->
mapM_ processAction [ModifyClient (\cl -> cl{isAdministrator = True}), JoinLobby]
- chan <- client's sendChan
- processAction $ AnswerClients [chan] ["ADMIN_ACCESS"]
ReplayName fn -> processAction $ ShowReplay fn
where
isBanned = do
@@ -714,11 +723,11 @@
where
toPair t = (teamname t, teamowner t)
-processAction (QueryReplay name) = do
+processAction (QueryReplay rname) = do
(Just ci) <- gets clientIndex
si <- gets serverInfo
uid <- client's clUID
- io $ writeChan (dbQueries si) $ GetReplayName ci (hashUnique uid) name
+ io $ writeChan (dbQueries si) $ GetReplayName ci (hashUnique uid) rname
#else
processAction SaveReplay = return ()
@@ -728,25 +737,25 @@
processAction (QueryReplay _) = return ()
#endif
-processAction (ShowReplay name) = do
+processAction (ShowReplay rname) = do
c <- client's sendChan
cl <- client's id
- let fileName = B.concat ["checked/", if B.isPrefixOf "replays/" name then B.drop 8 name else name]
+ let fileName = B.concat ["checked/", if B.isPrefixOf "replays/" rname then B.drop 8 rname else rname]
- checkInfo <- liftIO $ E.handle (\(e :: SomeException) ->
+ cInfo <- liftIO $ E.handle (\(e :: SomeException) ->
warningM "REPLAYS" (B.unpack $ B.concat ["Problems reading ", fileName, ": ", B.pack $ show e]) >> return Nothing) $ do
(t, p1, p2, msgs) <- liftM read $ readFile (B.unpack fileName)
return $ Just (t, Map.fromList p1, Map.fromList p2, reverse msgs)
- let (teams, params1, params2, roundMsgs) = fromJust checkInfo
+ let (teams', params1, params2, roundMsgs') = fromJust cInfo
- when (isJust checkInfo) $ do
+ when (isJust cInfo) $ do
mapM_ processAction $ concat [
[AnswerClients [c] ["JOINED", nick cl]]
, answerFullConfigParams cl params1 params2
- , answerAllTeams cl teams
+ , answerAllTeams cl teams'
, [AnswerClients [c] ["RUN_GAME"]]
- , [AnswerClients [c] $ "EM" : roundMsgs]
+ , [AnswerClients [c] $ "EM" : roundMsgs']
, [AnswerClients [c] ["KICKED"]]
]
--- a/gameServer/Consts.hs Sat Dec 14 21:16:20 2013 +0400
+++ b/gameServer/Consts.hs Tue Dec 17 00:02:52 2013 +0400
@@ -4,4 +4,4 @@
import qualified Data.ByteString.Char8 as B
serverVersion :: B.ByteString
-serverVersion = "1"
+serverVersion = "2"
--- a/gameServer/CoreTypes.hs Sat Dec 14 21:16:20 2013 +0400
+++ b/gameServer/CoreTypes.hs Tue Dec 17 00:02:52 2013 +0400
@@ -170,7 +170,7 @@
data RoomInfo =
RoomInfo
{
- masterID :: ClientIndex,
+ masterID :: Maybe ClientIndex,
name :: B.ByteString,
password :: B.ByteString,
roomProto :: Word16,
@@ -181,6 +181,8 @@
isRestrictedJoins :: Bool,
isRestrictedTeams :: Bool,
isRegisteredOnly :: Bool,
+ isSpecial :: Bool,
+ greeting :: B.ByteString,
roomBansList :: ![B.ByteString],
mapParams :: Map.Map B.ByteString B.ByteString,
params :: Map.Map B.ByteString [B.ByteString]
@@ -189,7 +191,7 @@
newRoom :: RoomInfo
newRoom =
RoomInfo
- (error "No room master defined")
+ Nothing
""
""
0
@@ -200,13 +202,20 @@
False
False
False
+ False
+ ""
[]
(
- Map.fromList $ Prelude.zipWith (,)
+ Map.fromList $ Prelude.zip
["MAP", "MAPGEN", "MAZE_SIZE", "SEED", "TEMPLATE"]
["+rnd+", "0", "0", "seed", "0"]
)
- (Map.singleton "SCHEME" ["Default"])
+ (
+ Map.fromList $ Prelude.zip
+ ["SCHEME", "SCRIPT"]
+ [["Default"], ["Normal"]]
+ )
+
data StatisticsInfo =
StatisticsInfo
--- a/gameServer/EngineInteraction.hs Sat Dec 14 21:16:20 2013 +0400
+++ b/gameServer/EngineInteraction.hs Tue Dec 17 00:02:52 2013 +0400
@@ -12,6 +12,7 @@
import Data.Word
import Data.Bits
import Control.Arrow
+import Data.Maybe
-------------
import CoreTypes
import Utils
@@ -74,7 +75,7 @@
em = toEngineMsg
eml = em . B.concat
mapGenTypes = ["+rnd+", "+maze+", "+drawn+"]
- maybeScript = let s = head $ prms Map.! "SCRIPT" in if s == "Normal" then [] else [eml ["escript Scripts/Multiplayer/", s, ".lua"]]
+ maybeScript = let s = head . fromMaybe ["Normal"] $ Map.lookup "SCRIPT" prms in if s == "Normal" then [] else [eml ["escript Scripts/Multiplayer/", s, ".lua"]]
maybeMap = let m = mParams Map.! "MAP" in if m `elem` mapGenTypes then [] else [eml ["emap ", m]]
scheme = tail $ prms Map.! "SCHEME"
mapgen = mParams Map.! "MAPGEN"
--- a/gameServer/HWProtoCore.hs Sat Dec 14 21:16:20 2013 +0400
+++ b/gameServer/HWProtoCore.hs Tue Dec 17 00:02:52 2013 +0400
@@ -51,6 +51,9 @@
let chans = map (sendChan . client rnc) $ allClients rnc
return [AnswerClients chans ["CHAT", "[global notice]", p] | isAdministrator cl]
h "WATCH" f = return [QueryReplay f]
+ h "FIX" _ = handleCmd ["FIX"]
+ h "UNFIX" _ = handleCmd ["UNFIX"]
+ h "GREETING" msg = handleCmd ["GREETING", msg]
h c p = return [Warning $ B.concat ["Unknown cmd: /", c, p]]
handleCmd cmd = do
--- a/gameServer/HWProtoInRoomState.hs Sat Dec 14 21:16:20 2013 +0400
+++ b/gameServer/HWProtoInRoomState.hs Tue Dec 17 00:02:52 2013 +0400
@@ -31,7 +31,11 @@
| otherwise = do
chans <- roomOthersChans
cl <- thisClient
- if isMaster cl then
+ rm <- thisRoom
+
+ if isSpecial rm then
+ return [Warning $ loc "Restricted"]
+ else if isMaster cl then
return [
ModifyRoom f,
AnswerClients chans ("CFG" : paramName : paramStrs)]
@@ -43,6 +47,7 @@
else
r{params = Map.insert paramName paramStrs (params r)}
+
handleCmd_inRoom ("ADD_TEAM" : tName : color : grave : fort : voicepack : flag : difStr : hhsInfo)
| length hhsInfo /= 16 = return [ProtocolError $ loc "Corrupted hedgehogs info"]
| otherwise = do
@@ -290,11 +295,14 @@
if illegalName newName then
[Warning $ loc "Illegal room name"]
else
+ if isSpecial rm then
+ [Warning $ loc "Restricted"]
+ else
if isJust $ find (\r -> newName == name r) rs then
[Warning $ loc "Room with such name already exists"]
else
[ModifyRoom roomUpdate,
- AnswerClients chans ("ROOM" : "UPD" : name rm : roomInfo (nick cl) (roomUpdate rm))]
+ AnswerClients chans ("ROOM" : "UPD" : name rm : roomInfo (clientProto cl) (nick cl) (roomUpdate rm))]
where
roomUpdate r = r{name = newName}
@@ -323,6 +331,7 @@
maybeClientId <- clientByNick newAdmin
master <- liftM isMaster thisClient
serverAdmin <- liftM isAdministrator thisClient
+ thisRoomMasterId <- liftM masterID thisRoom
let newAdminId = fromJust maybeClientId
let sameRoom = clientRoom rnc thisClientId == clientRoom rnc newAdminId
return
@@ -330,6 +339,7 @@
(master || serverAdmin)
&& isJust maybeClientId
&& ((newAdminId /= thisClientId) || (serverAdmin && not master))
+ && (Just newAdminId /= thisRoomMasterId)
&& sameRoom]
@@ -360,6 +370,19 @@
s <- roomClientsChans
return [AnswerClients s ["CHAT", n, B.unwords $ "/rnd" : rs], Random s rs]
+handleCmd_inRoom ["FIX"] = do
+ cl <- thisClient
+ return [ModifyRoom (\r -> r{isSpecial = True}) | isAdministrator cl]
+
+handleCmd_inRoom ["UNFIX"] = do
+ cl <- thisClient
+ return [ModifyRoom (\r -> r{isSpecial = False}) | isAdministrator cl]
+
+handleCmd_inRoom ["GREETING", msg] = do
+ cl <- thisClient
+ rm <- thisRoom
+ return [ModifyRoom (\r -> r{greeting = msg}) | isAdministrator cl || (isMaster cl && (not $ isSpecial rm))]
+
handleCmd_inRoom ["LIST"] = return [] -- for old clients (<= 0.9.17)
handleCmd_inRoom (s:_) = return [ProtocolError $ "Incorrect command '" `B.append` s `B.append` "' (state: in room)"]
--- a/gameServer/HWProtoLobbyState.hs Sat Dec 14 21:16:20 2013 +0400
+++ b/gameServer/HWProtoLobbyState.hs Tue Dec 17 00:02:52 2013 +0400
@@ -21,10 +21,9 @@
(ci, irnc) <- ask
let cl = irnc `client` ci
rooms <- allRoomInfos
- let roomsInfoList = concatMap (\r -> roomInfo (nick $ irnc `client` masterID r) r) . filter (\r -> (roomProto r == clientProto cl))
+ let roomsInfoList = concatMap (\r -> roomInfo (clientProto cl) (maybeNick . liftM (client irnc) $ masterID r) r) . filter (\r -> (roomProto r == clientProto cl))
return [AnswerClients [sendChan cl] ("ROOMS" : roomsInfoList rooms)]
-
handleCmd_lobby ["CHAT", msg] = do
n <- clientNick
s <- roomOthersChans
@@ -60,35 +59,37 @@
let sameProto = clientProto cl == roomProto jRoom
let jRoomClients = map (client irnc) $ roomClients irnc jRI
let nicks = map nick jRoomClients
- let ownerNick = nick . fromJust $ find isMaster jRoomClients
+ let owner = find isMaster jRoomClients
let chans = map sendChan (cl : jRoomClients)
let isBanned = host cl `elem` roomBansList jRoom
return $
- if isNothing maybeRI || not sameProto then
+ if isNothing maybeRI then
[Warning $ loc "No such room"]
+ else if not sameProto then
+ [Warning $ loc "Room version incompatible to your hedgewars version"]
else if isRestrictedJoins jRoom then
[Warning $ loc "Joining restricted"]
- else if isRegisteredOnly jRoom && (B.null . webPassword $ cl) then
+ else if isRegisteredOnly jRoom && (B.null . webPassword $ cl) && not (isAdministrator cl) then
[Warning $ loc "Registered users only"]
else if isBanned then
[Warning $ loc "You are banned in this room"]
else if roomPassword /= password jRoom then
[NoticeMessage WrongPassword]
else
- [
+ (
MoveToRoom jRI
- , ModifyClient (\c -> c{isJoinedMidGame = isJust $ gameInfo jRoom})
- , AnswerClients [sendChan cl] $ "JOINED" : nicks
- , AnswerClients chans ["CLIENT_FLAGS", "-r", nick cl]
- , AnswerClients [sendChan cl] $ ["CLIENT_FLAGS", "+h", ownerNick]
- ]
- ++ (if clientProto cl < 38 then map (readynessMessage cl) jRoomClients else [sendStateFlags cl jRoomClients])
+ : ModifyClient (\c -> c{isJoinedMidGame = isJust $ gameInfo jRoom})
+ : AnswerClients chans ["CLIENT_FLAGS", "-r", nick cl]
+ : [(AnswerClients [sendChan cl] $ "JOINED" : nicks) | not $ null nicks]
+ )
+ ++ [AnswerClients [sendChan cl] ["CLIENT_FLAGS", "+h", nick $ fromJust owner] | isJust owner]
+ ++ [sendStateFlags cl jRoomClients | not $ null jRoomClients]
++ answerFullConfig cl jRoom
++ answerTeams cl jRoom
++ watchRound cl jRoom chans
+ ++ [AnswerClients [sendChan cl] ["CHAT", "[greeting]", greeting jRoom] | greeting jRoom /= ""]
where
- readynessMessage cl c = AnswerClients [sendChan cl] [if isReady c then "READY" else "NOT_READY", nick c]
sendStateFlags cl clients = AnswerClients [sendChan cl] . concat . intersperse [""] . filter (not . null) . concat $
[f "+r" ready, f "-r" unready, f "+g" ingame, f "-g" inroomlobby]
where
--- a/gameServer/Utils.hs Sat Dec 14 21:16:20 2013 +0400
+++ b/gameServer/Utils.hs Tue Dec 17 00:02:52 2013 +0400
@@ -125,8 +125,9 @@
upperCase :: B.ByteString -> B.ByteString
upperCase = UTF8.fromString . map Char.toUpper . UTF8.toString
-roomInfo :: B.ByteString -> RoomInfo -> [B.ByteString]
-roomInfo n r = [
+roomInfo :: Word16 -> B.ByteString -> RoomInfo -> [B.ByteString]
+roomInfo p n r
+ | p < 46 = [
showB $ isJust $ gameInfo r,
name r,
showB $ playersIn r,
@@ -136,7 +137,17 @@
head (Map.findWithDefault ["Default"] "SCHEME" (params r)),
head (Map.findWithDefault ["Default"] "AMMO" (params r))
]
-
+ | otherwise = [
+ showB $ isJust $ gameInfo r,
+ name r,
+ showB $ playersIn r,
+ showB $ length $ teams r,
+ n,
+ Map.findWithDefault "+rnd+" "MAP" (mapParams r),
+ head (Map.findWithDefault ["Normal"] "SCRIPT" (params r)),
+ head (Map.findWithDefault ["Default"] "SCHEME" (params r)),
+ head (Map.findWithDefault ["Default"] "AMMO" (params r))
+ ]
answerFullConfigParams ::
ClientInfo
@@ -169,3 +180,6 @@
loc :: B.ByteString -> B.ByteString
loc = id
+
+maybeNick :: Maybe ClientInfo -> B.ByteString
+maybeNick = fromMaybe "[empty]" . liftM nick
--- a/hedgewars/CMakeLists.txt Sat Dec 14 21:16:20 2013 +0400
+++ b/hedgewars/CMakeLists.txt Tue Dec 17 00:02:52 2013 +0400
@@ -176,6 +176,15 @@
#needs to be last
add_definitions(-dDEBUGFILE)
+
+# make source files objects depend on their predecessors in list
+set(sourcefiles_sofar "${CMAKE_CURRENT_SOURCE_DIR}/options.inc" "${CMAKE_CURRENT_BINARY_DIR}/config.inc")
+foreach(loop_var ${engine_sources})
+ SET_SOURCE_FILES_PROPERTIES(${loop_var} PROPERTIES OBJECT_DEPENDS "${sourcefiles_sofar}")
+ list(APPEND sourcefiles_sofar "${CMAKE_CURRENT_SOURCE_DIR}/${loop_var}")
+endforeach(loop_var)
+
+
#SOURCE AND PROGRAMS SECTION
if(BUILD_ENGINE_LIBRARY)
message("***Engine will be built as library (experimental)***")
--- a/hedgewars/uAIAmmoTests.pas Sat Dec 14 21:16:20 2013 +0400
+++ b/hedgewars/uAIAmmoTests.pas Tue Dec 17 00:02:52 2013 +0400
@@ -54,6 +54,7 @@
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;
+function TestDynamite(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams): LongInt;
type TAmmoTestProc = function (Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams): LongInt;
TAmmoTest = record
@@ -74,7 +75,7 @@
(proc: nil; flags: 0), // amRope
(proc: nil; flags: 0), // amMine
(proc: @TestDesertEagle; flags: amtest_MultipleAttacks), // amDEagle
- (proc: nil; flags: 0), // amDynamite
+ (proc: @TestDynamite; flags: amtest_NoTarget), // amDynamite
(proc: @TestFirePunch; flags: amtest_NoTarget), // amFirePunch
(proc: @TestWhip; flags: amtest_NoTarget), // amWhip
(proc: @TestBaseballBat; flags: amtest_NoTarget), // amBaseballBat
@@ -120,7 +121,8 @@
//(proc: nil; flags: 0), // amStructure
(proc: nil; flags: 0), // amLandGun
(proc: nil; flags: 0), // amIceGun
- (proc: nil; flags: 0) // amKnife
+ (proc: nil; flags: 0), // amKnife
+ (proc: nil; flags: 0) // amGirder
);
implementation
@@ -1222,4 +1224,48 @@
TestCake:= valueResult;
end;
+function TestDynamite(Me: PGear; Targ: TTarget; Level: LongInt; var ap: TAttackParams): LongInt;
+var valueResult: LongInt;
+ x, y, dx, dy: real;
+ EX, EY, t: LongInt;
+begin
+Targ:= Targ; // avoid compiler hint
+
+x:= hwFloat2Float(Me^.X) + hwSign(Me^.dX) * 7;
+y:= hwFloat2Float(Me^.Y);
+dx:= hwSign(Me^.dX) * 0.03;
+dy:= 0;
+t:= 5000;
+repeat
+ dec(t);
+ x:= x + dx;
+ dy:= dy + cGravityf;
+ y:= y + dy;
+
+ if TestColl(trunc(x), trunc(y), 3) then
+ t:= 0;
+until t = 0;
+
+EX:= trunc(x);
+EY:= trunc(y);
+
+if Level = 1 then
+ valueResult:= RateExplosion(Me, EX, EY, 76, afTrackFall or afErasesLand)
+else
+ valueResult:= RateExplosion(Me, EX, EY, 76);
+
+if (valueResult > 0) then
+ begin
+ ap.Angle:= 0;
+ ap.Power:= 1;
+ ap.Time:= 0;
+ ap.ExplR:= 150;
+ ap.ExplX:= EX;
+ ap.ExplY:= EY
+ end else
+ valueResult:= BadTurn;
+
+TestDynamite:= valueResult
+end;
+
end.
--- a/hedgewars/uAIMisc.pas Sat Dec 14 21:16:20 2013 +0400
+++ b/hedgewars/uAIMisc.pas Tue Dec 17 00:02:52 2013 +0400
@@ -812,13 +812,13 @@
jmpLJump:
begin
if TestCollisionYwithGear(Gear, -1) <> 0 then
- if not TestCollisionXwithXYShift(Gear, _0, -2, hwSign(Gear^.dX)) then
+ if TestCollisionXwithXYShift(Gear, _0, -2, hwSign(Gear^.dX)) = 0 then
Gear^.Y:= Gear^.Y - int2hwFloat(2)
else
- if not TestCollisionXwithXYShift(Gear, _0, -1, hwSign(Gear^.dX)) then
+ if TestCollisionXwithXYShift(Gear, _0, -1, hwSign(Gear^.dX)) = 0 then
Gear^.Y:= Gear^.Y - _1;
- if not (TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) or
- (TestCollisionYwithGear(Gear, -1) <> 0)) then
+ if (TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) = 0) and
+ (TestCollisionYwithGear(Gear, -1) = 0) then
begin
Gear^.dY:= -_0_15;
Gear^.dX:= SignAs(_0_15, Gear^.dX);
@@ -846,7 +846,7 @@
Gear^.dY:= -_0_25;
Gear^.dX:= SignAs(_0_02, Gear^.dX)
end;
- if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then SetLittle(Gear^.dX);
+ if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) <> 0 then SetLittle(Gear^.dX);
Gear^.X:= Gear^.X + Gear^.dX;
inc(GoInfo.Ticks);
Gear^.dY:= Gear^.dY + cGravity;
--- a/hedgewars/uAmmos.pas Sat Dec 14 21:16:20 2013 +0400
+++ b/hedgewars/uAmmos.pas Tue Dec 17 00:02:52 2013 +0400
@@ -322,18 +322,21 @@
if Hedgehog.Gear <> nil then
with Hedgehog do
begin
- CurMinAngle:= Ammoz[AmmoType].minAngle;
- if Ammoz[AmmoType].maxAngle <> 0 then
- CurMaxAngle:= Ammoz[AmmoType].maxAngle
- else
- CurMaxAngle:= cMaxAngle;
+ if (AmmoType <> amNothing) then
+ begin
+ CurMinAngle:= Ammoz[AmmoType].minAngle;
+ if Ammoz[AmmoType].maxAngle <> 0 then
+ CurMaxAngle:= Ammoz[AmmoType].maxAngle
+ else
+ CurMaxAngle:= cMaxAngle;
- with Hedgehog.Gear^ do
- begin
- if Angle < CurMinAngle then
- Angle:= CurMinAngle;
- if Angle > CurMaxAngle then
- Angle:= CurMaxAngle;
+ with Hedgehog.Gear^ do
+ begin
+ if Angle < CurMinAngle then
+ Angle:= CurMinAngle;
+ if Angle > CurMaxAngle then
+ Angle:= CurMaxAngle;
+ end
end
end
end;
@@ -509,6 +512,8 @@
RegisterVariable('ammreinf', @SetAmmoReinforcement, false);
RegisterVariable('ammstore', @chAddAmmoStore , false);
+ CurMinAngle:= 0;
+ CurMaxAngle:= cMaxAngle;
StoreCnt:= 0;
ammoLoadout:= '';
ammoProbability:= '';
--- a/hedgewars/uChat.pas Sat Dec 14 21:16:20 2013 +0400
+++ b/hedgewars/uChat.pas Tue Dec 17 00:02:52 2013 +0400
@@ -285,11 +285,14 @@
exit
end;
- if (copy(s, 1, 4) <> '/me ') then
+ if (copy(s, 1, 4) = '/me ') then
begin
- if CurrentTeam^.ExtDriven or (CurrentTeam^.Hedgehogs[0].BotLevel <> 0) then
- exit;
+ ParseCommand('/say ' + s, true);
+ exit
+ end;
+ if (not CurrentTeam^.ExtDriven) and (CurrentTeam^.Hedgehogs[0].BotLevel = 0) then
+ begin
for i:= Low(TWave) to High(TWave) do
if (s = Wavez[i].cmd) then
begin
--- a/hedgewars/uCollisions.pas Sat Dec 14 21:16:20 2013 +0400
+++ b/hedgewars/uCollisions.pas Tue Dec 17 00:02:52 2013 +0400
@@ -38,29 +38,29 @@
function CheckGearsCollision(Gear: PGear): PGearArray;
-function TestCollisionXwithGear(Gear: PGear; Dir: LongInt): boolean;
+function TestCollisionXwithGear(Gear: PGear; Dir: LongInt): Word;
function TestCollisionYwithGear(Gear: PGear; Dir: LongInt): Word;
-function TestCollisionXKick(Gear: PGear; Dir: LongInt): boolean;
-function TestCollisionYKick(Gear: PGear; Dir: LongInt): boolean;
+function TestCollisionXKick(Gear: PGear; Dir: LongInt): Word;
+function TestCollisionYKick(Gear: PGear; Dir: LongInt): Word;
-function TestCollisionX(Gear: PGear; Dir: LongInt): boolean;
-function TestCollisionY(Gear: PGear; Dir: LongInt): boolean;
+function TestCollisionX(Gear: PGear; Dir: LongInt): Word;
+function TestCollisionY(Gear: PGear; Dir: LongInt): Word;
-function TestCollisionXwithXYShift(Gear: PGear; ShiftX: hwFloat; ShiftY: LongInt; Dir: LongInt): boolean; inline;
-function TestCollisionXwithXYShift(Gear: PGear; ShiftX: hwFloat; ShiftY: LongInt; Dir: LongInt; withGear: boolean): boolean;
-function TestCollisionYwithXYShift(Gear: PGear; ShiftX, ShiftY: LongInt; Dir: LongInt): boolean; inline;
-function TestCollisionYwithXYShift(Gear: PGear; ShiftX, ShiftY: LongInt; Dir: LongInt; withGear: boolean): boolean;
+function TestCollisionXwithXYShift(Gear: PGear; ShiftX: hwFloat; ShiftY: LongInt; Dir: LongInt): Word; inline;
+function TestCollisionXwithXYShift(Gear: PGear; ShiftX: hwFloat; ShiftY: LongInt; Dir: LongInt; withGear: boolean): Word;
+function TestCollisionYwithXYShift(Gear: PGear; ShiftX, ShiftY: LongInt; Dir: LongInt): Word; inline;
+function TestCollisionYwithXYShift(Gear: PGear; ShiftX, ShiftY: LongInt; Dir: LongInt; withGear: boolean): Word;
function TestRectancleForObstacle(x1, y1, x2, y2: LongInt; landOnly: boolean): boolean;
// returns: negative sign if going downhill to left, value is steepness (noslope/error = _0, 45° = _0_5)
function CalcSlopeBelowGear(Gear: PGear): hwFloat;
function CalcSlopeNearGear(Gear: PGear; dirX, dirY: LongInt): hwFloat;
-function CalcSlopeTangent(Gear: PGear; collisionX, collisionY: LongInt; var outDeltaX, outDeltaY: LongInt; TestWord: LongWord): Boolean;
+function CalcSlopeTangent(Gear: PGear; collisionX, collisionY: LongInt; var outDeltaX, outDeltaY: LongInt; TestWord: LongWord): boolean;
implementation
-uses uConsts, uLandGraphics, uVariables, uDebug, uGearsList;
+uses uConsts, uLandGraphics, uVariables, uDebug;
type TCollisionEntry = record
X, Y, Radius: LongInt;
@@ -95,7 +95,7 @@
while (t <> nil) and (t^.Kind <> gtMine) do
t:= t^.NextGear;
if (t <> nil) then
- DeleteGear(t)
+ t^.State:= t^.State or gmDelete
end;
end;
@@ -135,7 +135,7 @@
end
end;
-function TestCollisionXwithGear(Gear: PGear; Dir: LongInt): boolean;
+function TestCollisionXwithGear(Gear: PGear; Dir: LongInt): Word;
var x, y, i: LongInt;
begin
// Special case to emulate the old intersect gear clearing, but with a bit of slop for pixel overlap
@@ -150,7 +150,6 @@
else
x:= x + Gear^.Radius;
-TestCollisionXwithGear:= true;
if (x and LAND_WIDTH_MASK) = 0 then
begin
y:= hwRound(Gear^.Y) - Gear^.Radius + 1;
@@ -158,11 +157,11 @@
repeat
if (y and LAND_HEIGHT_MASK) = 0 then
if Land[y, x] and Gear^.CollisionMask <> 0 then
- exit;
+ exit(Land[y, x] and Gear^.CollisionMask);
inc(y)
until (y > i);
end;
-TestCollisionXwithGear:= false
+TestCollisionXwithGear:= 0
end;
function TestCollisionYwithGear(Gear: PGear; Dir: LongInt): Word;
@@ -188,8 +187,7 @@
if (x and LAND_WIDTH_MASK) = 0 then
if Land[y, x] and Gear^.CollisionMask <> 0 then
begin
- TestCollisionYwithGear:= Land[y, x];
- exit;
+ exit(Land[y, x] and Gear^.CollisionMask)
end;
inc(x)
until (x > i);
@@ -197,34 +195,33 @@
TestCollisionYwithGear:= 0
end;
-function TestCollisionXKick(Gear: PGear; Dir: LongInt): boolean;
+function TestCollisionXKick(Gear: PGear; Dir: LongInt): Word;
var x, y, mx, my, i: LongInt;
- flag: boolean;
+ pixel: Word;
begin
-flag:= false;
+pixel:= 0;
x:= hwRound(Gear^.X);
if Dir < 0 then
x:= x - Gear^.Radius
else
x:= x + Gear^.Radius;
-TestCollisionXKick:= true;
if (x and LAND_WIDTH_MASK) = 0 then
begin
y:= hwRound(Gear^.Y) - Gear^.Radius + 1;
i:= y + Gear^.Radius * 2 - 2;
repeat
if (y and LAND_HEIGHT_MASK) = 0 then
- if Land[y, x] > 255 then
- exit
- else if Land[y, x] <> 0 then
- flag:= true;
+ if Land[y, x] and Gear^.CollisionMask > 255 then
+ exit(Land[y, x] and Gear^.CollisionMask)
+ else if Land[y, x] and Gear^.CollisionMask <> 0 then
+ pixel:= Land[y, x] and Gear^.CollisionMask;
inc(y)
until (y > i);
end;
-TestCollisionXKick:= flag;
+TestCollisionXKick:= pixel;
-if flag then
+if pixel <> 0 then
begin
if hwAbs(Gear^.dX) < cHHKick then
exit;
@@ -255,24 +252,22 @@
Active:= true
end;
DeleteCI(cGear);
- TestCollisionXKick:= false;
- exit;
+ exit(0);
end
end
end;
-function TestCollisionYKick(Gear: PGear; Dir: LongInt): boolean;
+function TestCollisionYKick(Gear: PGear; Dir: LongInt): Word;
var x, y, mx, my, myr, i: LongInt;
- flag: boolean;
+ pixel: Word;
begin
-flag:= false;
+pixel:= 0;
y:= hwRound(Gear^.Y);
if Dir < 0 then
y:= y - Gear^.Radius
else
y:= y + Gear^.Radius;
-TestCollisionYKick:= true;
if (y and LAND_HEIGHT_MASK) = 0 then
begin
x:= hwRound(Gear^.X) - Gear^.Radius + 1;
@@ -280,16 +275,16 @@
repeat
if (x and LAND_WIDTH_MASK) = 0 then
if Land[y, x] > 0 then
- if Land[y, x] > 255 then
- exit
+ if Land[y, x] and Gear^.CollisionMask > 255 then
+ exit(Land[y, x] and Gear^.CollisionMask)
else if Land[y, x] <> 0 then
- flag:= true;
+ pixel:= Land[y, x] and Gear^.CollisionMask;
inc(x)
until (x > i);
end;
-TestCollisionYKick:= flag;
+TestCollisionYKick:= pixel;
-if flag then
+if pixel <> 0 then
begin
if hwAbs(Gear^.dY) < cHHKick then
exit;
@@ -318,18 +313,17 @@
Active:= true
end;
DeleteCI(cGear);
- TestCollisionYKick:= false;
- exit
+ exit(0)
end
end
end;
-function TestCollisionXwithXYShift(Gear: PGear; ShiftX: hwFloat; ShiftY: LongInt; Dir: LongInt): boolean; inline;
+function TestCollisionXwithXYShift(Gear: PGear; ShiftX: hwFloat; ShiftY: LongInt; Dir: LongInt): Word; inline;
begin
TestCollisionXwithXYShift:= TestCollisionXwithXYShift(Gear, ShiftX, ShiftY, Dir, true);
end;
-function TestCollisionXwithXYShift(Gear: PGear; ShiftX: hwFloat; ShiftY: LongInt; Dir: LongInt; withGear: boolean): boolean;
+function TestCollisionXwithXYShift(Gear: PGear; ShiftX: hwFloat; ShiftY: LongInt; Dir: LongInt; withGear: boolean): Word;
begin
Gear^.X:= Gear^.X + ShiftX;
Gear^.Y:= Gear^.Y + int2hwFloat(ShiftY);
@@ -340,7 +334,7 @@
Gear^.Y:= Gear^.Y - int2hwFloat(ShiftY)
end;
-function TestCollisionX(Gear: PGear; Dir: LongInt): boolean;
+function TestCollisionX(Gear: PGear; Dir: LongInt): Word;
var x, y, i: LongInt;
begin
x:= hwRound(Gear^.X);
@@ -349,22 +343,21 @@
else
x:= x + Gear^.Radius;
-TestCollisionX:= true;
if (x and LAND_WIDTH_MASK) = 0 then
begin
y:= hwRound(Gear^.Y) - Gear^.Radius + 1;
i:= y + Gear^.Radius * 2 - 2;
repeat
if (y and LAND_HEIGHT_MASK) = 0 then
- if Land[y, x] > 255 then
- exit;
+ if Land[y, x] and Gear^.CollisionMask > 255 then
+ exit(Land[y, x] and Gear^.CollisionMask);
inc(y)
until (y > i);
end;
-TestCollisionX:= false
+TestCollisionX:= 0
end;
-function TestCollisionY(Gear: PGear; Dir: LongInt): boolean;
+function TestCollisionY(Gear: PGear; Dir: LongInt): Word;
var x, y, i: LongInt;
begin
y:= hwRound(Gear^.Y);
@@ -373,33 +366,32 @@
else
y:= y + Gear^.Radius;
-TestCollisionY:= true;
if (y and LAND_HEIGHT_MASK) = 0 then
begin
x:= hwRound(Gear^.X) - Gear^.Radius + 1;
i:= x + Gear^.Radius * 2 - 2;
repeat
if (x and LAND_WIDTH_MASK) = 0 then
- if Land[y, x] > 255 then
- exit;
+ if Land[y, x] and Gear^.CollisionMask > 255 then
+ exit(Land[y, x] and Gear^.CollisionMask);
inc(x)
until (x > i);
end;
-TestCollisionY:= false
+TestCollisionY:= 0
end;
-function TestCollisionYwithXYShift(Gear: PGear; ShiftX, ShiftY: LongInt; Dir: LongInt): boolean; inline;
+function TestCollisionYwithXYShift(Gear: PGear; ShiftX, ShiftY: LongInt; Dir: LongInt): Word; inline;
begin
TestCollisionYwithXYShift:= TestCollisionYwithXYShift(Gear, ShiftX, ShiftY, Dir, true);
end;
-function TestCollisionYwithXYShift(Gear: PGear; ShiftX, ShiftY: LongInt; Dir: LongInt; withGear: boolean): boolean;
+function TestCollisionYwithXYShift(Gear: PGear; ShiftX, ShiftY: LongInt; Dir: LongInt; withGear: boolean): Word;
begin
Gear^.X:= Gear^.X + int2hwFloat(ShiftX);
Gear^.Y:= Gear^.Y + int2hwFloat(ShiftY);
if withGear then
- TestCollisionYwithXYShift:= TestCollisionYwithGear(Gear, Dir) <> 0
+ TestCollisionYwithXYShift:= TestCollisionYwithGear(Gear, Dir)
else
TestCollisionYwithXYShift:= TestCollisionY(Gear, Dir);
--- a/hedgewars/uCommandHandlers.pas Sat Dec 14 21:16:20 2013 +0400
+++ b/hedgewars/uCommandHandlers.pas Tue Dec 17 00:02:52 2013 +0400
@@ -109,39 +109,6 @@
CurrentTeam^.ExtDriven:= true
end;
-procedure chGrave(var s: shortstring);
-begin
-if CurrentTeam = nil then
- OutError(errmsgIncorrectUse + ' "/grave"', true);
-if s[1]='"' then
- Delete(s, 1, 1);
-if s[byte(s[0])]='"' then
- Delete(s, byte(s[0]), 1);
-CurrentTeam^.GraveName:= s
-end;
-
-procedure chFort(var s: shortstring);
-begin
-if CurrentTeam = nil then
- OutError(errmsgIncorrectUse + ' "/fort"', true);
-if s[1]='"' then
- Delete(s, 1, 1);
-if s[byte(s[0])]='"' then
- Delete(s, byte(s[0]), 1);
-CurrentTeam^.FortName:= s
-end;
-
-procedure chFlag(var s: shortstring);
-begin
-if CurrentTeam = nil then
- OutError(errmsgIncorrectUse + ' "/flag"', true);
-if s[1]='"' then
- Delete(s, 1, 1);
-if s[byte(s[0])]='"' then
- Delete(s, byte(s[0]), 1);
-CurrentTeam^.flag:= s
-end;
-
procedure chScript(var s: shortstring);
begin
if s[1]='"' then
@@ -152,21 +119,6 @@
ScriptLoad(s)
end;
-procedure chSetHat(var s: shortstring);
-begin
-if (not isDeveloperMode) or (CurrentTeam = nil) then exit;
-with CurrentTeam^ do
- begin
- if not CurrentHedgehog^.King then
- if (s = '')
- or (((GameFlags and gfKing) <> 0) and (s = 'crown'))
- or ((Length(s) > 39) and (Copy(s,1,8) = 'Reserved') and (Copy(s,9,32) <> PlayerHash)) then
- CurrentHedgehog^.Hat:= 'NoHat'
- else
- CurrentHedgehog^.Hat:= s
- end;
-end;
-
procedure chCurU_p(var s: shortstring);
begin
s:= s; // avoid compiler hint
@@ -657,10 +609,26 @@
procedure chRotateMask(var s: shortstring);
begin
s:= s; // avoid compiler hint
-if ((GameFlags and gfInvulnerable) = 0) then
- cTagsMask:= cTagsMasks[cTagsMask]
+// this is just for me, 'cause I thought it'd be fun. using the old precise + switch to keep it out of people's way
+if LocalMessage and (gmPrecise or gmSwitch) = (gmPrecise or gmSwitch) then
+ begin
+ if UIDisplay <> uiNone then
+ UIDisplay:= uiNone
+ else UIDisplay:= uiAll
+ end
+else if LocalMessage and gmPrecise = gmPrecise then
+ begin
+ if ((GameFlags and gfInvulnerable) = 0) then
+ cTagsMask:= cTagsMasks[cTagsMask]
+ else
+ cTagsMask:= cTagsMasksNoHealth[cTagsMask]
+ end
else
- cTagsMask:= cTagsMasksNoHealth[cTagsMask];
+ begin
+ if UIDisplay <> uiNoTeams then
+ UIDisplay:= uiNoTeams
+ else UIDisplay:= uiAll
+ end
end;
procedure chSpeedup_p(var s: shortstring);
@@ -827,7 +795,6 @@
RegisterVariable('setweap' , @chSetWeapon , false, true);
//////// End top by freq analysis
RegisterVariable('gencmd' , @chGenCmd , false);
- RegisterVariable('flag' , @chFlag , false);
RegisterVariable('script' , @chScript , false);
RegisterVariable('proto' , @chCheckProto , true );
RegisterVariable('spectate', @chFastUntilLag , false);
@@ -857,9 +824,6 @@
RegisterVariable('gmflags' , @chGameFlags , false);
RegisterVariable('turntime', @chHedgehogTurnTime, false);
RegisterVariable('minestime',@chMinesTime , false);
- RegisterVariable('fort' , @chFort , false);
- RegisterVariable('grave' , @chGrave , false);
- RegisterVariable('hat' , @chSetHat , false);
RegisterVariable('quit' , @chQuit , true );
RegisterVariable('forcequit', @chForceQuit , true );
RegisterVariable('confirm' , @chConfirm , true );
--- a/hedgewars/uGears.pas Sat Dec 14 21:16:20 2013 +0400
+++ b/hedgewars/uGears.pas Tue Dec 17 00:02:52 2013 +0400
@@ -33,7 +33,7 @@
* effects are called "Visual Gears" and defined in the respective unit!
*)
interface
-uses uConsts, uFloat, uTypes;
+uses uConsts, uFloat, uTypes, uChat;
procedure initModule;
procedure freeModule;
@@ -78,7 +78,7 @@
begin
if (not isInMultiShoot) then
inc(Gear^.Damage, Gear^.Karma);
- if (Gear^.Damage <> 0) and (not Gear^.Invulnerable) then
+ if (Gear^.Damage <> 0) and ((Gear^.Hedgehog^.Effects[heInvulnerable] = 0)) then
begin
CheckNoDamage:= false;
@@ -510,7 +510,7 @@
if (Gear <> nil) then
begin
if (GameFlags and gfInvulnerable) = 0 then
- Gear^.Invulnerable:= false;
+ Gear^.Hedgehog^.Effects[heInvulnerable]:= 0;
end;
end;
t:= GearsList;
@@ -564,7 +564,7 @@
end;
procedure AddMiscGears;
-var i,rx, ry: Longword;
+var p,i,j,rx, ry: Longword;
rdx, rdy: hwFloat;
Gear: PGear;
begin
@@ -599,11 +599,13 @@
Gear:= GearsList;
if (GameFlags and gfInvulnerable) <> 0 then
- while Gear <> nil do
- begin
- Gear^.Invulnerable:= true; // this is only checked on hogs right now, so no need for gear type check
- Gear:= Gear^.NextGear
- end;
+ for p:= 0 to Pred(ClansCount) do
+ with ClansArray[p]^ do
+ for j:= 0 to Pred(TeamsNumber) do
+ with Teams[j]^ do
+ for i:= 0 to cMaxHHIndex do
+ with Hedgehogs[i] do
+ Effects[heInvulnerable]:= 1;
if (GameFlags and gfLaserSight) <> 0 then
cLaserSighting:= true;
@@ -622,7 +624,7 @@
snowRight:= max(LAND_WIDTH,4096)+512;
snowLeft:= -(snowRight-LAND_WIDTH);
-if (not hasBorder) and ((Theme = 'Snow') or (Theme = 'Christmas')) then
+if (not hasBorder) and cSnow then
for i:= vobCount * Longword(max(LAND_WIDTH,4096)) div 2048 downto 1 do
AddGear(LongInt(GetRandom(snowRight - snowLeft)) + snowLeft, LAND_HEIGHT + LongInt(GetRandom(750)) - 1300, gtFlake, 0, _0, _0, 0);
end;
@@ -882,9 +884,10 @@
Gear^.Hedgehog:= hh;
Gear^.Text:= text;
Gear^.FrameTicks:= x
- end
+ end;
+ //ParseCommand('/say [' + hh^.Name + '] '+text, true)
+ AddChatString(#1+'[' + HH^.Name + '] '+text);
end
- //else ParseCommand('say ' + text, true)
end
else if (x >= 4) then
begin
--- a/hedgewars/uGearsHandlers.pas Sat Dec 14 21:16:20 2013 +0400
+++ b/hedgewars/uGearsHandlers.pas Tue Dec 17 00:02:52 2013 +0400
@@ -61,7 +61,7 @@
begin
Gear^.Tag := 0;
Gear^.Y := Gear^.Y + int2hwFloat(yy);
- if not TestCollisionXwithGear(Gear, xxn) then
+ if TestCollisionXwithGear(Gear, xxn) = 0 then
begin
Gear^.X := Gear^.X + int2hwFloat(xxn);
NextAngle(Gear, dA)
@@ -69,7 +69,7 @@
end;
if (yy = 0) then
- if TestCollisionXwithGear(Gear, xx) then
+ if TestCollisionXwithGear(Gear, xx) <> 0 then
PrevAngle(Gear, dA)
else
begin
--- a/hedgewars/uGearsHandlersMess.pas Sat Dec 14 21:16:20 2013 +0400
+++ b/hedgewars/uGearsHandlersMess.pas Tue Dec 17 00:02:52 2013 +0400
@@ -208,7 +208,7 @@
if (gi^.Kind = gtHedgehog) then
begin
d := r - hwRound(Distance(gi^.X - x, gi^.Y - y));
- if (d > 1) and (not gi^.Invulnerable) and (GetRandom(2) = 0) then
+ if (d > 1) and ((gi^.Hedgehog^.Effects[heInvulnerable] = 0)) and (GetRandom(2) = 0) then
begin
if (CurrentHedgehog^.Gear = gi) then
PlaySoundV(sndOops, gi^.Hedgehog^.Team^.voicepack)
@@ -281,15 +281,18 @@
isFalling: boolean;
//tmp: QWord;
tX, tdX, tdY: hwFloat;
- collV, collH: LongInt;
- land: word;
+ collV, collH, gX, gY: LongInt;
+ land, xland: word;
+ boing: PVisualGear;
begin
tX:= Gear^.X;
+ gX:= hwRound(Gear^.X);
+ gY:= hwRound(Gear^.Y);
if (Gear^.Kind <> gtGenericFaller) and WorldWrap(Gear) and (WorldEdge = weWrap) and (Gear^.AdvBounce <> 0) and
- (TestCollisionXwithGear(Gear, 1) or TestCollisionXwithGear(Gear, -1)) then
+ ((TestCollisionXwithGear(Gear, 1) <> 0) or (TestCollisionXwithGear(Gear, -1) <> 0)) then
begin
Gear^.X:= tX;
- Gear^.dX.isNegative:= (hwRound(tX) > leftX+Gear^.Radius*2)
+ Gear^.dX.isNegative:= (gX > leftX+Gear^.Radius*2)
end;
// clip velocity at 2 - over 1 per pixel, but really shouldn't cause many actual problems.
@@ -298,7 +301,7 @@
if Gear^.dY.Round > 2 then
Gear^.dY.QWordValue:= 8589934592;
- if (Gear^.State and gstSubmersible <> 0) and (hwRound(Gear^.Y) > cWaterLine) then
+ if (Gear^.State and gstSubmersible <> 0) and (gY > cWaterLine) then
begin
Gear^.dX:= Gear^.dX * _0_999;
Gear^.dY:= Gear^.dY * _0_999
@@ -311,8 +314,8 @@
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
+ if (gX < min(LAND_WIDTH div -2, -2048))
+ or (gX > max(LAND_WIDTH * 3 div 2, 6144)) then
Gear^.State := Gear^.State or gstCollision;
if Gear^.dY.isNegative then
@@ -323,15 +326,20 @@
begin
collV := -1;
if land and lfIce <> 0 then
- Gear^.dX := Gear^.dX * (_0_9 + Gear^.Friction * _0_1)
- else
- Gear^.dX := Gear^.dX * Gear^.Friction;
-
- Gear^.dY := - Gear^.dY * Gear^.Elasticity;
- Gear^.State := Gear^.State or gstCollision
+ Gear^.dX := Gear^.dX * (_0_9 + Gear^.Friction * _0_1)
+ else Gear^.dX := Gear^.dX * Gear^.Friction;
+ if (Gear^.AdvBounce = 0) or (land and lfBouncy = 0) then
+ begin
+ Gear^.dY := - Gear^.dY * Gear^.Elasticity;
+ Gear^.State := Gear^.State or gstCollision
+ end
+ else Gear^.dY := - Gear^.dY * cElastic
end
- else if (Gear^.AdvBounce=1) and (TestCollisionYwithGear(Gear, 1) <> 0) then
- collV := 1;
+ else if Gear^.AdvBounce = 1 then
+ begin
+ land:= TestCollisionYwithGear(Gear, 1);
+ if land <> 0 then collV := 1
+ end
end
else
begin // Gear^.dY.isNegative is false
@@ -345,34 +353,63 @@
else
Gear^.dX := Gear^.dX * Gear^.Friction;
- Gear^.dY := - Gear^.dY * Gear^.Elasticity;
- Gear^.State := Gear^.State or gstCollision
+ if (Gear^.AdvBounce = 0) or (land and lfBouncy = 0) then
+ begin
+ Gear^.dY := - Gear^.dY * Gear^.Elasticity;
+ Gear^.State := Gear^.State or gstCollision
+ end
+ else Gear^.dY := - Gear^.dY * cElastic
end
else
begin
isFalling := true;
- if (Gear^.AdvBounce=1) and (TestCollisionYwithGear(Gear, -1) <> 0) then
- collV := -1
+ if Gear^.AdvBounce = 1 then
+ begin
+ land:= TestCollisionYwithGear(Gear, -1);
+ if land <> 0 then collV := -1
+ end
end
end;
- if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then
+ xland:= TestCollisionXwithGear(Gear, hwSign(Gear^.dX));
+ if xland <> 0 then
begin
collH := hwSign(Gear^.dX);
- Gear^.dX := - Gear^.dX * Gear^.Elasticity;
- Gear^.dY := Gear^.dY * Gear^.Elasticity;
- Gear^.State := Gear^.State or gstCollision
+ if (Gear^.AdvBounce = 0) or (xland and lfBouncy = 0) then
+ begin
+ Gear^.dX := - Gear^.dX * Gear^.Elasticity;
+ Gear^.dY := Gear^.dY * Gear^.Elasticity;
+ Gear^.State := Gear^.State or gstCollision
+ end
+ else
+ begin
+ Gear^.dX := - Gear^.dX * cElastic;
+ Gear^.dY := Gear^.dY * cElastic
+ end
end
- else if (Gear^.AdvBounce=1) and TestCollisionXwithGear(Gear, -hwSign(Gear^.dX)) then
- collH := -hwSign(Gear^.dX);
+ else if Gear^.AdvBounce = 1 then
+ begin
+ xland:= TestCollisionXwithGear(Gear, -hwSign(Gear^.dX));
+ if xland <> 0 then collH := -hwSign(Gear^.dX)
+ end;
//if Gear^.AdvBounce and (collV <>0) and (collH <> 0) and (hwSqr(tdX) + hwSqr(tdY) > _0_08) then
- if (Gear^.AdvBounce=1) and (collV <>0) and (collH <> 0) and ((collV=-1)
- or ((tdX.QWordValue + tdY.QWordValue) > _0_2.QWordValue)) then
- begin
- Gear^.dX := tdY*Gear^.Elasticity*Gear^.Friction;
- Gear^.dY := tdX*Gear^.Elasticity;
- //*Gear^.Friction;
+ if (collV <> 0) and (collH <> 0) and
+ (((Gear^.AdvBounce=1) and ((collV=-1) or ((tdX.QWordValue + tdY.QWordValue) > _0_2.QWordValue)))) then
+ //or ((xland or land) and lfBouncy <> 0)) then
+ begin
+ if (xland or land) and lfBouncy = 0 then
+ begin
+ Gear^.dX := tdY*Gear^.Elasticity*Gear^.Friction;
+ Gear^.dY := tdX*Gear^.Elasticity;
+ Gear^.State := Gear^.State or gstCollision
+ end
+ else
+ begin
+ Gear^.dX := tdY*cElastic*Gear^.Friction;
+ Gear^.dY := tdX*cElastic
+ end;
+
Gear^.dY.isNegative := not tdY.isNegative;
isFalling := false;
Gear^.AdvBounce := 10;
@@ -397,7 +434,28 @@
else
Gear^.State := Gear^.State or gstMoving;
- if (Gear^.nImpactSounds > 0) and
+ if ((xland or land) and lfBouncy <> 0) and (Gear^.dX.QWordValue < _0_15.QWordValue) and (Gear^.dY.QWordValue < _0_15.QWordValue) then
+ Gear^.State := Gear^.State or gstCollision;
+
+ if ((xland or land) and lfBouncy <> 0) and (Gear^.Radius >= 3) and
+ ((Gear^.dX.QWordValue > _0_15.QWordValue) or (Gear^.dY.QWordValue > _0_15.QWordValue)) then
+ begin
+ boing:= AddVisualGear(gX, gY, vgtStraightShot, 0, false, 1);
+ if boing <> nil then
+ with boing^ do
+ begin
+ Angle:= random(360);
+ dx:= 0;
+ dy:= 0;
+ FrameTicks:= 200;
+ tX:= _0;
+ tX.QWordValue:= Gear^.dY.QWordValue + Gear^.dX.QWordValue;
+ Scale:= hwFloat2Float(Gear^.Density * tX) / 1.5;
+ State:= ord(sprBoing)
+ end;
+ PlaySound(sndMelonImpact, true)
+ end
+ else if (Gear^.nImpactSounds > 0) and
(Gear^.State and gstCollision <> 0) and
(((Gear^.Kind <> gtMine) and (Gear^.Damage <> 0)) or (Gear^.State and gstMoving <> 0)) and
(((Gear^.Radius < 3) and (Gear^.dY < -_0_1)) or
@@ -871,11 +929,11 @@
AllInactive := false;
if Gear^.dY.isNegative then
- if TestCollisionY(Gear, -1) then
+ if TestCollisionY(Gear, -1) <> 0 then
Gear^.dY := _0;
if not Gear^.dY.isNegative then
- if TestCollisionY(Gear, 1) then
+ if TestCollisionY(Gear, 1) <> 0 then
begin
Gear^.dY := - Gear^.dY * Gear^.Elasticity;
if Gear^.dY > - _1div1024 then
@@ -931,13 +989,24 @@
if Gear^.Timer = 0 then
- Gear^.RenderTimer:= false
+ begin
+ // no "fuel"? just fall
+ doStepFallingGear(Gear);
+ // if drowning, stop bee sound
+ if (Gear^.State and gstDrowning) <> 0 then
+ StopSoundChan(Gear^.SoundChannel);
+ end
else
begin
if (GameTicks and $F) = 0 then
begin
if (GameTicks and $30) = 0 then
- AddVisualGear(gX, gY, vgtBeeTrace);
+ begin
+ if nuw then
+ AddVisualGear(gX, gY, vgtBubble)
+ else
+ AddVisualGear(gX, gY, vgtBeeTrace);
+ end;
Gear^.dX := Gear^.Elasticity * (Gear^.dX + _0_000064 * (Gear^.Target.X - gX));
Gear^.dY := Gear^.Elasticity * (Gear^.dY + _0_000064 * (Gear^.Target.Y - gY));
// make sure new speed isn't higher than original one (which we stored in Friction variable)
@@ -978,17 +1047,15 @@
end;
if (Gear^.Timer > 0) then
- dec(Gear^.Timer)
- else
- begin
- Gear^.State:= Gear^.State and not gstSubmersible;
- if nuw then
- begin
- StopSoundChan(Gear^.SoundChannel);
- CheckGearDrowning(Gear);
- end
- else
- doStepFallingGear(Gear);
+ begin
+ dec(Gear^.Timer);
+ if Gear^.Timer = 0 then
+ begin
+ // no need to display remaining time anymore
+ Gear^.RenderTimer:= false;
+ // bee can drown when timer reached 0
+ Gear^.State:= Gear^.State and not gstSubmersible;
+ end;
end;
end;
@@ -1656,12 +1723,14 @@
////////////////////////////////////////////////////////////////////////////////
procedure doStepSMine(Gear: PGear);
+ var land: Word;
begin
// TODO: do real calculation?
- if TestCollisionXwithGear(Gear, 2)
- or (TestCollisionYwithGear(Gear, -2) <> 0)
- or TestCollisionXwithGear(Gear, -2)
- or (TestCollisionYwithGear(Gear, 2) <> 0) then
+ land:= TestCollisionXwithGear(Gear, 2);
+ if land = 0 then land:= TestCollisionYwithGear(Gear,-2);
+ if land = 0 then land:= TestCollisionXwithGear(Gear,-2);
+ if land = 0 then land:= TestCollisionYwithGear(Gear, 2);
+ if (land <> 0) and (land and lfBouncy = 0) then
begin
if (not isZero(Gear^.dX)) or (not isZero(Gear^.dY)) then
begin
@@ -1688,24 +1757,23 @@
Gear^.State := Gear^.State or gstAttacking
end
else // gstAttacking <> 0
- begin
+ begin
AllInactive := false;
if Gear^.Timer = 0 then
begin
doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 30, Gear^.Hedgehog, EXPLAutoSound);
DeleteGear(Gear);
exit
- end else
+ end
+ else
if (Gear^.Timer and $FF) = 0 then
PlaySound(sndMineTick);
-
- dec(Gear^.Timer);
+ dec(Gear^.Timer);
end
- end
+ end
else // gsttmpFlag = 0
- if (TurnTimeLeft = 0)
- or ((GameFlags and gfInfAttack <> 0) and (GameTicks > Gear^.FlightTime))
- or (Gear^.Hedgehog^.Gear = nil) then
+ if ((GameFlags and gfInfAttack = 0) and ((TurnTimeLeft = 0) or (Gear^.Hedgehog^.Gear = nil)))
+ or ((GameFlags and gfInfAttack <> 0) and (GameTicks > Gear^.FlightTime)) then
Gear^.State := Gear^.State or gsttmpFlag;
end;
@@ -1969,7 +2037,11 @@
procedure doStepTarget(Gear: PGear);
begin
if (Gear^.Timer = 0) and (Gear^.Tag = 0) then
+ begin
PlaySound(sndWarp);
+ // workaround: save spawn Y for doStepCase (which is a mess atm)
+ Gear^.Angle:= hwRound(Gear^.Y);
+ end;
if (Gear^.Tag = 0) and (Gear^.Timer < 1000) then
inc(Gear^.Timer)
@@ -2027,6 +2099,7 @@
for i:= 0 to 3 do
begin
+ AddVisualGear(hwRound(Gear^.X) + hwSign(Gear^.dX) * (10 + 6 * i), hwRound(Gear^.Y) + 12 + Random(6), vgtDust);
AmmoShove(Gear, 30, 25);
Gear^.X := Gear^.X + Gear^.dX * 5
end;
@@ -2297,7 +2370,7 @@
HHGear^.Y := HHGear^.Y + cGravity * 40;
// don't drift into obstacles
- if TestCollisionXwithGear(HHGear, hwSign(HHGear^.dX)) then
+ if TestCollisionXwithGear(HHGear, hwSign(HHGear^.dX)) <> 0 then
HHGear^.X := HHGear^.X - int2hwFloat(hwSign(HHGear^.dX));
HHGear^.Y := HHGear^.Y + cGravity * 100;
Gear^.X := HHGear^.X;
@@ -2413,6 +2486,7 @@
HHGear: PGear;
x, y, tx, ty: hwFloat;
rx: LongInt;
+ LandFlags: Word;
begin
AllInactive := false;
@@ -2423,12 +2497,16 @@
y := HHGear^.Y;
rx:= hwRound(x);
+ LandFlags:= 0;
+ if cIce then LandFlags:= lfIce
+ else if Gear^.AmmoType = amRubber then LandFlags:= lfBouncy;
+
if ((Distance(tx - x, ty - y) > _256) and ((WorldEdge <> weWrap) or
(
(Distance(tx - int2hwFloat(rightX+(rx-leftX)), ty - y) > _256) and
(Distance(tx - int2hwFloat(leftX-(rightX-rx)), ty - y) > _256)
)))
- or (not TryPlaceOnLand(Gear^.Target.X - SpritesData[sprAmGirder].Width div 2, Gear^.Target.Y - SpritesData[sprAmGirder].Height div 2, sprAmGirder, Gear^.State, true, false)) then
+ or (not TryPlaceOnLand(Gear^.Target.X - SpritesData[Ammoz[Gear^.AmmoType].PosSprite].Width div 2, Gear^.Target.Y - SpritesData[Ammoz[Gear^.AmmoType].PosSprite].Height div 2, Ammoz[Gear^.AmmoType].PosSprite, Gear^.State, true, false, LandFlags)) then
begin
PlaySound(sndDenied);
HHGear^.Message := HHGear^.Message and (not gmAttack);
@@ -2826,7 +2904,7 @@
dmg:= dmgBase - max(hwRound(Distance(tdX, tdY)),gi^.Radius);
if (dmg > 1) then dmg:= ModifyDamage(min(dmg div 2, cakeDmg), gi);
if (dmg > 1) then
- if (CurrentHedgehog^.Gear = gi) and (not gi^.Invulnerable) then
+ if (CurrentHedgehog^.Gear = gi) and ((gi^.Hedgehog^.Effects[heInvulnerable] = 0)) then
gi^.State := gi^.State or gstLoser
else
gi^.State := gi^.State or gstWinner;
@@ -3077,14 +3155,14 @@
tempColl:= Gear^.CollisionMask;
Gear^.CollisionMask:= $007F;
- if (TestCollisionYWithGear(Gear, hwSign(Gear^.dY)) <> 0) or TestCollisionXWithGear(Gear, hwSign(Gear^.dX)) or (GameTicks > Gear^.FlightTime) then
+ if (TestCollisionYWithGear(Gear, hwSign(Gear^.dY)) <> 0) or (TestCollisionXWithGear(Gear, hwSign(Gear^.dX)) <> 0) or (GameTicks > Gear^.FlightTime) then
t := CheckGearsCollision(Gear)
else t := nil;
Gear^.CollisionMask:= tempColl;
//fixes drill not exploding when touching HH bug
if (Gear^.Timer = 0) or ((t <> nil) and (t^.Count <> 0))
- or ( ((Gear^.State and gsttmpFlag) = 0) and (TestCollisionYWithGear(Gear, hwSign(Gear^.dY)) = 0) and (not TestCollisionXWithGear(Gear, hwSign(Gear^.dX))))
+ or ( ((Gear^.State and gsttmpFlag) = 0) and (TestCollisionYWithGear(Gear, hwSign(Gear^.dY)) = 0) and (TestCollisionXWithGear(Gear, hwSign(Gear^.dX)) = 0))
// CheckLandValue returns true if the type isn't matched
or (not CheckLandValue(hwRound(Gear^.X), hwRound(Gear^.Y), lfIndestructible)) then
begin
@@ -3098,7 +3176,7 @@
exit
end
- else if (TestCollisionYWithGear(Gear, hwSign(Gear^.dY)) = 0) and (not TestCollisionXWithGear(Gear, hwSign(Gear^.dX))) then
+ else if (TestCollisionYWithGear(Gear, hwSign(Gear^.dY)) = 0) and (TestCollisionXWithGear(Gear, hwSign(Gear^.dX)) = 0) then
begin
StopSoundChan(Gear^.SoundChannel);
Gear^.Tag := 1;
@@ -3555,7 +3633,13 @@
HHGear := Gear^.Hedgehog^.Gear;
if HHGear = nil then
begin
- DeleteGear(Gear);
+ Gear^.Timer := 0;
+ Gear^.State := Gear^.State or gstAnimation or gstTmpFlag;
+ Gear^.Timer := 0;
+ Gear^.doStep := @doStepBirdyDisappear;
+ CurAmmoGear := nil;
+ isCursorVisible := false;
+ AfterAttack;
exit
end;
@@ -3657,14 +3741,21 @@
HHGear: PGear;
begin
if Gear^.Timer > 0 then
- dec(Gear^.Timer, 1)
- else if Gear^.Hedgehog^.Gear = nil then
- begin
- DeleteGear(Gear);
+ dec(Gear^.Timer, 1);
+
+ HHGear := Gear^.Hedgehog^.Gear;
+ if HHGear = nil then
+ begin
+ Gear^.Timer := 0;
+ Gear^.State := Gear^.State or gstAnimation or gstTmpFlag;
+ Gear^.Timer := 0;
+ Gear^.doStep := @doStepBirdyDisappear;
+ CurAmmoGear := nil;
+ isCursorVisible := false;
AfterAttack;
exit
end;
- HHGear := Gear^.Hedgehog^.Gear;
+
HHGear^.Message := HHGear^.Message and (not (gmUp or gmPrecise or gmLeft or gmRight));
if abs(hwRound(HHGear^.Y - Gear^.Y)) > 32 then
begin
@@ -4030,8 +4121,7 @@
iterator^.Radius := iterator^.Radius - 1;
// check front
- isCollision := TestCollisionY(iterator, sy)
- or TestCollisionX(iterator, sx);
+ isCollision := (TestCollisionY(iterator, sy) <> 0) or (TestCollisionX(iterator, sx) <> 0);
if not isCollision then
begin
@@ -4039,8 +4129,8 @@
// the square check won't check more pixels than we want to)
iterator^.Radius := 1 + resetr div 2;
rh := resetr div 4;
- isCollision := TestCollisionYwithXYShift(iterator, 0, -sy * rh, sy, false)
- or TestCollisionXwithXYShift(iterator, ox * rh, 0, sx, false);
+ isCollision := (TestCollisionYwithXYShift(iterator, 0, -sy * rh, sy, false) <> 0)
+ or (TestCollisionXwithXYShift(iterator, ox * rh, 0, sx, false) <> 0);
end;
iterator^.Radius := resetr;
@@ -4734,7 +4824,7 @@
if (tmp^.Kind = gtHedgehog) or (tmp^.Kind = gtMine) or (tmp^.Kind = gtExplosives) then
begin
//tmp^.State:= tmp^.State or gstFlatened;
- if not tmp^.Invulnerable then
+ if (tmp^.Hedgehog^.Effects[heInvulnerable] = 0) then
ApplyDamage(tmp, CurrentHedgehog, tmp^.Health div 3, dsUnknown);
//DrawTunnel(tmp^.X, tmp^.Y - _1, _0, _0_5, cHHRadius * 6, cHHRadius * 3);
tmp2:= AddGear(hwRound(tmp^.X), hwRound(tmp^.Y), gtHammerHit, 0, _0, _0, 0);
@@ -5075,7 +5165,7 @@
while t <> nil do
begin
if (t^.Kind = gtHedgehog) and (t^.Hedgehog^.Team^.Clan = HH^.Team^.Clan) then
- t^.Invulnerable:= true;
+ t^.Hedgehog^.Effects[heInvulnerable]:= 1;
t:= t^.NextGear;
end;
end;
@@ -5629,9 +5719,9 @@
begin
tdX:= HHGear^.X-Gear^.X;
dir:= hwSign(tdX);
- if not TestCollisionX(Gear, dir) then
+ if TestCollisionX(Gear, dir) = 0 then
Gear^.X:= Gear^.X + signAs(_1,tdX);
- if TestCollisionXwithXYShift(Gear, signAs(_10,tdX), 0, dir) then
+ if TestCollisionXwithXYShift(Gear, signAs(_10,tdX), 0, dir) <> 0 then
begin
Gear^.dX:= SignAs(_0_15, tdX);
Gear^.dY:= -_0_3;
@@ -5670,9 +5760,9 @@
begin
(*ox:= 0; oy:= 0;
if TestCollisionYwithGear(Gear, -1) <> 0 then oy:= -1;
- if TestCollisionXwithGear(Gear, 1) then ox:= 1;
- if TestCollisionXwithGear(Gear, -1) then ox:= -1;
- if TestCollisionYwithGear(Gear, 1) <> 0 then oy:= 1;
+ if TestCollisionXwithGear(Gear, 1) <> 0 then ox:= 1;
+ if TestCollisionXwithGear(Gear, -1) <> 0 then ox:= -1;
+ if TestCollisionYwithGear(Gear, 1) <> 0 then oy:= 1;
if Gear^.Health > 0 then
PlaySound(sndRopeAttach);
@@ -5701,9 +5791,9 @@
end
else if GameTicks and $3F = 0 then
begin
- if (TestCollisionYwithGear(Gear, -1) = 0)
- and (not TestCollisionXwithGear(Gear, 1))
- and (not TestCollisionXwithGear(Gear, -1))
+ if (TestCollisionYwithGear(Gear,-1) = 0)
+ and (TestCollisionXwithGear(Gear, 1) = 0)
+ and (TestCollisionXwithGear(Gear,-1) = 0)
and (TestCollisionYwithGear(Gear, 1) = 0) then Gear^.State:= Gear^.State and (not gstCollision) or gstMoving;
end
end;
--- a/hedgewars/uGearsHandlersRope.pas Sat Dec 14 21:16:20 2013 +0400
+++ b/hedgewars/uGearsHandlersRope.pas Tue Dec 17 00:02:52 2013 +0400
@@ -36,7 +36,7 @@
HHGear := Gear^.Hedgehog^.Gear;
tX:= HHGear^.X;
if WorldWrap(HHGear) and (WorldEdge = weWrap) and
- (TestCollisionXwithGear(HHGear, 1) or TestCollisionXwithGear(HHGear, -1)) then
+ ((TestCollisionXwithGear(HHGear, 1) <> 0) or (TestCollisionXwithGear(HHGear, -1) <> 0)) then
begin
HHGear^.X:= tX;
HHGear^.dX.isNegative:= (hwRound(tX) > leftX+HHGear^.Radius*2)
@@ -62,7 +62,7 @@
HedgehogChAngle(HHGear);
- if TestCollisionXwithGear(HHGear, hwSign(HHGear^.dX)) then
+ if TestCollisionXwithGear(HHGear, hwSign(HHGear^.dX)) <> 0 then
SetLittle(HHGear^.dX);
if HHGear^.dY.isNegative and (TestCollisionYwithGear(HHGear, -1) <> 0) then
@@ -127,7 +127,7 @@
tX:= HHGear^.X;
if WorldWrap(HHGear) and (WorldEdge = weWrap) and
- (TestCollisionXwithGear(HHGear, 1) or TestCollisionXwithGear(HHGear, -1)) then
+ ((TestCollisionXwithGear(HHGear, 1) <> 0) or (TestCollisionXwithGear(HHGear, -1) <> 0)) then
begin
PlaySound(sndRopeRelease);
RopeDeleteMe(Gear, HHGear);
@@ -147,17 +147,17 @@
HHGear^.dX.QWordValue:= HHGear^.dX.QWordValue shl 2;
HHGear^.dY.QWordValue:= HHGear^.dY.QWordValue shl 2;
- if (Gear^.Message and gmLeft <> 0) and (not TestCollisionXwithGear(HHGear, -1)) then
+ if (Gear^.Message and gmLeft <> 0) and (TestCollisionXwithGear(HHGear, -1) = 0) then
HHGear^.dX := HHGear^.dX - _0_0032;
- if (Gear^.Message and gmRight <> 0) and (not TestCollisionXwithGear(HHGear, 1)) then
+ if (Gear^.Message and gmRight <> 0) and (TestCollisionXwithGear(HHGear, 1) = 0) then
HHGear^.dX := HHGear^.dX + _0_0032;
// vector between hedgehog and rope attaching point
ropeDx := HHGear^.X - Gear^.X;
ropeDy := HHGear^.Y - Gear^.Y;
- if TestCollisionYwithGear(HHGear, 1) = 0 then
+ if TestCollisionYwithXYShift(HHGear, 0, 1, 1) = 0 then
begin
// depending on the rope vector we know which X-side to check for collision
@@ -168,12 +168,12 @@
cd:= 1;
// apply gravity if there is no obstacle
- if not TestCollisionXwithGear(HHGear, cd) then
+ if TestCollisionXwithXYShift(HHGear, _2*cd, 0, cd, true) = 0 then
HHGear^.dY := HHGear^.dY + cGravity * 16;
if (GameFlags and gfMoreWind) <> 0 then
// apply wind if there's no obstacle
- if not TestCollisionXwithGear(HHGear, hwSign(cWindSpeed)) then
+ if TestCollisionXwithGear(HHGear, hwSign(cWindSpeed)) = 0 then
HHGear^.dX := HHGear^.dX + cWindSpeed * 16 / HHGear^.Density;
end;
@@ -193,13 +193,13 @@
ty := HHGear^.Y;
if ((Gear^.Message and gmDown) <> 0) and (Gear^.Elasticity < Gear^.Friction) then
- if not (TestCollisionXwithGear(HHGear, hwSign(ropeDx))
- or ((ropeDy.QWordValue <> 0) and TestCollisionYwithXYShift(HHGear, 0, 1, hwSign(ropeDy)))) then
+ if not ((TestCollisionXwithXYShift(HHGear, _2*hwSign(ropeDx), 0, hwSign(ropeDx), true) <> 0)
+ or ((ropeDy.QWordValue <> 0) and (TestCollisionYwithXYShift(HHGear, 0, 1*hwSign(ropeDy), hwSign(ropeDy)) <> 0))) then
Gear^.Elasticity := Gear^.Elasticity + _1_2;
if ((Gear^.Message and gmUp) <> 0) and (Gear^.Elasticity > _30) then
- if not (TestCollisionXwithGear(HHGear, -hwSign(ropeDx))
- or ((ropeDy.QWordValue <> 0) and TestCollisionYwithXYShift(HHGear, 0, 1, -hwSign(ropeDy)))) then
+ if not ((TestCollisionXwithXYShift(HHGear, -_2*hwSign(ropeDx), 0, -hwSign(ropeDx), true) <> 0)
+ or ((ropeDy.QWordValue <> 0) and (TestCollisionYwithXYShift(HHGear, 0, 1*-hwSign(ropeDy), -hwSign(ropeDy)) <> 0))) then
Gear^.Elasticity := Gear^.Elasticity - _1_2;
HHGear^.X := Gear^.X + mdX * Gear^.Elasticity;
@@ -315,12 +315,12 @@
end;
haveCollision := false;
- if TestCollisionXwithGear(HHGear, hwSign(HHGear^.dX)) then
+ if TestCollisionXwithXYShift(HHGear, _2*hwSign(HHGear^.dX), 0, hwSign(HHGear^.dX), true) <> 0 then
begin
HHGear^.dX := -_0_6 * HHGear^.dX;
haveCollision := true
end;
- if TestCollisionYwithXYShift(HHGear, 0, 1, hwSign(HHGear^.dY)) then
+ if TestCollisionYwithXYShift(HHGear, 0, 1*hwSign(HHGear^.dY), hwSign(HHGear^.dY)) <> 0 then
begin
HHGear^.dY := -_0_6 * HHGear^.dY;
haveCollision := true
@@ -418,7 +418,7 @@
if (HHGear^.State and gstMoving) <> 0 then
begin
- if TestCollisionXwithGear(HHGear, hwSign(HHGear^.dX)) then
+ if TestCollisionXwithGear(HHGear, hwSign(HHGear^.dX)) <> 0 then
SetLittle(HHGear^.dX);
if HHGear^.dY.isNegative and (TestCollisionYwithGear(HHGear, -1) <> 0) then
HHGear^.dY := _0;
--- a/hedgewars/uGearsHedgehog.pas Sat Dec 14 21:16:20 2013 +0400
+++ b/hedgewars/uGearsHedgehog.pas Tue Dec 17 00:02:52 2013 +0400
@@ -20,7 +20,7 @@
unit uGearsHedgehog;
interface
-uses uTypes;
+uses uTypes, uGearsHandlersMess;
procedure doStepHedgehog(Gear: PGear);
procedure AfterAttack;
@@ -65,7 +65,7 @@
HHGear^.Message:= HHGear^.Message and (not gmSlot);
prevAmmo:= CurAmmoType;
ammoidx:= 0;
- if ((HHGear^.State and (gstAttacking or gstAttacked)) <> 0)
+ if (((HHGear^.State and (gstAttacking or gstAttacked)) <> 0) and (GameFlags and gfInfAttack = 0))
or ((HHGear^.State and gstHHDriven) = 0) then
exit;
ChangeAmmo:= true;
@@ -140,6 +140,7 @@
weap: TAmmoType;
Hedgehog: PHedgehog;
s: boolean;
+ prevState, newState: LongWord;
begin
s:= false;
@@ -155,12 +156,18 @@
HHGear^.Message:= HHGear^.Message and (not gmWeapon);
+prevState:= HHGear^.State;
+newState:= prevState;
with Hedgehog^ do
while (CurAmmoType <> weap) and (t >= 0) do
begin
s:= ChangeAmmo(HHGear);
+ if HHGear^.State <> prevState then // so we can keep gstAttacked out of consideration when looping
+ newState:= HHGear^.State;
+ HHGear^.State:= prevState;
dec(t)
end;
+HHGear^.State:= newState;
if s then
ApplyAmmoChanges(HHGear^.Hedgehog^)
@@ -346,6 +353,10 @@
amNapalm: newGear:= AddGear(CurWeapon^.Pos, 0, gtAirAttack, 2, _0, _0, 0);
amBlowTorch: newGear:= AddGear(hwRound(lx), hwRound(ly), gtBlowTorch, 0, SignAs(_0_5, dX), _0, 0);
amGirder: newGear:= AddGear(0, 0, gtGirder, CurWeapon^.Pos, _0, _0, 0);
+ amRubber: begin
+ newGear:= AddGear(0, 0, gtGirder, CurWeapon^.Pos, _0, _0, 0);
+ newGear^.AmmoType:= amRubber
+ end;
amTeleport: newGear:= AddGear(CurWeapon^.Pos, 0, gtTeleport, 0, _0, _0, 0);
amSwitch: newGear:= AddGear(hwRound(lx), hwRound(ly), gtSwitcher, 0, _0, _0, 0);
amMortar: begin
@@ -377,7 +388,7 @@
PlaySound(sndHellishImpact4);
cDamageModifier:= _1_5
end;
- amInvulnerable: Invulnerable:= true;
+ amInvulnerable: Effects[heInvulnerable]:= 1;
amExtraTime: begin
PlaySound(sndSwitchHog);
TurnTimeLeft:= TurnTimeLeft + 30000
@@ -437,7 +448,7 @@
amFlamethrower, amLandGun,
amResurrector, //amStructure,
amTardis, amPiano,
- amIceGun: CurAmmoGear:= newGear;
+ amIceGun, amRubber: CurAmmoGear:= newGear;
end;
if ((CurAmmoType = amMine) or (CurAmmoType = amSMine)) and (GameFlags and gfInfAttack <> 0) then
@@ -760,13 +771,13 @@
Gear^.Message:= Gear^.Message and (not gmLJump);
DeleteCI(Gear);
if TestCollisionYwithGear(Gear, -1) = 0 then
- if not TestCollisionXwithXYShift(Gear, _0, -2, hwSign(Gear^.dX)) then
+ if TestCollisionXwithXYShift(Gear, _0, -2, hwSign(Gear^.dX)) = 0 then
Gear^.Y:= Gear^.Y - _2
else
- if not TestCollisionXwithXYShift(Gear, _0, -1, hwSign(Gear^.dX)) then
+ if TestCollisionXwithXYShift(Gear, _0, -1, hwSign(Gear^.dX)) = 0 then
Gear^.Y:= Gear^.Y - _1;
- if not (TestCollisionXwithGear(Gear, hwSign(Gear^.dX))
- or (TestCollisionYwithGear(Gear, -1) <> 0)) then
+ if (TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) = 0) and
+ (TestCollisionYwithGear(Gear, -1) = 0) then
begin
Gear^.dY:= -_0_15;
if not cArtillery then
@@ -854,11 +865,21 @@
Gear^.State:= Gear^.State and (not gstMoving);
exit
end;
-isFalling:= (Gear^.dY.isNegative) or (not TestCollisionYKick(Gear, 1));
+isFalling:= (Gear^.dY.isNegative) or (TestCollisionYKick(Gear, 1) = 0);
if isFalling then
begin
- if (Gear^.dY.isNegative) and TestCollisionYKick(Gear, -1) then
- Gear^.dY:= _0;
+ land:= TestCollisionYKick(Gear, -1);
+ if (Gear^.dY.isNegative) and (land <> 0) then
+ begin
+ if land and lfBouncy <> 0 then
+ begin
+ doStepFallingGear(Gear);
+ Gear^.dX:= Gear^.dX * _0_8
+ end;
+ if (land and lfBouncy = 0) or (Gear^.State and gstCollision <> 0) then
+ Gear^.dY:= _0;
+ Gear^.State:= Gear^.State and not gstCollision
+ end;
Gear^.State:= Gear^.State or gstMoving;
if (CurrentHedgehog^.Gear = Gear) and (CurrentHedgehog^.Gear^.State and gstHHDriven <> 0) and
(not CurrentTeam^.ExtDriven) and (hwSqr(Gear^.dX) + hwSqr(Gear^.dY) > _0_003) then
@@ -883,19 +904,36 @@
else
begin
land:= TestCollisionYwithGear(Gear, 1);
- if ((Gear^.dX.QWordValue + Gear^.dY.QWordValue) < _0_55.QWordValue) and ((land and lfIce) = 0)
+ if ((Gear^.dX.QWordValue + Gear^.dY.QWordValue) < _0_55.QWordValue) and ((land and lfIce) = 0)
+ and ((land and lfBouncy = 0) or (Gear^.State and gstCollision <> 0))
and ((Gear^.State and gstHHJumping) <> 0) then
SetLittle(Gear^.dX);
if not Gear^.dY.isNegative then
begin
+ if land and lfBouncy <> 0 then
+ begin
+ doStepFallingGear(Gear);
+ // hogs for some reason have very low friction. slippery little buggers
+ Gear^.dX:= Gear^.dX * _0_8
+ end;
+
CheckHHDamage(Gear);
- if ((Gear^.State and gstHHHJump) <> 0) and (not cArtillery)
- and (Gear^.dX.QWordValue < _0_02.QWordValue) then
- Gear^.dX.isNegative:= not Gear^.dX.isNegative; // landing after high jump
- Gear^.State:= Gear^.State and (not (gstHHJumping or gstHHHJump));
- Gear^.dY:= _0;
+ if (land and lfBouncy = 0) or (Gear^.State and gstCollision <> 0) then
+ begin
+ if ((Gear^.State and gstHHHJump) <> 0) and (not cArtillery)
+ and (Gear^.dX.QWordValue < _0_02.QWordValue) then
+ begin
+ if land and lfBouncy <> 0 then
+ Gear^.dY:= _0;
+ Gear^.dX.isNegative:= not Gear^.dX.isNegative // landing after high jump
+ end;
+ Gear^.State:= Gear^.State and (not (gstHHJumping or gstHHHJump));
+ if (land and lfBouncy = 0) or (Gear^.dX.QWordValue < _0_02.QWordValue) then
+ Gear^.dY:= _0
+ end;
+ Gear^.State:= Gear^.State and not gstCollision
end
else
Gear^.dY:= Gear^.dY + cGravity;
@@ -921,43 +959,43 @@
end;
if (Gear^.State and gstMoving) <> 0 then
- if TestCollisionXKick(Gear, hwSign(Gear^.dX)) then
+ if TestCollisionXKick(Gear, hwSign(Gear^.dX)) <> 0 then
if not isFalling then
if hwAbs(Gear^.dX) > _0_01 then
- if not (TestCollisionXwithXYShift(Gear, int2hwFloat(hwSign(Gear^.dX)) - Gear^.dX, -1, hwSign(Gear^.dX)) or
- (TestCollisionYwithXYShift(Gear, hwSign(Gear^.dX) - hwRound(Gear^.dX), -1, -1))) then
+ if (TestCollisionXwithXYShift(Gear, int2hwFloat(hwSign(Gear^.dX)) - Gear^.dX, -1, hwSign(Gear^.dX)) = 0) and
+ (TestCollisionYwithXYShift(Gear, hwSign(Gear^.dX) - hwRound(Gear^.dX), -1, -1) = 0) then
begin
Gear^.X:= Gear^.X + Gear^.dX;
Gear^.dX:= Gear^.dX * _0_96;
Gear^.Y:= Gear^.Y - _1
end
else
- if not (TestCollisionXwithXYShift(Gear, int2hwFloat(hwSign(Gear^.dX)) - Gear^.dX, -2, hwSign(Gear^.dX)) or
- (TestCollisionYwithXYShift(Gear, hwSign(Gear^.dX) - hwRound(Gear^.dX), -1, -1))) then
+ if (TestCollisionXwithXYShift(Gear, int2hwFloat(hwSign(Gear^.dX)) - Gear^.dX, -2, hwSign(Gear^.dX)) = 0) and
+ (TestCollisionYwithXYShift(Gear, hwSign(Gear^.dX) - hwRound(Gear^.dX), -1, -1) = 0) then
begin
Gear^.X:= Gear^.X + Gear^.dX;
Gear^.dX:= Gear^.dX * _0_93;
Gear^.Y:= Gear^.Y - _2
end
else
- if not (TestCollisionXwithXYShift(Gear, int2hwFloat(hwSign(Gear^.dX)) - Gear^.dX, -3, hwSign(Gear^.dX)) or
- (TestCollisionYwithXYShift(Gear, hwSign(Gear^.dX) - hwRound(Gear^.dX), -1, -1))) then
+ if (TestCollisionXwithXYShift(Gear, int2hwFloat(hwSign(Gear^.dX)) - Gear^.dX, -3, hwSign(Gear^.dX)) = 0) and
+ (TestCollisionYwithXYShift(Gear, hwSign(Gear^.dX) - hwRound(Gear^.dX), -1, -1) = 0) then
begin
Gear^.X:= Gear^.X + Gear^.dX;
Gear^.dX:= Gear^.dX * _0_9 ;
Gear^.Y:= Gear^.Y - _3
end
else
- if not (TestCollisionXwithXYShift(Gear, int2hwFloat(hwSign(Gear^.dX)) - Gear^.dX, -4, hwSign(Gear^.dX)) or
- (TestCollisionYwithXYShift(Gear, hwSign(Gear^.dX) - hwRound(Gear^.dX), -1, -1))) then
+ if (TestCollisionXwithXYShift(Gear, int2hwFloat(hwSign(Gear^.dX)) - Gear^.dX, -4, hwSign(Gear^.dX)) = 0) and
+ (TestCollisionYwithXYShift(Gear, hwSign(Gear^.dX) - hwRound(Gear^.dX), -1, -1) = 0) then
begin
Gear^.X:= Gear^.X + Gear^.dX;
Gear^.dX:= Gear^.dX * _0_87;
Gear^.Y:= Gear^.Y - _4
end
else
- if not (TestCollisionXwithXYShift(Gear, int2hwFloat(hwSign(Gear^.dX)) - Gear^.dX, -5, hwSign(Gear^.dX)) or
- (TestCollisionYwithXYShift(Gear, hwSign(Gear^.dX) - hwRound(Gear^.dX), -1, -1))) then
+ if (TestCollisionXwithXYShift(Gear, int2hwFloat(hwSign(Gear^.dX)) - Gear^.dX, -5, hwSign(Gear^.dX)) = 0) and
+ (TestCollisionYwithXYShift(Gear, hwSign(Gear^.dX) - hwRound(Gear^.dX), -1, -1) = 0) then
begin
Gear^.X:= Gear^.X + Gear^.dX;
Gear^.dX:= Gear^.dX * _0_84;
@@ -1008,12 +1046,19 @@
// ARTILLERY but not being moved by explosions
Gear^.X:= Gear^.X + Gear^.dX;
Gear^.Y:= Gear^.Y + Gear^.dY;
- if (not Gear^.dY.isNegative) and (not TestCollisionYKick(Gear, 1))
- and TestCollisionYwithXYShift(Gear, 0, 1, 1) then
+ if (not Gear^.dY.isNegative) and (TestCollisionYKick(Gear, 1) = 0) then
begin
- CheckHHDamage(Gear);
- Gear^.dY:= _0;
- Gear^.Y:= Gear^.Y + _1
+ land:= TestCollisionYwithXYShift(Gear, 0, 1, 1);
+ if land and lfBouncy <> 0 then
+ doStepFallingGear(Gear);
+
+ if (land <> 0) and ((land and lfBouncy = 0) or (Gear^.State and gstCollision <> 0)) then
+ begin
+ CheckHHDamage(Gear);
+ Gear^.dY:= _0;
+ Gear^.Y:= Gear^.Y + _1
+ end;
+ Gear^.State:= Gear^.State and not gstCollision
end;
CheckGearDrowning(Gear);
@@ -1157,7 +1202,7 @@
HHGear^.Message:= HHGear^.Message and (not (gmLJump or gmHJump));
- if (not cArtillery) and wasJumping and TestCollisionXwithGear(HHGear, hwSign(HHGear^.dX)) then
+ if (not cArtillery) and wasJumping and (TestCollisionXwithGear(HHGear, hwSign(HHGear^.dX)) <> 0) then
SetLittle(HHGear^.dX);
if Hedgehog^.Gear <> nil then
@@ -1301,7 +1346,7 @@
if (WorldEdge <> weBounce) and (Gear = CurrentHedgehog^.Gear) and
(CurAmmoGear <> nil) and (CurAmmoGear^.Kind =gtRope) and (CurAmmoGear^.Elasticity <> _0) then
CurAmmoGear^.PortalCounter:= 1;
- if (WorldEdge = weWrap) and (TestCollisionXwithGear(Gear, 1) or TestCollisionXwithGear(Gear, -1)) then
+ if (WorldEdge = weWrap) and ((TestCollisionXwithGear(Gear, 1) <> 0) or (TestCollisionXwithGear(Gear, -1) <> 0)) then
begin
Gear^.X:= tX;
Gear^.dX.isNegative:= (hwRound(tX) > leftX+Gear^.Radius*2)
--- a/hedgewars/uGearsList.pas Sat Dec 14 21:16:20 2013 +0400
+++ b/hedgewars/uGearsList.pas Tue Dec 17 00:02:52 2013 +0400
@@ -236,16 +236,20 @@
gear^.Hedgehog^.Effects[heResurrectable] := 1;
end;
gtShell: begin
+ gear^.Elasticity:= _0_8;
+ gear^.Friction:= _0_8;
gear^.Radius:= 4;
gear^.Density:= _1;
+ gear^.AdvBounce:= 1;
end;
gtSnowball: begin
gear^.ImpactSound:= sndMudballImpact;
gear^.nImpactSounds:= 1;
gear^.Radius:= 4;
- gear^.Elasticity:= _1;
- gear^.Friction:= _1;
gear^.Density:= _0_5;
+ gear^.AdvBounce:= 1;
+ gear^.Elasticity:= _0_8;
+ gear^.Friction:= _0_8;
end;
gtFlake: begin
@@ -327,9 +331,13 @@
gear^.Elasticity:= _0_55;
gear^.Friction:= _0_995;
gear^.Density:= _1_6;
+ gear^.AdvBounce:= 1;
if gear^.Timer = 0 then gear^.Timer:= 500;
end;
gtKnife: begin
+ gear^.AdvBounce:= 1;
+ gear^.Elasticity:= _0_8;
+ gear^.Friction:= _0_8;
gear^.Density:= _4;
gear^.Radius:= 7
end;
@@ -341,6 +349,7 @@
if gear^.Timer = 0 then gear^.Timer:= 500
end;
gtExplosives: begin
+ gear^.AdvBounce:= 1;
gear^.ImpactSound:= sndGrenadeImpact;
gear^.nImpactSounds:= 1;
gear^.Radius:= 16;
@@ -366,6 +375,9 @@
if gear^.Timer = 0 then gear^.Timer:= 5000;
end;
gtCluster: begin
+ gear^.AdvBounce:= 1;
+ gear^.Elasticity:= _0_8;
+ gear^.Friction:= _0_8;
gear^.Radius:= 2;
gear^.Density:= _1_5;
gear^.RenderTimer:= true
@@ -409,6 +421,7 @@
gear^.Z:= cCurrHHZ+1;
end;
gtMortar: begin
+ gear^.AdvBounce:= 1;
gear^.Radius:= 4;
gear^.Elasticity:= _0_2;
gear^.Friction:= _0_08;
@@ -443,6 +456,9 @@
if gear^.Timer = 0 then gear^.Timer:= 5000
end;
gtDrill: begin
+ gear^.AdvBounce:= 1;
+ gear^.Elasticity:= _0_8;
+ gear^.Friction:= _0_8;
if gear^.Timer = 0 then
gear^.Timer:= 5000;
// Tag for drill strike. if 1 then first impact occured already
@@ -484,6 +500,7 @@
gear^.FlightTime := 2;
end;
gtEgg: begin
+ gear^.AdvBounce:= 1;
gear^.Radius:= 4;
gear^.Elasticity:= _0_6;
gear^.Friction:= _0_96;
@@ -534,6 +551,9 @@
gear^.Tag := 47;
end;
gtNapalmBomb: begin
+ gear^.AdvBounce:= 1;
+ gear^.Elasticity:= _0_8;
+ gear^.Friction:= _0_8;
if gear^.Timer = 0 then gear^.Timer:= 1000;
gear^.Radius:= 5;
gear^.Density:= _1_5;
--- a/hedgewars/uGearsRender.pas Sat Dec 14 21:16:20 2013 +0400
+++ b/hedgewars/uGearsRender.pas Tue Dec 17 00:02:52 2013 +0400
@@ -673,6 +673,7 @@
DrawSpriteRotated(sprHandPlane, hx, hy, sign, 0);
defaultPos:= false
end;
+ amRubber,
amGirder: begin
DrawSpriteRotated(sprHandConstruction, hx, hy, sign, aangle);
if WorldEdge = weWrap then
@@ -948,7 +949,7 @@
DrawSprite(sprVampiric, sx - 24, sy - 24, 0);
end;
- if Gear^.Invulnerable then
+ if (Gear^.Hedgehog^.Effects[heInvulnerable] <> 0) then
begin
Tint($FF, $FF, $FF, max($40, round($FF * abs(1 - ((RealTicks div 2 + Gear^.uid * 491) mod 1500) / 750))));
DrawSprite(sprInvulnerable, sx - 24, sy - 24, 0);
--- a/hedgewars/uGearsUtils.pas Sat Dec 14 21:16:20 2013 +0400
+++ b/hedgewars/uGearsUtils.pas Tue Dec 17 00:02:52 2013 +0400
@@ -135,7 +135,7 @@
//AddFileLog('Damage: ' + inttostr(dmg));
if (Mask and EXPLNoDamage) = 0 then
begin
- if not Gear^.Invulnerable then
+ if Gear^.Hedgehog^.Effects[heInvulnerable] = 0 then
ApplyDamage(Gear, AttackingHog, dmg, dsExplosion)
else
Gear^.State:= Gear^.State or gstWinner;
@@ -148,12 +148,12 @@
Gear^.State:= (Gear^.State or gstMoving) and (not gstLoser);
if Gear^.Kind = gtKnife then Gear^.State:= Gear^.State and (not gstCollision);
- if not Gear^.Invulnerable then
+ if Gear^.Hedgehog^.Effects[heInvulnerable] = 0 then
Gear^.State:= (Gear^.State or gstMoving) and (not gstWinner);
Gear^.Active:= true;
if Gear^.Kind <> gtFlame then FollowGear:= Gear
end;
- if ((Mask and EXPLPoisoned) <> 0) and (Gear^.Kind = gtHedgehog) and (not Gear^.Invulnerable) and ((Gear^.State and gstHHDeath) = 0) then
+ if ((Mask and EXPLPoisoned) <> 0) and (Gear^.Kind = gtHedgehog) and (Gear^.Hedgehog^.Effects[heInvulnerable] = 0) and (Gear^.State and gstHHDeath = 0) then
Gear^.Hedgehog^.Effects[hePoisoned] := 1;
end;
@@ -249,9 +249,8 @@
end;
end
end;
- if ((GameFlags and gfKarma) <> 0) and
- ((GameFlags and gfInvulnerable) = 0)
- and (not CurrentHedgehog^.Gear^.Invulnerable) then
+ if (GameFlags and gfKarma <> 0) and (GameFlags and gfInvulnerable = 0) and
+ (CurrentHedgehog^.Effects[heInvulnerable] = 0) then
begin // this cannot just use Damage or it interrupts shotgun and gets you called stupid
inc(CurrentHedgehog^.Gear^.Karma, tmpDmg);
CurrentHedgehog^.Gear^.LastDamage := CurrentHedgehog;
@@ -322,7 +321,7 @@
particle^.dX := particle^.dX + (Gear^.dX.QWordValue / 21474836480);
end;
- if (Gear^.Invulnerable) then
+ if ((Gear^.Hedgehog^.Effects[heInvulnerable] <> 0)) then
exit;
//if _0_6 < Gear^.dY then
@@ -705,7 +704,7 @@
procedure CheckCollision(Gear: PGear); inline;
begin
- if TestCollisionXwithGear(Gear, hwSign(Gear^.dX))
+ if (TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) <> 0)
or (TestCollisionYwithGear(Gear, hwSign(Gear^.dY)) <> 0) then
Gear^.State := Gear^.State or gstCollision
else
@@ -714,8 +713,8 @@
procedure CheckCollisionWithLand(Gear: PGear); inline;
begin
- if TestCollisionX(Gear, hwSign(Gear^.dX))
- or TestCollisionY(Gear, hwSign(Gear^.dY)) then
+ if (TestCollisionX(Gear, hwSign(Gear^.dX)) <> 0)
+ or (TestCollisionY(Gear, hwSign(Gear^.dY)) <> 0) then
Gear^.State := Gear^.State or gstCollision
else
Gear^.State := Gear^.State and (not gstCollision)
@@ -723,25 +722,25 @@
function MakeHedgehogsStep(Gear: PGear) : boolean;
begin
- if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then if (TestCollisionYwithGear(Gear, -1) = 0) then
+ if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) <> 0 then if (TestCollisionYwithGear(Gear, -1) = 0) then
begin
Gear^.Y:= Gear^.Y - _1;
- if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then if (TestCollisionYwithGear(Gear, -1) = 0) then
+ if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) <> 0 then if (TestCollisionYwithGear(Gear, -1) = 0) then
begin
Gear^.Y:= Gear^.Y - _1;
- if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then if (TestCollisionYwithGear(Gear, -1) = 0) then
+ if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) <> 0 then if (TestCollisionYwithGear(Gear, -1) = 0) then
begin
Gear^.Y:= Gear^.Y - _1;
- if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then if (TestCollisionYwithGear(Gear, -1) = 0) then
+ if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) <> 0 then if (TestCollisionYwithGear(Gear, -1) = 0) then
begin
Gear^.Y:= Gear^.Y - _1;
- if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then if (TestCollisionYwithGear(Gear, -1) = 0) then
+ if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) <> 0 then if (TestCollisionYwithGear(Gear, -1) = 0) then
begin
Gear^.Y:= Gear^.Y - _1;
- if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then if (TestCollisionYwithGear(Gear, -1) = 0) then
+ if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) <> 0 then if (TestCollisionYwithGear(Gear, -1) = 0) then
begin
Gear^.Y:= Gear^.Y - _1;
- if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then
+ if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) <> 0 then
Gear^.Y:= Gear^.Y + _6
end else Gear^.Y:= Gear^.Y + _5 else
end else Gear^.Y:= Gear^.Y + _4 else
@@ -750,7 +749,7 @@
end else Gear^.Y:= Gear^.Y + _1
end;
- if not TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then
+ if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) = 0 then
begin
Gear^.X:= Gear^.X + SignAs(_1, Gear^.dX);
MakeHedgehogsStep:= true
@@ -823,7 +822,7 @@
end;
if dmg > 0 then
begin
- if (not t^.Invulnerable) then
+ if t^.Hedgehog^.Effects[heInvulnerable] = 0 then
ApplyDamage(t, Gear^.Hedgehog, dmg, dsBullet)
else
Gear^.State:= Gear^.State or gstWinner;
@@ -919,7 +918,7 @@
Ammo^.Timer:= 0;
exit;
end;
- if (not Gear^.Invulnerable) then
+ if Gear^.Hedgehog^.Effects[heInvulnerable] = 0 then
begin
if (Ammo^.Kind = gtKnife) and (tmpDmg > 0) then
for j:= 1 to max(1,min(3,tmpDmg div 5)) do
@@ -969,16 +968,16 @@
Gear^.State:= Gear^.State or gstMoving;
if Gear^.Kind = gtKnife then Gear^.State:= Gear^.State and (not gstCollision);
// move the gear upwards a bit to throw it over tiny obstacles at start
- if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then
+ if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) <> 0 then
begin
- if not (TestCollisionXwithXYShift(Gear, _0, -3, hwSign(Gear^.dX))
- or (TestCollisionYwithGear(Gear, -1) <> 0)) then
+ if (TestCollisionXwithXYShift(Gear, _0, -3, hwSign(Gear^.dX)) = 0) and
+ (TestCollisionYwithGear(Gear, -1) = 0) then
Gear^.Y:= Gear^.Y - _1;
- if not (TestCollisionXwithXYShift(Gear, _0, -2, hwSign(Gear^.dX))
- or (TestCollisionYwithGear(Gear, -1) <> 0)) then
+ if (TestCollisionXwithXYShift(Gear, _0, -2, hwSign(Gear^.dX)) = 0) and
+ (TestCollisionYwithGear(Gear, -1) = 0) then
Gear^.Y:= Gear^.Y - _1;
- if not (TestCollisionXwithXYShift(Gear, _0, -1, hwSign(Gear^.dX))
- or (TestCollisionYwithGear(Gear, -1) <> 0)) then
+ if (TestCollisionXwithXYShift(Gear, _0, -1, hwSign(Gear^.dX)) = 0) and
+ (TestCollisionYwithGear(Gear, -1) = 0) then
Gear^.Y:= Gear^.Y - _1;
end
end;
--- a/hedgewars/uInputHandler.pas Sat Dec 14 21:16:20 2013 +0400
+++ b/hedgewars/uInputHandler.pas Tue Dec 17 00:02:52 2013 +0400
@@ -137,7 +137,9 @@
Trusted:= (CurrentTeam <> nil)
and (not CurrentTeam^.ExtDriven)
and (CurrentHedgehog^.BotLevel = 0);
-
+// REVIEW OR FIXME
+// ctrl/cmd + q to close engine and frontend - this seems like a bad idea, since we let people set arbitrary binds, and don't warn them of this.
+// There's no confirmation at all
// ctrl/cmd + q to close engine and frontend
if(KeyDown and (code = SDLK_q)) then
begin
@@ -176,18 +178,30 @@
if KeyDown then
begin
+ if CurrentBinds[code] = 'switch' then
+ LocalMessage:= LocalMessage or gmSwitch
+ else if CurrentBinds[code] = '+precise' then
+ LocalMessage:= LocalMessage or gmPrecise;
+
ParseCommand(CurrentBinds[code], Trusted);
if (CurrentTeam <> nil) and (not CurrentTeam^.ExtDriven) and (ReadyTimeLeft > 1) then
ParseCommand('gencmd R', true)
end
else if (CurrentBinds[code][1] = '+') then
begin
+ if CurrentBinds[code] = '+precise' then
+ LocalMessage:= LocalMessage and not(gmPrecise);
s:= CurrentBinds[code];
s[1]:= '-';
ParseCommand(s, Trusted);
if (CurrentTeam <> nil) and (not CurrentTeam^.ExtDriven) and (ReadyTimeLeft > 1) then
ParseCommand('gencmd R', true)
- end;
+ end
+ else
+ begin
+ if CurrentBinds[code] = 'switch' then
+ LocalMessage:= LocalMessage and not(gmSwitch)
+ end
end
end;
--- a/hedgewars/uLandGraphics.pas Sat Dec 14 21:16:20 2013 +0400
+++ b/hedgewars/uLandGraphics.pas Tue Dec 17 00:02:52 2013 +0400
@@ -47,7 +47,8 @@
procedure DrawThickLine(X1, Y1, X2, Y2, radius: LongInt; color: Longword);
procedure DumpLandToLog(x, y, r: LongInt);
procedure DrawIceBreak(x, y, iceRadius, iceHeight: Longint);
-function TryPlaceOnLand(cpX, cpY: LongInt; Obj: TSprite; Frame: LongInt; doPlace: boolean; indestructible: boolean): boolean;
+function TryPlaceOnLand(cpX, cpY: LongInt; Obj: TSprite; Frame: LongInt; doPlace, indestructible: boolean): boolean; inline;
+function TryPlaceOnLand(cpX, cpY: LongInt; Obj: TSprite; Frame: LongInt; doPlace, indestructible: boolean; LandFlags: Word): boolean;
implementation
uses SDLh, uLandTexture, uVariables, uUtils, uDebug;
@@ -585,7 +586,12 @@
UpdateLandTexture(tx, ddx, ty, ddy, false)
end;
-function TryPlaceOnLand(cpX, cpY: LongInt; Obj: TSprite; Frame: LongInt; doPlace: boolean; indestructible: boolean): boolean;
+function TryPlaceOnLand(cpX, cpY: LongInt; Obj: TSprite; Frame: LongInt; doPlace, indestructible: boolean): boolean; inline;
+begin
+TryPlaceOnLand:= TryPlaceOnLand(cpX, cpY, Obj, Frame, doPlace, indestructible, 0);
+end;
+
+function TryPlaceOnLand(cpX, cpY: LongInt; Obj: TSprite; Frame: LongInt; doPlace, indestructible: boolean; LandFlags: Word): boolean;
var X, Y, bpp, h, w, row, col, gx, gy, numFramesFirstCol: LongInt;
p: PByteArray;
Image: PSDL_Surface;
@@ -650,15 +656,12 @@
gY:= (cpY + y) div 2;
end;
if indestructible then
- Land[cpY + y, cpX + x]:= lfIndestructible
+ Land[cpY + y, cpX + x]:= lfIndestructible or LandFlags
else if (LandPixels[gY, gX] and AMask) shr AShift = 255 then // This test assumes lfBasic and lfObject differ only graphically
- Land[cpY + y, cpX + x]:= lfBasic
+ Land[cpY + y, cpX + x]:= lfBasic or LandFlags
else
- Land[cpY + y, cpX + x]:= lfObject;
- // For testing only. Intent is to flag this on objects with masks, or use it for an ice ray gun
- if (Theme = 'Snow') or (Theme = 'Christmas') then
- Land[cpY + y, cpX + x]:= Land[cpY + y, cpX + x] or lfIce;
- LandPixels[gY, gX]:= PLongword(@(p^[x * 4]))^
+ Land[cpY + y, cpX + x]:= lfObject or LandFlags;
+ LandPixels[gY, gX]:= PLongword(@(p^[x * 4]))^
end;
p:= @(p^[Image^.pitch]);
end;
--- a/hedgewars/uLandObjects.pas Sat Dec 14 21:16:20 2013 +0400
+++ b/hedgewars/uLandObjects.pas Tue Dec 17 00:02:52 2013 +0400
@@ -26,7 +26,7 @@
procedure FreeLandObjects();
procedure LoadThemeConfig;
procedure BlitImageAndGenerateCollisionInfo(cpX, cpY, Width: Longword; Image: PSDL_Surface); inline;
-procedure BlitImageAndGenerateCollisionInfo(cpX, cpY, Width: Longword; Image: PSDL_Surface; extraFlags: Word);
+procedure BlitImageAndGenerateCollisionInfo(cpX, cpY, Width: Longword; Image: PSDL_Surface; LandFlags: Word);
procedure BlitImageUsingMask(cpX, cpY: Longword; Image, Mask: PSDL_Surface);
procedure AddOnLandObjects(Surface: PSDL_Surface);
procedure SetLand(var LandWord: Word; Pixel: LongWord); inline;
@@ -95,7 +95,7 @@
BlitImageAndGenerateCollisionInfo(cpX, cpY, Width, Image, 0);
end;
-procedure BlitImageAndGenerateCollisionInfo(cpX, cpY, Width: Longword; Image: PSDL_Surface; extraFlags: Word);
+procedure BlitImageAndGenerateCollisionInfo(cpX, cpY, Width: Longword; Image: PSDL_Surface; LandFlags: Word);
var p: PLongwordArray;
x, y: Longword;
bpp: LongInt;
@@ -128,10 +128,7 @@
LandPixels[(cpY + y) div 2, (cpX + x) div 2]:= p^[x];
if (Land[cpY + y, cpX + x] <= lfAllObjMask) and ((p^[x] and AMask) <> 0) then
- begin
- Land[cpY + y, cpX + x]:= lfObject;
- Land[cpY + y, cpX + x]:= Land[cpY + y, cpX + x] or extraFlags
- end;
+ Land[cpY + y, cpX + x]:= lfObject or LandFlags
end;
p:= @(p^[Image^.pitch shr 2])
end;
@@ -280,8 +277,7 @@
rr.x:= x1;
while rr.x < x2 do
begin
- // For testing only. Intent is to flag this on objects with masks, or use it for an ice ray gun
- if (Theme = 'Snow') or (Theme = 'Christmas') then
+ if cIce then
BlitImageAndGenerateCollisionInfo(rr.x, y, min(x2 - rr.x, tmpsurf^.w), tmpsurf, lfIce)
else
BlitImageAndGenerateCollisionInfo(rr.x, y, min(x2 - rr.x, tmpsurf^.w), tmpsurf);
@@ -500,7 +496,7 @@
s:= cPathz[ptCurrTheme] + '/' + cThemeCFGFilename;
WriteLnToConsole('Reading objects info...');
f:= pfsOpenRead(s);
-TryDo(f <> nil, 'Bad data or cannot access file ' + cThemeCFGFilename, true);
+TryDo(f <> nil, 'Bad data or cannot access file ' + s, true);
ThemeObjects.Count:= 0;
SprayObjects.Count:= 0;
@@ -710,6 +706,10 @@
cFlattenFlakes:= true
else if key = 'flatten-clouds' then
cFlattenClouds:= true
+ else if key = 'ice' then
+ cIce:= true
+ else if key = 'snow' then
+ cSnow:= true
else if key = 'sd-water-top' then
begin
i:= Pos(',', s);
--- a/hedgewars/uRender.pas Sat Dec 14 21:16:20 2013 +0400
+++ b/hedgewars/uRender.pas Tue Dec 17 00:02:52 2013 +0400
@@ -335,6 +335,9 @@
if (X + SpritesData[Sprite].Width > RightX) then
r.w:= RightX - X + 1;
+if (r.h < r.y) or (r.w < r.x) then
+ exit;
+
dec(r.h, r.y);
dec(r.w, r.x);
--- a/hedgewars/uScript.pas Sat Dec 14 21:16:20 2013 +0400
+++ b/hedgewars/uScript.pas Tue Dec 17 00:02:52 2013 +0400
@@ -80,7 +80,7 @@
uRenderUtils,
uTextures,
uLandGraphics,
- SysUtils,
+ SysUtils,
uIO,
uVisualGearsList,
uGearsHandlersMess,
@@ -98,7 +98,8 @@
procedure ScriptPrepareAmmoStore; forward;
procedure ScriptApplyAmmoStore; forward;
-procedure ScriptSetAmmo(ammo : TAmmoType; count, propability, delay, reinforcement: Byte); forward;
+procedure ScriptSetAmmo(ammo : TAmmoType; count, probability, delay, reinforcement: Byte); forward;
+procedure ScriptSetAmmoDelay(ammo : TAmmoType; delay: Byte); forward;
procedure LuaError(s: shortstring);
begin
@@ -106,6 +107,12 @@
AddChatString(#5 + s);
end;
+procedure LuaParameterCountError(call, paramsyntax: shortstring; wrongcount: LongInt);
+begin
+ // TODO: i18n?
+ LuaError('Lua: Wrong number of parameters (' + inttostr(wrongcount) + ') passed to ' + call + '! syntax: ' + call + ' ( ' + paramsyntax + ' )');
+end;
+
// wrapped calls //
// functions called from Lua:
@@ -115,9 +122,9 @@
function lc_band(L: PLua_State): LongInt; Cdecl;
begin
- if lua_gettop(L) <> 2 then
+ if lua_gettop(L) <> 2 then
begin
- LuaError('Lua: Wrong number of parameters passed to band!');
+ LuaParameterCountError('band', 'value1, value2', lua_gettop(L));
lua_pushnil(L);
end
else
@@ -127,9 +134,9 @@
function lc_bor(L: PLua_State): LongInt; Cdecl;
begin
- if lua_gettop(L) <> 2 then
+ if lua_gettop(L) <> 2 then
begin
- LuaError('Lua: Wrong number of parameters passed to bor!');
+ LuaParameterCountError('bor', 'value1, value2', lua_gettop(L));
lua_pushnil(L);
end
else
@@ -139,9 +146,9 @@
function lc_bnot(L: PLua_State): LongInt; Cdecl;
begin
- if lua_gettop(L) <> 1 then
+ if lua_gettop(L) <> 1 then
begin
- LuaError('Lua: Wrong number of parameters passed to bnot!');
+ LuaParameterCountError('bnot', 'value', lua_gettop(L));
lua_pushnil(L);
end
else
@@ -151,9 +158,9 @@
function lc_div(L: PLua_State): LongInt; Cdecl;
begin
- if lua_gettop(L) <> 2 then
+ if lua_gettop(L) <> 2 then
begin
- LuaError('Lua: Wrong number of parameters passed to div!');
+ LuaParameterCountError('div', 'dividend, divisor', lua_gettop(L));
lua_pushnil(L);
end
else
@@ -164,7 +171,7 @@
function lc_getinputmask(L : Plua_State) : LongInt; Cdecl;
begin
if lua_gettop(L) <> 0 then
- LuaError('Lua: Wrong number of parameters passed to GetInputMask!')
+ LuaParameterCountError('GetInputMask', '', lua_gettop(L))
else
lua_pushinteger(L, InputMask);
lc_getinputmask:= 1
@@ -173,7 +180,7 @@
function lc_setinputmask(L : Plua_State) : LongInt; Cdecl;
begin
if lua_gettop(L) <> 1 then
- LuaError('Lua: Wrong number of parameters passed to SetInputMask!')
+ LuaParameterCountError('SetInputMask', 'mask', lua_gettop(L))
else
InputMask:= lua_tointeger(L, 1);
lc_setinputmask:= 0
@@ -186,7 +193,7 @@
WriteLnToConsole('Lua: ' + lua_tostring(L ,1));
end
else
- LuaError('Lua: Wrong number of parameters passed to WriteLnToConsole!');
+ LuaParameterCountError('WriteLnToConsole', 'string', lua_gettop(L));
lc_writelntoconsole:= 0;
end;
@@ -206,7 +213,7 @@
end
else
- LuaError('Lua: Wrong number of parameters passed to ParseCommand!');
+ LuaParameterCountError('ParseCommand', 'string', lua_gettop(L));
lc_parsecommand:= 0;
end;
@@ -217,7 +224,7 @@
ShowMission(lua_tostring(L, 1), lua_tostring(L, 2), lua_tostring(L, 3), lua_tointeger(L, 4), lua_tointeger(L, 5));
end
else
- LuaError('Lua: Wrong number of parameters passed to ShowMission!');
+ LuaParameterCountError('ShowMission', 'caption, subcaption, text, icon, time', lua_gettop(L));
lc_showmission:= 0;
end;
@@ -264,7 +271,7 @@
AddCaption(lua_tostring(L, 1), lua_tointeger(L, 2) shr 8, TCapGroup(lua_tointeger(L, 3)));
end
else
- LuaError('Lua: Wrong number of parameters passed to AddCaption!');
+ LuaParameterCountError('AddCaption', 'text[, color, captiongroup]', lua_gettop(L));
lc_addcaption:= 0;
end;
@@ -275,7 +282,7 @@
// to be done
end
else
- LuaError('Lua: Wrong number of parameters passed to CampaignLock!');
+ LuaParameterCountError('CampaignLock', 'TODO', lua_gettop(L));
lc_campaignlock:= 0;
end;
@@ -286,7 +293,7 @@
// to be done
end
else
- LuaError('Lua: Wrong number of parameters passed to CampaignUnlock!');
+ LuaParameterCountError('CampaignUnlock', 'TODO', lua_gettop(L));
lc_campaignunlock:= 0;
end;
@@ -295,7 +302,7 @@
begin
if lua_gettop(L) <> 4 then
begin
- LuaError('Lua: Wrong number of parameters passed to SpawnFakeHealthCrate!');
+ LuaParameterCountError('SpawnFakeHealthCrate', 'x, y, explode, poison', lua_gettop(L));
lua_pushnil(L);
end
else
@@ -304,7 +311,7 @@
HealthCrate, lua_toboolean(L, 3), lua_toboolean(L, 4));
lua_pushinteger(L, gear^.uid);
end;
- lc_spawnfakehealthcrate := 1;
+ lc_spawnfakehealthcrate := 1;
end;
function lc_spawnfakeammocrate(L: PLua_State): LongInt; Cdecl;
@@ -312,7 +319,7 @@
begin
if lua_gettop(L) <> 4 then
begin
- LuaError('Lua: Wrong number of parameters passed to SpawnFakeAmmoCrate!');
+ LuaParameterCountError('SpawnFakeAmmoCrate', 'x, y, explode, poison', lua_gettop(L));
lua_pushnil(L);
end
else
@@ -329,11 +336,11 @@
begin
if lua_gettop(L) <> 4 then
begin
- LuaError('Lua: Wrong number of parameters passed to SpawnFakeUtilityCrate!');
+ LuaParameterCountError('SpawnFakeUtilityCrate', 'x, y, explode, poison', lua_gettop(L));
lua_pushnil(L);
end
else
- begin
+ begin
gear := SpawnFakeCrateAt(lua_tointeger(L, 1), lua_tointeger(L, 2),
UtilityCrate, lua_toboolean(L, 3), lua_toboolean(L, 4));
lua_pushinteger(L, gear^.uid);
@@ -347,7 +354,7 @@
begin
if (lua_gettop(L) < 2) or (lua_gettop(L) > 3) then
begin
- LuaError('Lua: Wrong number of parameters passed to SpawnHealthCrate!');
+ LuaParameterCountError('SpawnHealthCrate', 'x, y[, health]', lua_gettop(L));
lua_pushnil(L);
end
else
@@ -362,7 +369,7 @@
else
lua_pushnil(L);
end;
- lc_spawnhealthcrate := 1;
+ lc_spawnhealthcrate := 1;
end;
function lc_spawnammocrate(L: PLua_State): LongInt; Cdecl;
@@ -370,12 +377,12 @@
begin
if (lua_gettop(L) <> 3) and (lua_gettop(L) <> 4) then
begin
- LuaError('Lua: Wrong number of parameters passed to SpawnAmmoCrate!');
+ LuaParameterCountError('SpawnAmmoCrate', 'x, y, content[, amount]', lua_gettop(L));
lua_pushnil(L);
end
else
begin
- if (lua_gettop(L) = 3) then
+ if (lua_gettop(L) = 3) then
gear := SpawnCustomCrateAt(lua_tointeger(L, 1), lua_tointeger(L, 2), AmmoCrate, lua_tointeger(L, 3), 0)
else gear := SpawnCustomCrateAt(lua_tointeger(L, 1), lua_tointeger(L, 2), AmmoCrate, lua_tointeger(L, 3), lua_tointeger(L, 4));
if gear <> nil then
@@ -391,7 +398,7 @@
begin
if (lua_gettop(L) <> 3) and (lua_gettop(L) <> 4) then
begin
- LuaError('Lua: Wrong number of parameters passed to SpawnUtilityCrate!');
+ LuaParameterCountError('SpawnUtilityCrate', 'x, y, content[, amount]', lua_gettop(L));
lua_pushnil(L);
end
else
@@ -415,7 +422,7 @@
begin
if lua_gettop(L) <> 7 then
begin
- LuaError('Lua: Wrong number of parameters passed to AddGear!');
+ LuaParameterCountError('AddGear', 'x, y, gearType, state, dx, dy, timer', lua_gettop(L));
lua_pushnil(L); // return value on stack (nil)
end
else
@@ -440,7 +447,7 @@
begin
if lua_gettop(L) <> 1 then
begin
- LuaError('Lua: Wrong number of parameters passed to DeleteGear!');
+ LuaParameterCountError('DeleteGear', 'gearUid', lua_gettop(L));
end
else
begin
@@ -459,7 +466,7 @@
begin
if lua_gettop(L) <> 5 then
begin
- LuaError('Lua: Wrong number of parameters passed to AddVisualGear!');
+ LuaParameterCountError('AddVisualGear', 'x, y, visualGearType, state, critical', lua_gettop(L));
lua_pushnil(L); // return value on stack (nil)
end
else
@@ -471,7 +478,7 @@
c:= lua_toboolean(L, 5);
vg:= AddVisualGear(x, y, vgt, s, c);
- if vg <> nil then
+ if vg <> nil then
begin
lastVisualGearByUID:= vg;
lua_pushinteger(L, vg^.uid)
@@ -487,7 +494,7 @@
begin
if lua_gettop(L) <> 1 then
begin
- LuaError('Lua: Wrong number of parameters passed to DeleteVisualGear!');
+ LuaParameterCountError('DeleteVisualGear', 'vgUid', lua_gettop(L));
end
else
begin
@@ -503,7 +510,7 @@
begin
if lua_gettop(L) <> 1 then
begin
- LuaError('Lua: Wrong number of parameters passed to GetVisualGearValues!');
+ LuaParameterCountError('GetVisualGearValues', 'vgUid', lua_gettop(L));
lua_pushnil(L); lua_pushnil(L); lua_pushnil(L); lua_pushnil(L); lua_pushnil(L);
lua_pushnil(L); lua_pushnil(L); lua_pushnil(L); lua_pushnil(L); lua_pushnil(L)
end
@@ -537,7 +544,7 @@
begin
if lua_gettop(L) <> 11 then
begin
- LuaError('Lua: Wrong number of parameters passed to SetVisualGearValues!');
+ LuaParameterCountError('SetVisualGearValues', 'vgUid, X, Y, dX, dY, Angle, Frame, FrameTicks, State, Timer, Tint', lua_gettop(L));
lua_pushnil(L); // return value on stack (nil)
end
else
@@ -565,7 +572,7 @@
begin
if lua_gettop(L) <> 0 then
begin
- LuaError('Lua: Wrong number of parameters passed to GetFollowGear!');
+ LuaParameterCountError('GetFollowGear', '', lua_gettop(L));
lua_pushnil(L); // return value on stack (nil)
end
else
@@ -581,7 +588,7 @@
begin
if lua_gettop(L) <> 1 then
begin
- LuaError('Lua: Wrong number of parameters passed to GetGearType!');
+ LuaParameterCountError('GetGearType', 'gearUid', lua_gettop(L));
lua_pushnil(L); // return value on stack (nil)
end
else
@@ -600,7 +607,7 @@
begin
if lua_gettop(L) <> 1 then
begin
- LuaError('Lua: Wrong number of parameters passed to GetGearMessage!');
+ LuaParameterCountError('GetGearMessage', 'gearUid', lua_gettop(L));
lua_pushnil(L); // return value on stack (nil)
end
else
@@ -619,7 +626,7 @@
begin
if lua_gettop(L) <> 1 then
begin
- LuaError('Lua: Wrong number of parameters passed to GetGearElasticity!');
+ LuaParameterCountError('GetGearElasticity', 'gearUid', lua_gettop(L));
lua_pushnil(L); // return value on stack (nil)
end
else
@@ -637,7 +644,7 @@
var gear : PGear;
begin
if lua_gettop(L) <> 2 then
- LuaError('Lua: Wrong number of parameters passed to SetGearMessage!')
+ LuaParameterCountError('SetGearMessage', 'gearUid, message', lua_gettop(L))
else
begin
gear:= GearByUID(lua_tointeger(L, 1));
@@ -652,7 +659,7 @@
begin
if lua_gettop(L) <> 1 then
begin
- LuaError('Lua: Wrong number of parameters passed to GetGearPos!');
+ LuaParameterCountError('GetGearPos', 'gearUid', lua_gettop(L));
lua_pushnil(L); // return value on stack (nil)
end
else
@@ -670,7 +677,7 @@
var gear : PGear;
begin
if lua_gettop(L) <> 2 then
- LuaError('Lua: Wrong number of parameters passed to SetGearPos!')
+ LuaParameterCountError('SetGearPos', 'gearUid, value', lua_gettop(L))
else
begin
gear:= GearByUID(lua_tointeger(L, 1));
@@ -685,7 +692,7 @@
begin
if lua_gettop(L) <> 1 then
begin
- LuaError('Lua: Wrong number of parameters passed to GetGearCollisionMask!');
+ LuaParameterCountError('GetGearCollisionMask', 'gearUid', lua_gettop(L));
lua_pushnil(L); // return value on stack (nil)
end
else
@@ -703,7 +710,7 @@
var gear : PGear;
begin
if lua_gettop(L) <> 2 then
- LuaError('Lua: Wrong number of parameters passed to SetGearCollisionMask!')
+ LuaParameterCountError('SetGearCollisionMask', 'gearUid, mask', lua_gettop(L))
else
begin
gear:= GearByUID(lua_tointeger(L, 1));
@@ -717,7 +724,7 @@
var gear : PGear;
begin
if lua_gettop(L) <> 1 then
- LuaError('Lua: Wrong number of parameters passed to GetHogLevel!')
+ LuaParameterCountError('GetHogLevel', 'gearUid', lua_gettop(L))
else
begin
gear := GearByUID(lua_tointeger(L, 1));
@@ -733,7 +740,7 @@
var gear : PGear;
begin
if lua_gettop(L) <> 2 then
- LuaError('Lua: Wrong number of parameters passed to SetHogLevel!')
+ LuaParameterCountError('SetHogLevel', 'gearUid, level', lua_gettop(L))
else
begin
gear:= GearByUID(lua_tointeger(L, 1));
@@ -748,7 +755,7 @@
begin
if lua_gettop(L) <> 1 then
begin
- LuaError('Lua: Wrong number of parameters passed to GetHogClan!');
+ LuaParameterCountError('GetHogClan', 'gearUid', lua_gettop(L));
lua_pushnil(L); // return value on stack (nil)
end
else
@@ -768,7 +775,7 @@
begin
if lua_gettop(L) <> 1 then
begin
- LuaError('Lua: Wrong number of parameters passed to GetClanColor!');
+ LuaParameterCountError('GetClanColor', 'clan', lua_gettop(L));
lua_pushnil(L); // return value on stack (nil)
end
else lua_pushinteger(L, ClansArray[lua_tointeger(L, 1)]^.Color shl 8 or $FF);
@@ -782,7 +789,7 @@
i, j : LongInt;
begin
if lua_gettop(L) <> 2 then
- LuaError('Lua: Wrong number of parameters passed to SetClanColor!')
+ LuaParameterCountError('SetClanColor', 'clan, color', lua_gettop(L))
else
begin
clan := ClansArray[lua_tointeger(L, 1)];
@@ -794,7 +801,7 @@
for j:= 0 to 7 do
begin
hh:= team^.Hedgehogs[j];
- if (hh.Gear <> nil) or (hh.GearHidden <> nil) then
+ if (hh.Gear <> nil) or (hh.GearHidden <> nil) then
begin
FreeTexture(hh.NameTagTex);
hh.NameTagTex:= RenderStringTex(hh.Name, clan^.Color, fnt16);
@@ -816,7 +823,7 @@
begin
if lua_gettop(L) <> 1 then
begin
- LuaError('Lua: Wrong number of parameters passed to GetHogTeamName!');
+ LuaParameterCountError('GetHogTeamName', 'gearUid', lua_gettop(L));
lua_pushnil(L); // return value on stack (nil)
end
else
@@ -832,12 +839,36 @@
lc_gethogteamname:= 1
end;
+function lc_sethogteamname(L : Plua_State) : LongInt; Cdecl;
+var gear : PGear;
+begin
+ if lua_gettop(L) <> 2 then
+ begin
+ LuaParameterCountError('SetHogTeamName', 'gearUid, name', lua_gettop(L));
+ lua_pushnil(L); // return value on stack (nil)
+ end
+ else
+ begin
+ gear := GearByUID(lua_tointeger(L, 1));
+ if (gear <> nil) and ((gear^.Kind = gtHedgehog) or (gear^.Kind = gtGrave)) and (gear^.Hedgehog <> nil) then
+ begin
+ gear^.Hedgehog^.Team^.TeamName := lua_tostring(L, 2);
+
+ FreeTexture(gear^.Hedgehog^.Team^.NameTagTex);
+ gear^.Hedgehog^.Team^.NameTagTex:= RenderStringTex(gear^.Hedgehog^.Team^.TeamName, gear^.Hedgehog^.Team^.Clan^.Color, fnt16);
+ end
+ else
+ lua_pushnil(L);
+ end;
+ lc_sethogteamname:= 1
+end;
+
function lc_gethogname(L : Plua_State) : LongInt; Cdecl;
var gear : PGear;
begin
if lua_gettop(L) <> 1 then
begin
- LuaError('Lua: Wrong number of parameters passed to GetHogName!');
+ LuaParameterCountError('GetHogName', 'gearUid', lua_gettop(L));
lua_pushnil(L); // return value on stack (nil)
end
else
@@ -855,24 +886,22 @@
function lc_sethogname(L : Plua_State) : LongInt; Cdecl;
var gear : PGear;
- hogName: ShortString;
begin
if lua_gettop(L) <> 2 then
begin
- LuaError('Lua: Wrong number of parameters passed to SetHogName!');
+ LuaParameterCountError('SetHogName', 'gearUid, name', lua_gettop(L));
lua_pushnil(L)
end
else
begin
gear:= GearByUID(lua_tointeger(L, 1));
if (gear <> nil) and (gear^.Kind = gtHedgehog) and (gear^.Hedgehog <> nil) then
-
- hogName:= lua_tostring(L, 2);
- gear^.Hedgehog^.Name:= hogName;
+ begin
+ gear^.Hedgehog^.Name:= lua_tostring(L, 2);
- FreeTexture(gear^.Hedgehog^.NameTagTex);
- gear^.Hedgehog^.NameTagTex:= RenderStringTex(gear^.Hedgehog^.Name, gear^.Hedgehog^.Team^.Clan^.Color, fnt16);
-
+ FreeTexture(gear^.Hedgehog^.NameTagTex);
+ gear^.Hedgehog^.NameTagTex:= RenderStringTex(gear^.Hedgehog^.Name, gear^.Hedgehog^.Team^.Clan^.Color, fnt16)
+ end
end;
lc_sethogname:= 0;
end;
@@ -882,7 +911,7 @@
begin
if lua_gettop(L) <> 1 then
begin
- LuaError('Lua: Wrong number of parameters passed to GetTimer!');
+ LuaParameterCountError('GetTimer', 'gearUid', lua_gettop(L));
lua_pushnil(L); // return value on stack (nil)
end
else
@@ -901,7 +930,7 @@
begin
if lua_gettop(L) <> 1 then
begin
- LuaError('Lua: Wrong number of parameters passed to GetHealth!');
+ LuaParameterCountError('GetHealth', 'gearUid', lua_gettop(L));
lua_pushnil(L); // return value on stack (nil)
end
else
@@ -920,7 +949,7 @@
begin
if lua_gettop(L) <> 1 then
begin
- LuaError('Lua: Wrong number of parameters passed to GetX!');
+ LuaParameterCountError('GetX', 'gearUid', lua_gettop(L));
lua_pushnil(L); // return value on stack (nil)
end
else
@@ -939,7 +968,7 @@
begin
if lua_gettop(L) <> 1 then
begin
- LuaError('Lua: Wrong number of parameters passed to GetY!');
+ LuaParameterCountError('GetY', 'gearUid', lua_gettop(L));
lua_pushnil(L); // return value on stack (nil)
end
else
@@ -958,7 +987,7 @@
begin
if lua_gettop(L) <> 2 then
begin
- LuaError('Lua: Wrong number of parameters passed to CopyPV!');
+ LuaParameterCountError('CopyPV', 'fromGearUid, toGearUid', lua_gettop(L));
end
else
begin
@@ -979,7 +1008,7 @@
var gear : PGear;
begin
if lua_gettop(L) <> 1 then
- LuaError('Lua: Wrong number of parameters passed to FollowGear!')
+ LuaParameterCountError('FollowGear', 'gearUid', lua_gettop(L))
else
begin
gear:= GearByUID(lua_tointeger(L, 1));
@@ -1011,13 +1040,14 @@
vgear^.FrameTicks:= lua_tointeger(L, 3);
if (vgear^.FrameTicks < 1) or (vgear^.FrameTicks > 3) then
vgear^.FrameTicks:= 1;
- lua_pushinteger(L, vgear^.Uid)
+ lua_pushinteger(L, vgear^.Uid);
+ AddChatString(#1+'[' + gear^.Hedgehog^.Name + '] '+vgear^.text)
end
end
else
lua_pushnil(L)
end
- else LuaError('Lua: Wrong number of parameters passed to HogSay!');
+ else LuaParameterCountError('HogSay', 'gearUid, text, manner[, vgState]', lua_gettop(L));
lc_hogsay:= 1
end;
@@ -1025,7 +1055,7 @@
var gear, prevgear : PGear;
begin
if lua_gettop(L) <> 1 then
- LuaError('Lua: Wrong number of parameters passed to SwitchHog!')
+ LuaParameterCountError('SwitchHog', 'gearUid', lua_gettop(L))
else
begin
gear:= GearByUID(lua_tointeger(L, 1));
@@ -1040,7 +1070,7 @@
prevgear^.Z := cHHZ;
prevgear^.Message:= prevgear^.Message or gmRemoveFromList or gmAddToList;
end;
-
+
SwitchCurrentHedgehog(gear^.Hedgehog);
CurrentTeam:= CurrentHedgehog^.Team;
@@ -1063,7 +1093,7 @@
if (gear <> nil) and (gear^.Hedgehog <> nil) then
AddAmmoAmount(gear^.Hedgehog^, TAmmoType(lua_tointeger(L, 2)), lua_tointeger(L,3) );
end else
-
+
if lua_gettop(L) = 2 then
begin
gear:= GearByUID(lua_tointeger(L, 1));
@@ -1071,7 +1101,7 @@
AddAmmo(gear^.Hedgehog^, TAmmoType(lua_tointeger(L, 2)));
end else
begin
- LuaError('Lua: Wrong number of parameters passed to AddAmmo!');
+ LuaParameterCountError('AddAmmo', 'TODO', lua_gettop(L));
end;
lc_addammo:= 0;
@@ -1090,7 +1120,7 @@
else
SetAmmo(gear^.Hedgehog^, TAmmoType(lua_tointeger(L, 2)), lua_tointeger(L, 3))
end
- else LuaError('Lua: Wrong number of parameters passed to AddAmmo!');
+ else LuaParameterCountError('AddAmmo', 'gearUid, ammoType[, ammoCount]', lua_gettop(L));
lc_addammo:= 0
end;
@@ -1101,7 +1131,7 @@
if (lua_gettop(L) = 2) then
begin
gear:= GearByUID(lua_tointeger(L, 1));
- if (gear <> nil) and (gear^.Hedgehog <> nil) then
+ if (gear <> nil) and (gear^.Hedgehog <> nil) then
begin
ammo:= GetAmmoEntry(gear^.Hedgehog^, TAmmoType(lua_tointeger(L, 2)));
if ammo^.AmmoType = amNothing then
@@ -1111,9 +1141,9 @@
end
else lua_pushinteger(L, 0)
end
- else
+ else
begin
- LuaError('Lua: Wrong number of parameters passed to GetAmmoCount!');
+ LuaParameterCountError('GetAmmoCount', 'gearUid, ammoType', lua_gettop(L));
lua_pushnil(L)
end;
lc_getammocount:= 1
@@ -1124,7 +1154,7 @@
begin
if lua_gettop(L) <> 2 then
begin
- LuaError('Lua: Wrong number of parameters passed to SetHealth!');
+ LuaParameterCountError('SetHealth', 'gearUid, health', lua_gettop(L));
end
else
begin
@@ -1134,7 +1164,7 @@
gear^.Health:= lua_tointeger(L, 2);
if (gear^.Kind = gtHedgehog) and (gear^.Hedgehog <> nil) then
- begin
+ begin
RenderHealth(gear^.Hedgehog^);
RecountTeamHealth(gear^.Hedgehog^.Team)
end;
@@ -1150,7 +1180,7 @@
begin
if lua_gettop(L) <> 2 then
begin
- LuaError('Lua: Wrong number of parameters passed to SetTimer!');
+ LuaParameterCountError('SetTimer', 'gearUid, timer', lua_gettop(L));
end
else
begin
@@ -1164,7 +1194,7 @@
var gear: PGear;
begin
if lua_gettop(L) <> 3 then
- LuaError('Lua: Wrong number of parameters passed to SetEffect!')
+ LuaParameterCountError('SetEffect', 'gearUid, effect, enabled', lua_gettop(L))
else begin
gear := GearByUID(lua_tointeger(L, 1));
if (gear <> nil) and (gear^.Hedgehog <> nil) then
@@ -1172,12 +1202,13 @@
end;
lc_seteffect := 0;
end;
+
function lc_geteffect(L : Plua_State) : LongInt; Cdecl;
var gear : PGear;
begin
if lua_gettop(L) <> 2 then
begin
- LuaError('Lua: Wrong number of parameters passed to GetEffect!');
+ LuaParameterCountError('GetEffect', 'gearUid, effect', lua_gettop(L));
end
else
begin
@@ -1195,7 +1226,7 @@
begin
if lua_gettop(L) <> 2 then
begin
- LuaError('Lua: Wrong number of parameters passed to SetState!');
+ LuaParameterCountError('SetState', 'gearUid, state', lua_gettop(L));
end
else
begin
@@ -1214,7 +1245,7 @@
begin
if lua_gettop(L) <> 1 then
begin
- LuaError('Lua: Wrong number of parameters passed to GetState!');
+ LuaParameterCountError('GetState', 'gearUid', lua_gettop(L));
end
else
begin
@@ -1232,7 +1263,7 @@
begin
if lua_gettop(L) <> 1 then
begin
- LuaError('Lua: Wrong number of parameters passed to GetX!');
+ LuaParameterCountError('GetTag', 'gearUid', lua_gettop(L));
lua_pushnil(L); // return value on stack (nil)
end
else
@@ -1251,7 +1282,7 @@
begin
if lua_gettop(L) <> 2 then
begin
- LuaError('Lua: Wrong number of parameters passed to SetTag!');
+ LuaParameterCountError('SetTag', 'gearUid, tag', lua_gettop(L));
end
else
begin
@@ -1277,49 +1308,49 @@
var i : LongInt;
var color : shortstring;
begin
- statInfo := TStatInfoType(lua_tointeger(L, 1));
- if (lua_gettop(L) <> 2) and ((statInfo <> siPlayerKills)
- and (statInfo <> siClanHealth)) then
+ statInfo := TStatInfoType(lua_tointeger(L, 1));
+ if (lua_gettop(L) <> 2) and ((statInfo <> siPlayerKills)
+ and (statInfo <> siClanHealth)) then
begin
- LuaError('Lua: Wrong number of parameters passed to SendStat! Expected 2 parameters.');
+ LuaParameterCountError('SendStat', 'statInfoType, color', lua_gettop(L));
end
- else if (lua_gettop(L) <> 3) and ((statInfo = siPlayerKills)
- or (statInfo = siClanHealth)) then
- begin
- LuaError('Lua: Wrong number of parameters passed to SendStat! Expected 3 parameters.');
+ else if (lua_gettop(L) <> 3) and ((statInfo = siPlayerKills)
+ or (statInfo = siClanHealth)) then
+ begin
+ LuaParameterCountError('SendStat', 'siClanHealth, color, teamname', lua_gettop(L));
end
else
- begin
- if ((statInfo = siPlayerKills) or (statInfo = siClanHealth)) then
- begin
- // 3: team name
- for i:= 0 to Pred(TeamsCount) do
- begin
- with TeamsArray[i]^ do
- begin
- if TeamName = lua_tostring(L, 3) then
- begin
- color := uUtils.IntToStr(Clan^.Color);
- Break;
- end
- end
- end;
- if (statInfo = siPlayerKills) then
- begin
- SendStat(siPlayerKills, color + ' ' +
- lua_tostring(L, 2) + ' ' + TeamsArray[i]^.TeamName);
- end
- else if (statInfo = siClanHealth) then
- begin
- SendStat(siClanHealth, color + ' ' +
- lua_tostring(L, 2));
- end
- end
- else
- begin
- SendStat(statInfo,lua_tostring(L, 2));
- end;
- end;
+ begin
+ if ((statInfo = siPlayerKills) or (statInfo = siClanHealth)) then
+ begin
+ // 3: team name
+ for i:= 0 to Pred(TeamsCount) do
+ begin
+ with TeamsArray[i]^ do
+ begin
+ if TeamName = lua_tostring(L, 3) then
+ begin
+ color := uUtils.IntToStr(Clan^.Color);
+ Break;
+ end
+ end
+ end;
+ if (statInfo = siPlayerKills) then
+ begin
+ SendStat(siPlayerKills, color + ' ' +
+ lua_tostring(L, 2) + ' ' + TeamsArray[i]^.TeamName);
+ end
+ else if (statInfo = siClanHealth) then
+ begin
+ SendStat(siClanHealth, color + ' ' +
+ lua_tostring(L, 2));
+ end
+ end
+ else
+ begin
+ SendStat(statInfo,lua_tostring(L, 2));
+ end;
+ end;
lc_sendstat:= 0
end;
@@ -1338,7 +1369,7 @@
begin
tryhard:= false;
if (lua_gettop(L) <> 4) and (lua_gettop(L) <> 5) then
- LuaError('Lua: Wrong number of parameters passed to FindPlace!')
+ LuaParameterCountError('FindPlace', 'gearUid, fall, left, right[, tryHarder]', lua_gettop(L))
else
begin
gear:= GearByUID(lua_tointeger(L, 1));
@@ -1368,7 +1399,7 @@
if (gear <> nil) and (gear^.Kind = gtHedgehog) and (gear^.Hedgehog <> nil) then
AddVoice(TSound(lua_tointeger(L, 1)),gear^.Hedgehog^.Team^.Voicepack)
end
- else LuaError('Lua: Wrong number of parameters passed to PlaySound!');
+ else LuaParameterCountError('PlaySound', 'soundId', lua_gettop(L));
lc_playsound:= 0;
end;
@@ -1378,7 +1409,7 @@
np:= lua_gettop(L);
if (np < 5) or (np > 6) then
begin
- LuaError('Lua: Wrong number of parameters passed to AddTeam!');
+ LuaParameterCountError('AddTeam', 'teamname, color, grave, fort, voicepack[, flag]', lua_gettop(L));
//lua_pushnil(L)
end
else
@@ -1400,7 +1431,7 @@
begin
if lua_gettop(L) <> 4 then
begin
- LuaError('Lua: Wrong number of parameters passed to AddHog!');
+ LuaParameterCountError('AddHog', 'hogname, botlevel, health, hat', lua_gettop(L));
lua_pushnil(L)
end
else
@@ -1418,7 +1449,7 @@
begin
if lua_gettop(L) <> 2 then
begin
- LuaError('Lua: Wrong number of parameters passed to HogTurnLeft!');
+ LuaParameterCountError('HogTurnLeft', 'gearUid, boolean', lua_gettop(L));
end
else
begin
@@ -1434,7 +1465,7 @@
begin
if lua_gettop(L) <> 1 then
begin
- LuaError('Lua: Wrong number of parameters passed to GetGearPosition!');
+ LuaParameterCountError('GetGearPosition', 'gearUid', lua_gettop(L));
lua_pushnil(L);
lua_pushnil(L)
end
@@ -1461,7 +1492,7 @@
x, y: LongInt;
begin
if lua_gettop(L) <> 3 then
- LuaError('Lua: Wrong number of parameters passed to SetGearPosition!')
+ LuaParameterCountError('SetGearPosition', 'gearUid, x, y', lua_gettop(L))
else
begin
gear:= GearByUID(lua_tointeger(L, 1));
@@ -1487,7 +1518,7 @@
begin
if lua_gettop(L) <> 1 then
begin
- LuaError('Lua: Wrong number of parameters passed to GetGearTarget!');
+ LuaParameterCountError('GetGearTarget', 'gearUid', lua_gettop(L));
lua_pushnil(L);
lua_pushnil(L)
end
@@ -1512,7 +1543,7 @@
var gear: PGear;
begin
if lua_gettop(L) <> 3 then
- LuaError('Lua: Wrong number of parameters passed to SetGearTarget!')
+ LuaParameterCountError('SetGearTarget', 'gearUid, x, y', lua_gettop(L))
else
begin
gear:= GearByUID(lua_tointeger(L, 1));
@@ -1531,7 +1562,7 @@
begin
if lua_gettop(L) <> 1 then
begin
- LuaError('Lua: Wrong number of parameters passed to GetGearVelocity!');
+ LuaParameterCountError('GetGearVelocity', 'gearUid', lua_gettop(L));
lua_pushnil(L);
lua_pushnil(L)
end
@@ -1554,7 +1585,7 @@
var gear: PGear;
begin
if lua_gettop(L) <> 3 then
- LuaError('Lua: Wrong number of parameters passed to SetGearVelocity!')
+ LuaParameterCountError('SetGearVelocity', 'gearUid, dx, dy', lua_gettop(L))
else
begin
gear:= GearByUID(lua_tointeger(L, 1));
@@ -1571,7 +1602,7 @@
function lc_setzoom(L : Plua_State) : LongInt; Cdecl;
begin
if lua_gettop(L) <> 1 then
- LuaError('Lua: Wrong number of parameters passed to SetZoom!')
+ LuaParameterCountError('SetZoom', 'zoomLevel', lua_gettop(L))
else
begin
ZoomValue:= lua_tonumber(L, 1);
@@ -1587,7 +1618,7 @@
begin
if lua_gettop(L) <> 0 then
begin
- LuaError('Lua: Wrong number of parameters passed to GetZoom!');
+ LuaParameterCountError('GetZoom', '', lua_gettop(L));
lua_pushnil(L)
end
else
@@ -1600,7 +1631,7 @@
begin
np:= lua_gettop(L);
if (np < 4) or (np > 5) then
- LuaError('Lua: Wrong number of parameters passed to SetAmmo!')
+ LuaParameterCountError('SetAmmo', 'ammoType, count, probability, delay[, numberInCrate]', lua_gettop(L))
else if np = 4 then
ScriptSetAmmo(TAmmoType(lua_tointeger(L, 1)), lua_tointeger(L, 2), lua_tointeger(L, 3), lua_tointeger(L, 4), 1)
else
@@ -1608,12 +1639,23 @@
lc_setammo:= 0
end;
+function lc_setammodelay(L : Plua_State) : LongInt; Cdecl;
+var np: LongInt;
+begin
+ np:= lua_gettop(L);
+ if (np <> 2) then
+ LuaParameterCountError('SetAmmoDelay', 'ammoType, delay', lua_gettop(L))
+ else
+ ScriptSetAmmoDelay(TAmmoType(lua_tointeger(L, 1)), lua_tointeger(L, 2));
+ lc_setammodelay:= 0
+end;
+
function lc_setammostore(L : Plua_State) : LongInt; Cdecl;
var np: LongInt;
begin
np:= lua_gettop(L);
if (np <> 4) then
- LuaError('Lua: Wrong number of parameters passed to SetAmmoStore!')
+ LuaParameterCountError('SetAmmoStore', 'loadouts, probabilities, delays, reinforments', lua_gettop(L))
else
begin
ScriptAmmoLoadout:= lua_tostring(L, 1);
@@ -1629,7 +1671,7 @@
begin
if lua_gettop(L) <> 1 then
begin
- LuaError('Lua: Wrong number of parameters passed to GetRandom!');
+ LuaParameterCountError('GetRandom', 'number', lua_gettop(L));
lua_pushnil(L); // return value on stack (nil)
end
else
@@ -1649,7 +1691,7 @@
function lc_setwind(L : Plua_State) : LongInt; Cdecl;
begin
if lua_gettop(L) <> 1 then
- LuaError('Lua: Wrong number of parameters passed to SetWind!')
+ LuaParameterCountError('SetWind', 'windSpeed', lua_gettop(L))
else
begin
cWindSpeed:= int2hwfloat(lua_tointeger(L, 1)) / 100 * cMaxWindSpeed;
@@ -1665,7 +1707,7 @@
begin
if lua_gettop(L) <> 0 then
begin
- LuaError('Lua: Wrong number of parameters passed to GetDataPath!');
+ LuaParameterCountError('GetDataPath', '', lua_gettop(L));
lua_pushnil(L);
end
else
@@ -1677,7 +1719,7 @@
begin
if lua_gettop(L) <> 0 then
begin
- LuaError('Lua: Wrong number of parameters passed to GetUserDataPath!');
+ LuaParameterCountError('GetUserDataPath', '', lua_gettop(L));
lua_pushnil(L);
end
else
@@ -1689,7 +1731,7 @@
begin
if lua_gettop(L) <> 0 then
begin
- LuaError('Lua: Wrong number of parameters passed to MapHasBorder!');
+ LuaParameterCountError('MapHasBorder', '', lua_gettop(L));
lua_pushnil(L);
end
else
@@ -1702,7 +1744,7 @@
begin
if lua_gettop(L) <> 1 then
begin
- LuaError('Lua: Wrong number of parameters passed to GetGearRadius!');
+ LuaParameterCountError('GetGearRadius', 'gearUid', lua_gettop(L));
lua_pushnil(L); // return value on stack (nil)
end
else
@@ -1720,7 +1762,7 @@
var gear : PGear;
begin
if lua_gettop(L) <> 1 then
- LuaError('Lua: Wrong number of parameters passed to GetHogHat!')
+ LuaParameterCountError('GetHogHat', 'gearUid', lua_gettop(L))
else begin
gear := GearByUID(lua_tointeger(L, 1));
if (gear <> nil) and ((gear^.Kind = gtHedgehog) or (gear^.Kind = gtGrave)) and (gear^.Hedgehog <> nil) then
@@ -1737,20 +1779,22 @@
begin
if lua_gettop(L) <> 2 then
begin
- LuaError('Lua: Wrong number of parameters passed to SetHogHat!');
+ LuaParameterCountError('SetHogHat', 'gearUid, hat', lua_gettop(L));
lua_pushnil(L)
end
else
begin
gear:= GearByUID(lua_tointeger(L, 1));
if (gear <> nil) and (gear^.Kind = gtHedgehog) and (gear^.Hedgehog <> nil) then
+ begin
hat:= lua_tostring(L, 2);
gear^.Hedgehog^.Hat:= hat;
-AddFileLog('Changed hat to: '+hat);
+ AddFileLog('Changed hat to: '+hat);
if (Length(hat) > 39) and (Copy(hat,1,8) = 'Reserved') and (Copy(hat,9,32) = gear^.Hedgehog^.Team^.PlayerHash) then
LoadHedgehogHat(gear^.Hedgehog^, 'Reserved/' + Copy(hat,9,Length(hat)-8))
else
- LoadHedgehogHat(gear^.Hedgehog^, hat);
+ LoadHedgehogHat(gear^.Hedgehog^, hat)
+ end
end;
lc_sethoghat:= 0;
end;
@@ -1758,7 +1802,7 @@
function lc_placegirder(L : Plua_State) : LongInt; Cdecl;
begin
if lua_gettop(L) <> 3 then
- LuaError('Lua: Wrong number of parameters passed to PlaceGirder!')
+ LuaParameterCountError('PlaceGirder', 'x, y, state', lua_gettop(L))
else
TryPlaceOnLand(
lua_tointeger(L, 1) - SpritesData[sprAmGirder].Width div 2,
@@ -1770,7 +1814,7 @@
function lc_getcurammotype(L : Plua_State): LongInt; Cdecl;
begin
if lua_gettop(L) <> 0 then
- LuaError('Lua: Wrong number of parameters passed to GetCurAmmoType!')
+ LuaParameterCountError('GetCurAmmoType', '', lua_gettop(L))
else
lua_pushinteger(L, ord(CurrentHedgehog^.CurAmmoType));
lc_getcurammotype := 1;
@@ -1779,7 +1823,7 @@
function lc_savecampaignvar(L : Plua_State): LongInt; Cdecl;
begin
if lua_gettop(L) <> 2 then
- LuaError('Lua: Wrong number of parameters passed to SaveCampaignVar!')
+ LuaParameterCountError('SaveCampaignVar', 'varname, value', lua_gettop(L))
else begin
SendIPC('V!' + lua_tostring(L, 1) + ' ' + lua_tostring(L, 2) + #0);
end;
@@ -1789,9 +1833,9 @@
function lc_getcampaignvar(L : Plua_State): LongInt; Cdecl;
begin
if (lua_gettop(L) <> 1) then
- LuaError('Lua: Wrong number of parameters passed to GetCampaignVar!')
+ LuaParameterCountError('GetCampaignVar', 'varname', lua_gettop(L))
else
- SendIPCAndWaitReply('V?' + lua_tostring(L, 1));
+ SendIPCAndWaitReply('V?' + lua_tostring(L, 1) + #0);
lua_pushstring(L, str2pchar(CampaignVariable));
lc_getcampaignvar := 1;
end;
@@ -1800,7 +1844,7 @@
var gear: PGear;
begin
if lua_gettop(L) <> 1 then
- LuaError('Lua: Wrong number of parameters passed to HideHog!')
+ LuaParameterCountError('HideHog', 'gearUid', lua_gettop(L))
else
begin
gear:= GearByUID(lua_tointeger(L, 1));
@@ -1814,7 +1858,7 @@
uid: LongWord;
begin
if lua_gettop(L) <> 1 then
- LuaError('Lua: Wrong number of parameters passed to RestoreHog!')
+ LuaParameterCountError('RestoreHog', 'gearUid', lua_gettop(L))
else
begin
uid:= LongWord(lua_tointeger(L, 1));
@@ -1836,7 +1880,7 @@
begin
if lua_gettop(L) <> 5 then
begin
- LuaError('Lua: Wrong number of parameters passed to TestRectForObstacle!');
+ LuaParameterCountError('TestRectForObstacle', 'x1, y1, x2, y2, landOnly', lua_gettop(L));
lua_pushnil(L); // return value on stack (nil)
end
else
@@ -1858,7 +1902,7 @@
var gear: PGear;
begin
if lua_gettop(L) <> 2 then
- LuaError('Lua: Wrong number of parameters passed to SetAIHintOnGear!')
+ LuaParameterCountError('SetAIHintOnGear', 'gearUid, aiHints', lua_gettop(L))
else
begin
gear:= GearByUID(lua_tointeger(L, 1));
@@ -1873,7 +1917,7 @@
begin
if lua_gettop(L) <> 1 then
begin
- LuaError('Lua: Wrong number of parameters passed to HedgewarsScriptLoad!');
+ LuaParameterCountError('HedgewarsScriptLoad', 'scriptPath', lua_gettop(L));
lua_pushnil(L)
end
else
@@ -1885,7 +1929,7 @@
function lc_declareachievement(L : Plua_State) : LongInt; Cdecl;
begin
if lua_gettop(L) <> 4 then
- LuaError('Lua: Wrong number of parameters passed to DeclareAchievement!')
+ LuaParameterCountError('DeclareAchievement', 'achievementId, teamname, location, value', lua_gettop(L))
else
declareAchievement(lua_tostring(L, 1), lua_tostring(L, 2), lua_tostring(L, 3), lua_tointeger(L, 4));
lc_declareachievement:= 0
@@ -2024,7 +2068,7 @@
if StoreCnt-1 < k then AddAmmoStore;
inc(k)
end
-else
+else
for i:= 0 to Pred(TeamsCount) do
begin
for j:= 0 to Pred(TeamsArray[i]^.HedgehogsNumber) do
@@ -2080,7 +2124,7 @@
end;
f:= pfsOpenRead(s);
-if f = nil then
+if f = nil then
exit;
physfsReaderSetBuffer(@buf);
@@ -2231,17 +2275,30 @@
end;
end;
-procedure ScriptSetAmmo(ammo : TAmmoType; count, propability, delay, reinforcement: Byte);
+procedure ScriptSetAmmo(ammo : TAmmoType; count, probability, delay, reinforcement: Byte);
begin
-//if (ord(ammo) < 1) or (count > 9) or (count < 0) or (propability < 0) or (propability > 8) or (delay < 0) or (delay > 9) or (reinforcement < 0) or (reinforcement > 8) then
-if (ord(ammo) < 1) or (count > 9) or (propability > 8) or (delay > 9) or (reinforcement > 8) then
+//if (ord(ammo) < 1) or (count > 9) or (count < 0) or (probability < 0) or (probability > 8) or (delay < 0) or (delay > 9) or (reinforcement < 0) or (reinforcement > 8) then
+if (ord(ammo) < 1) or (count > 9) or (probability > 8) or (delay > 9) or (reinforcement > 8) then
exit;
ScriptAmmoLoadout[ord(ammo)]:= inttostr(count)[1];
-ScriptAmmoProbability[ord(ammo)]:= inttostr(propability)[1];
-ScriptAmmoDelay[ord(ammo)]:= inttostr(delay)[1];
+ScriptAmmoProbability[ord(ammo)]:= inttostr(probability)[1];
+ScriptSetAmmoDelay(ammo, delay);
ScriptAmmoReinforcement[ord(ammo)]:= inttostr(reinforcement)[1];
end;
+procedure ScriptSetAmmoDelay(ammo : TAmmoType; delay: Byte);
+begin
+// change loadout string if ammo store hasn't been initialized yet
+if (StoreCnt = 0) then
+begin
+ if (delay <= 9) then
+ ScriptAmmoDelay[ord(ammo)]:= inttostr(delay)[1];
+end
+// change "live" delay values
+else if (CurrentTeam <> nil) then
+ ammoz[ammo].SkipTurns:= CurrentTeam^.Clan^.TurnNumber + delay;
+end;
+
procedure ScriptApplyAmmoStore;
var i, j, k : LongInt;
begin
@@ -2278,7 +2335,7 @@
AddAmmoStore;
TeamsArray[i]^.Hedgehogs[j].AmmoStore:= StoreCnt - 1
end
-else
+else
for i:= 0 to Pred(TeamsCount) do
begin
if ScriptExists('onNewAmmoStore') then
@@ -2461,6 +2518,7 @@
lua_register(luaState, _P'HideMission', @lc_hidemission);
lua_register(luaState, _P'AddCaption', @lc_addcaption);
lua_register(luaState, _P'SetAmmo', @lc_setammo);
+lua_register(luaState, _P'SetAmmoDelay', @lc_setammodelay);
lua_register(luaState, _P'SetAmmoStore', @lc_setammostore);
lua_register(luaState, _P'PlaySound', @lc_playsound);
lua_register(luaState, _P'AddTeam', @lc_addteam);
@@ -2475,6 +2533,7 @@
lua_register(luaState, _P'GetClanColor', @lc_getclancolor);
lua_register(luaState, _P'SetClanColor', @lc_setclancolor);
lua_register(luaState, _P'GetHogTeamName', @lc_gethogteamname);
+lua_register(luaState, _P'SetHogTeamName', @lc_sethogteamname);
lua_register(luaState, _P'GetHogName', @lc_gethogname);
lua_register(luaState, _P'SetHogName', @lc_sethogname);
lua_register(luaState, _P'GetHogLevel', @lc_gethoglevel);
--- a/hedgewars/uStore.pas Sat Dec 14 21:16:20 2013 +0400
+++ b/hedgewars/uStore.pas Tue Dec 17 00:02:52 2013 +0400
@@ -153,15 +153,19 @@
drY: LongInt;
texsurf, flagsurf, iconsurf: PSDL_Surface;
foundBot: boolean;
+ year, month, md : word;
begin
if cOnlyStats then exit;
r.x:= 0;
r.y:= 0;
drY:= - 4;
+DecodeDate(Date, year, month, md);
for t:= 0 to Pred(TeamsCount) do
with TeamsArray[t]^ do
begin
NameTagTex:= RenderStringTexLim(TeamName, Clan^.Color, Font, cTeamHealthWidth);
+ if length(Owner) > 0 then
+ OwnerTex:= RenderStringTexLim(Owner, Clan^.Color, Font, cTeamHealthWidth);
r.x:= 0;
r.y:= 0;
@@ -236,6 +240,16 @@
if Gear <> nil then
begin
NameTagTex:= RenderStringTexLim(Name, Clan^.Color, fnt16, cTeamHealthWidth);
+ if Hat = 'NoHat' then
+ begin
+ if ((month = 4) and (md = 20)) then
+ Hat := 'eastertop'; // Easter
+ if ((month = 12) and (md = 25)) then
+ Hat := 'Santa'; // Christmas
+ if ((month = 10) and (md = 31)) then
+ Hat := 'fr_pumpkin'; // Halloween/Hedgewars' birthday
+ end;
+
if Hat <> 'NoHat' then
begin
if (Length(Hat) > 39) and (Copy(Hat,1,8) = 'Reserved') and (Copy(Hat,9,32) = PlayerHash) then
@@ -330,7 +344,7 @@
if (((cReducedQuality and (rqNoBackground or rqLowRes)) = 0) or // why rqLowRes?
(not (ii in [sprSky, sprSkyL, sprSkyR, sprHorizont, sprHorizontL, sprHorizontR]))) and
(((cReducedQuality and rqPlainSplash) = 0) or ((not (ii in [sprSplash, sprDroplet, sprSDSplash, sprSDDroplet])))) and
- (((cReducedQuality and rqKillFlakes) = 0) or (Theme = 'Snow') or (Theme = 'Christmas') or ((not (ii in [sprFlake, sprSDFlake])))) and
+ (((cReducedQuality and rqKillFlakes) = 0) or cSnow or ((not (ii in [sprFlake, sprSDFlake])))) and
((cCloudsNumber > 0) or (ii <> sprCloud)) and
((vobCount > 0) or (ii <> sprFlake)) then
begin
@@ -630,14 +644,18 @@
procedure LoadHedgehogHat(var HH: THedgehog; newHat: shortstring);
var texsurf: PSDL_Surface;
begin
+ // free the mem of any previously assigned texture. This was previously only if the new one could be loaded, but, NoHat is usually a better choice
+ if HH.HatTex <> nil then
+ begin
+ FreeTexture(HH.HatTex);
+ HH.HatTex:= nil
+ end;
texsurf:= LoadDataImage(ptHats, newHat, ifNone);
AddFileLog('Hat => '+newHat);
// only do something if the hat could be loaded
if texsurf <> nil then
begin
AddFileLog('Got Hat');
- // free the mem of any previously assigned texture
- FreeTexture(HH.HatTex);
// assign new hat to hedgehog
HH.HatTex:= Surface2Tex(texsurf, true);
--- a/hedgewars/uTeams.pas Sat Dec 14 21:16:20 2013 +0400
+++ b/hedgewars/uTeams.pas Tue Dec 17 00:02:52 2013 +0400
@@ -41,13 +41,14 @@
procedure TeamGoneEffect(var Team: TTeam);
procedure SwitchCurrentHedgehog(newHog: PHedgehog);
+var MaxTeamHealth: LongInt;
+
implementation
uses uLocale, uAmmos, uChat, uVariables, uUtils, uIO, uCaptions, uCommands, uDebug,
uGearsUtils, uGearsList, uVisualGearsList, uTextures
{$IFDEF USE_TOUCH_INTERFACE}, uTouch{$ENDIF};
-var MaxTeamHealth: LongInt;
- GameOver: boolean;
+var GameOver: boolean;
NextClan: boolean;
function CheckForWin: boolean;
@@ -480,17 +481,11 @@
else if Hedgehogs[i].GearHidden <> nil then
inc(TeamHealth, Hedgehogs[i].GearHidden^.Health);
- if not hasGone then
- NewTeamHealthBarWidth:= TeamHealth
- else
- NewTeamHealthBarWidth:= 0;
-
- if NewTeamHealthBarWidth > MaxTeamHealth then
+ if TeamHealth > MaxTeamHealth then
begin
- MaxTeamHealth:= NewTeamHealthBarWidth;
+ MaxTeamHealth:= TeamHealth;
RecountAllTeamsHealth;
- end else if NewTeamHealthBarWidth > 0 then
- NewTeamHealthBarWidth:= (NewTeamHealthBarWidth * cTeamHealthWidth) div MaxTeamHealth
+ end
end;
RecountClanHealth(team^.Clan);
@@ -528,7 +523,7 @@
if Gear <> nil then
begin
- Gear^.Invulnerable:= false;
+ Gear^.Hedgehog^.Effects[heInvulnerable]:= 0;
Gear^.Damage:= Gear^.Health;
Gear^.State:= (Gear^.State or gstHHGone) and (not gstHHDriven)
end
@@ -547,11 +542,11 @@
SplitBySpace(id, s);
SwitchCurrentHedgehog(@Hedgehogs[HedgehogsNumber]);
CurrentHedgehog^.BotLevel:= StrToInt(id);
+ CurrentHedgehog^.Team:= CurrentTeam;
Gear:= AddGear(0, 0, gtHedgehog, 0, _0, _0, 0);
SplitBySpace(s, id);
Gear^.Health:= StrToInt(s);
TryDo(Gear^.Health > 0, 'Invalid hedgehog health', true);
- Gear^.Hedgehog^.Team:= CurrentTeam;
if (GameFlags and gfSharedAmmo) <> 0 then
CurrentHedgehog^.AmmoStore:= Clan^.ClanIndex
else if (GameFlags and gfPerHogAmmo) <> 0 then
@@ -684,6 +679,62 @@
end;
+procedure chSetHat(var s: shortstring);
+begin
+if (not isDeveloperMode) or (CurrentTeam = nil) then exit;
+with CurrentTeam^ do
+ begin
+ if not CurrentHedgehog^.King then
+ if (s = '')
+ or (((GameFlags and gfKing) <> 0) and (s = 'crown'))
+ or ((Length(s) > 39) and (Copy(s,1,8) = 'Reserved') and (Copy(s,9,32) <> PlayerHash)) then
+ CurrentHedgehog^.Hat:= 'NoHat'
+ else
+ CurrentHedgehog^.Hat:= s
+ end;
+end;
+
+procedure chGrave(var s: shortstring);
+begin
+ if CurrentTeam = nil then
+ OutError(errmsgIncorrectUse + ' "/grave"', true);
+ if s[1]='"' then
+ Delete(s, 1, 1);
+ if s[byte(s[0])]='"' then
+ Delete(s, byte(s[0]), 1);
+ CurrentTeam^.GraveName:= s
+end;
+
+procedure chFort(var s: shortstring);
+begin
+ if CurrentTeam = nil then
+ OutError(errmsgIncorrectUse + ' "/fort"', true);
+ if s[1]='"' then
+ Delete(s, 1, 1);
+ if s[byte(s[0])]='"' then
+ Delete(s, byte(s[0]), 1);
+ CurrentTeam^.FortName:= s
+end;
+
+procedure chFlag(var s: shortstring);
+begin
+ if CurrentTeam = nil then
+ OutError(errmsgIncorrectUse + ' "/flag"', true);
+ if s[1]='"' then
+ Delete(s, 1, 1);
+ if s[byte(s[0])]='"' then
+ Delete(s, byte(s[0]), 1);
+ CurrentTeam^.flag:= s
+end;
+
+procedure chOwner(var s: shortstring);
+begin
+ if CurrentTeam = nil then
+ OutError(errmsgIncorrectUse + ' "/owner"', true);
+
+ CurrentTeam^.Owner:= s
+end;
+
procedure initModule;
begin
RegisterVariable('addhh', @chAddHH, false);
@@ -692,6 +743,11 @@
RegisterVariable('bind', @chBind, true );
RegisterVariable('teamgone', @chTeamGone, true );
RegisterVariable('finish', @chFinish, true ); // all teams gone
+RegisterVariable('fort' , @chFort , false);
+RegisterVariable('grave' , @chGrave , false);
+RegisterVariable('hat' , @chSetHat , false);
+RegisterVariable('flag' , @chFlag , false);
+RegisterVariable('owner' , @chOwner , false);
CurrentTeam:= nil;
PreviousTeam:= nil;
--- a/hedgewars/uTypes.pas Sat Dec 14 21:16:20 2013 +0400
+++ b/hedgewars/uTypes.pas Tue Dec 17 00:02:52 2013 +0400
@@ -86,7 +86,7 @@
sprHandResurrector, sprCross, sprAirDrill, sprNapalmBomb,
sprBulletHit, sprSnowball, sprHandSnowball, sprSnow,
sprSDFlake, sprSDWater, sprSDCloud, sprSDSplash, sprSDDroplet, sprTardis,
- sprSlider, sprBotlevels, sprHandKnife, sprKnife, sprStar, sprIceTexture, sprIceGun, sprFrozenHog
+ sprSlider, sprBotlevels, sprHandKnife, sprKnife, sprStar, sprIceTexture, sprIceGun, sprFrozenHog, sprAmRubber, sprBoing
);
// Gears that interact with other Gears and/or Land
@@ -152,7 +152,7 @@
amRCPlane, amLowGravity, amExtraDamage, amInvulnerable, amExtraTime, // 35
amLaserSight, amVampiric, amSniperRifle, amJetpack, amMolotov, amBirdy, amPortalGun, // 42
amPiano, amGasBomb, amSineGun, amFlamethrower, amSMine, amHammer, // 48
- amResurrector, amDrillStrike, amSnowball, amTardis, {amStructure,} amLandGun, amIceGun, amKnife); // 54
+ amResurrector, amDrillStrike, amSnowball, amTardis, {amStructure,} amLandGun, amIceGun, amKnife, amRubber); // 56
// Different kind of crates that e.g. hedgehogs can pick up
TCrateType = (HealthCrate, AmmoCrate, UtilityCrate);
@@ -172,8 +172,8 @@
TRenderMode = (rmDefault, rmLeftEye, rmRightEye);
TStereoMode = (smNone, smRedCyan, smCyanRed, smRedBlue, smBlueRed, smRedGreen, smGreenRed, smHorizontal, smVertical);
-
TWorldEdge = (weNone, weWrap, weBounce, weSea, weSky);
+ TUIDisplay = (uiAll, uiNoTeams, uiNone);
THHFont = record
Handle: PTTF_Font;
@@ -258,7 +258,6 @@
ImpactSound: TSound; // first sound, others have to be after it in the sounds def.
nImpactSounds: Word; // count of ImpactSounds.
// Don't use these if you want to take damage normally, otherwise health/damage are commonly used for other purposes
- Invulnerable: Boolean;
Health, Damage, Karma: LongInt;
// DirAngle is a "real" - if you don't need it for rotation of sprite in uGearsRender, you can use it for any visual-only value
DirAngle: real;
@@ -370,6 +369,7 @@
King: boolean; // Flag for a bunch of hedgehog attributes
Unplaced: boolean; // Flag for hog placing mode
Timer: Longword;
+ HealthBarHealth: LongInt;
Effects: array[THogEffect] of LongInt;
end;
@@ -380,16 +380,17 @@
Binds: TBinds;
Hedgehogs: array[0..cMaxHHIndex] of THedgehog;
CurrHedgehog: LongWord;
- NameTagTex: PTexture;
+ NameTagTex,
+ OwnerTex: PTexture;
GraveTex,
AIKillsTex,
FlagTex: PTexture;
Flag: shortstring;
GraveName: shortstring;
FortName: shortstring;
+ Owner: shortstring;
TeamHealth: LongInt;
- TeamHealthBarWidth,
- NewTeamHealthBarWidth: LongInt;
+ TeamHealthBarHealth: LongInt;
DrawHealthY: LongInt;
AttackBar: LongWord;
HedgehogsNumber: Longword;
@@ -434,7 +435,7 @@
sidMolotov, sidBirdy, sidPortalGun, sidPiano, sidGasBomb,
sidSineGun, sidFlamethrower,sidSMine, sidHammer, sidResurrector,
sidDrillStrike, sidSnowball, sidNothing, sidTardis,
- {sidStructure,} sidLandGun, sidIceGun, sidKnife);
+ {sidStructure,} sidLandGun, sidIceGun, sidKnife, sidRubber);
TMsgStrId = (sidStartFight, sidDraw, sidWinner, sidVolume, sidPaused,
sidConfirm, sidSuddenDeath, sidRemaining, sidFuel, sidSync,
--- a/hedgewars/uVariables.pas Sat Dec 14 21:16:20 2013 +0400
+++ b/hedgewars/uVariables.pas Tue Dec 17 00:02:52 2013 +0400
@@ -46,6 +46,9 @@
cShowFPS : boolean;
cFlattenFlakes : boolean;
cFlattenClouds : boolean;
+ cIce : boolean;
+ cSnow : boolean;
+
cAltDamage : boolean;
cReducedQuality : LongWord;
UserNick : shortstring;
@@ -161,6 +164,7 @@
cMaxWindSpeed : hwFloat;
cWindSpeed : hwFloat;
cWindSpeedf : real;
+ cElastic : hwFloat;
cGravity : hwFloat;
cGravityf : real;
cDamageModifier : hwFloat;
@@ -195,6 +199,9 @@
ScreenFadeValue : LongInt;
ScreenFadeSpeed : LongInt;
+ UIDisplay : TUIDisplay;
+ LocalMessage : LongWord;
+
Theme : shortstring;
disableLandBack : boolean;
@@ -446,7 +453,7 @@
(FileName: 'amKamikaze'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
Width: 128; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprKamikaze
(FileName: 'amWhip'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
- Width: 128; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprWhip
+ Width: 128; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprWhip
(FileName: 'Kowtow'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpLowest; getDimensions: false; getImageDimensions: true),// sprKowtow
(FileName: 'Sad'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
@@ -675,7 +682,11 @@
(FileName: 'amIceGun'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
Width: 32; Height: 32; imageWidth: 32; imageHeight: 32; saveSurf: false; priority: tpLow; getDimensions: false; getImageDimensions: false), // sprIceGun
(FileName: 'amFrozenHog'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
- Width: 64; Height: 64; imageWidth: 64; imageHeight: 64; saveSurf: false; priority: tpLow; getDimensions: false; getImageDimensions: false) // sprFrozenHog
+ Width: 64; Height: 64; imageWidth: 64; imageHeight: 64; saveSurf: false; priority: tpLow; getDimensions: false; getImageDimensions: false), // sprFrozenHog
+ (FileName: 'amRubber'; Path: ptCurrTheme; AltPath: ptGraphics; Texture: nil; Surface: nil;
+ Width: 160; Height:160; imageWidth: 0; imageHeight: 0; saveSurf: true; priority: tpMedium; getDimensions: false; getImageDimensions: true), // sprAmRubber
+ (FileName: 'boing'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+ Width: 101; Height: 97; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpLow; getDimensions: false; getImageDimensions: false) // sprBoing
);
const
@@ -1868,7 +1879,7 @@
AmmoType: amPortalGun;
AttackVoice: sndNone;
Bounciness: 1000);
- Slot: 6;
+ Slot: 7;
TimeAfterTurn: 0;
minAngle: 0;
maxAngle: 0;
@@ -2133,7 +2144,7 @@
AmmoType: amTardis;
AttackVoice: sndNone;
Bounciness: 1000);
- Slot: 7;
+ Slot: 8;
TimeAfterTurn: 0;
minAngle: 0;
maxAngle: 0;
@@ -2246,6 +2257,33 @@
PosCount: 1;
PosSprite: sprWater;
ejectX: 0;
+ ejectY: 0),
+// Rubber
+ (NameId: sidRubber;
+ NameTex: nil;
+ Probability: 150;
+ NumberInCase: 1;
+ Ammo: (Propz: ammoprop_NoRoundEnd or
+ ammoprop_NoCrosshair or
+ ammoprop_NeedTarget or
+ ammoprop_Utility or
+ ammoprop_AttackingPut;
+ Count: 1;
+ NumPerTurn: 0;
+ Timer: 0;
+ Pos: 0;
+ AmmoType: amRubber;
+ AttackVoice: sndNone;
+ Bounciness: 1000);
+ Slot: 6;
+ TimeAfterTurn: 3000;
+ minAngle: 0;
+ maxAngle: 0;
+ isDamaging: false;
+ SkipTurns: 0;
+ PosCount: 4;
+ PosSprite: sprAmRubber;
+ ejectX: 0;
ejectY: 0)
);
@@ -2384,6 +2422,8 @@
cFlattenFlakes := false;
cFlattenClouds := false;
+ cIce := false;
+ cSnow := false;
lastVisualGearByUID := nil;
lastGearByUID := nil;
cReadyDelay := 5000;
@@ -2431,6 +2471,7 @@
cMaxWindSpeed.QWordValue:= 1073742; // 0.00025
cWindSpeed.QWordValue := 0; // 0.0
cWindSpeedf := 0.0;
+ cElastic := _0_9;
cGravity := cMaxWindSpeed * 2;
cGravityf := 0.00025 * 2;
cDamageModifier := _1;
@@ -2553,6 +2594,9 @@
cMapName:= '';
LuaTemplateNumber:= 0;
+
+ UIDisplay:= uiAll;
+ LocalMessage:= 0;
end;
procedure freeModule;
--- a/hedgewars/uVisualGears.pas Sat Dec 14 21:16:20 2013 +0400
+++ b/hedgewars/uVisualGears.pas Tue Dec 17 00:02:52 2013 +0400
@@ -219,6 +219,13 @@
else
DrawSprite(sprDroplet, round(Gear^.X) + WorldDx - 8, round(Gear^.Y) + WorldDy - 8, Gear^.Frame);
vgtBubble: DrawSprite(sprBubbles, round(Gear^.X) + WorldDx - 8, round(Gear^.Y) + WorldDy - 8, Gear^.Frame);//(RealTicks div 64 + Gear^.Frame) mod 8);
+ vgtStraightShot: begin
+ if Gear^.dX < 0 then
+ i:= -1
+ else
+ i:= 1;
+ DrawTextureRotatedF(SpritesData[TSprite(Gear^.State)].Texture, Gear^.Scale, 0, 0, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Frame, i, SpritesData[TSprite(Gear^.State)].Width, SpritesData[TSprite(Gear^.State)].Height, Gear^.Angle);
+ end;
end;
//if (Gear^.Tint <> $FFFFFFFF) or tinted then untint;
if (Gear^.Tint <> $FFFFFFFF) then
@@ -487,7 +494,7 @@
if (cReducedQuality and rqKillFlakes) <> 0 then
exit;
-if hasBorder or ((Theme <> 'Snow') and (Theme <> 'Christmas')) then
+if hasBorder or (not cSnow) then
for i:= 0 to Pred(vobCount * cScreenSpace div 4096) do
AddVisualGear(cLeftScreenBorder + random(cScreenSpace), random(1024+200) - 100 + LAND_HEIGHT, vgtFlake)
else
@@ -515,7 +522,7 @@
end
else vg:= vg^.NextGear;
end;
-if ((GameFlags and gfBorder) <> 0) or ((Theme <> 'Snow') and (Theme <> 'Christmas')) then
+if hasBorder or (not cSnow) then
for i:= 0 to Pred(vobSDCount * cScreenSpace div 4096) do
AddVisualGear(cLeftScreenBorder + random(cScreenSpace), random(1024+200) - 100 + LAND_HEIGHT, vgtFlake)
else
--- a/hedgewars/uVisualGearsHandlers.pas Sat Dec 14 21:16:20 2013 +0400
+++ b/hedgewars/uVisualGearsHandlers.pas Tue Dec 17 00:02:52 2013 +0400
@@ -71,6 +71,7 @@
procedure doStepSmoothWindBar(Gear: PVisualGear; Steps: Longword);
procedure doStepStraightShot(Gear: PVisualGear; Steps: Longword);
+function isSorterActive: boolean; inline;
procedure initModule;
implementation
@@ -481,11 +482,17 @@
dy, ny, dw: LongInt;
team: PTeam;
SortFactor: QWord;
+ hdw: array[0..cMaxHHIndex] of LongInt;
end;
currsorter: PVisualGear = nil;
+function isSorterActive: boolean; inline;
+begin
+ isSorterActive:= currsorter <> nil
+end;
+
procedure doStepTeamHealthSorterWork(Gear: PVisualGear; Steps: Longword);
-var i, t: LongInt;
+var i, t, h: LongInt;
begin
for t:= 1 to min(Steps, Gear^.Timer) do
begin
@@ -496,7 +503,13 @@
begin
{$WARNINGS OFF}
team^.DrawHealthY:= ny + dy * LongInt(Gear^.Timer) div cSorterWorkTime;
- team^.TeamHealthBarWidth:= team^.NewTeamHealthBarWidth + dw * LongInt(Gear^.Timer) div cSorterWorkTime;
+ team^.TeamHealthBarHealth:= team^.TeamHealth + dw * LongInt(Gear^.Timer) div cSorterWorkTime;
+
+ for h:= 0 to cMaxHHIndex do
+ if (team^.Hedgehogs[h].Gear <> nil) then
+ team^.Hedgehogs[h].HealthBarHealth:= team^.Hedgehogs[h].Gear^.Health + hdw[h] * LongInt(Gear^.Timer) div cSorterWorkTime
+ else
+ team^.Hedgehogs[h].HealthBarHealth:= hdw[h] * LongInt(Gear^.Timer) div cSorterWorkTime;
{$WARNINGS ON}
end;
end;
@@ -513,7 +526,7 @@
procedure doStepTeamHealthSorter(Gear: PVisualGear; Steps: Longword);
var i: Longword;
b: boolean;
- t: LongInt;
+ t, h: LongInt;
begin
Steps:= Steps; // avoid compiler hint
@@ -522,7 +535,7 @@
begin
team:= TeamsArray[t];
dy:= team^.DrawHealthY;
- dw:= team^.TeamHealthBarWidth - team^.NewTeamHealthBarWidth;
+ dw:= team^.TeamHealthBarHealth - team^.TeamHealth;
if team^.TeamHealth > 0 then
begin
SortFactor:= team^.Clan^.ClanHealth;
@@ -531,6 +544,12 @@
end
else
SortFactor:= 0;
+
+ for h:= 0 to cMaxHHIndex do
+ if (team^.Hedgehogs[h].Gear <> nil) then
+ hdw[h]:= team^.Hedgehogs[h].HealthBarHealth - team^.Hedgehogs[h].Gear^.Health
+ else
+ hdw[h]:= team^.Hedgehogs[h].HealthBarHealth;
end;
if TeamsCount > 1 then
@@ -569,7 +588,7 @@
if (Gear^.Hedgehog^.Gear <> nil) then
begin
- Gear^.X:= hwFloat2Float(Gear^.Hedgehog^.Gear^.X) + (Gear^.Tex^.w div 2 - Gear^.FrameTicks);
+ Gear^.X:= hwFloat2Float(Gear^.Hedgehog^.Gear^.X) + (Gear^.Tex^.w div 2 - Gear^.Tag);
Gear^.Y:= hwFloat2Float(Gear^.Hedgehog^.Gear^.Y) - (16 + Gear^.Tex^.h);
end;
@@ -595,10 +614,11 @@
Gear^.Tex:= RenderSpeechBubbleTex(Gear^.Text, Gear^.FrameTicks, fnt16);
+// FrameTicks cannot hold negative values
case Gear^.FrameTicks of
- 1: Gear^.FrameTicks:= SpritesData[sprSpeechTail].Width-28;
- 2: Gear^.FrameTicks:= SpritesData[sprThoughtTail].Width-20;
- 3: Gear^.FrameTicks:= SpritesData[sprShoutTail].Width-10;
+ 1: Gear^.Tag:= SpritesData[sprSpeechTail].Width-28;
+ 2: Gear^.Tag:= SpritesData[sprThoughtTail].Width-20;
+ 3: Gear^.Tag:= SpritesData[sprShoutTail].Width-10;
end;
Gear^.doStep:= @doStepSpeechBubbleWork;
--- a/hedgewars/uVisualGearsList.pas Sat Dec 14 21:16:20 2013 +0400
+++ b/hedgewars/uVisualGearsList.pas Tue Dec 17 00:02:52 2013 +0400
@@ -24,7 +24,8 @@
function AddVisualGear(X, Y: LongInt; Kind: TVisualGearType): PVisualGear; inline;
function AddVisualGear(X, Y: LongInt; Kind: TVisualGearType; State: LongWord): PVisualGear; inline;
-function AddVisualGear(X, Y: LongInt; Kind: TVisualGearType; State: LongWord; Critical: Boolean): PVisualGear;
+function AddVisualGear(X, Y: LongInt; Kind: TVisualGearType; State: LongWord; Critical: Boolean): PVisualGear; inline;
+function AddVisualGear(X, Y: LongInt; Kind: TVisualGearType; State: LongWord; Critical: Boolean; Layer: LongInt): PVisualGear;
procedure DeleteVisualGear(Gear: PVisualGear);
function VisualGearByUID(uid : Longword) : PVisualGear;
@@ -39,15 +40,20 @@
function AddVisualGear(X, Y: LongInt; Kind: TVisualGearType): PVisualGear; inline;
begin
- AddVisualGear:= AddVisualGear(X, Y, Kind, 0, false);
+ AddVisualGear:= AddVisualGear(X, Y, Kind, 0, false, -1);
end;
function AddVisualGear(X, Y: LongInt; Kind: TVisualGearType; State: LongWord): PVisualGear; inline;
begin
- AddVisualGear:= AddVisualGear(X, Y, Kind, State, false);
+ AddVisualGear:= AddVisualGear(X, Y, Kind, State, false, -1);
end;
-function AddVisualGear(X, Y: LongInt; Kind: TVisualGearType; State: LongWord; Critical: Boolean): PVisualGear;
+function AddVisualGear(X, Y: LongInt; Kind: TVisualGearType; State: LongWord; Critical: Boolean): PVisualGear; inline;
+begin
+ AddVisualGear:= AddVisualGear(X, Y, Kind, State, Critical, -1);
+end;
+
+function AddVisualGear(X, Y: LongInt; Kind: TVisualGearType; State: LongWord; Critical: Boolean; Layer: LongInt): PVisualGear;
var gear: PVisualGear;
t: Longword;
sp: real;
@@ -401,6 +407,8 @@
vgtCircle: gear^.Layer:= 2
end;
+if Layer <> -1 then gear^.Layer:= Layer;
+
if VisualGearLayers[gear^.Layer] <> nil then
begin
VisualGearLayers[gear^.Layer]^.PrevGear:= gear;
--- a/hedgewars/uWorld.pas Sat Dec 14 21:16:20 2013 +0400
+++ b/hedgewars/uWorld.pas Tue Dec 17 00:02:52 2013 +0400
@@ -60,9 +60,10 @@
, uCaptions
, uCursor
, uCommands
-{$IFDEF USE_VIDEO_RECORDING}
+ , uTeams
+{$IFDEF USE_VIDEO_RECORDING}
, uVideoRec
-{$ENDIF}
+{$ENDIF}
;
var cWaveWidth, cWaveHeight: LongInt;
@@ -1231,7 +1232,7 @@
procedure RenderTeamsHealth;
-var t, i, h, smallScreenOffset : LongInt;
+var t, i, h, smallScreenOffset, TeamHealthBarWidth : LongInt;
r: TSDL_Rect;
highlight: boolean;
htex: PTexture;
@@ -1248,7 +1249,6 @@
with TeamsArray[t]^ do
if TeamHealth > 0 then
begin
- h:= 0;
highlight:= bShowFinger and (CurrentTeam = TeamsArray[t]) and ((RealTicks mod 1000) < 500);
if highlight then
@@ -1259,12 +1259,18 @@
else
htex:= Clan^.HealthTex;
- // draw name
+ // draw owner
+ if OwnerTex <> nil then
+ DrawTexture(-OwnerTex^.w - NameTagTex^.w - 18, cScreenHeight + DrawHealthY + smallScreenOffset, OwnerTex);
+
+ // draw name
DrawTexture(-NameTagTex^.w - 16, cScreenHeight + DrawHealthY + smallScreenOffset, NameTagTex);
// draw flag
DrawTexture(-14, cScreenHeight + DrawHealthY + smallScreenOffset, FlagTex);
+ TeamHealthBarWidth:= cTeamHealthWidth * TeamHealthBarHealth div MaxTeamHealth;
+
// draw health bar
r.x:= 0;
r.y:= 0;
@@ -1277,13 +1283,14 @@
r.w:= 3;
DrawTextureFromRect(TeamHealthBarWidth + 15, cScreenHeight + DrawHealthY + smallScreenOffset, @r, htex);
+ h:= 0;
if not hasGone then
for i:= 0 to cMaxHHIndex do
- if Hedgehogs[i].Gear <> nil then
- begin
- inc(h,Hedgehogs[i].Gear^.Health);
- if h < TeamHealth then DrawTexture(15 + h*TeamHealthBarWidth div TeamHealth, cScreenHeight + DrawHealthY + smallScreenOffset + 1, SpritesData[sprSlider].Texture);
- end;
+ begin
+ inc(h, Hedgehogs[i].HealthBarHealth);
+ if (h < TeamHealthBarHealth) and (Hedgehogs[i].HealthBarHealth > 0) then
+ DrawTexture(15 + h * TeamHealthBarWidth div TeamHealthBarHealth, cScreenHeight + DrawHealthY + smallScreenOffset + 1, SpritesData[sprSlider].Texture);
+ end;
// draw ai kill counter for gfAISurvival
if (GameFlags and gfAISurvival) <> 0 then
@@ -1439,37 +1446,40 @@
SetScale(cDefaultZoomLevel);
// Turn time
-{$IFDEF USE_TOUCH_INTERFACE}
-offsetX:= cScreenHeight - 13;
-{$ELSE}
-offsetX:= 48;
-{$ENDIF}
-offsetY:= cOffsetY;
-if ((TurnTimeLeft <> 0) and (TurnTimeLeft < 1000000)) or (ReadyTimeLeft <> 0) then
+if UIDisplay <> uiNone then
begin
- if ReadyTimeLeft <> 0 then
- i:= Succ(Pred(ReadyTimeLeft) div 1000)
- else
- i:= Succ(Pred(TurnTimeLeft) div 1000);
-
- if i>99 then
- t:= 112
- else if i>9 then
- t:= 96
- else
- t:= 80;
- DrawSprite(sprFrame, -(cScreenWidth shr 1) + t + offsetY, cScreenHeight - offsetX, 1);
- while i > 0 do
+{$IFDEF USE_TOUCH_INTERFACE}
+ offsetX:= cScreenHeight - 13;
+{$ELSE}
+ offsetX:= 48;
+{$ENDIF}
+ offsetY:= cOffsetY;
+ if ((TurnTimeLeft <> 0) and (TurnTimeLeft < 1000000)) or (ReadyTimeLeft <> 0) then
begin
- dec(t, 32);
- DrawSprite(sprBigDigit, -(cScreenWidth shr 1) + t + offsetY, cScreenHeight - offsetX, i mod 10);
- i:= i div 10
+ if ReadyTimeLeft <> 0 then
+ i:= Succ(Pred(ReadyTimeLeft) div 1000)
+ else
+ i:= Succ(Pred(TurnTimeLeft) div 1000);
+
+ if i>99 then
+ t:= 112
+ else if i>9 then
+ t:= 96
+ else
+ t:= 80;
+ DrawSprite(sprFrame, -(cScreenWidth shr 1) + t + offsetY, cScreenHeight - offsetX, 1);
+ while i > 0 do
+ begin
+ dec(t, 32);
+ DrawSprite(sprBigDigit, -(cScreenWidth shr 1) + t + offsetY, cScreenHeight - offsetX, i mod 10);
+ i:= i div 10
+ end;
+ DrawSprite(sprFrame, -(cScreenWidth shr 1) + t - 4 + offsetY, cScreenHeight - offsetX, 0);
end;
- DrawSprite(sprFrame, -(cScreenWidth shr 1) + t - 4 + offsetY, cScreenHeight - offsetX, 0);
- end;
// Captions
-DrawCaptions;
+ DrawCaptions
+ end;
{$IFDEF USE_TOUCH_INTERFACE}
// Draw buttons Related to the Touch interface
@@ -1485,13 +1495,16 @@
DrawScreenWidget(@utilityWidget);
{$ENDIF}
-RenderTeamsHealth;
+if UIDisplay = uiAll then
+ RenderTeamsHealth;
// Lag alert
if isInLag then
DrawSprite(sprLag, 32 - (cScreenWidth shr 1), 32, (RealTicks shr 7) mod 12);
// Wind bar
+if UIDisplay <> uiNone then
+ begin
{$IFDEF USE_TOUCH_INTERFACE}
offsetX:= cScreenHeight - 13;
offsetY:= (cScreenWidth shr 1) + 74;
@@ -1513,14 +1526,15 @@
else
if WindBarWidth < 0 then
begin
- {$WARNINGS OFF}
- r.x:= (Longword(WindBarWidth) + RealTicks shr 6) mod 8;
- {$WARNINGS ON}
- r.y:= 0;
- r.w:= - WindBarWidth;
- r.h:= 13;
- DrawSpriteFromRect(sprWindL, r, (cScreenWidth shr 1) - offsetY + 74 + WindBarWidth, cScreenHeight - offsetX + 2, 13, 0);
- end;
+ {$WARNINGS OFF}
+ r.x:= (Longword(WindBarWidth) + RealTicks shr 6) mod 8;
+ {$WARNINGS ON}
+ r.y:= 0;
+ r.w:= - WindBarWidth;
+ r.h:= 13;
+ DrawSpriteFromRect(sprWindL, r, (cScreenWidth shr 1) - offsetY + 74 + WindBarWidth, cScreenHeight - offsetX + 2, 13, 0);
+ end
+ end;
// AmmoMenu
if bShowAmmoMenu and ((AMState = AMHidden) or (AMState = AMHiding)) then
@@ -1747,13 +1761,15 @@
procedure MoveCamera;
var EdgesDist, wdy, shs,z, amNumOffsetX, amNumOffsetY: LongInt;
+ inbtwnTrgtAttks: Boolean;
begin
{$IFNDEF MOBILE}
if (not (CurrentTeam^.ExtDriven and isCursorVisible and (not bShowAmmoMenu) and autoCameraOn)) and cHasFocus and (GameState <> gsConfirm) then
uCursor.updatePosition();
{$ENDIF}
z:= round(200/zoom);
-if not PlacingHogs and (FollowGear <> nil) and (not isCursorVisible) and (not bShowAmmoMenu) and (not fastUntilLag) and autoCameraOn then
+inbtwnTrgtAttks := (CurrentHedgehog <> nil) and ((Ammoz[CurrentHedgehog^.CurAmmoType].Ammo.Propz and ammoprop_NeedTarget) <> 0) and ((GameFlags and gfInfAttack) <> 0);
+if autoCameraOn and not PlacingHogs and (FollowGear <> nil) and (not isCursorVisible) and (not bShowAmmoMenu) and (not fastUntilLag) and not inbtwnTrgtAttks then
if ((abs(CursorPoint.X - prevPoint.X) + abs(CursorPoint.Y - prevpoint.Y)) > 4) then
begin
FollowGear:= nil;
--- a/project_files/hedgewars.pro Sat Dec 14 21:16:20 2013 +0400
+++ b/project_files/hedgewars.pro Tue Dec 17 00:02:52 2013 +0400
@@ -114,7 +114,8 @@
../QTfrontend/ui/widget/feedbackdialog.h \
../QTfrontend/ui/widget/lineeditcursor.h \
../QTfrontend/servermessages.h \
- ../QTfrontend/ui/widget/roomnameprompt.h
+ ../QTfrontend/ui/widget/roomnameprompt.h \
+ ../QTfrontend/weapons.h
SOURCES += ../QTfrontend/model/ammoSchemeModel.cpp \
Binary file share/hedgewars/Data/Graphics/AmmoMenu/Ammos.png has changed
Binary file share/hedgewars/Data/Graphics/AmmoMenu/Ammos_bw.png has changed
Binary file share/hedgewars/Data/Graphics/Hedgehog/amWhip.png has changed
Binary file share/hedgewars/Data/Graphics/amRubber.png has changed
Binary file share/hedgewars/Data/Graphics/boing.png has changed
--- a/share/hedgewars/Data/Locale/en.txt Sat Dec 14 21:16:20 2013 +0400
+++ b/share/hedgewars/Data/Locale/en.txt Tue Dec 17 00:02:52 2013 +0400
@@ -58,6 +58,7 @@
00:54=Land Spray
00:55=Freezer
00:56=Cleaver
+00:57=Rubber
01:00=Let's fight!
01:01=Round draw
--- a/share/hedgewars/Data/Locale/hedgewars_ar.ts Sat Dec 14 21:16:20 2013 +0400
+++ b/share/hedgewars/Data/Locale/hedgewars_ar.ts Tue Dec 17 00:02:52 2013 +0400
@@ -154,6 +154,13 @@
</message>
</context>
<context>
+ <name>GameUIConfig</name>
+ <message>
+ <source>Guest</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
<name>HWApplication</name>
<message numerus="yes">
<source>%1 minutes</source>
@@ -370,6 +377,19 @@
<source>This page requires an internet connection.</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Guest</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>The room is protected with password.
+Please, enter the password:</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>HWGame</name>
@@ -634,7 +654,7 @@
<name>KB</name>
<message>
<source>SDL_ttf returned error while rendering text, most propably it is related to the bug in freetype2. It's recommended to update your freetype lib.</source>
- <translation>SDL_ttf returned error while rendering text, most propably it is related to the bug in freetype2. It's recommended to update your freetype lib.</translation>
+ <translation type="obsolete">SDL_ttf returned error while rendering text, most propably it is related to the bug in freetype2. It's recommended to update your freetype lib.</translation>
</message>
</context>
<context>
@@ -647,19 +667,6 @@
<context>
<name>LibavInteraction</name>
<message>
- <source>Duration: %1m %2s
-</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Video: %1x%2, </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>%1 fps, </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Audio: </source>
<translation type="unfinished"></translation>
</message>
@@ -667,6 +674,18 @@
<source>unknown</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Duration: %1m %2s</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Video: %1x%2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>%1 fps</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>MapModel</name>
@@ -794,6 +813,18 @@
<source>Eraser</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Polyline</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Rectangle</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Ellipse</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>PageEditTeam</name>
@@ -906,6 +937,13 @@
<source>Save</source>
<translation type="unfinished"></translation>
</message>
+ <message numerus="yes">
+ <source>(%1 %2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ <numerusform></numerusform>
+ </translation>
+ </message>
</context>
<context>
<name>PageInGame</name>
@@ -1225,14 +1263,6 @@
<source>Room Name:</source>
<translation type="obsolete">رقم الغرقة</translation>
</message>
- <message>
- <source>Rules:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Weapons:</source>
- <translation type="unfinished"></translation>
- </message>
<message numerus="yes">
<source>%1 players online</source>
<translation type="unfinished">
@@ -1257,10 +1287,6 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>Clear filters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Open server administration page</source>
<translation type="unfinished"></translation>
</message>
@@ -1387,6 +1413,22 @@
<source>Add an indestructible border along the bottom</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>None (Default)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Wrap (World wraps)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Bounce (Edges reflect)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Sea (Edges connect to sea)</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>PageSelectWeapon</name>
@@ -1483,13 +1525,11 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>Date: %1
-</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Size: %1
-</source>
+ <source>Date: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Size: %1</source>
<translation type="unfinished"></translation>
</message>
</context>
@@ -1626,6 +1666,38 @@
<source>Frontend music</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Team</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable team tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Hog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable hedgehog tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Health</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable health tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Translucent</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable translucent tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QComboBox</name>
@@ -1646,10 +1718,6 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>Any</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Disabled</source>
<translation type="unfinished"></translation>
</message>
@@ -1852,10 +1920,6 @@
<translation>متفجرات</translation>
</message>
<message>
- <source>Tip: </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Quality</source>
<translation type="unfinished"></translation>
</message>
@@ -1997,6 +2061,18 @@
<source>This setting will be effective at next restart.</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Tip: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Displayed tags above hogs and translucent tags</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>World Edge</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QLineEdit</name>
@@ -2019,10 +2095,6 @@
<source>Hedgewars %1</source>
<translation>Hedgewars %1</translation>
</message>
- <message>
- <source>-r%1 (%2)</source>
- <translation type="unfinished"></translation>
- </message>
</context>
<context>
<name>QMessageBox</name>
@@ -2247,6 +2319,13 @@
</message>
</context>
<context>
+ <name>QObject</name>
+ <message>
+ <source>No description available</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
<name>QPushButton</name>
<message>
<source>default</source>
@@ -2383,6 +2462,10 @@
<source>Create room</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>set password</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>RoomsListModel</name>
@@ -2430,6 +2513,10 @@
<source>Hand-drawn</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Script</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>SeedPrompt</name>
@@ -2497,13 +2584,6 @@
</message>
</context>
<context>
- <name>TeamShowWidget</name>
- <message>
- <source>%1's team</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
<name>ThemePrompt</name>
<message>
<source>Cancel</source>
@@ -3098,4 +3178,127 @@
<translation type="unfinished"></translation>
</message>
</context>
+<context>
+ <name>server</name>
+ <message>
+ <source>Restricted</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>Illegal room name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room with such name already exists</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>
+ <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>No such room</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room version incompatible to your hedgewars version</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>Empty config entry</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
</TS>
--- a/share/hedgewars/Data/Locale/hedgewars_bg.ts Sat Dec 14 21:16:20 2013 +0400
+++ b/share/hedgewars/Data/Locale/hedgewars_bg.ts Tue Dec 17 00:02:52 2013 +0400
@@ -153,6 +153,13 @@
</message>
</context>
<context>
+ <name>GameUIConfig</name>
+ <message>
+ <source>Guest</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
<name>HWApplication</name>
<message numerus="yes">
<source>%1 minutes</source>
@@ -369,6 +376,19 @@
<source>This page requires an internet connection.</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Guest</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>The room is protected with password.
+Please, enter the password:</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>HWGame</name>
@@ -633,7 +653,7 @@
<name>KB</name>
<message>
<source>SDL_ttf returned error while rendering text, most propably it is related to the bug in freetype2. It's recommended to update your freetype lib.</source>
- <translation>SDL_ttf се натъкна на грешка при показването на текста, най-вероятно свързана с програмна грешка в библиотеката freetype2. Препоръчително е да я обновите.</translation>
+ <translation type="obsolete">SDL_ttf се натъкна на грешка при показването на текста, най-вероятно свързана с програмна грешка в библиотеката freetype2. Препоръчително е да я обновите.</translation>
</message>
</context>
<context>
@@ -646,19 +666,6 @@
<context>
<name>LibavInteraction</name>
<message>
- <source>Duration: %1m %2s
-</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Video: %1x%2, </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>%1 fps, </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Audio: </source>
<translation type="unfinished"></translation>
</message>
@@ -666,6 +673,18 @@
<source>unknown</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Duration: %1m %2s</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Video: %1x%2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>%1 fps</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>MapModel</name>
@@ -793,6 +812,18 @@
<source>Eraser</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Polyline</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Rectangle</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Ellipse</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>PageEditTeam</name>
@@ -905,6 +936,13 @@
<source>Save</source>
<translation type="unfinished">Запазване</translation>
</message>
+ <message numerus="yes">
+ <source>(%1 %2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ <numerusform></numerusform>
+ </translation>
+ </message>
</context>
<context>
<name>PageInGame</name>
@@ -1226,11 +1264,11 @@
</message>
<message>
<source>Rules:</source>
- <translation>Правила:</translation>
+ <translation type="obsolete">Правила:</translation>
</message>
<message>
<source>Weapons:</source>
- <translation>Оръжия:</translation>
+ <translation type="obsolete">Оръжия:</translation>
</message>
<message>
<source>Search:</source>
@@ -1264,10 +1302,6 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>Clear filters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Open server administration page</source>
<translation type="unfinished"></translation>
</message>
@@ -1394,6 +1428,22 @@
<source>Add an indestructible border along the bottom</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>None (Default)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Wrap (World wraps)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Bounce (Edges reflect)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Sea (Edges connect to sea)</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>PageSelectWeapon</name>
@@ -1490,13 +1540,11 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>Date: %1
-</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Size: %1
-</source>
+ <source>Date: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Size: %1</source>
<translation type="unfinished"></translation>
</message>
</context>
@@ -1633,6 +1681,38 @@
<source>Frontend music</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Team</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable team tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Hog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable hedgehog tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Health</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable health tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Translucent</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable translucent tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QComboBox</name>
@@ -1654,7 +1734,7 @@
</message>
<message>
<source>Any</source>
- <translation>Без значение</translation>
+ <translation type="obsolete">Без значение</translation>
</message>
<message>
<source>In lobby</source>
@@ -1868,7 +1948,7 @@
</message>
<message>
<source>Tip: </source>
- <translation>Съвет:</translation>
+ <translation type="obsolete">Съвет:</translation>
</message>
<message>
<source>Quality</source>
@@ -2012,6 +2092,18 @@
<source>This setting will be effective at next restart.</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Tip: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Displayed tags above hogs and translucent tags</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>World Edge</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QLineEdit</name>
@@ -2034,10 +2126,6 @@
<source>Hedgewars %1</source>
<translation>Таралежови войни %1</translation>
</message>
- <message>
- <source>-r%1 (%2)</source>
- <translation type="unfinished"></translation>
- </message>
</context>
<context>
<name>QMessageBox</name>
@@ -2263,6 +2351,13 @@
</message>
</context>
<context>
+ <name>QObject</name>
+ <message>
+ <source>No description available</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
<name>QPushButton</name>
<message>
<source>Play demo</source>
@@ -2399,6 +2494,10 @@
<source>Create room</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>set password</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>RoomsListModel</name>
@@ -2446,6 +2545,10 @@
<source>Hand-drawn</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Script</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>SeedPrompt</name>
@@ -2513,13 +2616,6 @@
</message>
</context>
<context>
- <name>TeamShowWidget</name>
- <message>
- <source>%1's team</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
<name>ThemePrompt</name>
<message>
<source>Cancel</source>
@@ -3114,4 +3210,127 @@
<translation type="unfinished"></translation>
</message>
</context>
+<context>
+ <name>server</name>
+ <message>
+ <source>Restricted</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>Illegal room name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room with such name already exists</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>
+ <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>No such room</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room version incompatible to your hedgewars version</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>Empty config entry</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
</TS>
--- a/share/hedgewars/Data/Locale/hedgewars_cs.ts Sat Dec 14 21:16:20 2013 +0400
+++ b/share/hedgewars/Data/Locale/hedgewars_cs.ts Tue Dec 17 00:02:52 2013 +0400
@@ -154,6 +154,13 @@
</message>
</context>
<context>
+ <name>GameUIConfig</name>
+ <message>
+ <source>Guest</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
<name>HWApplication</name>
<message numerus="yes">
<source>%1 minutes</source>
@@ -375,6 +382,19 @@
<source>This page requires an internet connection.</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Guest</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>The room is protected with password.
+Please, enter the password:</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>HWGame</name>
@@ -639,7 +659,7 @@
<name>KB</name>
<message>
<source>SDL_ttf returned error while rendering text, most propably it is related to the bug in freetype2. It's recommended to update your freetype lib.</source>
- <translation>SDL_ttf vyhodil chybu v renderování textu, s největší pravděpodobností je to spojeno s chybou ve freetype2. Je doporučeno aktualizovat Vaši freetype knihovnu.</translation>
+ <translation type="obsolete">SDL_ttf vyhodil chybu v renderování textu, s největší pravděpodobností je to spojeno s chybou ve freetype2. Je doporučeno aktualizovat Vaši freetype knihovnu.</translation>
</message>
</context>
<context>
@@ -652,19 +672,6 @@
<context>
<name>LibavInteraction</name>
<message>
- <source>Duration: %1m %2s
-</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Video: %1x%2, </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>%1 fps, </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Audio: </source>
<translation type="unfinished"></translation>
</message>
@@ -672,6 +679,18 @@
<source>unknown</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Duration: %1m %2s</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Video: %1x%2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>%1 fps</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>MapModel</name>
@@ -799,6 +818,18 @@
<source>Eraser</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Polyline</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Rectangle</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Ellipse</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>PageEditTeam</name>
@@ -917,6 +948,14 @@
<source>Save</source>
<translation type="unfinished">Uložit</translation>
</message>
+ <message numerus="yes">
+ <source>(%1 %2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ <numerusform></numerusform>
+ <numerusform></numerusform>
+ </translation>
+ </message>
</context>
<context>
<name>PageInGame</name>
@@ -1238,11 +1277,11 @@
</message>
<message>
<source>Rules:</source>
- <translation>Pravidla:</translation>
+ <translation type="obsolete">Pravidla:</translation>
</message>
<message>
<source>Weapons:</source>
- <translation>Zbraně:</translation>
+ <translation type="obsolete">Zbraně:</translation>
</message>
<message>
<source>Search:</source>
@@ -1277,10 +1316,6 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>Clear filters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Open server administration page</source>
<translation type="unfinished"></translation>
</message>
@@ -1407,6 +1442,22 @@
<source>Add an indestructible border along the bottom</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>None (Default)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Wrap (World wraps)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Bounce (Edges reflect)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Sea (Edges connect to sea)</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>PageSelectWeapon</name>
@@ -1504,13 +1555,11 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>Date: %1
-</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Size: %1
-</source>
+ <source>Date: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Size: %1</source>
<translation type="unfinished"></translation>
</message>
</context>
@@ -1647,6 +1696,38 @@
<source>Frontend music</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Team</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable team tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Hog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable hedgehog tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Health</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable health tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Translucent</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable translucent tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QComboBox</name>
@@ -1668,7 +1749,7 @@
</message>
<message>
<source>Any</source>
- <translation>Jakékoliv</translation>
+ <translation type="obsolete">Jakékoliv</translation>
</message>
<message>
<source>In lobby</source>
@@ -1882,7 +1963,7 @@
</message>
<message>
<source>Tip: </source>
- <translation>Tip: </translation>
+ <translation type="obsolete">Tip: </translation>
</message>
<message>
<source>Quality</source>
@@ -2026,6 +2107,18 @@
<source>This setting will be effective at next restart.</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Tip: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Displayed tags above hogs and translucent tags</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>World Edge</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QLineEdit</name>
@@ -2048,10 +2141,6 @@
<source>Hedgewars %1</source>
<translation>Hedgewars %1</translation>
</message>
- <message>
- <source>-r%1 (%2)</source>
- <translation type="unfinished"></translation>
- </message>
</context>
<context>
<name>QMessageBox</name>
@@ -2278,6 +2367,13 @@
</message>
</context>
<context>
+ <name>QObject</name>
+ <message>
+ <source>No description available</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
<name>QPushButton</name>
<message>
<source>default</source>
@@ -2414,6 +2510,10 @@
<source>Create room</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>set password</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>RoomsListModel</name>
@@ -2461,6 +2561,10 @@
<source>Hand-drawn</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Script</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>SeedPrompt</name>
@@ -2528,13 +2632,6 @@
</message>
</context>
<context>
- <name>TeamShowWidget</name>
- <message>
- <source>%1's team</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
<name>ThemePrompt</name>
<message>
<source>Cancel</source>
@@ -3129,4 +3226,127 @@
<translation type="unfinished"></translation>
</message>
</context>
+<context>
+ <name>server</name>
+ <message>
+ <source>Restricted</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>Illegal room name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room with such name already exists</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>
+ <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>No such room</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room version incompatible to your hedgewars version</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>Empty config entry</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
</TS>
--- a/share/hedgewars/Data/Locale/hedgewars_da.ts Sat Dec 14 21:16:20 2013 +0400
+++ b/share/hedgewars/Data/Locale/hedgewars_da.ts Tue Dec 17 00:02:52 2013 +0400
@@ -157,6 +157,13 @@
</message>
</context>
<context>
+ <name>GameUIConfig</name>
+ <message>
+ <source>Guest</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
<name>HWApplication</name>
<message numerus="yes">
<source>%1 minutes</source>
@@ -373,6 +380,19 @@
<source>This page requires an internet connection.</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Guest</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>The room is protected with password.
+Please, enter the password:</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>HWGame</name>
@@ -637,7 +657,7 @@
<name>KB</name>
<message>
<source>SDL_ttf returned error while rendering text, most propably it is related to the bug in freetype2. It's recommended to update your freetype lib.</source>
- <translation>SDL_ttf returnerede en fejl under tekstrendering, højst sandsynligt er den relateret til en fejl i freetype2. Det anbefales at opdatere dit freetype bibliotek.</translation>
+ <translation type="obsolete">SDL_ttf returnerede en fejl under tekstrendering, højst sandsynligt er den relateret til en fejl i freetype2. Det anbefales at opdatere dit freetype bibliotek.</translation>
</message>
</context>
<context>
@@ -650,19 +670,6 @@
<context>
<name>LibavInteraction</name>
<message>
- <source>Duration: %1m %2s
-</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Video: %1x%2, </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>%1 fps, </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Audio: </source>
<translation type="unfinished"></translation>
</message>
@@ -670,6 +677,18 @@
<source>unknown</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Duration: %1m %2s</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Video: %1x%2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>%1 fps</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>MapModel</name>
@@ -797,6 +816,18 @@
<source>Eraser</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Polyline</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Rectangle</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Ellipse</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>PageEditTeam</name>
@@ -909,6 +940,13 @@
<source>Save</source>
<translation type="unfinished">Gem</translation>
</message>
+ <message numerus="yes">
+ <source>(%1 %2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ <numerusform></numerusform>
+ </translation>
+ </message>
</context>
<context>
<name>PageInGame</name>
@@ -1230,11 +1268,11 @@
</message>
<message>
<source>Rules:</source>
- <translation>Regler:</translation>
+ <translation type="obsolete">Regler:</translation>
</message>
<message>
<source>Weapons:</source>
- <translation>Våben:</translation>
+ <translation type="obsolete">Våben:</translation>
</message>
<message>
<source>Search:</source>
@@ -1268,10 +1306,6 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>Clear filters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Open server administration page</source>
<translation type="unfinished"></translation>
</message>
@@ -1398,6 +1432,22 @@
<source>Add an indestructible border along the bottom</source>
<translation>Tilføj en kant under banen som ikke kan destrueres</translation>
</message>
+ <message>
+ <source>None (Default)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Wrap (World wraps)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Bounce (Edges reflect)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Sea (Edges connect to sea)</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>PageSelectWeapon</name>
@@ -1494,13 +1544,11 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>Date: %1
-</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Size: %1
-</source>
+ <source>Date: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Size: %1</source>
<translation type="unfinished"></translation>
</message>
</context>
@@ -1637,6 +1685,38 @@
<source>Frontend music</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Team</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable team tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Hog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable hedgehog tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Health</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable health tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Translucent</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable translucent tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QComboBox</name>
@@ -1658,7 +1738,7 @@
</message>
<message>
<source>Any</source>
- <translation>Ethvert</translation>
+ <translation type="obsolete">Ethvert</translation>
</message>
<message>
<source>In lobby</source>
@@ -1872,7 +1952,7 @@
</message>
<message>
<source>Tip: </source>
- <translation>Tip:</translation>
+ <translation type="obsolete">Tip:</translation>
</message>
<message>
<source>Quality</source>
@@ -2020,6 +2100,18 @@
<source>This setting will be effective at next restart.</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Tip: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Displayed tags above hogs and translucent tags</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>World Edge</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QLineEdit</name>
@@ -2042,10 +2134,6 @@
<source>Hedgewars %1</source>
<translation>Hedgewars %1</translation>
</message>
- <message>
- <source>-r%1 (%2)</source>
- <translation type="unfinished"></translation>
- </message>
</context>
<context>
<name>QMessageBox</name>
@@ -2271,6 +2359,13 @@
</message>
</context>
<context>
+ <name>QObject</name>
+ <message>
+ <source>No description available</source>
+ <translation type="unfinished">Ingen beskrivelse tilgængelig</translation>
+ </message>
+</context>
+<context>
<name>QPushButton</name>
<message>
<source>default</source>
@@ -2407,6 +2502,10 @@
<source>Create room</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>set password</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>RoomsListModel</name>
@@ -2454,6 +2553,10 @@
<source>Hand-drawn</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Script</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>SeedPrompt</name>
@@ -2521,13 +2624,6 @@
</message>
</context>
<context>
- <name>TeamShowWidget</name>
- <message>
- <source>%1's team</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
<name>ThemePrompt</name>
<message>
<source>Cancel</source>
@@ -3122,4 +3218,127 @@
<translation>DPad</translation>
</message>
</context>
+<context>
+ <name>server</name>
+ <message>
+ <source>Restricted</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>Illegal room name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room with such name already exists</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>
+ <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>No such room</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room version incompatible to your hedgewars version</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>Empty config entry</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
</TS>
--- a/share/hedgewars/Data/Locale/hedgewars_de.ts Sat Dec 14 21:16:20 2013 +0400
+++ b/share/hedgewars/Data/Locale/hedgewars_de.ts Tue Dec 17 00:02:52 2013 +0400
@@ -5,7 +5,7 @@
<name>About</name>
<message>
<source>Unknown Compiler</source>
- <translation type="unfinished"></translation>
+ <translation>Unbekannter Compiler</translation>
</message>
</context>
<context>
@@ -30,89 +30,101 @@
<name>BanDialog</name>
<message>
<source>IP</source>
- <translation type="unfinished">IP</translation>
+ <translation>IP-Adresse</translation>
</message>
<message>
<source>Nick</source>
- <translation type="unfinished"></translation>
+ <translation>Spitzname</translation>
</message>
<message>
<source>IP/Nick</source>
- <translation type="unfinished"></translation>
+ <translation>IP-Adresse/Spitzname</translation>
</message>
<message>
<source>Reason</source>
- <translation type="unfinished"></translation>
+ <translation>Grund</translation>
</message>
<message>
<source>Duration</source>
- <translation type="unfinished"></translation>
+ <translation>Dauer</translation>
</message>
<message>
<source>Ok</source>
- <translation type="unfinished"></translation>
+ <translation>OK</translation>
</message>
<message>
<source>Cancel</source>
- <translation type="unfinished">Abbrechen</translation>
+ <translation>Abbrechen</translation>
</message>
<message>
<source>you know why</source>
- <translation type="unfinished"></translation>
+ <translation>du weißt schon, warum</translation>
</message>
<message>
<source>Warning</source>
- <translation type="unfinished"></translation>
+ <translation>Warnung</translation>
</message>
<message>
<source>Please, specify %1</source>
- <translation type="unfinished"></translation>
+ <translation>Bitte leg %1 fest</translation>
</message>
<message>
<source>nickname</source>
- <translation type="unfinished"></translation>
+ <translation>Spitzname</translation>
</message>
<message>
<source>permanent</source>
- <translation type="unfinished"></translation>
+ <translation>Spitzname</translation>
</message>
</context>
<context>
<name>DataManager</name>
<message>
<source>Use Default</source>
- <translation type="unfinished"></translation>
+ <translation>Verwende Standard</translation>
</message>
</context>
<context>
<name>FeedbackDialog</name>
<message>
<source>View</source>
- <translation type="unfinished"></translation>
+ <translation>Ansehen</translation>
</message>
<message>
<source>Cancel</source>
- <translation type="unfinished">Abbrechen</translation>
+ <translation>Abbrechen</translation>
</message>
<message>
<source>Send Feedback</source>
- <translation type="unfinished"></translation>
+ <translation>Feedback senden</translation>
+ </message>
+ <message>
+ <source>Please give us feedback!</source>
+ <translation type="obsolete">Bitte gib uns Feedback!</translation>
</message>
<message>
<source>We are always happy about suggestions, ideas, or bug reports.</source>
- <translation type="unfinished"></translation>
+ <translation>Wir freuen uns immer über Vorschläge, Ideen oder Fehlerberichte.</translation>
+ </message>
+ <message>
+ <source>If you found a bug, you can see if it's already known here (english): </source>
+ <translation type="obsolete">Falls du einen Fehler gefunden hast, kannst du hier sehen, ob er bereits bekannt is (auf Englisch):</translation>
+ </message>
+ <message>
+ <source>Your email address is optional, but we may want to contact you.</source>
+ <translation type="obsolete">Deine E-Mail-Adresse ist optional, aber wir könnten sie brauchen, um dich zu kontaktieren.</translation>
</message>
<message>
<source>Send us feedback!</source>
- <translation type="unfinished"></translation>
+ <translation>Schicke uns dein Feedback!</translation>
</message>
<message>
<source>If you found a bug, you can see if it's already been reported here: </source>
- <translation type="unfinished"></translation>
+ <translation>Falls du einen Fehler gefunden hast, kannst du hier sehen, ob er bereits bekannt is (auf Englisch):</translation>
</message>
<message>
<source>Your email address is optional, but necessary if you want us to get back at you.</source>
- <translation type="unfinished"></translation>
+ <translation>Deine E-Mail-Adresse ist optional, es sei denn du möchtest, dass wir dich zurückkontaktieren.</translation>
</message>
</context>
<context>
@@ -145,68 +157,75 @@
</message>
<message>
<source>Game scheme will auto-select a weapon</source>
- <translation type="unfinished"></translation>
+ <translation>Spielschema wird eine Waffe automatisch aussuchen</translation>
</message>
<message>
<source>Map</source>
- <translation type="unfinished">Karte</translation>
+ <translation>Karte</translation>
</message>
<message>
<source>Game options</source>
- <translation type="unfinished"></translation>
+ <translation>Spieloptionen</translation>
+ </message>
+</context>
+<context>
+ <name>GameUIConfig</name>
+ <message>
+ <source>Guest</source>
+ <translation>Gast</translation>
</message>
</context>
<context>
<name>HWApplication</name>
<message numerus="yes">
<source>%1 minutes</source>
- <translation type="unfinished">
- <numerusform></numerusform>
- <numerusform></numerusform>
+ <translation>
+ <numerusform>%1 Minute</numerusform>
+ <numerusform>%1 Minuten</numerusform>
</translation>
</message>
<message numerus="yes">
<source>%1 hour</source>
- <translation type="unfinished">
- <numerusform></numerusform>
- <numerusform></numerusform>
+ <translation>
+ <numerusform>%1 Stunde</numerusform>
+ <numerusform>%1 Stunden</numerusform>
</translation>
</message>
<message numerus="yes">
<source>%1 hours</source>
- <translation type="unfinished">
- <numerusform></numerusform>
- <numerusform></numerusform>
+ <translation>
+ <numerusform>%1 Stunde</numerusform>
+ <numerusform>%1 Stunden</numerusform>
</translation>
</message>
<message numerus="yes">
<source>%1 day</source>
- <translation type="unfinished">
- <numerusform></numerusform>
- <numerusform></numerusform>
+ <translation>
+ <numerusform>%1 Tag</numerusform>
+ <numerusform>%1 Tage</numerusform>
</translation>
</message>
<message numerus="yes">
<source>%1 days</source>
- <translation type="unfinished">
- <numerusform></numerusform>
- <numerusform></numerusform>
+ <translation>
+ <numerusform>%1 Tag</numerusform>
+ <numerusform>%1 Tage</numerusform>
</translation>
</message>
<message>
<source>Scheme '%1' not supported</source>
- <translation type="unfinished"></translation>
+ <translation>Das Schema »%1« wird nicht unterstützt</translation>
</message>
<message>
<source>Cannot create directory %1</source>
- <translation type="unfinished">Verzeichnis %1 konnte nicht angelegt werden</translation>
+ <translation>Das Verzeichnis %1 konnte nicht angelegt werden</translation>
</message>
<message>
<source>Failed to open data directory:
%1
Please check your installation!</source>
- <translation type="unfinished">Konnte Daten-Verzeichnis nicht öffnen:
+ <translation>Ich konnte dieses Daten-Verzeichnis nicht öffnen:
%1
Bitte überprüfe deine Installation!</translation>
@@ -239,11 +258,11 @@
</message>
<message>
<source>Stylesheet imported from %1</source>
- <translation>Style-Sheet aus %1 importiert</translation>
+ <translation>Stylesheet aus %1 importiert</translation>
</message>
<message>
<source>Enter %1 if you want to use the current StyleSheet in future, enter %2 to reset!</source>
- <translation>Gib %1 ein wenn du das jetzige Style-Sheet in Zukunft weiterverwenden willst, gib %2 ein um es zurückzusetzen!</translation>
+ <translation>Gib %1 ein, wenn du das jetzige Stylesheet in Zukunft weiterverwenden willst; gib %2 ein, um es zurückzusetzen!</translation>
</message>
<message>
<source>Couldn't read %1</source>
@@ -251,27 +270,27 @@
</message>
<message>
<source>StyleSheet discarded</source>
- <translation>Style-Sheet verworfen</translation>
+ <translation>Stylesheet verworfen</translation>
</message>
<message>
<source>StyleSheet saved to %1</source>
- <translation>Style-Sheet wurde nach %1 gesichert</translation>
+ <translation>Stylesheet wurde nach %1 gesichert</translation>
</message>
<message>
<source>Failed to save StyleSheet to %1</source>
- <translation>Style-Sheet konnte nich nach %1 gesichert werden</translation>
+ <translation>Stylesheet konnte nicht nach %1 gesichert werden</translation>
</message>
<message>
<source>%1 has joined</source>
- <translation type="unfinished"></translation>
+ <translation>%1 ist beigetreten</translation>
</message>
<message>
<source>%1 has left</source>
- <translation type="unfinished"></translation>
+ <translation>%1 ist gegangen</translation>
</message>
<message>
<source>%1 has left (%2)</source>
- <translation type="unfinished"></translation>
+ <translation>%1 ist gegangen</translation>
</message>
</context>
<context>
@@ -321,11 +340,11 @@
</message>
<message>
<source>%1's Team</source>
- <translation type="unfinished"></translation>
+ <translation>Team von %1</translation>
</message>
<message>
<source>Hedgewars - Nick registered</source>
- <translation type="unfinished"></translation>
+ <translation>Hedgewars – Spitzname registriert</translation>
</message>
<message>
<source>This nick is registered, and you haven't specified a password.
@@ -333,48 +352,71 @@
If this nick isn't yours, please register your own nick at www.hedgewars.org
Password:</source>
- <translation type="unfinished"></translation>
+ <translation>Dieser Spitzname ist registriert und du hast kein Passwort angegeben.
+
+Falls dieser Spitzname nicht deiner ist, dann registirier bitte deinen eigenen Spitznamen an www.hedgewars.org.
+
+Passwort:</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>Dein Spitzname ist nicht registriert.
+Um Andere von der Benutzung abzuhalten, registrier
+ihn bitte auf www.hedgewars.org</translation>
</message>
<message>
<source>
Your password wasn't saved either.</source>
- <translation type="unfinished"></translation>
+ <translation>
+
+Außerdem wurde auch dein Passwort nicht gespeichert.</translation>
</message>
<message>
<source>Hedgewars - Empty nickname</source>
- <translation type="unfinished"></translation>
+ <translation>Hedgewars – leerer Spitzname</translation>
</message>
<message>
<source>Hedgewars - Wrong password</source>
- <translation type="unfinished"></translation>
+ <translation>Hedgewars – falsches Passwort</translation>
</message>
<message>
<source>You entered a wrong password.</source>
- <translation type="unfinished"></translation>
+ <translation>Du hast ein falsches Passwort eingegeben.</translation>
</message>
<message>
<source>Try Again</source>
- <translation type="unfinished"></translation>
+ <translation>noch einmal versuchen</translation>
</message>
<message>
<source>Hedgewars - Connection error</source>
- <translation type="unfinished"></translation>
+ <translation>Hedgewars – Verbindungsfehler</translation>
</message>
<message>
<source>You reconnected too fast.
Please wait a few seconds and try again.</source>
- <translation type="unfinished"></translation>
+ <translation>Du hast dich zu früh erneut verbunden.
+Bitte warte ein paar Sekunden und versuch es noch einmal.</translation>
+ </message>
+ <message>
+ <source>Guest</source>
+ <translation>Gast</translation>
+ </message>
+ <message>
+ <source>Room password</source>
+ <translation>Raumkennwort</translation>
+ </message>
+ <message>
+ <source>The room is protected with password.
+Please, enter the password:</source>
+ <translation>Der Raum wird durch ein Kennwort geschützt.
+Bitte Kennwort eingeben:</translation>
</message>
<message>
<source>This page requires an internet connection.</source>
- <translation type="unfinished"></translation>
+ <translation>Diese Seite benötigt eine Internetverbindung.</translation>
</message>
</context>
<context>
@@ -428,91 +470,95 @@
</message>
<message>
<source>Map type:</source>
- <translation type="unfinished"></translation>
+ <translation>Kartentyp:</translation>
</message>
<message>
<source>Image map</source>
- <translation type="unfinished"></translation>
+ <translation>Bild-Karte</translation>
</message>
<message>
<source>Mission map</source>
- <translation type="unfinished"></translation>
+ <translation>Missions-Karte</translation>
</message>
<message>
<source>Hand-drawn</source>
- <translation type="unfinished">Handgemalt</translation>
+ <translation>Handgemalt</translation>
</message>
<message>
<source>Randomly generated</source>
- <translation type="unfinished"></translation>
+ <translation>Zufallsgeneriert</translation>
</message>
<message>
<source>Random maze</source>
- <translation type="unfinished"></translation>
+ <translation>Zufälliges Labyrinth</translation>
</message>
<message>
<source>Random</source>
- <translation type="unfinished">Zufall</translation>
+ <translation>Zufall</translation>
</message>
<message>
<source>Map preview:</source>
- <translation type="unfinished"></translation>
+ <translation>Kartenvorschau:</translation>
</message>
<message>
<source>Load map drawing</source>
- <translation type="unfinished"></translation>
+ <translation>Lade gezeichnete Karte</translation>
</message>
<message>
<source>Edit map drawing</source>
- <translation type="unfinished"></translation>
+ <translation>Bearbeite gezeichnete Karte</translation>
</message>
<message>
<source>Small islands</source>
- <translation type="unfinished"></translation>
+ <translation>Kleine Inseln</translation>
</message>
<message>
<source>Medium islands</source>
- <translation type="unfinished"></translation>
+ <translation>Mittelgroße Inseln</translation>
</message>
<message>
<source>Large islands</source>
- <translation type="unfinished"></translation>
+ <translation>Große Inseln</translation>
</message>
<message>
<source>Map size:</source>
- <translation type="unfinished"></translation>
+ <translation>Kartengröße:</translation>
</message>
<message>
<source>Maze style:</source>
- <translation type="unfinished"></translation>
+ <translation>Labyrinth-Art:</translation>
</message>
<message>
<source>Mission:</source>
- <translation type="unfinished"></translation>
+ <translation>Mission:</translation>
</message>
<message>
<source>Map:</source>
- <translation type="unfinished"></translation>
+ <translation>Karte:</translation>
+ </message>
+ <message>
+ <source>Theme: </source>
+ <translation type="obsolete">Thema:</translation>
</message>
<message>
<source>Load drawn map</source>
- <translation type="unfinished">Gezeichnete Karte laden</translation>
+ <translation>Gezeichnete Karte laden</translation>
</message>
<message>
<source>Drawn Maps</source>
- <translation type="unfinished">Gezeichnete Karten</translation>
+ <translation>Gezeichnete Karten</translation>
</message>
<message>
<source>All files</source>
- <translation type="unfinished">Alle Dateien</translation>
+ <translation>Alle Dateien</translation>
</message>
<message>
<source>Large tunnels</source>
- <translation type="unfinished"></translation>
+ <translation>Große Tunnel</translation>
</message>
<message>
<source>Theme: %1</source>
- <translation type="unfinished"></translation>
+ <translation>Thema: %1</translation>
</message>
</context>
<context>
@@ -585,22 +631,25 @@
<name>HWPasswordDialog</name>
<message>
<source>Login</source>
- <translation type="unfinished"></translation>
+ <translation>Einloggen</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>Um dich zu dem Server zu verbinden, log dich bitte ein.
+
+Wenn du kein Benutzerkonto von www.hedgewars.org hast,
+dann trag einfach nur deinen Spitznamen ein.</translation>
</message>
<message>
<source>Nickname:</source>
- <translation type="unfinished"></translation>
+ <translation>Spitzname:</translation>
</message>
<message>
<source>Password:</source>
- <translation type="unfinished"></translation>
+ <translation>Passwort:</translation>
</message>
</context>
<context>
@@ -618,36 +667,36 @@
<name>HatButton</name>
<message>
<source>Change hat (%1)</source>
- <translation type="unfinished"></translation>
+ <translation>Hut wechseln (%1)</translation>
</message>
</context>
<context>
<name>HatPrompt</name>
<message>
<source>Cancel</source>
- <translation type="unfinished">Abbrechen</translation>
+ <translation>Abbrechen</translation>
</message>
<message>
<source>Use selected hat</source>
- <translation type="unfinished"></translation>
+ <translation>Gewählten Hut auswählen</translation>
</message>
<message>
<source>Search for a hat:</source>
- <translation type="unfinished"></translation>
+ <translation>Nach einem Hut suchen:</translation>
</message>
</context>
<context>
<name>KB</name>
<message>
<source>SDL_ttf returned error while rendering text, most propably it is related to the bug in freetype2. It's recommended to update your freetype lib.</source>
- <translation>SDL_ttf meldete einen Fehler beim Rendern des Textes, dies liegt vermutlich an einem Fehler in freetype2. Es wird empfohlen die freetype Bibliothek auf den neuesten Stand zu bringen.</translation>
+ <translation type="obsolete">SDL_ttf meldete einen Fehler beim Rendern des Textes, dies liegt vermutlich an einem Fehler in freetype2. Es wird empfohlen, die freetype-Bibliothek auf dem neuesten Stand zu bringen.</translation>
</message>
</context>
<context>
<name>KeyBinder</name>
<message>
<source>Category</source>
- <translation type="unfinished"></translation>
+ <translation>Kategorie</translation>
</message>
</context>
<context>
@@ -655,30 +704,42 @@
<message>
<source>Duration: %1m %2s
</source>
- <translation type="unfinished">Dauer: %1m %2s</translation>
+ <translation type="obsolete">Dauer: %1m %2s</translation>
</message>
<message>
<source>Video: %1x%2, </source>
- <translation type="unfinished">Video: %1x%2, </translation>
+ <translation type="obsolete">Video: %1x%2, </translation>
</message>
<message>
<source>%1 fps, </source>
- <translation type="unfinished">%1 fps, </translation>
+ <translation type="obsolete">%1 Bilder pro Sekunde, </translation>
</message>
<message>
<source>Audio: </source>
- <translation type="unfinished">Audio: </translation>
+ <translation>Audio: </translation>
</message>
<message>
<source>unknown</source>
- <translation type="unfinished"></translation>
+ <translation>unbekannt</translation>
+ </message>
+ <message>
+ <source>Duration: %1m %2s</source>
+ <translation>Dauer: %1m %2s</translation>
+ </message>
+ <message>
+ <source>Video: %1x%2</source>
+ <translation>Video: %1x%2</translation>
+ </message>
+ <message>
+ <source>%1 fps</source>
+ <translation>%1 Bilder pro Sekunde, </translation>
</message>
</context>
<context>
<name>MapModel</name>
<message>
<source>No description available.</source>
- <translation type="unfinished"></translation>
+ <translation>Keine Beschreibung verfügbar.</translation>
</message>
</context>
<context>
@@ -701,7 +762,7 @@
</message>
<message>
<source>Latest version protocol number:</source>
- <translation>Letzte Protokoll-Version</translation>
+ <translation>Protokollnummer der neuesten Version:</translation>
</message>
<message>
<source>MOTD preview:</source>
@@ -713,35 +774,35 @@
</message>
<message>
<source>General</source>
- <translation type="unfinished">Allgemein</translation>
+ <translation>Allgemein</translation>
</message>
<message>
<source>Bans</source>
- <translation type="unfinished"></translation>
+ <translation>Verbannungen</translation>
</message>
<message>
<source>IP/Nick</source>
- <translation type="unfinished"></translation>
+ <translation>IP-Adr./Spitzname</translation>
</message>
<message>
<source>Expiration</source>
- <translation type="unfinished"></translation>
+ <translation>Ablaufzeitpunkt</translation>
</message>
<message>
<source>Reason</source>
- <translation type="unfinished"></translation>
+ <translation>Grund</translation>
</message>
<message>
<source>Refresh</source>
- <translation type="unfinished"></translation>
+ <translation>Aktualisieren</translation>
</message>
<message>
<source>Add</source>
- <translation type="unfinished"></translation>
+ <translation>Hinzufügen</translation>
</message>
<message>
<source>Remove</source>
- <translation type="unfinished"></translation>
+ <translation>Entfernen</translation>
</message>
</context>
<context>
@@ -755,11 +816,11 @@
<name>PageDataDownload</name>
<message>
<source>Loading, please wait.</source>
- <translation type="unfinished"></translation>
+ <translation>Ladevorgang. Bitte warten.</translation>
</message>
<message>
<source>This page requires an internet connection.</source>
- <translation type="unfinished"></translation>
+ <translation>Diese Seite benötigt eine Internetverbindung.</translation>
</message>
</context>
<context>
@@ -800,6 +861,18 @@
<source>Eraser</source>
<translation>Radierer</translation>
</message>
+ <message>
+ <source>Polyline</source>
+ <translation>Linienzug</translation>
+ </message>
+ <message>
+ <source>Rectangle</source>
+ <translation>Rechteck</translation>
+ </message>
+ <message>
+ <source>Ellipse</source>
+ <translation>Ellipse</translation>
+ </message>
</context>
<context>
<name>PageEditTeam</name>
@@ -809,39 +882,39 @@
</message>
<message>
<source>Select an action to choose a custom key bind for this team</source>
- <translation type="unfinished"></translation>
+ <translation>Wählt eine Aktion, um eine benutzerdefinierte Taste für dieses Team auszuwählen</translation>
</message>
<message>
<source>Use my default</source>
- <translation type="unfinished"></translation>
+ <translation>Verwende meine Vorgabe</translation>
</message>
<message>
<source>Reset all binds</source>
- <translation type="unfinished"></translation>
+ <translation>Alle Tastenbelegungen zurücksetzen</translation>
</message>
<message>
<source>Custom Controls</source>
- <translation type="unfinished"></translation>
+ <translation>Benutzerdefinierte Steuerung</translation>
</message>
<message>
<source>Hat</source>
- <translation type="unfinished">Cooliehat</translation>
+ <translation>Hut</translation>
</message>
<message>
<source>Name</source>
- <translation type="unfinished">Name</translation>
+ <translation>Name</translation>
</message>
<message>
<source>This hedgehog's name</source>
- <translation type="unfinished"></translation>
+ <translation>Name dieses Igels</translation>
</message>
<message>
<source>Randomize this hedgehog's name</source>
- <translation type="unfinished"></translation>
+ <translation>Zufälligen Igelnamen generieren</translation>
</message>
<message>
<source>Random Team</source>
- <translation type="unfinished">Zufallsteam</translation>
+ <translation>Zufallsteam</translation>
</message>
</context>
<context>
@@ -886,8 +959,8 @@
<message numerus="yes">
<source><b>%1</b> thought it's good to shoot his own hedgehogs with <b>%2</b> pts.</source>
<translation>
- <numerusform><b>%1</b> dachte es ist gut seinen eigenen Igel mit <b>%2</b> Punkten zu verletzen.</numerusform>
- <numerusform><b>%1</b> dachte es ist gut seine eigenen Igel mit <b>%2</b> Punkten zu verletzen.</numerusform>
+ <numerusform><b>%1</b> dachte, es sei gut, die eigenen Igel mit <b>%2</b> Punkten zu verletzen.</numerusform>
+ <numerusform><b>%1</b> dachte, es sei gut, die eigenen Igel mit <b>%2</b> Punkten zu verletzen.</numerusform>
</translation>
</message>
<message numerus="yes">
@@ -906,11 +979,18 @@
</message>
<message>
<source>Play again</source>
- <translation type="unfinished"></translation>
+ <translation>Nochmal spielen</translation>
</message>
<message>
<source>Save</source>
- <translation type="unfinished">Sichern</translation>
+ <translation>Sichern</translation>
+ </message>
+ <message numerus="yes">
+ <source>(%1 %2)</source>
+ <translation>
+ <numerusform>(%1 %2)</numerusform>
+ <numerusform>(%1 %2)</numerusform>
+ </translation>
</message>
</context>
<context>
@@ -967,23 +1047,23 @@
</message>
<message>
<source>Play a game across a local area network</source>
- <translation type="unfinished"></translation>
+ <translation>ein Spiel über ein lokales Netzwerk (LAN) spielen</translation>
</message>
<message>
<source>Play a game on an official server</source>
- <translation type="unfinished"></translation>
+ <translation>ein Spiel auf einem offiziellen Server spielen</translation>
</message>
<message>
<source>Feedback</source>
- <translation type="unfinished"></translation>
+ <translation>Feedback</translation>
</message>
<message>
<source>Play local network game</source>
- <translation type="unfinished"></translation>
+ <translation>Spiel im lokalen Netzwerk</translation>
</message>
<message>
<source>Play official network game</source>
- <translation type="unfinished"></translation>
+ <translation>Spiel im offiziellem Netzwerk</translation>
</message>
</context>
<context>
@@ -994,7 +1074,7 @@
</message>
<message>
<source>Edit game preferences</source>
- <translation type="unfinished">Bearbeite Spieleinstellungen</translation>
+ <translation>Bearbeite Spieleinstellungen</translation>
</message>
</context>
<context>
@@ -1005,30 +1085,30 @@
</message>
<message>
<source>Edit game preferences</source>
- <translation type="unfinished">Bearbeite Spieleinstellungen</translation>
+ <translation>Bearbeite Spieleinstellungen</translation>
</message>
<message>
<source>Start</source>
- <translation type="unfinished">Start</translation>
+ <translation>Start</translation>
</message>
<message>
<source>Update</source>
- <translation type="unfinished">Aktualisieren</translation>
+ <translation>Aktualisieren</translation>
</message>
<message>
<source>Room controls</source>
- <translation type="unfinished"></translation>
+ <translation>Raumeinstellungen</translation>
</message>
</context>
<context>
<name>PageNetServer</name>
<message>
<source>Click here for details</source>
- <translation type="unfinished"></translation>
+ <translation>Klick hier, um mehr zu erfahren</translation>
</message>
<message>
<source>Insert your address here</source>
- <translation type="unfinished"></translation>
+ <translation>Gib deine Adress hier ein</translation>
</message>
</context>
<context>
@@ -1047,7 +1127,7 @@
</message>
<message>
<source>You can't edit teams from team selection. Go back to main menu to add, edit or delete teams.</source>
- <translation>Du kannst keine Teams bei der Team-Auswahl ändern. Gehe zum Hauptmenü zurück um Teams hinzuzufügen, zu editieren oder zu löschen.</translation>
+ <translation>Du kannst keine Teams bei der Team-Auswahl ändern. Gehe zum Hauptmenü zurück, um Teams hinzuzufügen, zu editieren oder zu löschen.</translation>
</message>
<message>
<source>New scheme</source>
@@ -1115,91 +1195,91 @@
</message>
<message>
<source>Select an action to change what key controls it</source>
- <translation type="unfinished"></translation>
+ <translation>Wähle eine Aktion, um zu ändern, durch welche Taste sie kontrolliert wird</translation>
</message>
<message>
<source>Reset to default</source>
- <translation type="unfinished"></translation>
+ <translation>Auf Standard zurücksetzen</translation>
</message>
<message>
<source>Reset all binds</source>
- <translation type="unfinished"></translation>
+ <translation>Alle Tastenbelegungen zurücksetzen</translation>
</message>
<message>
<source>Game</source>
- <translation type="unfinished"></translation>
+ <translation>Spiel</translation>
</message>
<message>
<source>Graphics</source>
- <translation type="unfinished"></translation>
+ <translation>Grafik</translation>
</message>
<message>
<source>Audio</source>
- <translation type="unfinished"></translation>
+ <translation>Ton</translation>
</message>
<message>
<source>Controls</source>
- <translation type="unfinished"></translation>
+ <translation>Steuerung</translation>
</message>
<message>
<source>Video Recording</source>
- <translation type="unfinished"></translation>
+ <translation>Videoaufzeichnung</translation>
</message>
<message>
<source>Network</source>
- <translation type="unfinished"></translation>
+ <translation>Netzwerk</translation>
</message>
<message>
<source>Teams</source>
- <translation type="unfinished">Teams</translation>
+ <translation>Teams</translation>
</message>
<message>
<source>Schemes</source>
- <translation type="unfinished"></translation>
+ <translation>Schemata</translation>
</message>
<message>
<source>Weapons</source>
- <translation type="unfinished">Waffen</translation>
+ <translation>Waffen</translation>
</message>
<message>
<source>Frontend</source>
- <translation type="unfinished"></translation>
+ <translation>Benutzeroberfläche</translation>
</message>
<message>
<source>Custom colors</source>
- <translation type="unfinished">Benutzerdefinierte Farben</translation>
+ <translation>Benutzerdefinierte Farben</translation>
</message>
<message>
<source>Game audio</source>
- <translation type="unfinished"></translation>
+ <translation>Ton im Spiel</translation>
</message>
<message>
<source>Frontend audio</source>
- <translation type="unfinished"></translation>
+ <translation>Ton in der Benutzeroberfläche</translation>
</message>
<message>
<source>Account</source>
- <translation type="unfinished"></translation>
+ <translation>Benutzerkonto</translation>
</message>
<message>
<source>Proxy settings</source>
- <translation type="unfinished">Proxy-Einstellungen</translation>
+ <translation>Proxy-Einstellungen</translation>
</message>
<message>
<source>Miscellaneous</source>
- <translation type="unfinished">Verschiedenes</translation>
+ <translation>Verschiedenes</translation>
</message>
<message>
<source>Updates</source>
- <translation type="unfinished"></translation>
+ <translation>Updates</translation>
</message>
<message>
<source>Check for updates</source>
- <translation type="unfinished"></translation>
+ <translation>nach Updates suchen</translation>
</message>
<message>
<source>Video recording options</source>
- <translation type="unfinished">Videoaufnahmeoptionen</translation>
+ <translation>Videoaufnahmeoptionen</translation>
</message>
</context>
<context>
@@ -1233,11 +1313,11 @@
</message>
<message>
<source>Rules:</source>
- <translation>Regeln:</translation>
+ <translation type="obsolete">Regeln:</translation>
</message>
<message>
<source>Weapons:</source>
- <translation>Waffen:</translation>
+ <translation type="obsolete">Waffen:</translation>
</message>
<message>
<source>Search:</source>
@@ -1256,27 +1336,27 @@
</message>
<message>
<source>Search for a room:</source>
- <translation type="unfinished"></translation>
+ <translation>Nach einem Raum suchen:</translation>
</message>
<message>
<source>Create room</source>
- <translation type="unfinished"></translation>
+ <translation>Raum erstellen</translation>
</message>
<message>
<source>Join room</source>
- <translation type="unfinished"></translation>
+ <translation>Raum beitreten</translation>
</message>
<message>
<source>Room state</source>
- <translation type="unfinished"></translation>
+ <translation>Raum-Status</translation>
</message>
<message>
<source>Clear filters</source>
- <translation type="unfinished"></translation>
+ <translation type="obsolete">Filter leeren</translation>
</message>
<message>
<source>Open server administration page</source>
- <translation type="unfinished"></translation>
+ <translation>Server-Administrationsseite öffnen</translation>
</message>
</context>
<context>
@@ -1395,11 +1475,27 @@
</message>
<message>
<source>Add an indestructible border around the terrain</source>
- <translation>Fügt eine unzerstörbare Randbegrenzung um das Spielfeld herum hinzu.</translation>
+ <translation>Füge dem Spielfeld eine unzerstörbare Randbegrenzung hinzu</translation>
</message>
<message>
<source>Add an indestructible border along the bottom</source>
- <translation>Fügt eine unzerstörbare Randbegrenzung am unteren Kartenrand hinzu.</translation>
+ <translation>Füge dem unteren Kartenrand eine unzerstörbare Randbegrenzung an</translation>
+ </message>
+ <message>
+ <source>None (Default)</source>
+ <translation>Keine (Standard)</translation>
+ </message>
+ <message>
+ <source>Wrap (World wraps)</source>
+ <translation>Umbrechen (Welt wiederholt sich)</translation>
+ </message>
+ <message>
+ <source>Bounce (Edges reflect)</source>
+ <translation>Abprallen (Grenzen reflektieren)</translation>
+ </message>
+ <message>
+ <source>Sea (Edges connect to sea)</source>
+ <translation>Ozean (Grenzen sind mit dem Wasser verbunden)</translation>
</message>
</context>
<context>
@@ -1429,7 +1525,7 @@
</message>
<message>
<source>Play a hotseat game against your friends, or AI teams</source>
- <translation>Spiele gegen deine Freunde oder Computer-Teams.</translation>
+ <translation>Spiele gegen deine Freunde oder Computer-Teams</translation>
</message>
<message>
<source>Campaign Mode</source>
@@ -1499,19 +1595,27 @@
<message>
<source>Date: %1
</source>
- <translation type="unfinished"></translation>
+ <translation type="obsolete">Datum: %1</translation>
</message>
<message>
<source>Size: %1
</source>
- <translation type="unfinished"></translation>
+ <translation type="obsolete">Größe: %1</translation>
+ </message>
+ <message>
+ <source>Date: %1</source>
+ <translation>Datum: %1</translation>
+ </message>
+ <message>
+ <source>Size: %1</source>
+ <translation>Größe: %1</translation>
</message>
</context>
<context>
<name>QAction</name>
<message>
<source>Kick</source>
- <translation>Rauswerfen</translation>
+ <translation>Hinauswerfen</translation>
</message>
<message>
<source>Restrict Joins</source>
@@ -1555,15 +1659,15 @@
</message>
<message>
<source>Restrict Unregistered Players Join</source>
- <translation type="unfinished"></translation>
+ <translation>Verhindere das Beitreten unregistrierter Spieler</translation>
</message>
<message>
<source>Show games in lobby</source>
- <translation type="unfinished"></translation>
+ <translation>Zeige Spiele in Vorbereitung</translation>
</message>
<message>
<source>Show games in-progress</source>
- <translation type="unfinished"></translation>
+ <translation>Zeige zur Zeit laufende Spiele</translation>
</message>
</context>
<context>
@@ -1614,31 +1718,63 @@
</message>
<message>
<source>Visual effects</source>
- <translation type="unfinished"></translation>
+ <translation>Visuelle Effekte</translation>
</message>
<message>
<source>Sound</source>
- <translation type="unfinished"></translation>
+ <translation>Ton</translation>
</message>
<message>
<source>In-game sound effects</source>
- <translation type="unfinished"></translation>
+ <translation>Toneffekte im Spiel</translation>
</message>
<message>
<source>Music</source>
- <translation type="unfinished"></translation>
+ <translation>Musik</translation>
</message>
<message>
<source>In-game music</source>
- <translation type="unfinished"></translation>
+ <translation>Musik im Spiel</translation>
</message>
<message>
<source>Frontend sound effects</source>
- <translation type="unfinished"></translation>
+ <translation>Toneffekte in der Benutzeroberfläche</translation>
</message>
<message>
<source>Frontend music</source>
- <translation type="unfinished"></translation>
+ <translation>Musik in der Benutzeroberfläche</translation>
+ </message>
+ <message>
+ <source>Team</source>
+ <translation>Team</translation>
+ </message>
+ <message>
+ <source>Enable team tags by default</source>
+ <translation>Aktiviere Team-Kennzeichnung bei Spielstart</translation>
+ </message>
+ <message>
+ <source>Hog</source>
+ <translation>Igel</translation>
+ </message>
+ <message>
+ <source>Enable hedgehog tags by default</source>
+ <translation>Aktiviere Igel-Kennzeichnung bei Spielstart</translation>
+ </message>
+ <message>
+ <source>Health</source>
+ <translation>Lebenspunkte</translation>
+ </message>
+ <message>
+ <source>Enable health tags by default</source>
+ <translation>Aktiviere Lebenspunkte-Kennzeichnung bei Spielstart</translation>
+ </message>
+ <message>
+ <source>Translucent</source>
+ <translation>Durchsichtig</translation>
+ </message>
+ <message>
+ <source>Enable translucent tags by default</source>
+ <translation>Aktiviere durchsichtige bei Spielstart</translation>
</message>
</context>
<context>
@@ -1661,7 +1797,7 @@
</message>
<message>
<source>Any</source>
- <translation>Alle</translation>
+ <translation type="obsolete">Alle</translation>
</message>
<message>
<source>In lobby</source>
@@ -1875,7 +2011,7 @@
</message>
<message>
<source>Tip: </source>
- <translation>Tipp:</translation>
+ <translation type="obsolete">Tipp:</translation>
</message>
<message>
<source>Quality</source>
@@ -1983,47 +2119,59 @@
</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>Diese Entwicklungsversion ist unfertig und könnte nicht kompatibel mit anderen Versionen des Spiels sein, wobei sogar einige Funktionen sogar kaputt oder unfertig sein könnten.</translation>
</message>
<message>
<source>Fullscreen</source>
- <translation type="unfinished">Vollbild</translation>
+ <translation>Vollbild</translation>
</message>
<message>
<source>Fullscreen Resolution</source>
- <translation type="unfinished"></translation>
+ <translation>Vollbild-Auflösung</translation>
</message>
<message>
<source>Windowed Resolution</source>
- <translation type="unfinished"></translation>
+ <translation>Fenster-Auflösung</translation>
</message>
<message>
<source>Your Email</source>
- <translation type="unfinished"></translation>
+ <translation>Deine E-Mail-Adresse</translation>
</message>
<message>
<source>Summary</source>
- <translation type="unfinished"></translation>
+ <translation>Zusammenfassung</translation>
</message>
<message>
<source>Send system information</source>
- <translation type="unfinished"></translation>
+ <translation>Systeminformation senden</translation>
</message>
<message>
<source>Type the security code:</source>
- <translation type="unfinished"></translation>
+ <translation>Gib den Sicherheitscode ein:</translation>
</message>
<message>
<source>Revision</source>
- <translation type="unfinished"></translation>
+ <translation>Revision</translation>
</message>
<message>
<source>This program is distributed under the %1</source>
- <translation type="unfinished"></translation>
+ <translation>Dieses Programm wird unter der %1 veröffentlicht</translation>
+ </message>
+ <message>
+ <source>Tip: %1</source>
+ <translation>Tipp: %1</translation>
+ </message>
+ <message>
+ <source>Displayed tags above hogs and translucent tags</source>
+ <translation>Angezeigte Infos über Igel und Info-Durchsichtigkeit</translation>
</message>
<message>
<source>This setting will be effective at next restart.</source>
- <translation type="unfinished"></translation>
+ <translation>Diese Einstellung tritt ab nächstem Neustart in Kraft.</translation>
+ </message>
+ <message>
+ <source>World Edge</source>
+ <translation>Spielfeldgrenze</translation>
</message>
</context>
<context>
@@ -2047,10 +2195,6 @@
<source>Hedgewars %1</source>
<translation>Hedgewars %1</translation>
</message>
- <message>
- <source>-r%1 (%2)</source>
- <translation type="unfinished"></translation>
- </message>
</context>
<context>
<name>QMessageBox</name>
@@ -2227,7 +2371,7 @@
</message>
<message>
<source>Do you really want to cancel uploading %1?</source>
- <translation>Willst du das Hochladen von %1 wirklich abbrechen_</translation>
+ <translation>Willst du das Hochladen von %1 wirklich abbrechen?</translation>
</message>
<message>
<source>File error</source>
@@ -2267,40 +2411,48 @@
</message>
<message>
<source>Hedgewars - Nick not registered</source>
- <translation type="unfinished"></translation>
+ <translation>Hedgewars – Spitzname nicht registriert</translation>
</message>
<message>
<source>System Information Preview</source>
- <translation type="unfinished"></translation>
+ <translation>Systeminformations-Vorschau</translation>
</message>
<message>
<source>Failed to generate captcha</source>
- <translation type="unfinished"></translation>
+ <translation>Captcha-Generierung fehlgeschlagen</translation>
</message>
<message>
<source>Failed to download captcha</source>
- <translation type="unfinished"></translation>
+ <translation>Captcha-Download fehlgeschlagen</translation>
</message>
<message>
<source>Please fill out all fields. Email is optional.</source>
- <translation type="unfinished"></translation>
+ <translation>Bitte füll alle Felder aus. Das Feld »E-Mail« ist optional.</translation>
</message>
<message>
<source>Hedgewars - Warning</source>
- <translation type="unfinished"></translation>
+ <translation>Hedgewars – Warnung</translation>
</message>
<message>
<source>Hedgewars - Information</source>
- <translation type="unfinished"></translation>
+ <translation>Hedgewars – Information</translation>
</message>
<message>
<source>Not all players are ready</source>
- <translation type="unfinished"></translation>
+ <translation>Es sind nicht alle Spieler bereit</translation>
</message>
<message>
<source>Are you sure you want to start this game?
Not all players are ready.</source>
- <translation type="unfinished"></translation>
+ <translation>Bist du sicher, dass du diesees Spiel staren willst?
+Es sind nicht alle Spieler bereit.</translation>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <source>No description available</source>
+ <translation>Keine Beschreibung verfügbar</translation>
</message>
</context>
<context>
@@ -2387,58 +2539,66 @@
</message>
<message>
<source>Restore default coding parameters</source>
- <translation type="unfinished"></translation>
+ <translation>Standard-Kodierungs-Einstellungen wiederherstellen</translation>
</message>
<message>
<source>Open the video directory in your system</source>
- <translation type="unfinished"></translation>
+ <translation>das Videoverzeichnis deines Systems öffnen</translation>
</message>
<message>
<source>Play this video</source>
- <translation type="unfinished"></translation>
+ <translation>dieses Video abspielen</translation>
</message>
<message>
<source>Delete this video</source>
- <translation type="unfinished"></translation>
+ <translation>dieses Video löschen</translation>
</message>
<message>
<source>Upload this video to your Youtube account</source>
- <translation type="unfinished"></translation>
+ <translation>dieses Video zu deinem YouTube-Benutzerkonto hochladen</translation>
</message>
<message>
<source>Reset</source>
- <translation type="unfinished"></translation>
+ <translation>Zurücksetzen</translation>
</message>
<message>
<source>Set the default server port for Hedgewars</source>
- <translation type="unfinished"></translation>
+ <translation>den Standard-Server-Port für Hedgewars setzen</translation>
</message>
<message>
<source>Invite your friends to your server in just 1 click!</source>
- <translation type="unfinished"></translation>
+ <translation>Lad deine Freunde zu deinem Server mit nur einem Klick ein!</translation>
+ </message>
+ <message>
+ <source>Click to copy your unique server URL in your clipboard. Send this link to your friends and they will be able to join you.</source>
+ <translation type="obsolete">Klick, um deine einzigartige URL in die Zwischenablage zu kopieren. Versende diesen Link an deine Freunde, damit sie dich auf deinem Server besuchen können.</translation>
+ </message>
+ <message>
+ <source>Start private server</source>
+ <translation>privaten Server starten</translation>
</message>
<message>
<source>Click to copy your unique server URL to your clipboard. Send this link to your friends and they will be able to join you.</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Start private server</source>
- <translation type="unfinished"></translation>
+ <translation>Klicke um deine Server-Adresse in die Zwischenablage zu kopieren. Sende diese als Link zu deinen Freunden damit sie dir beitreten können.</translation>
</message>
</context>
<context>
<name>RoomNamePrompt</name>
<message>
<source>Enter a name for your room.</source>
- <translation type="unfinished"></translation>
+ <translation>Gib einen Namen für deinen Raum ein.</translation>
</message>
<message>
<source>Cancel</source>
- <translation type="unfinished">Abbrechen</translation>
+ <translation>Abbrechen</translation>
</message>
<message>
<source>Create room</source>
- <translation type="unfinished"></translation>
+ <translation>Raum erstellen</translation>
+ </message>
+ <message>
+ <source>set password</source>
+ <translation>Kennwort setzen</translation>
</message>
</context>
<context>
@@ -2487,24 +2647,28 @@
<source>Hand-drawn</source>
<translation>Handgemalt</translation>
</message>
+ <message>
+ <source>Script</source>
+ <translation>Skript</translation>
+ </message>
</context>
<context>
<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>Der sog. Seed (wörtlich übersetzt: engl. für »Saat«) ist die Basis für alle Zufallswerte, die vom Spiel generiert werden.</translation>
</message>
<message>
<source>Cancel</source>
- <translation type="unfinished">Abbrechen</translation>
+ <translation>Abbrechen</translation>
</message>
<message>
<source>Set seed</source>
- <translation type="unfinished"></translation>
+ <translation>Seed setzen</translation>
</message>
<message>
<source>Close</source>
- <translation type="unfinished"></translation>
+ <translation>Schließen</translation>
</message>
</context>
<context>
@@ -2538,41 +2702,42 @@
<name>TCPBase</name>
<message>
<source>Unable to start server at %1.</source>
- <translation type="unfinished"></translation>
+ <translation>Ich bin unfähig, den Server auf %1 zu starten.</translation>
</message>
<message>
<source>Unable to run engine at %1
Error code: %2</source>
- <translation type="unfinished"></translation>
+ <translation>Ich bin unfähig, die Engine auf %1 laufen zu lassen.
+Fehlercode: %2</translation>
</message>
</context>
<context>
<name>TeamSelWidget</name>
<message>
<source>At least two teams are required to play!</source>
- <translation type="unfinished"></translation>
+ <translation>Es sind mindestens zwei Teams für ein Spiel nötig!</translation>
</message>
</context>
<context>
<name>TeamShowWidget</name>
<message>
<source>%1's team</source>
- <translation type="unfinished"></translation>
+ <translation type="obsolete">Team von %1</translation>
</message>
</context>
<context>
<name>ThemePrompt</name>
<message>
<source>Cancel</source>
- <translation type="unfinished">Abbrechen</translation>
+ <translation>Abbrechen</translation>
</message>
<message>
<source>Search for a theme:</source>
- <translation type="unfinished"></translation>
+ <translation>Nach einem Thema suchen:</translation>
</message>
<message>
<source>Use selected theme</source>
- <translation type="unfinished"></translation>
+ <translation>Ausgewähltes Thema benutzen</translation>
</message>
</context>
<context>
@@ -2743,26 +2908,26 @@
</message>
<message>
<source>hedgehog info</source>
- <translation type="unfinished"></translation>
+ <translation>Igel-Info</translation>
</message>
</context>
<context>
<name>binds (categories)</name>
<message>
<source>Movement</source>
- <translation type="unfinished"></translation>
+ <translation>Bewegung</translation>
</message>
<message>
<source>Weapons</source>
- <translation type="unfinished">Waffen</translation>
+ <translation>Waffen</translation>
</message>
<message>
<source>Camera</source>
- <translation type="unfinished"></translation>
+ <translation>Kamera</translation>
</message>
<message>
<source>Miscellaneous</source>
- <translation type="unfinished">Verschiedenes</translation>
+ <translation>Verschiedenes</translation>
</message>
</context>
<context>
@@ -2833,7 +2998,7 @@
</message>
<message>
<source>Hedgehog movement</source>
- <translation type="unfinished"></translation>
+ <translation>Igel-Bewegung</translation>
</message>
</context>
<context>
@@ -3155,4 +3320,127 @@
<translation>Steuerkreuz</translation>
</message>
</context>
+<context>
+ <name>server</name>
+ <message>
+ <source>Authentication failed</source>
+ <translation>Authentifizierung fehlgeschlagen</translation>
+ </message>
+ <message>
+ <source>60 seconds cooldown after kick</source>
+ <translation>60 Sekunden Abkühlzeit nach Hinauswurf</translation>
+ </message>
+ <message>
+ <source>kicked</source>
+ <translation>hinausgeworfen</translation>
+ </message>
+ <message>
+ <source>Ping timeout</source>
+ <translation>Ping-Timeout</translation>
+ </message>
+ <message>
+ <source>bye</source>
+ <translation>tschüss</translation>
+ </message>
+ <message>
+ <source>Empty config entry</source>
+ <translation>Leerer Konfigurations-Eintrag</translation>
+ </message>
+ <message>
+ <source>Corrupted hedgehogs info</source>
+ <translation>Kaputte Igel-Info</translation>
+ </message>
+ <message>
+ <source>too many teams</source>
+ <translation>zu viele Teams</translation>
+ </message>
+ <message>
+ <source>too many hedgehogs</source>
+ <translation>zu viele Igel</translation>
+ </message>
+ <message>
+ <source>There's already a team with same name in the list</source>
+ <translation>Es gibt bereits ein Team mit dem selben Namen in der Liste</translation>
+ </message>
+ <message>
+ <source>round in progress</source>
+ <translation>laufende Runde</translation>
+ </message>
+ <message>
+ <source>restricted</source>
+ <translation>eingeschränkt</translation>
+ </message>
+ <message>
+ <source>REMOVE_TEAM: no such team</source>
+ <translation>REMOVE_TEAM: kein solches Team</translation>
+ </message>
+ <message>
+ <source>Not team owner!</source>
+ <translation>Nicht Team-Besitzer*In!</translation>
+ </message>
+ <message>
+ <source>Less than two clans!</source>
+ <translation>Weniger als zwei Clans!</translation>
+ </message>
+ <message>
+ <source>Room with such name already exists</source>
+ <translation>ein Raum mit einem solchen Namen existiert bereits</translation>
+ </message>
+ <message>
+ <source>Illegal room name</source>
+ <translation>verbotener Raumname</translation>
+ </message>
+ <message>
+ <source>No such room</source>
+ <translation>kein solcher Raum</translation>
+ </message>
+ <message>
+ <source>Joining restricted</source>
+ <translation>eingeschränkter Zugang</translation>
+ </message>
+ <message>
+ <source>Registered users only</source>
+ <translation>nur für registrierte Benutzer</translation>
+ </message>
+ <message>
+ <source>You are banned in this room</source>
+ <translation>Du wurdest von diesem Raum verbannt</translation>
+ </message>
+ <message>
+ <source>Nickname already chosen</source>
+ <translation>Spitzname bereits gewählt</translation>
+ </message>
+ <message>
+ <source>Illegal nickname</source>
+ <translation>Verbotener Spitzname</translation>
+ </message>
+ <message>
+ <source>Protocol already known</source>
+ <translation>Protokoll bereits bekannt</translation>
+ </message>
+ <message>
+ <source>Bad number</source>
+ <translation>Schlechte Zahl</translation>
+ </message>
+ <message>
+ <source>Nickname is already in use</source>
+ <translation>Spitzname bereits in Benutzung</translation>
+ </message>
+ <message>
+ <source>Restricted</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Not room master</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>No checker rights</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room version incompatible to your hedgewars version</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
</TS>
--- a/share/hedgewars/Data/Locale/hedgewars_el.ts Sat Dec 14 21:16:20 2013 +0400
+++ b/share/hedgewars/Data/Locale/hedgewars_el.ts Tue Dec 17 00:02:52 2013 +0400
@@ -153,6 +153,13 @@
</message>
</context>
<context>
+ <name>GameUIConfig</name>
+ <message>
+ <source>Guest</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
<name>HWApplication</name>
<message numerus="yes">
<source>%1 minutes</source>
@@ -371,6 +378,19 @@
<source>This page requires an internet connection.</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Guest</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>The room is protected with password.
+Please, enter the password:</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>HWGame</name>
@@ -635,7 +655,7 @@
<name>KB</name>
<message>
<source>SDL_ttf returned error while rendering text, most propably it is related to the bug in freetype2. It's recommended to update your freetype lib.</source>
- <translation type="unfinished">Το SDL_ttf επέστρεψε σφάλμα καθώς διερμήνευσε κείμενο. Το πιο πιθανό είναι αυτό να σχετίζεται με το σφάλμα στο freetype2. Προτείνεται να αναβαθμίσετε το freetype lib.</translation>
+ <translation type="obsolete">Το SDL_ttf επέστρεψε σφάλμα καθώς διερμήνευσε κείμενο. Το πιο πιθανό είναι αυτό να σχετίζεται με το σφάλμα στο freetype2. Προτείνεται να αναβαθμίσετε το freetype lib.</translation>
</message>
</context>
<context>
@@ -648,19 +668,6 @@
<context>
<name>LibavInteraction</name>
<message>
- <source>Duration: %1m %2s
-</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Video: %1x%2, </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>%1 fps, </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Audio: </source>
<translation type="unfinished"></translation>
</message>
@@ -668,6 +675,18 @@
<source>unknown</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Duration: %1m %2s</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Video: %1x%2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>%1 fps</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>MapModel</name>
@@ -795,6 +814,18 @@
<source>Save drawn map</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Polyline</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Rectangle</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Ellipse</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>PageEditTeam</name>
@@ -907,6 +938,13 @@
<source>Save</source>
<translation type="unfinished"></translation>
</message>
+ <message numerus="yes">
+ <source>(%1 %2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ <numerusform></numerusform>
+ </translation>
+ </message>
</context>
<context>
<name>PageInGame</name>
@@ -1228,11 +1266,11 @@
</message>
<message>
<source>Rules:</source>
- <translation type="unfinished">Κανόνες :</translation>
+ <translation type="obsolete">Κανόνες :</translation>
</message>
<message>
<source>Weapons:</source>
- <translation type="unfinished">Όπλα :</translation>
+ <translation type="obsolete">Όπλα :</translation>
</message>
<message>
<source>Search:</source>
@@ -1266,10 +1304,6 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>Clear filters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Open server administration page</source>
<translation type="unfinished"></translation>
</message>
@@ -1396,6 +1430,22 @@
<source>Copy</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>None (Default)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Wrap (World wraps)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Bounce (Edges reflect)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Sea (Edges connect to sea)</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>PageSelectWeapon</name>
@@ -1492,13 +1542,11 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>Date: %1
-</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Size: %1
-</source>
+ <source>Date: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Size: %1</source>
<translation type="unfinished"></translation>
</message>
</context>
@@ -1635,6 +1683,38 @@
<source>Frontend music</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Team</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable team tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Hog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable hedgehog tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Health</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable health tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Translucent</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable translucent tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QComboBox</name>
@@ -1656,7 +1736,7 @@
</message>
<message>
<source>Any</source>
- <translation type="unfinished">Οποιοσδήποτε</translation>
+ <translation type="obsolete">Οποιοσδήποτε</translation>
</message>
<message>
<source>In lobby</source>
@@ -1870,7 +1950,7 @@
</message>
<message>
<source>Tip: </source>
- <translation type="unfinished">Συμβουλή : </translation>
+ <translation type="obsolete">Συμβουλή : </translation>
</message>
<message>
<source>Quality</source>
@@ -2014,6 +2094,18 @@
<source>This setting will be effective at next restart.</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Tip: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Displayed tags above hogs and translucent tags</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>World Edge</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QLineEdit</name>
@@ -2036,10 +2128,6 @@
<source>Hedgewars %1</source>
<translation>Hedgewars %1</translation>
</message>
- <message>
- <source>-r%1 (%2)</source>
- <translation type="unfinished"></translation>
- </message>
</context>
<context>
<name>QMessageBox</name>
@@ -2265,6 +2353,13 @@
</message>
</context>
<context>
+ <name>QObject</name>
+ <message>
+ <source>No description available</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
<name>QPushButton</name>
<message>
<source>default</source>
@@ -2401,6 +2496,10 @@
<source>Create room</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>set password</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>RoomsListModel</name>
@@ -2448,6 +2547,10 @@
<source>Hand-drawn</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Script</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>SeedPrompt</name>
@@ -2515,13 +2618,6 @@
</message>
</context>
<context>
- <name>TeamShowWidget</name>
- <message>
- <source>%1's team</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
<name>ThemePrompt</name>
<message>
<source>Cancel</source>
@@ -3116,4 +3212,127 @@
<translation type="unfinished">DPad</translation>
</message>
</context>
+<context>
+ <name>server</name>
+ <message>
+ <source>Restricted</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>Illegal room name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room with such name already exists</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>
+ <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>No such room</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room version incompatible to your hedgewars version</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>Empty config entry</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
</TS>
--- a/share/hedgewars/Data/Locale/hedgewars_en.ts Sat Dec 14 21:16:20 2013 +0400
+++ b/share/hedgewars/Data/Locale/hedgewars_en.ts Tue Dec 17 00:02:52 2013 +0400
@@ -153,6 +153,13 @@
</message>
</context>
<context>
+ <name>GameUIConfig</name>
+ <message>
+ <source>Guest</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
<name>HWApplication</name>
<message numerus="yes">
<source>%1 minutes</source>
@@ -369,6 +376,19 @@
<source>This page requires an internet connection.</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Guest</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>The room is protected with password.
+Please, enter the password:</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>HWGame</name>
@@ -633,7 +653,7 @@
<name>KB</name>
<message>
<source>SDL_ttf returned error while rendering text, most propably it is related to the bug in freetype2. It's recommended to update your freetype lib.</source>
- <translation>SDL_ttf returned error while rendering text, most propably it is related to the bug in freetype2. It's recommended to update your freetype lib.</translation>
+ <translation type="obsolete">SDL_ttf returned error while rendering text, most propably it is related to the bug in freetype2. It's recommended to update your freetype lib.</translation>
</message>
</context>
<context>
@@ -646,19 +666,6 @@
<context>
<name>LibavInteraction</name>
<message>
- <source>Duration: %1m %2s
-</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Video: %1x%2, </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>%1 fps, </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Audio: </source>
<translation type="unfinished"></translation>
</message>
@@ -666,6 +673,18 @@
<source>unknown</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Duration: %1m %2s</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Video: %1x%2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>%1 fps</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>MapModel</name>
@@ -793,6 +812,18 @@
<source>Eraser</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Polyline</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Rectangle</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Ellipse</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>PageEditTeam</name>
@@ -905,6 +936,13 @@
<source>Save</source>
<translation type="unfinished"></translation>
</message>
+ <message numerus="yes">
+ <source>(%1 %2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ <numerusform></numerusform>
+ </translation>
+ </message>
</context>
<context>
<name>PageInGame</name>
@@ -1224,14 +1262,6 @@
<source>Room Name:</source>
<translation type="obsolete">Room Name:</translation>
</message>
- <message>
- <source>Rules:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Weapons:</source>
- <translation type="unfinished"></translation>
- </message>
<message numerus="yes">
<source>%1 players online</source>
<translation type="unfinished">
@@ -1256,10 +1286,6 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>Clear filters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Open server administration page</source>
<translation type="unfinished"></translation>
</message>
@@ -1386,6 +1412,22 @@
<source>Add an indestructible border along the bottom</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>None (Default)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Wrap (World wraps)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Bounce (Edges reflect)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Sea (Edges connect to sea)</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>PageSelectWeapon</name>
@@ -1482,13 +1524,11 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>Date: %1
-</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Size: %1
-</source>
+ <source>Date: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Size: %1</source>
<translation type="unfinished"></translation>
</message>
</context>
@@ -1625,6 +1665,38 @@
<source>Frontend music</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Team</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable team tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Hog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable hedgehog tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Health</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable health tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Translucent</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable translucent tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QComboBox</name>
@@ -1645,10 +1717,6 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>Any</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Disabled</source>
<translation type="unfinished"></translation>
</message>
@@ -1851,10 +1919,6 @@
<translation>Explosives</translation>
</message>
<message>
- <source>Tip: </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Quality</source>
<translation type="unfinished"></translation>
</message>
@@ -1996,6 +2060,18 @@
<source>This setting will be effective at next restart.</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Tip: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Displayed tags above hogs and translucent tags</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>World Edge</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QLineEdit</name>
@@ -2018,10 +2094,6 @@
<source>Hedgewars %1</source>
<translation>Hedgewars %1</translation>
</message>
- <message>
- <source>-r%1 (%2)</source>
- <translation type="unfinished"></translation>
- </message>
</context>
<context>
<name>QMessageBox</name>
@@ -2247,6 +2319,13 @@
</message>
</context>
<context>
+ <name>QObject</name>
+ <message>
+ <source>No description available</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
<name>QPushButton</name>
<message>
<source>default</source>
@@ -2383,6 +2462,10 @@
<source>Create room</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>set password</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>RoomsListModel</name>
@@ -2430,6 +2513,10 @@
<source>Hand-drawn</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Script</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>SeedPrompt</name>
@@ -2497,13 +2584,6 @@
</message>
</context>
<context>
- <name>TeamShowWidget</name>
- <message>
- <source>%1's team</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
<name>ThemePrompt</name>
<message>
<source>Cancel</source>
@@ -3098,4 +3178,127 @@
<translation type="unfinished"></translation>
</message>
</context>
+<context>
+ <name>server</name>
+ <message>
+ <source>Restricted</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>Illegal room name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room with such name already exists</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>
+ <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>No such room</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room version incompatible to your hedgewars version</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>Empty config entry</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
</TS>
--- a/share/hedgewars/Data/Locale/hedgewars_es.ts Sat Dec 14 21:16:20 2013 +0400
+++ b/share/hedgewars/Data/Locale/hedgewars_es.ts Tue Dec 17 00:02:52 2013 +0400
@@ -157,6 +157,13 @@
</message>
</context>
<context>
+ <name>GameUIConfig</name>
+ <message>
+ <source>Guest</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
<name>HWApplication</name>
<message numerus="yes">
<source>%1 minutes</source>
@@ -373,6 +380,19 @@
<source>This page requires an internet connection.</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Guest</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>The room is protected with password.
+Please, enter the password:</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>HWGame</name>
@@ -637,7 +657,7 @@
<name>KB</name>
<message>
<source>SDL_ttf returned error while rendering text, most propably it is related to the bug in freetype2. It's recommended to update your freetype lib.</source>
- <translation>SDL_ttf ha devuelto un error al dibujar texto, probablemente relacionado con un bug en freetype2. Se recomienda actualizar la librería freetype.</translation>
+ <translation type="obsolete">SDL_ttf ha devuelto un error al dibujar texto, probablemente relacionado con un bug en freetype2. Se recomienda actualizar la librería freetype.</translation>
</message>
</context>
<context>
@@ -650,19 +670,6 @@
<context>
<name>LibavInteraction</name>
<message>
- <source>Duration: %1m %2s
-</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Video: %1x%2, </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>%1 fps, </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Audio: </source>
<translation type="unfinished"></translation>
</message>
@@ -670,6 +677,18 @@
<source>unknown</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Duration: %1m %2s</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Video: %1x%2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>%1 fps</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>MapModel</name>
@@ -797,6 +816,18 @@
<source>Eraser</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Polyline</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Rectangle</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Ellipse</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>PageEditTeam</name>
@@ -909,6 +940,13 @@
<source>Save</source>
<translation type="unfinished">Guardar</translation>
</message>
+ <message numerus="yes">
+ <source>(%1 %2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ <numerusform></numerusform>
+ </translation>
+ </message>
</context>
<context>
<name>PageInGame</name>
@@ -1230,11 +1268,11 @@
</message>
<message>
<source>Rules:</source>
- <translation>Reglas:</translation>
+ <translation type="obsolete">Reglas:</translation>
</message>
<message>
<source>Weapons:</source>
- <translation>Armas:</translation>
+ <translation type="obsolete">Armas:</translation>
</message>
<message>
<source>Search:</source>
@@ -1268,10 +1306,6 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>Clear filters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Open server administration page</source>
<translation type="unfinished"></translation>
</message>
@@ -1398,6 +1432,22 @@
<source>Add an indestructible border along the bottom</source>
<translation>Añade un borde indestructible en la parta inferior</translation>
</message>
+ <message>
+ <source>None (Default)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Wrap (World wraps)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Bounce (Edges reflect)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Sea (Edges connect to sea)</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>PageSelectWeapon</name>
@@ -1494,13 +1544,11 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>Date: %1
-</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Size: %1
-</source>
+ <source>Date: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Size: %1</source>
<translation type="unfinished"></translation>
</message>
</context>
@@ -1637,6 +1685,38 @@
<source>Frontend music</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Team</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable team tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Hog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable hedgehog tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Health</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable health tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Translucent</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable translucent tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QComboBox</name>
@@ -1658,7 +1738,7 @@
</message>
<message>
<source>Any</source>
- <translation>Cualquiera</translation>
+ <translation type="obsolete">Cualquiera</translation>
</message>
<message>
<source>In lobby</source>
@@ -1872,7 +1952,7 @@
</message>
<message>
<source>Tip: </source>
- <translation>Consejo: </translation>
+ <translation type="obsolete">Consejo: </translation>
</message>
<message>
<source>Quality</source>
@@ -2016,6 +2096,18 @@
<source>This setting will be effective at next restart.</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Tip: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Displayed tags above hogs and translucent tags</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>World Edge</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QLineEdit</name>
@@ -2038,10 +2130,6 @@
<source>Hedgewars %1</source>
<translation>Hedgewars %1</translation>
</message>
- <message>
- <source>-r%1 (%2)</source>
- <translation type="unfinished"></translation>
- </message>
</context>
<context>
<name>QMessageBox</name>
@@ -2267,6 +2355,13 @@
</message>
</context>
<context>
+ <name>QObject</name>
+ <message>
+ <source>No description available</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
<name>QPushButton</name>
<message>
<source>Go!</source>
@@ -2403,6 +2498,10 @@
<source>Create room</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>set password</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>RoomsListModel</name>
@@ -2450,6 +2549,10 @@
<source>Hand-drawn</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Script</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>SeedPrompt</name>
@@ -2517,13 +2620,6 @@
</message>
</context>
<context>
- <name>TeamShowWidget</name>
- <message>
- <source>%1's team</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
<name>ThemePrompt</name>
<message>
<source>Cancel</source>
@@ -3118,4 +3214,127 @@
<translation>DPad</translation>
</message>
</context>
+<context>
+ <name>server</name>
+ <message>
+ <source>Restricted</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>Illegal room name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room with such name already exists</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>
+ <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>No such room</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room version incompatible to your hedgewars version</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>Empty config entry</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
</TS>
--- a/share/hedgewars/Data/Locale/hedgewars_fi.ts Sat Dec 14 21:16:20 2013 +0400
+++ b/share/hedgewars/Data/Locale/hedgewars_fi.ts Tue Dec 17 00:02:52 2013 +0400
@@ -153,6 +153,13 @@
</message>
</context>
<context>
+ <name>GameUIConfig</name>
+ <message>
+ <source>Guest</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
<name>HWApplication</name>
<message numerus="yes">
<source>%1 minutes</source>
@@ -369,6 +376,19 @@
<source>This page requires an internet connection.</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Guest</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>The room is protected with password.
+Please, enter the password:</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>HWGame</name>
@@ -633,7 +653,7 @@
<name>KB</name>
<message>
<source>SDL_ttf returned error while rendering text, most propably it is related to the bug in freetype2. It's recommended to update your freetype lib.</source>
- <translation>SDL_ttf palautti virheen mallintaessaan tekstiä, todennäköisesti syy on freetype2:n ohjelmavirheessä. Freetype-kirjaston päivitys on suosiltetavaa.</translation>
+ <translation type="obsolete">SDL_ttf palautti virheen mallintaessaan tekstiä, todennäköisesti syy on freetype2:n ohjelmavirheessä. Freetype-kirjaston päivitys on suosiltetavaa.</translation>
</message>
</context>
<context>
@@ -646,19 +666,6 @@
<context>
<name>LibavInteraction</name>
<message>
- <source>Duration: %1m %2s
-</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Video: %1x%2, </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>%1 fps, </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Audio: </source>
<translation type="unfinished"></translation>
</message>
@@ -666,6 +673,18 @@
<source>unknown</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Duration: %1m %2s</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Video: %1x%2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>%1 fps</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>MapModel</name>
@@ -793,6 +812,18 @@
<source>Eraser</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Polyline</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Rectangle</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Ellipse</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>PageEditTeam</name>
@@ -905,6 +936,13 @@
<source>Save</source>
<translation type="unfinished"></translation>
</message>
+ <message numerus="yes">
+ <source>(%1 %2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ <numerusform></numerusform>
+ </translation>
+ </message>
</context>
<context>
<name>PageInGame</name>
@@ -1226,11 +1264,11 @@
</message>
<message>
<source>Rules:</source>
- <translation>Säännöt:</translation>
+ <translation type="obsolete">Säännöt:</translation>
</message>
<message>
<source>Weapons:</source>
- <translation>Aseet:</translation>
+ <translation type="obsolete">Aseet:</translation>
</message>
<message>
<source>Search:</source>
@@ -1264,10 +1302,6 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>Clear filters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Open server administration page</source>
<translation type="unfinished"></translation>
</message>
@@ -1394,6 +1428,22 @@
<source>Add an indestructible border along the bottom</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>None (Default)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Wrap (World wraps)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Bounce (Edges reflect)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Sea (Edges connect to sea)</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>PageSelectWeapon</name>
@@ -1490,13 +1540,11 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>Date: %1
-</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Size: %1
-</source>
+ <source>Date: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Size: %1</source>
<translation type="unfinished"></translation>
</message>
</context>
@@ -1633,6 +1681,38 @@
<source>Frontend music</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Team</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable team tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Hog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable hedgehog tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Health</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable health tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Translucent</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable translucent tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QComboBox</name>
@@ -1654,7 +1734,7 @@
</message>
<message>
<source>Any</source>
- <translation>Mikä tahansa</translation>
+ <translation type="obsolete">Mikä tahansa</translation>
</message>
<message>
<source>In lobby</source>
@@ -1868,7 +1948,7 @@
</message>
<message>
<source>Tip: </source>
- <translation>Vinkki: </translation>
+ <translation type="obsolete">Vinkki: </translation>
</message>
<message>
<source>Quality</source>
@@ -2012,6 +2092,18 @@
<source>This setting will be effective at next restart.</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Tip: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Displayed tags above hogs and translucent tags</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>World Edge</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QLineEdit</name>
@@ -2034,10 +2126,6 @@
<source>Hedgewars %1</source>
<translation>Hedgewars %1</translation>
</message>
- <message>
- <source>-r%1 (%2)</source>
- <translation type="unfinished"></translation>
- </message>
</context>
<context>
<name>QMessageBox</name>
@@ -2263,6 +2351,13 @@
</message>
</context>
<context>
+ <name>QObject</name>
+ <message>
+ <source>No description available</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
<name>QPushButton</name>
<message>
<source>default</source>
@@ -2399,6 +2494,10 @@
<source>Create room</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>set password</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>RoomsListModel</name>
@@ -2446,6 +2545,10 @@
<source>Hand-drawn</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Script</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>SeedPrompt</name>
@@ -2513,13 +2616,6 @@
</message>
</context>
<context>
- <name>TeamShowWidget</name>
- <message>
- <source>%1's team</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
<name>ThemePrompt</name>
<message>
<source>Cancel</source>
@@ -3114,4 +3210,127 @@
<translation>Hiiri: Vasen nappi</translation>
</message>
</context>
+<context>
+ <name>server</name>
+ <message>
+ <source>Restricted</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>Illegal room name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room with such name already exists</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>
+ <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>No such room</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room version incompatible to your hedgewars version</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>Empty config entry</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
</TS>
--- a/share/hedgewars/Data/Locale/hedgewars_fr.ts Sat Dec 14 21:16:20 2013 +0400
+++ b/share/hedgewars/Data/Locale/hedgewars_fr.ts Tue Dec 17 00:02:52 2013 +0400
@@ -165,6 +165,13 @@
</message>
</context>
<context>
+ <name>GameUIConfig</name>
+ <message>
+ <source>Guest</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
<name>HWApplication</name>
<message numerus="yes">
<source>%1 minutes</source>
@@ -394,6 +401,19 @@
<source>This page requires an internet connection.</source>
<translation>Cette page nécessite une connexion internet.</translation>
</message>
+ <message>
+ <source>Guest</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>The room is protected with password.
+Please, enter the password:</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>HWGame</name>
@@ -665,7 +685,7 @@
<name>KB</name>
<message>
<source>SDL_ttf returned error while rendering text, most propably it is related to the bug in freetype2. It's recommended to update your freetype lib.</source>
- <translation>SDL_ttf a renvoyé une erreur pendant l'affichage du texte, cela est sûrement causé par le bug de freetype2. Il est recommandé de mettre à jour la librairie freetype.</translation>
+ <translation type="obsolete">SDL_ttf a renvoyé une erreur pendant l'affichage du texte, cela est sûrement causé par le bug de freetype2. Il est recommandé de mettre à jour la librairie freetype.</translation>
</message>
</context>
<context>
@@ -680,15 +700,15 @@
<message>
<source>Duration: %1m %2s
</source>
- <translation>Durée: %1m %2s</translation>
+ <translation type="obsolete">Durée: %1m %2s</translation>
</message>
<message>
<source>Video: %1x%2, </source>
- <translation>Vidéo: %1x%2</translation>
+ <translation type="obsolete">Vidéo: %1x%2</translation>
</message>
<message>
<source>%1 fps, </source>
- <translation>%1 fps, </translation>
+ <translation type="obsolete">%1 fps, </translation>
</message>
<message>
<source>Audio: </source>
@@ -698,6 +718,18 @@
<source>unknown</source>
<translation>inconnu</translation>
</message>
+ <message>
+ <source>Duration: %1m %2s</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Video: %1x%2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>%1 fps</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>MapModel</name>
@@ -825,6 +857,18 @@
<source>Eraser</source>
<translation>Gomme</translation>
</message>
+ <message>
+ <source>Polyline</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Rectangle</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Ellipse</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>PageEditTeam</name>
@@ -937,6 +981,13 @@
<source>Save</source>
<translation type="unfinished">Enregistrer</translation>
</message>
+ <message numerus="yes">
+ <source>(%1 %2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ <numerusform></numerusform>
+ </translation>
+ </message>
</context>
<context>
<name>PageInGame</name>
@@ -1258,11 +1309,11 @@
</message>
<message>
<source>Rules:</source>
- <translation>Règles : </translation>
+ <translation type="obsolete">Règles : </translation>
</message>
<message>
<source>Weapons:</source>
- <translation>Armes : </translation>
+ <translation type="obsolete">Armes : </translation>
</message>
<message>
<source>Search:</source>
@@ -1297,7 +1348,7 @@
</message>
<message>
<source>Clear filters</source>
- <translation>Enlever les filtres</translation>
+ <translation type="obsolete">Enlever les filtres</translation>
</message>
<message>
<source>Open server administration page</source>
@@ -1427,6 +1478,22 @@
<source>Add an indestructible border along the bottom</source>
<translation>Ajouter une bordure indestructible en bas</translation>
</message>
+ <message>
+ <source>None (Default)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Wrap (World wraps)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Bounce (Edges reflect)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Sea (Edges connect to sea)</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>PageSelectWeapon</name>
@@ -1525,12 +1592,20 @@
<message>
<source>Date: %1
</source>
- <translation>Date: %1</translation>
+ <translation type="obsolete">Date: %1</translation>
</message>
<message>
<source>Size: %1
</source>
- <translation>Taille: %1</translation>
+ <translation type="obsolete">Taille: %1</translation>
+ </message>
+ <message>
+ <source>Date: %1</source>
+ <translation type="unfinished">Date: %1 {1?}</translation>
+ </message>
+ <message>
+ <source>Size: %1</source>
+ <translation type="unfinished">Taille: %1 {1?}</translation>
</message>
</context>
<context>
@@ -1666,6 +1741,38 @@
<source>Frontend music</source>
<translation>Musique de l'interface</translation>
</message>
+ <message>
+ <source>Team</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable team tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Hog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable hedgehog tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Health</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable health tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Translucent</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable translucent tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QComboBox</name>
@@ -1687,7 +1794,7 @@
</message>
<message>
<source>Any</source>
- <translation>Tout</translation>
+ <translation type="obsolete">Tout</translation>
</message>
<message>
<source>In lobby</source>
@@ -1901,7 +2008,7 @@
</message>
<message>
<source>Tip: </source>
- <translation>Conseil: </translation>
+ <translation type="obsolete">Conseil: </translation>
</message>
<message>
<source>Quality</source>
@@ -2047,6 +2154,18 @@
<source>This setting will be effective at next restart.</source>
<translation>Le changement sera opérationnel au prochain redémarrage.</translation>
</message>
+ <message>
+ <source>Tip: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Displayed tags above hogs and translucent tags</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>World Edge</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QLineEdit</name>
@@ -2071,7 +2190,7 @@
</message>
<message>
<source>-r%1 (%2)</source>
- <translation>-r%1 (%2)</translation>
+ <translation type="obsolete">-r%1 (%2)</translation>
</message>
</context>
<context>
@@ -2301,6 +2420,13 @@
</message>
</context>
<context>
+ <name>QObject</name>
+ <message>
+ <source>No description available</source>
+ <translation type="unfinished">Aucune description disponible</translation>
+ </message>
+</context>
+<context>
<name>QPushButton</name>
<message>
<source>Play demo</source>
@@ -2437,6 +2563,10 @@
<source>Create room</source>
<translation>Créer une salle</translation>
</message>
+ <message>
+ <source>set password</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>RoomsListModel</name>
@@ -2484,6 +2614,10 @@
<source>Hand-drawn</source>
<translation>Dessinée</translation>
</message>
+ <message>
+ <source>Script</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>SeedPrompt</name>
@@ -2555,7 +2689,7 @@
<name>TeamShowWidget</name>
<message>
<source>%1's team</source>
- <translation>Equipe de %1</translation>
+ <translation type="obsolete">Equipe de %1</translation>
</message>
</context>
<context>
@@ -3158,111 +3292,123 @@
<name>server</name>
<message>
<source>Authentication failed</source>
- <translation type="obsolete">Echec d'authentification</translation>
+ <translation type="unfinished">Echec d'authentification</translation>
</message>
<message>
<source>60 seconds cooldown after kick</source>
- <translation type="obsolete">Bannis pour 60 sec après un kick</translation>
+ <translation type="unfinished">Bannis pour 60 sec après un kick</translation>
</message>
<message>
<source>kicked</source>
- <translation type="obsolete">Exclus (kick)</translation>
+ <translation type="unfinished">Exclus (kick)</translation>
</message>
<message>
<source>Ping timeout</source>
- <translation type="obsolete">Met trop de temps à répondre</translation>
+ <translation type="unfinished">Met trop de temps à répondre</translation>
</message>
<message>
<source>bye</source>
- <translation type="obsolete">Aurevoir</translation>
+ <translation type="unfinished">Aurevoir</translation>
</message>
<message>
<source>Empty config entry</source>
- <translation type="obsolete">Configuration vide</translation>
+ <translation type="unfinished">Configuration vide</translation>
</message>
<message>
<source>Not room master</source>
- <translation type="obsolete">Vous n'êtes pas le propriétaire de la room</translation>
+ <translation type="unfinished">Vous n'êtes pas le propriétaire de la room</translation>
</message>
<message>
<source>Corrupted hedgehogs info</source>
- <translation type="obsolete">Info hérisson corrompus</translation>
+ <translation type="unfinished">Info hérisson corrompus</translation>
</message>
<message>
<source>too many teams</source>
- <translation type="obsolete">trop d'équipes</translation>
+ <translation type="unfinished">trop d'équipes</translation>
</message>
<message>
<source>too many hedgehogs</source>
- <translation type="obsolete">trop de hérissons</translation>
+ <translation type="unfinished">trop de hérissons</translation>
</message>
<message>
<source>There's already a team with same name in the list</source>
- <translation type="obsolete">Il y a déja une équipe avec le même nom dans la liste</translation>
+ <translation type="unfinished">Il y a déja une équipe avec le même nom dans la liste</translation>
</message>
<message>
<source>round in progress</source>
- <translation type="obsolete">La partie est en cour</translation>
+ <translation type="unfinished">La partie est en cour</translation>
</message>
<message>
<source>restricted</source>
- <translation type="obsolete">Ajout interdis</translation>
+ <translation type="unfinished">Ajout interdis</translation>
</message>
<message>
<source>REMOVE_TEAM: no such team</source>
- <translation type="obsolete">REMOVE_TEAM: aucune équipe de ce nom</translation>
+ <translation type="unfinished">REMOVE_TEAM: aucune équipe de ce nom</translation>
</message>
<message>
<source>Not team owner!</source>
- <translation type="obsolete">Vous n'êtes pas le propriétaire de cette équipe!</translation>
+ <translation type="unfinished">Vous n'êtes pas le propriétaire de cette équipe!</translation>
</message>
<message>
<source>Less than two clans!</source>
- <translation type="obsolete">Il faut 2 clans minimum!</translation>
+ <translation type="unfinished">Il faut 2 clans minimum!</translation>
</message>
<message>
<source>Room with such name already exists</source>
- <translation type="obsolete">Ce nom de room existe déjà</translation>
+ <translation type="unfinished">Ce nom de room existe déjà</translation>
</message>
<message>
<source>Illegal room name</source>
- <translation type="obsolete">Nom de room invalide</translation>
+ <translation type="unfinished">Nom de room invalide</translation>
</message>
<message>
<source>No such room</source>
- <translation type="obsolete">Cette room n'existe pas</translation>
+ <translation type="unfinished">Cette room n'existe pas</translation>
</message>
<message>
<source>Joining restricted</source>
- <translation type="obsolete">Accès interdis</translation>
+ <translation type="unfinished">Accès interdis</translation>
</message>
<message>
<source>Registered users only</source>
- <translation type="obsolete">Accès réservé aux utilisateurs enregistré</translation>
+ <translation type="unfinished">Accès réservé aux utilisateurs enregistré</translation>
</message>
<message>
<source>You are banned in this room</source>
- <translation type="obsolete">Vous avez été bannis de cette room</translation>
+ <translation type="unfinished">Vous avez été bannis de cette room</translation>
</message>
<message>
<source>Nickname already chosen</source>
- <translation type="obsolete">Pseudo déjà choisis</translation>
+ <translation type="unfinished">Pseudo déjà choisis</translation>
</message>
<message>
<source>Illegal nickname</source>
- <translation type="obsolete">Pseudo invalide</translation>
+ <translation type="unfinished">Pseudo invalide</translation>
</message>
<message>
<source>Protocol already known</source>
- <translation type="obsolete">Protocole déjà connu</translation>
+ <translation type="unfinished">Protocole déjà connu</translation>
</message>
<message>
<source>Bad number</source>
- <translation type="obsolete">Mauvais numéro</translation>
+ <translation type="unfinished">Mauvais numéro</translation>
</message>
<message>
<source>Nickname is already in use</source>
- <translation type="obsolete">Ce pseudo est actuellement utilisé sur le serveur</translation>
+ <translation type="unfinished">Ce pseudo est actuellement utilisé sur le serveur</translation>
+ </message>
+ <message>
+ <source>Restricted</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>No checker rights</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room version incompatible to your hedgewars version</source>
+ <translation type="unfinished"></translation>
</message>
</context>
</TS>
--- a/share/hedgewars/Data/Locale/hedgewars_gl.ts Sat Dec 14 21:16:20 2013 +0400
+++ b/share/hedgewars/Data/Locale/hedgewars_gl.ts Tue Dec 17 00:02:52 2013 +0400
@@ -153,6 +153,13 @@
</message>
</context>
<context>
+ <name>GameUIConfig</name>
+ <message>
+ <source>Guest</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
<name>HWApplication</name>
<message numerus="yes">
<source>%1 minutes</source>
@@ -369,6 +376,19 @@
<source>This page requires an internet connection.</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Guest</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>The room is protected with password.
+Please, enter the password:</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>HWGame</name>
@@ -633,7 +653,7 @@
<name>KB</name>
<message>
<source>SDL_ttf returned error while rendering text, most propably it is related to the bug in freetype2. It's recommended to update your freetype lib.</source>
- <translation>SDL_ttf devolveu un erro ao renderizar o texto, seguramente sexa por mor do erro de freetype2. Cómpre que actualices a túa biblioteca freetype.</translation>
+ <translation type="obsolete">SDL_ttf devolveu un erro ao renderizar o texto, seguramente sexa por mor do erro de freetype2. Cómpre que actualices a túa biblioteca freetype.</translation>
</message>
</context>
<context>
@@ -646,19 +666,6 @@
<context>
<name>LibavInteraction</name>
<message>
- <source>Duration: %1m %2s
-</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Video: %1x%2, </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>%1 fps, </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Audio: </source>
<translation type="unfinished"></translation>
</message>
@@ -666,6 +673,18 @@
<source>unknown</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Duration: %1m %2s</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Video: %1x%2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>%1 fps</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>MapModel</name>
@@ -793,6 +812,18 @@
<source>Save drawn map</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Polyline</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Rectangle</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Ellipse</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>PageEditTeam</name>
@@ -905,6 +936,13 @@
<source>Save</source>
<translation type="unfinished"></translation>
</message>
+ <message numerus="yes">
+ <source>(%1 %2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ <numerusform></numerusform>
+ </translation>
+ </message>
</context>
<context>
<name>PageInGame</name>
@@ -1225,14 +1263,6 @@
<translation type="obsolete">Nome da sala:</translation>
</message>
<message>
- <source>Rules:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Weapons:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Clear</source>
<translation type="obsolete">Borrado</translation>
</message>
@@ -1260,10 +1290,6 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>Clear filters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Open server administration page</source>
<translation type="unfinished"></translation>
</message>
@@ -1390,6 +1416,22 @@
<source>Copy</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>None (Default)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Wrap (World wraps)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Bounce (Edges reflect)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Sea (Edges connect to sea)</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>PageSelectWeapon</name>
@@ -1486,13 +1528,11 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>Date: %1
-</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Size: %1
-</source>
+ <source>Date: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Size: %1</source>
<translation type="unfinished"></translation>
</message>
</context>
@@ -1629,6 +1669,38 @@
<source>Frontend music</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Team</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable team tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Hog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable hedgehog tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Health</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable health tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Translucent</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable translucent tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QComboBox</name>
@@ -1708,10 +1780,6 @@
<source>Green/Red grayscale</source>
<translation type="unfinished"></translation>
</message>
- <message>
- <source>Any</source>
- <translation type="unfinished"></translation>
- </message>
</context>
<context>
<name>QGroupBox</name>
@@ -1877,10 +1945,6 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>Tip: </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Locale</source>
<translation type="unfinished"></translation>
</message>
@@ -2000,6 +2064,18 @@
<source>This setting will be effective at next restart.</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Tip: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Displayed tags above hogs and translucent tags</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>World Edge</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QLineEdit</name>
@@ -2022,10 +2098,6 @@
<source>Hedgewars %1</source>
<translation>Hedgewars %1</translation>
</message>
- <message>
- <source>-r%1 (%2)</source>
- <translation type="unfinished"></translation>
- </message>
</context>
<context>
<name>QMessageBox</name>
@@ -2250,6 +2322,13 @@
</message>
</context>
<context>
+ <name>QObject</name>
+ <message>
+ <source>No description available</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
<name>QPushButton</name>
<message>
<source>default</source>
@@ -2386,6 +2465,10 @@
<source>Create room</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>set password</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>RoomsListModel</name>
@@ -2433,6 +2516,10 @@
<source>Hand-drawn</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Script</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>SeedPrompt</name>
@@ -2500,13 +2587,6 @@
</message>
</context>
<context>
- <name>TeamShowWidget</name>
- <message>
- <source>%1's team</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
<name>ThemePrompt</name>
<message>
<source>Cancel</source>
@@ -3101,4 +3181,127 @@
<translation>Mando</translation>
</message>
</context>
+<context>
+ <name>server</name>
+ <message>
+ <source>Restricted</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>Illegal room name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room with such name already exists</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>
+ <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>No such room</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room version incompatible to your hedgewars version</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>Empty config entry</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
</TS>
--- a/share/hedgewars/Data/Locale/hedgewars_hu.ts Sat Dec 14 21:16:20 2013 +0400
+++ b/share/hedgewars/Data/Locale/hedgewars_hu.ts Tue Dec 17 00:02:52 2013 +0400
@@ -152,6 +152,13 @@
</message>
</context>
<context>
+ <name>GameUIConfig</name>
+ <message>
+ <source>Guest</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
<name>HWApplication</name>
<message numerus="yes">
<source>%1 minutes</source>
@@ -363,6 +370,19 @@
<source>This page requires an internet connection.</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Guest</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>The room is protected with password.
+Please, enter the password:</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>HWGame</name>
@@ -627,7 +647,7 @@
<name>KB</name>
<message>
<source>SDL_ttf returned error while rendering text, most propably it is related to the bug in freetype2. It's recommended to update your freetype lib.</source>
- <translation>SDL_ttf hibát dobott a szöveg kiírásakor, ezt valószínűleg a freetype2 egy hibája okozza. Ajánlott a freetype lib frissítése.</translation>
+ <translation type="obsolete">SDL_ttf hibát dobott a szöveg kiírásakor, ezt valószínűleg a freetype2 egy hibája okozza. Ajánlott a freetype lib frissítése.</translation>
</message>
</context>
<context>
@@ -640,19 +660,6 @@
<context>
<name>LibavInteraction</name>
<message>
- <source>Duration: %1m %2s
-</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Video: %1x%2, </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>%1 fps, </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Audio: </source>
<translation type="unfinished"></translation>
</message>
@@ -660,6 +667,18 @@
<source>unknown</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Duration: %1m %2s</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Video: %1x%2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>%1 fps</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>MapModel</name>
@@ -787,6 +806,18 @@
<source>Eraser</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Polyline</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Rectangle</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Ellipse</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>PageEditTeam</name>
@@ -893,6 +924,12 @@
<source>Save</source>
<translation type="unfinished"></translation>
</message>
+ <message numerus="yes">
+ <source>(%1 %2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ </translation>
+ </message>
</context>
<context>
<name>PageInGame</name>
@@ -1213,14 +1250,6 @@
<translation type="obsolete">Szoba neve:</translation>
</message>
<message>
- <source>Rules:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Weapons:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Clear</source>
<translation type="obsolete">Törlés</translation>
</message>
@@ -1247,10 +1276,6 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>Clear filters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Open server administration page</source>
<translation type="unfinished"></translation>
</message>
@@ -1377,6 +1402,22 @@
<source>Add an indestructible border along the bottom</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>None (Default)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Wrap (World wraps)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Bounce (Edges reflect)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Sea (Edges connect to sea)</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>PageSelectWeapon</name>
@@ -1472,13 +1513,11 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>Date: %1
-</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Size: %1
-</source>
+ <source>Date: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Size: %1</source>
<translation type="unfinished"></translation>
</message>
</context>
@@ -1615,6 +1654,38 @@
<source>Frontend music</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Team</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable team tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Hog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable hedgehog tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Health</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable health tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Translucent</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable translucent tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QComboBox</name>
@@ -1635,10 +1706,6 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>Any</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Disabled</source>
<translation type="unfinished"></translation>
</message>
@@ -1841,10 +1908,6 @@
<translation>Robbanótöltetek</translation>
</message>
<message>
- <source>Tip: </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Quality</source>
<translation type="unfinished"></translation>
</message>
@@ -1986,6 +2049,18 @@
<source>This setting will be effective at next restart.</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Tip: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Displayed tags above hogs and translucent tags</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>World Edge</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QLineEdit</name>
@@ -2008,10 +2083,6 @@
<source>Hedgewars %1</source>
<translation>Hedgewars %1</translation>
</message>
- <message>
- <source>-r%1 (%2)</source>
- <translation type="unfinished"></translation>
- </message>
</context>
<context>
<name>QMessageBox</name>
@@ -2235,6 +2306,13 @@
</message>
</context>
<context>
+ <name>QObject</name>
+ <message>
+ <source>No description available</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
<name>QPushButton</name>
<message>
<source>default</source>
@@ -2371,6 +2449,10 @@
<source>Create room</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>set password</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>RoomsListModel</name>
@@ -2418,6 +2500,10 @@
<source>Hand-drawn</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Script</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>SeedPrompt</name>
@@ -2485,13 +2571,6 @@
</message>
</context>
<context>
- <name>TeamShowWidget</name>
- <message>
- <source>%1's team</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
<name>ThemePrompt</name>
<message>
<source>Cancel</source>
@@ -3086,4 +3165,127 @@
<translation>DPad</translation>
</message>
</context>
+<context>
+ <name>server</name>
+ <message>
+ <source>Restricted</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>Illegal room name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room with such name already exists</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>
+ <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>No such room</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room version incompatible to your hedgewars version</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>Empty config entry</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
</TS>
--- a/share/hedgewars/Data/Locale/hedgewars_it.ts Sat Dec 14 21:16:20 2013 +0400
+++ b/share/hedgewars/Data/Locale/hedgewars_it.ts Tue Dec 17 00:02:52 2013 +0400
@@ -169,6 +169,13 @@
</message>
</context>
<context>
+ <name>GameUIConfig</name>
+ <message>
+ <source>Guest</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
<name>HWApplication</name>
<message numerus="yes">
<source>%1 minutes</source>
@@ -398,6 +405,19 @@
<source>This page requires an internet connection.</source>
<translation>Questa pagina richiede una connessione a Internet.</translation>
</message>
+ <message>
+ <source>Guest</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>The room is protected with password.
+Please, enter the password:</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>HWGame</name>
@@ -669,7 +689,7 @@
<name>KB</name>
<message>
<source>SDL_ttf returned error while rendering text, most propably it is related to the bug in freetype2. It's recommended to update your freetype lib.</source>
- <translation>SDL_ttf ha restituito un errore durante il rendering del testo, probabilmente relativo ad un bug della libreria freetype2. Si raccomanda di aggiornare le proprie librerie freetype.</translation>
+ <translation type="obsolete">SDL_ttf ha restituito un errore durante il rendering del testo, probabilmente relativo ad un bug della libreria freetype2. Si raccomanda di aggiornare le proprie librerie freetype.</translation>
</message>
</context>
<context>
@@ -684,15 +704,15 @@
<message>
<source>Duration: %1m %2s
</source>
- <translation>Durata: %1m %2s</translation>
+ <translation type="obsolete">Durata: %1m %2s</translation>
</message>
<message>
<source>Video: %1x%2, </source>
- <translation>Video: %1x%2, </translation>
+ <translation type="obsolete">Video: %1x%2, </translation>
</message>
<message>
<source>%1 fps, </source>
- <translation>%1 fps, </translation>
+ <translation type="obsolete">%1 fps, </translation>
</message>
<message>
<source>Audio: </source>
@@ -702,6 +722,18 @@
<source>unknown</source>
<translation>sconosciuto</translation>
</message>
+ <message>
+ <source>Duration: %1m %2s</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Video: %1x%2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>%1 fps</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>MapModel</name>
@@ -829,6 +861,18 @@
<source>Eraser</source>
<translation>Gomma</translation>
</message>
+ <message>
+ <source>Polyline</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Rectangle</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Ellipse</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>PageEditTeam</name>
@@ -941,6 +985,13 @@
<source>Save</source>
<translation>Salva</translation>
</message>
+ <message numerus="yes">
+ <source>(%1 %2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ <numerusform></numerusform>
+ </translation>
+ </message>
</context>
<context>
<name>PageInGame</name>
@@ -1262,11 +1313,11 @@
</message>
<message>
<source>Rules:</source>
- <translation>Regole:</translation>
+ <translation type="obsolete">Regole:</translation>
</message>
<message>
<source>Weapons:</source>
- <translation>Armi:</translation>
+ <translation type="obsolete">Armi:</translation>
</message>
<message>
<source>Search:</source>
@@ -1301,7 +1352,7 @@
</message>
<message>
<source>Clear filters</source>
- <translation>Rimuovi filtri</translation>
+ <translation type="obsolete">Rimuovi filtri</translation>
</message>
<message>
<source>Open server administration page</source>
@@ -1430,6 +1481,22 @@
<source>Add an indestructible border along the bottom</source>
<translation>Aggiungi un bordo indistruttibile lungo la parte inferiore della mappa</translation>
</message>
+ <message>
+ <source>None (Default)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Wrap (World wraps)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Bounce (Edges reflect)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Sea (Edges connect to sea)</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>PageSelectWeapon</name>
@@ -1528,15 +1595,25 @@
<message>
<source>Date: %1
</source>
- <translation>Data: %1
+ <translation type="obsolete">Data: %1
</translation>
</message>
<message>
<source>Size: %1
</source>
- <translation>Dimensione: %1
+ <translation type="obsolete">Dimensione: %1
</translation>
</message>
+ <message>
+ <source>Date: %1</source>
+ <translation type="unfinished">Data: %1
+ {1?}</translation>
+ </message>
+ <message>
+ <source>Size: %1</source>
+ <translation type="unfinished">Dimensione: %1
+ {1?}</translation>
+ </message>
</context>
<context>
<name>QAction</name>
@@ -1671,6 +1748,38 @@
<source>Frontend music</source>
<translation>Musica in presentazione</translation>
</message>
+ <message>
+ <source>Team</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable team tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Hog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable hedgehog tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Health</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable health tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Translucent</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable translucent tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QComboBox</name>
@@ -1692,7 +1801,7 @@
</message>
<message>
<source>Any</source>
- <translation>Qualsiasi</translation>
+ <translation type="obsolete">Qualsiasi</translation>
</message>
<message>
<source>In lobby</source>
@@ -1906,7 +2015,7 @@
</message>
<message>
<source>Tip: </source>
- <translation>Suggerimento: </translation>
+ <translation type="obsolete">Suggerimento: </translation>
</message>
<message>
<source>Quality</source>
@@ -2056,6 +2165,18 @@
<source>This setting will be effective at next restart.</source>
<translation>Questa impostazione avrà effetto al prossimo riavvio.</translation>
</message>
+ <message>
+ <source>Tip: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Displayed tags above hogs and translucent tags</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>World Edge</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QLineEdit</name>
@@ -2080,7 +2201,7 @@
</message>
<message>
<source>-r%1 (%2)</source>
- <translation>-r%1 (%2)</translation>
+ <translation type="obsolete">-r%1 (%2)</translation>
</message>
</context>
<context>
@@ -2338,6 +2459,13 @@
</message>
</context>
<context>
+ <name>QObject</name>
+ <message>
+ <source>No description available</source>
+ <translation type="unfinished">Nessuna descrizione disponibile</translation>
+ </message>
+</context>
+<context>
<name>QPushButton</name>
<message>
<source>Go!</source>
@@ -2474,6 +2602,10 @@
<source>Create room</source>
<translation>Crea stanza</translation>
</message>
+ <message>
+ <source>set password</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>RoomsListModel</name>
@@ -2521,6 +2653,10 @@
<source>Hand-drawn</source>
<translation>Disegnata a mano</translation>
</message>
+ <message>
+ <source>Script</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>SeedPrompt</name>
@@ -2592,7 +2728,7 @@
<name>TeamShowWidget</name>
<message>
<source>%1's team</source>
- <translation>Squadra di %1</translation>
+ <translation type="obsolete">Squadra di %1</translation>
</message>
</context>
<context>
@@ -3194,111 +3330,123 @@
<name>server</name>
<message>
<source>Not room master</source>
- <translation type="obsolete">Non proprietario della stanza</translation>
+ <translation type="unfinished">Non proprietario della stanza</translation>
</message>
<message>
<source>Corrupted hedgehogs info</source>
- <translation type="obsolete">Informazioni ricci corrotte</translation>
+ <translation type="unfinished">Informazioni ricci corrotte</translation>
</message>
<message>
<source>too many teams</source>
- <translation type="obsolete">troppe squadre</translation>
+ <translation type="unfinished">troppe squadre</translation>
</message>
<message>
<source>too many hedgehogs</source>
- <translation type="obsolete">troppi ricci</translation>
+ <translation type="unfinished">troppi ricci</translation>
</message>
<message>
<source>There's already a team with same name in the list</source>
- <translation type="obsolete">C'è già una quadra collo stesso nome in lista</translation>
+ <translation type="unfinished">C'è già una quadra collo stesso nome in lista</translation>
</message>
<message>
<source>round in progress</source>
- <translation type="obsolete">turno in corso</translation>
+ <translation type="unfinished">turno in corso</translation>
</message>
<message>
<source>restricted</source>
- <translation type="obsolete">proibito</translation>
+ <translation type="unfinished">proibito</translation>
</message>
<message>
<source>REMOVE_TEAM: no such team</source>
- <translation type="obsolete">CANCELLA_SQUADRA: squadra non presente</translation>
+ <translation type="unfinished">CANCELLA_SQUADRA: squadra non presente</translation>
</message>
<message>
<source>Not team owner!</source>
- <translation type="obsolete">Non proprietario della squadra!</translation>
+ <translation type="unfinished">Non proprietario della squadra!</translation>
</message>
<message>
<source>Less than two clans!</source>
- <translation type="obsolete">Meno di due clan!</translation>
+ <translation type="unfinished">Meno di due clan!</translation>
</message>
<message>
<source>Room with such name already exists</source>
- <translation type="obsolete">Esiste già una stanza con questo nome</translation>
+ <translation type="unfinished">Esiste già una stanza con questo nome</translation>
</message>
<message>
<source>Nickname already chosen</source>
- <translation type="obsolete">Nome già scelto</translation>
+ <translation type="unfinished">Nome già scelto</translation>
</message>
<message>
<source>Illegal nickname</source>
- <translation type="obsolete">Nome non valido</translation>
+ <translation type="unfinished">Nome non valido</translation>
</message>
<message>
<source>Protocol already known</source>
- <translation type="obsolete">Protocollo già conosciuto</translation>
+ <translation type="unfinished">Protocollo già conosciuto</translation>
</message>
<message>
<source>Bad number</source>
- <translation type="obsolete">Numero non valido</translation>
+ <translation type="unfinished">Numero non valido</translation>
</message>
<message>
<source>Nickname is already in use</source>
- <translation type="obsolete">Nome già in uso</translation>
+ <translation type="unfinished">Nome già in uso</translation>
</message>
<message>
<source>Authentication failed</source>
- <translation type="obsolete">Autenticazione fallita</translation>
+ <translation type="unfinished">Autenticazione fallita</translation>
</message>
<message>
<source>60 seconds cooldown after kick</source>
- <translation type="obsolete">60 secondi di raffreddamento prima dell'espulsione</translation>
+ <translation type="unfinished">60 secondi di raffreddamento prima dell'espulsione</translation>
</message>
<message>
<source>kicked</source>
- <translation type="obsolete">espulso</translation>
+ <translation type="unfinished">espulso</translation>
</message>
<message>
<source>Ping timeout</source>
- <translation type="obsolete">Scadenza ping</translation>
+ <translation type="unfinished">Scadenza ping</translation>
</message>
<message>
<source>bye</source>
- <translation type="obsolete">ciao</translation>
+ <translation type="unfinished">ciao</translation>
</message>
<message>
<source>Illegal room name</source>
- <translation type="obsolete">Nome stanza non valido</translation>
+ <translation type="unfinished">Nome stanza non valido</translation>
</message>
<message>
<source>No such room</source>
- <translation type="obsolete">Stanza non esistente</translation>
+ <translation type="unfinished">Stanza non esistente</translation>
</message>
<message>
<source>Joining restricted</source>
- <translation type="obsolete">Ingresso riservato</translation>
+ <translation type="unfinished">Ingresso riservato</translation>
</message>
<message>
<source>Registered users only</source>
- <translation type="obsolete">Solo utenti registrati</translation>
+ <translation type="unfinished">Solo utenti registrati</translation>
</message>
<message>
<source>You are banned in this room</source>
- <translation type="obsolete">Sei stato espulso dalla stanza</translation>
+ <translation type="unfinished">Sei stato espulso dalla stanza</translation>
</message>
<message>
<source>Empty config entry</source>
- <translation type="obsolete">Configurazione vuota</translation>
+ <translation type="unfinished">Configurazione vuota</translation>
+ </message>
+ <message>
+ <source>Restricted</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>No checker rights</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room version incompatible to your hedgewars version</source>
+ <translation type="unfinished"></translation>
</message>
</context>
</TS>
--- a/share/hedgewars/Data/Locale/hedgewars_ja.ts Sat Dec 14 21:16:20 2013 +0400
+++ b/share/hedgewars/Data/Locale/hedgewars_ja.ts Tue Dec 17 00:02:52 2013 +0400
@@ -152,6 +152,13 @@
</message>
</context>
<context>
+ <name>GameUIConfig</name>
+ <message>
+ <source>Guest</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
<name>HWApplication</name>
<message numerus="yes">
<source>%1 minutes</source>
@@ -363,6 +370,19 @@
<source>This page requires an internet connection.</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Guest</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>The room is protected with password.
+Please, enter the password:</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>HWGame</name>
@@ -627,7 +647,7 @@
<name>KB</name>
<message>
<source>SDL_ttf returned error while rendering text, most propably it is related to the bug in freetype2. It's recommended to update your freetype lib.</source>
- <translation>SDL_ttf returned error while rendering text, most propably it is related to the bug in freetype2. It's recommended to update your freetype lib.</translation>
+ <translation type="obsolete">SDL_ttf returned error while rendering text, most propably it is related to the bug in freetype2. It's recommended to update your freetype lib.</translation>
</message>
</context>
<context>
@@ -640,19 +660,6 @@
<context>
<name>LibavInteraction</name>
<message>
- <source>Duration: %1m %2s
-</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Video: %1x%2, </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>%1 fps, </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Audio: </source>
<translation type="unfinished"></translation>
</message>
@@ -660,6 +667,18 @@
<source>unknown</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Duration: %1m %2s</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Video: %1x%2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>%1 fps</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>MapModel</name>
@@ -787,6 +806,18 @@
<source>Eraser</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Polyline</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Rectangle</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Ellipse</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>PageEditTeam</name>
@@ -893,6 +924,12 @@
<source>Save</source>
<translation type="unfinished">セーブ</translation>
</message>
+ <message numerus="yes">
+ <source>(%1 %2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ </translation>
+ </message>
</context>
<context>
<name>PageInGame</name>
@@ -1212,14 +1249,6 @@
<source>Room Name:</source>
<translation type="obsolete">ルーム名:</translation>
</message>
- <message>
- <source>Rules:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Weapons:</source>
- <translation type="unfinished"></translation>
- </message>
<message numerus="yes">
<source>%1 players online</source>
<translation type="unfinished">
@@ -1243,10 +1272,6 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>Clear filters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Open server administration page</source>
<translation type="unfinished"></translation>
</message>
@@ -1373,6 +1398,22 @@
<source>Add an indestructible border along the bottom</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>None (Default)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Wrap (World wraps)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Bounce (Edges reflect)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Sea (Edges connect to sea)</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>PageSelectWeapon</name>
@@ -1468,13 +1509,11 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>Date: %1
-</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Size: %1
-</source>
+ <source>Date: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Size: %1</source>
<translation type="unfinished"></translation>
</message>
</context>
@@ -1611,6 +1650,38 @@
<source>Frontend music</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Team</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable team tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Hog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable hedgehog tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Health</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable health tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Translucent</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable translucent tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QComboBox</name>
@@ -1631,10 +1702,6 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>Any</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Disabled</source>
<translation type="unfinished"></translation>
</message>
@@ -1837,10 +1904,6 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>Tip: </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Quality</source>
<translation type="unfinished"></translation>
</message>
@@ -1982,6 +2045,18 @@
<source>This setting will be effective at next restart.</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Tip: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Displayed tags above hogs and translucent tags</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>World Edge</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QLineEdit</name>
@@ -2004,10 +2079,6 @@
<source>Hedgewars %1</source>
<translation>Hedgewars %1</translation>
</message>
- <message>
- <source>-r%1 (%2)</source>
- <translation type="unfinished"></translation>
- </message>
</context>
<context>
<name>QMessageBox</name>
@@ -2231,6 +2302,13 @@
</message>
</context>
<context>
+ <name>QObject</name>
+ <message>
+ <source>No description available</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
<name>QPushButton</name>
<message>
<source>default</source>
@@ -2367,6 +2445,10 @@
<source>Create room</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>set password</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>RoomsListModel</name>
@@ -2414,6 +2496,10 @@
<source>Hand-drawn</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Script</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>SeedPrompt</name>
@@ -2481,13 +2567,6 @@
</message>
</context>
<context>
- <name>TeamShowWidget</name>
- <message>
- <source>%1's team</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
<name>ThemePrompt</name>
<message>
<source>Cancel</source>
@@ -3082,4 +3161,127 @@
<translation type="unfinished"></translation>
</message>
</context>
+<context>
+ <name>server</name>
+ <message>
+ <source>Restricted</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>Illegal room name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room with such name already exists</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>
+ <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>No such room</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room version incompatible to your hedgewars version</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>Empty config entry</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
</TS>
--- a/share/hedgewars/Data/Locale/hedgewars_ko.ts Sat Dec 14 21:16:20 2013 +0400
+++ b/share/hedgewars/Data/Locale/hedgewars_ko.ts Tue Dec 17 00:02:52 2013 +0400
@@ -152,6 +152,13 @@
</message>
</context>
<context>
+ <name>GameUIConfig</name>
+ <message>
+ <source>Guest</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
<name>HWApplication</name>
<message numerus="yes">
<source>%1 minutes</source>
@@ -363,6 +370,19 @@
<source>This page requires an internet connection.</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Guest</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>The room is protected with password.
+Please, enter the password:</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>HWGame</name>
@@ -620,13 +640,6 @@
</message>
</context>
<context>
- <name>KB</name>
- <message>
- <source>SDL_ttf returned error while rendering text, most propably it is related to the bug in freetype2. It's recommended to update your freetype lib.</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
<name>KeyBinder</name>
<message>
<source>Category</source>
@@ -636,19 +649,6 @@
<context>
<name>LibavInteraction</name>
<message>
- <source>Duration: %1m %2s
-</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Video: %1x%2, </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>%1 fps, </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Audio: </source>
<translation type="unfinished"></translation>
</message>
@@ -656,6 +656,18 @@
<source>unknown</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Duration: %1m %2s</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Video: %1x%2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>%1 fps</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>MapModel</name>
@@ -783,6 +795,18 @@
<source>Eraser</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Polyline</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Rectangle</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Ellipse</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>PageEditTeam</name>
@@ -889,6 +913,12 @@
<source>Save</source>
<translation type="unfinished"></translation>
</message>
+ <message numerus="yes">
+ <source>(%1 %2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ </translation>
+ </message>
</context>
<context>
<name>PageInGame</name>
@@ -1192,14 +1222,6 @@
<source>Admin features</source>
<translation type="unfinished"></translation>
</message>
- <message>
- <source>Rules:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Weapons:</source>
- <translation type="unfinished"></translation>
- </message>
<message numerus="yes">
<source>%1 players online</source>
<translation type="unfinished">
@@ -1223,10 +1245,6 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>Clear filters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Open server administration page</source>
<translation type="unfinished"></translation>
</message>
@@ -1353,6 +1371,22 @@
<source>Add an indestructible border along the bottom</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>None (Default)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Wrap (World wraps)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Bounce (Edges reflect)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Sea (Edges connect to sea)</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>PageSelectWeapon</name>
@@ -1448,13 +1482,11 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>Date: %1
-</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Size: %1
-</source>
+ <source>Date: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Size: %1</source>
<translation type="unfinished"></translation>
</message>
</context>
@@ -1587,6 +1619,38 @@
<source>Frontend music</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Team</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable team tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Hog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable hedgehog tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Health</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable health tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Translucent</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable translucent tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QComboBox</name>
@@ -1607,10 +1671,6 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>Any</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Disabled</source>
<translation type="unfinished"></translation>
</message>
@@ -1809,10 +1869,6 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>Tip: </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Quality</source>
<translation type="unfinished"></translation>
</message>
@@ -1954,6 +2010,18 @@
<source>This setting will be effective at next restart.</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Tip: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Displayed tags above hogs and translucent tags</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>World Edge</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QLineEdit</name>
@@ -1976,10 +2044,6 @@
<source>Hedgewars %1</source>
<translation type="unfinished"></translation>
</message>
- <message>
- <source>-r%1 (%2)</source>
- <translation type="unfinished"></translation>
- </message>
</context>
<context>
<name>QMessageBox</name>
@@ -2195,6 +2259,13 @@
</message>
</context>
<context>
+ <name>QObject</name>
+ <message>
+ <source>No description available</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
<name>QPushButton</name>
<message>
<source>default</source>
@@ -2331,6 +2402,10 @@
<source>Create room</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>set password</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>RoomsListModel</name>
@@ -2378,6 +2453,10 @@
<source>Hand-drawn</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Script</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>SeedPrompt</name>
@@ -2445,13 +2524,6 @@
</message>
</context>
<context>
- <name>TeamShowWidget</name>
- <message>
- <source>%1's team</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
<name>ThemePrompt</name>
<message>
<source>Cancel</source>
@@ -3046,4 +3118,127 @@
<translation type="unfinished"></translation>
</message>
</context>
+<context>
+ <name>server</name>
+ <message>
+ <source>Restricted</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>Illegal room name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room with such name already exists</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>
+ <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>No such room</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room version incompatible to your hedgewars version</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>Empty config entry</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
</TS>
--- a/share/hedgewars/Data/Locale/hedgewars_lt.ts Sat Dec 14 21:16:20 2013 +0400
+++ b/share/hedgewars/Data/Locale/hedgewars_lt.ts Tue Dec 17 00:02:52 2013 +0400
@@ -4,7 +4,7 @@
<context>
<name>About</name>
<message>
- <location filename="../../../../QTfrontend/ui/widget/about.cpp" line="93"/>
+ <location filename="../../../../QTfrontend/ui/widget/about.cpp" line="99"/>
<source>Unknown Compiler</source>
<translation type="unfinished"></translation>
</message>
@@ -20,12 +20,12 @@
<context>
<name>AmmoSchemeModel</name>
<message>
- <location filename="../../../../QTfrontend/model/ammoSchemeModel.cpp" line="673"/>
+ <location filename="../../../../QTfrontend/model/ammoSchemeModel.cpp" line="685"/>
<source>new</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/model/ammoSchemeModel.cpp" line="679"/>
+ <location filename="../../../../QTfrontend/model/ammoSchemeModel.cpp" line="691"/>
<source>copy of</source>
<translation type="unfinished"></translation>
</message>
@@ -97,7 +97,7 @@
<context>
<name>DataManager</name>
<message>
- <location filename="../../../../QTfrontend/util/DataManager.cpp" line="151"/>
+ <location filename="../../../../QTfrontend/util/DataManager.cpp" line="148"/>
<source>Use Default</source>
<translation type="unfinished"></translation>
</message>
@@ -186,6 +186,14 @@
</message>
</context>
<context>
+ <name>GameUIConfig</name>
+ <message>
+ <location filename="../../../../QTfrontend/gameuiconfig.cpp" line="115"/>
+ <source>Guest</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
<name>HWApplication</name>
<message numerus="yes">
<location filename="../../../../QTfrontend/ui/dialog/bandialog.cpp" line="25"/>
@@ -238,7 +246,7 @@
</translation>
</message>
<message>
- <location filename="../../../../QTfrontend/HWApplication.cpp" line="92"/>
+ <location filename="../../../../QTfrontend/HWApplication.cpp" line="94"/>
<source>Scheme '%1' not supported</source>
<translation type="unfinished"></translation>
</message>
@@ -335,44 +343,52 @@
<context>
<name>HWForm</name>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="478"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="481"/>
<source>DefaultTeam</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="636"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="641"/>
<source>Game aborted</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="1121"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1126"/>
<source>Nickname</source>
<translation type="unfinished"></translation>
</message>
<message>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1131"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1452"/>
+ <source>No nickname supplied.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<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="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="482"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="156"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="476"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1399"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1418"/>
+ <source>Guest</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="485"/>
<source>%1's Team</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="1075"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1080"/>
<source>Hedgewars - Nick registered</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="1076"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1081"/>
<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
@@ -381,81 +397,92 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="1104"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1109"/>
<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="1109"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1114"/>
<source>
Your password wasn't saved either.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="1126"/>
- <location filename="../../../../QTfrontend/hwform.cpp" line="1435"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1131"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1452"/>
<source>Hedgewars - Empty nickname</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="1152"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1158"/>
<source>Hedgewars - Wrong password</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="1152"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1158"/>
<source>You entered a wrong password.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="1173"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1170"/>
+ <source>Room password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1170"/>
+ <source>The room is protected with password.
+Please, enter the password:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1186"/>
<source>Try Again</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="1539"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1556"/>
<source>Hedgewars - Connection error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="1539"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1556"/>
<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="1696"/>
- <location filename="../../../../QTfrontend/hwform.cpp" line="2015"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1713"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="2059"/>
<source>Cannot save record to file %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="1945"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1989"/>
<source>Hedgewars Demo File</source>
<comment>File Types</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="1946"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1990"/>
<source>Hedgewars Save File</source>
<comment>File Types</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="2007"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="2051"/>
<source>Demo name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="2007"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="2051"/>
<source>Demo name:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="2075"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="2119"/>
<source>This page requires an internet connection.</source>
<translation type="unfinished"></translation>
</message>
@@ -463,13 +490,13 @@
<context>
<name>HWGame</name>
<message>
- <location filename="../../../../QTfrontend/game.cpp" line="386"/>
+ <location filename="../../../../QTfrontend/game.cpp" line="367"/>
<location filename="../../../../QTfrontend/net/recorder.cpp" line="112"/>
<source>en.txt</source>
<translation>lt.txt</translation>
</message>
<message>
- <location filename="../../../../QTfrontend/game.cpp" line="427"/>
+ <location filename="../../../../QTfrontend/game.cpp" line="417"/>
<source>Cannot open demofile %1</source>
<translation type="unfinished"></translation>
</message>
@@ -477,158 +504,158 @@
<context>
<name>HWMapContainer</name>
<message>
- <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="94"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="99"/>
<source>Map type:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="97"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="102"/>
<source>Image map</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="98"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="103"/>
<source>Mission map</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="99"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="104"/>
<source>Hand-drawn</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="100"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="105"/>
<source>Randomly generated</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="101"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="106"/>
<source>Random maze</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="111"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="116"/>
<source>Random</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="135"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="140"/>
<source>Map preview:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="188"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="179"/>
<source>Load map drawing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="194"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="185"/>
<source>Edit map drawing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="207"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="198"/>
<source>All</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="208"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="199"/>
<source>Small</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="209"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="200"/>
<source>Medium</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="210"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="201"/>
<source>Large</source>
<translation type="unfinished"></translation>
</message>
<message>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="202"/>
+ <source>Cavern</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="203"/>
+ <source>Wacky</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="213"/>
+ <source>Large tunnels</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="214"/>
+ <source>Small islands</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="215"/>
+ <source>Medium islands</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="216"/>
+ <source>Large islands</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="715"/>
+ <source>Map size:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="722"/>
+ <source>Maze style:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="736"/>
+ <source>Mission:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="747"/>
+ <source>Map:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="811"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="942"/>
+ <source>Theme: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="893"/>
+ <source>Load drawn map</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="893"/>
+ <source>Drawn Maps</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="893"/>
+ <source>All files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="211"/>
- <source>Cavern</source>
+ <source>Small tunnels</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="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="710"/>
- <source>Map size:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <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="730"/>
- <source>Mission:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <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="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="886"/>
- <source>Drawn Maps</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <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="220"/>
- <source>Small tunnels</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <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="126"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="131"/>
<source>Seed</source>
<translation type="unfinished"></translation>
</message>
@@ -659,53 +686,53 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="218"/>
+ <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="226"/>
<source>Remote host has closed connection</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="221"/>
+ <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="229"/>
<source>The host was not found. Please check the host name and port settings.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="224"/>
+ <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="232"/>
<source>Connection refused</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="283"/>
+ <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="291"/>
<source>The server is too old. Disconnecting now.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="707"/>
+ <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="718"/>
<source>Room destroyed</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="484"/>
+ <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="500"/>
<source>You got kicked</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="651"/>
- <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="782"/>
+ <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="662"/>
+ <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="793"/>
<source>%1 *** %2 has joined the room</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="797"/>
+ <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="808"/>
<source>%1 *** %2 has left</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="799"/>
+ <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="810"/>
<source>%1 *** %2 has left (%3)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="1559"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1576"/>
<source>Quit reason: </source>
<translation type="unfinished"></translation>
</message>
@@ -752,7 +779,7 @@
<context>
<name>HatButton</name>
<message>
- <location filename="../../../../QTfrontend/ui/widget/hatbutton.cpp" line="40"/>
+ <location filename="../../../../QTfrontend/ui/widget/hatbutton.cpp" line="44"/>
<source>Change hat (%1)</source>
<translation type="unfinished"></translation>
</message>
@@ -776,14 +803,6 @@
</message>
</context>
<context>
- <name>KB</name>
- <message>
- <location filename="../../../../QTfrontend/KB.h" line="28"/>
- <source>SDL_ttf returned error while rendering text, most propably it is related to the bug in freetype2. It's recommended to update your freetype lib.</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
<name>KeyBinder</name>
<message>
<location filename="../../../../QTfrontend/ui/widget/keybinder.cpp" line="100"/>
@@ -794,28 +813,27 @@
<context>
<name>LibavInteraction</name>
<message>
- <location filename="../../../../QTfrontend/util/LibavInteraction.cpp" line="281"/>
- <source>Duration: %1m %2s
-</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../../QTfrontend/util/LibavInteraction.cpp" line="293"/>
- <source>Video: %1x%2, </source>
+ <location filename="../../../../QTfrontend/util/LibavInteraction.cpp" line="285"/>
+ <source>Duration: %1m %2s</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../QTfrontend/util/LibavInteraction.cpp" line="297"/>
- <source>%1 fps, </source>
+ <source>Video: %1x%2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../QTfrontend/util/LibavInteraction.cpp" line="301"/>
- <source>Audio: </source>
+ <source>%1 fps</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../QTfrontend/util/LibavInteraction.cpp" line="305"/>
+ <source>Audio: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/util/LibavInteraction.cpp" line="309"/>
<source>unknown</source>
<translation type="unfinished"></translation>
</message>
@@ -823,7 +841,7 @@
<context>
<name>MapModel</name>
<message>
- <location filename="../../../../QTfrontend/model/MapModel.cpp" line="193"/>
+ <location filename="../../../../QTfrontend/model/MapModel.cpp" line="211"/>
<source>No description available.</source>
<translation type="unfinished"></translation>
</message>
@@ -930,49 +948,64 @@
<context>
<name>PageDrawMap</name>
<message>
- <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="32"/>
+ <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="33"/>
<source>Eraser</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="34"/>
- <source>Undo</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="35"/>
- <source>Clear</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="36"/>
- <source>Load</source>
+ <source>Undo</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="37"/>
+ <source>Polyline</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="39"/>
+ <source>Rectangle</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="41"/>
+ <source>Ellipse</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="46"/>
+ <source>Clear</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="47"/>
+ <source>Load</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="48"/>
<source>Save</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="61"/>
+ <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="76"/>
<source>Load drawn map</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="61"/>
- <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="69"/>
+ <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="76"/>
+ <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="84"/>
<source>Drawn Maps</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="61"/>
- <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="69"/>
+ <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="76"/>
+ <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="84"/>
<source>All files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="69"/>
+ <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="84"/>
<source>Save drawn map</source>
<translation type="unfinished"></translation>
</message>
@@ -1033,37 +1066,38 @@
<context>
<name>PageGameStats</name>
<message>
- <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="56"/>
+ <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="61"/>
<source>Details</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="70"/>
+ <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="75"/>
+ <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="165"/>
<source>Health graph</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="87"/>
+ <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="92"/>
<source>Ranking</source>
<translation type="unfinished"></translation>
</message>
<message>
- <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>Play again</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="123"/>
<source>Save</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="193"/>
+ <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="211"/>
<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="201"/>
+ <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="219"/>
<source>The best killer is <b>%1</b> with <b>%2</b> kills in a turn.</source>
<translation type="unfinished">
<numerusform></numerusform>
@@ -1072,7 +1106,7 @@
</translation>
</message>
<message numerus="yes">
- <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="208"/>
+ <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="226"/>
<source>A total of <b>%1</b> hedgehog(s) were killed during this round.</source>
<translation type="unfinished">
<numerusform></numerusform>
@@ -1081,7 +1115,7 @@
</translation>
</message>
<message numerus="yes">
- <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="272"/>
+ <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="303"/>
<source>(%1 kill)</source>
<translation type="unfinished">
<numerusform></numerusform>
@@ -1090,7 +1124,16 @@
</translation>
</message>
<message numerus="yes">
- <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="283"/>
+ <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="305"/>
+ <source>(%1 %2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ <numerusform></numerusform>
+ <numerusform></numerusform>
+ </translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="318"/>
<source><b>%1</b> thought it's good to shoot his own hedgehogs with <b>%2</b> pts.</source>
<translation type="unfinished">
<numerusform></numerusform>
@@ -1099,7 +1142,7 @@
</translation>
</message>
<message numerus="yes">
- <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="291"/>
+ <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="326"/>
<source><b>%1</b> killed <b>%2</b> of his own hedgehogs.</source>
<translation type="unfinished">
<numerusform></numerusform>
@@ -1108,7 +1151,7 @@
</translation>
</message>
<message numerus="yes">
- <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="299"/>
+ <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="334"/>
<source><b>%1</b> was scared and skipped turn <b>%2</b> times.</source>
<translation type="unfinished">
<numerusform></numerusform>
@@ -1374,97 +1417,97 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="371"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="404"/>
<source>Frontend</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="388"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="421"/>
<source>Custom colors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="418"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="451"/>
<source>Reset to default colors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="431"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="464"/>
<source>Game audio</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="469"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="502"/>
<source>Frontend audio</source>
<translation type="unfinished"></translation>
</message>
<message>
- <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="518"/>
- <source>Proxy settings</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="524"/>
- <source>Proxy host</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="525"/>
+ <source>Account</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="551"/>
+ <source>Proxy settings</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="557"/>
+ <source>Proxy host</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="558"/>
<source>Proxy port</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="526"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="559"/>
<source>Proxy login</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="527"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="560"/>
<source>Proxy password</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="540"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="573"/>
<source>No proxy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="541"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="574"/>
<source>System proxy settings</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="542"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="575"/>
<source>Socks5 proxy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="543"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="576"/>
<source>HTTP proxy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="578"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="611"/>
<source>Miscellaneous</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="624"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="657"/>
<source>Updates</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="637"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="670"/>
<source>Check for updates</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="651"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="684"/>
<source>Video recording options</source>
<translation type="unfinished"></translation>
</message>
@@ -1505,32 +1548,17 @@
<translation type="unfinished"></translation>
</message>
<message>
- <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="191"/>
- <source>Weapons:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <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="220"/>
+ <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="184"/>
<source>Admin features</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="222"/>
+ <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="186"/>
<source>Open server administration page</source>
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
- <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="609"/>
+ <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="546"/>
<source>%1 players online</source>
<translation type="unfinished">
<numerusform></numerusform>
@@ -1677,17 +1705,37 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="402"/>
+ <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="394"/>
+ <source>None (Default)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="395"/>
+ <source>Wrap (World wraps)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="396"/>
+ <source>Bounce (Edges reflect)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="397"/>
+ <source>Sea (Edges connect to sea)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="419"/>
<source>Copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="403"/>
+ <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="420"/>
<source>New</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="404"/>
+ <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="421"/>
<source>Delete</source>
<translation type="unfinished"></translation>
</message>
@@ -1799,14 +1847,12 @@
</message>
<message>
<location filename="../../../../QTfrontend/ui/page/pagevideos.cpp" line="511"/>
- <source>Date: %1
-</source>
+ <source>Date: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../QTfrontend/ui/page/pagevideos.cpp" line="512"/>
- <source>Size: %1
-</source>
+ <source>Size: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
@@ -1844,23 +1890,23 @@
</message>
<message>
<location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="269"/>
- <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="885"/>
+ <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="890"/>
<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="897"/>
+ <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="902"/>
<source>Add friend</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="880"/>
+ <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="885"/>
<source>Unignore</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="892"/>
+ <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="897"/>
<source>Remove friend</source>
<translation type="unfinished"></translation>
</message>
@@ -1903,54 +1949,94 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="383"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="381"/>
+ <source>Team</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="382"/>
+ <source>Enable team tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="385"/>
+ <source>Hog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="386"/>
+ <source>Enable hedgehog tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="389"/>
+ <source>Health</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="390"/>
+ <source>Enable health tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="393"/>
+ <source>Translucent</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="394"/>
+ <source>Enable translucent tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="416"/>
<source>Visual effects</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="456"/>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="473"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="489"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="506"/>
<source>Sound</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="457"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="490"/>
<source>In-game sound effects</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="463"/>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="478"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="496"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="511"/>
<source>Music</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="464"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="497"/>
<source>In-game music</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="474"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="507"/>
<source>Frontend sound effects</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="479"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="512"/>
<source>Frontend music</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="610"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="643"/>
<source>Append date and time to record file name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="630"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="663"/>
<source>Check for updates at startup</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="377"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="410"/>
<source>Fullscreen</source>
<translation type="unfinished"></translation>
</message>
@@ -1961,7 +2047,7 @@
</message>
<message>
<location filename="../../../../QTfrontend/ui/dialog/input_password.cpp" line="55"/>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="509"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="542"/>
<source>Save password</source>
<translation type="unfinished"></translation>
</message>
@@ -1976,12 +2062,12 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="691"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="724"/>
<source>Record audio</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="740"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="773"/>
<source>Use game resolution</source>
<translation type="unfinished"></translation>
</message>
@@ -1999,12 +2085,12 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageeditteam.cpp" line="284"/>
+ <location filename="../../../../QTfrontend/ui/page/pageeditteam.cpp" line="295"/>
<source>Community</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="590"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="623"/>
<source>(System default)</source>
<translation type="unfinished"></translation>
</message>
@@ -2083,12 +2169,6 @@
<source>Green/Red grayscale</source>
<translation type="unfinished"></translation>
</message>
- <message>
- <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>
</context>
<context>
<name>QGroupBox</name>
@@ -2141,12 +2221,12 @@
<context>
<name>QLabel</name>
<message>
- <location filename="../../../../QTfrontend/ui/widget/about.cpp" line="71"/>
+ <location filename="../../../../QTfrontend/ui/widget/about.cpp" line="77"/>
<source>Revision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/about.cpp" line="73"/>
+ <location filename="../../../../QTfrontend/ui/widget/about.cpp" line="79"/>
<source>This program is distributed under the %1</source>
<translation type="unfinished"></translation>
</message>
@@ -2201,16 +2281,16 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pagemain.cpp" line="139"/>
- <source>Tip: </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<location filename="../../../../QTfrontend/ui/page/pagemain.cpp" line="137"/>
<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>
</message>
<message>
+ <location filename="../../../../QTfrontend/ui/page/pagemain.cpp" line="139"/>
+ <source>Tip: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<location filename="../../../../QTfrontend/ui/page/pagenetserver.cpp" line="56"/>
<source>Server name:</source>
<translation type="unfinished"></translation>
@@ -2221,22 +2301,22 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="584"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="617"/>
<source>Locale</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="498"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="531"/>
<source>Nickname</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="599"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="632"/>
<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"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="749"/>
<source>Resolution</source>
<translation type="unfinished"></translation>
</message>
@@ -2266,7 +2346,12 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="439"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="372"/>
+ <source>Displayed tags above hogs and translucent tags</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="472"/>
<source>Initial sound volume</source>
<translation type="unfinished"></translation>
</message>
@@ -2352,6 +2437,11 @@
</message>
<message>
<location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="386"/>
+ <source>World Edge</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="403"/>
<source>Scheme Name:</source>
<translation type="unfinished"></translation>
</message>
@@ -2418,27 +2508,27 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="660"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="693"/>
<source>Format</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="680"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="713"/>
<source>Audio codec</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="705"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="738"/>
<source>Video codec</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="746"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="779"/>
<source>Framerate</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="760"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="793"/>
<source>Bitrate (Kbps)</source>
<translation type="unfinished"></translation>
</message>
@@ -2446,18 +2536,18 @@
<context>
<name>QLineEdit</name>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="952"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="957"/>
<source>unnamed</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../QTfrontend/team.cpp" line="44"/>
- <location filename="../../../../QTfrontend/ui/page/pageeditteam.cpp" line="296"/>
+ <location filename="../../../../QTfrontend/ui/page/pageeditteam.cpp" line="307"/>
<source>hedgehog %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="503"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="536"/>
<source>anonymous</source>
<translation type="unfinished"></translation>
</message>
@@ -2469,111 +2559,106 @@
<source>Hedgewars %1</source>
<translation type="unfinished"></translation>
</message>
- <message>
- <location filename="../../../../QTfrontend/ui_hwform.cpp" line="59"/>
- <source>-r%1 (%2)</source>
- <translation type="unfinished"></translation>
- </message>
</context>
<context>
<name>QMessageBox</name>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageeditteam.cpp" line="346"/>
+ <location filename="../../../../QTfrontend/ui/page/pageeditteam.cpp" line="361"/>
<source>Teams - Are you sure?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageeditteam.cpp" line="347"/>
+ <location filename="../../../../QTfrontend/ui/page/pageeditteam.cpp" line="362"/>
<source>Do you really want to delete the team '%1'?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="981"/>
- <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="500"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="986"/>
+ <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="518"/>
<source>Cannot delete default scheme '%1'!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="1007"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1012"/>
<source>Please select a record from the list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="1102"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1107"/>
<source>Hedgewars - Nick not registered</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="1498"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1515"/>
<source>Unable to start server</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="1559"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1576"/>
<source>Connection to server is lost</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="2082"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="2126"/>
<source>Not all players are ready</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="2083"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="2127"/>
<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="352"/>
+ <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="349"/>
<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="362"/>
+ <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="359"/>
<source>System Information Preview</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="377"/>
- <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="388"/>
+ <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="374"/>
+ <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="385"/>
<source>Failed to generate captcha</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="405"/>
+ <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="402"/>
<source>Failed to download captcha</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="469"/>
+ <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="466"/>
<source>Please fill out all fields. Email is optional.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="1985"/>
- <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="439"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="2029"/>
+ <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="436"/>
<source>Hedgewars - Success</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="1986"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="2030"/>
<source>All file associations have been set</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="1991"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="2035"/>
<source>File association failed.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/gamecfgwidget.cpp" line="367"/>
- <source>Error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<location filename="../../../../QTfrontend/ui/widget/gamecfgwidget.cpp" line="368"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/widget/gamecfgwidget.cpp" line="369"/>
<source>Cannot use the ammo '%1'!</source>
<translation type="unfinished"></translation>
</message>
@@ -2641,38 +2726,38 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="560"/>
+ <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="507"/>
<source>Room Name - Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="561"/>
+ <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="508"/>
<source>Please select room from the list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="596"/>
+ <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="533"/>
<source>Room Name - Are you sure?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="597"/>
+ <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="534"/>
<source>The game you are trying to join has started.
Do you still want to join the room?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="499"/>
+ <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="517"/>
<source>Schemes - Warning</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="508"/>
+ <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="526"/>
<source>Schemes - Are you sure?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="509"/>
+ <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="527"/>
<source>Do you really want to delete the game scheme '%1'?</source>
<translation type="unfinished"></translation>
</message>
@@ -2703,20 +2788,20 @@
<translation type="unfinished"></translation>
</message>
<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="896"/>
+ <location filename="../../../../QTfrontend/ui/widget/drawmapwidget.cpp" line="141"/>
+ <location filename="../../../../QTfrontend/ui/widget/drawmapwidget.cpp" line="161"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="903"/>
<source>File error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/drawmapwidget.cpp" line="102"/>
+ <location filename="../../../../QTfrontend/ui/widget/drawmapwidget.cpp" line="142"/>
<source>Cannot open '%1' for writing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/drawmapwidget.cpp" line="122"/>
- <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="897"/>
+ <location filename="../../../../QTfrontend/ui/widget/drawmapwidget.cpp" line="162"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="904"/>
<source>Cannot open '%1' for reading</source>
<translation type="unfinished"></translation>
</message>
@@ -2758,6 +2843,15 @@
</message>
</context>
<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../../../../QTfrontend/campaign.cpp" line="65"/>
+ <location filename="../../../../QTfrontend/campaign.cpp" line="84"/>
+ <source>No description available</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
<name>QPushButton</name>
<message>
<location filename="../../../../QTfrontend/ui/dialog/input_ip.cpp" line="49"/>
@@ -2776,7 +2870,7 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pagecampaign.cpp" line="44"/>
+ <location filename="../../../../QTfrontend/ui/page/pagecampaign.cpp" line="70"/>
<location filename="../../../../QTfrontend/ui/page/pagetraining.cpp" line="92"/>
<source>Go!</source>
<translation type="unfinished"></translation>
@@ -2832,7 +2926,7 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="616"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="649"/>
<source>Associate file extensions</source>
<translation type="unfinished"></translation>
</message>
@@ -2865,12 +2959,12 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="773"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="806"/>
<source>Set default options</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="774"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="807"/>
<source>Restore default coding parameters</source>
<translation type="unfinished"></translation>
</message>
@@ -2920,17 +3014,22 @@
<context>
<name>RoomNamePrompt</name>
<message>
- <location filename="../../../../QTfrontend/ui/widget/roomnameprompt.cpp" line="42"/>
+ <location filename="../../../../QTfrontend/ui/widget/roomnameprompt.cpp" line="43"/>
<source>Enter a name for your room.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/roomnameprompt.cpp" line="61"/>
+ <location filename="../../../../QTfrontend/ui/widget/roomnameprompt.cpp" line="56"/>
+ <source>set password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/widget/roomnameprompt.cpp" line="72"/>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/roomnameprompt.cpp" line="62"/>
+ <location filename="../../../../QTfrontend/ui/widget/roomnameprompt.cpp" line="73"/>
<source>Create room</source>
<translation type="unfinished"></translation>
</message>
@@ -2969,26 +3068,31 @@
</message>
<message>
<location filename="../../../../QTfrontend/model/roomslistmodel.cpp" line="43"/>
- <source>Rules</source>
+ <source>Script</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../QTfrontend/model/roomslistmodel.cpp" line="44"/>
+ <source>Rules</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/model/roomslistmodel.cpp" line="45"/>
<source>Weapons</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/model/roomslistmodel.cpp" line="132"/>
- <source>Random Map</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<location filename="../../../../QTfrontend/model/roomslistmodel.cpp" line="133"/>
- <source>Random Maze</source>
+ <source>Random Map</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../QTfrontend/model/roomslistmodel.cpp" line="134"/>
+ <source>Random Maze</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/model/roomslistmodel.cpp" line="135"/>
<source>Hand-drawn</source>
<translation type="unfinished"></translation>
</message>
@@ -3074,14 +3178,6 @@
</message>
</context>
<context>
- <name>TeamShowWidget</name>
- <message>
- <location filename="../../../../QTfrontend/ui/widget/teamselhelper.cpp" line="58"/>
- <source>%1's team</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
<name>ThemePrompt</name>
<message>
<location filename="../../../../QTfrontend/ui/widget/themeprompt.cpp" line="84"/>
@@ -3467,7 +3563,7 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/util/DataManager.cpp" line="158"/>
+ <location filename="../../../../QTfrontend/util/DataManager.cpp" line="155"/>
<source>Keyboard</source>
<translation type="unfinished"></translation>
</message>
@@ -3827,4 +3923,157 @@
<translation type="unfinished"></translation>
</message>
</context>
+<context>
+ <name>server</name>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="2"/>
+ <source>Restricted</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="3"/>
+ <source>Not room master</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="4"/>
+ <source>Corrupted hedgehogs info</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="5"/>
+ <source>too many teams</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="6"/>
+ <source>too many hedgehogs</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="7"/>
+ <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="8"/>
+ <source>round in progress</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="9"/>
+ <source>restricted</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="10"/>
+ <source>REMOVE_TEAM: no such team</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="11"/>
+ <source>Not team owner!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="12"/>
+ <source>Less than two clans!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="13"/>
+ <source>Illegal room name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="14"/>
+ <source>Room with such name already exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="15"/>
+ <source>Nickname already chosen</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="16"/>
+ <source>Illegal nickname</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="17"/>
+ <source>Protocol already known</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="18"/>
+ <source>Bad number</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="19"/>
+ <source>Nickname is already in use</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="20"/>
+ <source>No checker rights</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="21"/>
+ <source>Authentication failed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="22"/>
+ <source>60 seconds cooldown after kick</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="23"/>
+ <source>kicked</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="24"/>
+ <source>Ping timeout</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="25"/>
+ <source>bye</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="26"/>
+ <source>No such room</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="27"/>
+ <source>Room version incompatible to your hedgewars version</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="28"/>
+ <source>Joining restricted</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="29"/>
+ <source>Registered users only</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="30"/>
+ <source>You are banned in this room</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="31"/>
+ <source>Empty config entry</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
</TS>
--- a/share/hedgewars/Data/Locale/hedgewars_ms.ts Sat Dec 14 21:16:20 2013 +0400
+++ b/share/hedgewars/Data/Locale/hedgewars_ms.ts Tue Dec 17 00:02:52 2013 +0400
@@ -4,7 +4,7 @@
<context>
<name>About</name>
<message>
- <location filename="../../../../QTfrontend/ui/widget/about.cpp" line="93"/>
+ <location filename="../../../../QTfrontend/ui/widget/about.cpp" line="99"/>
<source>Unknown Compiler</source>
<translation type="unfinished"></translation>
</message>
@@ -20,12 +20,12 @@
<context>
<name>AmmoSchemeModel</name>
<message>
- <location filename="../../../../QTfrontend/model/ammoSchemeModel.cpp" line="673"/>
+ <location filename="../../../../QTfrontend/model/ammoSchemeModel.cpp" line="685"/>
<source>new</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/model/ammoSchemeModel.cpp" line="679"/>
+ <location filename="../../../../QTfrontend/model/ammoSchemeModel.cpp" line="691"/>
<source>copy of</source>
<translation type="unfinished"></translation>
</message>
@@ -97,7 +97,7 @@
<context>
<name>DataManager</name>
<message>
- <location filename="../../../../QTfrontend/util/DataManager.cpp" line="151"/>
+ <location filename="../../../../QTfrontend/util/DataManager.cpp" line="148"/>
<source>Use Default</source>
<translation type="unfinished"></translation>
</message>
@@ -184,6 +184,14 @@
</message>
</context>
<context>
+ <name>GameUIConfig</name>
+ <message>
+ <location filename="../../../../QTfrontend/gameuiconfig.cpp" line="115"/>
+ <source>Guest</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
<name>HWApplication</name>
<message numerus="yes">
<location filename="../../../../QTfrontend/ui/dialog/bandialog.cpp" line="25"/>
@@ -226,7 +234,7 @@
</translation>
</message>
<message>
- <location filename="../../../../QTfrontend/HWApplication.cpp" line="92"/>
+ <location filename="../../../../QTfrontend/HWApplication.cpp" line="94"/>
<source>Scheme '%1' not supported</source>
<translation type="unfinished"></translation>
</message>
@@ -323,27 +331,35 @@
<context>
<name>HWForm</name>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="478"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="156"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="476"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1399"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1418"/>
+ <source>Guest</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="481"/>
<source>DefaultTeam</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="482"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="485"/>
<source>%1's Team</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="636"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="641"/>
<source>Game aborted</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="1075"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1080"/>
<source>Hedgewars - Nick registered</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="1076"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1081"/>
<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
@@ -352,98 +368,109 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="1104"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1109"/>
<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="1109"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1114"/>
<source>
Your password wasn't saved either.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="1121"/>
- <source>Nickname</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <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="1126"/>
- <location filename="../../../../QTfrontend/hwform.cpp" line="1435"/>
- <source>No nickname supplied.</source>
+ <source>Nickname</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../QTfrontend/hwform.cpp" line="1126"/>
- <location filename="../../../../QTfrontend/hwform.cpp" line="1435"/>
+ <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="1131"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1452"/>
+ <source>No nickname supplied.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1131"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1452"/>
<source>Hedgewars - Empty nickname</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="1152"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1158"/>
<source>Hedgewars - Wrong password</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="1152"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1158"/>
<source>You entered a wrong password.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="1173"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1170"/>
+ <source>Room password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1170"/>
+ <source>The room is protected with password.
+Please, enter the password:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1186"/>
<source>Try Again</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="1539"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1556"/>
<source>Hedgewars - Connection error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="1539"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1556"/>
<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="1696"/>
- <location filename="../../../../QTfrontend/hwform.cpp" line="2015"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1713"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="2059"/>
<source>Cannot save record to file %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="1945"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1989"/>
<source>Hedgewars Demo File</source>
<comment>File Types</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="1946"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1990"/>
<source>Hedgewars Save File</source>
<comment>File Types</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="2007"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="2051"/>
<source>Demo name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="2007"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="2051"/>
<source>Demo name:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="2075"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="2119"/>
<source>This page requires an internet connection.</source>
<translation type="unfinished"></translation>
</message>
@@ -451,13 +478,13 @@
<context>
<name>HWGame</name>
<message>
- <location filename="../../../../QTfrontend/game.cpp" line="386"/>
+ <location filename="../../../../QTfrontend/game.cpp" line="367"/>
<location filename="../../../../QTfrontend/net/recorder.cpp" line="112"/>
<source>en.txt</source>
<translation>ms.txt</translation>
</message>
<message>
- <location filename="../../../../QTfrontend/game.cpp" line="427"/>
+ <location filename="../../../../QTfrontend/game.cpp" line="417"/>
<source>Cannot open demofile %1</source>
<translation type="unfinished"></translation>
</message>
@@ -465,158 +492,158 @@
<context>
<name>HWMapContainer</name>
<message>
- <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="94"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="99"/>
<source>Map type:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="97"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="102"/>
<source>Image map</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="98"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="103"/>
<source>Mission map</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="99"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="104"/>
<source>Hand-drawn</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="100"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="105"/>
<source>Randomly generated</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="101"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="106"/>
<source>Random maze</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="111"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="116"/>
<source>Random</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="135"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="140"/>
<source>Map preview:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="188"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="179"/>
<source>Load map drawing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="194"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="185"/>
<source>Edit map drawing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="207"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="198"/>
<source>All</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="208"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="199"/>
<source>Small</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="209"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="200"/>
<source>Medium</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="210"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="201"/>
<source>Large</source>
<translation type="unfinished"></translation>
</message>
<message>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="202"/>
+ <source>Cavern</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="203"/>
+ <source>Wacky</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="213"/>
+ <source>Large tunnels</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="214"/>
+ <source>Small islands</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="215"/>
+ <source>Medium islands</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="216"/>
+ <source>Large islands</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="715"/>
+ <source>Map size:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="722"/>
+ <source>Maze style:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="736"/>
+ <source>Mission:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="747"/>
+ <source>Map:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="811"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="942"/>
+ <source>Theme: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="893"/>
+ <source>Load drawn map</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="893"/>
+ <source>Drawn Maps</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="893"/>
+ <source>All files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="211"/>
- <source>Cavern</source>
+ <source>Small tunnels</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="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="710"/>
- <source>Map size:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <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="730"/>
- <source>Mission:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <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="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="886"/>
- <source>Drawn Maps</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <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="220"/>
- <source>Small tunnels</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <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="126"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="131"/>
<source>Seed</source>
<translation type="unfinished"></translation>
</message>
@@ -642,7 +669,7 @@
<context>
<name>HWNewNet</name>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="1559"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1576"/>
<source>Quit reason: </source>
<translation type="unfinished"></translation>
</message>
@@ -652,48 +679,48 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="218"/>
+ <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="226"/>
<source>Remote host has closed connection</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="221"/>
+ <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="229"/>
<source>The host was not found. Please check the host name and port settings.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="224"/>
+ <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="232"/>
<source>Connection refused</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="283"/>
+ <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="291"/>
<source>The server is too old. Disconnecting now.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="484"/>
+ <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="500"/>
<source>You got kicked</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="797"/>
+ <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="808"/>
<source>%1 *** %2 has left</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="799"/>
+ <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="810"/>
<source>%1 *** %2 has left (%3)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="651"/>
- <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="782"/>
+ <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="662"/>
+ <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="793"/>
<source>%1 *** %2 has joined the room</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="707"/>
+ <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="718"/>
<source>Room destroyed</source>
<translation type="unfinished"></translation>
</message>
@@ -740,7 +767,7 @@
<context>
<name>HatButton</name>
<message>
- <location filename="../../../../QTfrontend/ui/widget/hatbutton.cpp" line="40"/>
+ <location filename="../../../../QTfrontend/ui/widget/hatbutton.cpp" line="44"/>
<source>Change hat (%1)</source>
<translation type="unfinished"></translation>
</message>
@@ -764,14 +791,6 @@
</message>
</context>
<context>
- <name>KB</name>
- <message>
- <location filename="../../../../QTfrontend/KB.h" line="28"/>
- <source>SDL_ttf returned error while rendering text, most propably it is related to the bug in freetype2. It's recommended to update your freetype lib.</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
<name>KeyBinder</name>
<message>
<location filename="../../../../QTfrontend/ui/widget/keybinder.cpp" line="100"/>
@@ -782,28 +801,27 @@
<context>
<name>LibavInteraction</name>
<message>
- <location filename="../../../../QTfrontend/util/LibavInteraction.cpp" line="281"/>
- <source>Duration: %1m %2s
-</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../../QTfrontend/util/LibavInteraction.cpp" line="293"/>
- <source>Video: %1x%2, </source>
+ <location filename="../../../../QTfrontend/util/LibavInteraction.cpp" line="285"/>
+ <source>Duration: %1m %2s</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../QTfrontend/util/LibavInteraction.cpp" line="297"/>
- <source>%1 fps, </source>
+ <source>Video: %1x%2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../QTfrontend/util/LibavInteraction.cpp" line="301"/>
- <source>Audio: </source>
+ <source>%1 fps</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../QTfrontend/util/LibavInteraction.cpp" line="305"/>
+ <source>Audio: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/util/LibavInteraction.cpp" line="309"/>
<source>unknown</source>
<translation type="unfinished"></translation>
</message>
@@ -811,7 +829,7 @@
<context>
<name>MapModel</name>
<message>
- <location filename="../../../../QTfrontend/model/MapModel.cpp" line="193"/>
+ <location filename="../../../../QTfrontend/model/MapModel.cpp" line="211"/>
<source>No description available.</source>
<translation type="unfinished"></translation>
</message>
@@ -918,49 +936,64 @@
<context>
<name>PageDrawMap</name>
<message>
- <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="32"/>
+ <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="33"/>
<source>Eraser</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="34"/>
- <source>Undo</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="35"/>
- <source>Clear</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="36"/>
- <source>Load</source>
+ <source>Undo</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="37"/>
+ <source>Polyline</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="39"/>
+ <source>Rectangle</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="41"/>
+ <source>Ellipse</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="46"/>
+ <source>Clear</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="47"/>
+ <source>Load</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="48"/>
<source>Save</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="61"/>
+ <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="76"/>
<source>Load drawn map</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="61"/>
- <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="69"/>
+ <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="76"/>
+ <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="84"/>
<source>Drawn Maps</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="61"/>
- <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="69"/>
+ <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="76"/>
+ <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="84"/>
<source>All files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="69"/>
+ <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="84"/>
<source>Save drawn map</source>
<translation type="unfinished"></translation>
</message>
@@ -1021,72 +1054,80 @@
<context>
<name>PageGameStats</name>
<message>
- <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="56"/>
+ <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="61"/>
<source>Details</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="70"/>
+ <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="75"/>
+ <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="165"/>
<source>Health graph</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="87"/>
+ <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="92"/>
<source>Ranking</source>
<translation type="unfinished"></translation>
</message>
<message>
- <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>Play again</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="123"/>
<source>Save</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="193"/>
+ <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="211"/>
<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="201"/>
+ <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="219"/>
<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="208"/>
+ <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="226"/>
<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="272"/>
+ <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="303"/>
<source>(%1 kill)</source>
<translation type="unfinished">
<numerusform></numerusform>
</translation>
</message>
<message numerus="yes">
- <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="283"/>
+ <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="305"/>
+ <source>(%1 %2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ </translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="318"/>
<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="291"/>
+ <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="326"/>
<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="299"/>
+ <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="334"/>
<source><b>%1</b> was scared and skipped turn <b>%2</b> times.</source>
<translation type="unfinished">
<numerusform></numerusform>
@@ -1350,97 +1391,97 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="371"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="404"/>
<source>Frontend</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="388"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="421"/>
<source>Custom colors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="418"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="451"/>
<source>Reset to default colors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="431"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="464"/>
<source>Game audio</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="469"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="502"/>
<source>Frontend audio</source>
<translation type="unfinished"></translation>
</message>
<message>
- <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="518"/>
- <source>Proxy settings</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="524"/>
- <source>Proxy host</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="525"/>
+ <source>Account</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="551"/>
+ <source>Proxy settings</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="557"/>
+ <source>Proxy host</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="558"/>
<source>Proxy port</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="526"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="559"/>
<source>Proxy login</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="527"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="560"/>
<source>Proxy password</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="540"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="573"/>
<source>No proxy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="541"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="574"/>
<source>System proxy settings</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="542"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="575"/>
<source>Socks5 proxy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="543"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="576"/>
<source>HTTP proxy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="578"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="611"/>
<source>Miscellaneous</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="624"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="657"/>
<source>Updates</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="637"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="670"/>
<source>Check for updates</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="651"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="684"/>
<source>Video recording options</source>
<translation type="unfinished"></translation>
</message>
@@ -1481,32 +1522,17 @@
<translation type="unfinished"></translation>
</message>
<message>
- <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="191"/>
- <source>Weapons:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <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="220"/>
+ <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="184"/>
<source>Admin features</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="222"/>
+ <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="186"/>
<source>Open server administration page</source>
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
- <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="609"/>
+ <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="546"/>
<source>%1 players online</source>
<translation type="unfinished">
<numerusform></numerusform>
@@ -1651,17 +1677,37 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="402"/>
+ <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="394"/>
+ <source>None (Default)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="395"/>
+ <source>Wrap (World wraps)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="396"/>
+ <source>Bounce (Edges reflect)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="397"/>
+ <source>Sea (Edges connect to sea)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="419"/>
<source>Copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="403"/>
+ <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="420"/>
<source>New</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="404"/>
+ <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="421"/>
<source>Delete</source>
<translation type="unfinished"></translation>
</message>
@@ -1771,14 +1817,12 @@
</message>
<message>
<location filename="../../../../QTfrontend/ui/page/pagevideos.cpp" line="511"/>
- <source>Date: %1
-</source>
+ <source>Date: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../QTfrontend/ui/page/pagevideos.cpp" line="512"/>
- <source>Size: %1
-</source>
+ <source>Size: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
@@ -1831,23 +1875,23 @@
</message>
<message>
<location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="269"/>
- <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="885"/>
+ <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="890"/>
<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="897"/>
+ <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="902"/>
<source>Add friend</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="880"/>
+ <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="885"/>
<source>Unignore</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="892"/>
+ <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="897"/>
<source>Remove friend</source>
<translation type="unfinished"></translation>
</message>
@@ -1866,7 +1910,7 @@
<name>QCheckBox</name>
<message>
<location filename="../../../../QTfrontend/ui/dialog/input_password.cpp" line="55"/>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="509"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="542"/>
<source>Save password</source>
<translation type="unfinished"></translation>
</message>
@@ -1881,12 +1925,12 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="630"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="663"/>
<source>Check for updates at startup</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="377"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="410"/>
<source>Fullscreen</source>
<translation type="unfinished"></translation>
</message>
@@ -1906,54 +1950,94 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="383"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="381"/>
+ <source>Team</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="382"/>
+ <source>Enable team tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="385"/>
+ <source>Hog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="386"/>
+ <source>Enable hedgehog tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="389"/>
+ <source>Health</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="390"/>
+ <source>Enable health tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="393"/>
+ <source>Translucent</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="394"/>
+ <source>Enable translucent tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="416"/>
<source>Visual effects</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="456"/>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="473"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="489"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="506"/>
<source>Sound</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="457"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="490"/>
<source>In-game sound effects</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="463"/>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="478"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="496"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="511"/>
<source>Music</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="464"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="497"/>
<source>In-game music</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="474"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="507"/>
<source>Frontend sound effects</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="479"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="512"/>
<source>Frontend music</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="610"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="643"/>
<source>Append date and time to record file name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="691"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="724"/>
<source>Record audio</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="740"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="773"/>
<source>Use game resolution</source>
<translation type="unfinished"></translation>
</message>
@@ -1971,12 +2055,12 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageeditteam.cpp" line="284"/>
+ <location filename="../../../../QTfrontend/ui/page/pageeditteam.cpp" line="295"/>
<source>Community</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="590"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="623"/>
<source>(System default)</source>
<translation type="unfinished"></translation>
</message>
@@ -2055,12 +2139,6 @@
<source>Green/Red grayscale</source>
<translation type="unfinished"></translation>
</message>
- <message>
- <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>
</context>
<context>
<name>QGroupBox</name>
@@ -2210,16 +2288,16 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pagemain.cpp" line="139"/>
- <source>Tip: </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<location filename="../../../../QTfrontend/ui/page/pagemain.cpp" line="137"/>
<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>
</message>
<message>
+ <location filename="../../../../QTfrontend/ui/page/pagemain.cpp" line="139"/>
+ <source>Tip: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<location filename="../../../../QTfrontend/ui/page/pagenetserver.cpp" line="56"/>
<source>Server name:</source>
<translation type="unfinished"></translation>
@@ -2235,22 +2313,22 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="584"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="617"/>
<source>Locale</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="498"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="531"/>
<source>Nickname</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="599"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="632"/>
<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"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="749"/>
<source>Resolution</source>
<translation type="unfinished"></translation>
</message>
@@ -2280,7 +2358,12 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="439"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="372"/>
+ <source>Displayed tags above hogs and translucent tags</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="472"/>
<source>Initial sound volume</source>
<translation type="unfinished"></translation>
</message>
@@ -2366,41 +2449,46 @@
</message>
<message>
<location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="386"/>
+ <source>World Edge</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="403"/>
<source>Scheme Name:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="660"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="693"/>
<source>Format</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="680"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="713"/>
<source>Audio codec</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="705"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="738"/>
<source>Video codec</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="746"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="779"/>
<source>Framerate</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="760"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="793"/>
<source>Bitrate (Kbps)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/about.cpp" line="71"/>
+ <location filename="../../../../QTfrontend/ui/widget/about.cpp" line="77"/>
<source>Revision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/about.cpp" line="73"/>
+ <location filename="../../../../QTfrontend/ui/widget/about.cpp" line="79"/>
<source>This program is distributed under the %1</source>
<translation type="unfinished"></translation>
</message>
@@ -2418,18 +2506,18 @@
<context>
<name>QLineEdit</name>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="952"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="957"/>
<source>unnamed</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../QTfrontend/team.cpp" line="44"/>
- <location filename="../../../../QTfrontend/ui/page/pageeditteam.cpp" line="296"/>
+ <location filename="../../../../QTfrontend/ui/page/pageeditteam.cpp" line="307"/>
<source>hedgehog %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="503"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="536"/>
<source>anonymous</source>
<translation type="unfinished"></translation>
</message>
@@ -2441,101 +2529,96 @@
<source>Hedgewars %1</source>
<translation type="unfinished"></translation>
</message>
- <message>
- <location filename="../../../../QTfrontend/ui_hwform.cpp" line="59"/>
- <source>-r%1 (%2)</source>
- <translation type="unfinished"></translation>
- </message>
</context>
<context>
<name>QMessageBox</name>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageeditteam.cpp" line="346"/>
+ <location filename="../../../../QTfrontend/ui/page/pageeditteam.cpp" line="361"/>
<source>Teams - Are you sure?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageeditteam.cpp" line="347"/>
+ <location filename="../../../../QTfrontend/ui/page/pageeditteam.cpp" line="362"/>
<source>Do you really want to delete the team '%1'?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="981"/>
- <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="500"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="986"/>
+ <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="518"/>
<source>Cannot delete default scheme '%1'!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="1007"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1012"/>
<source>Please select a record from the list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="1102"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1107"/>
<source>Hedgewars - Nick not registered</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="1498"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1515"/>
<source>Unable to start server</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="1559"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1576"/>
<source>Connection to server is lost</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="2082"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="2126"/>
<source>Not all players are ready</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="2083"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="2127"/>
<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="352"/>
+ <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="349"/>
<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="362"/>
+ <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="359"/>
<source>System Information Preview</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="377"/>
- <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="388"/>
+ <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="374"/>
+ <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="385"/>
<source>Failed to generate captcha</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="405"/>
+ <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="402"/>
<source>Failed to download captcha</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="469"/>
+ <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="466"/>
<source>Please fill out all fields. Email is optional.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="1985"/>
- <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="439"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="2029"/>
+ <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="436"/>
<source>Hedgewars - Success</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="1986"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="2030"/>
<source>All file associations have been set</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="1991"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="2035"/>
<source>File association failed.</source>
<translation type="unfinished"></translation>
</message>
@@ -2603,38 +2686,38 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="560"/>
+ <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="507"/>
<source>Room Name - Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="561"/>
+ <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="508"/>
<source>Please select room from the list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="596"/>
+ <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="533"/>
<source>Room Name - Are you sure?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="597"/>
+ <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="534"/>
<source>The game you are trying to join has started.
Do you still want to join the room?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="499"/>
+ <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="517"/>
<source>Schemes - Warning</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="508"/>
+ <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="526"/>
<source>Schemes - Are you sure?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="509"/>
+ <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="527"/>
<source>Do you really want to delete the game scheme '%1'?</source>
<translation type="unfinished"></translation>
</message>
@@ -2663,30 +2746,30 @@
<translation type="unfinished"></translation>
</message>
<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="896"/>
+ <location filename="../../../../QTfrontend/ui/widget/drawmapwidget.cpp" line="141"/>
+ <location filename="../../../../QTfrontend/ui/widget/drawmapwidget.cpp" line="161"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="903"/>
<source>File error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/drawmapwidget.cpp" line="102"/>
+ <location filename="../../../../QTfrontend/ui/widget/drawmapwidget.cpp" line="142"/>
<source>Cannot open '%1' for writing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/drawmapwidget.cpp" line="122"/>
- <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="897"/>
+ <location filename="../../../../QTfrontend/ui/widget/drawmapwidget.cpp" line="162"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="904"/>
<source>Cannot open '%1' for reading</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/gamecfgwidget.cpp" line="367"/>
- <source>Error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<location filename="../../../../QTfrontend/ui/widget/gamecfgwidget.cpp" line="368"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/widget/gamecfgwidget.cpp" line="369"/>
<source>Cannot use the ammo '%1'!</source>
<translation type="unfinished"></translation>
</message>
@@ -2728,6 +2811,15 @@
</message>
</context>
<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../../../../QTfrontend/campaign.cpp" line="65"/>
+ <location filename="../../../../QTfrontend/campaign.cpp" line="84"/>
+ <source>No description available</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
<name>QPushButton</name>
<message>
<location filename="../../../../QTfrontend/ui/dialog/ask_quit.cpp" line="50"/>
@@ -2751,7 +2843,7 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pagecampaign.cpp" line="44"/>
+ <location filename="../../../../QTfrontend/ui/page/pagecampaign.cpp" line="70"/>
<location filename="../../../../QTfrontend/ui/page/pagetraining.cpp" line="92"/>
<source>Go!</source>
<translation type="unfinished"></translation>
@@ -2807,7 +2899,7 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="616"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="649"/>
<source>Associate file extensions</source>
<translation type="unfinished"></translation>
</message>
@@ -2835,12 +2927,12 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="773"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="806"/>
<source>Set default options</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="774"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="807"/>
<source>Restore default coding parameters</source>
<translation type="unfinished"></translation>
</message>
@@ -2890,17 +2982,22 @@
<context>
<name>RoomNamePrompt</name>
<message>
- <location filename="../../../../QTfrontend/ui/widget/roomnameprompt.cpp" line="42"/>
+ <location filename="../../../../QTfrontend/ui/widget/roomnameprompt.cpp" line="43"/>
<source>Enter a name for your room.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/roomnameprompt.cpp" line="61"/>
+ <location filename="../../../../QTfrontend/ui/widget/roomnameprompt.cpp" line="56"/>
+ <source>set password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/widget/roomnameprompt.cpp" line="72"/>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/roomnameprompt.cpp" line="62"/>
+ <location filename="../../../../QTfrontend/ui/widget/roomnameprompt.cpp" line="73"/>
<source>Create room</source>
<translation type="unfinished"></translation>
</message>
@@ -2939,26 +3036,31 @@
</message>
<message>
<location filename="../../../../QTfrontend/model/roomslistmodel.cpp" line="43"/>
- <source>Rules</source>
+ <source>Script</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../QTfrontend/model/roomslistmodel.cpp" line="44"/>
+ <source>Rules</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/model/roomslistmodel.cpp" line="45"/>
<source>Weapons</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/model/roomslistmodel.cpp" line="132"/>
- <source>Random Map</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<location filename="../../../../QTfrontend/model/roomslistmodel.cpp" line="133"/>
- <source>Random Maze</source>
+ <source>Random Map</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../QTfrontend/model/roomslistmodel.cpp" line="134"/>
+ <source>Random Maze</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/model/roomslistmodel.cpp" line="135"/>
<source>Hand-drawn</source>
<translation type="unfinished"></translation>
</message>
@@ -3044,14 +3146,6 @@
</message>
</context>
<context>
- <name>TeamShowWidget</name>
- <message>
- <location filename="../../../../QTfrontend/ui/widget/teamselhelper.cpp" line="58"/>
- <source>%1's team</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
<name>ThemePrompt</name>
<message>
<location filename="../../../../QTfrontend/ui/widget/themeprompt.cpp" line="84"/>
@@ -3755,7 +3849,7 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/util/DataManager.cpp" line="158"/>
+ <location filename="../../../../QTfrontend/util/DataManager.cpp" line="155"/>
<source>Keyboard</source>
<translation type="unfinished"></translation>
</message>
@@ -3797,4 +3891,157 @@
<translation type="unfinished"></translation>
</message>
</context>
+<context>
+ <name>server</name>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="2"/>
+ <source>Restricted</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="3"/>
+ <source>Not room master</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="4"/>
+ <source>Corrupted hedgehogs info</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="5"/>
+ <source>too many teams</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="6"/>
+ <source>too many hedgehogs</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="7"/>
+ <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="8"/>
+ <source>round in progress</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="9"/>
+ <source>restricted</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="10"/>
+ <source>REMOVE_TEAM: no such team</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="11"/>
+ <source>Not team owner!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="12"/>
+ <source>Less than two clans!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="13"/>
+ <source>Illegal room name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="14"/>
+ <source>Room with such name already exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="15"/>
+ <source>Nickname already chosen</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="16"/>
+ <source>Illegal nickname</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="17"/>
+ <source>Protocol already known</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="18"/>
+ <source>Bad number</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="19"/>
+ <source>Nickname is already in use</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="20"/>
+ <source>No checker rights</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="21"/>
+ <source>Authentication failed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="22"/>
+ <source>60 seconds cooldown after kick</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="23"/>
+ <source>kicked</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="24"/>
+ <source>Ping timeout</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="25"/>
+ <source>bye</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="26"/>
+ <source>No such room</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="27"/>
+ <source>Room version incompatible to your hedgewars version</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="28"/>
+ <source>Joining restricted</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="29"/>
+ <source>Registered users only</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="30"/>
+ <source>You are banned in this room</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="31"/>
+ <source>Empty config entry</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
</TS>
--- a/share/hedgewars/Data/Locale/hedgewars_nl.ts Sat Dec 14 21:16:20 2013 +0400
+++ b/share/hedgewars/Data/Locale/hedgewars_nl.ts Tue Dec 17 00:02:52 2013 +0400
@@ -153,6 +153,13 @@
</message>
</context>
<context>
+ <name>GameUIConfig</name>
+ <message>
+ <source>Guest</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
<name>HWApplication</name>
<message numerus="yes">
<source>%1 minutes</source>
@@ -369,6 +376,19 @@
<source>This page requires an internet connection.</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Guest</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>The room is protected with password.
+Please, enter the password:</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>HWGame</name>
@@ -626,13 +646,6 @@
</message>
</context>
<context>
- <name>KB</name>
- <message>
- <source>SDL_ttf returned error while rendering text, most propably it is related to the bug in freetype2. It's recommended to update your freetype lib.</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
<name>KeyBinder</name>
<message>
<source>Category</source>
@@ -642,19 +655,6 @@
<context>
<name>LibavInteraction</name>
<message>
- <source>Duration: %1m %2s
-</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Video: %1x%2, </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>%1 fps, </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Audio: </source>
<translation type="unfinished"></translation>
</message>
@@ -662,6 +662,18 @@
<source>unknown</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Duration: %1m %2s</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Video: %1x%2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>%1 fps</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>MapModel</name>
@@ -789,6 +801,18 @@
<source>Eraser</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Polyline</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Rectangle</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Ellipse</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>PageEditTeam</name>
@@ -901,6 +925,13 @@
<source>Save</source>
<translation type="unfinished"></translation>
</message>
+ <message numerus="yes">
+ <source>(%1 %2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ <numerusform></numerusform>
+ </translation>
+ </message>
</context>
<context>
<name>PageInGame</name>
@@ -1204,14 +1235,6 @@
<source>Admin features</source>
<translation type="unfinished"></translation>
</message>
- <message>
- <source>Rules:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Weapons:</source>
- <translation type="unfinished"></translation>
- </message>
<message numerus="yes">
<source>%1 players online</source>
<translation type="unfinished">
@@ -1236,10 +1259,6 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>Clear filters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Open server administration page</source>
<translation type="unfinished"></translation>
</message>
@@ -1366,6 +1385,22 @@
<source>Add an indestructible border along the bottom</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>None (Default)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Wrap (World wraps)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Bounce (Edges reflect)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Sea (Edges connect to sea)</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>PageSelectWeapon</name>
@@ -1462,13 +1497,11 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>Date: %1
-</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Size: %1
-</source>
+ <source>Date: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Size: %1</source>
<translation type="unfinished"></translation>
</message>
</context>
@@ -1601,6 +1634,38 @@
<source>Frontend music</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Team</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable team tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Hog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable hedgehog tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Health</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable health tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Translucent</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable translucent tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QComboBox</name>
@@ -1621,10 +1686,6 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>Any</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Disabled</source>
<translation type="unfinished"></translation>
</message>
@@ -1823,10 +1884,6 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>Tip: </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Quality</source>
<translation type="unfinished"></translation>
</message>
@@ -1968,6 +2025,18 @@
<source>This setting will be effective at next restart.</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Tip: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Displayed tags above hogs and translucent tags</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>World Edge</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QLineEdit</name>
@@ -1990,10 +2059,6 @@
<source>Hedgewars %1</source>
<translation type="unfinished"></translation>
</message>
- <message>
- <source>-r%1 (%2)</source>
- <translation type="unfinished"></translation>
- </message>
</context>
<context>
<name>QMessageBox</name>
@@ -2210,6 +2275,13 @@
</message>
</context>
<context>
+ <name>QObject</name>
+ <message>
+ <source>No description available</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
<name>QPushButton</name>
<message>
<source>default</source>
@@ -2346,6 +2418,10 @@
<source>Create room</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>set password</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>RoomsListModel</name>
@@ -2393,6 +2469,10 @@
<source>Hand-drawn</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Script</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>SeedPrompt</name>
@@ -2460,13 +2540,6 @@
</message>
</context>
<context>
- <name>TeamShowWidget</name>
- <message>
- <source>%1's team</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
<name>ThemePrompt</name>
<message>
<source>Cancel</source>
@@ -3061,4 +3134,127 @@
<translation type="unfinished"></translation>
</message>
</context>
+<context>
+ <name>server</name>
+ <message>
+ <source>Restricted</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>Illegal room name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room with such name already exists</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>
+ <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>No such room</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room version incompatible to your hedgewars version</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>Empty config entry</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
</TS>
--- a/share/hedgewars/Data/Locale/hedgewars_pl.ts Sat Dec 14 21:16:20 2013 +0400
+++ b/share/hedgewars/Data/Locale/hedgewars_pl.ts Tue Dec 17 00:02:52 2013 +0400
@@ -403,6 +403,15 @@
<source>Guest</source>
<translation>Gość</translation>
</message>
+ <message>
+ <source>Room password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>The room is protected with password.
+Please, enter the password:</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>HWGame</name>
@@ -670,7 +679,7 @@
<name>KB</name>
<message>
<source>SDL_ttf returned error while rendering text, most propably it is related to the bug in freetype2. It's recommended to update your freetype lib.</source>
- <translation>SDL_ttf zwrócił problem podczas przetwarzania tekstu, najprawdopodobniej jest to związane z błędem we freetype2. Zaleca się zaktualizowanie biblioteki freetype.</translation>
+ <translation type="obsolete">SDL_ttf zwrócił problem podczas przetwarzania tekstu, najprawdopodobniej jest to związane z błędem we freetype2. Zaleca się zaktualizowanie biblioteki freetype.</translation>
</message>
</context>
<context>
@@ -685,15 +694,15 @@
<message>
<source>Duration: %1m %2s
</source>
- <translation>Długość: %1m %2s </translation>
+ <translation type="obsolete">Długość: %1m %2s </translation>
</message>
<message>
<source>Video: %1x%2, </source>
- <translation>Wideo: %1x%2, </translation>
+ <translation type="obsolete">Wideo: %1x%2, </translation>
</message>
<message>
<source>%1 fps, </source>
- <translation>%1 kl/s, </translation>
+ <translation type="obsolete">%1 kl/s, </translation>
</message>
<message>
<source>Audio: </source>
@@ -703,6 +712,18 @@
<source>unknown</source>
<translation>nieznany</translation>
</message>
+ <message>
+ <source>Duration: %1m %2s</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Video: %1x%2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>%1 fps</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>MapModel</name>
@@ -830,6 +851,18 @@
<source>Eraser</source>
<translation>Gumka</translation>
</message>
+ <message>
+ <source>Polyline</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Rectangle</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Ellipse</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>PageEditTeam</name>
@@ -948,6 +981,14 @@
<source>Save</source>
<translation>Zapisz</translation>
</message>
+ <message numerus="yes">
+ <source>(%1 %2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ <numerusform></numerusform>
+ <numerusform></numerusform>
+ </translation>
+ </message>
</context>
<context>
<name>PageInGame</name>
@@ -1269,11 +1310,11 @@
</message>
<message>
<source>Rules:</source>
- <translation>Zasady:</translation>
+ <translation type="obsolete">Zasady:</translation>
</message>
<message>
<source>Weapons:</source>
- <translation>Uzbrojenie:</translation>
+ <translation type="obsolete">Uzbrojenie:</translation>
</message>
<message>
<source>Search:</source>
@@ -1309,7 +1350,7 @@
</message>
<message>
<source>Clear filters</source>
- <translation>Usuń filtry</translation>
+ <translation type="obsolete">Usuń filtry</translation>
</message>
<message>
<source>Open server administration page</source>
@@ -1438,6 +1479,22 @@
<source>Add an indestructible border along the bottom</source>
<translation>Dodaje niezniszczalną ramkę u dołu mapy</translation>
</message>
+ <message>
+ <source>None (Default)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Wrap (World wraps)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Bounce (Edges reflect)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Sea (Edges connect to sea)</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>PageSelectWeapon</name>
@@ -1537,12 +1594,20 @@
<message>
<source>Date: %1
</source>
- <translation>Data: %1</translation>
+ <translation type="obsolete">Data: %1</translation>
</message>
<message>
<source>Size: %1
</source>
- <translation>Rozmiar: %1</translation>
+ <translation type="obsolete">Rozmiar: %1</translation>
+ </message>
+ <message>
+ <source>Date: %1</source>
+ <translation type="unfinished">Data: %1 {1?}</translation>
+ </message>
+ <message>
+ <source>Size: %1</source>
+ <translation type="unfinished">Rozmiar: %1 {1?}</translation>
</message>
</context>
<context>
@@ -1678,6 +1743,38 @@
<source>Frontend music</source>
<translation>Muzyka w menu</translation>
</message>
+ <message>
+ <source>Team</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable team tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Hog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable hedgehog tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Health</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable health tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Translucent</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable translucent tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QComboBox</name>
@@ -1699,7 +1796,7 @@
</message>
<message>
<source>Any</source>
- <translation>Dowolne</translation>
+ <translation type="obsolete">Dowolne</translation>
</message>
<message>
<source>In lobby</source>
@@ -1913,7 +2010,7 @@
</message>
<message>
<source>Tip: </source>
- <translation>Rada:</translation>
+ <translation type="obsolete">Rada:</translation>
</message>
<message>
<source>Quality</source>
@@ -2063,6 +2160,18 @@
<source>This setting will be effective at next restart.</source>
<translation>Ustawienia zadziałają po restarcie gry.</translation>
</message>
+ <message>
+ <source>Tip: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Displayed tags above hogs and translucent tags</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>World Edge</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QLineEdit</name>
@@ -2087,7 +2196,7 @@
</message>
<message>
<source>-r%1 (%2)</source>
- <translation>-r%1 (%2)</translation>
+ <translation type="obsolete">-r%1 (%2)</translation>
</message>
</context>
<context>
@@ -2342,6 +2451,13 @@
</message>
</context>
<context>
+ <name>QObject</name>
+ <message>
+ <source>No description available</source>
+ <translation type="unfinished">Brak opisu</translation>
+ </message>
+</context>
+<context>
<name>QPushButton</name>
<message>
<source>Go!</source>
@@ -2478,6 +2594,10 @@
<source>Create room</source>
<translation>Stwórz pokój</translation>
</message>
+ <message>
+ <source>set password</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>RoomsListModel</name>
@@ -2525,6 +2645,10 @@
<source>Hand-drawn</source>
<translation>Rys. ręcznie</translation>
</message>
+ <message>
+ <source>Script</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>SeedPrompt</name>
@@ -2596,7 +2720,7 @@
<name>TeamShowWidget</name>
<message>
<source>%1's team</source>
- <translation>Drużyna %1</translation>
+ <translation type="obsolete">Drużyna %1</translation>
</message>
</context>
<context>
@@ -3194,4 +3318,127 @@
<translation>DPad</translation>
</message>
</context>
+<context>
+ <name>server</name>
+ <message>
+ <source>Restricted</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>Illegal room name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room with such name already exists</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>
+ <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>No such room</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room version incompatible to your hedgewars version</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>Empty config entry</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
</TS>
--- a/share/hedgewars/Data/Locale/hedgewars_pt_BR.ts Sat Dec 14 21:16:20 2013 +0400
+++ b/share/hedgewars/Data/Locale/hedgewars_pt_BR.ts Tue Dec 17 00:02:52 2013 +0400
@@ -153,6 +153,13 @@
</message>
</context>
<context>
+ <name>GameUIConfig</name>
+ <message>
+ <source>Guest</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
<name>HWApplication</name>
<message numerus="yes">
<source>%1 minutes</source>
@@ -382,6 +389,19 @@
<source>This page requires an internet connection.</source>
<translation>Esta página exige uma conexão com a Internet.</translation>
</message>
+ <message>
+ <source>Guest</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>The room is protected with password.
+Please, enter the password:</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>HWGame</name>
@@ -650,7 +670,7 @@
<name>KB</name>
<message>
<source>SDL_ttf returned error while rendering text, most propably it is related to the bug in freetype2. It's recommended to update your freetype lib.</source>
- <translation>SDL_ttf retornou um erro enquanto renderizava o texto, o mais provável é que esse esteja relacionado a um problema na freetype2. Recomendamos que você atualize sua biblioteca freetype.</translation>
+ <translation type="obsolete">SDL_ttf retornou um erro enquanto renderizava o texto, o mais provável é que esse esteja relacionado a um problema na freetype2. Recomendamos que você atualize sua biblioteca freetype.</translation>
</message>
</context>
<context>
@@ -665,15 +685,15 @@
<message>
<source>Duration: %1m %2s
</source>
- <translation>Duração: %1m %2s</translation>
+ <translation type="obsolete">Duração: %1m %2s</translation>
</message>
<message>
<source>Video: %1x%2, </source>
- <translation>Vídeo: %1x%2, </translation>
+ <translation type="obsolete">Vídeo: %1x%2, </translation>
</message>
<message>
<source>%1 fps, </source>
- <translation>%1 fps, </translation>
+ <translation type="obsolete">%1 fps, </translation>
</message>
<message>
<source>Audio: </source>
@@ -683,6 +703,18 @@
<source>unknown</source>
<translation>desconhecido</translation>
</message>
+ <message>
+ <source>Duration: %1m %2s</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Video: %1x%2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>%1 fps</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>MapModel</name>
@@ -810,6 +842,18 @@
<source>Eraser</source>
<translation>Borracha</translation>
</message>
+ <message>
+ <source>Polyline</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Rectangle</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Ellipse</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>PageEditTeam</name>
@@ -922,6 +966,13 @@
<source>Save</source>
<translation>Salvar</translation>
</message>
+ <message numerus="yes">
+ <source>(%1 %2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ <numerusform></numerusform>
+ </translation>
+ </message>
</context>
<context>
<name>PageInGame</name>
@@ -1243,11 +1294,11 @@
</message>
<message>
<source>Rules:</source>
- <translation>Regras:</translation>
+ <translation type="obsolete">Regras:</translation>
</message>
<message>
<source>Weapons:</source>
- <translation>Armas:</translation>
+ <translation type="obsolete">Armas:</translation>
</message>
<message>
<source>Search:</source>
@@ -1282,7 +1333,7 @@
</message>
<message>
<source>Clear filters</source>
- <translation>Limpar filtros</translation>
+ <translation type="obsolete">Limpar filtros</translation>
</message>
<message>
<source>Open server administration page</source>
@@ -1411,6 +1462,22 @@
<source>Add an indestructible border along the bottom</source>
<translation>Adicione uma borda indestrutível na parte inferior</translation>
</message>
+ <message>
+ <source>None (Default)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Wrap (World wraps)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Bounce (Edges reflect)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Sea (Edges connect to sea)</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>PageSelectWeapon</name>
@@ -1509,12 +1576,20 @@
<message>
<source>Date: %1
</source>
- <translation>Data: %1</translation>
+ <translation type="obsolete">Data: %1</translation>
</message>
<message>
<source>Size: %1
</source>
- <translation>Tamanho: %1</translation>
+ <translation type="obsolete">Tamanho: %1</translation>
+ </message>
+ <message>
+ <source>Date: %1</source>
+ <translation type="unfinished">Data: %1 {1?}</translation>
+ </message>
+ <message>
+ <source>Size: %1</source>
+ <translation type="unfinished">Tamanho: %1 {1?}</translation>
</message>
</context>
<context>
@@ -1650,6 +1725,38 @@
<source>Frontend music</source>
<translation>Música da interface</translation>
</message>
+ <message>
+ <source>Team</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable team tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Hog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable hedgehog tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Health</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable health tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Translucent</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable translucent tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QComboBox</name>
@@ -1671,7 +1778,7 @@
</message>
<message>
<source>Any</source>
- <translation>Qualquer</translation>
+ <translation type="obsolete">Qualquer</translation>
</message>
<message>
<source>In lobby</source>
@@ -1885,7 +1992,7 @@
</message>
<message>
<source>Tip: </source>
- <translation>Dica: </translation>
+ <translation type="obsolete">Dica: </translation>
</message>
<message>
<source>Quality</source>
@@ -2031,6 +2138,18 @@
<source>This setting will be effective at next restart.</source>
<translation>Esta configuração se efetivará no próximo reinício.</translation>
</message>
+ <message>
+ <source>Tip: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Displayed tags above hogs and translucent tags</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>World Edge</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QLineEdit</name>
@@ -2055,7 +2174,7 @@
</message>
<message>
<source>-r%1 (%2)</source>
- <translation>-r%1 (%2)</translation>
+ <translation type="obsolete">-r%1 (%2)</translation>
</message>
</context>
<context>
@@ -2283,6 +2402,13 @@
</message>
</context>
<context>
+ <name>QObject</name>
+ <message>
+ <source>No description available</source>
+ <translation type="unfinished">Não há descrição disponível</translation>
+ </message>
+</context>
+<context>
<name>QPushButton</name>
<message>
<source>Go!</source>
@@ -2419,6 +2545,10 @@
<source>Create room</source>
<translation>Criar sala</translation>
</message>
+ <message>
+ <source>set password</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>RoomsListModel</name>
@@ -2466,6 +2596,10 @@
<source>Hand-drawn</source>
<translation>Desenhado à mão</translation>
</message>
+ <message>
+ <source>Script</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>SeedPrompt</name>
@@ -2537,7 +2671,7 @@
<name>TeamShowWidget</name>
<message>
<source>%1's team</source>
- <translation>Equipe de %1</translation>
+ <translation type="obsolete">Equipe de %1</translation>
</message>
</context>
<context>
@@ -3137,4 +3271,127 @@
<translation>DPad</translation>
</message>
</context>
+<context>
+ <name>server</name>
+ <message>
+ <source>Restricted</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>Illegal room name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room with such name already exists</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>
+ <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>No such room</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room version incompatible to your hedgewars version</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>Empty config entry</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
</TS>
--- a/share/hedgewars/Data/Locale/hedgewars_pt_PT.ts Sat Dec 14 21:16:20 2013 +0400
+++ b/share/hedgewars/Data/Locale/hedgewars_pt_PT.ts Tue Dec 17 00:02:52 2013 +0400
@@ -157,6 +157,13 @@
</message>
</context>
<context>
+ <name>GameUIConfig</name>
+ <message>
+ <source>Guest</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
<name>HWApplication</name>
<message numerus="yes">
<source>%1 minutes</source>
@@ -386,6 +393,19 @@
<source>This page requires an internet connection.</source>
<translation>Esta página requer ligação à internet</translation>
</message>
+ <message>
+ <source>Guest</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>The room is protected with password.
+Please, enter the password:</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>HWGame</name>
@@ -657,7 +677,7 @@
<name>KB</name>
<message>
<source>SDL_ttf returned error while rendering text, most propably it is related to the bug in freetype2. It's recommended to update your freetype lib.</source>
- <translation>SDL_ttf retornou um erro ao renderizar o texto, muito provavelmente está relacionado com o bug no freetype2. É recomendado atualizar a sua lib freetype.</translation>
+ <translation type="obsolete">SDL_ttf retornou um erro ao renderizar o texto, muito provavelmente está relacionado com o bug no freetype2. É recomendado atualizar a sua lib freetype.</translation>
</message>
</context>
<context>
@@ -672,16 +692,16 @@
<message>
<source>Duration: %1m %2s
</source>
- <translation>Duração: %1m %2s
+ <translation type="obsolete">Duração: %1m %2s
</translation>
</message>
<message>
<source>Video: %1x%2, </source>
- <translation>Vídeo: %1x%2, </translation>
+ <translation type="obsolete">Vídeo: %1x%2, </translation>
</message>
<message>
<source>%1 fps, </source>
- <translation>%1 fps, </translation>
+ <translation type="obsolete">%1 fps, </translation>
</message>
<message>
<source>Audio: </source>
@@ -691,6 +711,18 @@
<source>unknown</source>
<translation>desconhecido</translation>
</message>
+ <message>
+ <source>Duration: %1m %2s</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Video: %1x%2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>%1 fps</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>MapModel</name>
@@ -818,6 +850,18 @@
<source>Eraser</source>
<translation>Apagador</translation>
</message>
+ <message>
+ <source>Polyline</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Rectangle</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Ellipse</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>PageEditTeam</name>
@@ -930,6 +974,13 @@
<source>Save</source>
<translation>Gravar</translation>
</message>
+ <message numerus="yes">
+ <source>(%1 %2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ <numerusform></numerusform>
+ </translation>
+ </message>
</context>
<context>
<name>PageInGame</name>
@@ -1235,11 +1286,11 @@
</message>
<message>
<source>Rules:</source>
- <translation>Regras:</translation>
+ <translation type="obsolete">Regras:</translation>
</message>
<message>
<source>Weapons:</source>
- <translation>Armamento:</translation>
+ <translation type="obsolete">Armamento:</translation>
</message>
<message numerus="yes">
<source>%1 players online</source>
@@ -1266,7 +1317,7 @@
</message>
<message>
<source>Clear filters</source>
- <translation>Limpar filtros</translation>
+ <translation type="obsolete">Limpar filtros</translation>
</message>
<message>
<source>Open server administration page</source>
@@ -1395,6 +1446,22 @@
<source>Add an indestructible border along the bottom</source>
<translation>Adiciona uma barreira indestrutível ao longo do fundo do terreno</translation>
</message>
+ <message>
+ <source>None (Default)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Wrap (World wraps)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Bounce (Edges reflect)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Sea (Edges connect to sea)</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>PageSelectWeapon</name>
@@ -1493,15 +1560,25 @@
<message>
<source>Date: %1
</source>
- <translation>Data: %1
+ <translation type="obsolete">Data: %1
</translation>
</message>
<message>
<source>Size: %1
</source>
- <translation>Tamanho: %1
+ <translation type="obsolete">Tamanho: %1
</translation>
</message>
+ <message>
+ <source>Date: %1</source>
+ <translation type="unfinished">Data: %1
+ {1?}</translation>
+ </message>
+ <message>
+ <source>Size: %1</source>
+ <translation type="unfinished">Tamanho: %1
+ {1?}</translation>
+ </message>
</context>
<context>
<name>QAction</name>
@@ -1632,6 +1709,38 @@
<source>Frontend music</source>
<translation>Musica no frontend</translation>
</message>
+ <message>
+ <source>Team</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable team tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Hog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable hedgehog tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Health</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable health tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Translucent</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable translucent tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QComboBox</name>
@@ -1653,7 +1762,7 @@
</message>
<message>
<source>Any</source>
- <translation>Qualquer</translation>
+ <translation type="obsolete">Qualquer</translation>
</message>
<message>
<source>Disabled</source>
@@ -1855,7 +1964,7 @@
</message>
<message>
<source>Tip: </source>
- <translation>Dica: </translation>
+ <translation type="obsolete">Dica: </translation>
</message>
<message>
<source>Quality</source>
@@ -2001,6 +2110,18 @@
<source>This setting will be effective at next restart.</source>
<translation>Esta opção entrará em efeito quando o jogo for reiniciado.</translation>
</message>
+ <message>
+ <source>Tip: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Displayed tags above hogs and translucent tags</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>World Edge</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QLineEdit</name>
@@ -2025,7 +2146,7 @@
</message>
<message>
<source>-r%1 (%2)</source>
- <translation>-r%1 (%2)</translation>
+ <translation type="obsolete">-r%1 (%2)</translation>
</message>
</context>
<context>
@@ -2285,6 +2406,13 @@
</message>
</context>
<context>
+ <name>QObject</name>
+ <message>
+ <source>No description available</source>
+ <translation type="unfinished">Sem descrição disponível</translation>
+ </message>
+</context>
+<context>
<name>QPushButton</name>
<message>
<source>default</source>
@@ -2421,6 +2549,10 @@
<source>Create room</source>
<translation>Criar sala</translation>
</message>
+ <message>
+ <source>set password</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>RoomsListModel</name>
@@ -2468,6 +2600,10 @@
<source>Hand-drawn</source>
<translation>Desenhado à mão</translation>
</message>
+ <message>
+ <source>Script</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>SeedPrompt</name>
@@ -2539,7 +2675,7 @@
<name>TeamShowWidget</name>
<message>
<source>%1's team</source>
- <translation>Equipa de %1</translation>
+ <translation type="obsolete">Equipa de %1</translation>
</message>
</context>
<context>
@@ -3141,115 +3277,123 @@
<name>server</name>
<message>
<source>Not room master</source>
- <translation type="obsolete">Não és o anfitrião da sala</translation>
+ <translation type="unfinished">Não és o anfitrião da sala</translation>
</message>
<message>
<source>Corrupted hedgehogs info</source>
- <translation type="obsolete">Informação dos ouriços corrompida</translation>
+ <translation type="unfinished">Informação dos ouriços corrompida</translation>
</message>
<message>
<source>too many teams</source>
- <translation type="obsolete">demasiadas equipas</translation>
+ <translation type="unfinished">demasiadas equipas</translation>
</message>
<message>
<source>too many hedgehogs</source>
- <translation type="obsolete">demasiados ouriços</translation>
+ <translation type="unfinished">demasiados ouriços</translation>
</message>
<message>
<source>There's already a team with same name in the list</source>
- <translation type="obsolete">Já existe uma equipa com o mesmo nome na lista</translation>
+ <translation type="unfinished">Já existe uma equipa com o mesmo nome na lista</translation>
</message>
<message>
<source>round in progress</source>
- <translation type="obsolete">partida em progresso</translation>
+ <translation type="unfinished">partida em progresso</translation>
</message>
<message>
<source>restricted</source>
- <translation type="obsolete">limitada</translation>
+ <translation type="unfinished">limitada</translation>
</message>
<message>
<source>REMOVE_TEAM: no such team</source>
- <translation type="obsolete">REMOVE_TEAM: equipa inexistente</translation>
+ <translation type="unfinished">REMOVE_TEAM: equipa inexistente</translation>
</message>
<message>
<source>Not team owner!</source>
- <translation type="obsolete">A equipa não te pertence!</translation>
+ <translation type="unfinished">A equipa não te pertence!</translation>
</message>
<message>
<source>Less than two clans!</source>
- <translation type="obsolete">Menos de 2 clãs!</translation>
+ <translation type="unfinished">Menos de 2 clãs!</translation>
</message>
<message>
<source>Room with such name already exists</source>
- <translation type="obsolete">Já existe uma sala com esse nome</translation>
+ <translation type="unfinished">Já existe uma sala com esse nome</translation>
</message>
<message>
<source>Nickname already chosen</source>
- <translation type="obsolete">Utilizador já em uso</translation>
+ <translation type="unfinished">Utilizador já em uso</translation>
</message>
<message>
<source>Illegal nickname</source>
- <translation type="obsolete">Nome de utilizador ilegal</translation>
+ <translation type="unfinished">Nome de utilizador ilegal</translation>
</message>
<message>
<source>Protocol already known</source>
- <translation type="obsolete">Protocolo já conhecido</translation>
+ <translation type="unfinished">Protocolo já conhecido</translation>
</message>
<message>
<source>Bad number</source>
- <translation type="obsolete">Número inválido</translation>
+ <translation type="unfinished">Número inválido</translation>
</message>
<message>
<source>Nickname is already in use</source>
- <translation type="obsolete">Nome de utilizador já em uso</translation>
+ <translation type="unfinished">Nome de utilizador já em uso</translation>
</message>
<message>
<source>No checker rights</source>
- <translation type="obsolete">Não possui permissões para verificar</translation>
+ <translation type="unfinished">Não possui permissões para verificar</translation>
</message>
<message>
<source>Authentication failed</source>
- <translation type="obsolete">A autenticação falhou</translation>
+ <translation type="unfinished">A autenticação falhou</translation>
</message>
<message>
<source>60 seconds cooldown after kick</source>
- <translation type="obsolete">É necessário aguardar 60 segundos após uma expulsão</translation>
+ <translation type="unfinished">É necessário aguardar 60 segundos após uma expulsão</translation>
</message>
<message>
<source>kicked</source>
- <translation type="obsolete">expulso</translation>
+ <translation type="unfinished">expulso</translation>
</message>
<message>
<source>Ping timeout</source>
- <translation type="obsolete">Ping timeout</translation>
+ <translation type="unfinished">Ping timeout</translation>
</message>
<message>
<source>bye</source>
- <translation type="obsolete">tchau (bye)</translation>
+ <translation type="unfinished">tchau (bye)</translation>
</message>
<message>
<source>Illegal room name</source>
- <translation type="obsolete">Nome da sala ilegal</translation>
+ <translation type="unfinished">Nome da sala ilegal</translation>
</message>
<message>
<source>No such room</source>
- <translation type="obsolete">Sala inexistente</translation>
+ <translation type="unfinished">Sala inexistente</translation>
</message>
<message>
<source>Joining restricted</source>
- <translation type="obsolete">Entrada restrita</translation>
+ <translation type="unfinished">Entrada restrita</translation>
</message>
<message>
<source>Registered users only</source>
- <translation type="obsolete">Apenas utilizadores registados</translation>
+ <translation type="unfinished">Apenas utilizadores registados</translation>
</message>
<message>
<source>You are banned in this room</source>
- <translation type="obsolete">Estás banido desta sala</translation>
+ <translation type="unfinished">Estás banido desta sala</translation>
</message>
<message>
<source>Empty config entry</source>
- <translation type="obsolete">Campo vazio na configuração</translation>
+ <translation type="unfinished">Campo vazio na configuração</translation>
+ </message>
+ <message>
+ <source>Restricted</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room version incompatible to your hedgewars version</source>
+ <translation type="unfinished"></translation>
</message>
</context>
</TS>
--- a/share/hedgewars/Data/Locale/hedgewars_ro.ts Sat Dec 14 21:16:20 2013 +0400
+++ b/share/hedgewars/Data/Locale/hedgewars_ro.ts Tue Dec 17 00:02:52 2013 +0400
@@ -154,6 +154,13 @@
</message>
</context>
<context>
+ <name>GameUIConfig</name>
+ <message>
+ <source>Guest</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
<name>HWApplication</name>
<message numerus="yes">
<source>%1 minutes</source>
@@ -375,6 +382,19 @@
<source>This page requires an internet connection.</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Guest</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>The room is protected with password.
+Please, enter the password:</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>HWGame</name>
@@ -639,7 +659,7 @@
<name>KB</name>
<message>
<source>SDL_ttf returned error while rendering text, most propably it is related to the bug in freetype2. It's recommended to update your freetype lib.</source>
- <translation>SDL_ttf returned error while rendering text, most propably it is related to the bug in freetype2. It's recommended to update your freetype lib.</translation>
+ <translation type="obsolete">SDL_ttf returned error while rendering text, most propably it is related to the bug in freetype2. It's recommended to update your freetype lib.</translation>
</message>
</context>
<context>
@@ -652,19 +672,6 @@
<context>
<name>LibavInteraction</name>
<message>
- <source>Duration: %1m %2s
-</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Video: %1x%2, </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>%1 fps, </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Audio: </source>
<translation type="unfinished"></translation>
</message>
@@ -672,6 +679,18 @@
<source>unknown</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Duration: %1m %2s</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Video: %1x%2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>%1 fps</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>MapModel</name>
@@ -799,6 +818,18 @@
<source>Eraser</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Polyline</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Rectangle</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Ellipse</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>PageEditTeam</name>
@@ -917,6 +948,14 @@
<source>Save</source>
<translation type="unfinished"></translation>
</message>
+ <message numerus="yes">
+ <source>(%1 %2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ <numerusform></numerusform>
+ <numerusform></numerusform>
+ </translation>
+ </message>
</context>
<context>
<name>PageInGame</name>
@@ -1236,14 +1275,6 @@
<source>Room Name:</source>
<translation type="obsolete">Room Name:</translation>
</message>
- <message>
- <source>Rules:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Weapons:</source>
- <translation type="unfinished"></translation>
- </message>
<message numerus="yes">
<source>%1 players online</source>
<translation type="unfinished">
@@ -1269,10 +1300,6 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>Clear filters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Open server administration page</source>
<translation type="unfinished"></translation>
</message>
@@ -1399,6 +1426,22 @@
<source>Add an indestructible border along the bottom</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>None (Default)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Wrap (World wraps)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Bounce (Edges reflect)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Sea (Edges connect to sea)</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>PageSelectWeapon</name>
@@ -1496,13 +1539,11 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>Date: %1
-</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Size: %1
-</source>
+ <source>Date: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Size: %1</source>
<translation type="unfinished"></translation>
</message>
</context>
@@ -1639,6 +1680,38 @@
<source>Frontend music</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Team</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable team tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Hog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable hedgehog tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Health</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable health tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Translucent</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable translucent tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QComboBox</name>
@@ -1659,10 +1732,6 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>Any</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Disabled</source>
<translation type="unfinished"></translation>
</message>
@@ -1865,10 +1934,6 @@
<translation>Explosives</translation>
</message>
<message>
- <source>Tip: </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Quality</source>
<translation type="unfinished"></translation>
</message>
@@ -2010,6 +2075,18 @@
<source>This setting will be effective at next restart.</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Tip: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Displayed tags above hogs and translucent tags</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>World Edge</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QLineEdit</name>
@@ -2032,10 +2109,6 @@
<source>Hedgewars %1</source>
<translation>Hedgewars %1</translation>
</message>
- <message>
- <source>-r%1 (%2)</source>
- <translation type="unfinished"></translation>
- </message>
</context>
<context>
<name>QMessageBox</name>
@@ -2262,6 +2335,13 @@
</message>
</context>
<context>
+ <name>QObject</name>
+ <message>
+ <source>No description available</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
<name>QPushButton</name>
<message>
<source>default</source>
@@ -2398,6 +2478,10 @@
<source>Create room</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>set password</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>RoomsListModel</name>
@@ -2445,6 +2529,10 @@
<source>Hand-drawn</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Script</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>SeedPrompt</name>
@@ -2512,13 +2600,6 @@
</message>
</context>
<context>
- <name>TeamShowWidget</name>
- <message>
- <source>%1's team</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
<name>ThemePrompt</name>
<message>
<source>Cancel</source>
@@ -3113,4 +3194,127 @@
<translation type="unfinished"></translation>
</message>
</context>
+<context>
+ <name>server</name>
+ <message>
+ <source>Restricted</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>Illegal room name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room with such name already exists</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>
+ <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>No such room</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room version incompatible to your hedgewars version</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>Empty config entry</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
</TS>
--- a/share/hedgewars/Data/Locale/hedgewars_ru.ts Sat Dec 14 21:16:20 2013 +0400
+++ b/share/hedgewars/Data/Locale/hedgewars_ru.ts Tue Dec 17 00:02:52 2013 +0400
@@ -158,6 +158,13 @@
</message>
</context>
<context>
+ <name>GameUIConfig</name>
+ <message>
+ <source>Guest</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
<name>HWApplication</name>
<message numerus="yes">
<source>%1 minutes</source>
@@ -384,6 +391,19 @@
<source>This page requires an internet connection.</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Guest</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>The room is protected with password.
+Please, enter the password:</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>HWGame</name>
@@ -648,7 +668,7 @@
<name>KB</name>
<message>
<source>SDL_ttf returned error while rendering text, most propably it is related to the bug in freetype2. It's recommended to update your freetype lib.</source>
- <translation>SDL_ttf возвратил ошибку при выводе текста, наиболее вероятно это вызвано багом в библиотеке freetype2. Рекомендуется обновить библиотеку.</translation>
+ <translation type="obsolete">SDL_ttf возвратил ошибку при выводе текста, наиболее вероятно это вызвано багом в библиотеке freetype2. Рекомендуется обновить библиотеку.</translation>
</message>
</context>
<context>
@@ -663,15 +683,15 @@
<message>
<source>Duration: %1m %2s
</source>
- <translation>Длительность: %1мин %2сек</translation>
+ <translation type="obsolete">Длительность: %1мин %2сек</translation>
</message>
<message>
<source>Video: %1x%2, </source>
- <translation>Видео: %1x%2, </translation>
+ <translation type="obsolete">Видео: %1x%2, </translation>
</message>
<message>
<source>%1 fps, </source>
- <translation>%1 кадров/сек,</translation>
+ <translation type="obsolete">%1 кадров/сек,</translation>
</message>
<message>
<source>Audio: </source>
@@ -681,6 +701,18 @@
<source>unknown</source>
<translation>неизвестно</translation>
</message>
+ <message>
+ <source>Duration: %1m %2s</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Video: %1x%2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>%1 fps</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>MapModel</name>
@@ -808,6 +840,18 @@
<source>Eraser</source>
<translation>Стирательная резинка</translation>
</message>
+ <message>
+ <source>Polyline</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Rectangle</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Ellipse</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>PageEditTeam</name>
@@ -926,6 +970,14 @@
<source>Save</source>
<translation type="unfinished">Сохранить</translation>
</message>
+ <message numerus="yes">
+ <source>(%1 %2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ <numerusform></numerusform>
+ <numerusform></numerusform>
+ </translation>
+ </message>
</context>
<context>
<name>PageInGame</name>
@@ -1247,11 +1299,11 @@
</message>
<message>
<source>Rules:</source>
- <translation>Правила:</translation>
+ <translation type="obsolete">Правила:</translation>
</message>
<message>
<source>Weapons:</source>
- <translation>Оружие:</translation>
+ <translation type="obsolete">Оружие:</translation>
</message>
<message>
<source>Search:</source>
@@ -1287,7 +1339,7 @@
</message>
<message>
<source>Clear filters</source>
- <translation>Очистить фильтры</translation>
+ <translation type="obsolete">Очистить фильтры</translation>
</message>
<message>
<source>Open server administration page</source>
@@ -1416,6 +1468,22 @@
<source>Add an indestructible border along the bottom</source>
<translation>Добавить неразрушимую границу внизу карты</translation>
</message>
+ <message>
+ <source>None (Default)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Wrap (World wraps)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Bounce (Edges reflect)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Sea (Edges connect to sea)</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>PageSelectWeapon</name>
@@ -1515,12 +1583,20 @@
<message>
<source>Date: %1
</source>
- <translation>Дата: %1</translation>
+ <translation type="obsolete">Дата: %1</translation>
</message>
<message>
<source>Size: %1
</source>
- <translation>Размер: %1</translation>
+ <translation type="obsolete">Размер: %1</translation>
+ </message>
+ <message>
+ <source>Date: %1</source>
+ <translation type="unfinished">Дата: %1 {1?}</translation>
+ </message>
+ <message>
+ <source>Size: %1</source>
+ <translation type="unfinished">Размер: %1 {1?}</translation>
</message>
</context>
<context>
@@ -1656,6 +1732,38 @@
<source>Frontend music</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Team</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable team tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Hog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable hedgehog tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Health</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable health tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Translucent</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable translucent tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QComboBox</name>
@@ -1677,7 +1785,7 @@
</message>
<message>
<source>Any</source>
- <translation>Любой</translation>
+ <translation type="obsolete">Любой</translation>
</message>
<message>
<source>In lobby</source>
@@ -1891,7 +1999,7 @@
</message>
<message>
<source>Tip: </source>
- <translation>Подсказка:</translation>
+ <translation type="obsolete">Подсказка:</translation>
</message>
<message>
<source>Quality</source>
@@ -2041,6 +2149,18 @@
<source>This setting will be effective at next restart.</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Tip: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Displayed tags above hogs and translucent tags</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>World Edge</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QLineEdit</name>
@@ -2063,10 +2183,6 @@
<source>Hedgewars %1</source>
<translation>Hedgewars %1</translation>
</message>
- <message>
- <source>-r%1 (%2)</source>
- <translation type="unfinished"></translation>
- </message>
</context>
<context>
<name>QMessageBox</name>
@@ -2294,6 +2410,13 @@
</message>
</context>
<context>
+ <name>QObject</name>
+ <message>
+ <source>No description available</source>
+ <translation type="unfinished">Описание отсутствует</translation>
+ </message>
+</context>
+<context>
<name>QPushButton</name>
<message>
<source>Play demo</source>
@@ -2430,6 +2553,10 @@
<source>Create room</source>
<translation>Создать комнату</translation>
</message>
+ <message>
+ <source>set password</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>RoomsListModel</name>
@@ -2477,12 +2604,16 @@
<source>Hand-drawn</source>
<translation>Рисованная карта</translation>
</message>
+ <message>
+ <source>Script</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>SeedPrompt</name>
<message>
<source>The map seed is the basis for all random values generated by the game.</source>
- <translation>Зерно карты - это основа для всех псведослучайных значений, используемых в игре.</translation>
+ <translation>Зерно карты - это основа для всех псевдослучайных значений, используемых в игре.</translation>
</message>
<message>
<source>Cancel</source>
@@ -2547,7 +2678,7 @@
<name>TeamShowWidget</name>
<message>
<source>%1's team</source>
- <translation>Команда %1</translation>
+ <translation type="obsolete">Команда %1</translation>
</message>
</context>
<context>
@@ -3145,4 +3276,127 @@
<translation type="unfinished"></translation>
</message>
</context>
+<context>
+ <name>server</name>
+ <message>
+ <source>Restricted</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>Illegal room name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room with such name already exists</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>
+ <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>No such room</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room version incompatible to your hedgewars version</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>Empty config entry</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
</TS>
--- a/share/hedgewars/Data/Locale/hedgewars_sk.ts Sat Dec 14 21:16:20 2013 +0400
+++ b/share/hedgewars/Data/Locale/hedgewars_sk.ts Tue Dec 17 00:02:52 2013 +0400
@@ -158,6 +158,13 @@
</message>
</context>
<context>
+ <name>GameUIConfig</name>
+ <message>
+ <source>Guest</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
<name>HWApplication</name>
<message numerus="yes">
<source>%1 minutes</source>
@@ -382,6 +389,19 @@
<source>This page requires an internet connection.</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Guest</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>The room is protected with password.
+Please, enter the password:</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>HWGame</name>
@@ -646,7 +666,7 @@
<name>KB</name>
<message>
<source>SDL_ttf returned error while rendering text, most propably it is related to the bug in freetype2. It's recommended to update your freetype lib.</source>
- <translation>SDL_ttf vrátil chybu počas renderovania textu, s najväčšou pravdepodobnosťou sa jedná o chybu vo freetype2. Doporučujeme aktualizovať vašu knižnicu freetype.</translation>
+ <translation type="obsolete">SDL_ttf vrátil chybu počas renderovania textu, s najväčšou pravdepodobnosťou sa jedná o chybu vo freetype2. Doporučujeme aktualizovať vašu knižnicu freetype.</translation>
</message>
</context>
<context>
@@ -661,15 +681,15 @@
<message>
<source>Duration: %1m %2s
</source>
- <translation>Trvanie: %1m %2s</translation>
+ <translation type="obsolete">Trvanie: %1m %2s</translation>
</message>
<message>
<source>Video: %1x%2, </source>
- <translation>Video: %1x%2, </translation>
+ <translation type="obsolete">Video: %1x%2, </translation>
</message>
<message>
<source>%1 fps, </source>
- <translation>%1 fps, </translation>
+ <translation type="obsolete">%1 fps, </translation>
</message>
<message>
<source>Audio: </source>
@@ -679,6 +699,18 @@
<source>unknown</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Duration: %1m %2s</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Video: %1x%2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>%1 fps</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>MapModel</name>
@@ -806,6 +838,18 @@
<source>Eraser</source>
<translation>Guma</translation>
</message>
+ <message>
+ <source>Polyline</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Rectangle</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Ellipse</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>PageEditTeam</name>
@@ -924,6 +968,14 @@
<source>Save</source>
<translation type="unfinished">Uložiť</translation>
</message>
+ <message numerus="yes">
+ <source>(%1 %2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ <numerusform></numerusform>
+ <numerusform></numerusform>
+ </translation>
+ </message>
</context>
<context>
<name>PageInGame</name>
@@ -1245,11 +1297,11 @@
</message>
<message>
<source>Rules:</source>
- <translation>Pravidlá:</translation>
+ <translation type="obsolete">Pravidlá:</translation>
</message>
<message>
<source>Weapons:</source>
- <translation>Zbrane:</translation>
+ <translation type="obsolete">Zbrane:</translation>
</message>
<message>
<source>Search:</source>
@@ -1284,10 +1336,6 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>Clear filters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Open server administration page</source>
<translation type="unfinished"></translation>
</message>
@@ -1414,6 +1462,22 @@
<source>Add an indestructible border along the bottom</source>
<translation>Pridať nezničiteľný okraj popri spodku obrazovky</translation>
</message>
+ <message>
+ <source>None (Default)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Wrap (World wraps)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Bounce (Edges reflect)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Sea (Edges connect to sea)</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>PageSelectWeapon</name>
@@ -1511,13 +1575,11 @@
<translation>uploadujem</translation>
</message>
<message>
- <source>Date: %1
-</source>
+ <source>Date: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Size: %1
-</source>
+ <source>Size: %1</source>
<translation type="unfinished"></translation>
</message>
</context>
@@ -1654,6 +1716,38 @@
<source>Frontend music</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Team</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable team tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Hog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable hedgehog tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Health</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable health tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Translucent</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable translucent tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QComboBox</name>
@@ -1675,7 +1769,7 @@
</message>
<message>
<source>Any</source>
- <translation>Ľubovoľný</translation>
+ <translation type="obsolete">Ľubovoľný</translation>
</message>
<message>
<source>In lobby</source>
@@ -1889,7 +1983,7 @@
</message>
<message>
<source>Tip: </source>
- <translation>Tip: </translation>
+ <translation type="obsolete">Tip: </translation>
</message>
<message>
<source>Quality</source>
@@ -2037,6 +2131,18 @@
<source>This setting will be effective at next restart.</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Tip: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Displayed tags above hogs and translucent tags</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>World Edge</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QLineEdit</name>
@@ -2059,10 +2165,6 @@
<source>Hedgewars %1</source>
<translation>Hedgewars %1</translation>
</message>
- <message>
- <source>-r%1 (%2)</source>
- <translation type="unfinished"></translation>
- </message>
</context>
<context>
<name>QMessageBox</name>
@@ -2315,6 +2417,13 @@
</message>
</context>
<context>
+ <name>QObject</name>
+ <message>
+ <source>No description available</source>
+ <translation type="unfinished">Žiaden popis nie je dostupný</translation>
+ </message>
+</context>
+<context>
<name>QPushButton</name>
<message>
<source>Go!</source>
@@ -2451,6 +2560,10 @@
<source>Create room</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>set password</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>RoomsListModel</name>
@@ -2498,6 +2611,10 @@
<source>Hand-drawn</source>
<translation>Ručne kreslená</translation>
</message>
+ <message>
+ <source>Script</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>SeedPrompt</name>
@@ -2565,13 +2682,6 @@
</message>
</context>
<context>
- <name>TeamShowWidget</name>
- <message>
- <source>%1's team</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
<name>ThemePrompt</name>
<message>
<source>Cancel</source>
@@ -3166,4 +3276,127 @@
<translation>Pravý joystick (Doľava)</translation>
</message>
</context>
+<context>
+ <name>server</name>
+ <message>
+ <source>Restricted</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>Illegal room name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room with such name already exists</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>
+ <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>No such room</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room version incompatible to your hedgewars version</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>Empty config entry</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
</TS>
--- a/share/hedgewars/Data/Locale/hedgewars_sv.ts Sat Dec 14 21:16:20 2013 +0400
+++ b/share/hedgewars/Data/Locale/hedgewars_sv.ts Tue Dec 17 00:02:52 2013 +0400
@@ -157,6 +157,13 @@
</message>
</context>
<context>
+ <name>GameUIConfig</name>
+ <message>
+ <source>Guest</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
<name>HWApplication</name>
<message numerus="yes">
<source>%1 minutes</source>
@@ -373,6 +380,19 @@
<source>This page requires an internet connection.</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Guest</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>The room is protected with password.
+Please, enter the password:</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>HWGame</name>
@@ -637,7 +657,7 @@
<name>KB</name>
<message>
<source>SDL_ttf returned error while rendering text, most propably it is related to the bug in freetype2. It's recommended to update your freetype lib.</source>
- <translation>Fel uppstod då SDL_ttf skulle rendera text. Det beror högst troligen på felet i freetype2. Du rekommenderas att uppdatera ditt freetype-bibliotek.</translation>
+ <translation type="obsolete">Fel uppstod då SDL_ttf skulle rendera text. Det beror högst troligen på felet i freetype2. Du rekommenderas att uppdatera ditt freetype-bibliotek.</translation>
</message>
</context>
<context>
@@ -650,19 +670,6 @@
<context>
<name>LibavInteraction</name>
<message>
- <source>Duration: %1m %2s
-</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Video: %1x%2, </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>%1 fps, </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Audio: </source>
<translation type="unfinished"></translation>
</message>
@@ -670,6 +677,18 @@
<source>unknown</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Duration: %1m %2s</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Video: %1x%2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>%1 fps</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>MapModel</name>
@@ -797,6 +816,18 @@
<source>Eraser</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Polyline</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Rectangle</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Ellipse</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>PageEditTeam</name>
@@ -909,6 +940,13 @@
<source>Save</source>
<translation type="unfinished">Spara</translation>
</message>
+ <message numerus="yes">
+ <source>(%1 %2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ <numerusform></numerusform>
+ </translation>
+ </message>
</context>
<context>
<name>PageInGame</name>
@@ -1230,11 +1268,11 @@
</message>
<message>
<source>Rules:</source>
- <translation>Regler:</translation>
+ <translation type="obsolete">Regler:</translation>
</message>
<message>
<source>Weapons:</source>
- <translation>Vapen:</translation>
+ <translation type="obsolete">Vapen:</translation>
</message>
<message>
<source>Search:</source>
@@ -1268,10 +1306,6 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>Clear filters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Open server administration page</source>
<translation type="unfinished"></translation>
</message>
@@ -1398,6 +1432,22 @@
<source>Add an indestructible border along the bottom</source>
<translation>Lägg till en oförstörbar barriär längs botten</translation>
</message>
+ <message>
+ <source>None (Default)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Wrap (World wraps)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Bounce (Edges reflect)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Sea (Edges connect to sea)</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>PageSelectWeapon</name>
@@ -1494,13 +1544,11 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>Date: %1
-</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Size: %1
-</source>
+ <source>Date: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Size: %1</source>
<translation type="unfinished"></translation>
</message>
</context>
@@ -1637,6 +1685,38 @@
<source>Frontend music</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Team</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable team tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Hog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable hedgehog tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Health</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable health tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Translucent</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable translucent tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QComboBox</name>
@@ -1658,7 +1738,7 @@
</message>
<message>
<source>Any</source>
- <translation>Vilken som</translation>
+ <translation type="obsolete">Vilken som</translation>
</message>
<message>
<source>In lobby</source>
@@ -1872,7 +1952,7 @@
</message>
<message>
<source>Tip: </source>
- <translation>Tips:</translation>
+ <translation type="obsolete">Tips:</translation>
</message>
<message>
<source>Quality</source>
@@ -2016,6 +2096,18 @@
<source>This setting will be effective at next restart.</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Tip: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Displayed tags above hogs and translucent tags</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>World Edge</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QLineEdit</name>
@@ -2038,10 +2130,6 @@
<source>Hedgewars %1</source>
<translation>Hedgewars %1</translation>
</message>
- <message>
- <source>-r%1 (%2)</source>
- <translation type="unfinished"></translation>
- </message>
</context>
<context>
<name>QMessageBox</name>
@@ -2267,6 +2355,13 @@
</message>
</context>
<context>
+ <name>QObject</name>
+ <message>
+ <source>No description available</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
<name>QPushButton</name>
<message>
<source>Go!</source>
@@ -2403,6 +2498,10 @@
<source>Create room</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>set password</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>RoomsListModel</name>
@@ -2450,6 +2549,10 @@
<source>Hand-drawn</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Script</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>SeedPrompt</name>
@@ -2517,13 +2620,6 @@
</message>
</context>
<context>
- <name>TeamShowWidget</name>
- <message>
- <source>%1's team</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
<name>ThemePrompt</name>
<message>
<source>Cancel</source>
@@ -3118,4 +3214,127 @@
<translation>Styrkors</translation>
</message>
</context>
+<context>
+ <name>server</name>
+ <message>
+ <source>Restricted</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>Illegal room name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room with such name already exists</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>
+ <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>No such room</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room version incompatible to your hedgewars version</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>Empty config entry</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
</TS>
--- a/share/hedgewars/Data/Locale/hedgewars_tr_TR.ts Sat Dec 14 21:16:20 2013 +0400
+++ b/share/hedgewars/Data/Locale/hedgewars_tr_TR.ts Tue Dec 17 00:02:52 2013 +0400
@@ -152,6 +152,13 @@
</message>
</context>
<context>
+ <name>GameUIConfig</name>
+ <message>
+ <source>Guest</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
<name>HWApplication</name>
<message numerus="yes">
<source>%1 minutes</source>
@@ -363,6 +370,19 @@
<source>This page requires an internet connection.</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Guest</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>The room is protected with password.
+Please, enter the password:</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>HWGame</name>
@@ -623,7 +643,7 @@
<name>KB</name>
<message>
<source>SDL_ttf returned error while rendering text, most propably it is related to the bug in freetype2. It's recommended to update your freetype lib.</source>
- <translation>SDL_ttf yazıyı yorumlarken hata verdi. Bu büyük ihtimalle freetype2'deki bir hatadan kaynaklanıyor. Freetype kurulumunuzu güncellemenizi öneririz.</translation>
+ <translation type="obsolete">SDL_ttf yazıyı yorumlarken hata verdi. Bu büyük ihtimalle freetype2'deki bir hatadan kaynaklanıyor. Freetype kurulumunuzu güncellemenizi öneririz.</translation>
</message>
</context>
<context>
@@ -636,19 +656,6 @@
<context>
<name>LibavInteraction</name>
<message>
- <source>Duration: %1m %2s
-</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Video: %1x%2, </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>%1 fps, </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Audio: </source>
<translation type="unfinished"></translation>
</message>
@@ -656,6 +663,18 @@
<source>unknown</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Duration: %1m %2s</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Video: %1x%2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>%1 fps</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>MapModel</name>
@@ -783,6 +802,18 @@
<source>Eraser</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Polyline</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Rectangle</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Ellipse</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>PageEditTeam</name>
@@ -889,6 +920,12 @@
<source>Save</source>
<translation type="unfinished"></translation>
</message>
+ <message numerus="yes">
+ <source>(%1 %2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ </translation>
+ </message>
</context>
<context>
<name>PageInGame</name>
@@ -1204,14 +1241,6 @@
<source>Admin features</source>
<translation>Yönetici görevleri</translation>
</message>
- <message>
- <source>Rules:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Weapons:</source>
- <translation type="unfinished"></translation>
- </message>
<message numerus="yes">
<source>%1 players online</source>
<translation type="unfinished">
@@ -1235,10 +1264,6 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>Clear filters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Open server administration page</source>
<translation type="unfinished"></translation>
</message>
@@ -1365,6 +1390,22 @@
<source>Add an indestructible border along the bottom</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>None (Default)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Wrap (World wraps)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Bounce (Edges reflect)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Sea (Edges connect to sea)</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>PageSelectWeapon</name>
@@ -1460,13 +1501,11 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>Date: %1
-</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Size: %1
-</source>
+ <source>Date: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Size: %1</source>
<translation type="unfinished"></translation>
</message>
</context>
@@ -1603,6 +1642,38 @@
<source>Frontend music</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Team</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable team tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Hog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable hedgehog tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Health</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable health tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Translucent</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable translucent tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QComboBox</name>
@@ -1623,10 +1694,6 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>Any</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Disabled</source>
<translation type="unfinished"></translation>
</message>
@@ -1829,10 +1896,6 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>Tip: </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Quality</source>
<translation type="unfinished"></translation>
</message>
@@ -1974,6 +2037,18 @@
<source>This setting will be effective at next restart.</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Tip: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Displayed tags above hogs and translucent tags</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>World Edge</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QLineEdit</name>
@@ -1996,10 +2071,6 @@
<source>Hedgewars %1</source>
<translation>Hedgewars %1</translation>
</message>
- <message>
- <source>-r%1 (%2)</source>
- <translation type="unfinished"></translation>
- </message>
</context>
<context>
<name>QMessageBox</name>
@@ -2223,6 +2294,13 @@
</message>
</context>
<context>
+ <name>QObject</name>
+ <message>
+ <source>No description available</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
<name>QPushButton</name>
<message>
<source>default</source>
@@ -2359,6 +2437,10 @@
<source>Create room</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>set password</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>RoomsListModel</name>
@@ -2406,6 +2488,10 @@
<source>Hand-drawn</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Script</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>SeedPrompt</name>
@@ -2473,13 +2559,6 @@
</message>
</context>
<context>
- <name>TeamShowWidget</name>
- <message>
- <source>%1's team</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
<name>ThemePrompt</name>
<message>
<source>Cancel</source>
@@ -3074,4 +3153,127 @@
<translation type="unfinished"></translation>
</message>
</context>
+<context>
+ <name>server</name>
+ <message>
+ <source>Restricted</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>Illegal room name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room with such name already exists</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>
+ <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>No such room</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room version incompatible to your hedgewars version</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>Empty config entry</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
</TS>
--- a/share/hedgewars/Data/Locale/hedgewars_uk.ts Sat Dec 14 21:16:20 2013 +0400
+++ b/share/hedgewars/Data/Locale/hedgewars_uk.ts Tue Dec 17 00:02:52 2013 +0400
@@ -158,6 +158,13 @@
</message>
</context>
<context>
+ <name>GameUIConfig</name>
+ <message>
+ <source>Guest</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
<name>HWApplication</name>
<message numerus="yes">
<source>%1 minutes</source>
@@ -379,6 +386,19 @@
<source>This page requires an internet connection.</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Guest</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>The room is protected with password.
+Please, enter the password:</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>HWGame</name>
@@ -643,7 +663,7 @@
<name>KB</name>
<message>
<source>SDL_ttf returned error while rendering text, most propably it is related to the bug in freetype2. It's recommended to update your freetype lib.</source>
- <translation>SDL_ttf повернула помилку при виведенні тексту, найімовірніше через помилку у бібліотеці freetype2. Рекомендується оновити бібліотеку freetype2.</translation>
+ <translation type="obsolete">SDL_ttf повернула помилку при виведенні тексту, найімовірніше через помилку у бібліотеці freetype2. Рекомендується оновити бібліотеку freetype2.</translation>
</message>
</context>
<context>
@@ -656,19 +676,6 @@
<context>
<name>LibavInteraction</name>
<message>
- <source>Duration: %1m %2s
-</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Video: %1x%2, </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>%1 fps, </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Audio: </source>
<translation type="unfinished"></translation>
</message>
@@ -676,6 +683,18 @@
<source>unknown</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Duration: %1m %2s</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Video: %1x%2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>%1 fps</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>MapModel</name>
@@ -803,6 +822,18 @@
<source>Eraser</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Polyline</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Rectangle</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Ellipse</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>PageEditTeam</name>
@@ -921,6 +952,14 @@
<source>Save</source>
<translation type="unfinished">Зберегти</translation>
</message>
+ <message numerus="yes">
+ <source>(%1 %2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ <numerusform></numerusform>
+ <numerusform></numerusform>
+ </translation>
+ </message>
</context>
<context>
<name>PageInGame</name>
@@ -1242,11 +1281,11 @@
</message>
<message>
<source>Rules:</source>
- <translation>Правила:</translation>
+ <translation type="obsolete">Правила:</translation>
</message>
<message>
<source>Weapons:</source>
- <translation>Зброя:</translation>
+ <translation type="obsolete">Зброя:</translation>
</message>
<message>
<source>Search:</source>
@@ -1281,10 +1320,6 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>Clear filters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Open server administration page</source>
<translation type="unfinished"></translation>
</message>
@@ -1411,6 +1446,22 @@
<source>Add an indestructible border along the bottom</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>None (Default)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Wrap (World wraps)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Bounce (Edges reflect)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Sea (Edges connect to sea)</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>PageSelectWeapon</name>
@@ -1508,13 +1559,11 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>Date: %1
-</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Size: %1
-</source>
+ <source>Date: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Size: %1</source>
<translation type="unfinished"></translation>
</message>
</context>
@@ -1651,6 +1700,38 @@
<source>Frontend music</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Team</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable team tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Hog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable hedgehog tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Health</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable health tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Translucent</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable translucent tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QComboBox</name>
@@ -1672,7 +1753,7 @@
</message>
<message>
<source>Any</source>
- <translation>Усі</translation>
+ <translation type="obsolete">Усі</translation>
</message>
<message>
<source>In lobby</source>
@@ -1886,7 +1967,7 @@
</message>
<message>
<source>Tip: </source>
- <translation>Порада: </translation>
+ <translation type="obsolete">Порада: </translation>
</message>
<message>
<source>Quality</source>
@@ -2030,6 +2111,18 @@
<source>This setting will be effective at next restart.</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Tip: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Displayed tags above hogs and translucent tags</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>World Edge</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QLineEdit</name>
@@ -2052,10 +2145,6 @@
<source>Hedgewars %1</source>
<translation>Hedgewars %1</translation>
</message>
- <message>
- <source>-r%1 (%2)</source>
- <translation type="unfinished"></translation>
- </message>
</context>
<context>
<name>QMessageBox</name>
@@ -2282,6 +2371,13 @@
</message>
</context>
<context>
+ <name>QObject</name>
+ <message>
+ <source>No description available</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
<name>QPushButton</name>
<message>
<source>default</source>
@@ -2418,6 +2514,10 @@
<source>Create room</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>set password</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>RoomsListModel</name>
@@ -2465,6 +2565,10 @@
<source>Hand-drawn</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Script</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>SeedPrompt</name>
@@ -2532,13 +2636,6 @@
</message>
</context>
<context>
- <name>TeamShowWidget</name>
- <message>
- <source>%1's team</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
<name>ThemePrompt</name>
<message>
<source>Cancel</source>
@@ -3133,4 +3230,127 @@
<translation type="unfinished"></translation>
</message>
</context>
+<context>
+ <name>server</name>
+ <message>
+ <source>Restricted</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>Illegal room name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room with such name already exists</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>
+ <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>No such room</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room version incompatible to your hedgewars version</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>Empty config entry</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
</TS>
--- a/share/hedgewars/Data/Locale/hedgewars_zh_CN.ts Sat Dec 14 21:16:20 2013 +0400
+++ b/share/hedgewars/Data/Locale/hedgewars_zh_CN.ts Tue Dec 17 00:02:52 2013 +0400
@@ -4,7 +4,7 @@
<context>
<name>About</name>
<message>
- <location filename="../../../../QTfrontend/ui/widget/about.cpp" line="93"/>
+ <location filename="../../../../QTfrontend/ui/widget/about.cpp" line="99"/>
<source>Unknown Compiler</source>
<translation type="unfinished"></translation>
</message>
@@ -20,12 +20,12 @@
<context>
<name>AmmoSchemeModel</name>
<message>
- <location filename="../../../../QTfrontend/model/ammoSchemeModel.cpp" line="673"/>
+ <location filename="../../../../QTfrontend/model/ammoSchemeModel.cpp" line="685"/>
<source>new</source>
<translation type="unfinished">新</translation>
</message>
<message>
- <location filename="../../../../QTfrontend/model/ammoSchemeModel.cpp" line="679"/>
+ <location filename="../../../../QTfrontend/model/ammoSchemeModel.cpp" line="691"/>
<source>copy of</source>
<translation type="unfinished"></translation>
</message>
@@ -97,7 +97,7 @@
<context>
<name>DataManager</name>
<message>
- <location filename="../../../../QTfrontend/util/DataManager.cpp" line="151"/>
+ <location filename="../../../../QTfrontend/util/DataManager.cpp" line="148"/>
<source>Use Default</source>
<translation type="unfinished"></translation>
</message>
@@ -184,6 +184,14 @@
</message>
</context>
<context>
+ <name>GameUIConfig</name>
+ <message>
+ <location filename="../../../../QTfrontend/gameuiconfig.cpp" line="115"/>
+ <source>Guest</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
<name>HWApplication</name>
<message numerus="yes">
<location filename="../../../../QTfrontend/ui/dialog/bandialog.cpp" line="25"/>
@@ -226,7 +234,7 @@
</translation>
</message>
<message>
- <location filename="../../../../QTfrontend/HWApplication.cpp" line="92"/>
+ <location filename="../../../../QTfrontend/HWApplication.cpp" line="94"/>
<source>Scheme '%1' not supported</source>
<translation type="unfinished"></translation>
</message>
@@ -323,27 +331,35 @@
<context>
<name>HWForm</name>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="478"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="156"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="476"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1399"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1418"/>
+ <source>Guest</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="481"/>
<source>DefaultTeam</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="482"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="485"/>
<source>%1's Team</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="636"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="641"/>
<source>Game aborted</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="1075"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1080"/>
<source>Hedgewars - Nick registered</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="1076"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1081"/>
<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
@@ -352,98 +368,109 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="1104"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1109"/>
<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="1109"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1114"/>
<source>
Your password wasn't saved either.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="1121"/>
- <source>Nickname</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <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="1126"/>
- <location filename="../../../../QTfrontend/hwform.cpp" line="1435"/>
- <source>No nickname supplied.</source>
+ <source>Nickname</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../QTfrontend/hwform.cpp" line="1126"/>
- <location filename="../../../../QTfrontend/hwform.cpp" line="1435"/>
+ <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="1131"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1452"/>
+ <source>No nickname supplied.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1131"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1452"/>
<source>Hedgewars - Empty nickname</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="1152"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1158"/>
<source>Hedgewars - Wrong password</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="1152"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1158"/>
<source>You entered a wrong password.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="1173"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1170"/>
+ <source>Room password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1170"/>
+ <source>The room is protected with password.
+Please, enter the password:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1186"/>
<source>Try Again</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="1539"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1556"/>
<source>Hedgewars - Connection error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="1539"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1556"/>
<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="1945"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1989"/>
<source>Hedgewars Demo File</source>
<comment>File Types</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="1946"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1990"/>
<source>Hedgewars Save File</source>
<comment>File Types</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="2007"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="2051"/>
<source>Demo name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="2007"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="2051"/>
<source>Demo name:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="2075"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="2119"/>
<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"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1713"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="2059"/>
<source>Cannot save record to file %1</source>
<translation>无法录入文件 %1</translation>
</message>
@@ -451,13 +478,13 @@
<context>
<name>HWGame</name>
<message>
- <location filename="../../../../QTfrontend/game.cpp" line="386"/>
+ <location filename="../../../../QTfrontend/game.cpp" line="367"/>
<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="427"/>
+ <location filename="../../../../QTfrontend/game.cpp" line="417"/>
<source>Cannot open demofile %1</source>
<translation>DEMO %1 打不开</translation>
</message>
@@ -465,158 +492,158 @@
<context>
<name>HWMapContainer</name>
<message>
- <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="220"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="211"/>
<source>Small tunnels</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="221"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="212"/>
<source>Medium tunnels</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="126"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="131"/>
<source>Seed</source>
<translation type="unfinished"></translation>
</message>
<message>
- <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="97"/>
- <source>Image map</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="98"/>
- <source>Mission map</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="99"/>
+ <source>Map type:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="102"/>
+ <source>Image map</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="103"/>
+ <source>Mission map</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="104"/>
<source>Hand-drawn</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="100"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="105"/>
<source>Randomly generated</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="101"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="106"/>
<source>Random maze</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="111"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="116"/>
<source>Random</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="135"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="140"/>
<source>Map preview:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="188"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="179"/>
<source>Load map drawing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="194"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="185"/>
<source>Edit map drawing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="207"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="198"/>
<source>All</source>
<translation>全部</translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="208"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="199"/>
<source>Small</source>
<translation>小型</translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="209"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="200"/>
<source>Medium</source>
<translation>中型</translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="210"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="201"/>
<source>Large</source>
<translation>大型</translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="211"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="202"/>
<source>Cavern</source>
<translation>洞穴</translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="212"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="203"/>
<source>Wacky</source>
<translation>曲折</translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="222"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="213"/>
<source>Large tunnels</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="223"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="214"/>
<source>Small islands</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="224"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="215"/>
<source>Medium islands</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="225"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="216"/>
<source>Large islands</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="710"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="715"/>
<source>Map size:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="717"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="722"/>
<source>Maze style:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="730"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="736"/>
<source>Mission:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="740"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="747"/>
<source>Map:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="804"/>
- <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="935"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="811"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="942"/>
<source>Theme: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="886"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="893"/>
<source>Load drawn map</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="886"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="893"/>
<source>Drawn Maps</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="886"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="893"/>
<source>All files</source>
<translation type="unfinished"></translation>
</message>
@@ -647,53 +674,53 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="218"/>
+ <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="226"/>
<source>Remote host has closed connection</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="221"/>
+ <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="229"/>
<source>The host was not found. Please check the host name and port settings.</source>
<translation>错误没找到这个主机。请检查主机名和端口设置。</translation>
</message>
<message>
- <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="224"/>
+ <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="232"/>
<source>Connection refused</source>
<translation>连接被拒绝</translation>
</message>
<message>
- <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="283"/>
+ <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="291"/>
<source>The server is too old. Disconnecting now.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="797"/>
+ <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="808"/>
<source>%1 *** %2 has left</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="799"/>
+ <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="810"/>
<source>%1 *** %2 has left (%3)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="651"/>
- <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="782"/>
+ <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="662"/>
+ <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="793"/>
<source>%1 *** %2 has joined the room</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="1559"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1576"/>
<source>Quit reason: </source>
<translation>退出原因:</translation>
</message>
<message>
- <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="707"/>
+ <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="718"/>
<source>Room destroyed</source>
<translation>房间损坏</translation>
</message>
<message>
- <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="484"/>
+ <location filename="../../../../QTfrontend/net/newnetclient.cpp" line="500"/>
<source>You got kicked</source>
<translation>被踢出</translation>
</message>
@@ -740,7 +767,7 @@
<context>
<name>HatButton</name>
<message>
- <location filename="../../../../QTfrontend/ui/widget/hatbutton.cpp" line="40"/>
+ <location filename="../../../../QTfrontend/ui/widget/hatbutton.cpp" line="44"/>
<source>Change hat (%1)</source>
<translation type="unfinished"></translation>
</message>
@@ -766,9 +793,8 @@
<context>
<name>KB</name>
<message>
- <location filename="../../../../QTfrontend/KB.h" line="28"/>
<source>SDL_ttf returned error while rendering text, most propably it is related to the bug in freetype2. It's recommended to update your freetype lib.</source>
- <translation>SDL_ttf 返回错误-渲染文字失败,可能有关freetype2的bug。建议升级 freetype。</translation>
+ <translation type="obsolete">SDL_ttf 返回错误-渲染文字失败,可能有关freetype2的bug。建议升级 freetype。</translation>
</message>
</context>
<context>
@@ -782,28 +808,27 @@
<context>
<name>LibavInteraction</name>
<message>
- <location filename="../../../../QTfrontend/util/LibavInteraction.cpp" line="281"/>
- <source>Duration: %1m %2s
-</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../../QTfrontend/util/LibavInteraction.cpp" line="293"/>
- <source>Video: %1x%2, </source>
+ <location filename="../../../../QTfrontend/util/LibavInteraction.cpp" line="285"/>
+ <source>Duration: %1m %2s</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../QTfrontend/util/LibavInteraction.cpp" line="297"/>
- <source>%1 fps, </source>
+ <source>Video: %1x%2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../QTfrontend/util/LibavInteraction.cpp" line="301"/>
- <source>Audio: </source>
+ <source>%1 fps</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../QTfrontend/util/LibavInteraction.cpp" line="305"/>
+ <source>Audio: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/util/LibavInteraction.cpp" line="309"/>
<source>unknown</source>
<translation type="unfinished"></translation>
</message>
@@ -811,7 +836,7 @@
<context>
<name>MapModel</name>
<message>
- <location filename="../../../../QTfrontend/model/MapModel.cpp" line="193"/>
+ <location filename="../../../../QTfrontend/model/MapModel.cpp" line="211"/>
<source>No description available.</source>
<translation type="unfinished"></translation>
</message>
@@ -918,49 +943,64 @@
<context>
<name>PageDrawMap</name>
<message>
- <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="32"/>
+ <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="33"/>
<source>Eraser</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="34"/>
- <source>Undo</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="35"/>
- <source>Clear</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="36"/>
- <source>Load</source>
- <translation type="unfinished">读取</translation>
+ <source>Undo</source>
+ <translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="37"/>
+ <source>Polyline</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="39"/>
+ <source>Rectangle</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="41"/>
+ <source>Ellipse</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="46"/>
+ <source>Clear</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="47"/>
+ <source>Load</source>
+ <translation type="unfinished">读取</translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="48"/>
<source>Save</source>
<translation type="unfinished">保存</translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="61"/>
+ <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="76"/>
<source>Load drawn map</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="61"/>
- <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="69"/>
+ <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="76"/>
+ <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="84"/>
<source>Drawn Maps</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="61"/>
- <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="69"/>
+ <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="76"/>
+ <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="84"/>
<source>All files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="69"/>
+ <location filename="../../../../QTfrontend/ui/page/pagedrawmap.cpp" line="84"/>
<source>Save drawn map</source>
<translation type="unfinished"></translation>
</message>
@@ -1021,72 +1061,80 @@
<context>
<name>PageGameStats</name>
<message>
- <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="56"/>
+ <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="61"/>
<source>Details</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="70"/>
+ <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="75"/>
+ <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="165"/>
<source>Health graph</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="87"/>
+ <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="92"/>
<source>Ranking</source>
<translation type="unfinished"></translation>
</message>
<message>
- <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>Play again</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="123"/>
<source>Save</source>
<translation type="unfinished">保存</translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="193"/>
+ <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="211"/>
<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="201"/>
+ <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="219"/>
<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="208"/>
+ <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="226"/>
<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="272"/>
+ <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="303"/>
<source>(%1 kill)</source>
<translation type="unfinished">
<numerusform></numerusform>
</translation>
</message>
<message numerus="yes">
- <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="283"/>
+ <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="305"/>
+ <source>(%1 %2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ </translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="318"/>
<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="291"/>
+ <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="326"/>
<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="299"/>
+ <location filename="../../../../QTfrontend/ui/page/pagegamestats.cpp" line="334"/>
<source><b>%1</b> was scared and skipped turn <b>%2</b> times.</source>
<translation type="unfinished">
<numerusform></numerusform>
@@ -1354,97 +1402,97 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="371"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="404"/>
<source>Frontend</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="388"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="421"/>
<source>Custom colors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="418"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="451"/>
<source>Reset to default colors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="431"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="464"/>
<source>Game audio</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="469"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="502"/>
<source>Frontend audio</source>
<translation type="unfinished"></translation>
</message>
<message>
- <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="518"/>
- <source>Proxy settings</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="524"/>
- <source>Proxy host</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="525"/>
+ <source>Account</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="551"/>
+ <source>Proxy settings</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="557"/>
+ <source>Proxy host</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="558"/>
<source>Proxy port</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="526"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="559"/>
<source>Proxy login</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="527"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="560"/>
<source>Proxy password</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="540"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="573"/>
<source>No proxy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="541"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="574"/>
<source>System proxy settings</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="542"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="575"/>
<source>Socks5 proxy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="543"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="576"/>
<source>HTTP proxy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="578"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="611"/>
<source>Miscellaneous</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="624"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="657"/>
<source>Updates</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="637"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="670"/>
<source>Check for updates</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="651"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="684"/>
<source>Video recording options</source>
<translation type="unfinished"></translation>
</message>
@@ -1485,22 +1533,7 @@
<translation type="unfinished"></translation>
</message>
<message>
- <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="191"/>
- <source>Weapons:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <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="222"/>
+ <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="186"/>
<source>Open server administration page</source>
<translation type="unfinished"></translation>
</message>
@@ -1513,14 +1546,14 @@
<translation type="obsolete">加入</translation>
</message>
<message numerus="yes">
- <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="609"/>
+ <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="546"/>
<source>%1 players online</source>
<translation type="unfinished">
<numerusform></numerusform>
</translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="220"/>
+ <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="184"/>
<source>Admin features</source>
<translation>管理员功能</translation>
</message>
@@ -1663,17 +1696,37 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="402"/>
+ <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="394"/>
+ <source>None (Default)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="395"/>
+ <source>Wrap (World wraps)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="396"/>
+ <source>Bounce (Edges reflect)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="397"/>
+ <source>Sea (Edges connect to sea)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="419"/>
<source>Copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="403"/>
+ <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="420"/>
<source>New</source>
<translation>新游戏</translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="404"/>
+ <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="421"/>
<source>Delete</source>
<translation>删除</translation>
</message>
@@ -1783,14 +1836,12 @@
</message>
<message>
<location filename="../../../../QTfrontend/ui/page/pagevideos.cpp" line="511"/>
- <source>Date: %1
-</source>
+ <source>Date: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../QTfrontend/ui/page/pagevideos.cpp" line="512"/>
- <source>Size: %1
-</source>
+ <source>Size: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
@@ -1847,23 +1898,23 @@
</message>
<message>
<location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="269"/>
- <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="885"/>
+ <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="890"/>
<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="897"/>
+ <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="902"/>
<source>Add friend</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="880"/>
+ <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="885"/>
<source>Unignore</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="892"/>
+ <location filename="../../../../QTfrontend/ui/widget/chatwidget.cpp" line="897"/>
<source>Remove friend</source>
<translation type="unfinished"></translation>
</message>
@@ -1881,7 +1932,7 @@
<context>
<name>QCheckBox</name>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="377"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="410"/>
<source>Fullscreen</source>
<translation>游戏全屏幕</translation>
</message>
@@ -1896,44 +1947,84 @@
<translation>另一种伤害显示方式</translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="383"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="381"/>
+ <source>Team</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="382"/>
+ <source>Enable team tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="385"/>
+ <source>Hog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="386"/>
+ <source>Enable hedgehog tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="389"/>
+ <source>Health</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="390"/>
+ <source>Enable health tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="393"/>
+ <source>Translucent</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="394"/>
+ <source>Enable translucent tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="416"/>
<source>Visual effects</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="456"/>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="473"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="489"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="506"/>
<source>Sound</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="457"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="490"/>
<source>In-game sound effects</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="463"/>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="478"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="496"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="511"/>
<source>Music</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="464"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="497"/>
<source>In-game music</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="474"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="507"/>
<source>Frontend sound effects</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="479"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="512"/>
<source>Frontend music</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="630"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="663"/>
<source>Check for updates at startup</source>
<translation type="unfinished"></translation>
</message>
@@ -1943,13 +2034,13 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="610"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="643"/>
<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="509"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="542"/>
<source>Save password</source>
<translation type="unfinished"></translation>
</message>
@@ -1964,12 +2055,12 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="691"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="724"/>
<source>Record audio</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="740"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="773"/>
<source>Use game resolution</source>
<translation type="unfinished"></translation>
</message>
@@ -1982,7 +2073,7 @@
<translation>玩家</translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageeditteam.cpp" line="284"/>
+ <location filename="../../../../QTfrontend/ui/page/pageeditteam.cpp" line="295"/>
<source>Community</source>
<translation type="unfinished"></translation>
</message>
@@ -1992,7 +2083,7 @@
<translation>Lv 级别</translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="590"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="623"/>
<source>(System default)</source>
<translation type="unfinished"></translation>
</message>
@@ -2071,12 +2162,6 @@
<source>Green/Red grayscale</source>
<translation type="unfinished"></translation>
</message>
- <message>
- <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>
</context>
<context>
<name>QGroupBox</name>
@@ -2129,22 +2214,27 @@
<context>
<name>QLabel</name>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="584"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="617"/>
<source>Locale</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="498"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="531"/>
<source>Nickname</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="599"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="372"/>
+ <source>Displayed tags above hogs and translucent tags</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="632"/>
<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"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="749"/>
<source>Resolution</source>
<translation>分辨率</translation>
</message>
@@ -2179,12 +2269,12 @@
<translation>FPS 上限</translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/about.cpp" line="71"/>
+ <location filename="../../../../QTfrontend/ui/widget/about.cpp" line="77"/>
<source>Revision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/about.cpp" line="73"/>
+ <location filename="../../../../QTfrontend/ui/widget/about.cpp" line="79"/>
<source>This program is distributed under the %1</source>
<translation type="unfinished"></translation>
</message>
@@ -2218,7 +2308,7 @@
<translation type="obsolete">版本</translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="439"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="472"/>
<source>Initial sound volume</source>
<translation>初始音量</translation>
</message>
@@ -2294,6 +2384,11 @@
</message>
<message>
<location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="386"/>
+ <source>World Edge</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="403"/>
<source>Scheme Name:</source>
<translation>设置名称:</translation>
</message>
@@ -2390,37 +2485,37 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pagemain.cpp" line="139"/>
- <source>Tip: </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<location filename="../../../../QTfrontend/ui/page/pagemain.cpp" line="137"/>
<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>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="660"/>
+ <location filename="../../../../QTfrontend/ui/page/pagemain.cpp" line="139"/>
+ <source>Tip: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="693"/>
<source>Format</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="680"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="713"/>
<source>Audio codec</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="705"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="738"/>
<source>Video codec</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="746"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="779"/>
<source>Framerate</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="760"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="793"/>
<source>Bitrate (Kbps)</source>
<translation type="unfinished"></translation>
</message>
@@ -2438,18 +2533,18 @@
<context>
<name>QLineEdit</name>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="952"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="957"/>
<source>unnamed</source>
<translation>无名</translation>
</message>
<message>
<location filename="../../../../QTfrontend/team.cpp" line="44"/>
- <location filename="../../../../QTfrontend/ui/page/pageeditteam.cpp" line="296"/>
+ <location filename="../../../../QTfrontend/ui/page/pageeditteam.cpp" line="307"/>
<source>hedgehog %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="503"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="536"/>
<source>anonymous</source>
<translation type="unfinished"></translation>
</message>
@@ -2461,111 +2556,106 @@
<source>Hedgewars %1</source>
<translation>刺猬大作战 %1</translation>
</message>
- <message>
- <location filename="../../../../QTfrontend/ui_hwform.cpp" line="59"/>
- <source>-r%1 (%2)</source>
- <translation type="unfinished"></translation>
- </message>
</context>
<context>
<name>QMessageBox</name>
<message>
- <location filename="../../../../QTfrontend/ui/widget/gamecfgwidget.cpp" line="367"/>
+ <location filename="../../../../QTfrontend/ui/widget/gamecfgwidget.cpp" line="368"/>
<source>Error</source>
<translation>错误</translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/gamecfgwidget.cpp" line="368"/>
+ <location filename="../../../../QTfrontend/ui/widget/gamecfgwidget.cpp" line="369"/>
<source>Cannot use the ammo '%1'!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageeditteam.cpp" line="346"/>
+ <location filename="../../../../QTfrontend/ui/page/pageeditteam.cpp" line="361"/>
<source>Teams - Are you sure?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageeditteam.cpp" line="347"/>
+ <location filename="../../../../QTfrontend/ui/page/pageeditteam.cpp" line="362"/>
<source>Do you really want to delete the team '%1'?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="981"/>
- <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="500"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="986"/>
+ <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="518"/>
<source>Cannot delete default scheme '%1'!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="1007"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1012"/>
<source>Please select a record from the list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="1102"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1107"/>
<source>Hedgewars - Nick not registered</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="1498"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1515"/>
<source>Unable to start server</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="1559"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="1576"/>
<source>Connection to server is lost</source>
<translation>服务器连接丢失</translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="2082"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="2126"/>
<source>Not all players are ready</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="2083"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="2127"/>
<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="352"/>
+ <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="349"/>
<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="362"/>
+ <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="359"/>
<source>System Information Preview</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="377"/>
- <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="388"/>
+ <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="374"/>
+ <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="385"/>
<source>Failed to generate captcha</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="405"/>
+ <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="402"/>
<source>Failed to download captcha</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="469"/>
+ <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="466"/>
<source>Please fill out all fields. Email is optional.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="1985"/>
- <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="439"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="2029"/>
+ <location filename="../../../../QTfrontend/ui/widget/feedbackdialog.cpp" line="436"/>
<source>Hedgewars - Success</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="1986"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="2030"/>
<source>All file associations have been set</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/hwform.cpp" line="1991"/>
+ <location filename="../../../../QTfrontend/hwform.cpp" line="2035"/>
<source>File association failed.</source>
<translation type="unfinished"></translation>
</message>
@@ -2633,38 +2723,38 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="560"/>
+ <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="507"/>
<source>Room Name - Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="561"/>
+ <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="508"/>
<source>Please select room from the list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="596"/>
+ <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="533"/>
<source>Room Name - Are you sure?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="597"/>
+ <location filename="../../../../QTfrontend/ui/page/pageroomslist.cpp" line="534"/>
<source>The game you are trying to join has started.
Do you still want to join the room?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="499"/>
+ <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="517"/>
<source>Schemes - Warning</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="508"/>
+ <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="526"/>
<source>Schemes - Are you sure?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="509"/>
+ <location filename="../../../../QTfrontend/ui/page/pagescheme.cpp" line="527"/>
<source>Do you really want to delete the game scheme '%1'?</source>
<translation type="unfinished"></translation>
</message>
@@ -2693,20 +2783,20 @@
<translation type="unfinished"></translation>
</message>
<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="896"/>
+ <location filename="../../../../QTfrontend/ui/widget/drawmapwidget.cpp" line="141"/>
+ <location filename="../../../../QTfrontend/ui/widget/drawmapwidget.cpp" line="161"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="903"/>
<source>File error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/drawmapwidget.cpp" line="102"/>
+ <location filename="../../../../QTfrontend/ui/widget/drawmapwidget.cpp" line="142"/>
<source>Cannot open '%1' for writing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/drawmapwidget.cpp" line="122"/>
- <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="897"/>
+ <location filename="../../../../QTfrontend/ui/widget/drawmapwidget.cpp" line="162"/>
+ <location filename="../../../../QTfrontend/ui/widget/mapContainer.cpp" line="904"/>
<source>Cannot open '%1' for reading</source>
<translation type="unfinished"></translation>
</message>
@@ -2748,6 +2838,15 @@
</message>
</context>
<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../../../../QTfrontend/campaign.cpp" line="65"/>
+ <location filename="../../../../QTfrontend/campaign.cpp" line="84"/>
+ <source>No description available</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
<name>QPushButton</name>
<message>
<location filename="../../../../QTfrontend/ui/page/pageplayrecord.cpp" line="45"/>
@@ -2761,7 +2860,7 @@
<translation>连接</translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pagecampaign.cpp" line="44"/>
+ <location filename="../../../../QTfrontend/ui/page/pagecampaign.cpp" line="70"/>
<location filename="../../../../QTfrontend/ui/page/pagetraining.cpp" line="92"/>
<source>Go!</source>
<translation>上场!</translation>
@@ -2850,17 +2949,17 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="616"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="649"/>
<source>Associate file extensions</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="773"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="806"/>
<source>Set default options</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="774"/>
+ <location filename="../../../../QTfrontend/ui/page/pageoptions.cpp" line="807"/>
<source>Restore default coding parameters</source>
<translation type="unfinished"></translation>
</message>
@@ -2910,17 +3009,22 @@
<context>
<name>RoomNamePrompt</name>
<message>
- <location filename="../../../../QTfrontend/ui/widget/roomnameprompt.cpp" line="42"/>
+ <location filename="../../../../QTfrontend/ui/widget/roomnameprompt.cpp" line="43"/>
<source>Enter a name for your room.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/roomnameprompt.cpp" line="61"/>
+ <location filename="../../../../QTfrontend/ui/widget/roomnameprompt.cpp" line="56"/>
+ <source>set password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/ui/widget/roomnameprompt.cpp" line="72"/>
<source>Cancel</source>
<translation type="unfinished">取消</translation>
</message>
<message>
- <location filename="../../../../QTfrontend/ui/widget/roomnameprompt.cpp" line="62"/>
+ <location filename="../../../../QTfrontend/ui/widget/roomnameprompt.cpp" line="73"/>
<source>Create room</source>
<translation type="unfinished"></translation>
</message>
@@ -2959,26 +3063,31 @@
</message>
<message>
<location filename="../../../../QTfrontend/model/roomslistmodel.cpp" line="43"/>
- <source>Rules</source>
+ <source>Script</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../QTfrontend/model/roomslistmodel.cpp" line="44"/>
+ <source>Rules</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/model/roomslistmodel.cpp" line="45"/>
<source>Weapons</source>
<translation type="unfinished">武器</translation>
</message>
<message>
- <location filename="../../../../QTfrontend/model/roomslistmodel.cpp" line="132"/>
- <source>Random Map</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<location filename="../../../../QTfrontend/model/roomslistmodel.cpp" line="133"/>
- <source>Random Maze</source>
+ <source>Random Map</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../../QTfrontend/model/roomslistmodel.cpp" line="134"/>
+ <source>Random Maze</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/model/roomslistmodel.cpp" line="135"/>
<source>Hand-drawn</source>
<translation type="unfinished"></translation>
</message>
@@ -3064,14 +3173,6 @@
</message>
</context>
<context>
- <name>TeamShowWidget</name>
- <message>
- <location filename="../../../../QTfrontend/ui/widget/teamselhelper.cpp" line="58"/>
- <source>%1's team</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
<name>ThemePrompt</name>
<message>
<location filename="../../../../QTfrontend/ui/widget/themeprompt.cpp" line="84"/>
@@ -3775,7 +3876,7 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../../QTfrontend/util/DataManager.cpp" line="158"/>
+ <location filename="../../../../QTfrontend/util/DataManager.cpp" line="155"/>
<source>Keyboard</source>
<translation type="unfinished"></translation>
</message>
@@ -3817,4 +3918,157 @@
<translation type="unfinished"></translation>
</message>
</context>
+<context>
+ <name>server</name>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="2"/>
+ <source>Restricted</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="3"/>
+ <source>Not room master</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="4"/>
+ <source>Corrupted hedgehogs info</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="5"/>
+ <source>too many teams</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="6"/>
+ <source>too many hedgehogs</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="7"/>
+ <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="8"/>
+ <source>round in progress</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="9"/>
+ <source>restricted</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="10"/>
+ <source>REMOVE_TEAM: no such team</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="11"/>
+ <source>Not team owner!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="12"/>
+ <source>Less than two clans!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="13"/>
+ <source>Illegal room name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="14"/>
+ <source>Room with such name already exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="15"/>
+ <source>Nickname already chosen</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="16"/>
+ <source>Illegal nickname</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="17"/>
+ <source>Protocol already known</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="18"/>
+ <source>Bad number</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="19"/>
+ <source>Nickname is already in use</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="20"/>
+ <source>No checker rights</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="21"/>
+ <source>Authentication failed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="22"/>
+ <source>60 seconds cooldown after kick</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="23"/>
+ <source>kicked</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="24"/>
+ <source>Ping timeout</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="25"/>
+ <source>bye</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="26"/>
+ <source>No such room</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="27"/>
+ <source>Room version incompatible to your hedgewars version</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="28"/>
+ <source>Joining restricted</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="29"/>
+ <source>Registered users only</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="30"/>
+ <source>You are banned in this room</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../../QTfrontend/servermessages.h" line="31"/>
+ <source>Empty config entry</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
</TS>
--- a/share/hedgewars/Data/Locale/hedgewars_zh_TW.ts Sat Dec 14 21:16:20 2013 +0400
+++ b/share/hedgewars/Data/Locale/hedgewars_zh_TW.ts Tue Dec 17 00:02:52 2013 +0400
@@ -152,6 +152,13 @@
</message>
</context>
<context>
+ <name>GameUIConfig</name>
+ <message>
+ <source>Guest</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
<name>HWApplication</name>
<message numerus="yes">
<source>%1 minutes</source>
@@ -363,6 +370,19 @@
<source>This page requires an internet connection.</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Guest</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room password</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>The room is protected with password.
+Please, enter the password:</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>HWGame</name>
@@ -627,7 +647,7 @@
<name>KB</name>
<message>
<source>SDL_ttf returned error while rendering text, most propably it is related to the bug in freetype2. It's recommended to update your freetype lib.</source>
- <translation>SDL_ttf 返回錯誤-渲染文字失敗,可能有關freetype2的bug。建議升級 freetype。</translation>
+ <translation type="obsolete">SDL_ttf 返回錯誤-渲染文字失敗,可能有關freetype2的bug。建議升級 freetype。</translation>
</message>
</context>
<context>
@@ -640,19 +660,6 @@
<context>
<name>LibavInteraction</name>
<message>
- <source>Duration: %1m %2s
-</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Video: %1x%2, </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>%1 fps, </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Audio: </source>
<translation type="unfinished"></translation>
</message>
@@ -660,6 +667,18 @@
<source>unknown</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Duration: %1m %2s</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Video: %1x%2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>%1 fps</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>MapModel</name>
@@ -787,6 +806,18 @@
<source>Eraser</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Polyline</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Rectangle</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Ellipse</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>PageEditTeam</name>
@@ -893,6 +924,12 @@
<source>Save</source>
<translation type="unfinished"></translation>
</message>
+ <message numerus="yes">
+ <source>(%1 %2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ </translation>
+ </message>
</context>
<context>
<name>PageInGame</name>
@@ -1213,14 +1250,6 @@
<translation type="obsolete">房間名:</translation>
</message>
<message>
- <source>Rules:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Weapons:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Clear</source>
<translation type="obsolete">清除</translation>
</message>
@@ -1247,10 +1276,6 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>Clear filters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Open server administration page</source>
<translation type="unfinished"></translation>
</message>
@@ -1377,6 +1402,22 @@
<source>Add an indestructible border along the bottom</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>None (Default)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Wrap (World wraps)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Bounce (Edges reflect)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Sea (Edges connect to sea)</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>PageSelectWeapon</name>
@@ -1472,13 +1513,11 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>Date: %1
-</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Size: %1
-</source>
+ <source>Date: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Size: %1</source>
<translation type="unfinished"></translation>
</message>
</context>
@@ -1615,6 +1654,38 @@
<source>Frontend music</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Team</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable team tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Hog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable hedgehog tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Health</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable health tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Translucent</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Enable translucent tags by default</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QComboBox</name>
@@ -1635,10 +1706,6 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>Any</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Disabled</source>
<translation type="unfinished"></translation>
</message>
@@ -1841,10 +1908,6 @@
<translation type="unfinished"></translation>
</message>
<message>
- <source>Tip: </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<source>Quality</source>
<translation type="unfinished"></translation>
</message>
@@ -1986,6 +2049,18 @@
<source>This setting will be effective at next restart.</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Tip: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Displayed tags above hogs and translucent tags</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>World Edge</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>QLineEdit</name>
@@ -2008,10 +2083,6 @@
<source>Hedgewars %1</source>
<translation>刺蝟大作戰 %1</translation>
</message>
- <message>
- <source>-r%1 (%2)</source>
- <translation type="unfinished"></translation>
- </message>
</context>
<context>
<name>QMessageBox</name>
@@ -2235,6 +2306,13 @@
</message>
</context>
<context>
+ <name>QObject</name>
+ <message>
+ <source>No description available</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
<name>QPushButton</name>
<message>
<source>Play demo</source>
@@ -2371,6 +2449,10 @@
<source>Create room</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>set password</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>RoomsListModel</name>
@@ -2418,6 +2500,10 @@
<source>Hand-drawn</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Script</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>SeedPrompt</name>
@@ -2485,13 +2571,6 @@
</message>
</context>
<context>
- <name>TeamShowWidget</name>
- <message>
- <source>%1's team</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
<name>ThemePrompt</name>
<message>
<source>Cancel</source>
@@ -3086,4 +3165,127 @@
<translation type="unfinished"></translation>
</message>
</context>
+<context>
+ <name>server</name>
+ <message>
+ <source>Restricted</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>Illegal room name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room with such name already exists</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>
+ <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>No such room</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Room version incompatible to your hedgewars version</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>Empty config entry</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
</TS>
--- a/share/hedgewars/Data/Maps/TrophyRace/map.lua Sat Dec 14 21:16:20 2013 +0400
+++ b/share/hedgewars/Data/Maps/TrophyRace/map.lua Tue Dec 17 00:02:52 2013 +0400
@@ -74,31 +74,49 @@
SetAmmo(amSkip, 9, 1, 0)
end
+function killHog()
+ SetHealth(CurrentHedgehog, 0)
+ SetEffect(CurrentHedgehog, heInvulnerable, 0)
+ x, y = GetGearPosition(CurrentHedgehog)
+ AddGear(x, y, gtShell, 0, 0, 0, 0)
+ worsttime = 99999
+ worsthog = nil
+ lasthog = nil
+end
+
+function onHogAttack()
+ if TurnTimeLeft == 0 then
+ killHog()
+ end
+end
+
+function onNewTurn()
+ if lasthog ~= nil then
+ SetGearPosition(lasthog, p , 0)
+ if not reached then
+ end
+ end
+ startTime = 0
+ reached = false
+ if CurrentHedgehog ~= nil then
+ SetGearVelocity(CurrentHedgehog, 1, 0)
+ SetGearPosition(CurrentHedgehog, start_area[1] + start_area[3] / 2, start_area[2] + start_area[4] / 2)
+ ParseCommand("setweap " .. string.char(amRope))
+ lasthog = CurrentHedgehog
+ end
+end
+
function onGameTick()
if startTime == 0 and TurnTimeLeft < maxtime then
startTime = GameTime
end
if CurrentHedgehog ~= nil and TurnTimeLeft == 1 then
- SetHealth(CurrentHedgehog, 0)
- x, y = GetGearPosition(CurrentHedgehog)
- AddGear(x, y, gtShell, 0, 0, 0, 0)
- worsttime = 99999
- worsthog = nil
- elseif TurnTimeLeft == maxtime-1 and CurrentHedgehog ~= nil then
- if lasthog ~= nil then
- SetGearPosition(lasthog, p , 0)
- end
- reached = false
- SetGearVelocity(CurrentHedgehog, 1, 0)
- SetGearPosition(CurrentHedgehog, start_area[1] + start_area[3] / 2, start_area[2] + start_area[4] / 2)
- ParseCommand("setweap " .. string.char(amRope))
- lasthog = CurrentHedgehog
+ killHog()
elseif CurrentHedgehog ~= nil then
x, y = GetGearPosition(CurrentHedgehog)
if not reached and x > goal_area[1] and x < goal_area[1] + goal_area[3] and y > goal_area[2] and y < goal_area[2] + goal_area[4] then -- hog is within goal rectangle
reached = true
local ttime = GameTime-startTime
- startTime = 0
--give it a sound;)
if ttime < besttime then
PlaySound (sndHomerun)
@@ -135,13 +153,15 @@
if clan == ClansCount -1 then
-- Time for elimination - worst hog is out and the worst hog vars are reset.
- SetHealth(worsthog, 0)
- --Place a grenade to make inactive slowest hog active
- x, y = GetGearPosition(worsthog)
- AddGear(x, y, gtShell, 0, 0, 0, 0)
- worsttime = 0
- worsthog = nil
+ if worsthog ~= nil then
+ SetHealth(worsthog, 0)
+ --Place a grenade to make inactive slowest hog active
+ x, y = GetGearPosition(worsthog)
+ AddGear(x, y, gtShell, 0, 0, 0, 0)
+ worsttime = 0
+ worsthog = nil
end
+ end
for i=0, ClansCount -1 do
local tt = "" .. (clantimes[i] / 1000) .. " s"
@@ -175,7 +195,7 @@
--end
function onAchievementsDeclaration()
- for team,time in pairs(realBestTimes) do
- DeclareAchievement("rope race", team, "TrophyRace", time)
+ for team,time in pairs(bestTimes) do
+ DeclareAchievement("rope race", team, "TrophyRace", time)
end
end
--- a/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/cosmos.lua Sat Dec 14 21:16:20 2013 +0400
+++ b/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/cosmos.lua Tue Dec 17 00:02:52 2013 +0400
@@ -17,10 +17,10 @@
local saucerAcquired = false
local status
local checkPointReached = 1 -- 1 is start of the game
-local objectives = loc("Go to moon by the flying saucer and complete the main mission").."|"..
+local objectives = loc("Go to the moon by using the flying saucer and complete the main mission").."|"..
loc("Come back to this mission and visit the other planets to collect the crates").."|"..
loc("Visit the Death Planet after completing all the other planets' main missions").."|"..
-loc("Come back to this mission after collecting all the parts")
+loc("Come back to this mission after collecting all the device parts")
-- dialogs
local dialog01 = {}
local dialog02 = {}
@@ -33,12 +33,12 @@
-- mission objectives
local goals = {
[dialog01] = {missionName, loc("Getting ready"), loc("Go and collect the crate").."|"..loc("Try not to get spotted by the guards!"), 1, 4500},
- [dialog02] = {missionName, loc("The adventure begins!"), loc("Use the saucer and fly to the moon").."|"..loc("Travel carefully as your fuels are limited"), 1, 4500},
+ [dialog02] = {missionName, loc("The adventure begins!"), loc("Use the saucer and fly to the moon").."|"..loc("Travel carefully as your fuel is limited"), 1, 4500},
[dialog03] = {missionName, loc("An unexpected event!"), loc("Use the saucer and fly away").."|"..loc("Beware, any damage taken will stay until you complete the moon's main mission"), 1, 7000},
[dialog04] = {missionName, loc("Objectives"), objectives, 1, 7000},
[dialog05] = {missionName, loc("Objectives"), objectives, 1, 7000},
[dialog06] = {missionName, loc("Objectives"), objectives, 1, 7000},
- [dialog07] = {missionName, loc("Searching the stars!"), loc("Use the saucer and fly away").."|"..loc("Visit first the planets of Ice, Desert and Fruit"), 1, 6000},
+ [dialog07] = {missionName, loc("Searching the stars!"), loc("Use the saucer and fly away").."|"..loc("Visit the planets of Ice, Desert and Fruit before you proceed to the Death Planet"), 1, 6000},
[dialog08] = {missionName, loc("Saving Hogera"), loc("Fly to the meteorite and detonate the explosives"), 1, 7000}
}
-- crates
@@ -98,11 +98,11 @@
Theme = "Nature"
-- I had originally hero in PAoTH team and changed it, may reconsider though
-- PAoTH
- AddTeam(teamC.name, teamC.color, "Bone", "Island", "HillBilly", "cm_birdy")
+ AddTeam(teamC.name, teamC.color, "Bone", "Island", "HillBilly", "cm_birdy")
hero.gear = AddHog(hero.name, 0, 100, "war_desertgrenadier1")
- AnimSetGearPosition(hero.gear, hero.x, hero.y)
+ AnimSetGearPosition(hero.gear, hero.x, hero.y)
HogTurnLeft(hero.gear, true)
- AddTeam(teamA.name, teamA.color, "Bone", "Island", "HillBilly", "cm_birdy")
+ AddTeam(teamA.name, teamA.color, "Bone", "Island", "HillBilly", "cm_birdy")
director.gear = AddHog(director.name, 0, 100, "hair_yellow")
AnimSetGearPosition(director.gear, director.x, director.y)
doctor.gear = AddHog(doctor.name, 0, 100, "Glasses")
@@ -144,7 +144,7 @@
AnimSetGearPosition(hero.gear, 3080, 850)
end
end
-
+
AnimInit()
AnimationSetup()
end
@@ -156,14 +156,14 @@
FollowGear(hero.gear)
ShowMission(loc("Spacetrip"), loc("Getting ready"), loc("Help Hog Solo to find all the parts of the anti-gravity device.")..
"|"..loc("Travel to all the neighbor planets and collect all the pieces"), -amSkip, 0)
-
+
-- do checkpoint stuff needed after game starts
- if checkPointReached == 1 then
+ if checkPointReached == 1 then
AddAnim(dialog01)
AddAmmo(hero.gear, amRope, 1)
AddAmmo(guard1.gear, amDEagle, 2)
AddAmmo(guard2.gear, amDEagle, 2)
- SpawnAmmoCrate(saucerX, saucerY, amJetpack)
+ SpawnAmmoCrate(saucerX, saucerY, amJetpack)
-- EVENT HANDLERS
AddEvent(onHeroBeforeTreePosition, {hero.gear}, heroBeforeTreePosition, {hero.gear}, 0)
AddEvent(onHeroAtSaucerPosition, {hero.gear}, heroAtSaucerPosition, {hero.gear}, 0)
@@ -180,7 +180,7 @@
-- Hero has visited a planet, he has plenty of fuels and can change planet
AddAmmo(hero.gear, amJetpack, 99)
end
-
+
AddEvent(onHeroDeath, {hero.gear}, heroDeath, {hero.gear}, 0)
AddEvent(onNoFuelAtLand, {hero.gear}, noFuelAtLand, {hero.gear}, 0)
-- always check for landings
@@ -189,7 +189,7 @@
end
if GetCampaignVar("Planet") ~= "desertPlanet" then
AddEvent(onDesertPlanetLanding, {hero.gear}, desertPlanetLanding, {hero.gear}, 0)
- end
+ end
if GetCampaignVar("Planet") ~= "fruitPlanet" then
AddEvent(onFruitPlanetLanding, {hero.gear}, fruitPlanetLanding, {hero.gear}, 0)
end
@@ -199,14 +199,14 @@
if GetCampaignVar("Planet") ~= "deathPlanet" then
AddEvent(onDeathPlanetLanding, {hero.gear}, deathPlanetLanding, {hero.gear}, 0)
end
-
+
if status.death01 and not status.final then
AddAnim(dialog08)
if GetCampaignVar("Planet") ~= "meteorite" then
AddEvent(onMeteoriteLanding, {hero.gear}, meteoriteLanding, {hero.gear}, 0)
end
end
-
+
SendHealthStatsOff()
end
@@ -228,7 +228,7 @@
function onPrecise()
if GameTime > 3000 then
- SetAnimSkip(true)
+ SetAnimSkip(true)
end
end
@@ -315,7 +315,7 @@
end
function onNoFuelAtLand(gear)
- if checkPointReached > 1 and GetHealth(hero.gear) and GetY(gear) > 1400 and
+ if checkPointReached > 1 and GetHealth(hero.gear) and GetY(gear) > 1400 and
GetAmmoCount(gear, amJetpack) == 0 and StoppedGear(gear) then
return true
end
@@ -338,7 +338,7 @@
function heroAtSaucerPosition(gear)
TurnTimeLeft = 0
- -- save check point
+ -- save check point
SaveCampaignVar("CosmosCheckPoint", "2")
checkPointReached = 2
AddAnim(dialog02)
@@ -346,7 +346,7 @@
if guard1.turn and GetX(hero.gear) > saucerX-150 then
guard1.keepTurning = false
AddAnim(dialog03)
- end
+ end
end
function heroOutOfGuardSight(gear)
@@ -383,7 +383,7 @@
function fruitPlanetLanding(gear)
if checkPointReached < 5 then
AddAnim(dialog06)
- else
+ else
AnimCaption(hero.gear,loc("Welcome to the Fruit Planet!"))
SaveCampaignVar("Planet", "fruitPlanet")
if status.fruit02 then
@@ -405,7 +405,7 @@
function desertPlanetLanding(gear)
if checkPointReached < 5 then
AddAnim(dialog06)
- else
+ else
AnimCaption(hero.gear,loc("Welcome to the Desert Planet!"))
SaveCampaignVar("Planet", "desertPlanet")
SaveCampaignVar("UnlockedMissions", "4")
@@ -492,7 +492,7 @@
table.insert(dialog01, {func = AnimWait, args = {doctor.gear, 3000}})
table.insert(dialog01, {func = AnimCaption, args = {hero.gear, loc("Near secret base 17 of PAotH in the rural Hogland..."), 4000}})
table.insert(dialog01, {func = AnimSay, args = {director.gear, loc("So Hog Solo, here we are..."), SAY_SAY, 2000}})
- table.insert(dialog01, {func = AnimSay, args = {director.gear, loc("Behind these trees on the East there is secret base 17"), SAY_SAY, 4000}})
+ table.insert(dialog01, {func = AnimSay, args = {director.gear, loc("Behind these trees on the east side there is secret base 17"), SAY_SAY, 4000}})
table.insert(dialog01, {func = AnimSay, args = {director.gear, loc("You have to continue alone from now on."), SAY_SAY, 3000}})
table.insert(dialog01, {func = AnimSay, args = {director.gear, loc("Be careful, the future of Hogera is in your hands!"), SAY_SAY, 7200}})
table.insert(dialog01, {func = AnimSay, args = {doctor.gear, loc("We'll use our communicators to contact you"), SAY_SAY, 2600}})
@@ -509,12 +509,12 @@
table.insert(dialog02, {func = AnimCaption, args = {hero.gear, loc("CheckPoint reached!"), 4000}})
table.insert(dialog02, {func = AnimSay, args = {hero.gear, loc("Got the saucer!"), SAY_SHOUT, 2000}})
table.insert(dialog02, {func = AnimSay, args = {director.gear, loc("Nice!"), SAY_SHOUT, 1000}})
- table.insert(dialog02, {func = AnimSay, args = {director.gear, loc("Now use it and go to the moon PAotH station to get more fuels!"), SAY_SHOUT, 5000}})
+ table.insert(dialog02, {func = AnimSay, args = {director.gear, loc("Now use it and go to the moon PAotH station to get more fuel!"), SAY_SHOUT, 5000}})
table.insert(dialog02, {func = AnimGearWait, args = {hero.gear, 500}})
-- DIALOG 03 - Hero got spotted by guard
AddSkipFunction(dialog03, Skipanim, {dialog03})
table.insert(dialog03, {func = AnimWait, args = {guard1.gear, 4000}})
- table.insert(dialog03, {func = AnimCaption, args = {guard1.gear, loc("Prepare to flee!"), 4000}})
+ table.insert(dialog03, {func = AnimCaption, args = {guard1.gear, loc("Prepare to flee!"), 4000}})
table.insert(dialog03, {func = AnimSay, args = {guard1.gear, loc("Hey").." "..guard2.name.."! "..loc("Look, someone is stealing the saucer!"), SAY_SHOUT, 4000}})
table.insert(dialog03, {func = AnimSay, args = {guard2.gear, loc("I'll get him!"), SAY_SAY, 4000}})
table.insert(dialog03, {func = startCombat, args = {guard1.gear}})
@@ -532,17 +532,17 @@
-- DIALOG 06 - Landing on wrong planet or on earth if not enough fuels
AddSkipFunction(dialog06, Skipanim, {dialog06})
table.insert(dialog06, {func = AnimCaption, args = {hero.gear, loc("You have to try again!"), 5000}})
- table.insert(dialog06, {func = AnimSay, args = {hero.gear, loc("Hm... Now I run out of fuels..."), SAY_THINK, 3000}})
+ table.insert(dialog06, {func = AnimSay, args = {hero.gear, loc("Hm... Now I ran out of fuel..."), SAY_THINK, 3000}})
table.insert(dialog06, {func = sendStatsOnRetry, args = {hero.gear}})
-- DIALOG 07 - Hero lands on Death Planet but isn't allowed yet to play this map
AddSkipFunction(dialog07, Skipanim, {dialog07})
table.insert(dialog07, {func = AnimCaption, args = {hero.gear, loc("This planet seems dangerous!"), 5000}})
- table.insert(dialog07, {func = AnimSay, args = {hero.gear, loc("I am not ready for this planet yet. I should visit it when I have found all the other parts"), SAY_THINK, 4000}})
+ table.insert(dialog07, {func = AnimSay, args = {hero.gear, loc("I am not ready for this planet yet. I should visit it when I have found all the other device parts"), SAY_THINK, 4000}})
-- DIALOG 08 - Hero wins death01
AddSkipFunction(dialog08, Skipanim, {dialog08})
table.insert(dialog08, {func = AnimCaption, args = {hero.gear, loc("Under the meteorite shadow..."), 4000}})
table.insert(dialog08, {func = AnimSay, args = {doctor.gear, loc("You did great Hog Solo! However we aren't out of danger yet!"), SAY_SHOUT, 4500}})
- table.insert(dialog08, {func = AnimSay, args = {doctor.gear, loc("The meteorite has come too close and the anti-gravity device isn't powerful enough to get it out of order"), SAY_SHOUT, 5000}})
+ table.insert(dialog08, {func = AnimSay, args = {doctor.gear, loc("The meteorite has come too close and the anti-gravity device isn't powerful enough to stop it now"), SAY_SHOUT, 5000}})
table.insert(dialog08, {func = AnimSay, args = {doctor.gear, loc("We need it to get split into at least two parts"), SAY_SHOUT, 3000}})
table.insert(dialog08, {func = AnimSay, args = {doctor.gear, loc("PAotH has sent explosives but unfortunately the trigger mechanism seems to be faulty!"), SAY_SHOUT, 5000}})
table.insert(dialog08, {func = AnimSay, args = {doctor.gear, loc("We need you to go there and detonate them yourself! Good luck!"), SAY_SHOUT, 500}})
@@ -559,17 +559,17 @@
end
function sendStats(planet)
- SendStat(siGameResult, loc("Hog Solo arrived to "..planet))
+ SendStat(siGameResult, loc("Hog Solo arrived at "..planet))
SendStat(siCustomAchievement, loc("Return to the mission menu by pressing the \"Go back\" button"))
- SendStat(siCustomAchievement, loc("Choose another planet by replaying the mission"))
+ SendStat(siCustomAchievement, loc("You can choose another planet by replaying this mission"))
SendStat(siPlayerKills,'1',teamC.name)
EndGame()
end
function sendStatsOnRetry()
SendStat(siGameResult, loc("You have to travel again"))
- SendStat(siCustomAchievement, loc("Your first destination is moon in order to get more fuels"))
- SendStat(siCustomAchievement, loc("You have to complete the moon main mission in order to travel to other planets"))
+ SendStat(siCustomAchievement, loc("Your first destination is the moon in order to get more fuel"))
+ SendStat(siCustomAchievement, loc("You have to complete the main mission on moon in order to travel to other planets"))
SendStat(siCustomAchievement, loc("You have to be careful and not die!"))
SendStat(siPlayerKills,'0',teamC.name)
EndGame()
--- a/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/death01.lua Sat Dec 14 21:16:20 2013 +0400
+++ b/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/death01.lua Tue Dec 17 00:02:52 2013 +0400
@@ -99,7 +99,7 @@
SuddenDeathTurns = 100
Map = "death01_map"
Theme = "Hell"
-
+
-- Hog Solo
AddTeam(teamA.name, teamA.color, "Bone", "Island", "HillBilly", "cm_birdy")
hero.gear = AddHog(hero.name, 0, 100, "war_desertgrenadier1")
@@ -112,7 +112,7 @@
paoth2.gear = AddHog(paoth2.name, 0, 100, "Glasses")
AnimSetGearPosition(paoth2.gear, paoth2.x, paoth2.y)
HogTurnLeft(paoth2.gear, true)
- -- Professor and Thugs
+ -- Professor and Thugs
AddTeam(teamC.name, teamC.color, "Bone", "Island", "HillBilly", "cm_birdy")
professor.human = AddHog(professor.name, 0, 300, "tophats")
AnimSetGearPosition(professor.human, hero.x + 70, hero.y)
@@ -127,9 +127,9 @@
AnimSetGearPosition(thugs[i].gear, thugs[i].x, thugs[i].y)
HogTurnLeft(thugs[i].gear, not thugs[i].turnLeft)
end
-
+
initCheckpoint("death01")
-
+
AnimInit()
AnimationSetup()
end
@@ -137,10 +137,10 @@
function onGameStart()
AnimWait(hero.gear, 3000)
FollowGear(hero.gear)
-
+
AddEvent(onHeroDeath, {hero.gear}, heroDeath, {hero.gear}, 0)
AddEvent(onEnemiesDeath, {hero.gear}, enemiesDeath, {hero.gear}, 0)
-
+
-- add crates
SpawnAmmoCrate(teleportCrate.x, teleportCrate.y, amTeleport)
SpawnAmmoCrate(drillCrate.x, drillCrate.y, amTeleport)
@@ -169,7 +169,7 @@
PlaceGirder(3770, 1370, 4)
PlaceGirder(3700, 1460, 6)
PlaceGirder(3840, 1460, 6)
-
+
-- add ammo
-- hero ammo
AddAmmo(hero.gear, amRope, 2)
@@ -190,10 +190,10 @@
AddAmmo(professor.gear, amSwitch, 100)
AddAmmo(professor.gear, amGrenade, 8)
AddAmmo(professor.gear, amDEagle, 8)
-
+
HideHog(professor.bot)
AddAnim(dialog01)
-
+
SendHealthStatsOff()
end
@@ -233,7 +233,7 @@
function onPrecise()
if GameTime > 3000 then
- SetAnimSkip(true)
+ SetAnimSkip(true)
end
end
@@ -248,7 +248,7 @@
function onEnemiesDeath(gear)
local allDead = true
- if professor.dead then
+ if GetHealth(hero.gear) and professor.dead then
for i=1,table.getn(thugs) do
if GetHealth(thugs[i]) then
allDead = false
@@ -274,9 +274,9 @@
function enemiesDeath(gear)
saveCompletedStatus(6)
SendStat(siGameResult, loc("Congratulations, you won!"))
- SendStat(siCustomAchievement, loc("You have successfuly eliminated Professor Hogevil"))
+ SendStat(siCustomAchievement, loc("You have successfully eliminated Professor Hogevil"))
SendStat(siCustomAchievement, loc("You have rescued H and Dr.Cornelius"))
- SendStat(siCustomAchievement, loc("You have acquired the last part"))
+ SendStat(siCustomAchievement, loc("You have acquired the last device part"))
SendStat(siCustomAchievement, loc("Now go and play the menu mission to complete the campaign"))
SendStat(siPlayerKills,'1',teamA.name)
SendStat(siPlayerKills,'0',teamC.name)
@@ -297,16 +297,16 @@
AddSkipFunction(dialog01, Skipanim, {dialog01})
table.insert(dialog01, {func = AnimWait, args = {hero.gear, 3000}})
table.insert(dialog01, {func = AnimCaption, args = {hero.gear, loc("Somewhere in the uninhabitable Death Planet..."), 5000}})
- table.insert(dialog01, {func = AnimSay, args = {professor.human, loc("Welcome Hog Solo, surpised to see me?"), SAY_SAY, 4000}})
- table.insert(dialog01, {func = AnimSay, args = {professor.human, loc("As you can see I have survived our last encounter and I had time to plot my master plan!"), SAY_SAY, 4000}})
- table.insert(dialog01, {func = AnimSay, args = {professor.human, loc("I've thought that the best way to get the device is to let you collect most of the parts for me!"), SAY_SAY, 4000}})
+ table.insert(dialog01, {func = AnimSay, args = {professor.human, loc("Welcome Hog Solo, surprised to see me?"), SAY_SAY, 4000}})
+ table.insert(dialog01, {func = AnimSay, args = {professor.human, loc("As you can see I have survived our last encounter and I had time to plot my master plan!"), SAY_SAY, 4000}})
+ table.insert(dialog01, {func = AnimSay, args = {professor.human, loc("I've thought that the best way to get the device is to let you collect most of the parts for me!"), SAY_SAY, 4000}})
table.insert(dialog01, {func = AnimSay, args = {professor.human, loc("So, now I got the last part and I have your friends captured..."), SAY_SAY, 4000}})
table.insert(dialog01, {func = AnimSay, args = {professor.human, loc("Will you give me the other parts?"), SAY_SAY, 4000}})
table.insert(dialog01, {func = AnimWait, args = {hero.gear, 3000}})
- table.insert(dialog01, {func = AnimSay, args = {hero.gear, loc("I will never hand you the parts!"), SAY_SAY, 4000}})
+ table.insert(dialog01, {func = AnimSay, args = {hero.gear, loc("I will never hand you the parts!"), SAY_SAY, 4000}})
table.insert(dialog01, {func = AnimWait, args = {professor.human, 3000}})
- table.insert(dialog01, {func = AnimSay, args = {professor.human, loc("Then prepare for battle!"), SAY_SAY, 4000}})
- table.insert(dialog01, {func = startBattle, args = {}})
+ table.insert(dialog01, {func = AnimSay, args = {professor.human, loc("Then prepare for battle!"), SAY_SAY, 4000}})
+ table.insert(dialog01, {func = startBattle, args = {}})
end
-------------- OTHER FUNCTIONS -----------------
--- a/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/death02.lua Sat Dec 14 21:16:20 2013 +0400
+++ b/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/death02.lua Tue Dec 17 00:02:52 2013 +0400
@@ -12,12 +12,12 @@
local missionName = loc("Killing the specialists")
local challengeObjectives = loc("Use your available weapons in order to eliminate the enemies").."|"..
loc("Each time you play this missions enemy hogs will play in a random order").."|"..
- loc("At the start of the game each enemy hog has only the weapon that he is named of").."|"..
- loc("A random hog will inherit the weapons of the deceased hogs").."|"..
- loc("If you kill a hog with the weapon your hp will be 100").."|"..
- loc("If you injure a hog you'll get 35% of the damage dealt").."|"..
- loc("Every time you kill an enemy hog your ammo will get reseted").."|"..
- loc("Rope won't get reseted")
+ loc("At the start of the game each enemy hog has only the weapon that he is named after").."|"..
+ loc("A random hedgehog will inherit the weapons of his deceased team-mates").."|"..
+ loc("If you kill a hedgehog with the respective weapon your healh points will be set to 100").."|"..
+ loc("If you injure a hedgehog you'll get 35% of the damage dealt").."|"..
+ loc("Every time you kill an enemy hog your ammo will get reset").."|"..
+ loc("Rope won't get reset")
-- dialogs
local dialog01 = {}
-- mission objectives
@@ -63,7 +63,7 @@
Explosives = 0
Map = "death02_map"
Theme = "Hell"
-
+
-- Hog Solo
AddTeam(teamA.name, teamA.color, "Bone", "Island", "HillBilly", "cm_birdy")
hero.gear = AddHog(hero.name, 0, 100, "war_desertgrenadier1")
@@ -75,9 +75,9 @@
enemies[i].gear = AddHog(enemies[i].name, 1, 100, "war_desertgrenadier1")
AnimSetGearPosition(enemies[i].gear, enemies[i].x, enemies[i].y)
end
-
+
initCheckpoint("death02")
-
+
AnimInit()
AnimationSetup()
end
@@ -86,7 +86,7 @@
AnimWait(hero.gear, 3000)
FollowGear(hero.gear)
ShowMission(missionName, loc("Challenge Objectives"), challengeObjectives, -amSkip, 0)
-
+
AddEvent(onHeroDeath, {hero.gear}, heroDeath, {hero.gear}, 0)
AddEvent(onHeroWin, {hero.gear}, heroWin, {hero.gear}, 0)
@@ -119,7 +119,7 @@
hero.bazookaAmmo = 0
elseif deadHog.weapon == amGrenade then
hero.grenadeAmmo = 0
- end
+ end
local randomHog = math.random(1,table.getn(enemies))
while not GetHealth(enemies[randomHog].gear) do
randomHog = math.random(1,table.getn(enemies))
@@ -149,7 +149,7 @@
function onPrecise()
if GameTime > 3000 then
- SetAnimSkip(true)
+ SetAnimSkip(true)
end
end
@@ -177,8 +177,8 @@
function heroDeath(gear)
SendStat(siGameResult, loc("Hog Solo lost, try again!"))
- SendStat(siCustomAchievement, loc("You have to eliminate all the enemies"))
- SendStat(siCustomAchievement, loc("Read the Challenge Objectives from within the mission for more details"))
+ SendStat(siCustomAchievement, loc("You have to eliminate all the enemies"))
+ SendStat(siCustomAchievement, loc("Read the Challenge Objectives from within the mission for more details"))
SendStat(siPlayerKills,'1',teamB.name)
SendStat(siPlayerKills,'0',teamA.name)
EndGame()
@@ -187,8 +187,8 @@
function heroWin(gear)
saveBonus(3, 4)
SendStat(siGameResult, loc("Congratulations, you won!"))
- SendStat(siCustomAchievement, loc("You complete the mission in "..TotalRounds.." rounds"))
- SendStat(siCustomAchievement, loc("The next 4 times you'll play the \"The last encounter\" mission you'll get 20 more hit points and a Laser Sight"))
+ SendStat(siCustomAchievement, loc("You complete the mission in "..TotalRounds.." rounds"))
+ SendStat(siCustomAchievement, loc("The next 4 times you play the \"The last encounter\" mission you'll get 20 more hit points and a Laser Sight"))
SendStat(siPlayerKills,'1',teamA.name)
EndGame()
end
@@ -209,14 +209,14 @@
table.insert(dialog01, {func = AnimCaption, args = {hero.gear, loc("Somewhere in the Planet of Death..."), 3000}})
table.insert(dialog01, {func = AnimCaption, args = {hero.gear, loc("...Hog Solo fights for his life"), 3000}})
table.insert(dialog01, {func = AnimCaption, args = {hero.gear, loc("Each time you play this missions enemy hogs will play in a random order"), 5000}})
- table.insert(dialog01, {func = AnimCaption, args = {hero.gear, loc("At the start of the game each enemy hog has only the weapon that he is named of"), 5000}})
- table.insert(dialog01, {func = AnimCaption, args = {hero.gear, loc("A random hog will inherit the weapons of the deceased hogs"), 5000}})
- table.insert(dialog01, {func = AnimCaption, args = {hero.gear, loc("If you kill a hog with the weapon your hp will be 100"), 5000}})
- table.insert(dialog01, {func = AnimCaption, args = {hero.gear, loc("If you injure a hog you'll get 35% of the damage dealt"), 5000}})
- table.insert(dialog01, {func = AnimCaption, args = {hero.gear, loc("Every time you kill an enemy hog your ammo will get reseted"), 5000}})
- table.insert(dialog01, {func = AnimCaption, args = {hero.gear, loc("Rope won't get reseted"), 2000}})
+ table.insert(dialog01, {func = AnimCaption, args = {hero.gear, loc("At the start of the game each enemy hog has only the weapon that he is named after"), 5000}})
+ table.insert(dialog01, {func = AnimCaption, args = {hero.gear, loc("A random hedgehog will inherit the weapons of his deceased team-mates"), 5000}})
+ table.insert(dialog01, {func = AnimCaption, args = {hero.gear, loc("If you kill a hedgehog with the respective weapon your healh points will be set to 100"), 5000}})
+ table.insert(dialog01, {func = AnimCaption, args = {hero.gear, loc("If you injure a hedgehog you'll get 35% of the damage dealt"), 5000}})
+ table.insert(dialog01, {func = AnimCaption, args = {hero.gear, loc("Every time you kill an enemy hog your ammo will get reset"), 5000}})
+ table.insert(dialog01, {func = AnimCaption, args = {hero.gear, loc("Rope won't get reset"), 2000}})
table.insert(dialog01, {func = AnimWait, args = {hero.gear, 500}})
- table.insert(dialog01, {func = startBattle, args = {hero.gear}})
+ table.insert(dialog01, {func = startBattle, args = {hero.gear}})
end
------------ Other Functions -------------------
--- a/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/desert01.lua Sat Dec 14 21:16:20 2013 +0400
+++ b/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/desert01.lua Tue Dec 17 00:02:52 2013 +0400
@@ -24,7 +24,7 @@
local dialog01 = {}
-- mission objectives
local goals = {
- [dialog01] = {missionName, loc("Getting ready"), loc("The part is hidden in one of the crates! Go and get it!"), 1, 4500},
+ [dialog01] = {missionName, loc("Getting ready"), loc("The device part is hidden in one of the crates! Go and get it!"), 1, 4500},
}
-- crates
local btorch1Y = 60
@@ -43,6 +43,9 @@
local portalX = 1465
local girderY = 1630
local girderX = 3350
+-- win crates
+local btorch2 = {}
+local girder = {}
-- hogs
local hero = {}
local ally = {}
@@ -90,7 +93,7 @@
HealthCaseAmount = 30
Map = "desert01_map"
Theme = "Desert"
-
+
-- get the check point
checkPointReached = initCheckpoint("desert01")
-- get hero health
@@ -98,7 +101,7 @@
if checkPointReached > 1 and tonumber(GetCampaignVar("HeroHealth")) then
heroHealth = tonumber(GetCampaignVar("HeroHealth"))
end
-
+
-- Hog Solo
AddTeam(teamC.name, teamC.color, "Bone", "Island", "HillBilly", "cm_birdy")
hero.gear = AddHog(hero.name, 0, heroHealth, "war_desertgrenadier1")
@@ -113,10 +116,10 @@
smuggler1.gear = AddHog(smuggler1.name, 1, 100, "hair_orange")
AnimSetGearPosition(smuggler1.gear, smuggler1.x, smuggler1.y)
smuggler2.gear = AddHog(smuggler2.name, 1, 100, "lambda")
- AnimSetGearPosition(smuggler2.gear, smuggler2.x, smuggler2.y)
+ AnimSetGearPosition(smuggler2.gear, smuggler2.x, smuggler2.y)
smuggler3.gear = AddHog(smuggler3.name, 1, 100, "beefeater")
- AnimSetGearPosition(smuggler3.gear, smuggler3.x, smuggler3.y)
-
+ AnimSetGearPosition(smuggler3.gear, smuggler3.x, smuggler3.y)
+
if checkPointReached == 1 then
-- Start of the game
elseif checkPointReached == 2 then
@@ -128,42 +131,54 @@
elseif checkPointReached == 4 then
AnimSetGearPosition(hero.gear, 1160, 1180)
elseif checkPointReached == 5 then
- AnimSetGearPosition(hero.gear, girderX+40, girderY-30)
+ local positions = GetCampaignVar("HogsPosition")
+ positions = split(positions,",")
+ local x
+ local y
+ if positions[1] then
+ x = positions[1]
+ y = positions[2]
+ else
+ -- this should *NEVER* happen, remove?
+ x = girderX+40
+ y = girderY-30
+ end
+ AnimSetGearPosition(hero.gear, x, y)
end
-
+
AnimInit()
- AnimationSetup()
+ AnimationSetup()
end
function onGameStart()
AnimWait(hero.gear, 3000)
FollowGear(hero.gear)
-
+
AddEvent(onHeroDeath, {hero.gear}, heroDeath, {hero.gear}, 0)
AddEvent(onHeroAtFirstBattle, {hero.gear}, heroAtFirstBattle, {hero.gear}, 1)
- AddEvent(onHeroFleeFirstBattle, {hero.gear}, heroFleeFirstBattle, {hero.gear}, 1)
AddEvent(onHeroAtCheckpoint4, {hero.gear}, heroAtCheckpoint4, {hero.gear}, 0)
AddEvent(onHeroAtThirdBattle, {hero.gear}, heroAtThirdBattle, {hero.gear}, 0)
AddEvent(onCheckForWin1, {hero.gear}, checkForWin1, {hero.gear}, 0)
AddEvent(onCheckForWin2, {hero.gear}, checkForWin2, {hero.gear}, 0)
-
+ AddEvent(onCrateDestroyed, {hero.gear}, crateDestroyed, {hero.gear}, 0)
+
-- smugglers ammo
AddAmmo(smuggler1.gear, amBazooka, 2)
AddAmmo(smuggler1.gear, amGrenade, 2)
- AddAmmo(smuggler1.gear, amDEagle, 2)
+ AddAmmo(smuggler1.gear, amDEagle, 2)
AddAmmo(smuggler3.gear, amRope, 2)
-
+
-- spawn crates
SpawnAmmoCrate(btorch2X, btorch2Y, amBlowTorch)
SpawnAmmoCrate(btorch3X, btorch3Y, amBlowTorch)
SpawnAmmoCrate(rope1X, rope1Y, amRope)
SpawnAmmoCrate(rope2X, rope2Y, amRope)
SpawnAmmoCrate(rope3X, rope3Y, amRope)
- SpawnAmmoCrate(portalX, portalY, amPortalGun)
+ SpawnAmmoCrate(portalX, portalY, amPortalGun)
SpawnAmmoCrate(girderX, girderY, amGirder)
-
+
SpawnHealthCrate(3300, 970)
-
+
-- adding mines - BOOM!
AddGear(1280, 460, gtMine, 0, 0, 0, 0)
AddGear(270, 460, gtMine, 0, 0, 0, 0)
@@ -171,7 +186,7 @@
AddGear(3500, 240, gtMine, 0, 0, 0, 0)
AddGear(3410, 670, gtMine, 0, 0, 0, 0)
AddGear(3450, 720, gtMine, 0, 0, 0, 0)
-
+
local x = 800
while x < 1630 do
AddGear(x, 900, gtMine, 0, 0, 0, 0)
@@ -192,8 +207,9 @@
AddGear(x, 470, gtMine, 0, 0, 0, 0)
x = x + math.random(8,20)
end
-
- if checkPointReached == 1 then
+
+ if checkPointReached == 1 then
+ AddEvent(onHeroFleeFirstBattle, {hero.gear}, heroFleeFirstBattle, {hero.gear}, 1)
AddEvent(onHeroAtCheckpoint2, {hero.gear}, heroAtCheckpoint2, {hero.gear}, 0)
AddEvent(onHeroAtCheckpoint3, {hero.gear}, heroAtCheckpoint3, {hero.gear}, 0)
-- crates
@@ -206,18 +222,18 @@
AddAmmo(hero.gear, amGrenade, 6)
AddAmmo(hero.gear, amDEagle, 4)
AddAmmo(hero.gear, amRCPlane, tonumber(getBonus(1)))
-
+
AddAnim(dialog01)
elseif checkPointReached == 2 or checkPointReached == 3 then
- ShowMission(campaignName, missionName, loc("The part is hidden in one of the crates! Go and get it!"), -amSkip, 0)
+ ShowMission(campaignName, missionName, loc("The device part is hidden in one of the crates! Go and get it!"), -amSkip, 0)
loadHeroAmmo()
-
+
secondBattle()
elseif checkPointReached == 4 or checkPointReached == 5 then
- ShowMission(campaignName, missionName, loc("The part is hidden in one of the crates! Go and get it!"), -amSkip, 0)
+ ShowMission(campaignName, missionName, loc("The part device is hidden in one of the crates! Go and get it!"), -amSkip, 0)
loadHeroAmmo()
end
-
+
SendHealthStatsOff()
end
@@ -252,11 +268,38 @@
function onAmmoStoreInit()
SetAmmo(amBlowTorch, 0, 0, 0, 1)
SetAmmo(amRope, 0, 0, 0, 1)
- SetAmmo(amPortalGun, 0, 0, 0, 1)
+ SetAmmo(amPortalGun, 0, 0, 0, 1)
SetAmmo(amGirder, 0, 0, 0, 3)
end
+function onGearAdd(gear)
+ if GetGearType(gear) == gtCase then
+ if GetX(gear) == btorch2X and GetY(gear) == btorch2Y then
+ btorch2.gear = gear
+ btorch2.destroyed = false
+ btorch2.deleted = false
+ elseif GetX(gear) == girderX and GetY(gear) == girderY then
+ girder.gear = gear
+ girder.destroyed = false
+ girder.deleted = false
+ end
+ end
+end
+
+function onGearDamage(gear, damage)
+ if gear == girder.gear then
+ girder.destroyed = true
+ elseif gear == btorch2.gear then
+ btorch2.destroyed = true
+ end
+end
+
function onGearDelete(gear)
+ if gear == girder.gear then
+ girder.deleted = true
+ elseif gear == btorch2.gear then
+ btorch2.deleted = true
+ end
if gear == hero.gear then
hero.dead = true
elseif (gear == smuggler1.gear or gear == smuggler2.gear or gear == smuggler3.gear) and heroIsInBattle then
@@ -267,7 +310,7 @@
function onPrecise()
if GameTime > 3000 then
- SetAnimSkip(true)
+ SetAnimSkip(true)
end
end
@@ -281,16 +324,16 @@
end
function onHeroAtFirstBattle(gear)
- if not hero.dead and not heroIsInBattle and GetHealth(smuggler1.gear) and GetX(hero.gear) <= 1450
- and GetY(hero.gear) <= GetY(smuggler1.gear)+5 and GetY(hero.gear) >= GetY(smuggler1.gear)-5 then
+ if not hero.dead and not heroIsInBattle and GetHealth(smuggler1.gear) and GetX(hero.gear) <= 1450 and GetX(hero.gear) > 80
+ and GetY(hero.gear) <= GetY(smuggler1.gear)+5 and GetY(hero.gear) >= GetY(smuggler1.gear)-40 and StoppedGear(hero.gear) then
return true
end
return false
end
function onHeroFleeFirstBattle(gear)
- if not hero.dead and GetHealth(smuggler1.gear) and heroIsInBattle and ongoingBattle == 1 and (GetX(hero.gear) > 1450
- or (GetY(hero.gear) < GetY(smuggler1.gear)-80 or GetY(hero.gear) > smuggler1.y+300)) then
+ if GetHealth(hero.gear) and GetHealth(smuggler1.gear) and heroIsInBattle
+ and distance(hero.gear, smuggler1.gear) > 1400 and StoppedGear(hero.gear) then
return true
end
return false
@@ -299,7 +342,7 @@
-- saves the location of the hero and prompts him for the second battle
function onHeroAtCheckpoint2(gear)
if not hero.dead and GetX(hero.gear) > 1000 and GetX(hero.gear) < 1100
- and GetY(hero.gear) > 590 and GetY(hero.gear) < 700 then
+ and GetY(hero.gear) > 590 and GetY(hero.gear) < 700 and StoppedGear(hero.gear) then
return true
end
return false
@@ -307,7 +350,7 @@
function onHeroAtCheckpoint3(gear)
if not hero.dead and GetX(hero.gear) > 1610 and GetX(hero.gear) < 1680
- and GetY(hero.gear) > 850 and GetY(hero.gear) < 1000 then
+ and GetY(hero.gear) > 850 and GetY(hero.gear) < 1000 and StoppedGear(hero.gear) then
return true
end
return false
@@ -330,16 +373,21 @@
end
function onCheckForWin1(gear)
- if not hero.dead and GetX(hero.gear) > btorch2X-30 and GetX(hero.gear) < btorch2X+30
- and GetY(hero.gear) > btorch2Y-30 and GetY(hero.gear) < btorch2Y+30 then
+ if not hero.dead and not btorch2.destroyed and btorch2.deleted then
return true
end
return false
end
function onCheckForWin2(gear)
- if not hero.dead and GetX(hero.gear) > girderX-30 and GetX(hero.gear) < girderX+30
- and GetY(hero.gear) > girderY-30 and GetY(hero.gear) < girderY+30 then
+ if not hero.dead and not girder.destroyed and girder.deleted then
+ return true
+ end
+ return false
+end
+
+function onCrateDestroyed(gear)
+ if not hero.dead and girder.destroyed or btorch2.destroyed then
return true
end
return false
@@ -348,20 +396,14 @@
-------------- ACTIONS ------------------
function heroDeath(gear)
- SendStat(siGameResult, loc("Hog Solo lost, try again!"))
- SendStat(siCustomAchievement, loc("To win the game you have to find the right crate"))
- SendStat(siCustomAchievement, loc("You can avoid some battles"))
- SendStat(siCustomAchievement, loc("Use your ammo wisely"))
- SendStat(siPlayerKills,'1',teamB.name)
- SendStat(siPlayerKills,'0',teamC.name)
- EndGame()
+ lose()
end
function heroAtFirstBattle(gear)
AnimCaption(hero.gear, loc("A smuggler! Prepare for battle"), 5000)
TurnTimeLeft = 0
heroIsInBattle = true
- ongoingBattle = 1
+ ongoingBattle = 1
AnimSwitchHog(smuggler1.gear)
TurnTimeLeft = 0
end
@@ -394,11 +436,15 @@
function heroAtThirdBattle(gear)
heroIsInBattle = true
ongoingBattle = 3
- AnimSay(smuggler3.gear, loc("Who's there?! I'll get you..."), SAY_SHOUT, 5000)
+ AnimSay(smuggler3.gear, loc("Who's there?! I'll get you..."), SAY_SHOUT, 5000)
AnimSwitchHog(smuggler3.gear)
TurnTimeLeft = 0
end
+function crateDestroyed(gear)
+ lose()
+end
+
-- for some weird reson I couldn't call the same action for both events
function checkForWin1(gear)
checkForWin()
@@ -408,9 +454,10 @@
-- ok lets place one more checkpoint as next part seems challenging without rope
if cratesFound == 0 then
saveCheckPointLocal("5")
+ SaveCampaignVar("HogsPosition", GetX(hero.gear)..","..GetY(hero.gear))
end
-
- checkForWin()
+
+ checkForWin()
end
-------------- ANIMATIONS ------------------
@@ -430,14 +477,14 @@
AddSkipFunction(dialog01, Skipanim, {dialog01})
table.insert(dialog01, {func = AnimWait, args = {hero.gear, 3000}})
table.insert(dialog01, {func = AnimCaption, args = {hero.gear, loc("In the Planet of Sand, you have to double check your moves..."), 5000}})
- table.insert(dialog01, {func = AnimSay, args = {ally.gear, loc("Finaly you are here..."), SAY_SAY, 2000}})
+ table.insert(dialog01, {func = AnimSay, args = {ally.gear, loc("Finally you are here..."), SAY_SAY, 2000}})
table.insert(dialog01, {func = AnimWait, args = {hero.gear, 2000}})
- table.insert(dialog01, {func = AnimSay, args = {hero.gear, loc("Thank you for meeting me in such a short notice!"), SAY_SAY, 3000}})
+ table.insert(dialog01, {func = AnimSay, args = {hero.gear, loc("Thank you for meeting me on such a short notice!"), SAY_SAY, 3000}})
table.insert(dialog01, {func = AnimWait, args = {ally.gear, 4000}})
table.insert(dialog01, {func = AnimSay, args = {ally.gear, loc("No problem, I would do anything for H!"), SAY_SAY, 4000}})
table.insert(dialog01, {func = AnimSay, args = {ally.gear, loc("Now listen carefully! Below us there are tunnels that have been created naturally over the years"), SAY_SAY, 4000}})
- table.insert(dialog01, {func = AnimSay, args = {ally.gear, loc("I have heared the local tribes saying that many years ago some PAotH scientists were dumping their waste here"), SAY_SAY, 5000}})
- table.insert(dialog01, {func = AnimSay, args = {ally.gear, loc("H confimed that there isn't such a PAotH activity logged"), SAY_SAY, 4000}})
+ table.insert(dialog01, {func = AnimSay, args = {ally.gear, loc("I have heard that the local tribes say that many years ago some PAotH scientists were dumping their waste here"), SAY_SAY, 5000}})
+ table.insert(dialog01, {func = AnimSay, args = {ally.gear, loc("H confirmed that there isn't such a PAotH activity logged"), SAY_SAY, 4000}})
table.insert(dialog01, {func = AnimSay, args = {ally.gear, loc("So, I believe that it's a good place to start"), SAY_SAY, 3000}})
table.insert(dialog01, {func = AnimSay, args = {ally.gear, loc("Beware though! Many smugglers come often to explore these tunnels and scavage whatever valuable items they can find"), SAY_SAY, 5000}})
table.insert(dialog01, {func = AnimSay, args = {ally.gear, loc("They won't hesitate to attack you in order to rob you!"), SAY_SAY, 4000}})
@@ -447,7 +494,7 @@
table.insert(dialog01, {func = AnimSay, args = {ally.gear, loc("There is the tunnel entrance"), SAY_SAY, 3000}})
table.insert(dialog01, {func = AnimSay, args = {ally.gear, loc("Good luck!"), SAY_SAY, 3000}})
table.insert(dialog01, {func = AnimWait, args = {hero.gear, 500}})
- table.insert(dialog01, {func = startMission, args = {hero.gear}})
+ table.insert(dialog01, {func = startMission, args = {hero.gear}})
end
--------------- OTHER FUNCTIONS ------------------
@@ -459,16 +506,19 @@
function secondBattle()
-- second battle
+ if heroIsInBattle and ongoingBattle == 1 then
+ AnimSay(smuggler1.gear, loc("Get him Spike!"), SAY_SHOUT, 4000)
+ end
heroIsInBattle = true
ongoingBattle = 2
- AnimSay(smuggler2.gear, loc("This is seems like a wealthy hedgehog, nice..."), SAY_THINK, 5000)
+ AnimSay(smuggler2.gear, loc("This is seems like a wealthy hedgehog, nice..."), SAY_THINK, 5000)
AnimSwitchHog(smuggler2.gear)
TurnTimeLeft = 0
end
function saveCheckPointLocal(cpoint)
-- save checkpoint
- saveCheckpoint(cpoint)
+ saveCheckpoint(cpoint)
SaveCampaignVar("HeroHealth", GetHealth(hero.gear))
-- bazooka - grenade - rope - parachute - deagle - btorch - construct - portal - rcplane
SaveCampaignVar("HeroAmmo", GetAmmoCount(hero.gear, amBazooka)..GetAmmoCount(hero.gear, amGrenade)..
@@ -497,13 +547,13 @@
function checkForWin()
if cratesFound == 0 then
- -- have to look more
+ -- have to look more
AnimSay(hero.gear, loc("Haven't found it yet..."), SAY_THINK, 5000)
cratesFound = cratesFound + 1
elseif cratesFound == 1 then
-- end game
saveCompletedStatus(5)
- AnimSay(hero.gear, loc("Hoo Ray!!!"), SAY_SHOUT, 5000)
+ AnimSay(hero.gear, loc("Hoorah!!!"), SAY_SHOUT, 5000)
SendStat(siGameResult, loc("Congratulations, you won!"))
SendStat(siCustomAchievement, loc("To win the game you had to collect the 2 crates with no specific order"))
SendStat(siPlayerKills,'1',teamC.name)
@@ -511,3 +561,14 @@
EndGame()
end
end
+
+function lose()
+ SendStat(siGameResult, loc("Hog Solo lost, try again!"))
+ SendStat(siCustomAchievement, loc("To win the game you have to find the right crate"))
+ SendStat(siCustomAchievement, loc("You can avoid some battles"))
+ SendStat(siCustomAchievement, loc("Use your ammo wisely"))
+ SendStat(siCustomAchievement, loc("Don't destroy the device crate!"))
+ SendStat(siPlayerKills,'1',teamB.name)
+ SendStat(siPlayerKills,'0',teamC.name)
+ EndGame()
+end
--- a/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/desert02.lua Sat Dec 14 21:16:20 2013 +0400
+++ b/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/desert02.lua Tue Dec 17 00:02:52 2013 +0400
@@ -15,7 +15,7 @@
local dialog01 = {}
-- mission objectives
local goals = {
- [dialog01] = {missionName, loc("Getting ready"), loc("Use the rope and get asap to the surface!"), 1, 4500},
+ [dialog01] = {missionName, loc("Getting ready"), loc("Use the rope to quickly get to the surface!"), 1, 4500},
}
-- health crates
healthX = 565
@@ -34,7 +34,7 @@
teamA.color = tonumber("38D61C",16) -- green
-- way points
local current waypoint = 1
-local waypoints = {
+local waypoints = {
[1] = {x=1450, y=140},
[2] = {x=990, y=580},
[3] = {x=1650, y=950},
@@ -70,15 +70,15 @@
HealthDecrease = 0
Map = "desert02_map"
Theme = "Desert"
-
+
-- Hog Solo
AddTeam(teamA.name, teamA.color, "Bone", "Island", "HillBilly", "cm_birdy")
hero.gear = AddHog(hero.name, 0, 100, "war_desertgrenadier1")
AnimSetGearPosition(hero.gear, hero.x, hero.y)
HogTurnLeft(hero.gear, true)
-
+
initCheckpoint("desert02")
-
+
AnimInit()
AnimationSetup()
end
@@ -86,15 +86,15 @@
function onGameStart()
AnimWait(hero.gear, 3000)
FollowGear(hero.gear)
-
+
AddEvent(onHeroDeath, {hero.gear}, heroDeath, {hero.gear}, 0)
AddEvent(onHeroSafe, {hero.gear}, heroSafe, {hero.gear}, 0)
-
+
SpawnHealthCrate(healthX, health1Y)
SpawnHealthCrate(healthX, health2Y)
-
+
AddAmmo(hero.gear, amRope, 99)
-
+
SendHealthStatsOff()
AddAnim(dialog01)
end
@@ -120,7 +120,7 @@
function onPrecise()
if GameTime > 3000 then
- SetAnimSkip(true)
+ SetAnimSkip(true)
end
end
@@ -174,7 +174,7 @@
table.insert(dialog01, {func = AnimWait, args = {hero.gear, 3000}})
table.insert(dialog01, {func = AnimCaption, args = {hero.gear, loc("Many meters below the surface..."), 5000}})
table.insert(dialog01, {func = AnimSay, args = {hero.gear, loc("The tunnel is about to get flooded..."), SAY_THINK, 4000}})
- table.insert(dialog01, {func = AnimSay, args = {hero.gear, loc("I have to reach the surface asap..."), SAY_THINK, 4000}})
+ table.insert(dialog01, {func = AnimSay, args = {hero.gear, loc("I have to reach the surface as quickly as I can..."), SAY_THINK, 4000}})
table.insert(dialog01, {func = AnimWait, args = {hero.gear, 500}})
table.insert(dialog01, {func = challengeStart, args = {hero.gear}})
end
--- a/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/desert03.lua Sat Dec 14 21:16:20 2013 +0400
+++ b/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/desert03.lua Tue Dec 17 00:02:52 2013 +0400
@@ -9,10 +9,10 @@
-- globals
local missionName = loc("Precise flying")
-local challengeObjectives = loc("Use the rc plane and destroy the all the targets").."|"..
- loc("Each time you destroy your level targets you'll get teleported to the next level").."|"..
- loc("You'll have only one rc plane at the start of the mission").."|"..
- loc("During the game you can get new planes by getting the weapon crates")
+local challengeObjectives = loc("Use the RC plane and destroy the all the targets").."|"..
+ loc("Each time you destroy all the targets on your current level you'll get teleported to the next level").."|"..
+ loc("You'll have only one RC plane at the start of the mission").."|"..
+ loc("During the game you can get new RC planes by collecting the weapon crates")
local currentTarget = 1
-- dialogs
local dialog01 = {}
@@ -66,14 +66,14 @@
Explosives = 0
Map = "desert03_map"
Theme = "Desert"
-
+
-- Hog Solo
AddTeam(teamA.name, teamA.color, "Bone", "Island", "HillBilly", "cm_birdy")
hero.gear = AddHog(hero.name, 0, 1, "war_desertgrenadier1")
AnimSetGearPosition(hero.gear, hero.x, hero.y)
-
+
initCheckpoint("desert03")
-
+
AnimInit()
AnimationSetup()
end
@@ -89,7 +89,7 @@
-- original crates and targets
SpawnAmmoCrate(rcCrates[1].x, rcCrates[1].y, amRCPlane)
targets[1].gear = AddGear(targets[1].x, targets[1].y, gtTarget, 0, 0, 0, 0)
-
+
-- hero ammo
AddAmmo(hero.gear, amRCPlane, 1)
@@ -117,7 +117,7 @@
function onPrecise()
if GameTime > 3000 then
- SetAnimSkip(true)
+ SetAnimSkip(true)
end
end
@@ -159,11 +159,11 @@
-- DIALOG 01 - Start, game instructions
AddSkipFunction(dialog01, Skipanim, {dialog01})
table.insert(dialog01, {func = AnimWait, args = {hero.gear, 3000}})
- table.insert(dialog01, {func = AnimCaption, args = {hero.gear, loc("In the Desert Planet, Hog Solo found some time to play with his RC plane..."), 3000}})
- table.insert(dialog01, {func = AnimCaption, args = {hero.gear, loc("Each time you destroy your level targets you'll get teleported to the next level"), 5000}})
- table.insert(dialog01, {func = AnimCaption, args = {hero.gear, loc("You'll have only one rc plane at the start of the mission"), 5000}})
- table.insert(dialog01, {func = AnimCaption, args = {hero.gear, loc("During the game you can get new planes by getting the weapon crates"), 5000}})
- table.insert(dialog01, {func = AnimWait, args = {hero.gear, 500}})
+ table.insert(dialog01, {func = AnimCaption, args = {hero.gear, loc("On the Desert Planet, Hog Solo found some time to play with his RC plane..."), 3000}})
+ table.insert(dialog01, {func = AnimCaption, args = {hero.gear, loc("Each time you destroy all the targets on your current level you'll get teleported to the next level"), 5000}})
+ table.insert(dialog01, {func = AnimCaption, args = {hero.gear, loc("You'll have only one RC plane at the start of the mission"), 5000}})
+ table.insert(dialog01, {func = AnimCaption, args = {hero.gear, loc("During the game you can get new RC planes by collecting the weapon crates"), 5000}})
+ table.insert(dialog01, {func = AnimWait, args = {hero.gear, 500}})
end
----------------- Other Functions -----------------
@@ -184,7 +184,7 @@
setTargets(currentTarget)
end
elseif currentTarget == 3 then
-
+
else
win()
end
@@ -209,18 +209,18 @@
function win()
saveBonus(1, 1)
SendStat(siGameResult, loc("Congratulations, you are the best!"))
- SendStat(siCustomAchievement, loc("You have destroyed all the targets"))
+ SendStat(siCustomAchievement, loc("You have destroyed all the targets"))
SendStat(siCustomAchievement, loc("You are indeed the best PAotH pilot"))
- SendStat(siCustomAchievement, loc("Next you play \"Searching in the dust\" you'll have an RC plane available"))
+ SendStat(siCustomAchievement, loc("Next time you play \"Searching in the dust\" you'll have an RC plane available"))
SendStat(siPlayerKills,'1',teamA.name)
EndGame()
end
function gameOver()
SendStat(siGameResult, loc("Hog Solo lost, try again!"))
- SendStat(siCustomAchievement, loc("You have to destroy all the targets"))
- SendStat(siCustomAchievement, loc("You will fail if you run out of ammo and there are still targets available"))
- SendStat(siCustomAchievement, loc("Read the Challenge Objectives from within the mission for more details"))
+ SendStat(siCustomAchievement, loc("You have to destroy all the targets"))
+ SendStat(siCustomAchievement, loc("You will fail if you run out of ammo and there are still targets available"))
+ SendStat(siCustomAchievement, loc("Read the Challenge Objectives from within the mission for more details"))
SendStat(siPlayerKills,'0',teamA.name)
EndGame()
end
Binary file share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/final.hwp has changed
--- a/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/final.lua Sat Dec 14 21:16:20 2013 +0400
+++ b/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/final.lua Tue Dec 17 00:02:52 2013 +0400
@@ -12,7 +12,9 @@
----------------- VARIABLES --------------------
-- globals
local missionName = loc("The big bang")
-local challengeObjectives = loc("Find a way to detonate all the explosives and stay alive!")
+local challengeObjectives = loc("Find a way to detonate all the explosives and stay alive!").."|"..
+ loc("Red areas are indestructible").."|"..
+ loc("Green areas aren't portal enabled")
local explosives = {}
local currentHealth = 1
local currentDamage = 0
@@ -38,17 +40,17 @@
MinesNum = 0
MinesTime = 1
Explosives = 0
- HealthCaseAmount = 50
+ HealthCaseAmount = 35
Map = "final_map"
Theme = "EarthRise"
-
+
-- Hog Solo
AddTeam(teamA.name, teamA.color, "Bone", "Island", "HillBilly", "cm_birdy")
hero.gear = AddHog(hero.name, 0, 1, "war_desertgrenadier1")
AnimSetGearPosition(hero.gear, hero.x, hero.y)
-
+
initCheckpoint("final")
-
+
AnimInit()
end
@@ -56,7 +58,7 @@
AnimWait(hero.gear, 3000)
FollowGear(hero.gear)
ShowMission(missionName, loc("Challenge Objectives"), challengeObjectives, -amSkip, 0)
-
+
-- explosives
x = 400
while x < 815 do
@@ -70,20 +72,20 @@
AddGear(x, 480, gtMine, 0, 0, 0, 0)
x = x + math.random(5,20)
end
- -- health crate
- SpawnHealthCrate(900, 5)
+ -- health crate
+ SpawnHealthCrate(910, 5)
-- ammo crates
SpawnAmmoCrate(930, 1000,amRCPlane)
SpawnAmmoCrate(1220, 672,amPickHammer)
SpawnAmmoCrate(1220, 672,amGirder)
-
+
-- ammo
- AddAmmo(hero.gear, amPortalGun, 1)
+ AddAmmo(hero.gear, amPortalGun, 1)
AddAmmo(hero.gear, amFirePunch, 1)
-
+
AddEvent(onHeroDeath, {hero.gear}, heroDeath, {hero.gear}, 0)
AddEvent(onHeroWin, {hero.gear}, heroWin, {hero.gear}, 0)
-
+
SendHealthStatsOff()
end
@@ -141,6 +143,8 @@
function heroDeath(gear)
SendStat(siGameResult, loc("Hog Solo lost, try again!"))
SendStat(siCustomAchievement, loc("You have to destroy all the explosives without dying!"))
+ SendStat(siCustomAchievement, loc("Red areas are indestructible"))
+ SendStat(siCustomAchievement, loc("Green areas aren't portal enabled"))
SendStat(siPlayerKills,'0',teamA.name)
EndGame()
end
--- a/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/fruit01.lua Sat Dec 14 21:16:20 2013 +0400
+++ b/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/fruit01.lua Tue Dec 17 00:02:52 2013 +0400
@@ -33,8 +33,8 @@
-- mission objectives
local goals = {
[dialog01] = {missionName, loc("Ready for Battle?"), loc("Walk left if you want to join Captain Lime or right if you want to decline his offer"), 1, 4000},
- [dialog02] = {missionName, loc("Battle Starts Now!"), loc("You have choose to fight! Lead the Green Bananas to battle and eliminate all the enemies"), 1, 4000},
- [dialog03] = {missionName, loc("Time to run!"), loc("You have choose to flee... Unfortunately the only place where you can launch your saucer is in the most left side of the map"), 1, 4000},
+ [dialog02] = {missionName, loc("Battle Starts Now!"), loc("You have chosen to fight! Lead the Green Bananas to battle and eliminate all the enemies"), 1, 4000},
+ [dialog03] = {missionName, loc("Time to run!"), loc("You have chosen to flee... Unfortunately the only place where you can launch your saucer is the left-most place on the map"), 1, 4000},
}
-- crates
local crateWMX = 2170
@@ -88,7 +88,7 @@
{name = loc("Naranja Jed"), x = 960 , y = 516, health = 40},
}
teamA.name = loc("Hog Solo")
-teamA.color = tonumber("38D61C",16) -- green
+teamA.color = tonumber("38D61C",16) -- green
teamB.name = loc("Green Bananas")
teamB.color = tonumber("38D61C",16) -- green
teamC.name = loc("Yellow Watermelons")
@@ -108,7 +108,7 @@
HealthCaseAmount = 50
Map = "fruit01_map"
Theme = "Fruit"
-
+
-- Hog Solo
AddTeam(teamA.name, teamA.color, "Bone", "Island", "HillBilly", "cm_birdy")
hero.gear = AddHog(hero.name, 0, 100, "war_desertgrenadier1")
@@ -145,27 +145,20 @@
yellowArmy[i].gear = AddHog(yellowArmy[i].name, 1, yellowArmy[i].health, yellowHats[math.random(1,4)])
AnimSetGearPosition(yellowArmy[i].gear, yellowArmy[i].x, yellowArmy[i].y)
end
-
+
initCheckpoint("fruit01")
AnimInit()
- AnimationSetup()
+ AnimationSetup()
end
function onGameStart()
AnimWait(hero.gear, 3000)
FollowGear(hero.gear)
-
+
AddEvent(onHeroDeath, {hero.gear}, heroDeath, {hero.gear}, 0)
AddEvent(onHeroSelect, {hero.gear}, heroSelect, {hero.gear}, 0)
-
- -- Hog Solo weapons
- AddAmmo(hero.gear, amRope, 2)
- AddAmmo(hero.gear, amBazooka, 3)
- AddAmmo(hero.gear, amParachute, 1)
- AddAmmo(hero.gear, amGrenade, 6)
- AddAmmo(hero.gear, amDEagle, 4)
- AddAmmo(hero.gear, amSkip, 100)
+
-- Green team weapons
local greenArmy = { green1, green2 }
for i=1,2 do
@@ -174,8 +167,8 @@
AddAmmo(greenArmy[i].gear, amBazooka, 10)
AddAmmo(greenArmy[i].gear, amGrenade, 7)
AddAmmo(greenArmy[i].gear, amFirePunch, 2)
- AddAmmo(greenArmy[i].gear, amDrill, 3)
- AddAmmo(greenArmy[i].gear, amSwitch, 2)
+ AddAmmo(greenArmy[i].gear, amDrill, 3)
+ AddAmmo(greenArmy[i].gear, amSwitch, 2)
AddAmmo(greenArmy[i].gear, amSkip, 100)
end
-- Yellow team weapons
@@ -184,21 +177,21 @@
AddAmmo(yellow1.gear, amBazooka, 10)
AddAmmo(yellow1.gear, amGrenade, 10)
AddAmmo(yellow1.gear, amFirePunch, 5)
- AddAmmo(yellow1.gear, amDrill, 3)
- AddAmmo(yellow1.gear, amBee, 1)
+ AddAmmo(yellow1.gear, amDrill, 3)
+ AddAmmo(yellow1.gear, amBee, 1)
AddAmmo(yellow1.gear, amMortar, 3)
AddAmmo(yellow1.gear, amDEagle, 4)
- AddAmmo(yellow1.gear, amDynamite, 1)
+ AddAmmo(yellow1.gear, amDynamite, 1)
AddAmmo(yellow1.gear, amSwitch, 100)
for i=3,7 do
HideHog(yellowArmy[i].gear)
end
HideHog(green1.bot)
-
+
-- crates
SpawnHealthCrate(health1X, health1Y)
SpawnAmmoCrate(crateWMX, crateWMY, amWatermelon)
-
+
AddAnim(dialog01)
SendHealthStatsOff()
end
@@ -208,6 +201,8 @@
TurnTimeLeft = 0
elseif not heroPlayedFirstTurn and CurrentHedgehog == hero.gear and startBattleCalled then
heroPlayedFirstTurn = true
+ elseif not heroPlayedFirstTurn and CurrentHedgehog == green1.gear then
+ TurnTimeLeft = 0
else
if chooseToBattle then
if CurrentHedgehog == green1.gear then
@@ -244,7 +239,7 @@
function onPrecise()
if GameTime > 3000 then
- SetAnimSkip(true)
+ SetAnimSkip(true)
end
end
@@ -337,7 +332,7 @@
-- add stats
saveVariables()
SendStat(siGameResult, loc("Green Bananas won!"))
- SendStat(siCustomAchievement, loc("You have eliminated all the visible enemy hogs!"))
+ SendStat(siCustomAchievement, loc("You have eliminated all visible enemy hedgehogs!"))
SendStat(siPlayerKills,'1',teamA.name)
SendStat(siPlayerKills,'1',teamB.name)
SendStat(siPlayerKills,'0',teamC.name)
@@ -348,7 +343,7 @@
-- add stats
saveVariables()
SendStat(siGameResult, loc("Hog Solo escaped successfully!"))
- SendStat(siCustomAchievement, loc("You have reached the flying area successfully!"))
+ SendStat(siCustomAchievement, loc("You have reached the take-off area successfully!"))
SendStat(siPlayerKills,'1',teamA.name)
SendStat(siPlayerKills,'0',teamB.name)
SendStat(siPlayerKills,'0',teamC.name)
@@ -359,7 +354,7 @@
TurnTimeLeft = 0
FollowGear(hero.gear)
if GetX(hero.gear) < hero.x then
- chooseToBattle = true
+ chooseToBattle = true
AddEvent(onGreen1Death, {green1.gear}, green1Death, {green1.gear}, 0)
AddEvent(onBattleWin, {hero.gear}, battleWin, {hero.gear}, 0)
AddAnim(dialog02)
@@ -392,7 +387,7 @@
-- DIALOG 01 - Start, Captain Lime talks explains to Hog Solo
AddSkipFunction(dialog01, Skipanim, {dialog01})
table.insert(dialog01, {func = AnimWait, args = {hero.gear, 3000}})
- table.insert(dialog01, {func = AnimCaption, args = {hero.gear, loc("Somewhere in the Planet of Fruits a terrible war is about to begin..."), 5000}})
+ table.insert(dialog01, {func = AnimCaption, args = {hero.gear, loc("Somewhere on the Planet of Fruits a terrible war is about to begin..."), 5000}})
table.insert(dialog01, {func = AnimSay, args = {hero.gear, loc("I was told that as the leader of the king's guard, no one knows this world better than you!"), SAY_SAY, 5000}})
table.insert(dialog01, {func = AnimSay, args = {hero.gear, loc("So, I kindly ask for your help"), SAY_SAY, 3000}})
table.insert(dialog01, {func = AnimWait, args = {green1.gear, 2000}})
@@ -405,18 +400,19 @@
table.insert(dialog01, {func = AnimWait, args = {hero.gear, 500}})
table.insert(dialog01, {func = ShowMission, args = {missionName, loc("Ready for Battle?"), loc("Walk left if you want to join Captain Lime or right if you want to decline his offer"), 1, 7000}})
table.insert(dialog01, {func = AnimSwitchHog, args = {hero.gear}})
- -- DIALOG 02 - Hero selects to fight
+ -- DIALOG 02 - Hero selects to fight
AddSkipFunction(dialog02, Skipanim, {dialog02})
table.insert(dialog02, {func = AnimWait, args = {green1.gear, 3000}})
table.insert(dialog02, {func = AnimSay, args = {green1.gear, loc("You choose well Hog Solo!"), SAY_SAY, 3000}})
table.insert(dialog02, {func = AnimSay, args = {green1.gear, loc("I have only 3 hogs available and they are all cadets"), SAY_SAY, 4000}})
- table.insert(dialog02, {func = AnimSay, args = {green1.gear, loc("As more experienced I want you to lead them to the battle"), SAY_SAY, 4000}})
- table.insert(dialog02, {func = AnimSay, args = {green1.gear, loc("I of cource will observe the battle and intervene if necessary"), SAY_SAY, 5000}})
- table.insert(dialog02, {func = AnimWait, args = {hero.gear, 5000}})
- table.insert(dialog02, {func = AnimSay, args = {hero.gear, loc("No problem Captain! The enemies aren't many anyway, it is going to be easy!"), SAY_SAY, 5000}})
- table.insert(dialog02, {func = AnimWait, args = {green1.gear, 5000}})
- table.insert(dialog02, {func = AnimSay, args = {green1.gear, loc("Don't be fool son, they'll be more"), SAY_SAY, 3000}})
- table.insert(dialog02, {func = AnimSay, args = {green1.gear, loc("Try to be smart and eliminate them quickly. This way you might scare the rest!"), SAY_SAY, 5000}})
+ table.insert(dialog02, {func = AnimSay, args = {green1.gear, loc("As you are more experienced, I want you to lead them to the battle"), SAY_SAY, 4000}})
+ table.insert(dialog02, {func = AnimSay, args = {green1.gear, loc("I of course will observe the battle and intervene if necessary"), SAY_SAY, 5000}})
+ table.insert(dialog02, {func = AnimWait, args = {hero.gear, 4500}})
+ table.insert(dialog02, {func = AnimSay, args = {hero.gear, loc("No problem Captain!"), SAY_SAY, 2000}})
+ table.insert(dialog02, {func = AnimSay, args = {hero.gear, loc("The enemies aren't many anyway, it is going to be easy!"), SAY_SAY, 1}})
+ table.insert(dialog02, {func = AnimWait, args = {green1.gear, 9000}})
+ table.insert(dialog02, {func = AnimSay, args = {green1.gear, loc("Don't be foolish son, there will be more"), SAY_SAY, 2000}})
+ table.insert(dialog02, {func = AnimSay, args = {green1.gear, loc("Try to be smart and eliminate them quickly. This way you might scare off the rest!"), SAY_SAY, 5000}})
table.insert(dialog02, {func = AnimWait, args = {hero.gear, 5000}})
table.insert(dialog02, {func = startBattle, args = {hero.gear}})
-- DIALOG 03 - Hero selects to flee
@@ -424,8 +420,8 @@
table.insert(dialog03, {func = AnimWait, args = {green1.gear, 3000}})
table.insert(dialog03, {func = AnimSay, args = {green1.gear, loc("Too bad... Then you should really leave!"), SAY_SAY, 3000}})
table.insert(dialog03, {func = AnimSay, args = {green1.gear, loc("Things are going to get messy around here"), SAY_SAY, 3000}})
- table.insert(dialog03, {func = AnimSay, args = {green1.gear, loc("Also, you should know that the only place that you can fly would be the most left part of the map"), SAY_SAY, 5000}})
- table.insert(dialog03, {func = AnimSay, args = {green1.gear, loc("All the other places are protected by our anti flying weapons"), SAY_SAY, 4000}})
+ table.insert(dialog03, {func = AnimSay, args = {green1.gear, loc("Also, you should know that the only place where you can fly is the left-most part of this area"), SAY_SAY, 5000}})
+ table.insert(dialog03, {func = AnimSay, args = {green1.gear, loc("All the other places are protected by our flight-inhibiting weapons"), SAY_SAY, 4000}})
table.insert(dialog03, {func = AnimSay, args = {green1.gear, loc("Now go and don't waste more of my time you coward..."), SAY_SAY, 4000}})
table.insert(dialog03, {func = AnimWait, args = {hero.gear, 5000}})
table.insert(dialog03, {func = startBattle, args = {hero.gear}})
@@ -434,6 +430,13 @@
------------- OTHER FUNCTIONS ---------------
function startBattle()
+ -- Hog Solo weapons
+ AddAmmo(hero.gear, amRope, 2)
+ AddAmmo(hero.gear, amBazooka, 3)
+ AddAmmo(hero.gear, amParachute, 1)
+ AddAmmo(hero.gear, amGrenade, 6)
+ AddAmmo(hero.gear, amDEagle, 4)
+ AddAmmo(hero.gear, amSkip, 100)
RestoreHog(green1.bot)
DeleteGear(green1.human)
green1.gear = green1.bot
@@ -443,18 +446,18 @@
function gameLost()
if chooseToBattle then
- SendStat(siGameResult, loc("Green Bananas lost, try again!"))
+ SendStat(siGameResult, loc("The Green Bananas lost, try again!"))
SendStat(siCustomAchievement, loc("You have to eliminate all the visible enemies"))
SendStat(siCustomAchievement, loc("5 additional enemies will be spawned during the game"))
- SendStat(siCustomAchievement, loc("You are controlling all the active ally units"))
+ SendStat(siCustomAchievement, loc("You are in control of all the active ally units"))
SendStat(siCustomAchievement, loc("The ally units share their ammo"))
SendStat(siCustomAchievement, loc("Try to keep as many allies alive as possible"))
else
SendStat(siGameResult, loc("Hog Solo couldn't escape, try again!"))
- SendStat(siCustomAchievement, loc("You have to get to the most left land and remove any enemy hog from there"))
+ SendStat(siCustomAchievement, loc("You have to get to the left-most land and remove any enemy hog from there"))
SendStat(siCustomAchievement, loc("You will play every 3 turns"))
SendStat(siCustomAchievement, loc("Green hogs won't intenionally hurt you"))
- end
+ end
SendStat(siPlayerKills,'1',teamC.name)
SendStat(siPlayerKills,'0',teamA.name)
SendStat(siPlayerKills,'0',teamB.name)
@@ -464,7 +467,7 @@
function getNextWave()
if TotalRounds == 4 then
RestoreHog(yellowArmy[3].gear)
- AnimCaption(hero.gear, loc("Next wave in 3 turns"), 5000)
+ AnimCaption(hero.gear, loc("Next wave in 3 turns"), 5000)
if not chooseToBattle and not GetHealth(yellow1.gear) then
SetGearPosition(yellowArmy[3].gear, yellow1.x, yellow1.y)
end
@@ -478,7 +481,7 @@
elseif TotalRounds == 10 then
RestoreHog(yellowArmy[6].gear)
RestoreHog(yellowArmy[7].gear)
- if not chooseToBattle and not GetHealth(yellow1.gear) and not GetHealth(yellowArmy[3].gear)
+ if not chooseToBattle and not GetHealth(yellow1.gear) and not GetHealth(yellowArmy[3].gear)
and not GetHealth(yellowArmy[4].gear) then
SetGearPosition(yellowArmy[6].gear, yellow1.x, yellow1.y)
end
--- a/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/fruit02.lua Sat Dec 14 21:16:20 2013 +0400
+++ b/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/fruit02.lua Tue Dec 17 00:02:52 2013 +0400
@@ -14,6 +14,7 @@
local tookPartInBattle = false
local previousHog = -1
local checkPointReached = 1 -- 1 is normal spawn
+local permitCaptainLimeDeath = false
-- dialogs
local dialog01 = {}
local dialog02 = {}
@@ -21,10 +22,10 @@
local dialog04 = {}
-- mission objectives
local goals = {
- [dialog01] = {missionName, loc("Exploring the tunnel"), loc("With the help of the other hogs search for the device").."|"..loc("Hog Solo has to reach the last crates"), 1, 4000},
- [dialog02] = {missionName, loc("Exploring the tunnel"), loc("Explore the tunnel with the other hogs and search for the device").."|"..loc("Hog Solo has to reach the last crates"), 1, 4000},
+ [dialog01] = {missionName, loc("Exploring the tunnel"), loc("Search for the device with the help of the other hedgehogs ").."|"..loc("Hog Solo has to reach the last crates"), 1, 4000},
+ [dialog02] = {missionName, loc("Exploring the tunnel"), loc("Explore the tunnel with the other hedgehogs and search for the device").."|"..loc("Hog Solo has to reach the last crates"), 1, 4000},
[dialog03] = {missionName, loc("Return to the Surface"), loc("Go to the surface!").."|"..loc("Attack Captain Lime before he attacks back"), 1, 4000},
- [dialog04] = {missionName, loc("Return to the Surface"), loc("Go to the surface!").."|"..loc("Attack the assasins before they attack back"), 1, 4000},
+ [dialog04] = {missionName, loc("Return to the Surface"), loc("Go to the surface!").."|"..loc("Attack the assassins before they attack back"), 1, 4000},
}
-- crates
local eagleCrate = {name = amDEagle, x = 1680, y = 1650}
@@ -80,7 +81,7 @@
SuddenDeathTurns = 200
Map = "fruit02_map"
Theme = "Fruit"
-
+
-- load checkpoints, problem getting the campaign variable
local health = 100
checkPointReached = initCheckpoint("fruit02")
@@ -88,12 +89,12 @@
loadHogsPositions()
health = tonumber(GetCampaignVar("HeroHealth"))
end
-
+
-- Hog Solo and Green Bananas
AddTeam(teamA.name, teamA.color, "Bone", "Island", "HillBilly", "cm_birdy")
hero.gear = AddHog(hero.name, 0, health, "war_desertgrenadier1")
AnimSetGearPosition(hero.gear, hero.x, hero.y)
- HogTurnLeft(hero.gear, true)
+ HogTurnLeft(hero.gear, true)
green2.gear = AddHog(green2.name, 0, 100, "war_britmedic")
AnimSetGearPosition(green2.gear, green2.x, green2.y)
HogTurnLeft(green2.gear, true)
@@ -116,20 +117,20 @@
end
AnimInit()
- AnimationSetup()
+ AnimationSetup()
end
function onGameStart()
AnimWait(hero.gear, 3000)
FollowGear(hero.gear)
-
+
if GetCampaignVar("Fruit01JoinedBattle") and GetCampaignVar("Fruit01JoinedBattle") == "true" then
tookPartInBattle = true
end
-
+
AddEvent(onHeroDeath, {hero.gear}, heroDeath, {hero.gear}, 0)
AddEvent(onDeviceCrates, {hero.gear}, deviceCrates, {hero.gear}, 0)
-
+
-- Hog Solo and GB weapons
AddAmmo(hero.gear, amSwitch, 100)
-- Captain Lime weapons
@@ -144,7 +145,7 @@
for i=1,table.getn(redHedgehogs) do
HideHog(redHedgehogs[i].gear)
end
-
+
-- explosives
-- I wanted to use FindPlace but doesn't accept height values...
local x1 = 950
@@ -165,7 +166,7 @@
x2 = x2 - 25
end
AddGear(3128, 1680, gtExplosives, 0, 0, 0, 0)
-
+
--mines
AddGear(3135, 1680, gtMine, 0, 0, 0, 0)
AddGear(3145, 1680, gtMine, 0, 0, 0, 0)
@@ -176,7 +177,7 @@
AddGear(3105, 1680, gtMine, 0, 0, 0, 0)
AddGear(3095, 1680, gtMine, 0, 0, 0, 0)
AddGear(3085, 1680, gtMine, 0, 0, 0, 0)
- AddGear(3075, 1680, gtMine, 0, 0, 0, 0)
+ AddGear(3075, 1680, gtMine, 0, 0, 0, 0)
if checkPointReached == 1 then
AddAmmo(hero.gear, amFirePunch, 3)
@@ -198,20 +199,20 @@
AddEvent(onCheckPoint3, {hero.gear}, checkPoint3, {hero.gear}, 0)
AddEvent(onCheckPoint4, {hero.gear}, checkPoint4, {hero.gear}, 0)
elseif checkPointReached == 4 then
- AddEvent(onCheckPoint4, {hero.gear}, checkPoint4, {hero.gear}, 0)
+ AddEvent(onCheckPoint4, {hero.gear}, checkPoint4, {hero.gear}, 0)
elseif checkPointReached == 5 then
-- EMPTY
end
if checkPointReached ~= 1 then
loadWeapons()
end
-
+
-- girders
if checkPointReached > 1 then
PlaceGirder(1580, 875, 4)
PlaceGirder(1800, 875, 4)
end
-
+
-- place crates
if checkPointReached < 2 then
SpawnAmmoCrate(girderCrate.x, girderCrate.y, girderCrate.name)
@@ -224,9 +225,9 @@
if tookPartInBattle then
SpawnAmmoCrate(weaponCrate.x, weaponCrate.y, amWatermelon)
else
- SpawnAmmoCrate(weaponCrate.x, weaponCrate.y, amSniperRifle)
+ SpawnAmmoCrate(weaponCrate.x, weaponCrate.y, amSniperRifle)
end
-
+
SendHealthStatsOff()
end
@@ -266,6 +267,17 @@
CheckEvents()
end
+function onGameTick20()
+ if not permitCaptainLimeDeath and not GetHealth(green1.gear) then
+ -- game ends with the according stat messages
+ heroDeath()
+ permitCaptainLimeDeath = true
+ end
+ if CurrentHedgehog and GetY(CurrentHedgehog) > 1350 then
+ SetWind(-40)
+ end
+end
+
function onGearDelete(gear)
if gear == hero.gear then
hero.dead = true
@@ -274,6 +286,14 @@
end
end
+function onGearDamage(gear, damage)
+ if GetGearType(gear) == gtCase then
+ -- in this mode every crate is essential in order to complete the mission
+ -- destroying a crate ends the game
+ heroDeath()
+ end
+end
+
function onAmmoStoreInit()
SetAmmo(amDEagle, 0, 0, 0, 6)
SetAmmo(amGirder, 0, 0, 0, 2)
@@ -289,7 +309,7 @@
function onPrecise()
if GameTime > 3000 then
- SetAnimSkip(true)
+ SetAnimSkip(true)
end
end
@@ -336,7 +356,7 @@
function onCheckPoint1(gear)
-- before barrel jump
- if not hero.dead and GetX(hero.gear) > 2850 and GetX(hero.gear) < 2945
+ if not hero.dead and GetX(hero.gear) > 2850 and GetX(hero.gear) < 2945
and GetY(hero.gear) > 808 and GetY(hero.gear) < 852 and not isHeroAtWrongPlace() then
return true
end
@@ -355,7 +375,7 @@
function onCheckPoint3(gear)
-- after barrel jump
- if ((GetHealth(green2.gear) and GetY(green2.gear) > 1550 and GetX(green2.gear) < 3000 and StoppedGear(green2.gear))
+ if ((GetHealth(green2.gear) and GetY(green2.gear) > 1550 and GetX(green2.gear) < 3000 and StoppedGear(green2.gear))
or (GetHealth(green3.gear) and GetY(green3.gear) > 1550 and GetX(green3.gear) < 3000 and StoppedGear(green2.gear)))
and not isHeroAtWrongPlace() then
return true
@@ -365,7 +385,7 @@
function onCheckPoint4(gear)
-- hero at crates
- if not hero.dead and GetX(hero.gear) > 1288 and GetX(hero.gear) < 1420
+ if not hero.dead and GetX(hero.gear) > 1288 and GetX(hero.gear) < 1420
and GetY(hero.gear) > 1840 and not isHeroAtWrongPlace() then
return true
end
@@ -373,18 +393,24 @@
end
-------------- ACTIONS ------------------
+ended = false
function heroDeath(gear)
- SendStat(siGameResult, loc("Hog Solo lost, try again!"))
- SendStat(siCustomAchievement, loc("To win the game Hog Solo has to get the bottom crates and come back to the surface"))
- SendStat(siCustomAchievement, loc("You can use the other 2 hogs to assist you"))
- if tookPartInBattle then
- SendStat(siCustomAchievement, loc("You'll have to eliminate the Strawberry Assasins at the end"))
- else
- SendStat(siCustomAchievement, loc("You'll have to eliminate Captain Lime at the end"))
+ if not ended then
+ SendStat(siGameResult, loc("Hog Solo lost, try again!"))
+ SendStat(siCustomAchievement, loc("To win the game, Hog Solo has to get the bottom crates and come back to the surface"))
+ SendStat(siCustomAchievement, loc("You can use the other 2 hogs to assist you"))
+ SendStat(siCustomAchievement, loc("Do not destroy the crates"))
+ if tookPartInBattle then
+ SendStat(siCustomAchievement, loc("You'll have to eliminate the Strawberry Assassins at the end"))
+ else
+ SendStat(siCustomAchievement, loc("You'll have to eliminate Captain Lime at the end"))
+ SendStat(siCustomAchievement, loc("Don't eliminate Captain Lime before collecting the last crate!"))
+ end
+ SendStat(siPlayerKills,'0',teamA.name)
+ EndGame()
+ ended = true
end
- SendStat(siPlayerKills,'0',teamA.name)
- EndGame()
end
function deviceCrates(gear)
@@ -397,6 +423,8 @@
end
AddAnim(dialog04)
end
+ -- needs to be set to true for both plots
+ permitCaptainLimeDeath = true
AddAmmo(hero.gear, amSwitch, 0)
AddEvent(onSurface, {hero.gear}, surface, {hero.gear}, 0)
end
@@ -474,17 +502,17 @@
-- DIALOG 01 - Start, Captain Lime helps Hog Solo because he took part in the battle
AddSkipFunction(dialog01, Skipanim, {dialog01})
table.insert(dialog01, {func = AnimWait, args = {hero.gear, 3000}})
- table.insert(dialog01, {func = AnimCaption, args = {hero.gear, loc("Somewhere else in the planet of fruits Captain Lime helps Hog Solo..."), 5000}})
+ table.insert(dialog01, {func = AnimCaption, args = {hero.gear, loc("Somewhere else on the planet of fruits Captain Lime helps Hog Solo..."), 5000}})
table.insert(dialog01, {func = AnimSay, args = {green1.gear, loc("You fought bravely and you helped us win this battle!"), SAY_SAY, 5000}})
table.insert(dialog01, {func = AnimSay, args = {green1.gear, loc("So, as promised I have brought you where I think that the device you are looking for is hidden."), SAY_SAY, 7000}})
- table.insert(dialog01, {func = AnimSay, args = {green1.gear, loc("I know that your resources are low due to the battle but I'll send with you two of my best hogs to assist you."), SAY_SAY, 7000}})
+ table.insert(dialog01, {func = AnimSay, args = {green1.gear, loc("I know that your resources are low due to the battle but I'll send two of my best hogs to assist you."), SAY_SAY, 7000}})
table.insert(dialog01, {func = AnimSay, args = {green1.gear, loc("Good luck!"), SAY_SAY, 2000}})
table.insert(dialog01, {func = AnimWait, args = {hero.gear, 500}})
table.insert(dialog01, {func = AnimSwitchHog, args = {hero.gear}})
-- DIALOG02 - Start, Hog Solo escaped from the previous battle
AddSkipFunction(dialog02, Skipanim, {dialog02})
table.insert(dialog02, {func = AnimWait, args = {hero.gear, 3000}})
- table.insert(dialog02, {func = AnimCaption, args = {hero.gear, loc("Somewhere else in the planet of fruits Hog Solo gets closer to the device..."), 5000}})
+ table.insert(dialog02, {func = AnimCaption, args = {hero.gear, loc("Somewhere else on the planet of fruits Hog Solo gets closer to the device..."), 5000}})
table.insert(dialog02, {func = AnimSay, args = {green1.gear, loc("You are the one who fled! So, you are alive..."), SAY_SAY, 4000}})
table.insert(dialog02, {func = AnimSay, args = {green1.gear, loc("I'm still low on hogs. If you are not afraid I could use a set of extra hands"), SAY_SAY, 4000}})
table.insert(dialog02, {func = AnimWait, args = {hero.gear, 8000}})
@@ -500,15 +528,15 @@
AddSkipFunction(dialog03, Skipanim, {dialog03})
table.insert(dialog03, {func = AnimWait, args = {hero.gear, 4000}})
table.insert(dialog03, {func = FollowGear, args = {hero.gear}})
- table.insert(dialog03, {func = AnimSay, args = {hero.gear, loc("Hoo Ray! I've found it, now I have to get back to Captain Lime!"), SAY_SAY, 4000}})
+ table.insert(dialog03, {func = AnimSay, args = {hero.gear, loc("Hoorah! I've found it, now I have to get back to Captain Lime!"), SAY_SAY, 4000}})
table.insert(dialog03, {func = AnimWait, args = {green1.gear, 4000}})
- table.insert(dialog03, {func = AnimSay, args = {green1.gear, loc("This Hog Solo is so naive! I am gonna shoot him when he returns and keep his device for me!"), SAY_THINK, 4000}})
+ table.insert(dialog03, {func = AnimSay, args = {green1.gear, loc("This Hog Solo is so naive! When he returns I'll shoot him and keep that device for myself!"), SAY_THINK, 4000}})
table.insert(dialog03, {func = goToThesurface, args = {hero.gear}})
-- DIALOG04 - At crates, hero learns about the assasins ambush
AddSkipFunction(dialog04, Skipanim, {dialog04})
table.insert(dialog04, {func = AnimWait, args = {hero.gear, 4000}})
table.insert(dialog04, {func = FollowGear, args = {hero.gear}})
- table.insert(dialog04, {func = AnimSay, args = {hero.gear, loc("Hoo Ray! I've found it, now I have to get back to Captain Lime!"), SAY_SAY, 4000}})
+ table.insert(dialog04, {func = AnimSay, args = {hero.gear, loc("Hoorah! I've found it, now I have to get back to Captain Lime!"), SAY_SAY, 4000}})
table.insert(dialog04, {func = AnimWait, args = {redHedgehogs[1].gear, 4000}})
table.insert(dialog04, {func = AnimSay, args = {redHedgehogs[1].gear, loc("We have spotted the enemy! We'll attack when the enemies start gathering!"), SAY_THINK, 4000}})
table.insert(dialog04, {func = goToThesurface, args = {hero.gear}})
@@ -521,11 +549,7 @@
end
function wind()
- if GetY(CurrentHedgehog) > 1350 then
- SetWind(-40)
- else
- SetWind(math.random(-100,100))
- end
+ SetWind(math.random(-100,100))
end
function saveHogsPositions()
@@ -533,9 +557,13 @@
positions = GetX(hero.gear)..","..GetY(hero.gear)
if GetHealth(green2.gear) then
positions = positions..","..GetX(green2.gear)..","..GetY(green2.gear)
+ else
+ positions = positions..",1,1"
end
if GetHealth(green3.gear) then
positions = positions..","..GetX(green3.gear)..","..GetY(green3.gear)
+ else
+ positions = positions..",1,1"
end
SaveCampaignVar("HogsPosition", positions)
end
@@ -584,25 +612,6 @@
return false
end
--- splits number by delimiter
-function split(s, delimiter)
- local res = {}
- local first = ""
- for i=1,s:len() do
- if s:sub(1,1) == delimiter then
- table.insert(res, tonumber(first))
- first = ""
- else
- first = first..s:sub(1,1)
- end
- s = s:sub(2)
- end
- if first:len() > 0 then
- table.insert(res, tonumber(first))
- end
- return res
-end
-
function saveCheckPointLocal(cpoint)
AnimCaption(hero.gear, loc("Checkpoint reached!"), 3000)
saveCheckpoint(cpoint)
--- a/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/fruit03.lua Sat Dec 14 21:16:20 2013 +0400
+++ b/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/fruit03.lua Tue Dec 17 00:02:52 2013 +0400
@@ -19,7 +19,7 @@
loc("You'll get an extra Sniper Rifle every time you kill an enemy hog with a limit of max 4 rifles").."|"..
loc("You'll get an extra Teleport every time you kill an enemy hog with a limit of max 2 teleports").."|"..
loc("The first turn will last 25 sec and every other turn 15 sec").."|"..
- loc("If you skip the game your time left will be added to your next turn").."|"..
+ loc("If you skip a turn then the turn time left will be added to your next turn").."|"..
loc("Some parts of the land are indestructible")
-- dialogs
local dialog01 = {}
@@ -79,7 +79,7 @@
Explosives = 0
Map = "fruit03_map"
Theme = "Fruit"
-
+
-- Hog Solo
AddTeam(teamA.name, teamA.color, "Bone", "Island", "HillBilly", "cm_birdy")
hero.gear = AddHog(hero.name, 0, 100, "war_desertgrenadier1")
@@ -91,15 +91,15 @@
for i=1,table.getn(enemiesEven) do
enemiesEven[i].gear = AddHog(enemiesEven[i].name, 1, 100, hats[math.random(1,table.getn(hats))])
AnimSetGearPosition(enemiesEven[i].gear, enemiesEven[i].x, enemiesEven[i].y)
- end
+ end
AddTeam(teamB.name, teamB.color, "Bone", "Island", "HillBilly", "cm_birdy")
for i=1,table.getn(enemiesOdd) do
enemiesOdd[i].gear = AddHog(enemiesOdd[i].name, 1, 100, hats[math.random(1,table.getn(hats))])
AnimSetGearPosition(enemiesOdd[i].gear, enemiesOdd[i].x, enemiesOdd[i].y)
end
-
+
initCheckpoint("fruit03")
-
+
AnimInit()
AnimationSetup()
end
@@ -108,10 +108,10 @@
AnimWait(hero.gear, 3000)
FollowGear(hero.gear)
ShowMission(missionName, loc("Challenge Objectives"), challengeObjectives, -amSkip, 0)
-
+
AddEvent(onHeroDeath, {hero.gear}, heroDeath, {hero.gear}, 0)
AddEvent(onHeroWin, {hero.gear}, heroWin, {hero.gear}, 0)
-
+
--hero ammo
AddAmmo(hero.gear, amTeleport, 2)
AddAmmo(hero.gear, amSniperRifle, 2)
@@ -125,7 +125,7 @@
AddAmmo(enemiesEven[1].gear, amSniperRifle, 100)
AddAmmo(enemiesEven[1].gear, amWatermelon, 1)
AddAmmo(enemiesEven[1].gear, amGrenade, 5)
-
+
SendHealthStatsOff()
AddAnim(dialog01)
end
@@ -171,7 +171,7 @@
function onPrecise()
if GameTime > 3000 then
- SetAnimSkip(true)
+ SetAnimSkip(true)
end
end
@@ -203,8 +203,8 @@
function heroDeath(gear)
SendStat(siGameResult, loc("Hog Solo lost, try again!"))
- SendStat(siCustomAchievement, loc("You have to eliminate all the enemies"))
- SendStat(siCustomAchievement, loc("Read the Challenge Objectives from within the mission for more details"))
+ SendStat(siCustomAchievement, loc("You have to eliminate all the enemies"))
+ SendStat(siCustomAchievement, loc("Read the Challenge Objectives from within the mission for more details"))
SendStat(siPlayerKills,'1',teamB.name)
SendStat(siPlayerKills,'0',teamA.name)
EndGame()
@@ -213,8 +213,8 @@
function heroWin(gear)
saveBonus(2, 1)
SendStat(siGameResult, loc("Congratulations, you won!"))
- SendStat(siCustomAchievement, loc("You complete the mission in "..TotalRounds.." rounds"))
- SendStat(siCustomAchievement, loc("You will gain some extra ammo from the crates the next time you play the \"Getting to the device\" mission"))
+ SendStat(siCustomAchievement, loc("You complete the mission in "..TotalRounds.." rounds"))
+ SendStat(siCustomAchievement, loc("You will gain some extra ammo from the crates the next time you play the \"Getting to the device\" mission"))
SendStat(siPlayerKills,'1',teamA.name)
EndGame()
end
@@ -243,7 +243,7 @@
table.insert(dialog01, {func = AnimCaption, args = {hero.gear, loc("If you skip the game your time left will be added to your next turn"), 5000}})
table.insert(dialog01, {func = AnimCaption, args = {hero.gear, loc("Some parts of the land are indestructible"), 5000}})
table.insert(dialog01, {func = AnimWait, args = {hero.gear, 500}})
- table.insert(dialog01, {func = startBattle, args = {hero.gear}})
+ table.insert(dialog01, {func = startBattle, args = {hero.gear}})
end
------------------ Other Functions -------------------
--- a/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/global_functions.lua Sat Dec 14 21:16:20 2013 +0400
+++ b/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/global_functions.lua Tue Dec 17 00:02:52 2013 +0400
@@ -5,9 +5,10 @@
if tonumber(GetCampaignVar("MainMissionsStatus")) then
status = GetCampaignVar("MainMissionsStatus")
end
- if i == 1 then
- status = "1"..status:sub(planetNum+1)
- elseif i == status:len() then
+
+ if planetNum == 1 then
+ status = "1"..status:sub(2)
+ elseif planetNum == status:len() then
status = status:sub(1,planetNum-1).."1"
else
status = status:sub(1,planetNum-1).."1"..status:sub(planetNum+1)
@@ -60,6 +61,7 @@
if GetCampaignVar("CurrentMission") ~= mission then
SaveCampaignVar("CurrentMission", mission)
SaveCampaignVar("CurrentMissionCheckpoint", 1)
+ SaveCampaignVar("HogsPosition", "")
else
checkPoint = tonumber(GetCampaignVar("currentMissionCheckpoint"))
end
@@ -79,9 +81,9 @@
if tonumber(GetCampaignVar("SideMissionsBonuses")) then
bonus = GetCampaignVar("SideMissionsBonuses")
end
- if i == 1 then
- bonus = times..bonus:sub(index+1)
- elseif i == bonus:len() then
+ if index == 1 then
+ bonus = times..bonus:sub(2)
+ elseif index == bonus:len() then
bonus = bonus:sub(1,index-1)..times
else
bonus = bonus:sub(1,index-1)..times..bonus:sub(index+1)
@@ -97,3 +99,28 @@
end
return bonus
end
+
+-- splits number by delimiter
+function split(s, delimiter)
+ local res = {}
+ local first = ""
+ for i=1,s:len() do
+ if s:sub(1,1) == delimiter then
+ table.insert(res, tonumber(first))
+ first = ""
+ else
+ first = first..s:sub(1,1)
+ end
+ s = s:sub(2)
+ end
+ if first:len() > 0 then
+ table.insert(res, tonumber(first))
+ end
+ return res
+end
+
+-- returns the distance of 2 gears
+function distance(gear1, gear2)
+ local dist = math.sqrt(math.pow((GetX(gear1) - GetX(gear2)),2) + math.pow((GetY(gear1) - GetY(gear2)),2))
+ return dist
+end
--- a/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/ice01.lua Sat Dec 14 21:16:20 2013 +0400
+++ b/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/ice01.lua Tue Dec 17 00:02:52 2013 +0400
@@ -24,7 +24,7 @@
-- mission objectives
local goals = {
[dialog01] = {missionName, loc("Getting ready"), loc("Collect the icegun and get the device part from Thanta"), 1, 4500},
- [dialog02] = {missionName, loc("Win"), loc("Congratulations, you got the part!"), 1, 3500},
+ [dialog02] = {missionName, loc("Win"), loc("Congratulations, you collected the device part!"), 1, 3500},
}
-- crates
local icegunY = 1950
@@ -90,7 +90,7 @@
Delay = 3
Map = "ice01_map"
Theme = "Snow"
-
+
-- get the check point
checkPointReached = initCheckpoint("ice01")
-- get hero health
@@ -98,15 +98,15 @@
if tonumber(GetCampaignVar("HeroHealth")) then
heroHealth = tonumber(GetCampaignVar("HeroHealth"))
end
-
+
if heroHealth ~= 100 then
heroHealth = heroHealth + 5
if heroHealth > 100 then
heroHealth = 100
end
- SaveCampaignVar("HeroHealth", heroHealth)
+ SaveCampaignVar("HeroHealth", heroHealth)
end
-
+
-- Hog Solo
AddTeam(teamC.name, teamC.color, "Bone", "Island", "HillBilly", "cm_birdy")
hero.gear = AddHog(hero.name, 0, heroHealth, "war_desertgrenadier1")
@@ -119,7 +119,7 @@
-- Frozen Bandits
AddTeam(teamB.name, teamB.color, "Bone", "Island", "HillBilly", "cm_birdy")
bandit1.gear = AddHog(bandit1.name, 1, 120, "Santa")
- AnimSetGearPosition(bandit1.gear, bandit1.x, bandit1.y)
+ AnimSetGearPosition(bandit1.gear, bandit1.x, bandit1.y)
HogTurnLeft(bandit1.gear, true)
bandit2.gear = AddHog(bandit2.name, 1, 100, "ushanka")
AnimSetGearPosition(bandit2.gear, bandit2.x, bandit2.y)
@@ -131,52 +131,52 @@
bandit5.gear = AddHog(bandit5.name, 1, 40, "Sniper")
AnimSetGearPosition(bandit5.gear, bandit5.x, bandit5.y)
HogTurnLeft(bandit5.gear, true)
-
+
if checkPointReached == 1 then
-- Start of the game
elseif checkPointReached == 2 then
iceGunTaken = true
AnimSetGearPosition(hero.gear, 840, 1650)
- elseif checkPointReached == 3 then
+ elseif checkPointReached == 3 then
iceGunTaken = true
heroAtFinalStep = true
heroVisitedAntiFlyArea = true
AnimSetGearPosition(hero.gear, 1450, 910)
end
-
+
AnimInit()
- AnimationSetup()
+ AnimationSetup()
end
function onGameStart()
AnimWait(hero.gear, 3000)
FollowGear(hero.gear)
-
+
-- Add mines
AddGear(1612, 940, gtMine, 0, 0, 0, 0)
AddGear(1622, 945, gtMine, 0, 0, 0, 0)
AddGear(1645, 950, gtMine, 0, 0, 0, 0)
AddGear(1655, 960, gtMine, 0, 0, 0, 0)
AddGear(1665, 965, gtMine, 0, 0, 0, 0)
-
+
AddGear(1800, 1000, gtMine, 0, 0, 0, 0)
AddGear(1810, 1005, gtMine, 0, 0, 0, 0)
AddGear(1820, 1010, gtMine, 0, 0, 0, 0)
AddGear(1830, 1015, gtMine, 0, 0, 0, 0)
AddGear(1840, 1020, gtMine, 0, 0, 0, 0)
-
+
AddGear(1900, 1020, gtMine, 0, 0, 0, 0)
AddGear(1910, 1020, gtMine, 0, 0, 0, 0)
AddGear(1920, 1020, gtMine, 0, 0, 0, 0)
AddGear(1930, 1030, gtMine, 0, 0, 0, 0)
AddGear(1940, 1040, gtMine, 0, 0, 0, 0)
-
+
AddGear(2130, 1110, gtMine, 0, 0, 0, 0)
AddGear(2140, 1120, gtMine, 0, 0, 0, 0)
AddGear(2180, 1120, gtMine, 0, 0, 0, 0)
AddGear(2200, 1130, gtMine, 0, 0, 0, 0)
AddGear(2210, 1130, gtMine, 0, 0, 0, 0)
-
+
local x=2300
local step=0
while x<3100 do
@@ -189,14 +189,15 @@
x = x + math.random(10,30)
end
end
-
+
AddEvent(onHeroDeath, {hero.gear}, heroDeath, {hero.gear}, 0)
AddEvent(onHeroFinalStep, {hero.gear}, heroFinalStep, {hero.gear}, 0)
AddEvent(onAntiFlyArea, {hero.gear}, antiFlyArea, {hero.gear}, 1)
+ AddEvent(onAntiFlyAreaVelocity, {hero.gear}, antiFlyAreaVelocity, {hero.gear}, 1)
AddEvent(onNonAntiFlyArea, {hero.gear}, nonAntiFlyArea, {hero.gear}, 1)
AddEvent(onThantaDeath, {bandit1.gear}, thantaDeath, {bandit1.gear}, 0)
AddEvent(onHeroWin, {hero.gear}, heroWin, {hero.gear}, 0)
-
+
AddAmmo(hero.gear, amJetpack, 99)
AddAmmo(bandit1.gear, amBazooka, 5)
AddAmmo(bandit2.gear, amBazooka, 4)
@@ -204,7 +205,9 @@
AddAmmo(bandit3.gear, amGrenade, 3)
AddAmmo(bandit4.gear, amBazooka, 5)
AddAmmo(bandit5.gear, amBazooka, 5)
-
+
+ goToThantaString = loc("Go to Thanta and get the device part!")
+
if checkPointReached == 1 then
AddAmmo(hero.gear, amBazooka, 1)
SpawnAmmoCrate(icegunX, icegunY, amIceGun)
@@ -213,12 +216,12 @@
AddAnim(dialog01)
elseif checkPointReached == 2 then
AddAmmo(hero.gear, amIceGun, 8)
- AnimCaption(hero.gear, loc("Go to Thanta and get the device part!"), 5000)
+ AnimCaption(hero.gear, goToThantaString, 5000)
elseif checkPointReached == 3 then
AddAmmo(hero.gear, amIceGun, 6)
- AnimCaption(hero.gear, loc("Go to Thanta and get the device part!"), 5000)
+ AnimCaption(hero.gear, goToThantaString, 5000)
end
-
+
SendHealthStatsOff()
end
@@ -229,7 +232,7 @@
TurnTimeLeft = 0
elseif not heroVisitedAntiFlyArea and CurrentHedgehog == hero.gear then
TurnTimeLeft = -1
- elseif not heroAtFinalStep and (CurrentHedgehog == bandit1.gear or CurrentHedgehog == bandit4.gear or CurrentHedgehog == bandit5.gear) then
+ elseif not heroAtFinalStep and (CurrentHedgehog == bandit1.gear or CurrentHedgehog == bandit4.gear or CurrentHedgehog == bandit5.gear) then
AnimSwitchHog(hero.gear)
TurnTimeLeft = 0
elseif heroAtFinalStep and (CurrentHedgehog == bandit2.gear or CurrentHedgehog == bandit3.gear) then
@@ -290,7 +293,7 @@
end
ExecuteAfterAnimations()
CheckEvents()
-
+
if GetEffect(bandit1.gear, heFrozen) > 256 and not bandit1.frozen then
bandit1.frozen = true
SetEffect(bandit1.gear, heFrozen, 9999999999)
@@ -322,7 +325,7 @@
function onPrecise()
if GameTime > 3000 then
- SetAnimSkip(true)
+ SetAnimSkip(true)
end
end
@@ -341,6 +344,13 @@
return false
end
+function onAntiFlyAreaVelocity(gear)
+ if not hero.dead and GetY(gear) < 1300 and GetX(gear) < 1190 then
+ return true
+ end
+ return false
+end
+
function onNonAntiFlyArea(gear)
if not hero.dead and (GetX(gear) < 860 and GetY(gear) > 1400) and heroAtAntiFlyArea then
return true
@@ -395,17 +405,20 @@
function antiFlyArea(gear)
heroAtAntiFlyArea = true
- if TurnTimeLeft < -1 then
- heroVisitedAntiFlyArea = true
- TurnTimeLeft = 0
+ if not heroVisitedAntiFlyArea then
+ TurnTimeLeft = 0
FollowGear(hero.gear)
- AddAmmo(hero.gear, amJetpack, 0)
- AnimSwitchHog(bandit1.gear)
+ AnimSwitchHog(bandit1.gear)
FollowGear(hero.gear)
TurnTimeLeft = 0
- else
- AddAmmo(hero.gear, amJetpack, 0)
end
+ AddAmmo(hero.gear, amJetpack, 0)
+ heroVisitedAntiFlyArea = true
+end
+
+function antiFlyAreaVelocity(gear)
+ dx, dy = GetGearVelocity(hero.gear)
+ SetGearVelocity(hero.gear, dx, math.max(dy, 0))
end
function nonAntiFlyArea(gear)
@@ -468,6 +481,8 @@
end
if anim == dialog02 then
actionsOnWin()
+ else
+ AnimSwitchHog(hero.gear)
end
end
@@ -475,12 +490,12 @@
-- DIALOG 01 - Start, welcome to moon
AddSkipFunction(dialog01, Skipanim, {dialog01})
table.insert(dialog01, {func = AnimWait, args = {hero.gear, 3000}})
- table.insert(dialog01, {func = AnimCaption, args = {hero.gear, loc("In the Ice Planet, where ice rules..."), 5000}})
- table.insert(dialog01, {func = AnimSay, args = {ally.gear, loc("Finaly you are here..."), SAY_SAY, 2000}})
+ table.insert(dialog01, {func = AnimCaption, args = {hero.gear, loc("On the Ice Planet, where ice rules..."), 5000}})
+ table.insert(dialog01, {func = AnimSay, args = {ally.gear, loc("Finally you are here..."), SAY_SAY, 2000}})
table.insert(dialog01, {func = AnimWait, args = {hero.gear, 2000}})
table.insert(dialog01, {func = AnimSay, args = {hero.gear, loc("Hi! Nice to meet you"), SAY_SAY, 3000}})
table.insert(dialog01, {func = AnimWait, args = {ally.gear, 2000}})
- table.insert(dialog01, {func = AnimSay, args = {ally.gear, loc("Listen carefuly! The bandit leader, Thanta, has recently found a very strange device"), SAY_SAY, 4000}})
+ table.insert(dialog01, {func = AnimSay, args = {ally.gear, loc("Listen carefully! The bandit leader, Thanta, has recently found a very strange device"), SAY_SAY, 4000}})
table.insert(dialog01, {func = AnimSay, args = {ally.gear, loc("He doesn't know it but this device is a part of the anti-gravity device"), SAY_SAY, 2500}})
table.insert(dialog01, {func = AnimWait, args = {hero.gear, 8000}})
table.insert(dialog01, {func = AnimSay, args = {hero.gear, loc("Nice, then I should get the part as soon as possible!"), SAY_SAY, 4000}})
@@ -492,20 +507,20 @@
-- DIALOG 02 - Hero got to Thant2
AddSkipFunction(dialog02, Skipanim, {dialog02})
table.insert(dialog02, {func = AnimWait, args = {hero.gear, 3000}})
- table.insert(dialog02, {func = AnimCaption, args = {hero.gear, loc("Congratulations, now you can take Thanta's part..."), 5000}})
+ table.insert(dialog02, {func = AnimCaption, args = {hero.gear, loc("Congratulations, now you can take Thanta's device part..."), 5000}})
table.insert(dialog02, {func = AnimSay, args = {bandit1.gear, loc("Oh! Please spare me. You can take all my treasures!"), SAY_SAY, 3000}})
table.insert(dialog02, {func = AnimWait, args = {hero.gear, 5000}})
table.insert(dialog02, {func = AnimSay, args = {hero.gear, loc("I just want the strange device you found!"), SAY_SAY, 3000}})
table.insert(dialog02, {func = AnimWait, args = {bandit1.gear, 4000}})
table.insert(dialog02, {func = AnimSay, args = {bandit1.gear, loc("Here! Take it..."), SAY_SAY, 3000}})
- table.insert(dialog02, {func = actionsOnWin, args = {}})
+ table.insert(dialog02, {func = actionsOnWin, args = {}})
end
-------------- Other Functions -------------------
function actionsOnWin()
- saveCompletedStatus(4)
- SendStat(siGameResult, loc("Congratulations, you got the part!"))
+ saveCompletedStatus(4)
+ SendStat(siGameResult, loc("Congratulations, you acquired the device part!"))
SendStat(siCustomAchievement, loc("At the end of the game your health was ")..GetHealth(hero.gear))
-- maybe add number of tries for each part?
SendStat(siPlayerKills,'1',teamC.name)
--- a/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/ice02.lua Sat Dec 14 21:16:20 2013 +0400
+++ b/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/ice02.lua Tue Dec 17 00:02:52 2013 +0400
@@ -21,7 +21,7 @@
local challengeObjectives = loc("To win the game you have to pass into the rings in time")..
"|"..loc("You'll get extra time in case you need it when you pass a ring").."|"..
loc("Every 2 rings, the ring color will be green and you'll get an extra flying saucer").."|"..
- loc("Use space button twice to change flying saucer while being on air")
+ loc("Use space button twice to change flying saucer while floating in mid-air")
-- dialogs
local dialog01 = {}
-- mission objectives
@@ -48,7 +48,7 @@
teamB.color = tonumber("FF0000",16) -- red
-- way points
local current waypoint = 1
-local waypoints = {
+local waypoints = {
[1] = {x=1450, y=140},
[2] = {x=990, y=580},
[3] = {x=1650, y=950},
@@ -78,7 +78,7 @@
Explosives = 0
Map = "ice02_map"
Theme = "Snow"
-
+
-- Hog Solo
AddTeam(teamA.name, teamA.color, "Bone", "Island", "HillBilly", "cm_birdy")
hero.gear = AddHog(hero.name, 0, 100, "war_desertgrenadier1")
@@ -88,9 +88,9 @@
ally.gear = AddHog(ally.name, 0, 100, "war_airwarden02")
AnimSetGearPosition(ally.gear, ally.x, ally.y)
HogTurnLeft(ally.gear, true)
-
+
initCheckpoint("ice02")
-
+
AnimInit()
AnimationSetup()
end
@@ -99,14 +99,14 @@
AnimWait(hero.gear, 3000)
FollowGear(hero.gear)
ShowMission(missionName, loc("Challenge Objectives"), challengeObjectives, -amSkip, 0)
-
+
AddEvent(onHeroDeath, {hero.gear}, heroDeath, {hero.gear}, 0)
-
+
AddAmmo(hero.gear, amJetpack, 3)
-
+
-- place a waypoint
placeNextWaypoint()
-
+
SendHealthStatsOff()
AddAnim(dialog01)
end
@@ -137,10 +137,10 @@
totalTime = totalTime / 1000
local saucersLeft = GetAmmoCount(hero.gear, amJetpack)
local saucersUsed = totalSaucers - saucersLeft
- SendStat(siGameResult, loc("Hoo Ray! You are a champion!"))
- SendStat(siCustomAchievement, loc("You complete the mission in "..totalTime.." seconds"))
- SendStat(siCustomAchievement, loc("You have used "..saucersUsed.." flying saucers"))
- SendStat(siCustomAchievement, loc("You had "..saucersLeft.." more flying saucers left"))
+ SendStat(siGameResult, loc("Hoorah! You are a champion!"))
+ SendStat(siCustomAchievement, loc("You completed the mission in "..totalTime.." seconds"))
+ SendStat(siCustomAchievement, loc("You have used "..saucersUsed.." flying saucers"))
+ SendStat(siCustomAchievement, loc("You had "..saucersLeft.." more flying saucers left"))
SendStat(siPlayerKills,'1',teamA.name)
EndGame()
end
@@ -155,7 +155,7 @@
function onPrecise()
if GameTime > 3000 then
- SetAnimSkip(true)
+ SetAnimSkip(true)
end
end
@@ -189,13 +189,13 @@
table.insert(dialog01, {func = AnimWait, args = {hero.gear, 3000}})
table.insert(dialog01, {func = AnimCaption, args = {hero.gear, loc("In the Ice Planet flying saucer stadium..."), 5000}})
table.insert(dialog01, {func = AnimSay, args = {ally.gear, loc("This is the olympic stadium of saucer flying..."), SAY_SAY, 4000}})
- table.insert(dialog01, {func = AnimSay, args = {ally.gear, loc("All the saucer pilots dream one day to come here and compete with the best!"), SAY_SAY, 5000}})
- table.insert(dialog01, {func = AnimSay, args = {ally.gear, loc("Now you have the chance to try and get the place that you deserve between the best..."), SAY_SAY, 6000}})
- table.insert(dialog01, {func = AnimCaption, args = {hero.gear, loc("Use the saucer and pass from the rings..."), 5000}})
- table.insert(dialog01, {func = AnimCaption, args = {hero.gear, loc("Pause the game by pressing \"P\" for more details"), 5000}})
+ table.insert(dialog01, {func = AnimSay, args = {ally.gear, loc("All the saucer pilots dream to come here one day in order to compete with the best!"), SAY_SAY, 5000}})
+ table.insert(dialog01, {func = AnimSay, args = {ally.gear, loc("Now you have the chance to try and claim the place that you deserve among the best..."), SAY_SAY, 6000}})
+ table.insert(dialog01, {func = AnimCaption, args = {hero.gear, loc("Use the saucer and pass through the rings..."), 5000}})
+ table.insert(dialog01, {func = AnimCaption, args = {hero.gear, loc("Pause the game by pressing the pause key (default \"P\") for more details"), 5000}})
table.insert(dialog01, {func = AnimSay, args = {ally.gear, loc("... can you do it?"), SAY_SAY, 2000}})
table.insert(dialog01, {func = AnimWait, args = {hero.gear, 500}})
- table.insert(dialog01, {func = startFlying, args = {hero.gear}})
+ table.insert(dialog01, {func = startFlying, args = {hero.gear}})
end
------------------ Other Functions -------------------
@@ -236,7 +236,7 @@
AnimCaption(hero.gear, loc("6 more seconds added to the clock"), 4000)
end
end
- end
+ end
radius = radius - 4
currentWaypoint = currentWaypoint + 1
return true
--- a/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/moon01.lua Sat Dec 14 21:16:20 2013 +0400
+++ b/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/moon01.lua Tue Dec 17 00:02:52 2013 +0400
@@ -18,6 +18,7 @@
local weaponsAcquired = false
local battleZoneReached = false
local checkPointReached = 1 -- 1 is start of the game
+local afterDialog02 = false
-- dialogs
local dialog01 = {}
local dialog02 = {}
@@ -102,7 +103,7 @@
MinesNum = 0
MinesTime = 3000
Explosives = 0
- Delay = 5
+ Delay = 5
Map = "moon01_map"
Theme = "Cheese" -- Because ofc moon is made of cheese :)
-- Hog Solo
@@ -143,32 +144,32 @@
minion3.gear = AddHog(minion3.name, 1, 50, "Gasmask")
AnimSetGearPosition(minion3.gear, minion3.x, minion3.y)
HogTurnLeft(minion3.gear, true)
-
+
-- get the check point
checkPointReached = initCheckpoint("moon01")
if checkPointReached == 1 then
-- Start of the game
elseif checkPointReached == 2 then
AnimSetGearPosition(hero.gear, parachuteX, weaponsY)
- if GetHealth(hero.gear) + 5 > 100 then
+ if GetHealth(hero.gear) + 5 > 100 then
SaveCampaignVar("HeroHealth", 100)
else
SaveCampaignVar("HeroHealth", GetHealth(hero.gear) + 5)
end
end
-
+
AnimInit()
- AnimationSetup()
+ AnimationSetup()
end
function onGameStart()
-- wait for the first turn to start
AnimWait(hero.gear, 3000)
FollowGear(hero.gear)
-
+
ShowMission(campaignName, missionName, loc("Hog Solo has to refuel his saucer.")..
- "|"..loc("Rescue the imprisoned PAotH team and get your fuels!"), -amSkip, 0)
-
+ "|"..loc("Rescue the imprisoned PAotH team and get the fuel!"), -amSkip, 0)
+
AddAmmo(minion1.gear, amDEagle, 10)
AddAmmo(minion2.gear, amDEagle, 10)
AddAmmo(minion3.gear, amDEagle, 10)
@@ -178,7 +179,7 @@
AddAmmo(minion1.gear, amGrenade, 2)
AddAmmo(minion2.gear, amGrenade, 2)
AddAmmo(minion3.gear, amGrenade, 2)
-
+
-- check for death has to go first
AddEvent(onHeroDeath, {hero.gear}, heroDeath, {hero.gear}, 0)
AddEvent(onProfessorDeath, {professor.gear}, professorDeath, {professor.gear}, 0)
@@ -194,20 +195,21 @@
AddEvent(onWeaponsPlatform, {hero.gear}, weaponsPlatform, {hero.gear}, 0)
TurnTimeLeft = 0
AddAnim(dialog01)
- elseif checkPointReached == 2 then
+ elseif checkPointReached == 2 then
AddAmmo(hero.gear, amBazooka, 3)
AddAmmo(hero.gear, amParachute, 1)
AddAmmo(hero.gear, amGrenade, 6)
AddAmmo(hero.gear, amDEagle, 4)
- SetWind(60)
+ SetWind(60)
GameFlags = bor(GameFlags,gfDisableWind)
weaponsAcquired = true
+ afterDialog02 = true
TurnTimeLeft = 0
AddAnim(dialog02)
end
-- this event check goes here to be executed after the onWeaponsPlatform check
AddEvent(onBattleZone, {hero.gear}, battleZone, {hero.gear}, 0)
-
+
SendHealthStatsOff()
end
@@ -230,13 +232,12 @@
end
end
-function onNewTurn()
+function onNewTurn()
-- rounds start if hero got his weapons or got near the enemies
if not weaponsAcquired and not battleZoneReached and CurrentHedgehog ~= hero.gear then
TurnTimeLeft = 0
- elseif weaponsAcquired and not battleZoneReached and CurrentHedgehog ~= hero.gear then
- battleZoneReached = true
- AddAnim(dialog04)
+ elseif weaponsAcquired and not battleZoneReached and CurrentHedgehog ~= hero.gear and afterDialog02 then
+ battleZone(hero.gear)
elseif not weaponsAcquired and not battleZoneReached and CurrentHedgehog == hero.gear then
TurnTimeLeft = -1
elseif CurrentHedgehog == paoth1.gear or CurrentHedgehog == paoth2.gear
@@ -250,7 +251,7 @@
function onPrecise()
if GameTime > 3000 then
- SetAnimSkip(true)
+ SetAnimSkip(true)
end
end
@@ -265,7 +266,7 @@
-------------- EVENTS ------------------
function onWeaponsPlatform(gear)
- if not hero.dead and (GetAmmoCount(hero.gear, amBazooka) > 0 or GetAmmoCount(hero.gear, amParachute) > 0 or
+ if not hero.dead and (GetAmmoCount(hero.gear, amBazooka) > 0 or GetAmmoCount(hero.gear, amParachute) > 0 or
GetAmmoCount(hero.gear, amGrenade) > 0 or GetAmmoCount(hero.gear, amDEagle) > 0) and StoppedGear(hero.gear) then
return true
end
@@ -318,8 +319,8 @@
saveCheckpoint("2")
SaveCampaignVar("HeroHealth",GetHealth(hero.gear))
TurnTimeLeft = 0
- weaponsAqcuired = true
- SetWind(60)
+ weaponsAcquired = true
+ SetWind(60)
GameFlags = bor(GameFlags,gfDisableWind)
AddAmmo(hero.gear, amRope, 0)
if GetX(hero.gear) < 1900 then
@@ -338,7 +339,7 @@
function battleZone(gear)
TurnTimeLeft = 0
battleZoneReached = true
- if weaponsAqcuired then
+ if weaponsAcquired then
AddAnim(dialog04)
else
AddAnim(dialog03)
@@ -361,11 +362,11 @@
end
ParseCommand("teamgone " .. teamB.name)
AnimCaption(hero.gear, loc("Congrats! You made them run away!"), 6000)
- AnimWait(hero.gear,5000)
-
+ AnimWait(hero.gear,5000)
+
saveCompletedStatus(1)
- SendStat(siGameResult, loc("Hog Solo win, conrgatulations!"))
- SendStat(siCustomAchievement, loc("Eliminated the professor Hogevil"))
+ SendStat(siGameResult, loc("Hog Solo wins, congratulations!"))
+ SendStat(siCustomAchievement, loc("Eliminated the Professor Hogevil"))
SendStat(siCustomAchievement, loc("Drove the minions away"))
SendStat(siPlayerKills,'1',teamD.name)
SendStat(siPlayerKills,'0',teamC.name)
@@ -375,18 +376,18 @@
function minionsDeath(gear)
-- do staffs here
- AnimSay(professor.gear, loc("I may lost that battle, but I haven't lost the war yet!"), SAY_SHOUT, 6000)
+ AnimSay(professor.gear, loc("I may lost this battle, but I haven't lost the war yet!"), SAY_SHOUT, 6000)
ParseCommand("teamgone " .. teamC.name)
AnimCaption(hero.gear, loc("Congrats! You won!"), 6000)
- AnimWait(hero.gear,5000)
-
+ AnimWait(hero.gear,5000)
+
saveCompletedStatus(1)
SendStat(siGameResult, loc("Congratulations, you won!"))
SendStat(siCustomAchievement, loc("Eliminated the evil minions"))
- SendStat(siCustomAchievement, loc("Drove the professor away"))
+ SendStat(siCustomAchievement, loc("Drove the Professor away"))
SendStat(siPlayerKills,'1',teamD.name)
SendStat(siPlayerKills,'0',teamC.name)
- SaveCampaignVar("CosmosCheckPoint", "5") -- hero got fuels
+ SaveCampaignVar("CosmosCheckPoint", "5") -- hero got fuels
EndGame()
end
@@ -396,7 +397,9 @@
if goals[anim] ~= nil then
ShowMission(unpack(goals[anim]))
end
- if anim == dialog03 then
+ if anim == dialog02 then
+ setAfterDialog02()
+ elseif anim == dialog03 then
startCombat()
else
AnimSwitchHog(hero.gear)
@@ -408,22 +411,23 @@
AddSkipFunction(dialog01, Skipanim, {dialog01})
table.insert(dialog01, {func = AnimWait, args = {hero.gear, 3000}})
table.insert(dialog01, {func = AnimCaption, args = {hero.gear, loc("Near PAotH base at moon..."), 4000}})
- table.insert(dialog01, {func = AnimSay, args = {paoth1.gear, loc("Hey Hog Solo! Finaly you have come..."), SAY_SAY, 2000}})
- table.insert(dialog01, {func = AnimSay, args = {paoth1.gear, loc("It seems that Professor Hogevil learned for your arrival!"), SAY_SAY, 4000}})
- table.insert(dialog01, {func = AnimSay, args = {paoth1.gear, loc("Now he have captured the rest of the PAotH team and awaits to capture you!"), SAY_SAY, 5000}})
+ table.insert(dialog01, {func = AnimSay, args = {paoth1.gear, loc("Hey Hog Solo! Finally you have come..."), SAY_SAY, 2000}})
+ table.insert(dialog01, {func = AnimSay, args = {paoth1.gear, loc("It seems that Professor Hogevil has prepared for your arrival!"), SAY_SAY, 4000}})
+ table.insert(dialog01, {func = AnimSay, args = {paoth1.gear, loc("He has captured the rest of the PAotH team and awaits to capture you!"), SAY_SAY, 5000}})
table.insert(dialog01, {func = AnimSay, args = {paoth1.gear, loc("We have to hurry! Are you armed?"), SAY_SAY, 4300}})
- table.insert(dialog01, {func = AnimWait, args = {hero.gear, 500}})
+ table.insert(dialog01, {func = AnimWait, args = {hero.gear, 450}})
table.insert(dialog01, {func = AnimSay, args = {hero.gear, loc("No, I am afraid I had to travel light"), SAY_SAY, 2500}})
- table.insert(dialog01, {func = AnimWait, args = {paoth1.gear, 500}})
- table.insert(dialog01, {func = AnimSay, args = {paoth1.gear, loc("Ok, then you have to go and take some of the waepons we have hidden in case of an emergency!"), SAY_SAY, 7000}})
- table.insert(dialog01, {func = AnimSay, args = {paoth1.gear, loc("They are up there! Take that rope and hurry!"), SAY_SAY, 7000}})
+ table.insert(dialog01, {func = AnimWait, args = {paoth1.gear, 3200}})
+ table.insert(dialog01, {func = AnimSay, args = {paoth1.gear, loc("Ok, then you have to go and take some of the weapons we have hidden in case of an emergency!"), SAY_SAY, 7000}})
+ table.insert(dialog01, {func = AnimSay, args = {paoth1.gear, loc("They are up there! Take this rope and hurry!"), SAY_SAY, 7000}})
table.insert(dialog01, {func = AnimSay, args = {hero.gear, loc("Ehm... ok..."), SAY_SAY, 2500}})
table.insert(dialog01, {func = AnimSwitchHog, args = {hero.gear}})
-- DIALOG 02 - To the weapons platform
AddSkipFunction(dialog02, Skipanim, {dialog02})
table.insert(dialog02, {func = AnimCaption, args = {hero.gear, loc("Checkpoint reached!"), 4000}})
table.insert(dialog02, {func = AnimSay, args = {hero.gear, loc("I've made it! YEAAAAAH!"), SAY_SHOUT, 4000}})
- table.insert(dialog02, {func = AnimSay, args = {paoth1.gear, loc("Nice! Now hurry up and get down! You have to rescue my friends!"), SAY_SHOUT, 7000}})
+ table.insert(dialog02, {func = AnimSay, args = {paoth1.gear, loc("Nice! Now hurry and get down! You have to rescue my friends!"), SAY_SHOUT, 7000}})
+ table.insert(dialog02, {func = setAfterDialog02, args = {}})
table.insert(dialog02, {func = AnimSwitchHog, args = {hero.gear}})
-- DIALOG 03 - Hero spotted and has no weapons
AddSkipFunction(dialog03, Skipanim, {dialog03})
@@ -444,7 +448,11 @@
------------------- custom "animation" functions --------------------------
function startCombat()
- -- use this so guard2 will gain control
+ -- use this so minion3 will gain control
AnimSwitchHog(minion3.gear)
TurnTimeLeft = 0
end
+
+function setAfterDialog02()
+ afterDialog02 = true
+end
Binary file share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/moon02.hwp has changed
--- a/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/moon02.lua Sat Dec 14 21:16:20 2013 +0400
+++ b/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/moon02.lua Tue Dec 17 00:02:52 2013 +0400
@@ -10,7 +10,7 @@
----------------- VARIABLES --------------------
-- globals
local missionName = loc("Chasing the blue hog")
-local challengeObjectives = loc("Use your available weapons in order to catch the other hog").."|"..
+local challengeObjectives = loc("Use the rope in order to catch the blue hedgehog").."|"..
loc("You have to stand very close to him")
local currentPosition = 1
local previousTimeLeft = 0
@@ -59,7 +59,7 @@
Explosives = 0
Map = "moon02_map"
Theme = "Cheese"
-
+
-- Hog Solo
AddTeam(teamA.name, teamA.color, "Bone", "Island", "HillBilly", "cm_birdy")
hero.gear = AddHog(hero.name, 0, 1, "war_desertgrenadier1")
@@ -69,9 +69,9 @@
runner.gear = AddHog(runner.name, 0, 100, "sth_Sonic")
AnimSetGearPosition(runner.gear, runner.places[1].x, runner.places[1].y)
HogTurnLeft(runner.gear, true)
-
+
initCheckpoint("moon02")
-
+
AnimInit()
AnimationSetup()
end
@@ -80,19 +80,18 @@
AnimWait(hero.gear, 3000)
FollowGear(hero.gear)
ShowMission(missionName, loc("Challenge Objectives"), challengeObjectives, -amSkip, 0)
-
+
AddEvent(onHeroDeath, {hero.gear}, heroDeath, {hero.gear}, 0)
-
+
AddAmmo(hero.gear, amRope, 1)
- AddAmmo(hero.gear, amSkip, 1)
-
+
SendHealthStatsOff()
hogTurn = runner.gear
AddAnim(dialog01)
end
function onNewTurn()
- if startChallenge then
+ if startChallenge and currentPosition < 5 then
if CurrentHedgehog ~= hero.gear then
TurnTimeLeft = 0
else
@@ -116,14 +115,14 @@
end
function onGameTick20()
- if isHeroNextToRunner() then
+ if GetHealth(hero.gear) and startChallenge and isHeroNextToRunner() and currentPosition < 5 then
moveRunner()
end
end
function onPrecise()
if GameTime > 3000 then
- SetAnimSkip(true)
+ SetAnimSkip(true)
end
end
@@ -150,6 +149,8 @@
end
if anim == dialog01 then
moveRunner()
+ elseif anim == dialog02 then
+ win()
end
end
@@ -157,25 +158,25 @@
-- DIALOG 01 - Start, game instructions
AddSkipFunction(dialog01, Skipanim, {dialog01})
table.insert(dialog01, {func = AnimWait, args = {hero.gear, 3200}})
- table.insert(dialog01, {func = AnimCaption, args = {hero.gear, loc("In the other side of the moon..."), 5000}})
- table.insert(dialog01, {func = AnimSay, args = {runner.gear, loc("So you are interested in Pr. Hogevil"), SAY_SAY, 3000}})
+ table.insert(dialog01, {func = AnimCaption, args = {hero.gear, loc("On the other side of the moon..."), 5000}})
+ table.insert(dialog01, {func = AnimSay, args = {runner.gear, loc("So you are interested in Professor Hogevil"), SAY_SAY, 3000}})
table.insert(dialog01, {func = AnimSay, args = {runner.gear, loc("We'll play a game first"), SAY_SAY, 3000}})
table.insert(dialog01, {func = AnimSay, args = {runner.gear, loc("I'll let you know whatever I know about him if you manage to catch me 3 times"), SAY_SAY, 4000}})
- table.insert(dialog01, {func = AnimSay, args = {runner.gear, loc("Let's go!"), SAY_SAY, 2000}})
+ table.insert(dialog01, {func = AnimSay, args = {runner.gear, loc("Let's go!"), SAY_SAY, 2000}})
table.insert(dialog01, {func = moveRunner, args = {}})
- -- DIALOG 02 - Hog Solo story
+ -- DIALOG 02 - Hog Solo story
AddSkipFunction(dialog02, Skipanim, {dialog02})
table.insert(dialog02, {func = AnimWait, args = {hero.gear, 3200}})
- table.insert(dialog02, {func = AnimCaption, args = {hero.gear, loc("The truth about Pr. Hogevil"), 5000}})
- table.insert(dialog02, {func = AnimSay, args = {runner.gear, loc("Amazing! I was never beaten in running before!"), SAY_SAY, 4000}})
- table.insert(dialog02, {func = AnimSay, args = {runner.gear, loc("So, let me tell you what I know about Pr. Hogevil..."), SAY_SAY, 4000}})
- table.insert(dialog02, {func = AnimSay, args = {runner.gear, loc("Pr. Hogevil, then known as James Hogus, worked for PAotH back in my time"), SAY_SAY, 4000}})
+ table.insert(dialog02, {func = AnimCaption, args = {hero.gear, loc("The truth about Professor Hogevil"), 5000}})
+ table.insert(dialog02, {func = AnimSay, args = {runner.gear, loc("Amazing! I was never beaten in a race before!"), SAY_SAY, 4000}})
+ table.insert(dialog02, {func = AnimSay, args = {runner.gear, loc("So, let me tell you what I know about Professor Hogevil..."), SAY_SAY, 4000}})
+ table.insert(dialog02, {func = AnimSay, args = {runner.gear, loc("Professor Hogevil, then known as James Hogus, worked for PAotH back in my time"), SAY_SAY, 4000}})
table.insert(dialog02, {func = AnimSay, args = {runner.gear, loc("He was the lab assistant of Dr. Goodhogan, the inventor of the anti-gravity device"), SAY_SAY, 5000}})
- table.insert(dialog02, {func = AnimSay, args = {runner.gear, loc("In one of the last tests during the construction of the device an accident happpened"), SAY_SAY, 5000}})
- table.insert(dialog02, {func = AnimSay, args = {runner.gear, loc("In this accident Pr. Hogevil lost all his nails from his head!"), SAY_SAY, 5000}})
+ table.insert(dialog02, {func = AnimSay, args = {runner.gear, loc("During the final testing of the device an accident happened"), SAY_SAY, 5000}})
+ table.insert(dialog02, {func = AnimSay, args = {runner.gear, loc("In this accident Professor Hogevil lost all his spines on his head!"), SAY_SAY, 5000}})
table.insert(dialog02, {func = AnimSay, args = {runner.gear, loc("That's why he always wears a hat since then"), SAY_SAY, 4000}})
- table.insert(dialog02, {func = AnimSay, args = {runner.gear, loc("After that incident he got underground and start working his plan to steal the device"), SAY_SAY, 5000}})
- table.insert(dialog02, {func = AnimSay, args = {runner.gear, loc("He is a very taugh and very determined hedgehog. I would be extremely careful if I were you"), SAY_SAY, 5000}})
+ table.insert(dialog02, {func = AnimSay, args = {runner.gear, loc("After that incident he went underground and started working on his plan to steal the device"), SAY_SAY, 5000}})
+ table.insert(dialog02, {func = AnimSay, args = {runner.gear, loc("He is a very tough and very determined hedgehog. I would be extremely careful if I were you"), SAY_SAY, 5000}})
table.insert(dialog02, {func = AnimSay, args = {runner.gear, loc("I should go now, goodbye!"), SAY_SAY, 3000}})
table.insert(dialog02, {func = win, args = {}})
end
@@ -191,13 +192,14 @@
end
function moveRunner()
- if currentPosition > 3 then
+ if currentPosition == 4 then
+ currentPosition = currentPosition + 1
if GetX(hero.gear) > GetX(runner.gear) then
HogTurnLeft(runner.gear, false)
end
+ AddAnim(dialog02)
TurnTimeLeft = 0
- AddAnim(dialog02)
- else
+ elseif currentPosition < 4 then
if not startChallenge then
startChallenge = true
end
@@ -211,6 +213,7 @@
previousTimeLeft = TurnTimeLeft
end
currentPosition = currentPosition + 1
+ AddVisualGear(GetX(runner.gear), GetY(runner.gear), vgtExplosion, 0, false)
SetGearPosition(runner.gear, runner.places[currentPosition].x, runner.places[currentPosition].y)
TurnTimeLeft = 0
end
@@ -218,8 +221,8 @@
function lose()
SendStat(siGameResult, loc("Too slow! Try again..."))
- SendStat(siCustomAchievement, loc("You have to caught the other hog 3 times"))
- SendStat(siCustomAchievement, loc("The time that you'll have left when you reach the hog will be added to the next turn"))
+ SendStat(siCustomAchievement, loc("You have to catch the other hog 3 times"))
+ SendStat(siCustomAchievement, loc("The time that you have left when you reach the blue hedgehog will be added to the next turn"))
SendStat(siCustomAchievement, loc("Each turn you'll have only one rope to use"))
SendStat(siCustomAchievement, loc("You'll lose if you die or if your time is up"))
SendStat(siPlayerKills,'0',teamA.name)
@@ -228,7 +231,7 @@
function win()
SendStat(siGameResult, loc("Congratulations, you are the fastest!"))
- SendStat(siCustomAchievement, loc("You have managed to caught the other hog in time"))
+ SendStat(siCustomAchievement, loc("You have managed to catch the blue hedgehog in time"))
SendStat(siPlayerKills,'1',teamA.name)
EndGame()
end
--- a/share/hedgewars/Data/Missions/Training/User_Mission_-_Newton_and_the_Hammock.lua Sat Dec 14 21:16:20 2013 +0400
+++ b/share/hedgewars/Data/Missions/Training/User_Mission_-_Newton_and_the_Hammock.lua Tue Dec 17 00:02:52 2013 +0400
@@ -126,7 +126,7 @@
if (gear == enemy) and (failed == false) then
ShowMission(loc("Newton's Hammock"), loc("MISSION SUCCESSFUL"), loc("Congratulations!"), 0, 0)
elseif gear == player then
- ShowMission(loc("Newton's Hammock"), loc("MISSION FAILED"), loc("Oh no! Just try again!"), -amSkip, 0)
+ ShowMission(loc("Newton's Hammock"), loc("MISSION FAILED"), loc("Oh no! Just try again!"), -amSkip, 0)
end
end
--- a/share/hedgewars/Data/Themes/Christmas/theme.cfg Sat Dec 14 21:16:20 2013 +0400
+++ b/share/hedgewars/Data/Themes/Christmas/theme.cfg Tue Dec 17 00:02:52 2013 +0400
@@ -14,3 +14,5 @@
spray = holly, 4
spray = holly2, 4
flakes = 100, 3, 99999999, 100, 300
+ice = yes
+snow = yes
Binary file share/hedgewars/Data/Themes/Olympics/SkyL.png has changed
--- a/share/hedgewars/Data/Themes/Snow/theme.cfg Sat Dec 14 21:16:20 2013 +0400
+++ b/share/hedgewars/Data/Themes/Snow/theme.cfg Tue Dec 17 00:02:52 2013 +0400
@@ -10,3 +10,5 @@
object = plant3, 3, 26, 0, 48, 1, 1, 25, 15, 50, 60
object = plant4, 3, 45, 4, 1, 45, 1, 20, 45, 20, 60
flakes = 100, 3, 99999999, 100, 300
+ice = yes
+snow = yes
--- a/share/hedgewars/Data/misc/hedgewars.desktop Sat Dec 14 21:16:20 2013 +0400
+++ b/share/hedgewars/Data/misc/hedgewars.desktop Tue Dec 17 00:02:52 2013 +0400
@@ -16,9 +16,9 @@
GenericName[cs]=Bojující ježci
GenericName[sv]=Stridande igelkottar
GenericName[tr]=Dövüşen Kirpiler
-Icon=hedgewars.png
+Icon=hedgewars
Exec=hedgewars %U
Terminal=false
StartupNotify=false
Categories=Application;Game;StrategyGame;
-MimeType=x-scheme-handler/hwplay
+MimeType=x-scheme-handler/hwplay;
--- a/share/hedgewars/Data/misc/hwengine.desktop.in Sat Dec 14 21:16:20 2013 +0400
+++ b/share/hedgewars/Data/misc/hwengine.desktop.in Tue Dec 17 00:02:52 2013 +0400
@@ -16,11 +16,11 @@
GenericName[cs]=Engine hry Hedgewars pro přehrávání uložených her a ukázkových souborů
GenericName[sv]=Hedgewarsmotorn, för att öppna demo- och sparfiler
GenericName[da]=Kæmpende Pindsvin
-Icon=hedgewars.png
+Icon=hedgewars
Exec=${CMAKE_INSTALL_PREFIX}/${target_binary_install_dir}/hwengine %f
Path=/tmp
Terminal=false
StartupNotify=false
NoDisplay=true
Categories=Application;Game;StrategyGame;
-MimeType=application/x-hedgewars-demo;application/x-hedgewars-save
+MimeType=application/x-hedgewars-demo;application/x-hedgewars-save;