# HG changeset patch
# User koda
# Date 1296515905 -3600
# Node ID efcea232bbf64d13818773d50b4a2a8974277b88
# Parent 353781305c0718cc72cf0a0b930333eb72b949ed# Parent 69f8431a5d2018be8529b1b4c9b6f3df393c2fb9
merge 0.9.15 once again
diff -r 69f8431a5d20 -r efcea232bbf6 .hgignore
--- a/.hgignore Tue Feb 01 00:12:19 2011 +0100
+++ b/.hgignore Tue Feb 01 00:18:25 2011 +0100
@@ -32,5 +32,3 @@
glob:*.orig
glob:*.bak
glob:*.rej
-glob:*.qm
-glob:share/hedgewars/Data/misc/hwengine.desktop
diff -r 69f8431a5d20 -r efcea232bbf6 .hgtags
--- a/.hgtags Tue Feb 01 00:12:19 2011 +0100
+++ b/.hgtags Tue Feb 01 00:18:25 2011 +0100
@@ -11,24 +11,11 @@
bb56f0682655b18f229be97085a409e3c76f578e hedgewars-0.8.1
fee68e3a303998fdfcc69f74775dc84a36f587fb 0.9.9
fee68e3a303998fdfcc69f74775dc84a36f587fb 0.9.9.1
-fd6c20cd90e33fa5e4f03e1c1f220b3eb14d169a Hedgewars-iOS-1.0
-fd6c20cd90e33fa5e4f03e1c1f220b3eb14d169a Hedgewars-iOS-1.0
-0000000000000000000000000000000000000000 Hedgewars-iOS-1.0
-0000000000000000000000000000000000000000 Hedgewars-iOS-1.0
81db3c85784b4f35c7ff1ef9a5d64f5bdd383f08 Hedgewars-iOS-1.0
-296ec09490d92a74619aa8595df1bbcfd0dff4e5 Hedgewars-iOS-1.0.1
-296ec09490d92a74619aa8595df1bbcfd0dff4e5 Hedgewars-iOS-1.0.1
-0000000000000000000000000000000000000000 Hedgewars-iOS-1.0.1
-0000000000000000000000000000000000000000 Hedgewars-iOS-1.0.1
3620607258cdc1213dce20cb6ad7872f6b8085e0 Hedgewars-iOS-1.0.1
adffb668f06e265b45d1e4aedc283e6f4e5ba7e8 Hedgewars-iOS-1.1
ede569bb76f389bd5dfbb7ebf68af3087e3e881c Hedgewars-iOS-1.2
a5735e877aae61cd705265e2f8c0c7ad08d45f0e Hedgewars-iOS-1.2.1
-bd74fd83929a09251d1ede09e6c03a641a0ee35f 0.9.15
-bd74fd83929a09251d1ede09e6c03a641a0ee35f 0.9.15
-0000000000000000000000000000000000000000 0.9.15
-0000000000000000000000000000000000000000 0.9.15
-29ab0d49c3e6e72a7633d0bd316ae533db15c65d 0.9.15
-29ab0d49c3e6e72a7633d0bd316ae533db15c65d 0.9.15
-0000000000000000000000000000000000000000 0.9.15
29ab0d49c3e6e72a7633d0bd316ae533db15c65d 0.9.15-release
+5ea3d182415e4327e7584b1aa68197931d232ac3 Hedgewars-iOS-1.2.2
+ae71dff40ecc405a55647b0f52f628674c1ebb51 0.9.14.1-release
diff -r 69f8431a5d20 -r efcea232bbf6 CMakeLists.txt
--- a/CMakeLists.txt Tue Feb 01 00:12:19 2011 +0100
+++ b/CMakeLists.txt Tue Feb 01 00:18:25 2011 +0100
@@ -8,7 +8,7 @@
ENDIF()
#detect Mercurial revision (if present)
-#set(version_suffix "-dev") #UNSET THIS VARIABLE AT RELEASE TIME
+set(version_suffix "-dev") #UNSET THIS VARIABLE AT RELEASE TIME
IF(version_suffix MATCHES "-dev")
set(HW_DEV true)
IF (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/.hg)
@@ -31,7 +31,7 @@
set(CPACK_PACKAGE_VERSION_MAJOR "0")
set(CPACK_PACKAGE_VERSION_MINOR "9")
-set(CPACK_PACKAGE_VERSION_PATCH "15${version_suffix}")
+set(CPACK_PACKAGE_VERSION_PATCH "16${version_suffix}")
#forbid in-tree building
#IF (${CMAKE_SOURCE_DIR} MATCHES ${CMAKE_BINARY_DIR})
@@ -168,7 +168,7 @@
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
set(HEDGEWARS_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
-set(HEDGEWARS_PROTO_VER 37)
+set(HEDGEWARS_PROTO_VER 38)
if(WITH_SERVER)
message(STATUS "Server is going to be built! Make sure you have GHC installed")
@@ -242,13 +242,14 @@
"release$"
"Debug$"
"Release$"
- "proto.inc$"
- "hwconsts.cpp$"
- "playlist.inc$"
+ "proto\\\\.inc$"
+ "hwconsts\\\\.cpp$"
+ "playlist\\\\.inc$"
"CPack"
- "cmake_install.cmake$"
- "config.inc$"
- "hwengine.desktop$"
+ "cmake_install\\\\.cmake$"
+ "config\\\\.inc$"
+ "hwengine\\\\.desktop$"
+ "CMakeCache\\\\.txt$"
# "^${CMAKE_CURRENT_SOURCE_DIR}/misc/libopenalbridge"
"^${CMAKE_CURRENT_SOURCE_DIR}/project_files/HedgewarsMobile/"
"^${CMAKE_CURRENT_SOURCE_DIR}/bin/[a-z]"
diff -r 69f8431a5d20 -r efcea232bbf6 ChangeLog.txt
--- a/ChangeLog.txt Tue Feb 01 00:12:19 2011 +0100
+++ b/ChangeLog.txt Tue Feb 01 00:18:25 2011 +0100
@@ -25,6 +25,7 @@
+ Reworked management of schemes and weapon sets
+ Will ask before deleting teams, schemes and weapon sets
+ Explosions detach rope from land
+ + Variable rope length in scheme
+ Allow hog speech when not your turn
0.9.13 -> 0.9.14:
diff -r 69f8431a5d20 -r efcea232bbf6 QTfrontend/CMakeLists.txt
diff -r 69f8431a5d20 -r efcea232bbf6 QTfrontend/about.cpp
--- a/QTfrontend/about.cpp Tue Feb 01 00:12:19 2011 +0100
+++ b/QTfrontend/about.cpp Tue Feb 01 00:18:25 2011 +0100
@@ -117,6 +117,7 @@
"Finnish: Nina Kuisma <ninnnu@gmail.com> "
"French: Antoine Turmel <geekshadow@gmail.com> "
"German: Peter Hüwe <PeterHuewe@gmx.de>, Mario Liebisch <mario.liebisch@gmail.com> "
+ "Greek: <talos_kriti@yahoo.gr>"
"Italian: Luca Bonora <bonora.luca@gmail.com> "
"Japanese: ADAM Etienne <etienne.adam@gmail.com> "
"Korean: Anthony Bellew <webmaster@anthonybellew.com> "
diff -r 69f8431a5d20 -r efcea232bbf6 QTfrontend/ammoSchemeModel.cpp
--- a/QTfrontend/ammoSchemeModel.cpp Tue Feb 01 00:12:19 2011 +0100
+++ b/QTfrontend/ammoSchemeModel.cpp Tue Feb 01 00:18:25 2011 +0100
@@ -188,7 +188,7 @@
<< QVariant(false) // disable land objects 17
<< QVariant(false) // AI survival 18
<< QVariant(false) // inf. attack 19
- << QVariant(false) // reset weps 20
+ << QVariant(true) // reset weps 20
<< QVariant(false) // per hog ammo 21
<< QVariant(false) // no wind 22
<< QVariant(false) // more wind 23
diff -r 69f8431a5d20 -r efcea232bbf6 QTfrontend/chatwidget.cpp
--- a/QTfrontend/chatwidget.cpp Tue Feb 01 00:12:19 2011 +0100
+++ b/QTfrontend/chatwidget.cpp Tue Feb 01 00:18:25 2011 +0100
@@ -26,12 +26,72 @@
#include
#include
#include
+#include
#include "hwconsts.h"
#include "SDLs.h"
#include "gameuiconfig.h"
#include "chatwidget.h"
+ListWidgetNickItem::ListWidgetNickItem(const QString& nick, bool isFriend, bool isIgnored) : QListWidgetItem(nick)
+{
+ this->aFriend = isFriend;
+ this->isIgnored = isIgnored;
+}
+
+void ListWidgetNickItem::setFriend(bool isFriend)
+{
+ this->aFriend = isFriend;
+}
+
+void ListWidgetNickItem::setIgnored(bool isIgnored)
+{
+ this->isIgnored = isIgnored;
+}
+
+bool ListWidgetNickItem::isFriend()
+{
+ return aFriend;
+}
+
+bool ListWidgetNickItem::ignored()
+{
+ return isIgnored;
+}
+
+bool ListWidgetNickItem::operator< (const QListWidgetItem & other) const
+{
+ // case in-sensitive comparison of the associated strings
+ // chars that are no letters are sorted at the end of the list
+
+ ListWidgetNickItem otherNick = const_cast(dynamic_cast(other));
+
+ // ignored always down
+ if (isIgnored != otherNick.ignored())
+ return !isIgnored;
+
+ // friends always up
+ if (aFriend != otherNick.isFriend())
+ return aFriend;
+
+ QString txt1 = text().toLower();
+ QString txt2 = other.text().toLower();
+
+ bool firstIsShorter = (txt1.size() < txt2.size());
+ int len = firstIsShorter?txt1.size():txt2.size();
+
+ for (int i = 0; i < len; i++)
+ {
+ if (txt1[i] == txt2[i])
+ continue;
+ if (txt1[i].isLetter() != txt2[i].isLetter())
+ return txt1[i].isLetter();
+ return (txt1[i] < txt2[i]);
+ }
+
+ return firstIsShorter;
+}
+
HWChatWidget::HWChatWidget(QWidget* parent, QSettings * gameSettings, SDLInteraction * sdli, bool notify) :
QWidget(parent),
mainLayout(this)
@@ -102,12 +162,24 @@
acFriend->setIcon(QIcon(":/res/addfriend.png"));
connect(acFriend, SIGNAL(triggered(bool)), this, SLOT(onFriend()));
+ chatNicks->insertAction(0, acFriend);
chatNicks->insertAction(0, acInfo);
- chatNicks->insertAction(0, acFollow);
chatNicks->insertAction(0, acIgnore);
- chatNicks->insertAction(0, acFriend);
showReady = false;
+ setShowFollow(true);
+}
+
+void HWChatWidget::setShowFollow(bool enabled)
+{
+ if (enabled) {
+ if (!(chatNicks->actions().contains(acFollow)))
+ chatNicks->insertAction(acFriend, acFollow);
+ }
+ else {
+ if (chatNicks->actions().contains(acFollow))
+ chatNicks->removeAction(acFollow);
+ }
}
void HWChatWidget::loadList(QStringList & list, const QString & file)
@@ -145,16 +217,20 @@
txt.close();
}
-void HWChatWidget::updateIcon(QListWidgetItem *item)
+void HWChatWidget::updateNickItem(QListWidgetItem *nickItem)
{
- QString nick = item->text();
+ QString nick = nickItem->text();
+ ListWidgetNickItem * item = dynamic_cast(nickItem);
- if(ignoreList.contains(nick, Qt::CaseInsensitive))
+ item->setFriend(friendsList.contains(nick, Qt::CaseInsensitive));
+ item->setIgnored(ignoreList.contains(nick, Qt::CaseInsensitive));
+
+ if(item->ignored())
{
item->setIcon(QIcon(showReady ? (item->data(Qt::UserRole).toBool() ? ":/res/chat_ignore_on.png" : ":/res/chat_ignore_off.png") : ":/res/chat_ignore.png"));
item->setForeground(Qt::gray);
}
- else if(friendsList.contains(nick, Qt::CaseInsensitive))
+ else if(item->isFriend())
{
item->setIcon(QIcon(showReady ? (item->data(Qt::UserRole).toBool() ? ":/res/chat_friend_on.png" : ":/res/chat_friend_off.png") : ":/res/chat_friend.png"));
item->setForeground(Qt::green);
@@ -166,17 +242,19 @@
}
}
-void HWChatWidget::updateIcons()
+void HWChatWidget::updateNickItems()
{
for(int i = 0; i < chatNicks->count(); i++)
- updateIcon(chatNicks->item(i));
+ updateNickItem(chatNicks->item(i));
+
+ chatNicks->sortItems();
}
void HWChatWidget::loadLists(const QString & nick)
{
loadList(ignoreList, nick.toLower() + "_ignore.txt");
loadList(friendsList, nick.toLower() + "_friends.txt");
- updateIcons();
+ updateNickItems();
}
void HWChatWidget::saveLists(const QString & nick)
@@ -241,8 +319,8 @@
void HWChatWidget::nickAdded(const QString& nick, bool notifyNick)
{
- QListWidgetItem * item = new QListWidgetItem(nick);
- updateIcon(item);
+ QListWidgetItem * item = new ListWidgetNickItem(nick, friendsList.contains(nick, Qt::CaseInsensitive), ignoreList.contains(nick, Qt::CaseInsensitive));
+ updateNickItem(item);
chatNicks->addItem(item);
if(notifyNick && notify && gameSettings->value("frontend/sound", true).toBool()) {
@@ -307,10 +385,19 @@
}
else // not on list - add
{
+ // don't consider ignored people friends
+ if(friendsList.contains(curritem->text(), Qt::CaseInsensitive))
+ emit onFriend();
+
+ // scroll down on first ignore added so that people see where that nick went to
+ if (ignoreList.isEmpty())
+ emit chatNicks->verticalScrollBar()->setValue(chatNicks->verticalScrollBar()->maximum());
+
ignoreList << curritem->text().toLower();
onChatString(HWChatWidget::tr("%1 *** %2 has been added to your ignore list").arg('\x03').arg(curritem->text()));
}
- updateIcon(curritem); // update icon
+ updateNickItem(curritem); // update icon/sort order/etc
+ chatNicks->sortItems();
chatNickSelected(0); // update context menu
}
@@ -327,16 +414,26 @@
}
else // not on list - add
{
+ // don't ignore the new friend
+ if(ignoreList.contains(curritem->text(), Qt::CaseInsensitive))
+ emit onIgnore();
+
+ // scroll up on first friend added so that people see where that nick went to
+ if (friendsList.isEmpty())
+ emit chatNicks->verticalScrollBar()->setValue(chatNicks->verticalScrollBar()->minimum());
+
friendsList << curritem->text().toLower();
onChatString(HWChatWidget::tr("%1 *** %2 has been added to your friends list").arg('\x03').arg(curritem->text()));
}
- updateIcon(curritem); // update icon
+ updateNickItem(curritem); // update icon/sort order/etc
+ chatNicks->sortItems();
chatNickSelected(0); // update context menu
}
void HWChatWidget::chatNickDoubleClicked(QListWidgetItem * item)
{
- if (item) onFollow();
+ QList actions = chatNicks->actions();
+ actions.first()->activate(QAction::Trigger);
}
void HWChatWidget::chatNickSelected(int index)
@@ -386,7 +483,7 @@
}
items[0]->setData(Qt::UserRole, isReady); // bulb status
- updateIcon(items[0]);
+ updateNickItem(items[0]);
// ensure we're still showing the status bulbs
showReady = true;
diff -r 69f8431a5d20 -r efcea232bbf6 QTfrontend/chatwidget.h
--- a/QTfrontend/chatwidget.h Tue Feb 01 00:12:19 2011 +0100
+++ b/QTfrontend/chatwidget.h Tue Feb 01 00:18:25 2011 +0100
@@ -26,12 +26,29 @@
#include "SDLs.h"
+class ListWidgetNickItem;
class QTextBrowser;
class QLineEdit;
class QListWidget;
class QSettings;
class SDLInteraction;
+// this class is for custom nick sorting
+class ListWidgetNickItem : public QListWidgetItem
+{
+public:
+ ListWidgetNickItem(const QString& nick, bool isFriend, bool isIgnored);
+ bool operator<(const QListWidgetItem & other) const;
+ void setFriend(bool isFriend);
+ void setIgnored(bool isIgnored);
+ bool isFriend();
+ bool ignored();
+
+private:
+ bool aFriend;
+ bool isIgnored;
+};
+
class HWChatWidget : public QWidget
{
Q_OBJECT
@@ -41,12 +58,13 @@
void loadLists(const QString & nick);
void saveLists(const QString & nick);
void setShowReady(bool s);
+ void setShowFollow(bool enabled);
private:
void loadList(QStringList & list, const QString & file);
void saveList(QStringList & list, const QString & file);
- void updateIcon(QListWidgetItem *item);
- void updateIcons();
+ void updateNickItem(QListWidgetItem *item);
+ void updateNickItems();
public slots:
void onChatString(const QString& str);
diff -r 69f8431a5d20 -r efcea232bbf6 QTfrontend/game.cpp
--- a/QTfrontend/game.cpp Tue Feb 01 00:12:19 2011 +0100
+++ b/QTfrontend/game.cpp Tue Feb 01 00:18:25 2011 +0100
@@ -304,6 +304,7 @@
arguments << (config->isAltDamageEnabled() ? "1" : "0");
arguments << config->netNick().toUtf8().toBase64();
arguments << QString::number(config->translateQuality());
+ arguments << QString::number(config->stereoMode());
arguments << tr("en.txt");
return arguments;
diff -r 69f8431a5d20 -r efcea232bbf6 QTfrontend/gameuiconfig.cpp
--- a/QTfrontend/gameuiconfig.cpp Tue Feb 01 00:12:19 2011 +0100
+++ b/QTfrontend/gameuiconfig.cpp Tue Feb 01 00:18:25 2011 +0100
@@ -48,6 +48,7 @@
Form->ui.pageOptions->CBFrontendFullscreen->setChecked(ffscr);
Form->ui.pageOptions->SLQuality->setValue(value("video/quality", 5).toUInt());
+ Form->ui.pageOptions->CBStereoMode->setCurrentIndex(value("video/stereo", 0).toUInt());
Form->ui.pageOptions->CBFrontendEffects->setChecked(frontendEffects);
Form->ui.pageOptions->CBEnableSound->setChecked(value("audio/sound", true).toBool());
Form->ui.pageOptions->CBEnableFrontendSound->setChecked(value("frontend/sound", true).toBool());
@@ -93,7 +94,7 @@
{
QDir teamdir;
teamdir.cd(cfgdir->absolutePath() + "/Teams");
- QStringList teamslist = teamdir.entryList(QStringList("*.hwt"));
+ QStringList teamslist = teamdir.entryList(QStringList("*.hwt"),QDir::Files|QDir::Hidden);
QStringList cleanedList;
for (QStringList::Iterator it = teamslist.begin(); it != teamslist.end(); ++it ) {
QString tmpTeamStr=(*it).replace(QRegExp("^(.*)\\.hwt$"), "\\1");
@@ -113,6 +114,7 @@
setValue("video/fullscreen", vid_Fullscreen());
setValue("video/quality", Form->ui.pageOptions->SLQuality->value());
+ setValue("video/stereo", stereoMode());
setValue("frontend/effects", isFrontendEffects());
@@ -183,7 +185,7 @@
quint32 rqNoBackground = 0x00000004; // don't draw background
quint32 rqSimpleRope = 0x00000008; // avoid drawing rope
quint32 rq2DWater = 0x00000010; // disabe 3D water effect
- quint32 rqFancyBoom = 0x00000020; // no fancy explosion effects
+ quint32 rqAntiBoom = 0x00000020; // no fancy explosion effects
quint32 rqKillFlakes = 0x00000040; // no flakes
quint32 rqSlowMenu = 0x00000080; // ammomenu appears with no animation
quint32 rqPlainSplash = 0x00000100; // no droplets
@@ -204,15 +206,15 @@
break;
case 2:
result |= rqBlurryLand | rqKillFlakes | rqPlainSplash | rq2DWater |
- rqFancyBoom | rqSlowMenu;
+ rqAntiBoom | rqSlowMenu;
break;
case 1:
result |= rqBlurryLand | rqKillFlakes | rqPlainSplash | rq2DWater |
- rqFancyBoom | rqSlowMenu | rqSimpleRope | rqDesyncVBlank;
+ rqAntiBoom | rqSlowMenu | rqSimpleRope | rqDesyncVBlank;
break;
case 0:
result |= rqBlurryLand | rqKillFlakes | rqPlainSplash | rq2DWater |
- rqFancyBoom | rqSlowMenu | rqSimpleRope | rqDesyncVBlank |
+ rqAntiBoom | rqSlowMenu | rqSimpleRope | rqDesyncVBlank |
rqNoBackground | rqClampLess;
break;
default:
@@ -261,6 +263,11 @@
return Form->ui.pageOptions->CBAltDamage->isChecked();
}
+quint32 GameUIConfig::stereoMode() const
+{
+ return Form->ui.pageOptions->CBStereoMode->currentIndex();
+}
+
bool GameUIConfig::appendDateTimeToRecordName()
{
return Form->ui.pageOptions->CBNameWithDate->isChecked();
diff -r 69f8431a5d20 -r efcea232bbf6 QTfrontend/gameuiconfig.h
--- a/QTfrontend/gameuiconfig.h Tue Feb 01 00:12:19 2011 +0100
+++ b/QTfrontend/gameuiconfig.h Tue Feb 01 00:18:25 2011 +0100
@@ -52,6 +52,7 @@
bool isFrontendEffects() const;
bool isFrontendFullscreen() const;
void resizeToConfigValues();
+ quint32 stereoMode() const;
#ifdef __APPLE__
#ifdef SPARKLE_ENABLED
diff -r 69f8431a5d20 -r efcea232bbf6 QTfrontend/hwconsts.cpp.in
--- a/QTfrontend/hwconsts.cpp.in Tue Feb 01 00:12:19 2011 +0100
+++ b/QTfrontend/hwconsts.cpp.in Tue Feb 01 00:18:25 2011 +0100
@@ -37,10 +37,10 @@
int cMaxTeams = 6;
QString * cDefaultAmmoStore = new QString(
- "939192942219912103223511100120100000021111010101112"
- "040504054160065554655446477657666666615551010111541"
- "000000000000020550000004000700400000000020000000060"
- "131111031211111112311411111111111111121111110111112"
+ "93919294221991210322351110012010000002111101010111299"
+ "04050405416006555465544647765766666661555101011154111"
+ "00000000000002055000000400070040000000002000000006000"
+ "13111103121111111231141111111111111112111111011111211"
);
int cAmmoNumber = cDefaultAmmoStore->size() / 4;
@@ -49,40 +49,40 @@
<< qMakePair(QString("Default"), *cDefaultAmmoStore)
<< qMakePair(QString("Crazy"), QString(
// TODO: Remove Piano's unlimited uses!
- "999999999999999999299999999999999929999999990999999"
- "111111011111111111111111111111111111111111110111111"
- "000000000000000000000000000000000000000000000000000"
- "131111031211111112311411111111111111121111010111111"
+ "99999999999999999929999999999999992999999999099999922"
+ "11111101111111111111111111111111111111111111011111111"
+ "00000000000000000000000000000000000000000000000000000"
+ "13111103121111111231141111111111111112111101011111111"
))
<< qMakePair(QString("Pro Mode"), QString(
- "909000900000000000000900000000000000000000000000000"
- "000000000000000000000000000000000000000000000000000"
- "000000000000020550000004000700400000000020000000000"
- "111111111111111111111111111111111111111110010111111"
+ "90900090000000000000090000000000000000000000000000000"
+ "00000000000000000000000000000000000000000000000000000"
+ "00000000000002055000000400070040000000002000000000000"
+ "11111111111111111111111111111111111111111001011111111"
))
<< qMakePair(QString("Shoppa"), QString(
- "000000990000000000000000000000000000000000000000000"
- "444441004424440221011212122242200000000200040001001"
- "000000000000000000000000000000000000000000000000000"
- "111111111111111111111111111111111111111110110111111"
+ "00000099000000000000000000000000000000000000000000000"
+ "44444100442444022101121212224220000000020004000100111"
+ "00000000000000000000000000000000000000000000000000000"
+ "11111111111111111111111111111111111111111011011111111"
))
<< qMakePair(QString("Clean Slate"),QString(
- "101000900001000001100000000000000000000000000000100"
- "040504054160065554655446477657666666615551010111541"
- "000000000000000000000000000000000000000000000000000"
- "131111031211111112311411111111111111121111110111111"
+ "10100090000100000110000000000000000000000000000010000"
+ "04050405416006555465544647765766666661555101011154111"
+ "00000000000000000000000000000000000000000000000000000"
+ "13111103121111111231141111111111111112111111011111111"
))
<< qMakePair(QString("Minefield"), QString(
- "000000990009000000030000000000000000000000000000000"
- "000000000000000000000000000000000000000000000000000"
- "000000000000020550000004000700400000000020000000060"
- "111111111111111111111111111111111111111111110111111"
+ "00000099000900000003000000000000000000000000000000000"
+ "00000000000000000000000000000000000000000000000000000"
+ "00000000000002055000000400070040000000002000000006000"
+ "11111111111111111111111111111111111111111111011111111"
))
<< qMakePair(QString("Thinking with Portals"), QString(
- "900000900200000000210000000000000011000009000000000"
- "040504054160065554655446477657666666615551010111541"
- "000000000000020550000004000700400000000020000000060"
- "131111031211111112311411111111111111121111110111111"
+ "90000090020000000021000000000000001100000900000000000"
+ "04050405416006555465544647765766666661555101011154111"
+ "00000000000002055000000400070040000000002000000006000"
+ "13111103121111111231141111111111111112111111011111111"
));
QColor *colors[] = {
diff -r 69f8431a5d20 -r efcea232bbf6 QTfrontend/hwform.cpp
--- a/QTfrontend/hwform.cpp Tue Feb 01 00:12:19 2011 +0100
+++ b/QTfrontend/hwform.cpp Tue Feb 01 00:18:25 2011 +0100
@@ -550,7 +550,7 @@
GoBack();
if (curid == ID_PAGE_ROOMSLIST) NetDisconnect();
- if (curid == ID_PAGE_NETGAME) hwnet->partRoom();
+ if (curid == ID_PAGE_NETGAME && hwnet) hwnet->partRoom();
// need to work on this, can cause invalid state for admin quit trying to prevent bad state message on kick
//if (curid == ID_PAGE_NETGAME && (!game || game->gameState != gsStarted)) hwnet->partRoom();
@@ -702,7 +702,7 @@
void HWForm::NetConnectServer(const QString & host, quint16 port)
{
- _NetConnect(host, port, ui.pageOptions->editNetNick->text());
+ _NetConnect(host, port, ui.pageOptions->editNetNick->text().trimmed());
}
void HWForm::NetConnectOfficialServer()
@@ -985,7 +985,7 @@
if (wBackground) wBackground->startAnimation();
if (hwnet) hwnet->gameFinished();
}
- if (gameState == gsHalted) close();
+ if (gameState == gsHalted) close();
};
}
}
diff -r 69f8431a5d20 -r efcea232bbf6 QTfrontend/main.cpp
--- a/QTfrontend/main.cpp Tue Feb 01 00:12:19 2011 +0100
+++ b/QTfrontend/main.cpp Tue Feb 01 00:18:25 2011 +0100
@@ -49,6 +49,7 @@
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
+ app.setAttribute(Qt::AA_DontShowIconsInMenus,false);
QStringList arguments = app.arguments();
QMap parsedArgs;
diff -r 69f8431a5d20 -r efcea232bbf6 QTfrontend/newnetclient.cpp
--- a/QTfrontend/newnetclient.cpp Tue Feb 01 00:12:19 2011 +0100
+++ b/QTfrontend/newnetclient.cpp Tue Feb 01 00:18:25 2011 +0100
@@ -489,6 +489,26 @@
return;
}
+ if (lst[0] == "NOTICE") {
+ if(lst.size() < 2)
+ {
+ qWarning("Net: Bad NOTICE message");
+ return;
+ }
+
+ bool ok;
+ int n = lst[1].toInt(&ok);
+ if(!ok)
+ {
+ qWarning("Net: Bad NOTICE message");
+ return;
+ }
+
+ handleNotice(n);
+
+ return;
+ }
+
if (lst[0] == "TEAM_ACCEPTED") {
if (lst.size() != 2)
{
@@ -752,3 +772,28 @@
{
RawSendNet(QString("GET_SERVER_VAR"));
}
+
+void HWNewNet::handleNotice(int n)
+{
+ switch(n)
+ {
+ case 0:
+ {
+ bool ok = false;
+ QString newNick = QInputDialog::getText(0, tr("Nickname"), tr("Some one already uses\n your nickname %1\non the server.\nPlease pick another nickname:").arg(mynick), QLineEdit::Normal, mynick, &ok);
+
+ if (!ok || newNick.isEmpty()) {
+ Disconnect();
+ emit Disconnected();
+ return;
+ }
+
+ config->setValue("net/nick", newNick);
+ mynick = newNick;
+
+ RawSendNet(QString("NICK%1%2").arg(delimeter).arg(newNick));
+
+ break;
+ }
+ }
+}
diff -r 69f8431a5d20 -r efcea232bbf6 QTfrontend/newnetclient.h
--- a/QTfrontend/newnetclient.h Tue Feb 01 00:12:19 2011 +0100
+++ b/QTfrontend/newnetclient.h Tue Feb 01 00:18:25 2011 +0100
@@ -86,6 +86,7 @@
void RawSendNet(const QString & buf);
void RawSendNet(const QByteArray & buf);
void ParseCmd(const QStringList & lst);
+ void handleNotice(int n);
int loginStep;
int netClientState;
@@ -161,7 +162,7 @@
void ClientRead();
void OnConnect();
void OnDisconnect();
- void displayError(QAbstractSocket::SocketError socketError);
+ void displayError(QAbstractSocket::SocketError socketError);
};
#endif // _NEW_NETCLIENT_INCLUDED
diff -r 69f8431a5d20 -r efcea232bbf6 QTfrontend/pages.cpp
--- a/QTfrontend/pages.cpp Tue Feb 01 00:12:19 2011 +0100
+++ b/QTfrontend/pages.cpp Tue Feb 01 00:18:25 2011 +0100
@@ -122,7 +122,7 @@
Tips << tr("We're open to suggestions and constructive feedback. If you don't like something or got a great idea, let us know!", "Tips");
Tips << tr("Especially while playing online be polite and always remember there might be some minors playing with or against you as well!", "Tips");
Tips << tr("Special game modes such as 'Vampirism' or 'Karma' allow you to develop completely new tactics. Try them in a custom game!", "Tips");
- Tips << tr("The Windows version of Hedgewars supports Xfire. Make sure to add Hedgwars to its game list so your friends can see you playing.", "Tips");
+ Tips << tr("The Windows version of Hedgewars supports Xfire. Make sure to add Hedgewars to its game list so your friends can see you playing.", "Tips");
Tips << tr("You should never install Hedgewars on computers you don't own (school, university, work, etc.). Please ask the responsible person instead!", "Tips");
Tips << tr("Hedgewars can be perfect for short games during breaks. Just ensure you don't add too many hedgehogs or use an huge map. Reducing time and health might help as well.", "Tips");
Tips << tr("No hedgehogs were harmed in making this game.", "Tips");
@@ -132,13 +132,13 @@
Tips << tr("Most weapons won't work once they touch the water. The Homing Bee as well as the Cake are exceptions to this.", "Tips");
Tips << tr("The Old Limbuger only causes a small explosion. However the wind affected smelly cloud can poison lots of hogs at once.", "Tips");
Tips << tr("The Piano Strike is the most damaging air strike. You'll lose the hedgehog performing it, so there's a huge downside as well.", "Tips");
- Tips << tr("The Homing Bee can be tricky to use. It's turn radius depends on it's velocity, so try to not use full power.", "Tips");
+ Tips << tr("The Homing Bee can be tricky to use. Its turn radius depends on it's velocity, so try to not use full power.", "Tips");
Tips << tr("Sticky Mines are a perfect tool to create small chain reactions knocking enemy hedgehogs into dire situations ... or water.", "Tips");
Tips << tr("The Hammer is most effective when used on bridges or girders. Hit hogs will just break through the ground.", "Tips");
Tips << tr("If you're stuck behind an enemy hedgehog, use the Hammer to free yourself without getting damaged by an explosion.", "Tips");
Tips << tr("The Cake's maximum walking distance depends on the ground it has to pass. Use [attack] to detonate it early.", "Tips");
Tips << tr("The Flame Thrower is a weapon but it can be used for tunnel digging as well.", "Tips");
- Tips << tr("Use the Incinerating Grenade to temporary keep hedgehogs from passing terrain such as tunnels or platforms.", "Tips");
+ Tips << tr("Use the Molotov or Flame Thrower to temporary keep hedgehogs from passing terrain such as tunnels or platforms.", "Tips");
Tips << tr("Want to know who's behind the game? Click on the Hedgewars logo in the main menu to see the credits.", "Tips");
Tips << tr("Like Hedgewars? Become a fan on %1 or follow us on %2!", "Tips").arg("Facebook").arg("Twitter");
Tips << tr("Feel free to draw your own graves, hats, flags or even maps and themes! But note that you'll have to share them somewhere to use them online.", "Tips");
@@ -617,6 +617,7 @@
editNetNick = new QLineEdit(groupMisc);
editNetNick->setMaxLength(20);
editNetNick->setText(QLineEdit::tr("unnamed"));
+ connect(editNetNick, SIGNAL(editingFinished()), this, SLOT(trimNetNick()));
MiscLayout->addWidget(editNetNick, 0, 1);
QLabel *labelLanguage = new QLabel(groupMisc);
@@ -669,6 +670,7 @@
QVBoxLayout * GBAlayout = new QVBoxLayout(AGGroupBox);
QHBoxLayout * GBAreslayout = new QHBoxLayout(0);
+ QHBoxLayout * GBAstereolayout = new QHBoxLayout(0);
QHBoxLayout * GBAqualayout = new QHBoxLayout(0);
CBFrontendFullscreen = new QCheckBox(AGGroupBox);
@@ -704,6 +706,7 @@
CBFullscreen = new QCheckBox(AGGroupBox);
CBFullscreen->setText(QCheckBox::tr("Fullscreen"));
GBAlayout->addWidget(CBFullscreen);
+ connect(CBFullscreen, SIGNAL(stateChanged(int)), this, SLOT(setFullscreen(void)));
QLabel * quality = new QLabel(AGGroupBox);
quality->setText(QLabel::tr("Quality"));
@@ -717,6 +720,25 @@
SLQuality->setFixedWidth(150);
GBAqualayout->addWidget(SLQuality);
GBAlayout->addLayout(GBAqualayout);
+ QLabel * stereo = new QLabel(AGGroupBox);
+ stereo->setText(QLabel::tr("Stereo rendering"));
+ GBAstereolayout->addWidget(stereo);
+
+ CBStereoMode = new QComboBox(AGGroupBox);
+ CBStereoMode->addItem(QComboBox::tr("Disabled"));
+ CBStereoMode->addItem(QComboBox::tr("Red/Cyan"));
+ CBStereoMode->addItem(QComboBox::tr("Cyan/Red"));
+ CBStereoMode->addItem(QComboBox::tr("Red/Blue"));
+ CBStereoMode->addItem(QComboBox::tr("Blue/Red"));
+ CBStereoMode->addItem(QComboBox::tr("Red/Green"));
+ CBStereoMode->addItem(QComboBox::tr("Green/Red"));
+ CBStereoMode->addItem(QComboBox::tr("Side-by-side"));
+ CBStereoMode->addItem(QComboBox::tr("Top-Bottom"));
+ CBStereoMode->addItem(QComboBox::tr("Wiggle"));
+ connect(CBStereoMode, SIGNAL(currentIndexChanged(int)), this, SLOT(forceFullscreen(int)));
+
+ GBAstereolayout->addWidget(CBStereoMode);
+ GBAlayout->addLayout(GBAstereolayout);
hr = new QFrame(AGGroupBox);
hr->setFrameStyle(QFrame::HLine);
@@ -781,8 +803,39 @@
BtnBack->setFixedHeight(BtnSaveOptions->height());
BtnBack->setFixedWidth(BtnBack->width()+2);
BtnBack->setStyleSheet("QPushButton{margin: 22px 0 9px 2px;}");
+}
-// BtnAssociateFiles = addButton("");
+void PageOptions::forceFullscreen(int index)
+{
+ if (index != 0) {
+ previousFullscreenValue = this->CBFullscreen->isChecked();
+ this->CBFullscreen->setChecked(true);
+ this->CBFullscreen->setEnabled(false);
+ previousQuality = this->SLQuality->value();
+ this->SLQuality->setValue(this->SLQuality->maximum());
+ this->SLQuality->setEnabled(false);
+ } else {
+ this->CBFullscreen->setChecked(previousFullscreenValue);
+ this->CBFullscreen->setEnabled(true);
+ this->SLQuality->setValue(previousQuality);
+ this->SLQuality->setEnabled(true);
+ }
+}
+
+void PageOptions::setFullscreen(void)
+{
+ int tmp = this->CBResolution->currentIndex();
+ if (this->CBFullscreen->isChecked())
+ this->CBResolution->setCurrentIndex(0);
+ else
+ this->CBResolution->setCurrentIndex(previousResolutionIndex);
+ previousResolutionIndex = tmp;
+ this->CBResolution->setEnabled(!this->CBFullscreen->isChecked());
+}
+
+void PageOptions::trimNetNick()
+{
+ editNetNick->setText(editNetNick->text().trimmed());
}
PageNet::PageNet(QWidget* parent) : AbstractPage(parent)
@@ -931,6 +984,7 @@
// chatwidget
pChatWidget = new HWChatWidget(this, gameSettings, sdli, true);
pChatWidget->setShowReady(true); // show status bulbs by default
+ pChatWidget->setShowFollow(false); // don't show follow in nicks' context menus
pageLayout->addWidget(pChatWidget, 2, 0, 1, 2);
pageLayout->setRowStretch(1, 100);
@@ -1306,6 +1360,8 @@
compString = "Random Map";
} else if (a == 5 && compString == "+maze+") {
compString = "Random Maze";
+ } else if (a == 5 && compString == "+drawn+") {
+ compString = "Drawn Map";
}
if (compString.contains(searchText->text(), Qt::CaseInsensitive)) {
found = true;
diff -r 69f8431a5d20 -r efcea232bbf6 QTfrontend/pages.h
--- a/QTfrontend/pages.h Tue Feb 01 00:12:19 2011 +0100
+++ b/QTfrontend/pages.h Tue Feb 01 00:18:25 2011 +0100
@@ -234,6 +234,7 @@
QComboBox *CBTeamName;
IconedGroupBox *AGGroupBox;
QComboBox *CBResolution;
+ QComboBox *CBStereoMode;
QCheckBox *CBEnableSound;
QCheckBox *CBEnableFrontendSound;
QCheckBox *CBEnableMusic;
@@ -254,6 +255,16 @@
QLineEdit *editNetNick;
QSlider *SLQuality;
QCheckBox *CBFrontendEffects;
+
+private:
+ bool previousFullscreenValue;
+ int previousResolutionIndex;
+ int previousQuality;
+
+private slots:
+ void forceFullscreen(int index);
+ void setFullscreen(void);
+ void trimNetNick();
};
class PageNet : public AbstractPage
diff -r 69f8431a5d20 -r efcea232bbf6 gameServer/HWProtoNEState.hs
--- a/gameServer/HWProtoNEState.hs Tue Feb 01 00:12:19 2011 +0100
+++ b/gameServer/HWProtoNEState.hs Tue Feb 01 00:18:25 2011 +0100
@@ -13,7 +13,7 @@
handleCmd_NotEntered clID clients _ ["NICK", newNick]
| not . null $ nick client = [ProtocolError "Nickname already chosen"]
- | haveSameNick = [AnswerThisClient ["WARNING", "Nickname already in use"], ByeClient ""]
+ | haveSameNick = [AnswerThisClient ["WARNING", "Nickname already in use"], ByeClient "Nickname already in use"]
| illegalName newNick = [ByeClient "Illegal nickname"]
| otherwise =
ModifyClient (\c -> c{nick = newNick}) :
diff -r 69f8431a5d20 -r efcea232bbf6 gameServer/hedgewars-server.cabal
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/gameServer/hedgewars-server.cabal Tue Feb 01 00:18:25 2011 +0100
@@ -0,0 +1,33 @@
+Name: hedgewars-server
+Version: 0.1
+Synopsis: hedgewars server
+Description: hedgewars server
+Homepage: http://www.hedgewars.org/
+License: GPL-2
+Author: unC0Rr
+Maintainer: unC0Rr@hedgewars.org
+Category: Game
+Build-type: Simple
+Cabal-version: >=1.2
+
+
+Executable hedgewars-server
+ main-is: hedgewars-server.hs
+
+ Build-depends:
+ base >= 4,
+ unix,
+ containers,
+ array,
+ bytestring,
+ network-bytestring,
+ network,
+ time,
+ stm,
+ mtl,
+ dataenc,
+ hslogger,
+ process,
+ utf8-string
+
+ ghc-options: -O2
\ No newline at end of file
diff -r 69f8431a5d20 -r efcea232bbf6 hedgewars/ArgParsers.inc
--- a/hedgewars/ArgParsers.inc Tue Feb 01 00:12:19 2011 +0100
+++ b/hedgewars/ArgParsers.inc Tue Feb 01 00:18:25 2011 +0100
@@ -8,6 +8,7 @@
end;
procedure internalStartGameWithParameters();
+var tmp: LongInt;
begin
val(ParamStr(2), cScreenWidth);
val(ParamStr(3), cScreenHeight);
@@ -23,7 +24,9 @@
cAltDamage:= ParamStr(13) = '1';
UserNick:= DecodeBase64(ParamStr(14));
val(ParamStr(15), cReducedQuality);
- cLocaleFName:= ParamStr(16)
+ val(ParamStr(16), tmp);
+ cStereoMode:= TStereoMode(max(0, min(ord(high(TStereoMode)), tmp)));
+ cLocaleFName:= ParamStr(17);
end;
procedure setVideo(screenWidth: LongInt; screenHeight: LongInt; bitsStr: LongInt);
diff -r 69f8431a5d20 -r efcea232bbf6 hedgewars/GSHandlers.inc
--- a/hedgewars/GSHandlers.inc Tue Feb 01 00:12:19 2011 +0100
+++ b/hedgewars/GSHandlers.inc Tue Feb 01 00:18:25 2011 +0100
@@ -176,7 +176,15 @@
procedure CheckCollision(Gear: PGear); inline;
begin
- if TestCollisionXwithGear(Gear, hwSign(Gear^.X)) or TestCollisionYwithGear(Gear, hwSign(Gear^.Y)
+ if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) or TestCollisionYwithGear(Gear, hwSign(Gear^.dY)
+ )
+ then Gear^.State := Gear^.State or gstCollision
+ else Gear^.State := Gear^.State and not gstCollision
+end;
+
+procedure CheckCollisionWithLand(Gear: PGear); inline;
+begin
+ if TestCollisionX(Gear, hwSign(Gear^.dX)) or TestCollisionY(Gear, hwSign(Gear^.dY)
)
then Gear^.State := Gear^.State or gstCollision
else Gear^.State := Gear^.State and not gstCollision
@@ -207,7 +215,7 @@
//else
// PlaySound(sndOw1, Gear^.Hedgehog^.Team^.voicepack);
- ApplyDamage(Gear, dmg, dsFall);
+ ApplyDamage(Gear, CurrentHedgehog, dmg, dsFall);
end
end;
@@ -233,10 +241,10 @@
AllInactive := false;
Gear^.Y := Gear^.Y + cDrownSpeed;
Gear^.X := Gear^.X + Gear^.dX * cDrownSpeed;
- if (cWaterOpacity > $FE) or (hwRound(Gear^.Y) > Gear^.Radius + cWaterLine + cVisibleWater) then
+ if (not SuddenDeathDmg and (cWaterOpacity > $FE)) or (SuddenDeathDmg and (cSDWaterOpacity > $FE)) or (hwRound(Gear^.Y) > Gear^.Radius + cWaterLine + cVisibleWater) then
DeleteGear(Gear);
// Create some bubbles (0.5% might be better but causes too few bubbles sometimes)
- if (cWaterOpacity < $FF) and ((GameTicks and $1F) = 0) then
+ if ((not SuddenDeathDmg and (cWaterOpacity < $FF)) or (SuddenDeathDmg and (cSDWaterOpacity < $FF))) and ((GameTicks and $1F) = 0) then
if (Gear^.Kind = gtHedgehog) and (Random(4) = 0) then
AddVisualGear(hwRound(Gear^.X) - Gear^.Radius, hwRound(Gear^.Y) - Gear^.Radius,
vgtBubble)
@@ -367,7 +375,7 @@
begin
CheckCollision(Gear);
if (Gear^.State and gstCollision) <> 0 then
- doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 20, EXPLDontDraw or EXPLNoGfx);
+ doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 20, Gear^.Hedgehog, EXPLDontDraw or EXPLNoGfx);
end;
if (Gear^.Kind = gtGasBomb) and ((GameTicks mod 200) = 0) then
@@ -380,13 +388,13 @@
if Gear^.Timer = 0 then
begin
case Gear^.Kind of
- gtBomb: doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, EXPLAutoSound);
- gtBall: doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 40, EXPLAutoSound);
+ gtBomb: doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, Gear^.Hedgehog, EXPLAutoSound);
+ gtBall: doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 40, Gear^.Hedgehog, EXPLAutoSound);
gtClusterBomb:
begin
x := hwRound(Gear^.X);
y := hwRound(Gear^.Y);
- doMakeExplosion(x, y, 20, EXPLAutoSound);
+ doMakeExplosion(x, y, 20, Gear^.Hedgehog, EXPLAutoSound);
for i:= 0 to 4 do
begin
dX := rndSign(GetRandom * _0_1) + Gear^.dX / 5;
@@ -398,7 +406,7 @@
begin
x := hwRound(Gear^.X);
y := hwRound(Gear^.Y);
- doMakeExplosion(x, y, 75, EXPLAutoSound);
+ doMakeExplosion(x, y, 75, Gear^.Hedgehog, EXPLAutoSound);
for i:= 0 to 5 do
begin
dX := rndSign(GetRandom * _0_1) + Gear^.dX / 5;
@@ -410,7 +418,7 @@
begin
x := hwRound(Gear^.X);
y := hwRound(Gear^.Y);
- doMakeExplosion(x, y, 90, EXPLAutoSound);
+ doMakeExplosion(x, y, 90, Gear^.Hedgehog, EXPLAutoSound);
for i:= 0 to 127 do
begin
@@ -424,7 +432,7 @@
end;
gtGasBomb:
begin
- doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 20, EXPLAutoSound);
+ doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 20, Gear^.Hedgehog, EXPLAutoSound);
for i:= 0 to 2 do
begin
x:= GetRandom(60);
@@ -501,7 +509,7 @@
doStepFallingGear(Gear);
if (Gear^.State and gstCollision) <> 0 then
begin
- doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), Gear^.Timer, EXPLAutoSound);
+ doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), Gear^.Timer, Gear^.Hedgehog, EXPLAutoSound);
DeleteGear(Gear);
exit
end;
@@ -520,7 +528,7 @@
doStepFallingGear(Gear);
if (Gear^.State and gstCollision) <> 0 then
begin
- doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, EXPLAutoSound);
+ doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, Gear^.Hedgehog, EXPLAutoSound);
DeleteGear(Gear);
exit
end;
@@ -563,6 +571,7 @@
move, allpx: Boolean;
s: PSDL_Surface;
p: PLongwordArray;
+ oAlpha, nAlpha: byte;
begin
if GameTicks and $7 = 0 then
begin
@@ -590,49 +599,86 @@
move:= false;
// move back to cloud layer
if yy > cWaterLine then move:= true
- else if ((yy and LAND_HEIGHT_MASK) = 0) and ((xx and LAND_WIDTH_MASK) = 0) and (Land[yy, xx] > 255) then
+ else if ((yy and LAND_HEIGHT_MASK) <> 0) or ((xx and LAND_WIDTH_MASK) <> 0) then move:=true
+ // Solid pixel encountered
+ else if (Land[yy, xx] <> 0) then
begin
- // we've collided with land. draw some stuff and get back into the clouds
- move:= true;
- if (CurAmmoGear = nil) or (CurAmmoGear^.Kind <> gtRope) then
+ // If there's room below keep falling
+ if (((yy-1) and LAND_HEIGHT_MASK) = 0) and (Land[yy-1, xx] = 0) then
+ begin
+ X:= X - cWindSpeed * 1600 - dX;
+ end
+ // If there's room below, on the sides, fill the gaps
+ else if (((yy-1) and LAND_HEIGHT_MASK) = 0) and (((xx-(1*hwSign(cWindSpeed))) and LAND_WIDTH_MASK) = 0) and (Land[yy-1, (xx-(1*hwSign(cWindSpeed)))] = 0) then
+ begin
+ X:= X - _0_8 * hwSign(cWindSpeed);
+ Y:= Y - dY - cGravity * vobFallSpeed * 8;
+ end
+ else if (((yy-1) and LAND_HEIGHT_MASK) = 0) and (((xx-(2*hwSign(cWindSpeed))) and LAND_WIDTH_MASK) = 0) and (Land[yy-1, (xx-(2*hwSign(cWindSpeed)))] = 0) then
begin
-////////////////////////////////// TODO - ASK UNC0RR FOR A GOOD HOME FOR THIS ////////////////////////////////////
- if cWindSpeed * 1600 + dX < _0 then i:= -1
- else i:= 1;
- if (yy > 0) and ((Land[yy-1, xx] and $FF00) = 0) then dec(yy)
- else dec(xx, i);
- dec(yy,2);
- dec(xx,i);
- s:= SpritesData[sprSnow].Surface;
- p:= s^.pixels;
- allpx:= true;
- for py:= 0 to Pred(s^.h) do
+ X:= X - _0_8 * 2 * hwSign(cWindSpeed);
+ Y:= Y - dY - cGravity * vobFallSpeed * 8;
+ end
+ else if (((yy-1) and LAND_HEIGHT_MASK) = 0) and (((xx+(1*hwSign(cWindSpeed))) and LAND_WIDTH_MASK) = 0) and (Land[yy-1, (xx+(1*hwSign(cWindSpeed)))] = 0) then
+ begin
+ X:= X + _0_8 * hwSign(cWindSpeed);
+ Y:= Y - dY - cGravity * vobFallSpeed * 8;
+ end
+ else if (((yy-1) and LAND_HEIGHT_MASK) = 0) and (((xx+(2*hwSign(cWindSpeed))) and LAND_WIDTH_MASK) = 0) and (Land[yy-1, (xx+(2*hwSign(cWindSpeed)))] = 0) then
+ begin
+ X:= X + _0_8 * 2 * hwSign(cWindSpeed);
+ Y:= Y - dY - cGravity * vobFallSpeed * 8;
+ end
+ // if there's an hog/object below do nothing
+ else if ((((yy+1) and LAND_HEIGHT_MASK) = 0) and ((Land[yy+1, xx] and $FF) <> 0))
+ then move:=true
+ else
+ begin
+ // we've collided with land. draw some stuff and get back into the clouds
+ move:= true;
+ if (CurAmmoGear = nil) or (CurAmmoGear^.Kind <> gtRope) then
begin
- for px:= 0 to Pred(s^.w) do
- if (((yy + py) and LAND_HEIGHT_MASK) = 0) and (((xx + px) and LAND_WIDTH_MASK) = 0) and
- ((Land[yy + py, xx + px] and $FF00) = 0) then
- begin
- if (cReducedQuality and rqBlurryLand) = 0 then
- LandPixels[yy + py, xx + px]:= p^[px]
- else
- LandPixels[(yy + py) div 2, (xx + px) div 2]:= p^[px]
- end
- else allpx:= false;
- p:= @(p^[s^.pitch shr 2])
- end;
- if allpx then UpdateLandTexture(xx, 4, yy, 4)
- else if ((yy and LAND_HEIGHT_MASK) = 0) and ((xx and LAND_WIDTH_MASK) = 0) then UpdateLandTexture(xx, 1, yy, 1);
- inc(yy,2);
- inc(xx,i);
- if ((xx and LAND_WIDTH_MASK) = 0) and ((yy and LAND_HEIGHT_MASK) = 0) then Land[yy, xx]:= Land[yy, xx] or lfObject;
- if yy > 0 then
- begin
- Land[yy-1, xx]:= Land[yy-1, xx] or lfObject;
- if ((xx-i and LAND_WIDTH_MASK) = 0) then Land[yy-1, xx-i]:= Land[yy-1, xx-i] or lfObject;
- end;
- if ((xx-i and LAND_WIDTH_MASK) = 0) and ((yy and LAND_HEIGHT_MASK) = 0) then Land[yy, xx-i]:= Land[yy, xx-i] or lfObject
-////////////////////////////////// TODO - ASK UNC0RR FOR A GOOD HOME FOR THIS ////////////////////////////////////
- end
+ ////////////////////////////////// TODO - ASK UNC0RR FOR A GOOD HOME FOR THIS ////////////////////////////////////
+ dec(yy,3);
+ dec(xx,1);
+ s:= SpritesData[sprSnow].Surface;
+ p:= s^.pixels;
+ allpx:= true;
+ for py:= 0 to Pred(s^.h) do
+ begin
+ for px:= 0 to Pred(s^.w) do
+ if ((((yy + py) and LAND_HEIGHT_MASK) = 0) and (((xx + px) and LAND_WIDTH_MASK) = 0)) and ((Land[yy + py, xx + px] and $FF) = 0) then
+ begin
+ Land[yy + py, xx + px]:= Land[yy + py, xx + px] or lfObject;
+ if (cReducedQuality and rqBlurryLand) = 0 then
+ begin
+ LandPixels[yy + py, xx + px]:= addBgColor(LandPixels[yy + py, xx + px], p^[px]);
+ end
+ else
+ begin
+ LandPixels[(yy + py) div 2, (xx + px) div 2]:= addBgColor(LandPixels[(yy + py) div 2, (xx + px) div 2], p^[px]);
+ end;
+ end
+ else allpx:= false;
+ p:= @(p^[s^.pitch shr 2])
+ end;
+
+
+ Land[py, px+1]:= lfBasic;
+
+ if allpx then UpdateLandTexture(xx, Pred(s^.h), yy, Pred(s^.w))
+ else
+ begin
+ UpdateLandTexture(
+ max(0, min(LAND_WIDTH, xx)),
+ min(LAND_WIDTH - xx, Pred(s^.w)),
+ max(0, min(LAND_WIDTH, yy)),
+ min(LAND_HEIGHT - yy, Pred(s^.h))
+ );
+ end;
+ ////////////////////////////////// TODO - ASK UNC0RR FOR A GOOD HOME FOR THIS ////////////////////////////////////
+ end
+ end;
end;
if move then
begin
@@ -720,7 +766,7 @@
if ((Gear^.State and gstCollision) <> 0) or (Gear^.Timer = 0) then
begin
StopSound(Gear^.SoundChannel);
- doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, EXPLAutoSound);
+ doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, Gear^.Hedgehog, EXPLAutoSound);
DeleteGear(Gear);
end;
end;
@@ -734,7 +780,7 @@
CheckCollision(Gear);
if (Gear^.State and gstCollision) <> 0 then
begin
- doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, EXPLAutoSound);
+ doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, Gear^.Hedgehog, EXPLAutoSound);
DeleteGear(Gear);
exit
end;
@@ -851,7 +897,7 @@
dec(Gear^.Health, Gear^.Damage);
Gear^.Damage := 0
end;
- if ((Gear^.State and gstDrowning) <> 0) and (Gear^.Damage < Gear^.Health) and (cWaterOpacity < $FF) then
+ if ((Gear^.State and gstDrowning) <> 0) and (Gear^.Damage < Gear^.Health) and ((not SuddenDeathDmg and (cWaterOpacity < $FF)) or (SuddenDeathDmg and (cSDWaterOpacity < $FF))) then
begin
for i:=(Gear^.Health - Gear^.Damage) * 4 downto 0 do
begin
@@ -1037,7 +1083,7 @@
if (Gear^.Timer mod 33) = 0 then
begin
HHGear^.State := HHGear^.State or gstNoDamage;
- doMakeExplosion(x, y + 7, 6, EXPLDontDraw);
+ doMakeExplosion(x, y + 7, 6, Gear^.Hedgehog, EXPLDontDraw);
HHGear^.State := HHGear^.State and not gstNoDamage
end;
@@ -1316,19 +1362,19 @@
if (GameFlags and gfMoreWind) <> 0 then HHGear^.dX := HHGear^.dX + cWindSpeed / HHGear^.Density;
end;
+ // vector between hedgehog and rope attaching point
ropeDx := HHGear^.X - Gear^.X;
- // vector between hedgehog and rope attaching point
ropeDy := HHGear^.Y - Gear^.Y;
mdX := ropeDx + HHGear^.dX;
mdY := ropeDy + HHGear^.dY;
len := _1 / Distance(mdX, mdY);
+ // rope vector plus hedgehog direction vector normalized
mdX := mdX * len;
- // rope vector plus hedgehog direction vector normalized
mdY := mdY * len;
+ // for visual purposes only
Gear^.dX := mdX;
- // for visual purposes only
Gear^.dY := mdY;
/////
@@ -1456,35 +1502,45 @@
HHGear^.dY := HHGear^.dY * len;
end;
- haveCollision:= false;
- if RopePoints.Count > 0 then
- begin
- ly:= hwRound(RopePoints.ar[0].Y);
- lx:= hwRound(RopePoints.ar[0].X)
- end
- else if Gear^.Elasticity.QWordValue > 0 then
- begin
- ly:= hwRound(Gear^.Y);
- lx:= hwRound(Gear^.X)
- end;
-(* // just in case it turns out we have rounding problems
- i:= -1;
- while not haveCollision and (i < 2) do
+ haveCollision:= ((hwRound(Gear^.Y) and LAND_HEIGHT_MASK) = 0) and ((hwRound(Gear^.X) and LAND_WIDTH_MASK) = 0) and ((Land[hwRound(Gear^.Y), hwRound(Gear^.X)] and $FF00) <> 0);
+
+ if not haveCollision then
begin
- j:= -1;
- while not haveCollision and (j < 2) do
+ // backup gear location
+ tx:= Gear^.X;
+ ty:= Gear^.Y;
+
+ if RopePoints.Count > 0 then
+ begin
+ // set gear location to the remote end of the rope, the attachment point
+ Gear^.X:= RopePoints.ar[0].X;
+ Gear^.Y:= RopePoints.ar[0].Y;
+ end;
+
+ CheckCollisionWithLand(Gear);
+ // if we haven't found any collision yet then check the otheer side too
+ if (Gear^.State and gstCollision) = 0 then
begin
- haveCollision:= ((((ly + i) and LAND_HEIGHT_MASK) = 0) and
- (((lx + j) and LAND_WIDTH_MASK) = 0) and
- ((Land[ly + i, lx + j] and $FF00) <> 0));
- inc(j)
+ Gear^.dX.isNegative:= not Gear^.dX.isNegative;
+ Gear^.dY.isNegative:= not Gear^.dY.isNegative;
+ CheckCollisionWithLand(Gear);
+ Gear^.dX.isNegative:= not Gear^.dX.isNegative;
+ Gear^.dY.isNegative:= not Gear^.dY.isNegative;
end;
- inc(i)
- end; *)
- if ((Gear^.Message and gmAttack) <> 0) or
- (((ly and LAND_HEIGHT_MASK) = 0) and
- ((lx and LAND_WIDTH_MASK) = 0) and
- ((Land[ly, lx] and $FF00) = 0)) then
+
+ haveCollision:= (Gear^.State and gstCollision) <> 0;
+
+ // restore gear location
+ Gear^.X:= tx;
+ Gear^.Y:= ty;
+ end;
+
+ // if the attack key is pressed, lose rope contact as well
+ if (Gear^.Message and gmAttack) <> 0 then
+ haveCollision:= false;
+
+ if not haveCollision then
+ begin
if (Gear^.State and gsttmpFlag) <> 0 then
with Gear^.Hedgehog^ do
begin
@@ -1494,10 +1550,11 @@
else
DeleteMe
end
- else
+ end
else
if (Gear^.State and gsttmpFlag) = 0 then
Gear^.State := Gear^.State or gsttmpFlag;
+
end;
procedure doStepRopeAttach(Gear: PGear);
@@ -1574,9 +1631,7 @@
end;
end;
- if ((hwRound(Gear^.Y) and LAND_HEIGHT_MASK) = 0) and ((hwRound(Gear^.X) and LAND_WIDTH_MASK) = 0) and ((Land[hwRound(Gear^.Y), hwRound(Gear^.X)] and $FF00) <> 0) then
- Gear^.State:= Gear^.State or gstCollision
- else Gear^.State:= Gear^.State and not gstCollision;
+ CheckCollisionWithLand(Gear);
if (Gear^.State and gstCollision) <> 0 then
if Gear^.Elasticity < _10 then
@@ -1655,7 +1710,7 @@
(cMineDudPercent = 0) or
(getRandom(100) > cMineDudPercent) then
begin
- doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, EXPLAutoSound);
+ doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, Gear^.Hedgehog, EXPLAutoSound);
DeleteGear(Gear)
end
else
@@ -1676,41 +1731,45 @@
////////////////////////////////////////////////////////////////////////////////
procedure doStepSMine(Gear: PGear);
begin
- DeleteCI(Gear);
// TODO: do real calculation?
if TestCollisionXwithGear(Gear, 2) or TestCollisionYwithGear(Gear, -2) or TestCollisionXwithGear(Gear, -2) or TestCollisionYwithGear(Gear, 2) then
begin
if (hwAbs(Gear^.dX) > _0) or (hwAbs(Gear^.dY) > _0) then
+ begin
PlaySound(sndRopeAttach);
- Gear^.dX:= _0;
- Gear^.dY:= _0;
+ Gear^.dX:= _0;
+ Gear^.dY:= _0;
+ AddGearCI(Gear);
+ end;
end
else
begin
+ DeleteCI(Gear);
doStepFallingGear(Gear);
AllInactive := false;
CalcRotationDirAngle(Gear);
end;
- AddGearCI(Gear);
if ((Gear^.State and gsttmpFlag) <> 0) and (Gear^.Health <> 0) then
+ begin
if ((Gear^.State and gstAttacking) = 0) then
begin
if ((GameTicks and $1F) = 0) then
if CheckGearNear(Gear, gtHedgehog, 46, 32) <> nil then Gear^.State := Gear^.State or
gstAttacking
end
- else // gstAttacking <> 0
- begin
- AllInactive := false;
- if (Gear^.Timer and $FF) = 0 then PlaySound(sndMineTick);
- if Gear^.Timer = 0 then
+ else // gstAttacking <> 0
begin
- doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 30, EXPLAutoSound);
- DeleteGear(Gear);
- exit
- end;
- dec(Gear^.Timer);
+ AllInactive := false;
+ if (Gear^.Timer and $FF) = 0 then PlaySound(sndMineTick);
+ if Gear^.Timer = 0 then
+ begin
+ doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 30, Gear^.Hedgehog, EXPLAutoSound);
+ DeleteGear(Gear);
+ exit
+ end;
+ dec(Gear^.Timer);
+ end
end
else // gsttmpFlag = 0
if TurnTimeLeft = 0 then Gear^.State := Gear^.State or gsttmpFlag;
@@ -1726,7 +1785,7 @@
makeHogsWorry(Gear^.X, Gear^.Y, 75);
if Gear^.Timer = 0 then
begin
- doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 75, EXPLAutoSound);
+ doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 75, Gear^.Hedgehog, EXPLAutoSound);
DeleteGear(Gear);
exit
end;
@@ -1819,6 +1878,7 @@
k: TGearType;
exBoom: boolean;
dX, dY: HWFloat;
+ hog: PHedgehog;
begin
k := Gear^.Kind;
exBoom := false;
@@ -1855,18 +1915,20 @@
begin
x := hwRound(Gear^.X);
y := hwRound(Gear^.Y);
+ hog:= Gear^.Hedgehog;
+
DeleteGear(Gear);
// <-- delete gear!
if k = gtCase then
begin
- doMakeExplosion(x, y, 25, EXPLAutoSound);
+ doMakeExplosion(x, y, 25, hog, EXPLAutoSound);
for i:= 0 to 63 do
AddGear(x, y, gtFlame, 0, _0, _0, 0);
end
else if k = gtExplosives then
begin
- doMakeExplosion(x, y, 75, EXPLAutoSound);
+ doMakeExplosion(x, y, 75, hog, EXPLAutoSound);
for i:= 0 to 31 do
begin
dX := AngleCos(i * 64) * _0_5 * (getrandom + _1);
@@ -1917,28 +1979,12 @@
if (Gear^.Tag = 0) and (Gear^.Timer < 1000) then
inc(Gear^.Timer)
else if Gear^.Tag = 1 then
- begin
- Gear^.Tag := 2;
- if (TrainingFlags and tfTimeTrial) <> 0 then
- begin
- inc(TurnTimeLeft, TrainingTimeInc);
-
- if TrainingTimeInc > TrainingTimeInM then
- dec(TrainingTimeInc, TrainingTimeInD);
- if TurnTimeLeft > TrainingTimeMax then
- TurnTimeLeft := TrainingTimeMax;
- end;
- end
+ Gear^.Tag := 2
else if Gear^.Tag = 2 then
if Gear^.Timer > 0 then
dec(Gear^.Timer)
else
begin
- if (TrainingFlags and tfTargetRespawn) <> 0 then
- begin
- TrainingTargetGear := AddGear(0, 0, gtTarget, 0, _0, _0, 0);
- FindPlace(TrainingTargetGear, false, 0, LAND_WIDTH);
- end;
DeleteGear(Gear);
exit;
end;
@@ -2067,7 +2113,7 @@
AmmoShove(Gear, 4, 150);
Gear^.Radius := 1;
end
- else if ((GameTicks and $3) = 3) then doMakeExplosion(gX, gY, 6, 0);//, EXPLNoDamage);
+ else if ((GameTicks and $3) = 3) then doMakeExplosion(gX, gY, 6, Gear^.Hedgehog, 0);//, EXPLNoDamage);
//DrawExplosion(gX, gY, 4);
if ((GameTicks and $7) = 0) and (Random(2) = 0) then
for i:= 1 to Random(2)+1 do
@@ -2206,14 +2252,16 @@
exit
end;
- if not TestCollisionXwithGear(HHGear, hwSign(HHGear^.dX)) then
- HHGear^.X := HHGear^.X + cWindSpeed * 200;
+ HHGear^.X := HHGear^.X + cWindSpeed * 200;
if (Gear^.Message and gmLeft) <> 0 then HHGear^.X := HHGear^.X - cMaxWindSpeed * 80
else if (Gear^.Message and gmRight) <> 0 then HHGear^.X := HHGear^.X + cMaxWindSpeed * 80;
if (Gear^.Message and gmUp) <> 0 then HHGear^.Y := HHGear^.Y - cGravity * 40
else if (Gear^.Message and gmDown) <> 0 then HHGear^.Y := HHGear^.Y + cGravity * 40;
+ // don't drift into obstacles
+ if TestCollisionXwithGear(HHGear, hwSign(HHGear^.dX)) then
+ HHGear^.X := HHGear^.X - int2hwFloat(hwSign(HHGear^.dX));
HHGear^.Y := HHGear^.Y + cGravity * 100;
Gear^.X := HHGear^.X;
Gear^.Y := HHGear^.Y
@@ -2255,7 +2303,7 @@
2: FollowGear := AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtNapalmBomb, 0, cBombsSpeed *
Gear^.Tag, _0, 0);
3: FollowGear := AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtDrill, gsttmpFlag, cBombsSpeed *
- Gear^.Tag, _0, 0);
+ Gear^.Tag, _0, Gear^.Timer + 1);
//4: FollowGear := AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtWaterMelon, 0, cBombsSpeed *
// Gear^.Tag, _0, 5000);
end;
@@ -2286,9 +2334,13 @@
Gear^.Y := int2hwFloat(topY-300);
Gear^.dX := int2hwFloat(TargetPoint.X - 5 * Gear^.Tag * 15);
- if (int2hwFloat(TargetPoint.Y) - Gear^.Y > _0) then
- Gear^.dX := Gear^.dX - cBombsSpeed * hwSqrt((int2hwFloat(TargetPoint.Y) - Gear^.Y) * 2 /
- cGravity) * Gear^.Tag;
+ // calcs for Napalm Strike, so that it will hit the target (without wind at least :P)
+ if (Gear^.State = 2) then
+ Gear^.dX := Gear^.dX - cBombsSpeed * Gear^.Tag * 1000 // ^.Timer of gtNapalmBomb, make it a constant var if you prefer that :P
+ // calcs for regular falling gears
+ else if (int2hwFloat(TargetPoint.Y) - Gear^.Y > _0) then
+ Gear^.dX := Gear^.dX - cBombsSpeed * hwSqrt((int2hwFloat(TargetPoint.Y) - Gear^.Y) * 2 /
+ cGravity) * Gear^.Tag;
Gear^.Health := 6;
Gear^.doStep := @doStepAirAttackWork;
@@ -2302,7 +2354,7 @@
doStepFallingGear(Gear);
if (Gear^.State and gstCollision) <> 0 then
begin
- doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 30, EXPLAutoSound);
+ doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 30, Gear^.Hedgehog, EXPLAutoSound);
DeleteGear(Gear);
performRumble();
exit
@@ -2329,7 +2381,7 @@
if (Distance(tx - x, ty - y) > _256) or
not TryPlaceOnLand(TargetPoint.X - SpritesData[sprAmGirder].Width div 2,
TargetPoint.Y - SpritesData[sprAmGirder].Height div 2,
- sprAmGirder, Gear^.State, true) then
+ sprAmGirder, Gear^.State, true, false) then
begin
PlaySound(sndDenied);
HHGear^.Message := HHGear^.Message and not gmAttack;
@@ -2358,6 +2410,7 @@
Gear^.Hedgehog^.Unplaced := false;
HHGear := Gear^.Hedgehog^.Gear;
HHGear^.Y := HHGear^.Y + HHGear^.dY;
+ HHGear^.X := HHGear^.X + HHGear^.dX;
// hedgehog falling to collect cases
HHGear^.dY := HHGear^.dY + cGravity;
if TestCollisionYwithGear(HHGear, 1)
@@ -2389,7 +2442,7 @@
HHGear := Gear^.Hedgehog^.Gear;
if not TryPlaceOnLand(TargetPoint.X - SpritesData[sprHHTelepMask].Width div 2,
TargetPoint.Y - SpritesData[sprHHTelepMask].Height div 2,
- sprHHTelepMask, 0, false) then
+ sprHHTelepMask, 0, false, false) then
begin
HHGear^.Message := HHGear^.Message and not gmAttack;
HHGear^.State := HHGear^.State and not gstAttacking;
@@ -2501,7 +2554,7 @@
doStepFallingGear(Gear);
if (Gear^.State and gstCollision) <> 0 then
begin
- doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 20, EXPLAutoSound);
+ doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 20, Gear^.Hedgehog, EXPLAutoSound);
Gear^.dX.isNegative := not dxn;
Gear^.dY.isNegative := not dyn;
@@ -2571,7 +2624,7 @@
if Gear^.Health < Gear^.Damage then
begin
- doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 30, EXPLAutoSound);
+ doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 30, Gear^.Hedgehog, EXPLAutoSound);
AfterAttack;
DeleteGear(Gear);
DeleteGear(HHGear);
@@ -2631,7 +2684,7 @@
inc(Gear^.Tag);
if Gear^.Tag < 2250 then exit;
- doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), cakeDmg, EXPLAutoSound);
+ doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), cakeDmg, Gear^.Hedgehog, EXPLAutoSound);
AfterAttack;
DeleteGear(Gear)
end;
@@ -2885,6 +2938,9 @@
end;
////////////////////////////////////////////////////////////////////////////////
+procedure doStepDrill(Gear: PGear);
+forward;
+
procedure doStepDrillDrilling(Gear: PGear);
var
t: PGearArray;
@@ -2913,19 +2969,26 @@
if (Gear^.Timer = 0)
or (t^.Count <> 0)
or (not TestCollisionYWithGear(Gear, hwSign(Gear^.dY))
- and not TestCollisionXWithGear(Gear, hwSign(Gear^.dX)))
+ and not TestCollisionXWithGear(Gear, hwSign(Gear^.dX))
+ and ((Gear^.State and gsttmpFlag) = 0))
// CheckLandValue returns true if the type isn't matched
or not CheckLandValue(hwRound(Gear^.X), hwRound(Gear^.Y), lfIndestructible) then
- begin
+ begin
//out of time or exited ground
StopSound(Gear^.SoundChannel);
if (Gear^.State and gsttmpFlag) <> 0 then
- doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 30, EXPLAutoSound)
+ doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 30, Gear^.Hedgehog, EXPLAutoSound)
else
- doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, EXPLAutoSound);
+ doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, Gear^.Hedgehog, EXPLAutoSound);
DeleteGear(Gear);
exit
- end;
+ end
+ else if not TestCollisionYWithGear(Gear, hwSign(Gear^.dY)) and not TestCollisionXWithGear(Gear, hwSign(Gear^.dX)) then
+ begin
+ StopSound(Gear^.SoundChannel);
+ Gear^.Tag := 1;
+ Gear^.doStep := @doStepDrill
+ end;
dec(Gear^.Timer);
end;
@@ -2967,17 +3030,29 @@
begin
//explode right on contact with HH
if (Gear^.State and gsttmpFlag) <> 0 then
- doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 30, EXPLAutoSound)
+ doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 30, Gear^.Hedgehog, EXPLAutoSound)
else
- doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, EXPLAutoSound);
+ doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, Gear^.Hedgehog, EXPLAutoSound);
DeleteGear(Gear);
exit;
end;
Gear^.SoundChannel := LoopSound(sndDrillRocket);
Gear^.doStep := @doStepDrillDrilling;
+ if (Gear^.State and gsttmpFlag) <> 0 then
+ gear^.RenderTimer:= true;
dec(Gear^.Timer)
end
+ else if ((Gear^.State and gsttmpFlag) <> 0) and (Gear^.Tag <> 0) then
+ begin
+ if Gear^.Timer = 0 then
+ begin
+ doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 30, Gear^.Hedgehog, EXPLAutoSound);
+ DeleteGear(Gear);
+ end
+ else
+ dec(Gear^.Timer);
+ end;
end;
////////////////////////////////////////////////////////////////////////////////
@@ -3037,14 +3112,11 @@
begin
AllInactive := false;
- if ((TrainingFlags and tfRCPlane) = 0) and (Gear^.Timer > 0) then dec(Gear^.Timer);
-
- if ((TrainingFlags and tfRCPlane) <> 0) and ((TrainingFlags and tfTimeTrial) <> 0 ) and (
- TimeTrialStartTime = 0) then TimeTrialStartTime := RealTicks;
-
HHGear := Gear^.Hedgehog^.Gear;
FollowGear := Gear;
+ if Gear^.Timer > 0 then dec(Gear^.Timer);
+
fChanged := false;
if ((HHGear^.State and gstHHDriven) = 0) or (Gear^.Timer = 0) then
begin
@@ -3084,73 +3156,44 @@
Gear^.X := Gear^.X + Gear^.dX;
Gear^.Y := Gear^.Y + Gear^.dY;
- if (TrainingFlags and tfRCPlane) = 0 then
+ if (GameTicks and $FF) = 0 then
+ if Gear^.Timer < 3500 then
+ AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtEvilTrace)
+ else
+ AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtSmokeTrace);
+
+ if ((HHGear^.Message and gmAttack) <> 0) and (Gear^.Health <> 0) then
begin
- if (GameTicks and $FF) = 0 then
- if Gear^.Timer < 3500 then
- AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtEvilTrace)
- else
- AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtSmokeTrace);
-
- if ((HHGear^.Message and gmAttack) <> 0) and (Gear^.Health <> 0) then
- begin
- HHGear^.Message := HHGear^.Message and not gmAttack;
- AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtAirBomb, 0, Gear^.dX * _0_5, Gear^.dY *
- _0_5, 0);
- dec(Gear^.Health)
- end;
-
- if ((HHGear^.Message and gmLJump) <> 0)
- and ((Gear^.State and gsttmpFlag) = 0) then
- begin
- Gear^.State := Gear^.State or gsttmpFlag;
- PauseMusic;
- playSound(sndRideOfTheValkyries);
- end;
-
- // pickup bonuses
- t := CheckGearNear(Gear, gtCase, 36, 36);
- if t <> nil then
- PickUp(HHGear, t);
- end
- else
+ HHGear^.Message := HHGear^.Message and not gmAttack;
+ AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtAirBomb, 0, Gear^.dX * _0_5, Gear^.dY *
+ _0_5, 0);
+ dec(Gear^.Health)
+ end;
+
+ if ((HHGear^.Message and gmLJump) <> 0)
+ and ((Gear^.State and gsttmpFlag) = 0) then
begin
- if (GameTicks and $FF) = 0 then
- AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtSmokeTrace);
-
- // pickup targets
- t := CheckGearNear(Gear, gtTarget, 36, 36);
- if t <> nil then
- begin
- if t^.Tag <> 0 then // collect it only once
- exit;
- PlaySound(sndShotgunReload);
- t^.Tag := 1;
- TrainingTargetGear := nil;
- // remove target cursor
- exit;
- end;
-
- if (TurnTimeLeft > 0) then
- dec(TurnTimeLeft)
+ Gear^.State := Gear^.State or gsttmpFlag;
+ PauseMusic;
+ playSound(sndRideOfTheValkyries);
end;
+ // pickup bonuses
+ t := CheckGearNear(Gear, gtCase, 36, 36);
+ if t <> nil then
+ PickUp(HHGear, t);
+
CheckCollision(Gear);
- if ((Gear^.State and gstCollision) <> 0) or (((TrainingFlags and tfRCPlane) <> 0) and (
- TurnTimeLeft = 0))
- or CheckGearDrowning(Gear) then
+ if ((Gear^.State and gstCollision) <> 0) or CheckGearDrowning(Gear) then
begin
- if ((TrainingFlags and tfRCPlane) <> 0) and ((TrainingFlags and tfTimeTrial) <> 0 ) and (
- TimeTrialStopTime = 0) then TimeTrialStopTime := RealTicks;
StopSound(Gear^.SoundChannel);
StopSound(sndRideOfTheValkyries);
ResumeMusic;
- if ((Gear^.State and gstCollision) <> 0) or (((TrainingFlags and tfRCPlane) <> 0) and (
- TurnTimeLeft = 0)) then
+ if ((Gear^.State and gstCollision) <> 0) then
begin
- doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 25, EXPLAutoSound);
+ doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 25, Gear^.Hedgehog, EXPLAutoSound);
for i:= 0 to 32 do
begin
dX := AngleCos(i * 64) * _0_5 * (GetRandom + _1);
@@ -3165,10 +3208,6 @@
CurAmmoGear := nil;
if (GameFlags and gfInfAttack) = 0 then TurnTimeLeft := 14 * 125;
- if (TrainingFlags and tfRCPlane) <> 0 then
- TurnTimeLeft := 0;
- // HACK: RCPlane training allows unlimited plane starts in last 2 seconds
-
HHGear^.Message := 0;
ParseCommand('/taunt '#1, true)
end
@@ -3529,7 +3568,7 @@
if (Gear^.State and gstCollision) <> 0 then
begin
- doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 10, EXPLPoisoned, $C0E0FFE0);
+ doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 10, Gear^.Hedgehog, EXPLPoisoned, $C0E0FFE0);
PlaySound(sndEggBreak);
AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtEgg);
vg := AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtEgg);
@@ -3549,8 +3588,7 @@
////////////////////////////////////////////////////////////////////////////////
procedure doPortalColorSwitch();
-var flags: LongWord;
- CurWeapon: PAmmo;
+var CurWeapon: PAmmo;
begin
if (CurrentHedgehog <> nil)
and (CurrentHedgehog^.Gear <> nil)
@@ -3561,11 +3599,10 @@
CurrentHedgehog^.Gear^.Message := CurrentHedgehog^.Gear^.Message and not gmSwitch;
CurWeapon:= GetAmmoEntry(CurrentHedgehog^);
- flags := CurWeapon^.Timer and not 2;
- if (flags and 1) = 0 then
- CurWeapon^.Timer := flags or 1
+ if CurWeapon^.Pos <> 0 then
+ CurWeapon^.Pos := 0
else
- CurWeapon^.Timer := flags and not 1;
+ CurWeapon^.Pos := 1;
end;
end;
@@ -3834,8 +3871,7 @@
s: hwFloat;
procedure loadNewPortalBall(oldPortal: PGear; destroyGear: Boolean);
-var
- flags: LongWord;
+var
CurWeapon: PAmmo;
begin
if CurrentHedgehog <> nil then
@@ -3844,18 +3880,19 @@
CurWeapon:= GetAmmoEntry(CurrentHedgehog^);
if (CurAmmoType = amPortalGun) then
begin
- flags := CurWeapon^.Timer;
-
- if destroyGear xor ((oldPortal^.Tag and 2) = 0) then
- flags := flags or 1
- else
- flags := flags and not 1;
-
- CurWeapon^.Timer := flags and not 2;
+ if not destroyGear then
+ begin
+ // switch color of ball to opposite of oldPortal
+ if (oldPortal^.Tag and 2) = 0 then
+ CurWeapon^.Pos:= 1
+ else
+ CurWeapon^.Pos:= 0;
+ end;
+
// make the ball visible
+ CurWeapon^.Timer := 0;
end
end;
-
if destroyGear then oldPortal^.Timer:= 0;
end;
@@ -3940,11 +3977,8 @@
newPortal^.Elasticity.isNegative := not newPortal^.Elasticity.isNegative;
// make portal gun look unloaded
- CurWeapon^.Timer := CurWeapon^.Timer or 2;
-
- // set portal to the currently chosen color
- if ((CurWeapon^.Timer and 1) <> 0) then
- newPortal^.Tag := newPortal^.Tag or 2;
+ if (CurWeapon <> nil) and (CurAmmoType = amPortalGun) then
+ CurWeapon^.Timer := CurWeapon^.Timer or 2;
iterator := GearsList;
while iterator <> nil do
@@ -4040,9 +4074,9 @@
begin
r0 := GetRandom(21);
r1 := GetRandom(21);
- doMakeExplosion(hwRound(Gear^.X) - 30 - r0, hwRound(Gear^.Y) + 40, 40 + r1, 0);
- doMakeExplosion(hwRound(Gear^.X) + 30 + r1, hwRound(Gear^.Y) + 40, 40 + r0, 0);
- doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 80 + r0, EXPLAutoSound);
+ doMakeExplosion(hwRound(Gear^.X) - 30 - r0, hwRound(Gear^.Y) + 40, 40 + r1, Gear^.Hedgehog, 0);
+ doMakeExplosion(hwRound(Gear^.X) + 30 + r1, hwRound(Gear^.Y) + 40, 40 + r0, Gear^.Hedgehog, 0);
+ doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 80 + r0, Gear^.Hedgehog, EXPLAutoSound);
for r0:= 0 to 4 do
AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtNote);
Gear^.dY := odY * -1 + cGravity * 2;
@@ -4283,7 +4317,7 @@
Gear^.dX := Gear^.dX + cWindSpeed / 4;
Gear^.dY := Gear^.dY + cGravity / 100;
if (GameTicks mod 250) = 0 then
- doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 20, EXPLDontDraw or EXPLNoGfx or EXPLNoDamage or EXPLDoNotTouchAny or EXPLPoisoned);
+ doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 20, Gear^.Hedgehog, EXPLDontDraw or EXPLNoGfx or EXPLNoDamage or EXPLDoNotTouchAny or EXPLPoisoned);
AllInactive:= false;
end;
@@ -4311,7 +4345,7 @@
if (tmp^.Kind = gtHedgehog) then
begin
//tmp^.State:= tmp^.State or gstFlatened;
- ApplyDamage(tmp, tmp^.Health div 3, dsUnknown);
+ 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);
tmp2^.Hedgehog:= tmp^.Hedgehog;
@@ -4480,13 +4514,9 @@
RenderHealth(resgear^.Hedgehog^);
RecountTeamHealth(resgear^.Hedgehog^.Team);
resgear^.Hedgehog^.Effects[heResurrected]:= true;
+ // only make hat-less hedgehogs look like zombies, preserve existing hats
if resgear^.Hedgehog^.Hat = 'NoHat' then
- begin
- FreeTexture(resgear^.Hedgehog^.HatTex);
- resgear^.Hedgehog^.HatTex := Surface2Tex(
- LoadImage(Pathz[ptHats] + '/Reserved/Zombie', ifNone),
- True)
- end
+ LoadHedgehogHat(resgear, 'Reserved/Zombie');
end;
hh^.Gear^.dY := _0;
@@ -4534,7 +4564,7 @@
doStepFallingGear(Gear);
if (Gear^.Timer > 0) and ((Gear^.State and gstCollision) <> 0) then
begin
- doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 10, EXPLAutoSound);
+ doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 10, Gear^.Hedgehog, EXPLAutoSound);
gX := hwRound(Gear^.X);
gY := hwRound(Gear^.Y);
for i:= 0 to 10 do
@@ -4551,7 +4581,7 @@
end;
if (Gear^.Timer = 0) then
begin
- doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 10, EXPLAutoSound);
+ doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 10, Gear^.Hedgehog, EXPLAutoSound);
for i:= -19 to 19 do
FollowGear := AddGear(hwRound(Gear^.X) + i div 3, hwRound(Gear^.Y), gtFlame, 0, _0_001 * i, _0, 0);
DeleteGear(Gear);
@@ -4563,4 +4593,116 @@
end;
////////////////////////////////////////////////////////////////////////////////
-
+procedure doStepPlaceStructure(Gear: PGear);
+var
+ HHGear: PGear;
+ x, y, tx, ty: hwFloat;
+begin
+ AllInactive := false;
+
+ HHGear := Gear^.Hedgehog^.Gear;
+ tx := int2hwFloat(TargetPoint.X);
+ ty := int2hwFloat(TargetPoint.Y);
+ x := HHGear^.X;
+ y := HHGear^.Y;
+
+ if (Distance(tx - x, ty - y) > _256) or
+ not TryPlaceOnLand(TargetPoint.X - SpritesData[sprAmGirder].Width div 2,
+ TargetPoint.Y - SpritesData[sprAmGirder].Height div 2,
+ sprAmGirder, Gear^.State, true, false) then
+ begin
+ PlaySound(sndDenied);
+ HHGear^.Message := HHGear^.Message and not gmAttack;
+ HHGear^.State := HHGear^.State and not gstAttacking;
+ HHGear^.State := HHGear^.State or gstHHChooseTarget;
+ isCursorVisible := true;
+ DeleteGear(Gear)
+ end
+ else
+ begin
+ PlaySound(sndPlaced);
+ DeleteGear(Gear);
+ AfterAttack;
+ end;
+
+ HHGear^.State := HHGear^.State and not (gstAttacking or gstAttacked);
+ HHGear^.Message := HHGear^.Message and not gmAttack;
+ TargetPoint.X := NoPointX
+end;
+
+procedure doStepStructure(Gear: PGear);
+var
+ i, x, y: LongInt;
+ dX, dY: HWFloat;
+ hog: PHedgehog;
+begin
+ if Gear^.Hedgehog <> nil then
+ if Gear^.Tag = 0 then
+ begin
+ hog:= Gear^.Hedgehog;
+ hog^.GearHidden:= hog^.Gear;
+ RemoveGearFromList(hog^.Gear);
+ hog^.Gear:= nil;
+ Gear^.Tag:= TotalRounds + 3;
+ end
+ else if Gear^.Tag = TotalRounds then
+ begin
+ hog:= Gear^.Hedgehog;
+ hog^.Gear:= hog^.GearHidden;
+ hog^.Gear^.X:= Gear^.X;
+ hog^.Gear^.Y:= Gear^.Y - Int2hwFloat(Gear^.Radius);
+ hog^.Gear^.Active:= false;
+ hog^.Gear^.State:= hog^.Gear^.State And not gstHHdriven;
+ InsertGearToList(hog^.Gear);
+ hog^.GearHidden:= nil;
+ Gear^.Hedgehog:= nil;
+ end;
+
+ if (Gear^.dY.QWordValue <> 0) or (not TestCollisionYwithGear(Gear, 1)) then
+ begin
+ AllInactive := false;
+ Gear^.dY := Gear^.dY + cGravity;
+ Gear^.Y := Gear^.Y + Gear^.dY;
+ if (not Gear^.dY.isNegative) and (Gear^.dY > _0_001) then SetAllHHToActive;
+ if (Gear^.dY.isNegative) and TestCollisionYwithGear(Gear, -1) then Gear^.dY := _0;
+ if (not Gear^.dY.isNegative) and TestCollisionYwithGear(Gear, 1) then
+ begin
+ if Gear^.dY > _0_2 then
+ for i:= min(12, hwRound(Gear^.dY*_10)) downto 0 do
+ AddVisualGear(hwRound(Gear^.X) - 5 + Random(10), hwRound(Gear^.Y) + 12, vgtDust);
+ Gear^.dY := - Gear^.dY * Gear^.Elasticity;
+ if Gear^.dY > - _0_001 then Gear^.dY := _0
+ else if Gear^.dY < - _0_03 then
+ PlaySound(Gear^.ImpactSound);
+ end;
+ CheckGearDrowning(Gear);
+ end;
+
+ if (Gear^.dY.QWordValue = 0) then AddGearCI(Gear)
+ else if (Gear^.dY.QWordValue <> 0) then DeleteCI(Gear);
+
+ dec(Gear^.Health, Gear^.Damage);
+ Gear^.Damage := 0;
+
+ if Gear^.Health <= 0 then
+ begin
+ if Gear^.Hedgehog <> nil then
+ begin
+ hog:= Gear^.Hedgehog;
+ hog^.Gear:= hog^.GearHidden;
+ hog^.Gear^.X:= Gear^.X;
+ hog^.Gear^.Y:= Gear^.Y;
+ InsertGearToList(hog^.Gear);
+ hog^.GearHidden:= nil;
+ Gear^.Hedgehog:= nil;
+ end;
+
+ x := hwRound(Gear^.X);
+ y := hwRound(Gear^.Y);
+
+ DeleteGear(Gear);
+
+ doMakeExplosion(x, y, 50, CurrentHedgehog, EXPLAutoSound);
+ end;
+end;
+
diff -r 69f8431a5d20 -r efcea232bbf6 hedgewars/HHHandlers.inc
--- a/hedgewars/HHHandlers.inc Tue Feb 01 00:12:19 2011 +0100
+++ b/hedgewars/HHHandlers.inc Tue Feb 01 00:18:25 2011 +0100
@@ -41,29 +41,29 @@
end;
// Shouldn't more of this ammo switching stuff be moved to uAmmos ?
-function ChangeAmmo(Gear: PGear): boolean;
+function ChangeAmmo(HHGear: PGear): boolean;
var slot, i: Longword;
ammoidx: LongInt;
begin
ChangeAmmo:= false;
-slot:= Gear^.MsgParam;
+slot:= HHGear^.MsgParam;
-with Gear^.Hedgehog^ do
+with HHGear^.Hedgehog^ do
begin
- Gear^.Message:= Gear^.Message and not gmSlot;
+ HHGear^.Message:= HHGear^.Message and not gmSlot;
ammoidx:= 0;
- if ((Gear^.State and (gstAttacking or gstAttacked)) <> 0) or
+ if ((HHGear^.State and (gstAttacking or gstAttacked)) <> 0) or
(TargetPoint.X <> NoPointX) or
((MultiShootAttacks > 0) and ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_NoRoundEnd) = 0)) or
- ((Gear^.State and gstHHDriven) = 0) then exit;
+ ((HHGear^.State and gstHHDriven) = 0) then exit;
ChangeAmmo:= true;
while (ammoidx < cMaxSlotAmmoIndex) and (Ammo^[slot, ammoidx].AmmoType <> CurAmmoType) do inc(ammoidx);
- if ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_NoRoundEnd) <> 0) and (MultiShootAttacks > 0) then OnUsedAmmo(Gear^.Hedgehog^);
+ if ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_NoRoundEnd) <> 0) and (MultiShootAttacks > 0) then OnUsedAmmo(HHGear^.Hedgehog^);
MultiShootAttacks:= 0;
- Gear^.Message:= Gear^.Message and not (gmLJump or gmHJump);
+ HHGear^.Message:= HHGear^.Message and not (gmLJump or gmHJump);
if Ammoz[CurAmmoType].Slot = slot then
begin
@@ -94,31 +94,33 @@
end
end;
-procedure HHSetWeapon(Gear: PGear);
+procedure HHSetWeapon(HHGear: PGear);
var t: LongInt;
weap: TAmmoType;
Hedgehog: PHedgehog;
s: boolean;
begin
-weap:= TAmmoType(Gear^.MsgParam);
-Hedgehog:= Gear^.Hedgehog;
+s:= false;
+
+weap:= TAmmoType(HHGear^.MsgParam);
+Hedgehog:= HHGear^.Hedgehog;
if Hedgehog^.Team^.Clan^.TurnNumber <= Ammoz[weap].SkipTurns then exit; // weapon is not activated yet
-Gear^.MsgParam:= Ammoz[weap].Slot;
+HHGear^.MsgParam:= Ammoz[weap].Slot;
t:= cMaxSlotAmmoIndex;
-Gear^.Message:= Gear^.Message and not gmWeapon;
+HHGear^.Message:= HHGear^.Message and not gmWeapon;
with Hedgehog^ do
while (CurAmmoType <> weap) and (t >= 0) do
begin
- s:= ChangeAmmo(Gear);
+ s:= ChangeAmmo(HHGear);
dec(t)
end;
-if s then ApplyAmmoChanges(Gear^.Hedgehog^)
+if s then ApplyAmmoChanges(HHGear^.Hedgehog^)
end;
procedure HHSetTimer(Gear: PGear);
@@ -223,7 +225,11 @@
amSMine: FollowGear:= AddGear(hwRound(lx), hwRound(ly), gtSMine, 0, xx*Power/cPowerDivisor, yy*Power/cPowerDivisor, 0);
amDEagle: CurAmmoGear:= AddGear(hwRound(lx + xx * cHHRadius), hwRound(ly + yy * cHHRadius), gtDEagleShot, 0, xx * _0_5, yy * _0_5, 0);
amSineGun: CurAmmoGear:= AddGear(hwRound(lx + xx * cHHRadius), hwRound(ly + yy * cHHRadius), gtSineGunShot, 0, xx * _0_5, yy * _0_5, 0);
- amPortalGun: AddGear(hwRound(lx + xx * cHHRadius), hwRound(ly + yy * cHHRadius), gtPortal, 0, xx * _0_6, yy * _0_6, 0);
+ amPortalGun: begin
+ AddGear(hwRound(lx + xx * cHHRadius), hwRound(ly + yy * cHHRadius), gtPortal, 0, xx * _0_6, yy * _0_6,
+ // set selected color
+ CurWeapon^.Pos);
+ end;
amSniperRifle: begin
PlaySound(sndSniperReload);
CurAmmoGear:= AddGear(hwRound(lx + xx * cHHRadius), hwRound(ly + yy * cHHRadius), gtSniperRifleShot, 0, xx * _0_5, yy * _0_5, 0);
@@ -307,8 +313,12 @@
gtResurrector, 0, _0, _0, 0);
CurAmmoGear^.SoundChannel := LoopSound(sndResurrector);
end;
- amDrillStrike: AddGear(CurWeapon^.Pos, 0, gtAirAttack, 3, _0, _0, 0);
+ amDrillStrike: AddGear(CurWeapon^.Pos, 0, gtAirAttack, 3, _0, _0, CurWeapon^.Timer);
//amMelonStrike: AddGear(CurWeapon^.Pos, 0, gtAirAttack, 4, _0, _0, 0);
+ amStructure: begin
+ FollowGear:= AddGear(hwRound(lx) + hwSign(dX) * 7, hwRound(ly), gtStructure, 0, SignAs(_0_03, dX), _0, 0);
+ FollowGear^.Hedgehog:= Gear^.Hedgehog;
+ end;
end;
uStats.AmmoUsed(CurAmmoType);
@@ -398,7 +408,7 @@
if Gear^.Timer = 1 then
begin
Gear^.State:= Gear^.State or gstNoDamage;
- doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 30, EXPLAutoSound);
+ doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 30, CurrentHedgehog, EXPLAutoSound);
AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtGrave, 0, _0, _0, 0)^.Hedgehog:= Gear^.Hedgehog;
DeleteGear(Gear);
SetAllToActive
@@ -629,17 +639,17 @@
end
end;
-procedure HedgehogChAngle(Gear: PGear);
+procedure HedgehogChAngle(HHGear: PGear);
var da: LongWord;
begin
-with Gear^.Hedgehog^ do
+with HHGear^.Hedgehog^ do
if (CurAmmoType = amRope)
- and ((Gear^.State and (gstMoving or gstHHJumping)) = gstMoving) then da:= 2 else da:= 1;
+ and ((HHGear^.State and (gstMoving or gstHHJumping)) = gstMoving) then da:= 2 else da:= 1;
-if (((Gear^.Message and gmPrecise) = 0) or ((GameTicks mod 5) = 1)) then
- if ((Gear^.Message and gmUp) <> 0) and (Gear^.Angle >= CurMinAngle + da) then dec(Gear^.Angle, da)
+if (((HHGear^.Message and gmPrecise) = 0) or ((GameTicks mod 5) = 1)) then
+ if ((HHGear^.Message and gmUp) <> 0) and (HHGear^.Angle >= CurMinAngle + da) then dec(HHGear^.Angle, da)
else
- if ((Gear^.Message and gmDown) <> 0) and (Gear^.Angle + da <= CurMaxAngle) then inc(Gear^.Angle, da)
+ if ((HHGear^.Message and gmDown) <> 0) and (HHGear^.Angle + da <= CurMaxAngle) then inc(HHGear^.Angle, da)
end;
procedure doStepHedgehog(Gear: PGear); forward;
@@ -770,118 +780,118 @@
end;
-procedure doStepHedgehogDriven(Gear: PGear);
+procedure doStepHedgehogDriven(HHGear: PGear);
var t: PGear;
wasJumping: boolean;
Hedgehog: PHedgehog;
begin
-Hedgehog:= Gear^.Hedgehog;
+Hedgehog:= HHGear^.Hedgehog;
if not isInMultiShoot then
AllInactive:= false
else
- Gear^.Message:= 0;
+ HHGear^.Message:= 0;
-if (TurnTimeLeft = 0) or (Gear^.Damage > 0) then
+if (TurnTimeLeft = 0) or (HHGear^.Damage > 0) then
begin
TurnTimeLeft:= 0;
isCursorVisible:= false;
- Gear^.State:= Gear^.State and not (gstHHDriven or gstAnimation or gstAttacking);
+ HHGear^.State:= HHGear^.State and not (gstHHDriven or gstAnimation or gstAttacking);
AttackBar:= 0;
- if Gear^.Damage > 0 then
- Gear^.State:= Gear^.State and not (gstHHJumping or gstHHHJump);
+ if HHGear^.Damage > 0 then
+ HHGear^.State:= HHGear^.State and not (gstHHJumping or gstHHHJump);
exit
end;
-if (Gear^.State and gstAnimation) <> 0 then
+if (HHGear^.State and gstAnimation) <> 0 then
begin
- Gear^.Message:= 0;
- if (Gear^.Pos = Wavez[TWave(Gear^.Tag)].VoiceDelay) and (Gear^.Timer = 0) then PlaySound(Wavez[TWave(Gear^.Tag)].Voice, Hedgehog^.Team^.voicepack);
- inc(Gear^.Timer);
- if Gear^.Timer = Wavez[TWave(Gear^.Tag)].Interval then
+ HHGear^.Message:= 0;
+ if (HHGear^.Pos = Wavez[TWave(HHGear^.Tag)].VoiceDelay) and (HHGear^.Timer = 0) then PlaySound(Wavez[TWave(HHGear^.Tag)].Voice, Hedgehog^.Team^.voicepack);
+ inc(HHGear^.Timer);
+ if HHGear^.Timer = Wavez[TWave(HHGear^.Tag)].Interval then
begin
- Gear^.Timer:= 0;
- inc(Gear^.Pos);
- if Gear^.Pos = Wavez[TWave(Gear^.Tag)].FramesCount then
- Gear^.State:= Gear^.State and not gstAnimation
+ HHGear^.Timer:= 0;
+ inc(HHGear^.Pos);
+ if HHGear^.Pos = Wavez[TWave(HHGear^.Tag)].FramesCount then
+ HHGear^.State:= HHGear^.State and not gstAnimation
end;
exit
end;
-if ((Gear^.State and gstMoving) <> 0)
+if ((HHGear^.State and gstMoving) <> 0)
or (StepTicks = cHHStepTicks)
or (CurAmmoGear <> nil) then // we are moving
begin
with Hedgehog^ do
if (CurAmmoGear = nil)
- and (Gear^.dY > _0_39)
- and (CurAmmoType = amParachute) then Gear^.Message:= Gear^.Message or gmAttack;
+ and (HHGear^.dY > _0_39)
+ and (CurAmmoType = amParachute) then HHGear^.Message:= HHGear^.Message or gmAttack;
// check for case with ammo
- t:= CheckGearNear(Gear, gtCase, 36, 36);
+ t:= CheckGearNear(HHGear, gtCase, 36, 36);
if t <> nil then
- PickUp(Gear, t)
+ PickUp(HHGear, t)
end;
if (CurAmmoGear = nil) then
- if (((Gear^.Message and gmAttack) <> 0)
- or ((Gear^.State and gstAttacking) <> 0)) then
- Attack(Gear) // should be before others to avoid desync with '/put' msg and changing weapon msgs
+ if (((HHGear^.Message and gmAttack) <> 0)
+ or ((HHGear^.State and gstAttacking) <> 0)) then
+ Attack(HHGear) // should be before others to avoid desync with '/put' msg and changing weapon msgs
else
else
with Hedgehog^ do
if ((Ammoz[CurAmmoGear^.AmmoType].Ammo.Propz and ammoprop_AltAttack) <> 0)
- and ((Gear^.Message and gmLJump) <> 0)
+ and ((HHGear^.Message and gmLJump) <> 0)
and ((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_AltUse) <> 0) then
begin
- Attack(Gear);
- Gear^.Message:= Gear^.Message and not gmLJump
+ Attack(HHGear);
+ HHGear^.Message:= HHGear^.Message and not gmLJump
end;
if (CurAmmoGear = nil)
or ((Ammoz[CurAmmoGear^.AmmoType].Ammo.Propz and ammoprop_AltAttack) <> 0)
or ((Ammoz[CurAmmoGear^.AmmoType].Ammo.Propz and ammoprop_NoRoundEnd) <> 0) then
begin
- if ((Gear^.Message and gmSlot) <> 0) then
- if ChangeAmmo(Gear) then ApplyAmmoChanges(Hedgehog^);
+ if ((HHGear^.Message and gmSlot) <> 0) then
+ if ChangeAmmo(HHGear) then ApplyAmmoChanges(Hedgehog^);
- if ((Gear^.Message and gmWeapon) <> 0) then HHSetWeapon(Gear);
+ if ((HHGear^.Message and gmWeapon) <> 0) then HHSetWeapon(HHGear);
- if ((Gear^.Message and gmTimer) <> 0) then HHSetTimer(Gear);
+ if ((HHGear^.Message and gmTimer) <> 0) then HHSetTimer(HHGear);
end;
if CurAmmoGear <> nil then
begin
- CurAmmoGear^.Message:= Gear^.Message;
+ CurAmmoGear^.Message:= HHGear^.Message;
exit
end;
if not isInMultiShoot then
- HedgehogChAngle(Gear);
+ HedgehogChAngle(HHGear);
-if (Gear^.State and gstMoving) <> 0 then
+if (HHGear^.State and gstMoving) <> 0 then
begin
- wasJumping:= ((Gear^.State and gstHHJumping) <> 0);
+ wasJumping:= ((HHGear^.State and gstHHJumping) <> 0);
- if ((Gear^.Message and gmHJump) <> 0) and
+ if ((HHGear^.Message and gmHJump) <> 0) and
wasJumping and
- ((Gear^.State and gstHHHJump) = 0) then
- if (not (hwAbs(Gear^.dX) > cLittle)) and (Gear^.dY < -_0_02) then
+ ((HHGear^.State and gstHHHJump) = 0) then
+ if (not (hwAbs(HHGear^.dX) > cLittle)) and (HHGear^.dY < -_0_02) then
begin
- Gear^.State:= Gear^.State or gstHHHJump;
- Gear^.dY:= -_0_25;
- if not cArtillery then Gear^.dX:= -SignAs(_0_02, Gear^.dX);
+ HHGear^.State:= HHGear^.State or gstHHHJump;
+ HHGear^.dY:= -_0_25;
+ if not cArtillery then HHGear^.dX:= -SignAs(_0_02, HHGear^.dX);
PlaySound(sndJump2, Hedgehog^.Team^.voicepack)
end;
- Gear^.Message:= Gear^.Message and not (gmLJump or gmHJump);
+ HHGear^.Message:= HHGear^.Message and not (gmLJump or gmHJump);
if (not cArtillery) and wasJumping and
- TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then SetLittle(Gear^.dX);
+ TestCollisionXwithGear(HHGear, hwSign(HHGear^.dX)) then SetLittle(HHGear^.dX);
- doStepHedgehogMoving(Gear);
+ if Hedgehog^.Gear <> nil then doStepHedgehogMoving(HHGear);
- if ((Gear^.State and (gstMoving or gstDrowning)) = 0) then
+ if ((HHGear^.State and (gstMoving or gstDrowning)) = 0) then
begin
- AddGearCI(Gear);
+ AddGearCI(HHGear);
if wasJumping then
StepTicks:= 410
else
@@ -890,10 +900,10 @@
exit
end;
- if not isInMultiShoot then
+ if not isInMultiShoot and (Hedgehog^.Gear <> nil) then
begin
if StepTicks > 0 then dec(StepTicks);
- if (StepTicks = 0) then HedgehogStep(Gear)
+ if (StepTicks = 0) then HedgehogStep(HHGear)
end
end;
diff -r 69f8431a5d20 -r efcea232bbf6 hedgewars/PascalExports.pas
--- a/hedgewars/PascalExports.pas Tue Feb 01 00:12:19 2011 +0100
+++ b/hedgewars/PascalExports.pas Tue Feb 01 00:18:25 2011 +0100
@@ -22,7 +22,7 @@
interface
uses uTypes, uConsts, uVariables, GLunit, uKeys, uChat, uSound, uAmmos, uUtils,
- uCommands;
+ uCommands, uMobile;
{$INCLUDE "config.inc"}
@@ -38,6 +38,7 @@
versionStr^:= cVersionString;
end;
+// emulate mouse/keyboard input
procedure HW_click; cdecl; export;
begin
leftClick:= true;
@@ -190,12 +191,15 @@
GameState:= previousGameState;
end;
+// equivalent to esc+y; when closeFrontend = true the game exits after memory cleanup
procedure HW_terminate(closeFrontend: boolean); cdecl; export;
begin
- isTerminated:= true;
- if closeFrontend then alsoShutdownFrontend:= true;
+ {$IFDEF IPHONEOS}setGameRunning(false);{$ENDIF}
+ alsoShutdownFrontend:= closeFrontend;
+ ParseCommand('forcequit', true);
end;
+// cursor handling
procedure HW_setCursor(x,y: LongInt); cdecl; export;
begin
CursorPoint.X:= x;
@@ -208,9 +212,10 @@
y^:= CursorPoint.Y;
end;
+// ammo menu related functions
function HW_isAmmoMenuOpen: boolean; cdecl; export;
begin
- exit(bShowAmmoMenu);
+ exit( bShowAmmoMenu );
end;
function HW_isAmmoMenuNotAllowed: boolean; cdecl; export;
@@ -219,11 +224,6 @@
((Ammoz[CurAmmoGear^.AmmoType].Ammo.Propz and ammoprop_AltAttack) = 0)) and hideAmmoMenu)) );
end;
-function HW_isWaiting: boolean; cdecl; export;
-begin
- exit( ReadyTimeLeft > 0 );
-end;
-
function HW_isWeaponRequiringClick: boolean; cdecl; export;
begin
if (CurrentHedgehog <> nil) and (CurrentHedgehog^.Gear <> nil) and (CurrentHedgehog^.BotLevel = 0) then
diff -r 69f8431a5d20 -r efcea232bbf6 hedgewars/VGSHandlers.inc
--- a/hedgewars/VGSHandlers.inc Tue Feb 01 00:12:19 2011 +0100
+++ b/hedgewars/VGSHandlers.inc Tue Feb 01 00:18:25 2011 +0100
@@ -24,14 +24,23 @@
with Gear^ do
begin
inc(FrameTicks, Steps);
- if FrameTicks > vobFrameTicks then
+ if not SuddenDeathDmg and (FrameTicks > vobFrameTicks) then
begin
dec(FrameTicks, vobFrameTicks);
inc(Frame);
if Frame = vobFramesCount then Frame:= 0
+ end
+ else if SuddenDeathDmg and (FrameTicks > vobSDFrameTicks) then
+ begin
+ dec(FrameTicks, vobSDFrameTicks);
+ inc(Frame);
+ if Frame = vobSDFramesCount then Frame:= 0
end;
X:= X + (cWindSpeedf * 200 + dX + tdX) * Steps;
- Y:= Y + (dY + tdY + cGravityf * vobFallSpeed) * Steps;
+ if SuddenDeathDmg then
+ Y:= Y + (dY + tdY + cGravityf * vobSDFallSpeed) * Steps
+ else
+ Y:= Y + (dY + tdY + cGravityf * vobFallSpeed) * Steps;
Angle:= Angle + dAngle * Steps;
if Angle > 360 then
Angle:= Angle - 360
@@ -663,8 +672,8 @@
else dec(tmp);
if tmp < round(dX) then tdY:= 1;
if tmp > round(dY) then tdY:= -1;
- if tmp > 255 then tmp := 255;
- if tmp < 0 then tmp := 0;
+ if tmp > 255 then tmp := 255;
+ if tmp < 0 then tmp := 0;
Gear^.Tint:= (Gear^.Tint and $FFFFFF00) or tmp
end
end
diff -r 69f8431a5d20 -r efcea232bbf6 hedgewars/hwLibrary.pas
--- a/hedgewars/hwLibrary.pas Tue Feb 01 00:12:19 2011 +0100
+++ b/hedgewars/hwLibrary.pas Tue Feb 01 00:18:25 2011 +0100
@@ -12,9 +12,8 @@
// these procedures/functions to the PascalImports.h file (also in the "Pascal Sources" group)
// to make these functions available in the C/C++/Objective-C source files
// (add "#include PascalImports.h" near the top of these files if it's not there yet)
-uses cmem, uVariables, PascalExports, hwengine;
+uses PascalExports, hwengine;
begin
- // avoid compiler warnings about units not being used
- isTerminated:= isTerminated;
+
end.
diff -r 69f8431a5d20 -r efcea232bbf6 hedgewars/hwengine.pas
--- a/hedgewars/hwengine.pas Tue Feb 01 00:12:19 2011 +0100
+++ b/hedgewars/hwengine.pas Tue Feb 01 00:18:25 2011 +0100
@@ -60,6 +60,7 @@
gsStart: begin
if HasBorder then DisableSomeWeapons;
AddClouds;
+ AddFlakes;
AssignHHCoords;
AddMiscGears;
StoreLoad;
@@ -225,10 +226,12 @@
cAltDamage:= gameArgs[8] = '1';
val(gameArgs[9], rotationQt);
recordFileName:= gameArgs[10];
+ cStereoMode:= smNone;
{$ENDIF}
cLogfileBase:= 'game';
initEverything(true);
+
WriteLnToConsole('Hedgewars ' + cVersionString + ' engine (network protocol: ' + inttostr(cNetProtoVersion) + ')');
{$IFDEF DEBUGFILE}
AddFileLog('Prefix: "' + PathPrefix +'"');
diff -r 69f8431a5d20 -r efcea232bbf6 hedgewars/options.inc
--- a/hedgewars/options.inc Tue Feb 01 00:12:19 2011 +0100
+++ b/hedgewars/options.inc Tue Feb 01 00:18:25 2011 +0100
@@ -25,13 +25,12 @@
{$MODE OBJFPC}
{$MACRO ON}
-{$DEFINE GLunit:=GL,GLext}
+{$DEFINE GLunit:=GL}
{$IFDEF IPHONEOS}
{$DEFINE SDL13}
- {$DEFINE SDL_MIXER_NEWER}
- {$DEFINE SDL_IMAGE_NEWER}
{$DEFINE HWLIBRARY}
+ {$DEFINE S3D_DISABLED}
{$DEFINE GLunit:=gles11}
{$ENDIF}
@@ -41,3 +40,5 @@
{ $DEFINE TRACEAIACTIONS}
{ $DEFINE COUNTTICKS}
{$ENDIF}
+
+//also available LUA_DISABLED
\ No newline at end of file
diff -r 69f8431a5d20 -r efcea232bbf6 hedgewars/uAIAmmoTests.pas
--- a/hedgewars/uAIAmmoTests.pas Tue Feb 01 00:12:19 2011 +0100
+++ b/hedgewars/uAIAmmoTests.pas Tue Feb 01 00:18:25 2011 +0100
@@ -103,8 +103,10 @@
(proc: @TestGrenade; flags: 0), // amSMine
(proc: @TestFirePunch; flags: 0), // amHammer
(proc: nil; flags: 0), // amResurrector
- (proc: nil; flags: 0),// amDrillStrike
- (proc: @TestSnowball; flags: 0) // amSnowball
+ (proc: nil; flags: 0), // amDrillStrike
+ (proc: @TestSnowball; flags: 0), // amSnowball
+ (proc: nil; flags: 0), // amTardis
+ (proc: nil; flags: 0) // amStructure
);
const BadTurn = Low(LongInt) div 4;
diff -r 69f8431a5d20 -r efcea232bbf6 hedgewars/uAmmos.pas
--- a/hedgewars/uAmmos.pas Tue Feb 01 00:12:19 2011 +0100
+++ b/hedgewars/uAmmos.pas Tue Feb 01 00:18:25 2011 +0100
@@ -94,7 +94,6 @@
Ammoz[a].Probability:= probability[byte(ammoProbability[ord(a)]) - byte('0')];
Ammoz[a].SkipTurns:= (byte(ammoDelay[ord(a)]) - byte('0'));
Ammoz[a].NumberInCase:= (byte(ammoReinforcement[ord(a)]) - byte('0'));
- if (TrainingFlags and tfIgnoreDelays) <> 0 then Ammoz[a].SkipTurns:= 0;
cnt:= byte(ammoLoadout[ord(a)]) - byte('0');
// avoid things we already have infinite number
if cnt = 9 then
@@ -320,15 +319,12 @@
with CurWeapon^ do
begin
- if AmmoType <> amNothing then
- begin
- s:= trammo[Ammoz[AmmoType].NameId];
- if (Count <> AMMO_INFINITE) and not (Hedgehog.Team^.ExtDriven or (Hedgehog.BotLevel > 0)) then
- s:= s + ' (' + IntToStr(Count) + ')';
- if (Propz and ammoprop_Timerable) <> 0 then
- s:= s + ', ' + IntToStr(Timer div 1000) + ' ' + trammo[sidSeconds];
- AddCaption(s, Team^.Clan^.Color, capgrpAmmoinfo);
- end;
+ s:= trammo[Ammoz[AmmoType].NameId];
+ if (Count <> AMMO_INFINITE) and not (Hedgehog.Team^.ExtDriven or (Hedgehog.BotLevel > 0)) then
+ s:= s + ' (' + IntToStr(Count) + ')';
+ if (Propz and ammoprop_Timerable) <> 0 then
+ s:= s + ', ' + IntToStr(Timer div 1000) + ' ' + trammo[sidSeconds];
+ AddCaption(s, Team^.Clan^.Color, capgrpAmmoinfo);
if (Propz and ammoprop_NeedTarget) <> 0
then begin
Gear^.State:= Gear^.State or gstHHChooseTarget;
diff -r 69f8431a5d20 -r efcea232bbf6 hedgewars/uCaptions.pas
--- a/hedgewars/uCaptions.pas Tue Feb 01 00:12:19 2011 +0100
+++ b/hedgewars/uCaptions.pas Tue Feb 01 00:18:25 2011 +0100
@@ -10,7 +10,7 @@
procedure freeModule;
implementation
-uses uTextures, uRenderUtils, uVariables, uRender, uConsts;
+uses uTextures, uRenderUtils, uVariables, uRender;
type TCaptionStr = record
Tex: PTexture;
@@ -39,14 +39,11 @@
grp: TCapGroup;
offset: LongInt;
begin
- {$IFDEF IPHONEOS}
+{$IFDEF IPHONEOS}
offset:= 40;
- {$ELSE}
- if ((TrainingFlags and tfTimeTrial) <> 0) and (TimeTrialStartTime > 0) then
- offset:= 48
- else
- offset:= 8;
- {$ENDIF}
+{$ELSE}
+ offset:= 8;
+{$ENDIF}
for grp:= Low(TCapGroup) to High(TCapGroup) do
with Captions[grp] do
diff -r 69f8431a5d20 -r efcea232bbf6 hedgewars/uChat.pas
--- a/hedgewars/uChat.pas Tue Feb 01 00:12:19 2011 +0100
+++ b/hedgewars/uChat.pas Tue Feb 01 00:18:25 2011 +0100
@@ -29,10 +29,6 @@
procedure DrawChat;
procedure KeyPressChat(Key: Longword);
-var UserNick: shortstring = '';
- ChatReady: boolean;
- showAll: boolean;
-
implementation
uses SDLh, uKeys, uTypes, uVariables, uCommands, uUtils, uTextures, uRender, uIO;
@@ -52,6 +48,8 @@
visibleCount: LongWord;
InputStr: TChatLine;
InputStrL: array[0..260] of char; // for full str + 4-byte utf-8 char
+ ChatReady: boolean;
+ showAll: boolean;
const colors: array[#1..#5] of TSDL_Color = (
(r:$FF; g:$FF; b:$FF; unused:$FF), // chat message [White]
@@ -373,7 +371,6 @@
procedure freeModule;
begin
- UserNick:= '';
end;
end.
diff -r 69f8431a5d20 -r efcea232bbf6 hedgewars/uCollisions.pas
--- a/hedgewars/uCollisions.pas Tue Feb 01 00:12:19 2011 +0100
+++ b/hedgewars/uCollisions.pas Tue Feb 01 00:18:25 2011 +0100
@@ -44,6 +44,7 @@
function TestCollisionXKick(Gear: PGear; Dir: LongInt): boolean;
function TestCollisionYKick(Gear: PGear; Dir: LongInt): boolean;
+function TestCollisionX(Gear: PGear; Dir: LongInt): boolean;
function TestCollisionY(Gear: PGear; Dir: LongInt): boolean;
function TestCollisionXwithXYShift(Gear: PGear; ShiftX: hwFloat; ShiftY: LongInt; Dir: LongInt): boolean;
@@ -289,6 +290,24 @@
Gear^.X:= Gear^.X - ShiftX;
Gear^.Y:= Gear^.Y - int2hwFloat(ShiftY)
end;
+function TestCollisionX(Gear: PGear; Dir: LongInt): boolean;
+var x, y, i: LongInt;
+begin
+x:= hwRound(Gear^.X);
+if Dir < 0 then x:= x - Gear^.Radius
+ else x:= x + Gear^.Radius;
+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(true);
+ inc(y)
+ until (y > i);
+ end;
+TestCollisionX:= false
+end;
function TestCollisionY(Gear: PGear; Dir: LongInt): boolean;
var x, y, i: LongInt;
diff -r 69f8431a5d20 -r efcea232bbf6 hedgewars/uCommandHandlers.pas
--- a/hedgewars/uCommandHandlers.pas Tue Feb 01 00:12:19 2011 +0100
+++ b/hedgewars/uCommandHandlers.pas Tue Feb 01 00:18:25 2011 +0100
@@ -589,7 +589,6 @@
RegisterVariable('minesnum', vtLongInt, @cLandMines , false);
RegisterVariable('explosives',vtLongInt,@cExplosives , false);
RegisterVariable('gmflags' , vtLongInt, @GameFlags , false);
- RegisterVariable('trflags' , vtLongInt, @TrainingFlags , false);
RegisterVariable('turntime', vtLongInt, @cHedgehogTurnTime, false);
RegisterVariable('minestime',vtLongInt, @cMinesTime , false);
RegisterVariable('fort' , vtCommand, @chFort , false);
diff -r 69f8431a5d20 -r efcea232bbf6 hedgewars/uConsts.pas
--- a/hedgewars/uConsts.pas Tue Feb 01 00:12:19 2011 +0100
+++ b/hedgewars/uConsts.pas Tue Feb 01 00:18:25 2011 +0100
@@ -23,15 +23,11 @@
uses SDLh, uFloat, GLunit;
-
{$INCLUDE "config.inc"}
-// typed const is a variable despite const qualifier
-// in freepascal you may actually use var for the same purpose
-
const
sfMax = 1000;
- cDefaultParamNum = 16;
+ cDefaultParamNum = 17;
// message constants
errmsgCreateSurface = 'Error creating SDL surface';
@@ -69,7 +65,7 @@
rqNoBackground= $00000004; // don't draw background
rqSimpleRope = $00000008; // draw rope using lines only
rq2DWater = $00000010; // disable 3D water effect
- rqFancyBoom = $00000020; // no fancy explosion effects
+ rqAntiBoom = $00000020; // no fancy explosion effects
rqKillFlakes = $00000040; // no flakes
rqSlowMenu = $00000080; // ammomenu appears with no animation
rqPlainSplash = $00000100; // no droplets
@@ -116,6 +112,7 @@
cCursorEdgesDist : LongInt = 100;
cTeamHealthWidth : LongInt = 128;
cWaterOpacity : byte = $80;
+ cSDWaterOpacity : byte = $80;
cifRandomize = $00000001;
cifTheme = $00000002;
@@ -162,14 +159,6 @@
cSendEmptyPacketTime = 1000;
trigTurns = $80000001;
- // Training Flags
- tfNone = $00000000;
- tfTimeTrial = $00000001;
- tfRCPlane = $00000002;
- tfSpawnTargets = $00000004;
- tfIgnoreDelays = $00000008;
- tfTargetRespawn = $00000010;
-
gfAny = $FFFFFFFF;
gfOneClanMode = $00000001; // used in trainings
gfMultiWeapon = $00000002; // used in trainings
@@ -194,7 +183,7 @@
gfInfAttack = $00100000;
gfResetWeps = $00200000;
gfPerHogAmmo = $00400000;
- gfDisableWind = $00800000; // only lua for now
+ gfDisableWind = $00800000;
gfMoreWind = $01000000;
// NOTE: When adding new game flags, ask yourself
// if a "game start notice" would be useful. If so,
@@ -252,7 +241,7 @@
ammoprop_NotBorder = $00000800;
ammoprop_Utility = $00001000;
ammoprop_Effect = $00002000;
- ammoprop_NoRoundEnd=$10000000;
+ ammoprop_NoRoundEnd = $10000000;
AMMO_INFINITE = 100;
diff -r 69f8431a5d20 -r efcea232bbf6 hedgewars/uGears.pas
--- a/hedgewars/uGears.pas Tue Feb 01 00:12:19 2011 +0100
+++ b/hedgewars/uGears.pas Tue Feb 01 00:18:25 2011 +0100
@@ -29,7 +29,7 @@
procedure ResurrectHedgehog(gear: PGear);
procedure ProcessGears;
procedure EndTurnCleanup;
-procedure ApplyDamage(Gear: PGear; Damage: Longword; Source: TDamageSource);
+procedure ApplyDamage(Gear: PGear; AttackerHog: PHedgehog; Damage: Longword; Source: TDamageSource);
procedure SetAllToActive;
procedure SetAllHHToActive;
procedure DrawGears;
@@ -50,8 +50,7 @@
uCommands, uUtils, uTextures, uRenderUtils, uGearsRender, uCaptions, uDebug, uLandTexture;
-procedure doMakeExplosion(X, Y, Radius: LongInt; Mask: LongWord); forward;
-procedure doMakeExplosion(X, Y, Radius: LongInt; Mask, Tint: LongWord); forward;
+procedure doMakeExplosion(X, Y, Radius: LongInt; AttackingHog: PHedgehog; Mask: Longword; const Tint: LongWord = $FFFFFFFF); forward;
procedure AmmoShove(Ammo: PGear; Damage, Power: LongInt); forward;
//procedure AmmoFlameWork(Ammo: PGear); forward;
function GearsNear(X, Y: hwFloat; Kind: TGearType; r: LongInt): TPGearArray; forward;
@@ -60,10 +59,10 @@
procedure AfterAttack; forward;
procedure HedgehogStep(Gear: PGear); forward;
procedure doStepHedgehogMoving(Gear: PGear); forward;
-procedure HedgehogChAngle(Gear: PGear); forward;
+procedure HedgehogChAngle(HHGear: PGear); forward;
procedure ShotgunShot(Gear: PGear); forward;
procedure PickUp(HH, Gear: PGear); forward;
-procedure HHSetWeapon(Gear: PGear); forward;
+procedure HHSetWeapon(HHGear: PGear); forward;
procedure doStepCase(Gear: PGear); forward;
{$INCLUDE "GSHandlers.inc"}
@@ -129,7 +128,8 @@
@doStepResurrector,
@doStepNapalmBomb,
@doStepSnowball,
- @doStepSnowflake
+ @doStepSnowflake,
+ @doStepStructure
);
procedure InsertGearToList(Gear: PGear);
@@ -205,7 +205,7 @@
gear^.ImpactSound:= sndNone;
gear^.nImpactSounds:= 0;
-if CurrentTeam <> nil then
+if CurrentHedgehog <> nil then
begin
gear^.Hedgehog:= CurrentHedgehog;
gear^.IntersectGear:= CurrentHedgehog^.Gear
@@ -428,7 +428,9 @@
gear^.Timer:= 5000
end;
gtDrill: begin
- gear^.Timer:= 5000;
+ if gear^.Timer = 0 then gear^.Timer:= 5000;
+ // Tag for drill strike. if 1 then first impact occured already
+ gear^.Tag := 0;
gear^.Radius:= 4;
gear^.Density:= _1;
end;
@@ -477,7 +479,8 @@
gear^.nImpactSounds:= 1;
gear^.AdvBounce:= 0;
gear^.Radius:= 16;
- gear^.Tag:= 0;
+ // set color
+ gear^.Tag:= 2 * gear^.Timer;
gear^.Timer:= 15000;
gear^.RenderTimer:= false;
gear^.Health:= 100;
@@ -512,6 +515,13 @@
gear^.Radius:= 5;
gear^.Density:= _1_5;
end;
+ gtStructure: begin
+ gear^.ImpactSound:= sndGrenadeImpact;
+ gear^.nImpactSounds:= 1;
+ gear^.Radius:= 13;
+ gear^.Elasticity:= _0_3;
+ gear^.Health:= 50;
+ end;
end;
InsertGearToList(gear);
@@ -556,9 +566,12 @@
begin
t:= max(Gear^.Damage, Gear^.Health);
Gear^.Damage:= t;
- if (cWaterOpacity < $FF) and (hwRound(Gear^.Y) < cWaterLine + 256) then
+ if ((not SuddenDeathDmg and (cWaterOpacity < $FF)) or (SuddenDeathDmg and (cWaterOpacity < $FF))) and (hwRound(Gear^.Y) < cWaterLine + 256) then
spawnHealthTagForHH(Gear, t);
- uStats.HedgehogDamaged(Gear)
+
+ // should be not CurrentHedgehog, but hedgehog of the last gear which caused damage to this hog
+ // same stand for CheckHHDamage
+ uStats.HedgehogDamaged(Gear, CurrentHedgehog)
end;
team:= Gear^.Hedgehog^.Team;
@@ -595,6 +608,7 @@
if CurAmmoGear = Gear then CurAmmoGear:= nil;
if FollowGear = Gear then FollowGear:= nil;
+if lastGearByUID = Gear then lastGearByUID := nil;
RemoveGearFromList(Gear);
Dispose(Gear)
end;
@@ -614,7 +628,7 @@
(not Gear^.Invulnerable) then
begin
CheckNoDamage:= false;
- uStats.HedgehogDamaged(Gear);
+
dmg:= Gear^.Damage;
if Gear^.Health < dmg then
begin
@@ -791,11 +805,20 @@
stHealth: begin
if (cWaterRise <> 0) or (cHealthDecrease <> 0) then
begin
- if (TotalRounds = cSuddenDTurns) and not SuddenDeathDmg and not isInMultiShoot then
+ if (TotalRounds = cSuddenDTurns) and not SuddenDeath and not isInMultiShoot then
begin
- SuddenDeathDmg:= true;
+ SuddenDeath:= true;
+ if cHealthDecrease <> 0 then
+ begin
+ SuddenDeathDmg:= true;
+ ChangeToSDClouds;
+ ChangeToSDFlakes;
+ glClearColor(SDSkyColor.r / 255, SDSkyColor.g / 255, SDSkyColor.b / 255, 0.99);
+ end;
AddCaption(trmsg[sidSuddenDeath], cWhiteColor, capgrpGameState);
- playSound(sndSuddenDeath)
+ playSound(sndSuddenDeath);
+ MusicFN:= SDMusic;
+ ChangeMusic
end
else if (TotalRounds < cSuddenDTurns) and not isInMultiShoot then
begin
@@ -976,13 +999,16 @@
RecountTeamHealth(TeamsArray[i])
end;
-procedure ApplyDamage(Gear: PGear; Damage: Longword; Source: TDamageSource);
+procedure ApplyDamage(Gear: PGear; AttackerHog: PHedgehog; Damage: Longword; Source: TDamageSource);
var s: shortstring;
vampDmg, tmpDmg, i: Longword;
vg: PVisualGear;
begin
- if (Gear^.Kind = gtHedgehog) and (Damage>=1) then
+ if Damage = 0 then exit; // nothing to apply
+
+ if (Gear^.Kind = gtHedgehog) then
begin
+ uStats.HedgehogDamaged(Gear, AttackerHog);
HHHurt(Gear^.Hedgehog, Source);
AddDamageTag(hwRound(Gear^.X), hwRound(Gear^.Y), Damage, Gear^.Hedgehog^.Team^.Clan^.Color);
tmpDmg:= min(Damage, max(0,Gear^.Health-Gear^.Damage));
@@ -1018,7 +1044,11 @@
spawnHealthTagForHH(CurrentHedgehog^.Gear, tmpDmg);
end;
end;
- end;
+ end else if Gear^.Kind <> gtStructure then // not gtHedgehog nor gtStructure
+ begin
+ AddFileLog('Assigning hedgehog ' + inttostr(LongInt(AttackerHog)) + ' to gear ' + inttostr(Gear^.uid));
+ Gear^.Hedgehog:= AttackerHog;
+ end;
inc(Gear^.Damage, Damage);
ScriptCall('onGearDamage', Gear^.UID, Damage);
end;
@@ -1042,7 +1072,7 @@
t:= GearsList;
while t <> nil do
begin
- if t^.Kind = gtHedgehog then t^.Active:= true;
+ if (t^.Kind = gtHedgehog) or (t^.Kind = gtExplosives) then t^.Active:= true;
t:= t^.NextGear
end
end;
@@ -1081,21 +1111,22 @@
begin
AddGear(0, 0, gtATStartGame, 0, _0, _0, 2000);
-if (TrainingFlags and tfSpawnTargets) <> 0 then
- begin
- TrainingTargetGear:= AddGear(0, 0, gtTarget, 0, _0, _0, 0);
- FindPlace(TrainingTargetGear, false, 0, LAND_WIDTH);
- end;
-
-for i:= 0 to Pred(cLandMines) do
+i:= 0;
+Gear:= PGear(1);
+while (i < cLandMines) {and (Gear <> nil)} do // disable this check until better solution found
begin
Gear:= AddGear(0, 0, gtMine, 0, _0, _0, 0);
FindPlace(Gear, false, 0, LAND_WIDTH);
+ inc(i)
end;
-for i:= 0 to Pred(cExplosives) do
+
+i:= 0;
+Gear:= PGear(1);
+while (i < cExplosives){ and (Gear <> nil)} do
begin
Gear:= AddGear(0, 0, gtExplosives, 0, _0, _0, 0);
FindPlace(Gear, false, 0, LAND_WIDTH);
+ inc(i)
end;
if (GameFlags and gfLowGravity) <> 0 then
@@ -1121,20 +1152,15 @@
if (GameFlags and gfArtillery) <> 0 then
cArtillery:= true;
-if not hasBorder and ((Theme = 'Snow') or (Theme = 'Christmas')) then
+if not hasBorder and ((Theme = 'Snow') or (Theme = 'Christmas')) and ((cReducedQuality and rqLowRes) = 0) then
begin
for i:= 0 to Pred(vobCount*2) do
- AddGear(GetRandom(LAND_WIDTH+1024)-512, LAND_HEIGHT - GetRandom(1024), gtFlake, 0, _0, _0, 0);
+ AddGear(GetRandom(LAND_WIDTH+1024)-512, LAND_HEIGHT - GetRandom(LAND_HEIGHT div 2), gtFlake, 0, _0, _0, 0);
disableLandBack:= true
end
end;
-procedure doMakeExplosion(X, Y, Radius: LongInt; Mask: LongWord);
-begin
-doMakeExplosion(X, Y, Radius, Mask, $FFFFFFFF);
-end;
-
-procedure doMakeExplosion(X, Y, Radius: LongInt; Mask, Tint: LongWord);
+procedure doMakeExplosion(X, Y, Radius: LongInt; AttackingHog: PHedgehog; Mask: Longword; const Tint: LongWord);
var Gear: PGear;
dmg, dmgRadius, dmgBase: LongInt;
fX, fY: hwFloat;
@@ -1177,7 +1203,8 @@
gtCase,
gtTarget,
gtFlame,
- gtExplosives: begin
+ gtExplosives,
+ gtStructure: begin
// Run the calcs only once we know we have a type that will need damage
if hwRound(hwAbs(Gear^.X-fX)+hwAbs(Gear^.Y-fY)) < dmgBase then
dmg:= dmgBase - hwRound(Distance(Gear^.X - fX, Gear^.Y - fY));
@@ -1188,7 +1215,7 @@
if (Mask and EXPLNoDamage) = 0 then
begin
if not Gear^.Invulnerable then
- ApplyDamage(Gear, dmg, dsExplosion)
+ ApplyDamage(Gear, AttackingHog, dmg, dsExplosion)
else
Gear^.State:= Gear^.State or gstWinner;
end;
@@ -1252,9 +1279,10 @@
gtSMine,
gtCase,
gtTarget,
- gtExplosives: begin
+ gtExplosives,
+ gtStructure: begin
if (not t^.Invulnerable) then
- ApplyDamage(t, dmg, dsBullet)
+ ApplyDamage(t, Gear^.Hedgehog, dmg, dsBullet)
else
Gear^.State:= Gear^.State or gstWinner;
@@ -1301,13 +1329,13 @@
tmpDmg:= ModifyDamage(Damage, Gear);
if (Gear^.State and gstNoDamage) = 0 then
begin
-
+
if (Ammo^.Kind = gtDEagleShot) or (Ammo^.Kind = gtSniperRifleShot) then
begin
VGear := AddVisualGear(hwround(Ammo^.X), hwround(Ammo^.Y), vgtBulletHit);
if VGear <> nil then VGear^.Angle := DxDy2Angle(-Ammo^.dX, Ammo^.dY);
end;
-
+
if (Gear^.Kind = gtHedgehog) and (Ammo^.State and gsttmpFlag <> 0) and (Ammo^.Kind = gtShover) then Gear^.FlightTime:= 1;
case Gear^.Kind of
@@ -1316,13 +1344,14 @@
gtSMine,
gtTarget,
gtCase,
- gtExplosives: begin
+ gtExplosives,
+ gtStructure: begin
if (Ammo^.Kind = gtDrill) then begin Ammo^.Timer:= 0; exit; end;
if (not Gear^.Invulnerable) then
- ApplyDamage(Gear, tmpDmg, dsShove)
+ ApplyDamage(Gear, Ammo^.Hedgehog, tmpDmg, dsShove)
else
Gear^.State:= Gear^.State or gstWinner;
- if (Gear^.Kind = gtExplosives) and (Ammo^.Kind = gtBlowtorch) then ApplyDamage(Gear, tmpDmg * 100, dsUnknown); // crank up damage for explosives + blowtorch
+ if (Gear^.Kind = gtExplosives) and (Ammo^.Kind = gtBlowtorch) then ApplyDamage(Gear, Ammo^.Hedgehog, tmpDmg * 100, dsUnknown); // crank up damage for explosives + blowtorch
DeleteCI(Gear);
if (Gear^.Kind = gtHedgehog) and Gear^.Hedgehog^.King then
@@ -1424,12 +1453,13 @@
var
t: PGear;
begin
+ r:= r*r;
GearsNear := nil;
t := GearsList;
while t <> nil do begin
if (t^.Kind = Kind) then begin
if (X - t^.X)*(X - t^.X) + (Y - t^.Y)*(Y-t^.Y) <
- int2hwFloat(r)*int2hwFloat(r) then
+ int2hwFloat(r) then
begin
SetLength(GearsNear, Length(GearsNear)+1);
GearsNear[High(GearsNear)] := t;
@@ -1513,7 +1543,6 @@
gear^.dX := _0;
gear^.dY := _0;
gear^.State := gstWait;
- uStats.HedgehogDamaged(gear);
gear^.Damage := 0;
gear^.Health := gear^.Hedgehog^.InitialHealth;
gear^.Hedgehog^.Effects[hePoisoned] := false;
@@ -1776,13 +1805,20 @@
var gear: PGear;
begin
GearByUID:= nil;
+if uid = 0 then exit;
+if (lastGearByUID <> nil) and (lastGearByUID^.uid = uid) then
+ begin
+ GearByUID:= lastGearByUID;
+ exit
+ end;
gear:= GearsList;
while gear <> nil do
begin
if gear^.uid = uid then
begin
- GearByUID:= gear;
- exit
+ lastGearByUID:= gear;
+ GearByUID:= gear;
+ exit
end;
gear:= gear^.NextGear
end
@@ -1830,7 +1866,7 @@
if (x < 4) and (TeamsArray[t] <> nil) then
begin
// if team matches current hedgehog team, default to current hedgehog
- if (i = 0) and (CurrentHedgehog^.Team = TeamsArray[t]) then hh:= CurrentHedgehog
+ if (i = 0) and (CurrentHedgehog <> nil) and (CurrentHedgehog^.Team = TeamsArray[t]) then hh:= CurrentHedgehog
else
begin
// otherwise use the first living hog or the hog amongs the remaining ones indicated by i
@@ -1847,12 +1883,15 @@
inc(j)
end
end;
- if hh <> nil then Gear:= AddVisualGear(0, 0, vgtSpeechBubble);
- if Gear <> nil then
+ if hh <> nil then
begin
- Gear^.Hedgehog:= hh;
- Gear^.Text:= text;
- Gear^.FrameTicks:= x
+ Gear:= AddVisualGear(0, 0, vgtSpeechBubble);
+ if Gear <> nil then
+ begin
+ Gear^.Hedgehog:= hh;
+ Gear^.Text:= text;
+ Gear^.FrameTicks:= x
+ end
end
//else ParseCommand('say ' + text, true)
end
@@ -1871,9 +1910,9 @@
CurAmmoGear:= nil;
GearsList:= nil;
KilledHHs:= 0;
+ SuddenDeath:= false;
SuddenDeathDmg:= false;
SpeechType:= 1;
- TrainingTargetGear:= nil;
skipFlag:= false;
AllInactive:= false;
diff -r 69f8431a5d20 -r efcea232bbf6 hedgewars/uGearsRender.pas
--- a/hedgewars/uGearsRender.pas Tue Feb 01 00:12:19 2011 +0100
+++ b/hedgewars/uGearsRender.pas Tue Feb 01 00:18:25 2011 +0100
@@ -186,7 +186,7 @@
if (Gear^.State and gstHHDeath) <> 0 then
begin
DrawSprite(sprHHDeath, ox - 16, oy - 26, Gear^.Pos);
- Tint(HH^.Team^.Clan^.Color);
+ Tint(HH^.Team^.Clan^.Color shl 8 or $FF);
DrawSprite(sprHHDeath, ox - 16, oy - 26, Gear^.Pos + 8);
Tint($FF, $FF, $FF, $FF);
exit
@@ -353,7 +353,7 @@
i*DxDy2Angle(CurAmmoGear^.dY, CurAmmoGear^.dX) + hAngle);
if HatTex^.w > 64 then
begin
- Tint(HH^.Team^.Clan^.Color);
+ Tint(HH^.Team^.Clan^.Color shl 8 or $FF);
DrawRotatedTextureF(HatTex, 1.0, -1.0, -6.0, ox, oy, 32, i, 32, 32,
i*DxDy2Angle(CurAmmoGear^.dY, CurAmmoGear^.dX) + hAngle);
Tint($FF, $FF, $FF, $FF)
@@ -383,7 +383,7 @@
32);
if HatTex^.w > 64 then
begin
- Tint(HH^.Team^.Clan^.Color);
+ Tint(HH^.Team^.Clan^.Color shl 8 or $FF);
DrawTextureF(HatTex,
1,
sx,
@@ -555,7 +555,7 @@
amPortalGun: if (CurWeapon^.Timer and 2) <> 0 then // Add a new Hedgehog value instead of abusing timer?
DrawRotatedF(sprPortalGun, hx, hy, 0, sign, aangle)
else
- DrawRotatedF(sprPortalGun, hx, hy, 1+(CurWeapon^.Timer and 1), sign, aangle);
+ DrawRotatedF(sprPortalGun, hx, hy, 1+CurWeapon^.Pos, sign, aangle);
amSniperRifle: DrawRotatedF(sprSniperRifle, hx, hy, 0, sign, aangle);
amBlowTorch: DrawRotated(sprHandBlowTorch, hx, hy, sign, aangle);
amCake: DrawRotated(sprHandCake, hx, hy, sign, aangle);
@@ -705,7 +705,7 @@
32);
if HatTex^.w > 64 then
begin
- Tint(HH^.Team^.Clan^.Color);
+ Tint(HH^.Team^.Clan^.Color shl 8 or $FF);
DrawTextureF(HatTex,
HatVisibility,
sx,
@@ -729,7 +729,7 @@
32);
if HatTex^.w > 64 then
begin
- Tint(HH^.Team^.Clan^.Color);
+ Tint(HH^.Team^.Clan^.Color shl 8 or $FF);
DrawTextureF(HatTex,
HatVisibility,
sx,
@@ -855,8 +855,6 @@
DrawRotated(sprPlane, x, y, -1, DxDy2Angle(Gear^.dX, Gear^.dY) + 90)
else
DrawRotated(sprPlane, x, y,0,DxDy2Angle(Gear^.dY, Gear^.dX));
- if ((TrainingFlags and tfRCPlane) <> 0) and (TrainingTargetGear <> nil) and ((Gear^.State and gstDrowning) = 0) then
- DrawRotatedf(sprFinger, x, y, GameTicks div 32 mod 16, 0, DxDy2Angle(Gear^.X - TrainingTargetGear^.X, TrainingTargetGear^.Y - Gear^.Y));
end;
gtBall: DrawRotatedf(sprBalls, x, y, Gear^.Tag,0, Gear^.DirAngle);
@@ -1026,6 +1024,7 @@
//DrawRotatedF(sprFlake, x-SpritesData[sprFlake].Width div 2, y-SpritesData[sprFlake].Height div 2, Gear^.Timer, 1, Gear^.DirAngle);
DrawRotatedF(sprFlake, x, y, Gear^.Timer, 1, Gear^.DirAngle)
end;
+ gtStructure: DrawSprite(sprTarget, x - 16, y - 16, 0);
end;
if Gear^.RenderTimer and (Gear^.Tex <> nil) then DrawCentered(x + 8, y + 8, Gear^.Tex);
diff -r 69f8431a5d20 -r efcea232bbf6 hedgewars/uIO.pas
--- a/hedgewars/uIO.pas Tue Feb 01 00:12:19 2011 +0100
+++ b/hedgewars/uIO.pas Tue Feb 01 00:18:25 2011 +0100
@@ -22,9 +22,6 @@
interface
uses SDLh, uTypes;
-var ipcPort: Word = 0;
- hiTicks: Word;
-
procedure initModule;
procedure freeModule;
@@ -99,18 +96,18 @@
procedure InitIPC;
var ipaddr: TIPAddress;
begin
-WriteToConsole('Init SDL_Net... ');
-SDLTry(SDLNet_Init = 0, true);
-fds:= SDLNet_AllocSocketSet(1);
-SDLTry(fds <> nil, true);
-WriteLnToConsole(msgOK);
-WriteToConsole('Establishing IPC connection... ');
-{$HINTS OFF}
-SDLTry(SDLNet_ResolveHost(ipaddr, '127.0.0.1', ipcPort) = 0, true);
-{$HINTS ON}
-IPCSock:= SDLNet_TCP_Open(ipaddr);
-SDLTry(IPCSock <> nil, true);
-WriteLnToConsole(msgOK)
+ WriteToConsole('Init SDL_Net... ');
+ SDLTry(SDLNet_Init = 0, true);
+ fds:= SDLNet_AllocSocketSet(1);
+ SDLTry(fds <> nil, true);
+ WriteLnToConsole(msgOK);
+ WriteToConsole('Establishing IPC connection to tcp 127.0.0.1:' + IntToStr(ipcPort) + ' ');
+ {$HINTS OFF}
+ SDLTry(SDLNet_ResolveHost(ipaddr, '127.0.0.1', ipcPort) = 0, true);
+ {$HINTS ON}
+ IPCSock:= SDLNet_TCP_Open(ipaddr);
+ SDLTry(IPCSock <> nil, true);
+ WriteLnToConsole(msgOK)
end;
procedure CloseIPC;
@@ -431,7 +428,6 @@
procedure freeModule;
begin
- ipcPort:= 0;
end;
end.
diff -r 69f8431a5d20 -r efcea232bbf6 hedgewars/uKeys.pas
--- a/hedgewars/uKeys.pas Tue Feb 01 00:12:19 2011 +0100
+++ b/hedgewars/uKeys.pas Tue Feb 01 00:18:25 2011 +0100
@@ -164,8 +164,11 @@
end;
procedure ResetKbd;
-var i, j, k, t: LongInt;
-{$IFNDEF IPHONEOS}pkbd: PByteArray;{$ENDIF}
+var j, k, t: LongInt;
+{$IFNDEF IPHONEOS}
+ i: LongInt;
+ pkbd: PByteArray;
+{$ENDIF}
begin
k:= SDL_GetMouseState(nil, nil);
@@ -223,8 +226,9 @@
end;
{$ENDIF}
+// what is this final loop for?
for t:= 0 to cKeyMaxIndex do
- tkbd[i]:= tkbdn[i]
+ tkbd[t]:= tkbdn[t]
end;
procedure InitKbdKeyTable;
@@ -324,7 +328,6 @@
DefaultBinds[KeyNameToCode('right')]:= '+right';
DefaultBinds[KeyNameToCode('left_shift')]:= '+precise';
{$ENDIF}
-DefaultBinds[1000]:= 'forcequit';
for i:= 1 to 10 do DefaultBinds[KeyNameToCode('f'+IntToStr(i))]:= 'slot '+IntToStr(i);
diff -r 69f8431a5d20 -r efcea232bbf6 hedgewars/uLandGraphics.pas
--- a/hedgewars/uLandGraphics.pas Tue Feb 01 00:12:19 2011 +0100
+++ b/hedgewars/uLandGraphics.pas Tue Feb 01 00:18:25 2011 +0100
@@ -27,6 +27,7 @@
Left, Right: LongInt;
end;
+function addBgColor(OldColor, NewColor: LongWord): LongWord;
function SweepDirty: boolean;
function Despeckle(X, Y: LongInt): boolean;
function CheckLandValue(X, Y: LongInt; LandFlag: Word): boolean;
@@ -37,11 +38,36 @@
procedure ChangeRoundInLand(X, Y, Radius: LongInt; doSet: boolean);
function LandBackPixel(x, y: LongInt): LongWord;
-function TryPlaceOnLand(cpX, cpY: LongInt; Obj: TSprite; Frame: LongInt; doPlace: boolean): boolean;
+function TryPlaceOnLand(cpX, cpY: LongInt; Obj: TSprite; Frame: LongInt; doPlace: boolean; indestructible: boolean): boolean;
implementation
uses SDLh, uLandTexture, uVariables, uUtils, uDebug;
+function addBgColor(OldColor, NewColor: LongWord): LongWord;
+// Factor ranges from 0 to 100% NewColor
+var
+ oRed, oBlue, oGreen, oAlpha, nRed, nBlue, nGreen, nAlpha: Byte;
+begin
+ // Get colors
+ oAlpha := (OldColor shr 24) and $FF;
+ oRed := (OldColor shr 16) and $FF;
+ oGreen := (OldColor shr 8) and $FF;
+ oBlue := (OldColor) and $FF;
+
+ nAlpha := (NewColor shr 24) and $FF;
+ nRed := (NewColor shr 16) and $FF;
+ nGreen := (NewColor shr 8) and $FF;
+ nBlue := (NewColor) and $FF;
+
+ // Mix colors
+ nAlpha := min(255, oAlpha + nAlpha);
+ nRed := ((oRed * oAlpha) + (nRed * (255-oAlpha))) div 255;
+ nGreen := ((oGreen * oAlpha) + (nGreen * (255-oAlpha))) div 255;
+ nBlue := ((oBlue * oAlpha) + (nBlue * (255-oAlpha))) div 255;
+
+ addBgColor := (nAlpha shl 24) or (nRed shl 16) or (nGreen shl 8) or (nBlue);
+end;
+
procedure FillCircleLines(x, y, dx, dy: LongInt; Value: Longword);
var i: LongInt;
begin
@@ -593,7 +619,7 @@
UpdateLandTexture(tx, ddx, ty, ddy)
end;
-function TryPlaceOnLand(cpX, cpY: LongInt; Obj: TSprite; Frame: LongInt; doPlace: boolean): boolean;
+function TryPlaceOnLand(cpX, cpY: LongInt; Obj: TSprite; Frame: LongInt; doPlace: boolean; indestructible: boolean): boolean;
var X, Y, bpp, h, w, row, col, numFramesFirstCol: LongInt;
p: PByteArray;
Image: PSDL_Surface;
@@ -649,7 +675,10 @@
for x:= 0 to Pred(w) do
if PLongword(@(p^[x * 4]))^ <> 0 then
begin
- Land[cpY + y, cpX + x]:= lfObject;
+ if indestructible then
+ Land[cpY + y, cpX + x]:= lfIndestructible
+ else
+ Land[cpY + y, cpX + x]:= lfObject;
if (cReducedQuality and rqBlurryLand) = 0 then
LandPixels[cpY + y, cpX + x]:= PLongword(@(p^[x * 4]))^
else
diff -r 69f8431a5d20 -r efcea232bbf6 hedgewars/uLandObjects.pas
--- a/hedgewars/uLandObjects.pas Tue Feb 01 00:12:19 2011 +0100
+++ b/hedgewars/uLandObjects.pas Tue Feb 01 00:18:25 2011 +0100
@@ -29,8 +29,8 @@
procedure AddOnLandObjects(Surface: PSDL_Surface);
implementation
-uses uStore, uConsts, uConsole, uRandom, uVisualGears, uSound, GLunit,
- uTypes, uVariables, uUtils, uDebug;
+uses uStore, uConsts, uConsole, uRandom, uSound, GLunit,
+ uTypes, uVariables, uUtils, uDebug, sysutils;
const MaxRects = 512;
MAXOBJECTRECTS = 16;
@@ -366,7 +366,7 @@
end;
procedure ReadThemeInfo(var ThemeObjects: TThemeObjects; var SprayObjects: TSprayObjects);
-var s: shortstring;
+var s, key: shortstring;
f: textfile;
i, ii, numFlakes: LongInt;
c1, c2: TSDL_Color;
@@ -388,91 +388,233 @@
filemode:= 0; // readonly
Reset(f);
-// read sky and explosion border colors
-Readln(f, c1.r, c1.g, c1. b);
-Readln(f, c2.r, c2.g, c2. b);
-// read water gradient colors
-Readln(f, WaterColorArray[0].r, WaterColorArray[0].g, WaterColorArray[0].b);
-Readln(f, WaterColorArray[2].r, WaterColorArray[2].g, WaterColorArray[2].b, cWaterOpacity);
-WaterColorArray[0].a := 255;
-WaterColorArray[2].a := 255;
-WaterColorArray[1]:= WaterColorArray[0];
-WaterColorArray[3]:= WaterColorArray[2];
+ThemeObjects.Count:= 0;
+SprayObjects.Count:= 0;
-glClearColor(c1.r / 255, c1.g / 255, c1.b / 255, 0.99); // sky color
-cExplosionBorderColor:= c2.value or AMask;
+while not eof(f) do
+ begin
+ Readln(f, s);
+ if Length(s) = 0 then continue;
+ if s[1] = ';' then continue;
+
+ i:= Pos('=', s);
+ key:= Trim(Copy(s, 1, Pred(i)));
+ Delete(s, 1, i);
-ReadLn(f, s);
-if MusicFN = '' then MusicFN:= s;
-
-ReadLn(f, cCloudsNumber);
-
-// TODO - adjust all the theme cloud numbers. This should not be a permanent fix
-//cCloudsNumber:= cCloudsNumber * (LAND_WIDTH div 2048);
-
-// scale number of clouds depending on screen space (two times land width)
-cCloudsNumber:= cCloudsNumber * cScreenSpace div LAND_WIDTH;
-
-Readln(f, ThemeObjects.Count);
-for i:= 0 to Pred(ThemeObjects.Count) do
- begin
- Readln(f, s); // filename
- with ThemeObjects.objs[i] do
+ if key = 'sky' then
+ begin
+ i:= Pos(',', s);
+ c1.r:= StrToInt(Trim(Copy(s, 1, Pred(i))));
+ Delete(s, 1, i);
+ i:= Pos(',', s);
+ c1.g:= StrToInt(Trim(Copy(s, 1, Pred(i))));
+ Delete(s, 1, i);
+ c1.b:= StrToInt(Trim(s));
+ glClearColor(c1.r / 255, c1.g / 255, c1.b / 255, 0.99);
+ SDSkyColor.r:= byte(c1.r * SDTint div 255);
+ SDSkyColor.g:= byte(c1.g * SDTint div 255);
+ SDSkyColor.b:= byte(c1.b * SDTint div 255);
+ end
+ else if key = 'border' then
+ begin
+ i:= Pos(',', s);
+ c2.r:= StrToInt(Trim(Copy(s, 1, Pred(i))));
+ Delete(s, 1, i);
+ i:= Pos(',', s);
+ c2.g:= StrToInt(Trim(Copy(s, 1, Pred(i))));
+ Delete(s, 1, i);
+ c2.b:= StrToInt(Trim(s));
+ cExplosionBorderColor:= c2.value or AMask;
+ end
+ else if key = 'water-top' then
+ begin
+ i:= Pos(',', s);
+ WaterColorArray[0].r:= StrToInt(Trim(Copy(s, 1, Pred(i))));
+ Delete(s, 1, i);
+ i:= Pos(',', s);
+ WaterColorArray[0].g:= StrToInt(Trim(Copy(s, 1, Pred(i))));
+ Delete(s, 1, i);
+ WaterColorArray[0].b:= StrToInt(Trim(s));
+ WaterColorArray[0].a := 255;
+ WaterColorArray[1]:= WaterColorArray[0];
+ end
+ else if key = 'water-bottom' then
+ begin
+ i:= Pos(',', s);
+ WaterColorArray[2].r:= StrToInt(Trim(Copy(s, 1, Pred(i))));
+ Delete(s, 1, i);
+ i:= Pos(',', s);
+ WaterColorArray[2].g:= StrToInt(Trim(Copy(s, 1, Pred(i))));
+ Delete(s, 1, i);
+ WaterColorArray[2].b:= StrToInt(Trim(s));
+ WaterColorArray[2].a := 255;
+ WaterColorArray[3]:= WaterColorArray[2];
+ end
+ else if key = 'water-opacity' then
+ begin
+ cWaterOpacity:= StrToInt(Trim(s));
+ cSDWaterOpacity:= cWaterOpacity
+ end
+ else if key = 'music' then MusicFN:= Trim(s)
+ else if key = 'clouds' then
+ begin
+ cCloudsNumber:= StrToInt(Trim(s)) * cScreenSpace div LAND_WIDTH;
+ cSDCloudsNumber:= cCloudsNumber
+ end
+ else if key = 'object' then
+ begin
+ inc(ThemeObjects.Count);
+ with ThemeObjects.objs[Pred(ThemeObjects.Count)] do
begin
- Surf:= LoadImage(Pathz[ptCurrTheme] + '/' + s, ifCritical or ifTransparent or ifIgnoreCaps);
+ i:= Pos(',', s);
+ Surf:= LoadImage(Pathz[ptCurrTheme] + '/' + Trim(Copy(s, 1, Pred(i))), ifCritical or ifTransparent or ifIgnoreCaps);
Width:= Surf^.w;
Height:= Surf^.h;
- Read(f, Maxcnt);
+ Delete(s, 1, i);
+ i:= Pos(',', s);
+ Maxcnt:= StrToInt(Trim(Copy(s, 1, Pred(i))));
+ Delete(s, 1, i);
if (Maxcnt < 1) or (Maxcnt > MAXTHEMEOBJECTS) then OutError('Object''s max count should be between 1 and '+ inttostr(MAXTHEMEOBJECTS) +' (it was '+ inttostr(Maxcnt) +').', true);
with inland do
begin
- Read(f, x, y, w, h);
+ i:= Pos(',', s);
+ x:= StrToInt(Trim(Copy(s, 1, Pred(i))));
+ Delete(s, 1, i);
+ i:= Pos(',', s);
+ y:= StrToInt(Trim(Copy(s, 1, Pred(i))));
+ Delete(s, 1, i);
+ i:= Pos(',', s);
+ w:= StrToInt(Trim(Copy(s, 1, Pred(i))));
+ Delete(s, 1, i);
+ i:= Pos(',', s);
+ h:= StrToInt(Trim(Copy(s, 1, Pred(i))));
+ Delete(s, 1, i);
CheckRect(Width, Height, x, y, w, h)
end;
- Read(f, rectcnt);
+ i:= Pos(',', s);
+ rectcnt:= StrToInt(Trim(Copy(s, 1, Pred(i))));
+ Delete(s, 1, i);
for ii:= 1 to rectcnt do
with outland[ii] do
begin
- Read(f, x, y, w, h);
+ i:= Pos(',', s);
+ x:= StrToInt(Trim(Copy(s, 1, Pred(i))));
+ Delete(s, 1, i);
+ i:= Pos(',', s);
+ y:= StrToInt(Trim(Copy(s, 1, Pred(i))));
+ Delete(s, 1, i);
+ i:= Pos(',', s);
+ w:= StrToInt(Trim(Copy(s, 1, Pred(i))));
+ Delete(s, 1, i);
+ if ii = rectcnt then h:= StrToInt(Trim(s))
+ else
+ begin
+ i:= Pos(',', s);
+ h:= StrToInt(Trim(Copy(s, 1, Pred(i))));
+ Delete(s, 1, i)
+ end;
CheckRect(Width, Height, x, y, w, h)
end;
- ReadLn(f)
+ end;
+ end
+ else if key = 'spray' then
+ begin
+ inc(SprayObjects.Count);
+ with SprayObjects.objs[Pred(SprayObjects.Count)] do
+ begin
+ i:= Pos(',', s);
+ Surf:= LoadImage(Pathz[ptCurrTheme] + '/' + Trim(Copy(s, 1, Pred(i))), ifCritical or ifTransparent or ifIgnoreCaps);
+ Width:= Surf^.w;
+ Height:= Surf^.h;
+ Delete(s, 1, i);
+ Maxcnt:= StrToInt(Trim(s));
+ end;
+ end
+ else if key = 'flakes' then
+ begin
+ i:= Pos(',', s);
+ vobCount:= StrToInt(Trim(Copy(s, 1, Pred(i))));
+ Delete(s, 1, i);
+ if vobCount > 0 then
+ begin
+ i:= Pos(',', s);
+ vobFramesCount:= StrToInt(Trim(Copy(s, 1, Pred(i))));
+ Delete(s, 1, i);
+ i:= Pos(',', s);
+ vobFrameTicks:= StrToInt(Trim(Copy(s, 1, Pred(i))));
+ Delete(s, 1, i);
+ i:= Pos(',', s);
+ vobVelocity:= StrToInt(Trim(Copy(s, 1, Pred(i))));
+ Delete(s, 1, i);
+ vobFallSpeed:= StrToInt(Trim(s));
+ vobCount:= vobCount * cScreenSpace div LAND_WIDTH;
end;
- end;
-
-// sprays
-Readln(f, SprayObjects.Count);
-for i:= 0 to Pred(SprayObjects.Count) do
- begin
- Readln(f, s); // filename
- with SprayObjects.objs[i] do
- begin
- Surf:= LoadImage(Pathz[ptCurrTheme] + '/' + s, ifCritical or ifTransparent or ifIgnoreCaps);
- Width:= Surf^.w;
- Height:= Surf^.h;
- ReadLn(f, Maxcnt)
- end;
+ end
+ else if key = 'sd-water-top' then
+ begin
+ i:= Pos(',', s);
+ SDWaterColorArray[0].r:= StrToInt(Trim(Copy(s, 1, Pred(i))));
+ Delete(s, 1, i);
+ i:= Pos(',', s);
+ SDWaterColorArray[0].g:= StrToInt(Trim(Copy(s, 1, Pred(i))));
+ Delete(s, 1, i);
+ SDWaterColorArray[0].b:= StrToInt(Trim(s));
+ SDWaterColorArray[0].a := 255;
+ SDWaterColorArray[1]:= SDWaterColorArray[0];
+ end
+ else if key = 'sd-water-bottom' then
+ begin
+ i:= Pos(',', s);
+ SDWaterColorArray[2].r:= StrToInt(Trim(Copy(s, 1, Pred(i))));
+ Delete(s, 1, i);
+ i:= Pos(',', s);
+ SDWaterColorArray[2].g:= StrToInt(Trim(Copy(s, 1, Pred(i))));
+ Delete(s, 1, i);
+ SDWaterColorArray[2].b:= StrToInt(Trim(s));
+ SDWaterColorArray[2].a := 255;
+ SDWaterColorArray[3]:= SDWaterColorArray[2];
+ end
+ else if key = 'sd-water-opacity' then cSDWaterOpacity:= StrToInt(Trim(s))
+ else if key = 'sd-clouds' then cSDCloudsNumber:= StrToInt(Trim(s)) * cScreenSpace div LAND_WIDTH
+ else if key = 'sd-flakes' then
+ begin
+ i:= Pos(',', s);
+ vobSDCount:= StrToInt(Trim(Copy(s, 1, Pred(i))));
+ Delete(s, 1, i);
+ if vobSDCount > 0 then
+ begin
+ i:= Pos(',', s);
+ vobSDFramesCount:= StrToInt(Trim(Copy(s, 1, Pred(i))));
+ Delete(s, 1, i);
+ i:= Pos(',', s);
+ vobSDFrameTicks:= StrToInt(Trim(Copy(s, 1, Pred(i))));
+ Delete(s, 1, i);
+ i:= Pos(',', s);
+ vobSDVelocity:= StrToInt(Trim(Copy(s, 1, Pred(i))));
+ Delete(s, 1, i);
+ vobSDFallSpeed:= StrToInt(Trim(s));
+ vobSDCount:= vobSDCount * cScreenSpace div LAND_WIDTH;
+ end;
+ end
+ else if key = 'rq-sky' then
+ begin
+ if ((cReducedQuality and rqNoBackground) <> 0) then
+ begin
+ i:= Pos(',', s);
+ c1.r:= StrToInt(Trim(Copy(s, 1, Pred(i))));
+ Delete(s, 1, i);
+ i:= Pos(',', s);
+ c1.g:= StrToInt(Trim(Copy(s, 1, Pred(i))));
+ Delete(s, 1, i);
+ c1.b:= StrToInt(Trim(s));
+ glClearColor(c1.r / 255, c1.g / 255, c1.b / 255, 0.99);
+ SDSkyColor.r:= byte(c1.r * SDTint div 255);
+ SDSkyColor.g:= byte(c1.g * SDTint div 255);
+ SDSkyColor.b:= byte(c1.b * SDTint div 255);
+ end
+ end
end;
-// snowflakes
-Readln(f, vobCount);
-if vobCount > 0 then
- Readln(f, vobFramesCount, vobFrameTicks, vobVelocity, vobFallSpeed);
-
-// adjust amount of flakes scaled by screen space
-vobCount:= longint(vobCount);
-numFlakes:= vobCount * cScreenSpace div LAND_WIDTH;
-
-if (cReducedQuality and rqKillFlakes) <> 0 then
- numFlakes:= 0;
-
-if ((GameFlags and gfBorder) <> 0) or ((Theme <> 'Snow') and (Theme <> 'Christmas')) then
- for i:= 0 to Pred(numFlakes) do
- AddVisualGear(cLeftScreenBorder + random(cScreenSpace), random(1024+200) - 100 + LAND_HEIGHT, vgtFlake)
-else
- for i:= 0 to Pred(numFlakes div 3) do
- AddVisualGear(cLeftScreenBorder + random(cScreenSpace), random(1024+200) - 100 + LAND_HEIGHT, vgtFlake);
-
Close(f);
{$I+}
TryDo(IOResult = 0, 'Bad data or cannot access file ' + cThemeCFGFilename, true);
diff -r 69f8431a5d20 -r efcea232bbf6 hedgewars/uLocale.pas
--- a/hedgewars/uLocale.pas Tue Feb 01 00:12:19 2011 +0100
+++ b/hedgewars/uLocale.pas Tue Feb 01 00:18:25 2011 +0100
@@ -44,7 +44,6 @@
loaded: boolean;
begin
loaded:= false;
-trammo[sidNothing]:= ' ';
for e:= Low(TEventId) to High(TEventId) do first[e]:= true;
{$I-} // iochecks off
@@ -69,7 +68,7 @@
TryDo(s[6] = '=', 'Load locale: "=" expected', true);
Delete(s, 1, 6);
case a of
- 0: if (b >=0) and (b <= ord(High(TAmmoStrId))) then trammo[TAmmoStrId(b+1)]:= s;
+ 0: if (b >=0) and (b <= ord(High(TAmmoStrId))) then trammo[TAmmoStrId(b)]:= s;
1: if (b >=0) and (b <= ord(High(TMsgStrId))) then trmsg[TMsgStrId(b)]:= s;
2: if (b >=0) and (b <= ord(High(TEventId))) then begin
TryDo(trevt_n[TEventId(b)] < MAX_EVENT_STRINGS, 'Too many event strings in ' + IntToStr(a) + ':' + IntToStr(b), false);
@@ -81,8 +80,8 @@
trevt[TEventId(b)][trevt_n[TEventId(b)]]:= s;
inc(trevt_n[TEventId(b)]);
end;
- 3: if (b >=0) and (b <= ord(High(TAmmoStrId))) then trammoc[TAmmoStrId(b+1)]:= s;
- 4: if (b >=0) and (b <= ord(High(TAmmoStrId))) then trammod[TAmmoStrId(b+1)]:= s;
+ 3: if (b >=0) and (b <= ord(High(TAmmoStrId))) then trammoc[TAmmoStrId(b)]:= s;
+ 4: if (b >=0) and (b <= ord(High(TAmmoStrId))) then trammod[TAmmoStrId(b)]:= s;
5: if (b >=0) and (b <= ord(High(TGoalStrId))) then trgoal[TGoalStrId(b)]:= s;
end;
end;
diff -r 69f8431a5d20 -r efcea232bbf6 hedgewars/uMisc.pas
--- a/hedgewars/uMisc.pas Tue Feb 01 00:12:19 2011 +0100
+++ b/hedgewars/uMisc.pas Tue Feb 01 00:18:25 2011 +0100
@@ -23,7 +23,6 @@
uses SDLh, uConsts, GLunit, uTypes;
-
procedure movecursor(dx, dy: LongInt);
function doSurfaceConversion(tmpsurf: PSDL_Surface): PSDL_Surface;
procedure MakeScreenshot(filename: shortstring);
diff -r 69f8431a5d20 -r efcea232bbf6 hedgewars/uMobile.pas
--- a/hedgewars/uMobile.pas Tue Feb 01 00:12:19 2011 +0100
+++ b/hedgewars/uMobile.pas Tue Feb 01 00:18:25 2011 +0100
@@ -28,6 +28,7 @@
procedure stopSpinning; cdecl; external;
procedure replayBegan; cdecl; external;
procedure replayFinished; cdecl; external;
+procedure setGameRunning(arg: boolean); cdecl; external;
procedure updateVisualsNewTurn; cdecl; external;
function isApplePhone: Boolean; cdecl; external;
function isAppleDeviceMuted: Boolean; cdecl; external;
diff -r 69f8431a5d20 -r efcea232bbf6 hedgewars/uScript.pas
--- a/hedgewars/uScript.pas Tue Feb 01 00:12:19 2011 +0100
+++ b/hedgewars/uScript.pas Tue Feb 01 00:18:25 2011 +0100
@@ -50,14 +50,18 @@
uSound,
uChat,
uStats,
+ uStore,
uRandom,
uTypes,
uVariables,
uCommands,
uUtils,
- uKeys,
uCaptions,
- uDebug;
+ uDebug,
+ uCollisions,
+ uRenderUtils,
+ uTextures,
+ SDLh;
var luaState : Plua_State;
ScriptAmmoLoadout : shortstring;
@@ -272,6 +276,7 @@
t:= lua_tointeger(L, 7);
gear:= AddGear(x, y, gt, s, dx, dy, t);
+ lastGearByUID:= gear;
lua_pushinteger(L, gear^.uid)
end;
lc_addgear:= 1; // 1 return value
@@ -311,8 +316,12 @@
s:= lua_tointeger(L, 4);
c:= lua_toboolean(L, 5);
- vg:= AddVisualGear(x, y, vgt, s, c);
- if vg <> nil then lua_pushinteger(L, vg^.uid)
+ vg:= AddVisualGear(x, y, vgt, s, c);
+ if vg <> nil then
+ begin
+ lastVisualGearByUID:= vg;
+ lua_pushinteger(L, vg^.uid)
+ end
else lua_pushinteger(L, 0)
end;
lc_addvisualgear:= 1; // 1 return value
@@ -358,6 +367,11 @@
lua_pushinteger(L, vg^.Timer);
lua_pushinteger(L, vg^.Tint);
end
+ else
+ begin
+ 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
end;
lc_getvisualgearvalues:= 10;
end;
@@ -537,6 +551,56 @@
lc_getclancolor:= 1
end;
+function lc_setclancolor(L : Plua_State) : LongInt; Cdecl;
+var clan : PClan;
+ team : PTeam;
+ hh : THedgehog;
+ i, j : LongInt;
+ r, rr: TSDL_Rect;
+ texsurf: PSDL_Surface;
+begin
+ if lua_gettop(L) <> 2 then
+ LuaError('Lua: Wrong number of parameters passed to SetClanColor!')
+ else
+ begin
+ clan := ClansArray[lua_tointeger(L, 1)];
+ clan^.Color:= lua_tointeger(L, 2) shr 8;
+ for i:= 0 to Pred(clan^.TeamsNumber) do
+ begin
+ team:= clan^.Teams[i];
+ for j:= 0 to 7 do
+ begin
+ hh:= team^.Hedgehogs[j];
+ if (hh.Gear <> nil) or (hh.GearHidden <> nil) then
+ begin
+ FreeTexture(hh.NameTagTex);
+ hh.NameTagTex:= RenderStringTex(hh.Name, clan^.Color, fnt16);
+ RenderHealth(hh);
+ end;
+ end;
+ FreeTexture(team^.NameTagTex);
+ team^.NameTagTex:= RenderStringTex(clan^.Teams[i]^.TeamName, clan^.Color, fnt16);
+ r.w:= cTeamHealthWidth + 5;
+ r.h:= team^.NameTagTex^.h;
+
+ texsurf:= SDL_CreateRGBSurface(SDL_SWSURFACE, r.w, r.h, 32, RMask, GMask, BMask, AMask);
+ TryDo(texsurf <> nil, errmsgCreateSurface, true);
+ TryDo(SDL_SetColorKey(texsurf, SDL_SRCCOLORKEY, 0) = 0, errmsgTransparentSet, true);
+
+ DrawRoundRect(@r, cWhiteColor, cNearBlackColorChannels.value, texsurf, true);
+ rr:= r;
+ inc(rr.x, 2); dec(rr.w, 4); inc(rr.y, 2); dec(rr.h, 4);
+ DrawRoundRect(@rr, clan^.Color, clan^.Color, texsurf, false);
+
+ FreeTexture(team^.HealthTex);
+ team^.HealthTex:= Surface2Tex(texsurf, false);
+ SDL_FreeSurface(texsurf);
+ MakeCrossHairs
+ end
+ end;
+ lc_setclancolor:= 0
+end;
+
function lc_gethogteamname(L : Plua_State) : LongInt; Cdecl;
var gear : PGear;
begin
@@ -717,6 +781,38 @@
lc_hogsay:= 0
end;
+function lc_switchhog(L : Plua_State) : LongInt; Cdecl;
+var gear, prevgear : PGear;
+begin
+ if lua_gettop(L) <> 1 then
+ LuaError('Lua: Wrong number of parameters passed to SwitchHog!')
+ else
+ begin
+ gear:= GearByUID(lua_tointeger(L, 1));
+// should we allow this when there is no current hedgehog? might do some odd(er) things to turn sequence.
+ if (gear <> nil) and (gear^.Kind = gtHedgehog) and (gear^.Hedgehog <> nil) and (CurrentHedgehog <> nil) then
+ begin
+ prevgear := CurrentHedgehog^.Gear;
+ prevgear^.Active := false;
+ prevgear^.State:= prevgear^.State and not gstHHDriven;
+ prevgear^.Z := cHHZ;
+ RemoveGearFromList(prevgear);
+ InsertGearToList(prevgear);
+
+ CurrentHedgehog := gear^.Hedgehog;
+// yes, this will muck up turn sequence
+ CurrentTeam := gear^.Hedgehog^.Team;
+
+ gear^.State:= gear^.State or gstHHDriven;
+ gear^.Active := true;
+ gear^.Z := cCurrHHZ;
+ RemoveGearFromList(gear);
+ InsertGearToList(gear);
+ end
+ end;
+ lc_switchhog:= 0
+end;
+
function lc_addammo(L : Plua_State) : LongInt; Cdecl;
var gear : PGear;
begin
@@ -962,6 +1058,7 @@
function lc_setgearposition(L : Plua_State) : LongInt; Cdecl;
var gear: PGear;
+ col: boolean;
x, y: LongInt;
begin
if lua_gettop(L) <> 3 then
@@ -971,11 +1068,14 @@
gear:= GearByUID(lua_tointeger(L, 1));
if gear <> nil then
begin
+ col:= gear^.CollisionIndex >= 0;
x:= lua_tointeger(L, 2);
y:= lua_tointeger(L, 3);
+ if col then DeleteCI(gear);
gear^.X:= int2hwfloat(x);
gear^.Y:= int2hwfloat(y);
- SetAllToActive;
+ if col then AddGearCI(gear);
+ SetAllToActive
end
end;
lc_setgearposition:= 0
@@ -1118,6 +1218,60 @@
lua_pushboolean(L, hasBorder);
lc_maphasborder:= 1
end;
+
+function lc_getgearradius(L : Plua_State) : LongInt; Cdecl;
+var gear : PGear;
+begin
+ if lua_gettop(L) <> 1 then
+ begin
+ LuaError('Lua: Wrong number of parameters passed to GetGearRadius!');
+ lua_pushnil(L); // return value on stack (nil)
+ end
+ else
+ begin
+ gear:= GearByUID(lua_tointeger(L, 1));
+ if gear <> nil then
+ lua_pushinteger(L, gear^.Radius)
+ else
+ lua_pushnil(L);
+ end;
+ lc_getgearradius:= 1
+end;
+
+function lc_gethoghat(L : Plua_State): LongInt; Cdecl;
+var gear : PGear;
+begin
+ if lua_gettop(L) <> 1 then
+ LuaError('Lua: Wrong number of parameters passed to GetHogHat!')
+ else begin
+ gear := GearByUID(lua_tointeger(L, 1));
+ if (gear <> nil) and (gear^.Kind = gtHedgehog) and (gear^.Hedgehog <> nil) then
+ lua_pushstring(L, str2pchar(gear^.Hedgehog^.Hat))
+ else
+ lua_pushnil(L);
+ end;
+ lc_gethoghat := 1;
+end;
+
+function lc_sethoghat(L : Plua_State) : LongInt; Cdecl;
+var gear : PGear;
+ hat: ShortString;
+begin
+ if lua_gettop(L) <> 2 then
+ begin
+ LuaError('Lua: Wrong number of parameters passed to SetHogHat!');
+ lua_pushnil(L)
+ end
+ else
+ begin
+ gear:= GearByUID(lua_tointeger(L, 1));
+ if (gear <> nil) and (gear^.Kind = gtHedgehog) and (gear^.Hedgehog <> nil) then
+ hat:= lua_tostring(L, 2);
+ gear^.Hedgehog^.Hat:= hat;
+ LoadHedgehogHat(gear, hat);
+ end;
+ lc_sethoghat:= 0;
+end;
///////////////////
procedure ScriptPrintStack;
@@ -1196,6 +1350,7 @@
ScriptSetInteger('HealthDecrease', cHealthDecrease);
ScriptSetString('Map', '');
ScriptSetString('Theme', '');
+ScriptSetString('Goals', '');
ScriptCall('onGameInit');
@@ -1220,6 +1375,7 @@
ParseCommand('map ' + ScriptGetString('Map'), true);
if ScriptGetString('Theme') <> '' then
ParseCommand('theme ' + ScriptGetString('Theme'), true);
+LuaGoals:= ScriptGetString('Goals');
if ScriptExists('onAmmoStoreInit') then
begin
@@ -1503,6 +1659,7 @@
lua_register(luaState, 'SetEffect', @lc_seteffect);
lua_register(luaState, 'GetHogClan', @lc_gethogclan);
lua_register(luaState, 'GetClanColor', @lc_getclancolor);
+lua_register(luaState, 'SetClanColor', @lc_setclancolor);
lua_register(luaState, 'GetHogTeamName', @lc_gethogteamname);
lua_register(luaState, 'GetHogName', @lc_gethogname);
lua_register(luaState, 'GetHogLevel', @lc_gethoglevel);
@@ -1520,16 +1677,20 @@
lua_register(luaState, 'SetZoom', @lc_setzoom);
lua_register(luaState, 'GetZoom', @lc_getzoom);
lua_register(luaState, 'HogSay', @lc_hogsay);
+lua_register(luaState, 'SwitchHog', @lc_switchhog);
lua_register(luaState, 'HogTurnLeft', @lc_hogturnleft);
lua_register(luaState, 'CampaignLock', @lc_campaignlock);
lua_register(luaState, 'CampaignUnlock', @lc_campaignunlock);
lua_register(luaState, 'GetGearElasticity', @lc_getgearelasticity);
+lua_register(luaState, 'GetGearRadius', @lc_getgearradius);
lua_register(luaState, 'GetGearMessage', @lc_getgearmessage);
lua_register(luaState, 'SetGearMessage', @lc_setgearmessage);
lua_register(luaState, 'GetRandom', @lc_getrandom);
lua_register(luaState, 'SetWind', @lc_setwind);
lua_register(luaState, 'GetDataPath', @lc_getdatapath);
lua_register(luaState, 'MapHasBorder', @lc_maphasborder);
+lua_register(luaState, 'GetHogHat', @lc_gethoghat);
+lua_register(luaState, 'SetHogHat', @lc_sethoghat);
ScriptClearStack; // just to be sure stack is empty
diff -r 69f8431a5d20 -r efcea232bbf6 hedgewars/uSound.pas
--- a/hedgewars/uSound.pas Tue Feb 01 00:12:19 2011 +0100
+++ b/hedgewars/uSound.pas Tue Feb 01 00:18:25 2011 +0100
@@ -39,6 +39,7 @@
procedure PlayMusic;
procedure PauseMusic;
procedure ResumeMusic;
+procedure ChangeMusic;
procedure StopSound(snd: TSound);
procedure StopSound(chn: LongInt);
function ChangeVolume(voldelta: LongInt): LongInt;
@@ -318,6 +319,17 @@
Mix_ResumeMusic(Mus);
end;
+procedure ChangeMusic;
+begin
+ if (MusicFN = '') or (not isMusicEnabled) then
+ exit;
+
+ if Mus <> nil then
+ Mix_FreeMusic(Mus);
+
+ PlayMusic;
+end;
+
procedure chVoicepack(var s: shortstring);
begin
if CurrentTeam = nil then OutError(errmsgIncorrectUse + ' "/voicepack"', true);
diff -r 69f8431a5d20 -r efcea232bbf6 hedgewars/uStats.pas
--- a/hedgewars/uStats.pas Tue Feb 01 00:12:19 2011 +0100
+++ b/hedgewars/uStats.pas Tue Feb 01 00:18:25 2011 +0100
@@ -29,7 +29,7 @@
procedure freeModule;
procedure AmmoUsed(am: TAmmoType);
-procedure HedgehogDamaged(Gear: PGear);
+procedure HedgehogDamaged(Gear: PGear; Attacker: PHedgehog);
procedure Skipped;
procedure TurnReaction;
procedure SendStats;
@@ -50,19 +50,17 @@
vpHurtSameClan: PVoicepack = nil;
vpHurtEnemy: PVoicepack = nil;
-procedure HedgehogDamaged(Gear: PGear);
+procedure HedgehogDamaged(Gear: PGear; Attacker: PHedgehog);
begin
-if CurrentHedgehog^.Team^.Clan = Gear^.Hedgehog^.Team^.Clan then
+if Attacker^.Team^.Clan = Gear^.Hedgehog^.Team^.Clan then
vpHurtSameClan:= CurrentHedgehog^.Team^.voicepack
else
vpHurtEnemy:= Gear^.Hedgehog^.Team^.voicepack;
-if bBetweenTurns then exit;
-
//////////////////////////
-if Gear <> CurrentHedgehog^.Gear then
- inc(CurrentHedgehog^.stats.StepDamageGiven, Gear^.Damage);
+if Gear <> Attacker^.Gear then
+ inc(Attacker^.stats.StepDamageGiven, Gear^.Damage);
if CurrentHedgehog^.Team^.Clan = Gear^.Hedgehog^.Team^.Clan then inc(DamageClan, Gear^.Damage);
diff -r 69f8431a5d20 -r efcea232bbf6 hedgewars/uStore.pas
--- a/hedgewars/uStore.pas Tue Feb 01 00:12:19 2011 +0100
+++ b/hedgewars/uStore.pas Tue Feb 01 00:18:25 2011 +0100
@@ -17,6 +17,7 @@
*)
{$INCLUDE "options.inc"}
+{$IF GLunit = GL}{$DEFINE GLunit:=GL,GLext}{$ENDIF}
unit uStore;
interface
@@ -31,12 +32,14 @@
procedure AddProgress;
procedure FinishProgress;
function LoadImage(const filename: shortstring; imageFlags: LongInt): PSDL_Surface;
+procedure LoadHedgehogHat(HHGear: PGear; newHat: shortstring);
procedure SetupOpenGL;
procedure SetScale(f: GLfloat);
function RenderHelpWindow(caption, subcaption, description, extra: ansistring; extracolor: LongInt; iconsurf: PSDL_Surface; iconrect: PSDL_Rect): PTexture;
procedure RenderWeaponTooltip(atype: TAmmoType);
procedure ShowWeaponTooltip(x, y: LongInt);
procedure FreeWeaponTooltip;
+procedure MakeCrossHairs;
implementation
uses uMisc, uConsole, uMobile, uVariables, uUtils, uTextures, uRender, uRenderUtils, uCommands, uDebug;
@@ -73,6 +76,47 @@
WriteInRect:= finalRect
end;
+procedure MakeCrossHairs;
+var t: LongInt;
+ tmpsurf, texsurf: PSDL_Surface;
+ Color, i: Longword;
+ s : shortstring;
+begin
+s:= Pathz[ptGraphics] + '/' + cCHFileName;
+tmpsurf:= LoadImage(s, ifAlpha or ifCritical);
+
+for t:= 0 to Pred(TeamsCount) do
+ with TeamsArray[t]^ do
+ begin
+ texsurf:= SDL_CreateRGBSurface(SDL_SWSURFACE, tmpsurf^.w, tmpsurf^.h, 32, RMask, GMask, BMask, AMask);
+ TryDo(texsurf <> nil, errmsgCreateSurface, true);
+
+ Color:= Clan^.Color;
+ Color:= SDL_MapRGB(texsurf^.format, Color shr 16, Color shr 8, Color and $FF);
+ SDL_FillRect(texsurf, nil, Color);
+
+ SDL_UpperBlit(tmpsurf, nil, texsurf, nil);
+
+ TryDo(tmpsurf^.format^.BytesPerPixel = 4, 'Ooops', true);
+
+ if SDL_MustLock(texsurf) then
+ SDLTry(SDL_LockSurface(texsurf) >= 0, true);
+
+ // make black pixel be alpha-transparent
+ for i:= 0 to texsurf^.w * texsurf^.h - 1 do
+ if PLongwordArray(texsurf^.pixels)^[i] = AMask then PLongwordArray(texsurf^.pixels)^[i]:= (RMask or GMask or BMask) and Color;
+
+ if SDL_MustLock(texsurf) then
+ SDL_UnlockSurface(texsurf);
+
+ if CrosshairTex <> nil then FreeTexture(CrosshairTex);
+ CrosshairTex:= Surface2Tex(texsurf, false);
+ SDL_FreeSurface(texsurf)
+ end;
+
+SDL_FreeSurface(tmpsurf)
+end;
+
procedure StoreLoad;
var s: shortstring;
@@ -140,6 +184,7 @@
FlagTex:= Surface2Tex(texsurf, false);
SDL_FreeSurface(texsurf);
+ texsurf:= nil;
AIKillsTex := RenderStringTex(inttostr(stats.AIKills), Clan^.Color, fnt16);
@@ -149,19 +194,13 @@
with Hedgehogs[i] do
if Gear <> nil then
begin
- NameTagTex:= RenderStringTex(Name, Clan^.Color, CheckCJKFont(Name,fnt16));
+ NameTagTex:= RenderStringTex(Name, Clan^.Color, fnt16);
if Hat <> 'NoHat' then
begin
if (Length(Hat) > 39) and (Copy(Hat,1,8) = 'Reserved') and (Copy(Hat,9,32) = PlayerHash) then
- texsurf:= LoadImage(Pathz[ptHats] + '/Reserved/' + Copy(Hat,9,Length(s)-8), ifNone)
+ LoadHedgehogHat(Gear, 'Reserved/' + Copy(Hat,9,Length(s)-8))
else
- texsurf:= LoadImage(Pathz[ptHats] + '/' + Hat, ifNone);
- if texsurf <> nil then
- begin
- HatTex:= Surface2Tex(texsurf, true);
- SDL_FreeSurface(texsurf)
- end;
- texsurf:= nil;
+ LoadHedgehogHat(Gear, Hat);
end
end;
end;
@@ -180,45 +219,6 @@
end;
end;
- procedure MakeCrossHairs;
- var t: LongInt;
- tmpsurf, texsurf: PSDL_Surface;
- Color, i: Longword;
- begin
- s:= Pathz[ptGraphics] + '/' + cCHFileName;
- tmpsurf:= LoadImage(s, ifAlpha or ifCritical);
-
- for t:= 0 to Pred(TeamsCount) do
- with TeamsArray[t]^ do
- begin
- texsurf:= SDL_CreateRGBSurface(SDL_SWSURFACE, tmpsurf^.w, tmpsurf^.h, 32, RMask, GMask, BMask, AMask);
- TryDo(texsurf <> nil, errmsgCreateSurface, true);
-
- Color:= Clan^.Color;
- Color:= SDL_MapRGB(texsurf^.format, Color shr 16, Color shr 8, Color and $FF);
- SDL_FillRect(texsurf, nil, Color);
-
- SDL_UpperBlit(tmpsurf, nil, texsurf, nil);
-
- TryDo(tmpsurf^.format^.BytesPerPixel = 4, 'Ooops', true);
-
- if SDL_MustLock(texsurf) then
- SDLTry(SDL_LockSurface(texsurf) >= 0, true);
-
- // make black pixel be alpha-transparent
- for i:= 0 to texsurf^.w * texsurf^.h - 1 do
- if PLongwordArray(texsurf^.pixels)^[i] = AMask then PLongwordArray(texsurf^.pixels)^[i]:= (RMask or GMask or BMask) and Color;
-
- if SDL_MustLock(texsurf) then
- SDL_UnlockSurface(texsurf);
-
- CrosshairTex:= Surface2Tex(texsurf, false);
- SDL_FreeSurface(texsurf)
- end;
-
- SDL_FreeSurface(tmpsurf)
- end;
-
procedure InitHealth;
var i, t: LongInt;
begin
@@ -274,7 +274,9 @@
for ii:= Low(TSprite) to High(TSprite) do
with SpritesData[ii] do
// FIXME - add a sprite attribute
- if ((cReducedQuality and rqNoBackground) = 0) or (not (ii in [sprSky, sprSkyL, sprSkyR, sprHorizont, sprHorizontL, sprHorizontR, sprFlake, sprSplash, sprDroplet]) or (((Theme = 'Snow') or (Theme = 'Christmas')) and (ii = sprFlake))) then // FIXME: hack
+ if ((cReducedQuality and rqNoBackground) = 0) or // FIXME: should check for both rqNoBackground and rqKillFlakes
+ (not (ii in [sprSky, sprSkyL, sprSkyR, sprHorizont, sprHorizontL, sprHorizontR, sprFlake, sprSplash, sprDroplet, sprSDSplash, sprSDDroplet]) or
+ (((Theme = 'Snow') or (Theme = 'Christmas')) and ((ii = sprFlake) or (ii = sprSDFlake)))) then // FIXME: hack; also should checked against rqLowRes
begin
if AltPath = ptNone then
if ii in [sprHorizontL, sprHorizontR, sprSkyL, sprSkyR] then // FIXME: hack
@@ -307,7 +309,8 @@
else
begin
Texture:= Surface2Tex(tmpsurf, false);
- if (ii = sprWater) and ((cReducedQuality and (rq2DWater or rqClampLess)) = 0) then // HACK: We should include some sprite attribute to define the texture wrap directions
+ // HACK: We should include some sprite attribute to define the texture wrap directions
+ if ((ii = sprWater) or (ii = sprSDWater)) and ((cReducedQuality and (rq2DWater or rqClampLess)) = 0) then
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
end;
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_PRIORITY, priority);
@@ -375,6 +378,17 @@
SDL_FreeSurface(MissionIcons);
FreeTexture(ropeIconTex);
FreeTexture(HHTexture);
+{$IFNDEF S3D_DISABLED}
+ if (cStereoMode = smHorizontal) or (cStereoMode = smVertical) or (cStereoMode = smAFR) then
+ begin
+ glDeleteTextures(1, @texl);
+ glDeleteRenderbuffersEXT(1, @depthl);
+ glDeleteFramebuffersEXT(1, @framel);
+ glDeleteTextures(1, @texr);
+ glDeleteRenderbuffersEXT(1, @depthr);
+ glDeleteFramebuffersEXT(1, @framer)
+ end
+{$ENDIF}
end;
@@ -420,9 +434,29 @@
LoadImage:= tmpsurf //Result
end;
+procedure LoadHedgehogHat(HHGear: PGear; newHat: shortstring);
+var texsurf: PSDL_Surface;
+begin
+ texsurf:= LoadImage(Pathz[ptHats] + '/' + newHat, ifNone);
+
+ // only do something if the hat could be loaded
+ if texsurf <> nil then
+ begin
+ // free the mem of any previously assigned texture
+ FreeTexture(HHGear^.Hedgehog^.HatTex);
+
+ // assign new hat to hedgehog
+ HHGear^.Hedgehog^.HatTex:= Surface2Tex(texsurf, true);
+
+ // cleanup: free temporary surface mem
+ SDL_FreeSurface(texsurf)
+ end;
+end;
+
function glLoadExtension(extension : shortstring) : boolean;
begin
-{$IFDEF IPHONEOS}
+{$IF GLunit = gles11}
+ // FreePascal doesn't come with OpenGL ES 1.1 Extension headers
extension:= extension; // avoid hint
glLoadExtension:= false;
{$IFDEF DEBUGFILE}
@@ -431,10 +465,10 @@
{$ELSE}
glLoadExtension:= glext_LoadExtension(extension);
{$IFDEF DEBUGFILE}
- if not glLoadExtension then
- AddFileLog('OpenGL - "' + extension + '" failed to load')
+ if glLoadExtension then
+ AddFileLog('OpenGL - "' + extension + '" loaded')
else
- AddFileLog('OpenGL - "' + extension + '" loaded');
+ AddFileLog('OpenGL - "' + extension + '" failed to load');
{$ENDIF}
{$ENDIF}
end;
@@ -492,16 +526,57 @@
{$ENDIF}
end;
-{$IFNDEF IPHONEOS}
+{$IFDEF IPHONEOS}
+ cGPUVendor:= gvApple;
+{$ELSE}
if StrPos(Str2PChar(vendor), Str2PChar('nvidia')) <> nil then
cGPUVendor:= gvNVIDIA
else if StrPos(Str2PChar(vendor), Str2PChar('intel')) <> nil then
cGPUVendor:= gvATI
else if StrPos(Str2PChar(vendor), Str2PChar('ati')) <> nil then
cGPUVendor:= gvIntel;
+{$ENDIF}
//SupportNPOTT:= glLoadExtension('GL_ARB_texture_non_power_of_two');
-{$ELSE}
- cGPUVendor:= gvApple;
+{$IFNDEF S3D_DISABLED}
+ if (cStereoMode = smHorizontal) or (cStereoMode = smVertical) or (cStereoMode = smAFR) then
+ begin
+ // prepare left and right frame buffers and associated textures
+ if glLoadExtension('GL_EXT_framebuffer_object') then
+ begin
+ // left
+ glGenFramebuffersEXT(1, @framel);
+ glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, framel);
+ glGenRenderbuffersEXT(1, @depthl);
+ glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, depthl);
+ glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT, cScreenWidth, cScreenHeight);
+ glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, depthl);
+ glGenTextures(1, @texl);
+ glBindTexture(GL_TEXTURE_2D, texl);
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, cScreenWidth, cScreenHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, nil);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+ glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, texl, 0);
+
+ // right
+ glGenFramebuffersEXT(1, @framer);
+ glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, framer);
+ glGenRenderbuffersEXT(1, @depthr);
+ glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, depthr);
+ glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT, cScreenWidth, cScreenHeight);
+ glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, depthr);
+ glGenTextures(1, @texr);
+ glBindTexture(GL_TEXTURE_2D, texr);
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, cScreenWidth, cScreenHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, nil);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+ glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, texr, 0);
+
+ // reset
+ glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0)
+ end
+ else
+ cStereoMode:= smNone;
+ end;
{$ENDIF}
{$IFDEF DEBUGFILE}
diff -r 69f8431a5d20 -r efcea232bbf6 hedgewars/uTeams.pas
--- a/hedgewars/uTeams.pas Tue Feb 01 00:12:19 2011 +0100
+++ b/hedgewars/uTeams.pas Tue Feb 01 00:18:25 2011 +0100
@@ -372,7 +372,9 @@
if not hasGone then
for i:= 0 to cMaxHHIndex do
if Hedgehogs[i].Gear <> nil then
- inc(NewTeamHealthBarWidth, Hedgehogs[i].Gear^.Health);
+ inc(NewTeamHealthBarWidth, Hedgehogs[i].Gear^.Health)
+ else if Hedgehogs[i].GearHidden <> nil then
+ inc(NewTeamHealthBarWidth, Hedgehogs[i].GearHidden^.Health);
TeamHealth:= NewTeamHealthBarWidth;
if NewTeamHealthBarWidth > MaxTeamHealth then
@@ -529,11 +531,17 @@
end;
procedure freeModule;
-var i: LongWord;
+var i, h: LongWord;
begin
if TeamsCount > 0 then
begin
- for i:= 0 to Pred(TeamsCount) do Dispose(TeamsArray[i]);
+ for i:= 0 to Pred(TeamsCount) do
+ begin
+ for h:= 0 to cMaxHHIndex do
+ if TeamsArray[i]^.Hedgehogs[h].GearHidden <> nil then
+ Dispose(TeamsArray[i]^.Hedgehogs[h].GearHidden);
+ Dispose(TeamsArray[i]);
+ end;
for i:= 0 to Pred(ClansCount) do Dispose(ClansArray[i]);
end;
TeamsCount:= 0;
diff -r 69f8431a5d20 -r efcea232bbf6 hedgewars/uTypes.pas
--- a/hedgewars/uTypes.pas Tue Feb 01 00:12:19 2011 +0100
+++ b/hedgewars/uTypes.pas Tue Feb 01 00:18:25 2011 +0100
@@ -5,6 +5,9 @@
uses SDLh, uFloat, GLunit, uConsts, Math;
+// NOTE: typed const is a variable despite const qualifier
+// in freepascal you may actually use var for the same purpose
+
type
HwColor4f = record
r, g, b, a: byte
@@ -16,7 +19,7 @@
TPathType = (ptNone, ptData, ptGraphics, ptThemes, ptCurrTheme, ptTeams, ptMaps,
ptMapCurrent, ptDemos, ptSounds, ptGraves, ptFonts, ptForts,
- ptLocale, ptAmmoMenu, ptHedgehog, ptVoices, ptHats, ptFlags, ptMissionMaps);
+ ptLocale, ptAmmoMenu, ptHedgehog, ptVoices, ptHats, ptFlags, ptMissionMaps, ptSuddenDeath);
TSprite = (sprWater, sprCloud, sprBomb, sprBigDigit, sprFrame,
sprLag, sprArrow, sprBazookaShell, sprTargetP, sprBee,
@@ -52,7 +55,8 @@
sprCheese, sprHandCheese, sprHandFlamethrower, sprChunk, sprNote,
sprSMineOff, sprSMineOn, sprHandSMine, sprHammer,
sprHandResurrector, sprCross, sprAirDrill, sprNapalmBomb,
- sprBulletHit, sprSnowball, sprHandSnowball, sprSnow
+ sprBulletHit, sprSnowball, sprHandSnowball, sprSnow,
+ sprSDFlake, sprSDWater, sprSDCloud, sprSDSplash, sprSDDroplet
);
// Gears that interact with other Gears and/or Land
@@ -67,7 +71,7 @@
gtSniperRifleShot, gtJetpack, gtMolotov, gtExplosives, gtBirdy, // 45
gtEgg, gtPortal, gtPiano, gtGasBomb, gtSineGunShot, gtFlamethrower, // 51
gtSMine, gtPoisonCloud, gtHammer, gtHammerHit, gtResurrector, // 56
- gtNapalmBomb, gtSnowball, gtFlake); // 58
+ gtNapalmBomb, gtSnowball, gtFlake, gtStructure); // 60
// Gears that are _only_ of visual nature (e.g. background stuff, visual effects, speechbubbles, etc.)
TVisualGearType = (vgtFlake, vgtCloud, vgtExplPart, vgtExplPart2, vgtFire,
@@ -112,7 +116,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);
+ amResurrector, amDrillStrike, amSnowball, amTardis, amStructure);
TCrateType = (HealthCrate, AmmoCrate, UtilityCrate);
@@ -127,6 +131,9 @@
TWave = (waveRollup, waveSad, waveWave, waveHurrah, waveLemonade, waveShrug, waveJuggle);
+ TRenderMode = (rmDefault, rmLeftEye, rmRightEye);
+ TStereoMode = (smNone, smRedCyan, smCyanRed, smRedBlue, smBlueRed, smRedGreen, smGreenRed, smHorizontal, smVertical, smAFR);
+
THHFont = record
Handle: PTTF_Font;
Height: LongInt;
@@ -274,6 +281,7 @@
THedgehog = record
Name: string[MAXNAMELEN];
Gear: PGear;
+ GearHidden: PGear;
SpeechGear: PVisualGear;
NameTagTex,
HealthTagTex,
@@ -333,7 +341,7 @@
TurnNumber: LongWord;
end;
- TAmmoStrId = (sidNothing, sidGrenade, sidClusterBomb, sidBazooka, sidBee, sidShotgun,
+ TAmmoStrId = (sidGrenade, sidClusterBomb, sidBazooka, sidBee, sidShotgun,
sidPickHammer, sidSkip, sidRope, sidMine, sidDEagle,
sidDynamite, sidBaseballBat, sidFirePunch, sidSeconds,
sidParachute, sidAirAttack, sidMineStrike, sidBlowTorch,
@@ -343,7 +351,7 @@
sidLowGravity, sidExtraDamage, sidInvulnerable, sidExtraTime,
sidLaserSight, sidVampiric, sidSniperRifle, sidJetpack,
sidMolotov, sidBirdy, sidPortalGun, sidPiano, sidGasBomb, sidSineGun, sidFlamethrower,
- sidSMine, sidHammer, sidResurrector, sidDrillStrike, sidSnowball);
+ sidSMine, sidHammer, sidResurrector, sidDrillStrike, sidSnowball, sidNothing, sidTardis, sidStructure);
TMsgStrId = (sidStartFight, sidDraw, sidWinner, sidVolume, sidPaused,
sidConfirm, sidSuddenDeath, sidRemaining, sidFuel, sidSync,
diff -r 69f8431a5d20 -r efcea232bbf6 hedgewars/uUtils.pas
--- a/hedgewars/uUtils.pas Tue Feb 01 00:12:19 2011 +0100
+++ b/hedgewars/uUtils.pas Tue Feb 01 00:18:25 2011 +0100
@@ -254,15 +254,19 @@
l:= Utf8ToUnicode(@tmpstr, Str2PChar(s), length(s))-1;
i:= 0;
+
while i < l do
begin
u:= tmpstr[i];
- if (#$2E80 <= u) and (
- (u <= #$2FDF ) or // CJK Radicals Supplement / Kangxi Radicals
+ if (#$1100 <= u) and (
+ (u <= #$11FF ) or // Hangul Jamo
+ ((#$2E80 <= u) and (u <= #$2FDF)) or // CJK Radicals Supplement / Kangxi Radicals
((#$2FF0 <= u) and (u <= #$303F)) or // Ideographic Description Characters / CJK Radicals Supplement
+ ((#$3130 <= u) and (u <= #$318F)) or // Hangul Compatibility Jamo
((#$31C0 <= u) and (u <= #$31EF)) or // CJK Strokes
((#$3200 <= u) and (u <= #$4DBF)) or // Enclosed CJK Letters and Months / CJK Compatibility / CJK Unified Ideographs Extension A
((#$4E00 <= u) and (u <= #$9FFF)) or // CJK Unified Ideographs
+ ((#$AC00 <= u) and (u <= #$D7AF)) or // Hangul Syllables
((#$F900 <= u) and (u <= #$FAFF)) or // CJK Compatibility Ideographs
((#$FE30 <= u) and (u <= #$FE4F))) // CJK Compatibility Forms
then exit(THWFont( ord(font) + ((ord(High(THWFont))+1) div 2) ));
diff -r 69f8431a5d20 -r efcea232bbf6 hedgewars/uVariables.pas
--- a/hedgewars/uVariables.pas Tue Feb 01 00:12:19 2011 +0100
+++ b/hedgewars/uVariables.pas Tue Feb 01 00:18:25 2011 +0100
@@ -10,7 +10,7 @@
cScreenWidth : LongInt = 1024;
cScreenHeight : LongInt = 768;
cBits : LongInt = 32;
- //ipcPort is in uIO
+ ipcPort : Word = 0;
cFullScreen : boolean = false;
isSoundEnabled : boolean = true;
isMusicEnabled : boolean = false;
@@ -21,10 +21,11 @@
cShowFPS : boolean = false;
cAltDamage : boolean = true;
cReducedQuality : LongWord = rqNone;
- //userNick is in uChat
+ UserNick : shortstring = '';
recordFileName : shortstring = '';
cReadyDelay : Longword = 5000;
cLogfileBase : shortstring = 'debug';
+ cStereoMode : TStereoMode = smNone;
//////////////////////////
alsoShutdownFrontend: boolean = false;
@@ -45,7 +46,6 @@
GameType : TGameType;
InputMask : LongWord;
GameFlags : Longword;
- TrainingFlags : Longword;
TurnTimeLeft : Longword;
ReadyTimeLeft : Longword;
cSuddenDTurns : LongInt;
@@ -66,6 +66,7 @@
cHealthDecrease : LongInt;
cCloudsNumber : LongInt;
+ cSDCloudsNumber : LongInt;
cTagsMask : byte;
zoom : GLfloat;
@@ -75,13 +76,6 @@
cGearScrEdgesDist: LongInt;
GameTicks : LongWord;
- TrainingTimeInc : Longword;
- TrainingTimeInD : Longword;
- TrainingTimeInM : Longword;
- TrainingTimeMax : Longword;
-
- TimeTrialStartTime: Longword;
- TimeTrialStopTime : Longword;
// originally from uConsts
Pathz: array[TPathType] of shortstring;
@@ -131,6 +125,9 @@
AttackBar : LongInt;
WaterColorArray : array[0..3] of HwColor4f;
+ SDWaterColorArray : array[0..3] of HwColor4f;
+ SDMusic : shortstring;
+ SDTint : LongInt;
CursorPoint : TPoint;
TargetPoint : TPoint;
@@ -149,6 +146,10 @@
WorldDx: LongInt;
WorldDy: LongInt;
+ hiTicks: Word;
+
+ LuaGoals : shortstring;
+
const
cHHFileName = 'Hedgehog';
cCHFileName = 'Crosshair';
@@ -175,7 +176,8 @@
'Sounds/voices', // ptVoices
'Graphics/Hats', // ptHats
'Graphics/Flags', // ptFlags
- 'Missions/Maps' // ptMissionMaps
+ 'Missions/Maps', // ptMissionMaps
+ 'Graphics/SuddenDeath' // ptSuddenDeath
);
cTagsMasks : array[0..15] of byte = (7, 0, 0, 0, 15, 6, 4, 5, 0, 0, 0, 0, 0, 14, 12, 13);
@@ -558,7 +560,17 @@
(FileName: 'amSnowball'; Path: ptCurrTheme; AltPath: ptHedgehog; Texture: nil; Surface: nil;
Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprHandSnowball
(FileName: 'Snow'; Path: ptCurrTheme; AltPath: ptGraphics; Texture: nil; Surface: nil;
- Width: 4; Height: 4; imageWidth: 0; imageHeight: 0; saveSurf: true; priority: tpMedium; getDimensions: false; getImageDimensions: true) // sprSnow
+ Width: 4; Height: 4; imageWidth: 0; imageHeight: 0; saveSurf: true; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprSnow
+ (FileName: 'SDFlake'; Path: ptCurrTheme; AltPath: ptSuddenDeath; Texture: nil; Surface: nil;
+ Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHighest; getDimensions: false; getImageDimensions: true),// sprSDFlake
+ (FileName: 'SDWater'; Path: ptCurrTheme; AltPath: ptSuddenDeath; Texture: nil; Surface: nil;
+ Width: 0; Height: 0; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: true; getImageDimensions: true),// sprSDWater
+ (FileName: 'SDClouds'; Path: ptCurrTheme; AltPath: ptSuddenDeath; Texture: nil; Surface: nil;
+ Width: 256; Height:128; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHigh; getDimensions: false; getImageDimensions: true),// sprSDCloud
+ (FileName: 'SDSplash'; Path: ptCurrTheme; AltPath: ptSuddenDeath; Texture: nil; Surface: nil;
+ Width: 80; Height: 50; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpMedium; getDimensions: false; getImageDimensions: true),// sprSDSplash
+ (FileName: 'SDDroplet'; Path: ptCurrTheme; AltPath: ptSuddenDeath; Texture: nil; Surface: nil;
+ Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false; priority: tpHighest; getDimensions: false; getImageDimensions: true)// sprSDDroplet
);
@@ -1916,7 +1928,7 @@
ejectX: 0;
ejectY: 0),
-// Ressurrector
+// Resurrector
(NameId: sidResurrector;
NameTex: nil;
Probability: 0;
@@ -1950,10 +1962,11 @@
ammoprop_NeedTarget or
ammoprop_AttackingPut or
ammoprop_DontHold or
+ ammoprop_Timerable or
ammoprop_NotBorder;
Count: 1;
NumPerTurn: 0;
- Timer: 0;
+ Timer: 5000;
Pos: 0;
AmmoType: amDrillStrike;
AttackVoice: sndIncoming);
@@ -1967,7 +1980,8 @@
PosSprite: sprAmAirplane;
ejectX: 0;
ejectY: 0),
-// Snowball
+
+// Snowball/Mudball
(NameId: sidSnowball;
NameTex: nil;
Probability: 0;
@@ -1988,6 +2002,57 @@
PosCount: 1;
PosSprite: sprWater;
ejectX: 0;
+ ejectY: 0),
+
+// Tardis (just a copy of teleport til nemo arives)
+ (NameId: sidTardis;
+ NameTex: nil;
+ Probability: 200;
+ NumberInCase: 1;
+ Ammo: (Propz: ammoprop_ForwMsgs or
+ ammoprop_NoCrosshair or
+ ammoprop_NeedTarget or
+ ammoprop_AttackingPut or
+ ammoprop_Utility or
+ ammoprop_DontHold;
+ Count: 2;
+ NumPerTurn: 0;
+ Timer: 0;
+ Pos: 0;
+ AmmoType: amTardis;
+ AttackVoice: sndNone);
+ Slot: 7;
+ TimeAfterTurn: 0;
+ minAngle: 0;
+ maxAngle: 0;
+ isDamaging: false;
+ SkipTurns: 0;
+ PosCount: 2;
+ PosSprite: sprAmTeleport;
+ ejectX: 0;
+ ejectY: 0),
+
+// Structure
+ (NameId: sidStructure;
+ NameTex: nil;
+ Probability: 0;
+ NumberInCase: 1;
+ Ammo: (Propz: ammoprop_NoCrosshair or ammoprop_DontHold or ammoprop_Utility;
+ Count: 1;
+ NumPerTurn: 0;
+ Timer: 0;
+ Pos: 0;
+ AmmoType: amStructure;
+ AttackVoice: sndNone);
+ Slot: 6;
+ TimeAfterTurn: 0;
+ minAngle: 0;
+ maxAngle: 0;
+ isDamaging: false;
+ SkipTurns: 0;
+ PosCount: 1;
+ PosSprite: sprWater;
+ ejectX: 0;
ejectY: 0)
);
@@ -2031,14 +2096,15 @@
LandBackSurface: PSDL_Surface;
digest: shortstring;
CurAmmoGear: PGear;
+ lastGearByUID: PGear;
GearsList: PGear;
AllInactive: boolean;
PrvInactive: boolean;
KilledHHs: Longword;
+ SuddenDeath: Boolean;
SuddenDeathDmg: Boolean;
SpeechType: Longword;
SpeechText: shortstring;
- TrainingTargetGear: PGear;
skipFlag: boolean;
PlacingHogs: boolean; // a convenience flag to indicate placement of hogs is still in progress
StepSoundTimer: LongInt;
@@ -2064,12 +2130,16 @@
bShowFinger: boolean;
Frames: Longword;
WaterColor, DeepWaterColor: TSDL_Color;
+ SDSkyColor: TSDL_Color;
SkyOffset: LongInt;
HorizontOffset: LongInt;
{$IFDEF COUNTTICKS}
cntTicks: LongWord;
{$ENDIF}
cOffsetY: LongInt;
+ AFRToggle: Boolean;
+ bAFRRight: Boolean;
+
PixelFormat: PSDL_PixelFormat;
SDLPrimSurface: PSDL_Surface;
@@ -2084,12 +2154,19 @@
ProgrTex: PTexture;
MissionIcons: PSDL_Surface;
ropeIconTex: PTexture;
+ // orientation of the viewport
rotationQt: GLfloat;
+ // stereoscopic framebuffer and textures
+ framel, framer, depthl, depthr: GLuint;
+ texl, texr: GLuint;
VisualGearsList: PVisualGear;
+ lastVisualGearByUID: PVisualGear;
vobFrameTicks, vobFramesCount, vobCount: Longword;
vobVelocity, vobFallSpeed: LongInt;
+ vobSDFrameTicks, vobSDFramesCount, vobSDCount: Longword;
+ vobSDVelocity, vobSDFallSpeed: LongInt;
hideAmmoMenu: boolean;
@@ -2109,6 +2186,8 @@
DefaultBinds, CurrentBinds: TBinds;
+ coeff: LongInt;
+
{$IFDEF HWLIBRARY}
leftClick: boolean;
middleClick: boolean;
@@ -2143,6 +2222,9 @@
procedure initModule;
begin
+ lastVisualGearByUID:= nil;
+ lastGearByUID:= nil;
+
Pathz:= cPathz;
{* REFERENCE
4096 -> $FFFFF000
@@ -2150,25 +2232,39 @@
1024 -> $FFFFFC00
512 -> $FFFFFE00 *}
if (cReducedQuality and rqLowRes) <> 0 then
- begin
+ begin
LAND_WIDTH:= 2048;
LAND_HEIGHT:= 1024;
LAND_WIDTH_MASK:= $FFFFF800;
LAND_HEIGHT_MASK:= $FFFFFC00;
- end
+ end
else
- begin
+ begin
LAND_WIDTH:= 4096;
LAND_HEIGHT:= 2048;
LAND_WIDTH_MASK:= $FFFFF000;
LAND_HEIGHT_MASK:= $FFFFF800
- end;
+ end;
+
+ SDWaterColorArray[0].r := 182;
+ SDWaterColorArray[0].g := 144;
+ SDWaterColorArray[0].b := 201;
+ SDWaterColorArray[0].a := 255;
+ SDWaterColorArray[2].r := 150;
+ SDWaterColorArray[2].g := 112;
+ SDWaterColorArray[2].b := 169;
+ SDWaterColorArray[2].a := 255;
+ SDWaterColorArray[1]:= SDWaterColorArray[0];
+ SDWaterColorArray[3]:= SDWaterColorArray[2];
+
+ SDMusic:= 'main_theme.ogg';
+ SDTint:= $80;
cDrownSpeed.QWordValue := 257698038; // 0.06
cDrownSpeedf := 0.06;
cMaxWindSpeed.QWordValue:= 1073742; // 0.00025
- cWindSpeed.QWordValue := 429496; // 0.0001
- cWindSpeedf := 0.0001;
+ cWindSpeed.QWordValue := 0; // 0.0
+ cWindSpeedf := 0.0;
cGravity := cMaxWindSpeed * 2;
cGravityf := 0.00025 * 2;
cDamageModifier := _1;
@@ -2178,18 +2274,11 @@
CursorMovementX := 0;
CursorMovementY := 0;
GameTicks := 0;
- TrainingTimeInc := 10000;
- TrainingTimeInD := 500;
- TrainingTimeInM := 5000;
- TrainingTimeMax := 60000;
- TimeTrialStartTime := 0;
- TimeTrialStopTime := 0;
cWaterLine := LAND_HEIGHT;
cGearScrEdgesDist := 240;
InputMask := $FFFFFFFF;
GameFlags := 0;
- TrainingFlags := 0;
TurnTimeLeft := 0;
cSuddenDTurns := 15;
cDamagePercent := 100;
@@ -2202,6 +2291,7 @@
cMinesTime := 3000;
cMaxAIThinkTime := 9000;
cCloudsNumber := 9;
+ cSDCloudsNumber := 9;
cHealthCaseProb := 35;
cHealthCaseAmount := 25;
cWaterRise := 47;
@@ -2249,7 +2339,7 @@
SDLwindow := nil;
{$ENDIF}
- // those values still aren't perfect
+ // those values still are not perfect
cLeftScreenBorder:= round(-cMinZoomLevel * cScreenWidth);
cRightScreenBorder:= round(cMinZoomLevel * cScreenWidth + LAND_WIDTH);
cScreenSpace:= cRightScreenBorder - cLeftScreenBorder;
@@ -2258,6 +2348,14 @@
cMaxCaptions:= 3
else
cMaxCaptions:= 4;
+
+ vobSDFrameTicks:= 0;
+ vobSDFramesCount:= 0;
+ vobSDCount:= 30 * cScreenSpace div LAND_WIDTH;
+ vobSDVelocity:= 0;
+ vobSDFallSpeed:= 0;
+
+ LuaGoals:= '';
end;
procedure freeModule;
@@ -2266,20 +2364,21 @@
cScreenWidth := 1024;
cScreenHeight := 768;
cBits := 32;
- //ipcPort is in uIO
+ ipcPort := 0;
cFullScreen := false;
isSoundEnabled := true;
isMusicEnabled := false;
cLocaleFName := 'en.txt';
cInitVolume := 100;
cTimerInterval := 8;
- PathPrefix := './';
+ PathPrefix := './';
cShowFPS := false;
cAltDamage := true;
cReducedQuality := rqNone;
- //userNick is in uChat
+ UserNick := '';
recordFileName := '';
cReadyDelay := 5000;
+ cStereoMode := smNone;
end;
end.
diff -r 69f8431a5d20 -r efcea232bbf6 hedgewars/uVisualGears.pas
--- a/hedgewars/uVisualGears.pas Tue Feb 01 00:12:19 2011 +0100
+++ b/hedgewars/uVisualGears.pas Tue Feb 01 00:18:25 2011 +0100
@@ -32,6 +32,9 @@
procedure DeleteVisualGear(Gear: PVisualGear);
function VisualGearByUID(uid : Longword) : PVisualGear;
procedure AddClouds;
+procedure ChangeToSDClouds;
+procedure AddFlakes;
+procedure ChangeToSDFlakes;
procedure AddDamageTag(X, Y, Damage, Color: LongWord);
implementation
@@ -110,7 +113,7 @@
exit
end;
-if ((cReducedQuality and rqFancyBoom) <> 0) and
+if ((cReducedQuality and rqAntiBoom) <> 0) and
not Critical and
not (Kind in
[vgtTeamHealthSorter,
@@ -143,13 +146,22 @@
Timer:= 0;
tdX:= 0;
tdY:= 0;
- FrameTicks:= random(vobFrameTicks);
- Frame:= random(vobFramesCount);
+ if SuddenDeathDmg then
+ begin
+ FrameTicks:= random(vobSDFrameTicks);
+ Frame:= random(vobSDFramesCount);
+ end
+ else
+ begin
+ FrameTicks:= random(vobFrameTicks);
+ Frame:= random(vobFramesCount);
+ end;
Angle:= random * 360;
dx:= 0.0000038654705 * random(10000);
dy:= 0.000003506096 * random(7000);
if random(2) = 0 then dx := -dx;
- dAngle:= (random(2) * 2 - 1) * (1 + random) * vobVelocity / 1000
+ if SuddenDeathDmg then dAngle:= (random(2) * 2 - 1) * (1 + random) * vobSDVelocity / 1000
+ else dAngle:= (random(2) * 2 - 1) * (1 + random) * vobVelocity / 1000
end;
vgtCloud: begin
Frame:= random(4);
@@ -328,6 +340,8 @@
if Gear^.PrevGear <> nil then Gear^.PrevGear^.NextGear:= Gear^.NextGear
else VisualGearsList:= Gear^.NextGear;
+ if lastVisualGearByUID = Gear then lastVisualGearByUID:= nil;
+
Dispose(Gear);
end;
@@ -378,19 +392,30 @@
begin
Gear:= VisualGearsList;
case Layer of
+ // this level is very distant in the background when stereo
0: while Gear <> nil do
begin
if Gear^.Tint <> $FFFFFFFF then Tint(Gear^.Tint);
case Gear^.Kind of
- vgtFlake: if vobVelocity = 0 then
- DrawSprite(sprFlake, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy + SkyOffset, Gear^.Frame)
+ vgtFlake: if SuddenDeathDmg then
+ if vobSDVelocity = 0 then
+ DrawSprite(sprSDFlake, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy + SkyOffset, Gear^.Frame)
+ else
+ DrawRotatedF(sprSDFlake, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy + SkyOffset, Gear^.Frame, 1, Gear^.Angle)
else
- DrawRotatedF(sprFlake, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy + SkyOffset, Gear^.Frame, 1, Gear^.Angle);
- vgtCloud: DrawSprite(sprCloud, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy + SkyOffset, Gear^.Frame);
+ if vobVelocity = 0 then
+ DrawSprite(sprFlake, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy + SkyOffset, Gear^.Frame)
+ else
+ DrawRotatedF(sprFlake, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy + SkyOffset, Gear^.Frame, 1, Gear^.Angle);
+ vgtCloud: if SuddenDeathDmg then
+ DrawSprite(sprSDCloud, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy + SkyOffset, Gear^.Frame)
+ else
+ DrawSprite(sprCloud, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy + SkyOffset, Gear^.Frame);
end;
if Gear^.Tint <> $FFFFFFFF then Tint($FF,$FF,$FF,$FF);
Gear:= Gear^.NextGear
end;
+ // this level is on the land one when stereo
1: while Gear <> nil do
begin
tinted:= false;
@@ -399,30 +424,60 @@
vgtSmokeTrace: if Gear^.State < 8 then DrawSprite(sprSmokeTrace, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.State);
vgtEvilTrace: if Gear^.State < 8 then DrawSprite(sprEvilTrace, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.State);
vgtLineTrail: DrawLine(Gear^.X, Gear^.Y, Gear^.dX, Gear^.dY, 1.0, $FF, min(Gear^.Timer, $C0), min(Gear^.Timer, $80), min(Gear^.Timer, $FF));
- vgtSpeechBubble: if (Gear^.Tex <> nil) and (((Gear^.State = 0) and (Gear^.Hedgehog^.Team <> CurrentTeam)) or (Gear^.State = 1)) then
- begin
- tinted:= true;
- Tint($FF, $FF, $FF, $66);
- DrawCentered(round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Tex)
- end
end;
- if (cReducedQuality and rqFancyBoom) = 0 then
+ if (cReducedQuality and rqAntiBoom) = 0 then
case Gear^.Kind of
vgtSmoke: DrawSprite(sprSmoke, round(Gear^.X) + WorldDx - 11, round(Gear^.Y) + WorldDy - 11, 7 - Gear^.Frame);
vgtSmokeWhite: DrawSprite(sprSmokeWhite, round(Gear^.X) + WorldDx - 11, round(Gear^.Y) + WorldDy - 11, 7 - Gear^.Frame);
vgtDust: DrawSprite(sprDust, round(Gear^.X) + WorldDx - 11, round(Gear^.Y) + WorldDy - 11, 7 - Gear^.Frame);
- vgtFeather: begin
- if Gear^.FrameTicks < 255 then
- begin
- Tint($FF, $FF, $FF, Gear^.FrameTicks);
- tinted:= true
- end;
- DrawRotatedF(sprFeather, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Frame, 1, Gear^.Angle);
- end;
+ vgtFire: if (Gear^.State and gstTmpFlag) = 0 then
+ DrawSprite(sprFlame, round(Gear^.X) + WorldDx - 8, round(Gear^.Y) + WorldDy, (RealTicks shr 6 + Gear^.Frame) mod 8)
+ else
+ DrawTextureF(SpritesData[sprFlame].Texture, Gear^.FrameTicks / 900, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, (RealTicks shr 7 + Gear^.Frame) mod 8, 1, 16, 16);
+ vgtSplash: if SuddenDeathDmg then
+ DrawSprite(sprSDSplash, round(Gear^.X) + WorldDx - 40, round(Gear^.Y) + WorldDy - 58, 19 - (Gear^.FrameTicks div 37))
+ else
+ DrawSprite(sprSplash, round(Gear^.X) + WorldDx - 40, round(Gear^.Y) + WorldDy - 58, 19 - (Gear^.FrameTicks div 37));
+ vgtDroplet: if SuddenDeathDmg then
+ DrawSprite(sprSDDroplet, round(Gear^.X) + WorldDx - 8, round(Gear^.Y) + WorldDy - 8, Gear^.Frame)
+ else
+ DrawSprite(sprDroplet, round(Gear^.X) + WorldDx - 8, round(Gear^.Y) + WorldDy - 8, Gear^.Frame);
+ vgtChunk: DrawRotatedF(sprChunk, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Frame, 1, Gear^.Angle);
end;
if (Gear^.Tint <> $FFFFFFFF) or tinted then Tint($FF,$FF,$FF,$FF);
Gear:= Gear^.NextGear
end;
+ // this level is on the screen plane when stereo (depth = 0)
+ 3: while Gear <> nil do
+ begin
+ tinted:= false;
+ if Gear^.Tint <> $FFFFFFFF then Tint(Gear^.Tint);
+ case Gear^.Kind of
+ vgtSpeechBubble: begin
+ if (Gear^.Tex <> nil) and (((Gear^.State = 0) and (Gear^.Hedgehog^.Team <> CurrentTeam)) or (Gear^.State = 1)) then
+ begin
+ tinted:= true;
+ Tint($FF, $FF, $FF, $66);
+ DrawCentered(round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Tex)
+ end
+ else if (Gear^.Tex <> nil) and (((Gear^.State = 0) and (Gear^.Hedgehog^.Team = CurrentTeam)) or (Gear^.State = 2)) then
+ DrawCentered(round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Tex);
+ end;
+ vgtSmallDamageTag: DrawCentered(round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Tex);
+ vgtHealthTag: if Gear^.Tex <> nil then DrawCentered(round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Tex);
+ vgtHealth: begin
+ tinted:= true;
+ case Gear^.Frame div 10 of
+ 0:Tint(0, $FF, 0, round(Gear^.FrameTicks * $FF / 1000));
+ 1:Tint($FF, 0, 0, round(Gear^.FrameTicks * $FF / 1000));
+ end;
+ DrawSprite(sprHealth, round(Gear^.X) + WorldDx - 8, round(Gear^.Y) + WorldDy - 8, 0);
+ end;
+ end;
+ if (Gear^.Tint <> $FFFFFFFF) or tinted then Tint($FF,$FF,$FF,$FF);
+ Gear:= Gear^.NextGear
+ end;
+ // this level is outside the screen when stereo
2: while Gear <> nil do
begin
tinted:= false;
@@ -435,14 +490,10 @@
DrawRotatedTextureF(SpritesData[sprBigExplosion].Texture, 0.85 * (-power(2, -10 * Int(Gear^.Timer)/250) + 1) + 0.4, 0, 0, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, 0, 1, 385, 385, Gear^.Angle);
end;
end;
- if (cReducedQuality and rqFancyBoom) = 0 then
+ if (cReducedQuality and rqAntiBoom) = 0 then
case Gear^.Kind of
vgtExplPart: DrawSprite(sprExplPart, round(Gear^.X) + WorldDx - 16, round(Gear^.Y) + WorldDy - 16, 7 - Gear^.Frame);
vgtExplPart2: DrawSprite(sprExplPart2, round(Gear^.X) + WorldDx - 16, round(Gear^.Y) + WorldDy - 16, 7 - Gear^.Frame);
- vgtFire: if (Gear^.State and gstTmpFlag) = 0 then
- DrawSprite(sprFlame, round(Gear^.X) + WorldDx - 8, round(Gear^.Y) + WorldDy, (RealTicks shr 6 + Gear^.Frame) mod 8)
- else
- DrawTextureF(SpritesData[sprFlame].Texture, Gear^.FrameTicks / 900, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, (RealTicks shr 7 + Gear^.Frame) mod 8, 1, 16, 16);
vgtBubble: DrawSprite(sprBubbles, round(Gear^.X) + WorldDx - 8, round(Gear^.Y) + WorldDy - 8, Gear^.Frame);//(RealTicks div 64 + Gear^.Frame) mod 8);
vgtSteam: DrawSprite(sprSmokeWhite, round(Gear^.X) + WorldDx - 11, round(Gear^.Y) + WorldDy - 11, 7 - Gear^.Frame);
vgtAmmo: begin
@@ -451,14 +502,6 @@
DrawTextureF(ropeIconTex, Gear^.scale, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, 0, 1, 32, 32);
DrawTextureF(SpritesData[sprAMAmmos].Texture, Gear^.scale * 0.90, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Frame - 1, 1, 32, 32);
end;
- vgtHealth: begin
- tinted:= true;
- case Gear^.Frame div 10 of
- 0:Tint(0, $FF, 0, round(Gear^.FrameTicks * $FF / 1000));
- 1:Tint($FF, 0, 0, round(Gear^.FrameTicks * $FF / 1000));
- end;
- DrawSprite(sprHealth, round(Gear^.X) + WorldDx - 8, round(Gear^.Y) + WorldDy - 8, 0);
- end;
vgtShell: begin
if Gear^.FrameTicks < $FF then
begin
@@ -467,7 +510,15 @@
end;
DrawRotatedF(sprShell, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Frame, 1, Gear^.Angle);
end;
- vgtEgg: begin
+ vgtFeather: begin
+ if Gear^.FrameTicks < 255 then
+ begin
+ Tint($FF, $FF, $FF, Gear^.FrameTicks);
+ tinted:= true
+ end;
+ DrawRotatedF(sprFeather, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Frame, 1, Gear^.Angle);
+ end;
+ vgtEgg: begin
if Gear^.FrameTicks < $FF then
begin
Tint($FF, $FF, $FF, Gear^.FrameTicks);
@@ -475,8 +526,6 @@
end;
DrawRotatedF(sprEgg, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Frame, 1, Gear^.Angle);
end;
- vgtSplash: DrawSprite(sprSplash, round(Gear^.X) + WorldDx - 40, round(Gear^.Y) + WorldDy - 58, 19 - (Gear^.FrameTicks div 37));
- vgtDroplet: DrawSprite(sprDroplet, round(Gear^.X) + WorldDx - 8, round(Gear^.Y) + WorldDy - 8, Gear^.Frame);
vgtBeeTrace: begin
if Gear^.FrameTicks < $FF then
Tint($FF, $FF, $FF, Gear^.FrameTicks div 2)
@@ -490,14 +539,10 @@
Tint($FF, $FF, $FF, round(Gear^.alpha * $FF));
DrawRotatedTextureF(SpritesData[sprSmokeRing].Texture, Gear^.scale, 0, 0, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, 0, 1, 200, 200, Gear^.Angle);
end;
- vgtChunk: DrawRotatedF(sprChunk, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Frame, 1, Gear^.Angle);
vgtNote: DrawRotatedF(sprNote, round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Frame, 1, Gear^.Angle);
vgtBulletHit: DrawRotatedF(sprBulletHit, round(Gear^.X) + WorldDx - 0, round(Gear^.Y) + WorldDy - 0, 7 - (Gear^.FrameTicks div 50), 1, Gear^.Angle);
end;
case Gear^.Kind of
- vgtSmallDamageTag: DrawCentered(round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Tex);
- vgtSpeechBubble: if (Gear^.Tex <> nil) and (((Gear^.State = 0) and (Gear^.Hedgehog^.Team = CurrentTeam)) or (Gear^.State = 2)) then DrawCentered(round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Tex);
- vgtHealthTag: if Gear^.Tex <> nil then DrawCentered(round(Gear^.X) + WorldDx, round(Gear^.Y) + WorldDy, Gear^.Tex);
vgtCircle: if gear^.Angle = 1 then
begin
tmp:= Gear^.State / 100;
@@ -515,13 +560,20 @@
var vg: PVisualGear;
begin
VisualGearByUID:= nil;
+if uid = 0 then exit;
+if (lastVisualGearByUID <> nil) and (lastVisualGearByUID^.uid = uid) then
+ begin
+ VisualGearByUID:= lastVisualGearByUID;
+ exit
+ end;
vg:= VisualGearsList;
while vg <> nil do
begin
if vg^.uid = uid then
begin
- VisualGearByUID:= vg;
- exit
+ lastVisualGearByUID:= vg;
+ VisualGearByUID:= vg;
+ exit
end;
vg:= vg^.NextGear
end
@@ -534,6 +586,60 @@
AddVisualGear(cLeftScreenBorder + i * cScreenSpace div (cCloudsNumber + 1), LAND_HEIGHT-1184, vgtCloud)
end;
+procedure ChangeToSDClouds;
+var i: LongInt;
+ vg, tmp: PVisualGear;
+begin
+if cCloudsNumber = cSDCloudsNumber then exit;
+vg:= VisualGearsList;
+while vg <> nil do
+ if vg^.Kind = vgtCloud then
+ begin
+ tmp:= vg^.NextGear;
+ DeleteVisualGear(vg);
+ vg:= tmp
+ end
+ else vg:= vg^.NextGear;
+for i:= 0 to cSDCloudsNumber - 1 do
+ AddVisualGear(cLeftScreenBorder + i * cScreenSpace div (cSDCloudsNumber + 1), LAND_HEIGHT-1184, vgtCloud)
+end;
+
+procedure AddFlakes;
+var i: LongInt;
+begin
+if (cReducedQuality and rqKillFlakes) <> 0 then exit;
+
+if ((GameFlags and gfBorder) <> 0) or ((Theme <> 'Snow') and (Theme <> 'Christmas')) then
+ for i:= 0 to Pred(vobCount) do
+ AddVisualGear(cLeftScreenBorder + random(cScreenSpace), random(1024+200) - 100 + LAND_HEIGHT, vgtFlake)
+else
+ for i:= 0 to Pred(vobCount div 3) do
+ AddVisualGear(cLeftScreenBorder + random(cScreenSpace), random(1024+200) - 100 + LAND_HEIGHT, vgtFlake);
+end;
+
+procedure ChangeToSDFlakes;
+var i: LongInt;
+ vg, tmp: PVisualGear;
+begin
+if (cReducedQuality and rqKillFlakes) <> 0 then exit;
+if vobCount = vobSDCount then exit;
+vg:= VisualGearsList;
+while vg <> nil do
+ if vg^.Kind = vgtFlake then
+ begin
+ tmp:= vg^.NextGear;
+ DeleteVisualGear(vg);
+ vg:= tmp
+ end
+ else vg:= vg^.NextGear;
+if ((GameFlags and gfBorder) <> 0) or ((Theme <> 'Snow') and (Theme <> 'Christmas')) then
+ for i:= 0 to Pred(vobSDCount) do
+ AddVisualGear(cLeftScreenBorder + random(cScreenSpace), random(1024+200) - 100 + LAND_HEIGHT, vgtFlake)
+else
+ for i:= 0 to Pred(vobSDCount div 3) do
+ AddVisualGear(cLeftScreenBorder + random(cScreenSpace), random(1024+200) - 100 + LAND_HEIGHT, vgtFlake);
+end;
+
procedure initModule;
begin
VisualGearsList:= nil;
diff -r 69f8431a5d20 -r efcea232bbf6 hedgewars/uWorld.pas
--- a/hedgewars/uWorld.pas Tue Feb 01 00:12:19 2011 +0100
+++ b/hedgewars/uWorld.pas Tue Feb 01 00:18:25 2011 +0100
@@ -17,6 +17,7 @@
*)
{$INCLUDE "options.inc"}
+{$IF GLunit = GL}{$DEFINE GLunit:=GL,GLext}{$ENDIF}
unit uWorld;
interface
@@ -27,6 +28,7 @@
procedure InitWorld;
procedure DrawWorld(Lag: LongInt);
+procedure DrawWorldStereo(Lag: LongInt; RM: TRenderMode);
procedure ShowMission(caption, subcaption, text: ansistring; icon, time : LongInt);
procedure HideMission;
procedure ShakeCamera(amount: LongWord);
@@ -63,6 +65,14 @@
amSel: TAmmoType = amNothing;
missionTex: PTexture;
missionTimer: LongInt;
+ stereoDepth: GLfloat;
+
+const cStereo_Sky = 0.0500;
+ cStereo_Horizon = 0.0250;
+ cStereo_Water_distant = 0.0125;
+ cStereo_Land = 0.0075;
+ cStereo_Water_near = 0.0025;
+ cStereo_Outside = 0.0400;
procedure InitWorld;
var i, t: LongInt;
@@ -112,6 +122,9 @@
// if special game flags/settings are changed, add them to the game mode notice window and then show it
g:= ''; // no text/things to note yet
+// add custom goals from lua script if there are any
+if LuaGoals <> '' then g:= LuaGoals + '|';
+
// check different game flags (goals/game modes first for now)
g:= AddGoal(g, gfKing, gidKing); // king?
@@ -394,10 +407,20 @@
r: TSDL_Rect;
lw, lh: GLfloat;
begin
- WaterColorArray[0].a := Alpha;
- WaterColorArray[1].a := Alpha;
- WaterColorArray[2].a := Alpha;
- WaterColorArray[3].a := Alpha;
+ if SuddenDeathDmg then
+ begin
+ SDWaterColorArray[0].a := Alpha;
+ SDWaterColorArray[1].a := Alpha;
+ SDWaterColorArray[2].a := Alpha;
+ SDWaterColorArray[3].a := Alpha
+ end
+ else
+ begin
+ WaterColorArray[0].a := Alpha;
+ WaterColorArray[1].a := Alpha;
+ WaterColorArray[2].a := Alpha;
+ WaterColorArray[3].a := Alpha
+ end;
lw:= cScreenWidth / cScaleFactor;
lh:= trunc(cScreenHeight / cScaleFactor) + cScreenHeight div 2 + 16;
@@ -421,7 +444,10 @@
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
glEnableClientState(GL_COLOR_ARRAY);
- glColorPointer(4, GL_UNSIGNED_BYTE, 0, @WaterColorArray[0]);
+ if SuddenDeathDmg then
+ glColorPointer(4, GL_UNSIGNED_BYTE, 0, @SDWaterColorArray[0])
+ else
+ glColorPointer(4, GL_UNSIGNED_BYTE, 0, @WaterColorArray[0]);
glVertexPointer(2, GL_FLOAT, 0, @VertexBuffer[0]);
@@ -437,24 +463,39 @@
procedure DrawWaves(Dir, dX, dY: LongInt; tnt: Byte);
var VertexBuffer, TextureBuffer: array [0..3] of TVertex2f;
lw, waves, shift: GLfloat;
+ sprite: TSprite;
begin
+if SuddenDeathDmg then
+ sprite:= sprSDWater
+else
+ sprite:= sprWater;
+
+cWaveWidth:= SpritesData[sprite].Width;
+
lw:= cScreenWidth / cScaleFactor;
waves:= lw * 2 / cWaveWidth;
-Tint(LongInt(tnt) * WaterColorArray[2].r div 255 + 255 - tnt,
- LongInt(tnt) * WaterColorArray[2].g div 255 + 255 - tnt,
- LongInt(tnt) * WaterColorArray[2].b div 255 + 255 - tnt,
- 255
-);
+if SuddenDeathDmg then
+ Tint(LongInt(tnt) * SDWaterColorArray[2].r div 255 + 255 - tnt,
+ LongInt(tnt) * SDWaterColorArray[2].g div 255 + 255 - tnt,
+ LongInt(tnt) * SDWaterColorArray[2].b div 255 + 255 - tnt,
+ 255
+ )
+else
+ Tint(LongInt(tnt) * WaterColorArray[2].r div 255 + 255 - tnt,
+ LongInt(tnt) * WaterColorArray[2].g div 255 + 255 - tnt,
+ LongInt(tnt) * WaterColorArray[2].b div 255 + 255 - tnt,
+ 255
+ );
-glBindTexture(GL_TEXTURE_2D, SpritesData[sprWater].Texture^.id);
+glBindTexture(GL_TEXTURE_2D, SpritesData[sprite].Texture^.id);
VertexBuffer[0].X:= -lw;
VertexBuffer[0].Y:= cWaterLine + WorldDy + dY;
VertexBuffer[1].X:= lw;
VertexBuffer[1].Y:= VertexBuffer[0].Y;
VertexBuffer[2].X:= lw;
-VertexBuffer[2].Y:= VertexBuffer[0].Y + SpritesData[sprWater].Height;
+VertexBuffer[2].Y:= VertexBuffer[0].Y + SpritesData[sprite].Height;
VertexBuffer[3].X:= -lw;
VertexBuffer[3].Y:= VertexBuffer[2].Y;
@@ -464,7 +505,7 @@
TextureBuffer[1].X:= TextureBuffer[0].X + waves;
TextureBuffer[1].Y:= TextureBuffer[0].Y;
TextureBuffer[2].X:= TextureBuffer[1].X;
-TextureBuffer[2].Y:= SpritesData[sprWater].Texture^.ry;
+TextureBuffer[2].Y:= SpritesData[sprite].Texture^.ry;
TextureBuffer[3].X:= TextureBuffer[0].X;
TextureBuffer[3].Y:= TextureBuffer[2].Y;
@@ -527,13 +568,6 @@
procedure DrawWorld(Lag: LongInt);
-var i, t: LongInt;
- r: TSDL_Rect;
- tdx, tdy: Double;
- s: string[15];
- highlight: Boolean;
- offsetX, offsetY, ScreenBottom: LongInt;
- VertexBuffer: array [0..3] of TVertex2f;
begin
if not isPaused then
begin
@@ -562,6 +596,161 @@
if not isPaused then
MoveCamera;
+ if cStereoMode = smNone then
+ begin
+ glClear(GL_COLOR_BUFFER_BIT);
+ DrawWorldStereo(Lag, rmDefault)
+ end
+{$IFNDEF S3D_DISABLED}
+ else if (cStereoMode = smAFR) then
+ begin
+ AFRToggle:= not AFRToggle;
+ glClear(GL_COLOR_BUFFER_BIT);
+ if AFRToggle then
+ DrawWorldStereo(Lag, rmLeftEye)
+ else
+ DrawWorldStereo(Lag, rmRightEye)
+ end
+ else if (cStereoMode = smHorizontal) or (cStereoMode = smVertical) then
+ begin
+ // create left fb
+ glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, framel);
+ glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
+ DrawWorldStereo(Lag, rmLeftEye);
+
+ // create right fb
+ glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, framer);
+ glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
+ DrawWorldStereo(0, rmRightEye);
+
+ // detatch drawing from fbs
+ glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
+ glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
+ SetScale(cDefaultZoomLevel);
+
+ // draw left frame
+ glBindTexture(GL_TEXTURE_2D, texl);
+ glBegin(GL_QUADS);
+ if cStereoMode = smHorizontal then
+ begin
+ glTexCoord2f(0.0, 0.0);
+ glVertex2d(cScreenWidth / -2, cScreenHeight);
+ glTexCoord2f(1.0, 0.0);
+ glVertex2d(0, cScreenHeight);
+ glTexCoord2f(1.0, 1.0);
+ glVertex2d(0, 0);
+ glTexCoord2f(0.0, 1.0);
+ glVertex2d(cScreenWidth / -2, 0);
+ end
+ else
+ begin
+ glTexCoord2f(0.0, 0.0);
+ glVertex2d(cScreenWidth / -2, cScreenHeight / 2);
+ glTexCoord2f(1.0, 0.0);
+ glVertex2d(cScreenWidth / 2, cScreenHeight / 2);
+ glTexCoord2f(1.0, 1.0);
+ glVertex2d(cScreenWidth / 2, 0);
+ glTexCoord2f(0.0, 1.0);
+ glVertex2d(cScreenWidth / -2, 0);
+ end;
+ glEnd();
+
+ // draw right frame
+ glBindTexture(GL_TEXTURE_2D, texr);
+ glBegin(GL_QUADS);
+ if cStereoMode = smHorizontal then
+ begin
+ glTexCoord2f(0.0, 0.0);
+ glVertex2d(0, cScreenHeight);
+ glTexCoord2f(1.0, 0.0);
+ glVertex2d(cScreenWidth / 2, cScreenHeight);
+ glTexCoord2f(1.0, 1.0);
+ glVertex2d(cScreenWidth / 2, 0);
+ glTexCoord2f(0.0, 1.0);
+ glVertex2d(0, 0);
+ end
+ else
+ begin
+ glTexCoord2f(0.0, 0.0);
+ glVertex2d(cScreenWidth / -2, cScreenHeight);
+ glTexCoord2f(1.0, 0.0);
+ glVertex2d(cScreenWidth / 2, cScreenHeight);
+ glTexCoord2f(1.0, 1.0);
+ glVertex2d(cScreenWidth / 2, cScreenHeight / 2);
+ glTexCoord2f(0.0, 1.0);
+ glVertex2d(cScreenWidth / -2, cScreenHeight / 2);
+ end;
+ glEnd();
+ SetScale(zoom);
+ end
+ else
+ begin
+ // clear scene
+ glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
+ glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
+ // draw left eye in red channel only
+ if cStereoMode = smGreenRed then
+ glColorMask(GL_FALSE, GL_TRUE, GL_FALSE, GL_TRUE)
+ else if cStereoMode = smBlueRed then
+ glColorMask(GL_FALSE, GL_FALSE, GL_TRUE, GL_TRUE)
+ else if cStereoMode = smCyanRed then
+ glColorMask(GL_FALSE, GL_TRUE, GL_TRUE, GL_TRUE)
+ else
+ glColorMask(GL_TRUE, GL_FALSE, GL_FALSE, GL_TRUE);
+ DrawWorldStereo(Lag, rmLeftEye);
+ // draw right eye in selected channel(s) only
+ if cStereoMode = smRedGreen then
+ glColorMask(GL_FALSE, GL_TRUE, GL_FALSE, GL_TRUE)
+ else if cStereoMode = smRedBlue then
+ glColorMask(GL_FALSE, GL_FALSE, GL_TRUE, GL_TRUE)
+ else if cStereoMode = smRedCyan then
+ glColorMask(GL_FALSE, GL_TRUE, GL_TRUE, GL_TRUE)
+ else
+ glColorMask(GL_TRUE, GL_FALSE, GL_FALSE, GL_TRUE);
+ DrawWorldStereo(Lag, rmRightEye);
+ end
+{$ENDIF}
+end;
+
+procedure ChangeDepth(rm: TRenderMode; d: GLfloat);
+begin
+{$IFDEF S3D_DISABLED}
+ rm:= rm; d:= d; // avoid hint
+ exit;
+{$ELSE}
+ d:= d / 5;
+ if rm = rmDefault then exit
+ else if rm = rmLeftEye then d:= -d;
+ stereoDepth:= stereoDepth + d;
+ glMatrixMode(GL_PROJECTION);
+ glTranslatef(d, 0, 0);
+ glMatrixMode(GL_MODELVIEW);
+{$ENDIF}
+end;
+
+procedure ResetDepth(rm: TRenderMode);
+begin
+{$IFDEF S3D_DISABLED}
+ rm:= rm; // avoid hint
+ exit;
+{$ELSE}
+ if rm = rmDefault then exit;
+ glMatrixMode(GL_PROJECTION);
+ glTranslatef(-stereoDepth, 0, 0);
+ glMatrixMode(GL_MODELVIEW);
+ stereoDepth:= 0;
+{$ENDIF}
+end;
+
+procedure DrawWorldStereo(Lag: LongInt; RM: TRenderMode);
+var i, t: LongInt;
+ r: TSDL_Rect;
+ tdx, tdy: Double;
+ s: string[15];
+ highlight: Boolean;
+ offsetX, offsetY, screenBottom: LongInt;
+ VertexBuffer: array [0..3] of TVertex2f;
+begin
if (cReducedQuality and rqNoBackground) = 0 then
begin
// Offsets relative to camera - spare them to wimpier cpus, no bg or flakes for them anyway
@@ -573,8 +762,12 @@
HorizontOffset:= HorizontOffset + ((ScreenBottom-SkyOffset) div 20);
// background
+ ChangeDepth(RM, cStereo_Sky);
+ if SuddenDeathDmg then Tint(SDTint, SDTint, SDTint, $FF);
DrawRepeated(sprSky, sprSkyL, sprSkyR, (WorldDx + LAND_WIDTH div 2) * 3 div 8, SkyOffset);
+ ChangeDepth(RM, -cStereo_Horizon);
DrawRepeated(sprHorizont, sprHorizontL, sprHorizontR, (WorldDx + LAND_WIDTH div 2) * 3 div 5, HorizontOffset);
+ if SuddenDeathDmg then Tint($FF, $FF, $FF, $FF);
end;
DrawVisualGears(0);
@@ -582,15 +775,20 @@
if (cReducedQuality and rq2DWater) = 0 then
begin
// Waves
- DrawWater(255, SkyOffset);
+ DrawWater(255, SkyOffset);
+ ChangeDepth(RM, -cStereo_Water_distant);
DrawWaves( 1, 0 - WorldDx div 32, - cWaveHeight + offsetY div 35, 64);
+ ChangeDepth(RM, -cStereo_Water_distant);
DrawWaves( -1, 25 + WorldDx div 25, - cWaveHeight + offsetY div 38, 48);
+ ChangeDepth(RM, -cStereo_Water_distant);
DrawWaves( 1, 75 - WorldDx div 19, - cWaveHeight + offsetY div 45, 32);
+ ChangeDepth(RM, -cStereo_Water_distant);
DrawWaves(-1, 100 + WorldDx div 14, - cWaveHeight + offsetY div 70, 24);
end
else
DrawWaves(-1, 100, - (cWaveHeight + (cWaveHeight shr 1)), 0);
+ changeDepth(RM, cStereo_Land);
DrawLand(WorldDx, WorldDy);
DrawWater(255, 0);
@@ -618,28 +816,47 @@
end;
DrawVisualGears(1);
-
DrawGears;
- DrawVisualGears(2);
-
- DrawWater(cWaterOpacity, 0);
+ if SuddenDeathDmg then
+ DrawWater(cSDWaterOpacity, 0)
+ else
+ DrawWater(cWaterOpacity, 0);
// Waves
+ ChangeDepth(RM, cStereo_Water_near);
DrawWaves( 1, 25 - WorldDx div 9, - cWaveHeight, 12);
if (cReducedQuality and rq2DWater) = 0 then
begin
//DrawWater(cWaterOpacity, - offsetY div 40);
+ ChangeDepth(RM, cStereo_Water_near);
DrawWaves(-1, 50 + WorldDx div 6, - cWaveHeight - offsetY div 40, 8);
- DrawWater(cWaterOpacity, - offsetY div 20);
+ if SuddenDeathDmg then
+ DrawWater(cSDWaterOpacity, - offsetY div 20)
+ else
+ DrawWater(cWaterOpacity, - offsetY div 20);
+ ChangeDepth(RM, cStereo_Water_near);
DrawWaves( 1, 75 - WorldDx div 4, - cWaveHeight - offsetY div 20, 2);
- DrawWater(cWaterOpacity, - offsetY div 10);
+ if SuddenDeathDmg then
+ DrawWater(cSDWaterOpacity, - offsetY div 10)
+ else
+ DrawWater(cWaterOpacity, - offsetY div 10);
+ ChangeDepth(RM, cStereo_Water_near);
DrawWaves( -1, 25 + WorldDx div 3, - cWaveHeight - offsetY div 10, 0);
end
else
DrawWaves(-1, 50, - (cWaveHeight shr 1), 0);
+// everything after this ChangeDepth will be drawn outside the screen
+// note: negative parallax gears should last very little for a smooth stereo effect
+ ChangeDepth(RM, cStereo_Outside);
+ DrawVisualGears(2);
+
+// everything after this ResetDepth will be drawn at screen level (depth = 0)
+// note: everything that needs to be readable should be on this level
+ ResetDepth(RM);
+ DrawVisualGears(3);
{$WARNINGS OFF}
// Target
@@ -658,7 +875,6 @@
// this scale is used to keep the various widgets at the same dimension at all zoom levels
SetScale(cDefaultZoomLevel);
-
// Turn time
{$IFDEF IPHONEOS}
offsetX:= cScreenHeight - 13;
@@ -686,52 +902,6 @@
DrawSprite(sprFrame, -(cScreenWidth shr 1) + t - 4 + offsetY, cScreenHeight - offsetX, 0);
end;
-{$IFNDEF IPHONEOS}
-// Timetrial
-if ((TrainingFlags and tfTimeTrial) <> 0) and (TimeTrialStartTime > 0) then
- begin
- if TimeTrialStopTime = 0 then i:= RealTicks - TimeTrialStartTime else i:= TimeTrialStopTime - TimeTrialStartTime;
- t:= 272;
- // right frame
- DrawSprite(sprFrame, -cScreenWidth div 2 + t, 8, 1);
- dec(t, 32);
- // 1 ms
- DrawSprite(sprBigDigit, -cScreenWidth div 2 + t, 8, i mod 10);
- dec(t, 32);
- i:= i div 10;
- // 10 ms
- DrawSprite(sprBigDigit, -cScreenWidth div 2 + t, 8, i mod 10);
- dec(t, 32);
- i:= i div 10;
- // 100 ms
- DrawSprite(sprBigDigit, -cScreenWidth div 2 + t, 8, i mod 10);
- dec(t, 16);
- // Point
- DrawSprite(sprBigDigit, -cScreenWidth div 2 + t, 8, 11);
- dec(t, 32);
- i:= i div 10;
- // 1 s
- DrawSprite(sprBigDigit, -cScreenWidth div 2 + t, 8, i mod 10);
- dec(t, 32);
- i:= i div 10;
- // 10s
- DrawSprite(sprBigDigit, -cScreenWidth div 2 + t, 8, i mod 6);
- dec(t, 16);
- // Point
- DrawSprite(sprBigDigit, -cScreenWidth div 2 + t, 8, 10);
- dec(t, 32);
- i:= i div 6;
- // 1 m
- DrawSprite(sprBigDigit, -cScreenWidth div 2 + t, 8, i mod 10);
- dec(t, 32);
- i:= i div 10;
- // 10 m
- DrawSprite(sprBigDigit, -cScreenWidth div 2 + t, 8, i mod 10);
- // left frame
- DrawSprite(sprFrame, -cScreenWidth div 2 + t - 4, 8, 0);
- end;
-{$ENDIF}
-
// Captions
DrawCaptions;
@@ -742,7 +912,7 @@
highlight:= bShowFinger and (CurrentTeam = TeamsArray[t]) and ((RealTicks mod 1000) < 500);
if highlight then
- Tint(Clan^.Color);
+ Tint(Clan^.Color shl 8 or $FF);
// draw name
DrawTexture(-NameTagTex^.w - 16, cScreenHeight + DrawHealthY, NameTagTex);
@@ -757,7 +927,7 @@
r.h:= HealthTex^.h;
DrawFromRect(14, cScreenHeight + DrawHealthY, @r, HealthTex);
- // draw health bar's right border
+ // draw health bars right border
inc(r.x, cTeamHealthWidth + 2);
r.w:= 3;
DrawFromRect(TeamHealthBarWidth + 16, cScreenHeight + DrawHealthY, @r, HealthTex);
@@ -832,8 +1002,10 @@
if isCursorVisible and bShowAmmoMenu then
DrawSprite(sprArrow, CursorPoint.X, cScreenHeight - CursorPoint.Y, (RealTicks shr 6) mod 8);
+// Chat
DrawChat;
+// confirmation caption
if fastUntilLag then DrawCentered(0, (cScreenHeight shr 1), SyncTexture);
if isPaused then DrawCentered(0, (cScreenHeight shr 1), PauseTexture);
if not isFirstFrame and (missionTimer <> 0) or isPaused or fastUntilLag or (GameState = gsConfirm) then
@@ -851,58 +1023,63 @@
offsetX:= 10;
{$ENDIF}
offsetY:= cOffsetY;
-inc(Frames);
+if (RM = rmDefault) or (RM = rmRightEye) then
+begin
+ inc(Frames);
-if cShowFPS or (GameType = gmtDemo) then inc(CountTicks, Lag);
-if (GameType = gmtDemo) and (CountTicks >= 1000) then
- begin
- i:=GameTicks div 1000;
- t:= i mod 60;
- s:= inttostr(t);
- if t < 10 then s:= '0' + s;
- i:= i div 60;
- t:= i mod 60;
- s:= inttostr(t) + ':' + s;
- if t < 10 then s:= '0' + s;
- s:= inttostr(i div 60) + ':' + s;
-
- if timeTexture <> nil then
- FreeTexture(timeTexture);
- timeTexture:= nil;
-
- tmpSurface:= TTF_RenderUTF8_Blended(Fontz[fnt16].Handle, Str2PChar(s), cWhiteColorChannels);
- tmpSurface:= doSurfaceConversion(tmpSurface);
- timeTexture:= Surface2Tex(tmpSurface, false);
- SDL_FreeSurface(tmpSurface)
- end;
+ if cShowFPS or (GameType = gmtDemo) then
+ inc(CountTicks, Lag);
+ if (GameType = gmtDemo) and (CountTicks >= 1000) then
+ begin
+ i:=GameTicks div 1000;
+ t:= i mod 60;
+ s:= inttostr(t);
+ if t < 10 then s:= '0' + s;
+ i:= i div 60;
+ t:= i mod 60;
+ s:= inttostr(t) + ':' + s;
+ if t < 10 then s:= '0' + s;
+ s:= inttostr(i div 60) + ':' + s;
+
+ if timeTexture <> nil then
+ FreeTexture(timeTexture);
+ timeTexture:= nil;
+
+ tmpSurface:= TTF_RenderUTF8_Blended(Fontz[fnt16].Handle, Str2PChar(s), cWhiteColorChannels);
+ tmpSurface:= doSurfaceConversion(tmpSurface);
+ timeTexture:= Surface2Tex(tmpSurface, false);
+ SDL_FreeSurface(tmpSurface)
+ end;
-if timeTexture <> nil then
- DrawTexture((cScreenWidth shr 1) - 20 - timeTexture^.w - offsetY, offsetX + timeTexture^.h+5, timeTexture);
+ if timeTexture <> nil then
+ DrawTexture((cScreenWidth shr 1) - 20 - timeTexture^.w - offsetY, offsetX + timeTexture^.h+5, timeTexture);
-if cShowFPS then
- begin
- if CountTicks >= 1000 then
- begin
- FPS:= Frames;
- Frames:= 0;
- CountTicks:= 0;
- s:= inttostr(FPS) + ' fps';
- if fpsTexture <> nil then
- FreeTexture(fpsTexture);
- fpsTexture:= nil;
- tmpSurface:= TTF_RenderUTF8_Blended(Fontz[fnt16].Handle, Str2PChar(s), cWhiteColorChannels);
- tmpSurface:= doSurfaceConversion(tmpSurface);
- fpsTexture:= Surface2Tex(tmpSurface, false);
- SDL_FreeSurface(tmpSurface)
- end;
- if fpsTexture <> nil then
- DrawTexture((cScreenWidth shr 1) - 60 - offsetY, offsetX, fpsTexture);
- end;
+ if cShowFPS then
+ begin
+ if CountTicks >= 1000 then
+ begin
+ FPS:= Frames;
+ Frames:= 0;
+ CountTicks:= 0;
+ s:= inttostr(FPS) + ' fps';
+ if fpsTexture <> nil then
+ FreeTexture(fpsTexture);
+ fpsTexture:= nil;
+ tmpSurface:= TTF_RenderUTF8_Blended(Fontz[fnt16].Handle, Str2PChar(s), cWhiteColorChannels);
+ tmpSurface:= doSurfaceConversion(tmpSurface);
+ fpsTexture:= Surface2Tex(tmpSurface, false);
+ SDL_FreeSurface(tmpSurface)
+ end;
+ if fpsTexture <> nil then
+ DrawTexture((cScreenWidth shr 1) - 60 - offsetY, offsetX, fpsTexture);
+ end;
-if CountTicks >= 1000 then CountTicks:= 0;
+ if CountTicks >= 1000 then CountTicks:= 0;
-// lag warning (?)
-inc(SoundTimerTicks, Lag);
+ // lag warning (?)
+ inc(SoundTimerTicks, Lag);
+end;
+
if SoundTimerTicks >= 50 then
begin
SoundTimerTicks:= 0;
@@ -1141,10 +1318,12 @@
missionTimer:= 0;
missionTex:= nil;
cOffsetY:= 0;
+ stereoDepth:= 0;
end;
procedure freeModule;
begin
+ stereoDepth:= stereoDepth; // avoid hint
end;
end.
diff -r 69f8431a5d20 -r efcea232bbf6 misc/hedgewars.desktop
--- a/misc/hedgewars.desktop Tue Feb 01 00:12:19 2011 +0100
+++ b/misc/hedgewars.desktop Tue Feb 01 00:18:25 2011 +0100
@@ -5,13 +5,15 @@
Name=Hedgewars
GenericName=Fighting Hedgehogs
GenericName[de]=Kämpfende Igel
+GenericName[es]=Batallas entre erizos
+GenericName[fr]=Bataille de hérissons
+GenericName[ko]=고슴도치 싸우기
+GenericName[it]=Ricci combattenti
+GenericName[pl]=Walczące jeże
+GenericName[pt]=Batalhas entre ouriços
GenericName[ru]=Битвы ежей
-GenericName[pl]=Walczące jeże
GenericName[sk]=Bojujúci ježkovia
GenericName[sv]=Stridande igelkottar
-GenericName[es]=Batallas entre erizos
-GenericName[it]=Ricci combattenti
-GenericName[pt]=Batalhas entre ouriços
Icon=hedgewars.png
Exec=hedgewars
Terminal=false
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Classes/AmmoMenuViewController.m
--- a/project_files/HedgewarsMobile/Classes/AmmoMenuViewController.m Tue Feb 01 00:12:19 2011 +0100
+++ b/project_files/HedgewarsMobile/Classes/AmmoMenuViewController.m Tue Feb 01 00:18:25 2011 +0100
@@ -79,6 +79,8 @@
self.view.center = CGPointMake(placingPoint.x, placingPoint.y);
}
self.isVisible = YES;
+ if (IS_IPAD() == NO)
+ HW_pause();
}
-(void) disappear {
@@ -87,6 +89,8 @@
self.isVisible = NO;
placingPoint.x = self.view.center.y;
placingPoint.y = self.view.center.x;
+ if (IS_IPAD() == NO)
+ HW_pauseToggle();
}
#pragma mark -
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Classes/GameConfigViewController.m
--- a/project_files/HedgewarsMobile/Classes/GameConfigViewController.m Tue Feb 01 00:12:19 2011 +0100
+++ b/project_files/HedgewarsMobile/Classes/GameConfigViewController.m Tue Feb 01 00:18:25 2011 +0100
@@ -25,6 +25,7 @@
#import "TeamConfigViewController.h"
#import "SchemeWeaponConfigViewController.h"
#import "HelpPageViewController.h"
+#import "StatsPageViewController.h"
#import "CommodityFunctions.h"
#import "UIImageExtra.h"
#import "PascalImports.h"
@@ -42,7 +43,6 @@
switch (theButton.tag) {
case 0:
- playSound(@"backSound");
if ([self.mapConfigViewController busy]) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Wait for the Preview",@"")
message:NSLocalizedString(@"Before returning the preview needs to be generated",@"")
@@ -51,8 +51,10 @@
otherButtonTitles:nil];
[alert show];
[alert release];
- } else
+ } else {
+ playSound(@"backSound");
[[self parentViewController] dismissModalViewControllerAnimated:YES];
+ }
break;
case 1:
playSound(@"clickSound");
@@ -226,19 +228,31 @@
[NSNumber numberWithInt:self.interfaceOrientation],@"orientation",
nil];
- NSDictionary *allDataNecessary = [NSDictionary dictionaryWithObjectsAndKeys:gameDictionary,@"game_dictionary", @"",@"savefile",
- [NSNumber numberWithBool:NO],@"netgame", nil];
- if (IS_IPAD())
- [[SDLUIKitDelegate sharedAppDelegate] startSDLgame:allDataNecessary];
- else {
- // this causes a sporadic crash on the ipad but without this rotation doesn't work on iphone
- UIViewController *dummy = [[UIViewController alloc] init];
- [self presentModalViewController:dummy animated:NO];
- [[SDLUIKitDelegate sharedAppDelegate] startSDLgame:allDataNecessary];
- [self dismissModalViewControllerAnimated:NO];
- [dummy release];
+ NSDictionary *allDataNecessary = [NSDictionary dictionaryWithObjectsAndKeys:
+ gameDictionary,@"game_dictionary",
+ [NSNumber numberWithBool:NO],@"netgame",
+ @"",@"savefile",
+ nil];
+
+ // also modify SavedGamesViewController.m
+ StatsPageViewController *statsPage = [[StatsPageViewController alloc] initWithStyle:UITableViewStyleGrouped];
+ statsPage.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
+ if ([statsPage respondsToSelector:@selector(setModalPresentationStyle:)])
+ statsPage.modalPresentationStyle = UIModalPresentationPageSheet;
+ // avoid showing the stat page immediately, but wait for 3 seconds
+ [self performSelector:@selector(presentModalViewController:animated:) withObject:statsPage afterDelay:3];
+
+ NSArray *stats = [[SDLUIKitDelegate sharedAppDelegate] startSDLgame:allDataNecessary];
+ if ([stats count] <= 1) {
+ DLog(@"%@",stats);
+ [statsPage dismissModalViewControllerAnimated:NO];
+ } else {
+ statsPage.statsArray = stats;
+ [statsPage.tableView reloadData];
+ [statsPage viewWillAppear:YES];
}
+ [statsPage release];
}
-(void) loadNiceHogs {
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Classes/GameSetup.h
--- a/project_files/HedgewarsMobile/Classes/GameSetup.h Tue Feb 01 00:12:19 2011 +0100
+++ b/project_files/HedgewarsMobile/Classes/GameSetup.h Tue Feb 01 00:18:25 2011 +0100
@@ -25,11 +25,12 @@
@interface GameSetup : NSObject {
NSDictionary *systemSettings;
NSDictionary *gameConfig;
+ NSMutableArray *statsArray;
NSInteger ipcPort; // Port on which engine will listen
TCPsocket csd; // Client socket descriptor
TCPsocket esd; // External socket descriptor
-
+
NSString *savePath;
BOOL isNetGame;
BOOL menuStyle;
@@ -37,6 +38,7 @@
@property (nonatomic, retain) NSDictionary *systemSettings;
@property (nonatomic, retain) NSDictionary *gameConfig;
+@property (nonatomic, retain) NSMutableArray *statsArray;
@property (nonatomic, retain) NSString *savePath;
@property (assign) BOOL menuStyle;
@@ -48,6 +50,6 @@
-(void) provideAmmoData:(NSString *)ammostoreName forPlayingTeams:(NSInteger) numberOfTeams;
-(NSInteger) provideScheme:(NSString *)schemeName;
--(const char **)getSettings:(NSString *)recordFile;
+-(const char **)getGameSettings:(NSString *)recordFile;
@end
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Classes/GameSetup.m
--- a/project_files/HedgewarsMobile/Classes/GameSetup.m Tue Feb 01 00:12:19 2011 +0100
+++ b/project_files/HedgewarsMobile/Classes/GameSetup.m Tue Feb 01 00:18:25 2011 +0100
@@ -28,7 +28,7 @@
#define BUFFER_SIZE 255 // like in original frontend
@implementation GameSetup
-@synthesize systemSettings, gameConfig, savePath, menuStyle;
+@synthesize systemSettings, gameConfig, statsArray, savePath, menuStyle;
-(id) initWithDictionary:(NSDictionary *)gameDictionary {
if (self = [super init]) {
@@ -57,11 +57,14 @@
[outputFormatter release];
} else
self.savePath = path;
+
+ self.statsArray = nil;
}
return self;
}
-(void) dealloc {
+ [statsArray release];
[gameConfig release];
[systemSettings release];
[savePath release];
@@ -204,12 +207,12 @@
#pragma mark -
#pragma mark Network relevant code
--(void) dumpRawData:(const uint8_t*)buffer ofSize:(uint8_t) length {
+-(void) dumpRawData:(const char *)buffer ofSize:(uint8_t) length {
// is it performant to reopen the stream every time?
NSOutputStream *os = [[NSOutputStream alloc] initToFileAtPath:self.savePath append:YES];
[os open];
[os write:&length maxLength:1];
- [os write:buffer maxLength:length];
+ [os write:(const uint8_t *)buffer maxLength:length];
[os close];
[os release];
}
@@ -218,7 +221,7 @@
-(int) sendToEngine:(NSString *)string {
uint8_t length = [string length];
- [self dumpRawData:(const uint8_t *)[string UTF8String] ofSize:length];
+ [self dumpRawData:[string UTF8String] ofSize:length];
SDLNet_TCP_Send(csd, &length, 1);
return SDLNet_TCP_Send(csd, [string UTF8String], length);
}
@@ -238,7 +241,7 @@
IPaddress ip;
int eProto;
BOOL clientQuit;
- uint8_t buffer[BUFFER_SIZE];
+ char const buffer[BUFFER_SIZE];
uint8_t msgSize;
clientQuit = NO;
@@ -268,10 +271,10 @@
while (!clientQuit) {
msgSize = 0;
- memset(buffer, '\0', BUFFER_SIZE);
+ memset((void *)buffer, '\0', BUFFER_SIZE);
if (SDLNet_TCP_Recv(csd, &msgSize, sizeof(uint8_t)) <= 0)
break;
- if (SDLNet_TCP_Recv(csd, buffer, msgSize) <=0)
+ if (SDLNet_TCP_Recv(csd, (void *)buffer, msgSize) <= 0)
break;
switch (buffer[0]) {
@@ -283,7 +286,7 @@
else
[self sendToEngineNoSave:@"TL"];
NSString *saveHeader = @"TS";
- [self dumpRawData:(const uint8_t *)[saveHeader UTF8String] ofSize:[saveHeader length]];
+ [self dumpRawData:[saveHeader UTF8String] ofSize:[saveHeader length]];
// seed info
[self sendToEngine:[self.gameConfig objectForKey:@"seed_command"]];
@@ -345,36 +348,45 @@
}
break;
case 'i':
+ if (self.statsArray == nil) {
+ self.statsArray = [[NSMutableArray alloc] initWithCapacity:10 - 2];
+ NSMutableArray *ranking = [[NSMutableArray alloc] initWithCapacity:4];
+ [self.statsArray insertObject:ranking atIndex:0];
+ [ranking release];
+ }
+ NSString *tempStr = [NSString stringWithUTF8String:&buffer[2]];
+ NSArray *info = [tempStr componentsSeparatedByString:@" "];
+ NSString *arg = [info objectAtIndex:0];
+ int index = [arg length] + 3;
switch (buffer[1]) {
- case 'r':
- DLog(@"Winning team: %s", &buffer[2]);
+ case 'r': // winning team
+ [self.statsArray insertObject:[NSString stringWithUTF8String:&buffer[2]] atIndex:1];
break;
- case 'D':
- DLog(@"Best Shot: %s", &buffer[2]);
+ case 'D': // best shot
+ [self.statsArray addObject:[NSString stringWithFormat:@"The best shot award won by %s (with %@ points)", &buffer[index], arg]];
break;
- case 'k':
- DLog(@"Best Hedgehog: %s", &buffer[2]);
- break;
- case 'K':
- DLog(@"Hogs Killed: %s", &buffer[2]);
+ case 'k': // best hedgehog
+ [self.statsArray addObject:[NSString stringWithFormat:@"The best killer is %s with %@ kills in a turn", &buffer[index], arg]];
break;
- case 'H':
- //something about team health
+ case 'K': // number of hogs killed
+ [self.statsArray addObject:[NSString stringWithFormat:@"%@ hedgehog(s) were killed during this round", arg]];
break;
- case 'T':
- // local team stats
+ case 'H': // team health/graph
break;
- case 'P':
- // player postion
+ case 'T': // local team stats
+ // still WIP in statsPage.cpp
break;
- case 's':
- DLog(@"Most self damage: %s", &buffer[2]);
+ case 'P': // teams ranking
+ [[self.statsArray objectAtIndex:0] addObject:tempStr];
+ break;
+ case 's': // self damage
+ [self.statsArray addObject:[NSString stringWithFormat:@"%s thought it's good to shoot his own hedgehogs with %@ points", &buffer[index], arg]];
break;
- case 'S':
- DLog(@"Most friendly fire: %s", &buffer[2]);
+ case 'S': // friendly fire
+ [self.statsArray addObject:[NSString stringWithFormat:@"%s killed %@ of his own hedgehogs", &buffer[index], arg]];
break;
- case 'B':
- DLog(@"Most turn skipped by: %s", &buffer[2]);
+ case 'B': // turn skipped
+ [self.statsArray addObject:[NSString stringWithFormat:@"%s was scared and skipped turn %@ times", &buffer[index], arg]];
break;
default:
DLog(@"Unhandled stat message, see statsPage.cpp");
@@ -384,9 +396,9 @@
case 'q':
// game ended, can remove the savefile
[[NSFileManager defaultManager] removeItemAtPath:self.savePath error:nil];
- //[[NSNotificationCenter defaultCenter] postNotificationName:@"removedSave" object:nil];
- // and remove + disable the overlay
- [[NSNotificationCenter defaultCenter] postNotificationName:@"remove overlay" object:nil];
+ break;
+ case 'Q':
+ // game exited but not completed, nothing to do (just don't save the message)
break;
default:
[self dumpRawData:buffer ofSize:msgSize];
@@ -394,21 +406,21 @@
}
}
DLog(@"Engine exited, ending thread");
- // wait a little to let the client close cleanly
- [NSThread sleepForTimeInterval:2];
+
// Close the client socket
SDLNet_TCP_Close(csd);
SDLNet_Quit();
[pool release];
- //Invoking this method should be avoided as it does not give your thread a chance to clean up any resources it allocated during its execution.
+ // Invoking this method should be avoided as it does not give your thread a chance
+ // to clean up any resources it allocated during its execution.
//[NSThread exit];
}
#pragma mark -
#pragma mark Setting methods
// returns an array of c-strings that are read by engine at startup
--(const char **)getSettings: (NSString *)recordFile {
+-(const char **)getGameSettings:(NSString *)recordFile {
NSInteger width, height;
NSString *ipcString = [[NSString alloc] initWithFormat:@"%d", ipcPort];
NSString *localeString = [[NSString alloc] initWithFormat:@"%@.txt", [[NSLocale currentLocale] objectForKey:NSLocaleLanguageCode]];
@@ -431,11 +443,11 @@
NSString *horizontalSize = [[NSString alloc] initWithFormat:@"%d", width];
NSString *verticalSize = [[NSString alloc] initWithFormat:@"%d", height];
- const char **gameArgs = (const char**) malloc(sizeof(char *) * 10);
- NSInteger tmpQuality;
+ const char **gameArgs = (const char **)malloc(sizeof(char *) * 10);
BOOL enhanced = [[self.systemSettings objectForKey:@"enhanced"] boolValue];
NSString *modelId = modelType();
+ NSInteger tmpQuality;
if ([modelId hasPrefix:@"iPhone1"] || [modelId hasPrefix:@"iPod1,1"] || [modelId hasPrefix:@"iPod2,1"]) // = iPhone and iPhone 3G or iPod Touch or iPod Touch 2G
tmpQuality = 0x00000001 | 0x00000002 | 0x00000008 | 0x00000040; // rqLowRes | rqBlurryLand | rqSimpleRope | rqKillFlakes
else if ([modelId hasPrefix:@"iPhone2"] || [modelId hasPrefix:@"iPod3"]) // = iPhone 3GS or iPod Touch 3G
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Classes/HelpPageViewController.m
--- a/project_files/HedgewarsMobile/Classes/HelpPageViewController.m Tue Feb 01 00:12:19 2011 +0100
+++ b/project_files/HedgewarsMobile/Classes/HelpPageViewController.m Tue Feb 01 00:18:25 2011 +0100
@@ -36,10 +36,10 @@
// on iPhone the XIBs contain UIScrollView
-(void) viewDidLoad {
- if (scrollView.tag == 0)
+ if (scrollView.tag == 0) // ipad
scrollView.contentSize = CGSizeMake(480,650);
- else
- scrollView.contentSize = CGSizeMake(480,460);
+ else // iphone
+ scrollView.contentSize = CGSizeMake(480,470);
scrollView.maximumZoomScale = 4.0;
scrollView.minimumZoomScale = 0.75;
scrollView.clipsToBounds = YES;
@@ -57,7 +57,6 @@
[super dealloc];
}
-// on iPad the XIBs contain UIControl
-(IBAction) dismiss {
[UIView beginAnimations:@"helpingame" context:NULL];
self.view.alpha = 0;
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Classes/InGameMenuViewController.m
--- a/project_files/HedgewarsMobile/Classes/InGameMenuViewController.m Tue Feb 01 00:12:19 2011 +0100
+++ b/project_files/HedgewarsMobile/Classes/InGameMenuViewController.m Tue Feb 01 00:18:25 2011 +0100
@@ -194,7 +194,7 @@
}
if ([actionSheet cancelButtonIndex] != buttonIndex)
- [[NSNotificationCenter defaultCenter] postNotificationName:@"remove overlay" object:nil];
+ HW_terminate(NO);
}
@end
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Classes/MainMenuViewController.m
--- a/project_files/HedgewarsMobile/Classes/MainMenuViewController.m Tue Feb 01 00:12:19 2011 +0100
+++ b/project_files/HedgewarsMobile/Classes/MainMenuViewController.m Tue Feb 01 00:18:25 2011 +0100
@@ -99,8 +99,6 @@
createWeaponNamed(@"Minefield", 5);
createWeaponNamed(@"Thinking with Portals", 6);
// merge not needed because weapons not present in the set are 0ed by GameSetup
-
- DLog(@"Success");
}
#pragma mark -
@@ -125,7 +123,8 @@
[userDefaults synchronize];
[self createNecessaryFiles];
}
-
+
+ /*
ServerSetup *setup = [[ServerSetup alloc] init];
if ([setup isNetworkReachable]) {
DLog(@"network is reachable");
@@ -134,6 +133,7 @@
withObject:nil];
}
[setup release];
+ */
}
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Classes/ObjcExports.m
--- a/project_files/HedgewarsMobile/Classes/ObjcExports.m Tue Feb 01 00:12:19 2011 +0100
+++ b/project_files/HedgewarsMobile/Classes/ObjcExports.m Tue Feb 01 00:18:25 2011 +0100
@@ -152,7 +152,6 @@
}
void updateVisualsNewTurn(void) {
- DLog(@"updating visuals");
[amvc_instance updateAmmoVisuals];
}
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Classes/OverlayViewController.h
--- a/project_files/HedgewarsMobile/Classes/OverlayViewController.h Tue Feb 01 00:12:19 2011 +0100
+++ b/project_files/HedgewarsMobile/Classes/OverlayViewController.h Tue Feb 01 00:18:25 2011 +0100
@@ -82,6 +82,5 @@
-(void) dismissPopover;
-(void) dimOverlay;
-(void) activateOverlay;
--(void) cleanup;
@end
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Classes/OverlayViewController.m
--- a/project_files/HedgewarsMobile/Classes/OverlayViewController.m Tue Feb 01 00:12:19 2011 +0100
+++ b/project_files/HedgewarsMobile/Classes/OverlayViewController.m Tue Feb 01 00:18:25 2011 +0100
@@ -35,7 +35,8 @@
#define doDim() [dimTimer setFireDate: (IS_DUALHEAD()) ? HIDING_TIME_NEVER : HIDING_TIME_DEFAULT]
#define doNotDim() [dimTimer setFireDate:HIDING_TIME_NEVER]
-#define removeConfirmationInput() [[self.view viewWithTag:CONFIRMATION_TAG] removeFromSuperview];
+#define removeInputWidget() [[self.view viewWithTag:CONFIRMATION_TAG] removeFromSuperview]; \
+ [[self.view viewWithTag:GRENADE_TAG] removeFromSuperview];
@implementation OverlayViewController
@synthesize popoverController, popupMenu, helpPage, amvc, isNetGame, useClassicMenu, initialOrientation, containerWindow;
@@ -185,11 +186,6 @@
name:@"show help ingame"
object:nil];
- [[NSNotificationCenter defaultCenter] addObserver:self
- selector:@selector(cleanup)
- name:@"remove overlay"
- object:nil];
-
// for iOS >= 3.2
if ([UIScreen respondsToSelector:@selector(screens)]) {
[[NSNotificationCenter defaultCenter] addObserver:self
@@ -234,7 +230,7 @@
otherButtonTitles:nil];
[alert show];
[alert release];
- [self cleanup];
+ HW_terminate(NO);
}
}
@@ -256,13 +252,6 @@
doNotDim();
}
--(void) cleanup {
- [self dismissPopover];
- setGameRunning(NO);
- HW_terminate(NO);
- [self.view removeFromSuperview];
-}
-
-(void) didReceiveMemoryWarning {
if (self.popupMenu.view.superview == nil)
self.popupMenu = nil;
@@ -401,13 +390,13 @@
doDim();
[self.amvc disappear];
}
- removeConfirmationInput();
+ removeInputWidget();
[self showPopover];
break;
case 11:
playSound(@"clickSound");
clearView();
- removeConfirmationInput();
+ removeInputWidget();
if (IS_DUALHEAD() || self.useClassicMenu == NO) {
if (self.amvc == nil)
@@ -439,7 +428,7 @@
-(void) sendHWClick {
HW_click();
- removeConfirmationInput();
+ removeInputWidget();
doDim();
}
@@ -456,7 +445,7 @@
// present a further check before closing game
-(void) actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger) buttonIndex {
if ([actionSheet cancelButtonIndex] != buttonIndex)
- [self cleanup];
+ HW_terminate(NO);
else
HW_pause();
}
@@ -541,11 +530,13 @@
// reset default dimming
doDim();
+ // remove other widgets
+ removeInputWidget();
+
HW_setPianoSound([allTouches count]);
switch ([allTouches count]) {
case 1:
- removeConfirmationInput();
startingPoint = [[[allTouches allObjects] objectAtIndex:0] locationInView:self.view];
if (2 == [[[allTouches allObjects] objectAtIndex:0] tapCount])
HW_zoomReset();
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Classes/SDL_uikitappdelegate.h
--- a/project_files/HedgewarsMobile/Classes/SDL_uikitappdelegate.h Tue Feb 01 00:12:19 2011 +0100
+++ b/project_files/HedgewarsMobile/Classes/SDL_uikitappdelegate.h Tue Feb 01 00:18:25 2011 +0100
@@ -40,7 +40,7 @@
@property (nonatomic,retain) UIWindow *secondWindow;
+(SDLUIKitDelegate *)sharedAppDelegate;
--(void) startSDLgame:(NSDictionary *)gameDictionary;
+-(NSArray *)startSDLgame:(NSDictionary *)gameDictionary;
-(void) displayOverlayLater:(id) object;
@end
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Classes/SDL_uikitappdelegate.m
--- a/project_files/HedgewarsMobile/Classes/SDL_uikitappdelegate.m Tue Feb 01 00:12:19 2011 +0100
+++ b/project_files/HedgewarsMobile/Classes/SDL_uikitappdelegate.m Tue Feb 01 00:18:25 2011 +0100
@@ -85,7 +85,7 @@
}
// main routine for calling the actual game engine
--(void) startSDLgame:(NSDictionary *)gameDictionary {
+-(NSArray *)startSDLgame:(NSDictionary *)gameDictionary {
UIWindow *gameWindow;
if (IS_DUALHEAD())
gameWindow = self.secondWindow;
@@ -118,6 +118,7 @@
}
[blackView release];
+
// pull out useful configuration info from various files
GameSetup *setup = [[GameSetup alloc] initWithDictionary:gameDictionary];
NSNumber *isNetGameNum = [gameDictionary objectForKey:@"netgame"];
@@ -126,23 +127,26 @@
toTarget:setup
withObject:nil];
- const char **gameArgs = [setup getSettings:[gameDictionary objectForKey:@"savefile"]];
NSNumber *menuStyle = [NSNumber numberWithBool:setup.menuStyle];
- [setup release];
-
- // since the sdlwindow is not yet created, we add the overlayController with a delay
+ NSNumber *orientation = [[gameDictionary objectForKey:@"game_dictionary"] objectForKey:@"orientation"];
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
isNetGameNum,@"net",
menuStyle,@"menu",
- [[gameDictionary objectForKey:@"game_dictionary"] objectForKey:@"orientation"],@"orientation",
+ orientation,@"orientation",
nil];
[self performSelector:@selector(displayOverlayLater:) withObject:dict afterDelay:1];
- // this is the pascal fuction that starts the game (wrapped around isInGame)
+ // need to set again [gameDictionary objectForKey:@"savefile"] because if it's empty it means it's a normal game
+ const char **gameArgs = [setup getGameSettings:[gameDictionary objectForKey:@"savefile"]];
self.isInGame = YES;
+ // this is the pascal fuction that starts the game
Game(gameArgs);
self.isInGame = NO;
free(gameArgs);
+
+ NSArray *stats = setup.statsArray;
+ [setup release];
+
[self.uiwindow makeKeyAndVisible];
[self.uiwindow bringSubviewToFront:self.mainViewController.view];
@@ -156,9 +160,11 @@
[UIView commitAnimations];
[refBlackView performSelector:@selector(removeFromSuperview) withObject:nil afterDelay:1];
[refSecondBlackView performSelector:@selector(removeFromSuperview) withObject:nil afterDelay:2];
+
+ return stats;
}
-// overlay with controls, become visible later, with a transparency effect
+// overlay with controls, become visible later, with a transparency effect since the sdlwindow is not yet created
-(void) displayOverlayLater:(id) object {
NSDictionary *dict = (NSDictionary *)object;
self.overlayController = [[OverlayViewController alloc] initWithNibName:@"OverlayViewController" bundle:nil];
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Classes/SavedGamesViewController.m
--- a/project_files/HedgewarsMobile/Classes/SavedGamesViewController.m Tue Feb 01 00:12:19 2011 +0100
+++ b/project_files/HedgewarsMobile/Classes/SavedGamesViewController.m Tue Feb 01 00:18:25 2011 +0100
@@ -21,6 +21,7 @@
#import "SavedGamesViewController.h"
#import "SDL_uikitappdelegate.h"
+#import "StatsPageViewController.h"
#import "CommodityFunctions.h"
@implementation SavedGamesViewController
@@ -90,7 +91,6 @@
[self.listOfSavegames addObject:newSaveName];
[self.listOfSavegames sortUsingSelector:@selector(compare:)];
- //[self.tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:[self.listOfSavegames indexOfObject:newSaveName] inSection:0]] withRowAnimation:UITableViewRowAnimationFade];
[self.tableView reloadData];
}
@@ -217,8 +217,26 @@
[NSNumber numberWithBool:NO],@"netgame",
[NSDictionary dictionaryWithObject:[NSNumber numberWithInt:self.interfaceOrientation] forKey:@"orientation"],@"game_dictionary",
nil];
- [[SDLUIKitDelegate sharedAppDelegate] startSDLgame:allDataNecessary];
- [self.parentViewController dismissModalViewControllerAnimated:NO];
+
+ // also modify GameConfigViewController.m
+ StatsPageViewController *statsPage = [[StatsPageViewController alloc] initWithStyle:UITableViewStyleGrouped];
+ statsPage.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
+ if ([statsPage respondsToSelector:@selector(setModalPresentationStyle:)])
+ statsPage.modalPresentationStyle = UIModalPresentationPageSheet;
+ // avoid showing the stat page immediately, but wait for 3 seconds
+ [self performSelector:@selector(presentModalViewController:animated:) withObject:statsPage afterDelay:3];
+
+ NSArray *stats = [[SDLUIKitDelegate sharedAppDelegate] startSDLgame:allDataNecessary];
+ if ([stats count] <= 1) {
+ DLog(@"%@",stats);
+ [statsPage dismissModalViewControllerAnimated:NO];
+ } else {
+ statsPage.statsArray = stats;
+ [statsPage.tableView reloadData];
+ [statsPage viewWillAppear:YES];
+ }
+ // reload needed because when ending game the entry remains there
+ [self.tableView reloadData];
}
#pragma mark -
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Classes/StatsPageViewController.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/project_files/HedgewarsMobile/Classes/StatsPageViewController.h Tue Feb 01 00:18:25 2011 +0100
@@ -0,0 +1,30 @@
+/*
+ * Hedgewars-iOS, a Hedgewars port for iOS devices
+ * Copyright (c) 2009-2010 Vittorio Giovara
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * File created on 30/12/2010.
+ */
+
+
+#import
+
+@interface StatsPageViewController : UITableViewController {
+ NSArray *statsArray;
+}
+
+@property (nonatomic,retain) NSArray *statsArray;
+
+@end
\ No newline at end of file
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Classes/StatsPageViewController.m
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/project_files/HedgewarsMobile/Classes/StatsPageViewController.m Tue Feb 01 00:18:25 2011 +0100
@@ -0,0 +1,163 @@
+/*
+ * Hedgewars-iOS, a Hedgewars port for iOS devices
+ * Copyright (c) 2009-2010 Vittorio Giovara
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * File created on 30/12/2010.
+ */
+
+
+#import "StatsPageViewController.h"
+#import "CommodityFunctions.h"
+
+@implementation StatsPageViewController
+@synthesize statsArray;
+
+-(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation {
+ return rotationManager(interfaceOrientation);
+}
+
+-(void) viewDidLoad {
+ if ([self.tableView respondsToSelector:@selector(setBackgroundView:)])
+ self.tableView.backgroundView = nil;
+
+ NSString *imgName;
+ if (IS_IPAD())
+ imgName = @"mediumBackground~ipad.png";
+ else
+ imgName = @"smallerBackground~iphone.png";
+
+ if ([self.tableView respondsToSelector:@selector(setBackgroundView:)]) {
+ UIImage *backgroundImage = [[UIImage alloc] initWithContentsOfFile:imgName];
+ UIImageView *background = [[UIImageView alloc] initWithImage:backgroundImage];
+ [backgroundImage release];
+ [self.tableView setBackgroundView:background];
+ [background release];
+ } else
+ self.view.backgroundColor = [UIColor blackColor];
+
+ self.tableView.separatorColor = UICOLOR_HW_YELLOW_BODER;
+ self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
+
+ [super viewDidLoad];
+}
+
+#pragma mark -
+#pragma mark Table view data source
+-(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView {
+ return 4;
+}
+
+-(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
+ if (section == 0 || section == 3)
+ return 1;
+ else if (section == 1)
+ return [[self.statsArray objectAtIndex:0] count];
+ else
+ return [self.statsArray count] - 2;
+}
+
+-(UITableViewCell *)tableView:(UITableView *)aTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
+ static NSString *CellIdentifier0 = @"Cell0";
+ NSInteger section = [indexPath section];
+ NSInteger row = [indexPath row];
+ NSString *imgString = @"";
+
+ UITableViewCell *cell = [aTableView dequeueReusableCellWithIdentifier:CellIdentifier0];
+ if (cell == nil)
+ cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier0] autorelease];
+
+ if (section == 0) { // winning team
+ imgString = @"StatsStar";
+ cell.textLabel.text = [self.statsArray objectAtIndex:1];
+ cell.textLabel.textColor = UICOLOR_HW_YELLOW_TEXT;
+ } else if (section == 1) { // teams ranking
+ // color, # kills, teamname
+ NSArray *info = [[[self.statsArray objectAtIndex:0] objectAtIndex:row] componentsSeparatedByString:@" "];
+ NSUInteger color = [[info objectAtIndex:0] intValue];
+ cell.textLabel.textColor = [UIColor colorWithRed:((color >> 16) & 0xFF)/255.0f
+ green:((color >> 8) & 0xFF)/255.0f
+ blue:(color & 0xFF)/255.0f
+ alpha:1.0f];
+ cell.textLabel.text = [NSString stringWithFormat:@"%d. %@ (%@ kills)", row+1, [info objectAtIndex:2], [info objectAtIndex:1]];
+ imgString = [NSString stringWithFormat:@"StatsMedal%d",row+1];
+ } else if (section == 2) { // general info
+ imgString = @"iconDamage";
+ cell.textLabel.text = [self.statsArray objectAtIndex:row + 2];
+ cell.textLabel.textColor = UICOLOR_HW_YELLOW_TEXT;
+ } else { // exit button
+ cell.textLabel.text = NSLocalizedString(@"Done",@"");
+ cell.textLabel.textColor = [UIColor whiteColor];
+ cell.accessoryView = nil;
+ cell.imageView.image = nil;
+ }
+
+ UIImage *img = [[UIImage alloc] initWithContentsOfFile:[NSString stringWithFormat:@"%@/%@.png",BTN_DIRECTORY(),imgString]];
+ UIImageView *imgView = [[UIImageView alloc] initWithImage:img];
+ cell.imageView.image = img;
+ [img release];
+ cell.accessoryView = imgView;
+ [imgView release];
+
+ cell.textLabel.textAlignment = UITextAlignmentCenter;
+ cell.textLabel.adjustsFontSizeToFitWidth = YES;
+ cell.backgroundColor = [UIColor blackColor];
+ cell.selectionStyle = UITableViewCellSelectionStyleNone;
+
+ return cell;
+}
+
+-(CGFloat) tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
+ return 160;
+}
+
+-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
+ if (section == 0) {
+ UIView *header = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.tableView.frame.size.width, 160)];
+ UIImage *img = [[UIImage alloc] initWithContentsOfFile:@"smallerTitle.png"];
+ UIImageView *imgView = [[UIImageView alloc] initWithImage:img];
+ [img release];
+ imgView.center = CGPointMake(self.tableView.frame.size.height/2, 160/2);
+ [header addSubview:imgView];
+ [imgView release];
+
+ return [header autorelease];
+ } else
+ return nil;
+}
+
+#pragma mark -
+#pragma mark Table view delegate
+-(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
+ if ([indexPath section] == 3)
+ [self dismissModalViewControllerAnimated:YES];
+}
+
+#pragma mark -
+#pragma mark Memory management
+-(void) didReceiveMemoryWarning {
+ // Releases the view if it doesn't have a superview.
+ [super didReceiveMemoryWarning];
+ self.statsArray = nil;
+}
+
+-(void) dealloc {
+ [statsArray release];
+ [super dealloc];
+}
+
+
+@end
+
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Classes/TeamConfigViewController.m
--- a/project_files/HedgewarsMobile/Classes/TeamConfigViewController.m Tue Feb 01 00:12:19 2011 +0100
+++ b/project_files/HedgewarsMobile/Classes/TeamConfigViewController.m Tue Feb 01 00:18:25 2011 +0100
@@ -183,8 +183,8 @@
NSString *teamPath = [NSString stringWithFormat:@"%@/%@.plist",TEAMS_DIRECTORY(),cell.textLabel.text];
NSDictionary *firstHog = [[[NSDictionary dictionaryWithContentsOfFile:teamPath] objectForKey:@"hedgehogs"] objectAtIndex:0];
if ([[firstHog objectForKey:@"level"] intValue] != 0) {
- NSString *filePath = [NSString stringWithFormat:@"%@/cyborg.png",HATS_DIRECTORY()];
- UIImage *sprite = [[UIImage alloc] initWithContentsOfFile:filePath andCutAt:CGRectMake(0, 2, 32, 32)];
+ NSString *filePath = [[[NSBundle mainBundle] resourcePath] stringByAppendingString:@"/Settings/Images/robotBadge.png"];
+ UIImage *sprite = [[UIImage alloc] initWithContentsOfFile:filePath];
UIImageView *spriteView = [[UIImageView alloc] initWithImage:sprite];
[sprite release];
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Hedgewars.xcodeproj/project.pbxproj
--- a/project_files/HedgewarsMobile/Hedgewars.xcodeproj/project.pbxproj Tue Feb 01 00:12:19 2011 +0100
+++ b/project_files/HedgewarsMobile/Hedgewars.xcodeproj/project.pbxproj Tue Feb 01 00:18:25 2011 +0100
@@ -118,6 +118,8 @@
6172FEEF1298D25D00D73365 /* mediumBackground~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 6172FEEB1298D25D00D73365 /* mediumBackground~ipad.png */; };
6172FEF11298D25D00D73365 /* smallerBackground~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 6172FEED1298D25D00D73365 /* smallerBackground~ipad.png */; };
6172FEF21298D25D00D73365 /* smallerBackground~iphone.png in Resources */ = {isa = PBXBuildFile; fileRef = 6172FEEE1298D25D00D73365 /* smallerBackground~iphone.png */; };
+ 6174F7C812CD62E300205D6F /* smallerTitle.png in Resources */ = {isa = PBXBuildFile; fileRef = 6174F7C612CD62E300205D6F /* smallerTitle.png */; };
+ 6174F7C912CD62E300205D6F /* smallerTitle@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 6174F7C712CD62E300205D6F /* smallerTitle@2x.png */; };
61798816114AA34C00BA94A9 /* hwengine.pas in Sources */ = {isa = PBXBuildFile; fileRef = 617987E7114AA34C00BA94A9 /* hwengine.pas */; };
61798818114AA34C00BA94A9 /* hwLibrary.pas in Sources */ = {isa = PBXBuildFile; fileRef = 617987E9114AA34C00BA94A9 /* hwLibrary.pas */; };
6179881B114AA34C00BA94A9 /* PascalExports.pas in Sources */ = {isa = PBXBuildFile; fileRef = 617987EC114AA34C00BA94A9 /* PascalExports.pas */; };
@@ -184,6 +186,7 @@
61A670C212747DBD00B06CE7 /* MapConfigViewController-iPhone.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6165924E11CA9CB400D6E256 /* MapConfigViewController-iPhone.xib */; };
61AC067412B2E32D000B52A2 /* Appirater.m in Sources */ = {isa = PBXBuildFile; fileRef = 61AC067312B2E32D000B52A2 /* Appirater.m */; };
61B3D71C11EA6F2700EC7420 /* uKeys.pas in Sources */ = {isa = PBXBuildFile; fileRef = 617987FE114AA34C00BA94A9 /* uKeys.pas */; };
+ 61B7A33812CC21080086B604 /* StatsPageViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 61B7A33712CC21080086B604 /* StatsPageViewController.m */; };
61C079E411F35A300072BF46 /* EditableCellView.m in Sources */ = {isa = PBXBuildFile; fileRef = 61C079E311F35A300072BF46 /* EditableCellView.m */; };
61D205A1127CDD1100ABD83E /* ObjcExports.m in Sources */ = {isa = PBXBuildFile; fileRef = 61D205A0127CDD1100ABD83E /* ObjcExports.m */; };
61D3D2A51290E03A003CE7C3 /* irc.png in Resources */ = {isa = PBXBuildFile; fileRef = 61D3D2A41290E03A003CE7C3 /* irc.png */; };
@@ -889,6 +892,8 @@
6172FEEC1298D25D00D73365 /* smallerBackground@2x~iphone.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "smallerBackground@2x~iphone.png"; path = "Resources/Frontend/smallerBackground@2x~iphone.png"; sourceTree = ""; };
6172FEED1298D25D00D73365 /* smallerBackground~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "smallerBackground~ipad.png"; path = "Resources/Frontend/smallerBackground~ipad.png"; sourceTree = ""; };
6172FEEE1298D25D00D73365 /* smallerBackground~iphone.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "smallerBackground~iphone.png"; path = "Resources/Frontend/smallerBackground~iphone.png"; sourceTree = ""; };
+ 6174F7C612CD62E300205D6F /* smallerTitle.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = smallerTitle.png; path = Resources/Frontend/smallerTitle.png; sourceTree = ""; };
+ 6174F7C712CD62E300205D6F /* smallerTitle@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "smallerTitle@2x.png"; path = "Resources/Frontend/smallerTitle@2x.png"; sourceTree = ""; };
617987E4114AA34C00BA94A9 /* GSHandlers.inc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.pascal; name = GSHandlers.inc; path = ../../hedgewars/GSHandlers.inc; sourceTree = SOURCE_ROOT; };
617987E5114AA34C00BA94A9 /* HHHandlers.inc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.pascal; name = HHHandlers.inc; path = ../../hedgewars/HHHandlers.inc; sourceTree = SOURCE_ROOT; };
617987E7114AA34C00BA94A9 /* hwengine.pas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.pascal; name = hwengine.pas; path = ../../hedgewars/hwengine.pas; sourceTree = SOURCE_ROOT; };
@@ -929,7 +934,7 @@
61798934114AB25F00BA94A9 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; };
6179898B114AB3FA00BA94A9 /* SDL_mixer.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = SDL_mixer.xcodeproj; path = "../../../Library/SDL-1.3/SDL_mixer/Xcode-iPhoneOS/SDL_mixer.xcodeproj"; sourceTree = SOURCE_ROOT; };
61798A0B114AB65600BA94A9 /* SDL_ttf.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = SDL_ttf.xcodeproj; path = "../../../Library/SDL-1.3/SDL_ttf/Xcode-iPhoneOS/SDL_ttf.xcodeproj"; sourceTree = SOURCE_ROOT; };
- 61798A5E114AE08600BA94A9 /* Data */ = {isa = PBXFileReference; lastKnownFileType = folder; path = Data; sourceTree = ""; };
+ 61798A5E114AE08600BA94A9 /* Data */ = {isa = PBXFileReference; lastKnownFileType = folder; name = Data; path = ../../../trunk/project_files/HedgewarsMobile/Data; sourceTree = ""; };
6183D83C11E2BCE200A88903 /* Default-ipad-Landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Default-ipad-Landscape.png"; path = "Resources/Icons/Default-ipad-Landscape.png"; sourceTree = ""; };
6183D83D11E2BCE200A88903 /* Default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = Default.png; path = Resources/Icons/Default.png; sourceTree = ""; };
61842B23122B619D0096E335 /* HelpPageInGameViewController-iPad.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = "HelpPageInGameViewController-iPad.xib"; path = "../Resources/HelpPageInGameViewController-iPad.xib"; sourceTree = ""; };
@@ -962,6 +967,8 @@
61A4A3A112A5CD56004D81E6 /* uCaptions.pas */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.pascal; name = uCaptions.pas; path = ../../hedgewars/uCaptions.pas; sourceTree = SOURCE_ROOT; };
61AC067212B2E32D000B52A2 /* Appirater.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Appirater.h; path = Classes/Appirater.h; sourceTree = ""; };
61AC067312B2E32D000B52A2 /* Appirater.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = Appirater.m; path = Classes/Appirater.m; sourceTree = ""; };
+ 61B7A33612CC21080086B604 /* StatsPageViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StatsPageViewController.h; sourceTree = ""; };
+ 61B7A33712CC21080086B604 /* StatsPageViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = StatsPageViewController.m; sourceTree = ""; };
61C079E211F35A300072BF46 /* EditableCellView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = EditableCellView.h; path = Classes/EditableCellView.h; sourceTree = ""; };
61C079E311F35A300072BF46 /* EditableCellView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = EditableCellView.m; path = Classes/EditableCellView.m; sourceTree = ""; };
61D2059F127CDD1100ABD83E /* ObjcExports.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ObjcExports.h; path = Classes/ObjcExports.h; sourceTree = ""; };
@@ -1154,6 +1161,8 @@
611D9BF312497B7700008271 /* Other Controllers */ = {
isa = PBXGroup;
children = (
+ 61B7A33612CC21080086B604 /* StatsPageViewController.h */,
+ 61B7A33712CC21080086B604 /* StatsPageViewController.m */,
61F2E7CB1205EDE0005734F7 /* AboutViewController.h */,
61F2E7CC1205EDE0005734F7 /* AboutViewController.m */,
61F2E7CD1205EDE0005734F7 /* AboutViewController.xib */,
@@ -1494,6 +1503,8 @@
61EBA62811DFF2BC0048B68A /* title.png */,
618899811299516000D55FD6 /* title@2x.png */,
61889984129995B500D55FD6 /* title~ipad.png */,
+ 6174F7C612CD62E300205D6F /* smallerTitle.png */,
+ 6174F7C712CD62E300205D6F /* smallerTitle@2x.png */,
61F9040A11DF59370068B24D /* background.png */,
6172FED61298CF9800D73365 /* background@2x~iphone.png */,
6172FED71298CF9800D73365 /* background~iphone.png */,
@@ -2276,6 +2287,8 @@
61188C0712A6FE960026C5DA /* settingsButton@2x.png in Resources */,
61188C0812A6FE9A0026C5DA /* title@2x.png in Resources */,
61188C0912A6FE9C0026C5DA /* tw@2x.png in Resources */,
+ 6174F7C812CD62E300205D6F /* smallerTitle.png in Resources */,
+ 6174F7C912CD62E300205D6F /* smallerTitle@2x.png in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -2293,7 +2306,7 @@
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
- shellScript = "#copy new stuff over old stuff\nrm -rf ${PROJECT_DIR}/Data\ncp -R ${PROJECT_DIR}/../../share/hedgewars/Data ${PROJECT_DIR}/Data\n\n#copy some files from QTfrontend/res\nmkdir ${PROJECT_DIR}/Data/Graphics/Btn\ncp ${PROJECT_DIR}/../../QTfrontend/res/btn*.png ${PROJECT_DIR}/Data/Graphics/Btn\ncp ${PROJECT_DIR}/../../QTfrontend/res/ammopic.png ${PROJECT_DIR}/Data/Graphics/Btn/iconAmmo.png\ncp ${PROJECT_DIR}/../../QTfrontend/res/icon*.png ${PROJECT_DIR}/Data/Graphics/Btn\ncp -R ${PROJECT_DIR}/../../QTfrontend/res/botlevels ${PROJECT_DIR}/Data/Graphics/Hedgehog/botlevels\n\n#delete all CMakeLists.txt and image source files\nfind ${PROJECT_DIR}/Data -name CMakeLists.txt -delete\nfind ${PROJECT_DIR}/Data -name *.svg -delete\nfind ${PROJECT_DIR}/Data -name *.svgz -delete\nfind ${PROJECT_DIR}/Data -name *.sifz -delete\nfind ${PROJECT_DIR}/Data -name *.xcf -delete\nfind ${PROJECT_DIR}/Data -name *.orig -delete\n\n#delete desktop frontend translation\nrm -rf ${PROJECT_DIR}/Data/Locale/hedgewars_*\n\n#delete dummy maps and hats\nrm -rf ${PROJECT_DIR}/Data/Maps/{test*,Ruler}\nrm -rf ${PROJECT_DIR}/Data/Hats/{TeamCap,TeamHeadband,TeamHair}\nrm -rf ${PROJECT_DIR}/Data/misc/\n\n#copy mono audio\ncp -R ${PROJECT_DIR}/audio/* ${PROJECT_DIR}/Data/\n\n#the following ones must be removed\nrm -rf ${PROJECT_DIR}/Data/Maps/{Cheese,FlightJoust}\n\n#move Lua maps in Missions\nmkdir ${PROJECT_DIR}/Data/Missions/Maps/\nmv ${PROJECT_DIR}/Data/Maps/{Basketball,Knockball,TrophyRace} ${PROJECT_DIR}/Data/Missions/Maps/\n\n#reduce the number of flakes for City\nawk '{if ($1 == 1500) $1=40; print $0}' < ${PROJECT_DIR}/Data/Themes/City/theme.cfg > /tmp/tempfile\nmv /tmp/tempfile ${PROJECT_DIR}/Data/Themes/City/theme.cfg\n\n#remove Isalnd from the list of Themes\nawk '{if ($1 != \"Island\") print $0}' < ${PROJECT_DIR}/Data/Themes/themes.cfg > /tmp/tempfile && mv /tmp/tempfile ${PROJECT_DIR}/Data/Themes/themes.cfg\n\n#remove Isalnd from the Maps and themes\nrm -rf ${PROJECT_DIR}/Data/Themes/Island\nawk '{if ($1 == \"Island\") print \"Nature\"}' < ${PROJECT_DIR}/Data/Maps/Cave/map.cfg > /tmp/tempfile && mv /tmp/tempfile ${PROJECT_DIR}/Data/Maps/Cave/map.cfg\nawk '{if ($1 == \"Island\") print \"Nature\"}' < ${PROJECT_DIR}/Data/Maps/Lonely_Island/map.cfg > /tmp/tempfile && mv /tmp/tempfile ${PROJECT_DIR}/Data/Maps/Lonely_Island/map.cfg\nawk '{if ($1 == \"Island\") print \"Nature\"}' < ${PROJECT_DIR}/Data/Maps/PirateFlag/map.cfg > /tmp/tempfile && mv /tmp/tempfile ${PROJECT_DIR}/Data/Maps/PirateFlag/map.cfg\n\n#delete the Classic voice\nrm -rf ${PROJECT_DIR}/Data/Sounds/voices/Classic\n\n#delete useless fonts\nrm -rf ${PROJECT_DIR}/Data/Fonts/{wqy-zenhei.ttc,DroidSansFallback.ttf}\n\n#delete all names, reserved hats\nrm -rf ${PROJECT_DIR}/Data/Names/\nrm -rf ${PROJECT_DIR}/Data/Graphics/Hats/Reserved/\n";
+ shellScript = "#copy new stuff over old stuff\nrm -rf ${PROJECT_DIR}/Data\necho \"Copying Data...\"\ncp -R ${PROJECT_DIR}/../../share/hedgewars/Data ${PROJECT_DIR}/Data\n\n#copy some files from QTfrontend/res\necho \"Fetching additional graphics from QTfrontend/res...\"\nmkdir ${PROJECT_DIR}/Data/Graphics/Btn\ncp ${PROJECT_DIR}/../../QTfrontend/res/btn*.png ${PROJECT_DIR}/Data/Graphics/Btn/\ncp ${PROJECT_DIR}/../../QTfrontend/res/icon*.png ${PROJECT_DIR}/Data/Graphics/Btn/\ncp ${PROJECT_DIR}/../../QTfrontend/res/StatsMedal*.png ${PROJECT_DIR}/Data/Graphics/Btn/\ncp ${PROJECT_DIR}/../../QTfrontend/res/StatsR.png ${PROJECT_DIR}/Data/Graphics/Btn/StatsStar.png\ncp ${PROJECT_DIR}/../../QTfrontend/res/ammopic.png ${PROJECT_DIR}/Data/Graphics/Btn/iconAmmo.png\ncp -R ${PROJECT_DIR}/../../QTfrontend/res/botlevels ${PROJECT_DIR}/Data/Graphics/Hedgehog/botlevels/\n\necho \"Removing text and dummy files...\"\n#delete all CMakeLists.txt and image source files\nfind ${PROJECT_DIR}/Data -name CMakeLists.txt -delete\nfind ${PROJECT_DIR}/Data -name *.svg -delete\nfind ${PROJECT_DIR}/Data -name *.svgz -delete\nfind ${PROJECT_DIR}/Data -name *.sifz -delete\nfind ${PROJECT_DIR}/Data -name *.xcf -delete\nfind ${PROJECT_DIR}/Data -name *.orig -delete\n\n#delete desktop frontend translation\nrm -rf ${PROJECT_DIR}/Data/Locale/hedgewars_*\n\n#delete dummy maps and hats, misc stuff\nrm -rf ${PROJECT_DIR}/Data/Maps/{test*,Ruler}\nrm -rf ${PROJECT_DIR}/Data/Hats/{TeamCap,TeamHeadband,TeamHair}\nrm -rf ${PROJECT_DIR}/Data/misc/\n\n#delete forbidden maps\nrm -rf ${PROJECT_DIR}/Data/Maps/{Cheese,FlightJoust}\n\n#delete the Classic voice\nrm -rf ${PROJECT_DIR}/Data/Sounds/voices/Classic\n\n#delete useless fonts\nrm -rf ${PROJECT_DIR}/Data/Fonts/{wqy-zenhei.ttc,DroidSansFallback.ttf}\n\n#delete all names, reserved hats\nrm -rf ${PROJECT_DIR}/Data/Names/\nrm -rf ${PROJECT_DIR}/Data/Graphics/Hats/Reserved/\n\necho \"Copying mono audio...\"\n#copy mono audio\ncp -R ${PROJECT_DIR}/audio/* ${PROJECT_DIR}/Data/\n\necho \"Tweaking Data contents...\"\n#move Lua maps in Missions\nmkdir ${PROJECT_DIR}/Data/Missions/Maps/\nmv ${PROJECT_DIR}/Data/Maps/{Basketball,Knockball,TrophyRace,CTF_Blizzard,Control} ${PROJECT_DIR}/Data/Missions/Maps/\n#workaround for missing map in CTF_Blizzard\nln -s ../../../Maps/Blizzard/map.png ${PROJECT_DIR}/Data/Missions/Maps/CTF_Blizzard/map.png\n\n#reduce the number of flakes for City\nawk '{if ($1 == 1500) $1=40; print $0}' < ${PROJECT_DIR}/Data/Themes/City/theme.cfg > /tmp/tempfile\nmv /tmp/tempfile ${PROJECT_DIR}/Data/Themes/City/theme.cfg\n\n#remove Isalnd from the list of Themes\nawk '{if ($1 != \"Island\") print $0}' < ${PROJECT_DIR}/Data/Themes/themes.cfg > /tmp/tempfile && mv /tmp/tempfile ${PROJECT_DIR}/Data/Themes/themes.cfg\n\n#remove Isalnd from the Maps and themes\nrm -rf ${PROJECT_DIR}/Data/Themes/Island\nawk '{if ($1 == \"Island\") print \"Nature\"}' < ${PROJECT_DIR}/Data/Maps/Cave/map.cfg > /tmp/tempfile && mv /tmp/tempfile ${PROJECT_DIR}/Data/Maps/Cave/map.cfg\nawk '{if ($1 == \"Island\") print \"Nature\"}' < ${PROJECT_DIR}/Data/Maps/Lonely_Island/map.cfg > /tmp/tempfile && mv /tmp/tempfile ${PROJECT_DIR}/Data/Maps/Lonely_Island/map.cfg\nawk '{if ($1 == \"Island\") print \"Nature\"}' < ${PROJECT_DIR}/Data/Maps/PirateFlag/map.cfg > /tmp/tempfile && mv /tmp/tempfile ${PROJECT_DIR}/Data/Maps/PirateFlag/map.cfg\n\necho \"Done\"";
showEnvVarsInLog = 0;
};
9283011B0F10CB2D00CC5A3C /* Build libfpc.a */ = {
@@ -2424,6 +2437,7 @@
61F544C712AF1748007FD913 /* HoldTableViewCell.m in Sources */,
61AC067412B2E32D000B52A2 /* Appirater.m in Sources */,
61E2E12E12BAAEE30051B659 /* ServerSetup.m in Sources */,
+ 61B7A33812CC21080086B604 /* StatsPageViewController.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Info.plist
--- a/project_files/HedgewarsMobile/Info.plist Tue Feb 01 00:12:19 2011 +0100
+++ b/project_files/HedgewarsMobile/Info.plist Tue Feb 01 00:18:25 2011 +0100
@@ -28,7 +28,7 @@
CFBundleSignature????CFBundleVersion
- 1.2.1
+ 1.2.2LSRequiresIPhoneOSUILaunchImageFile~ipad
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Frontend/backButton.png
Binary file project_files/HedgewarsMobile/Resources/Frontend/backButton.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Frontend/backButton@2x.png
Binary file project_files/HedgewarsMobile/Resources/Frontend/backButton@2x.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Frontend/background.png
Binary file project_files/HedgewarsMobile/Resources/Frontend/background.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Frontend/background@2x~iphone.png
Binary file project_files/HedgewarsMobile/Resources/Frontend/background@2x~iphone.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Frontend/background~iphone.png
Binary file project_files/HedgewarsMobile/Resources/Frontend/background~iphone.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Frontend/helpButton.png
Binary file project_files/HedgewarsMobile/Resources/Frontend/helpButton.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Frontend/localplayButton@2x~iphone.png
Binary file project_files/HedgewarsMobile/Resources/Frontend/localplayButton@2x~iphone.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Frontend/localplayButton~ipad.png
Binary file project_files/HedgewarsMobile/Resources/Frontend/localplayButton~ipad.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Frontend/localplayButton~iphone.png
Binary file project_files/HedgewarsMobile/Resources/Frontend/localplayButton~iphone.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Frontend/mediumBackground~ipad.png
Binary file project_files/HedgewarsMobile/Resources/Frontend/mediumBackground~ipad.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Frontend/netplayButton.png
Binary file project_files/HedgewarsMobile/Resources/Frontend/netplayButton.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Frontend/savesButton.png
Binary file project_files/HedgewarsMobile/Resources/Frontend/savesButton.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Frontend/savesButton@2x.png
Binary file project_files/HedgewarsMobile/Resources/Frontend/savesButton@2x.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Frontend/settingsButton.png
Binary file project_files/HedgewarsMobile/Resources/Frontend/settingsButton.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Frontend/settingsButton@2x.png
Binary file project_files/HedgewarsMobile/Resources/Frontend/settingsButton@2x.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Frontend/smallerBackground@2x~iphone.png
Binary file project_files/HedgewarsMobile/Resources/Frontend/smallerBackground@2x~iphone.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Frontend/smallerBackground~ipad.png
Binary file project_files/HedgewarsMobile/Resources/Frontend/smallerBackground~ipad.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Frontend/smallerBackground~iphone.png
Binary file project_files/HedgewarsMobile/Resources/Frontend/smallerBackground~iphone.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Frontend/smallerTitle.png
Binary file project_files/HedgewarsMobile/Resources/Frontend/smallerTitle.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Frontend/smallerTitle@2x.png
Binary file project_files/HedgewarsMobile/Resources/Frontend/smallerTitle@2x.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Frontend/startGameButton.png
Binary file project_files/HedgewarsMobile/Resources/Frontend/startGameButton.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Frontend/title.png
Binary file project_files/HedgewarsMobile/Resources/Frontend/title.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Frontend/title@2x.png
Binary file project_files/HedgewarsMobile/Resources/Frontend/title@2x.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Frontend/title~ipad.png
Binary file project_files/HedgewarsMobile/Resources/Frontend/title~ipad.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Icons/Default-ipad-Landscape.png
Binary file project_files/HedgewarsMobile/Resources/Icons/Default-ipad-Landscape.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Icons/Default.png
Binary file project_files/HedgewarsMobile/Resources/Icons/Default.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Icons/Default@2x.png
Binary file project_files/HedgewarsMobile/Resources/Icons/Default@2x.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Icons/Icon-72.png
Binary file project_files/HedgewarsMobile/Resources/Icons/Icon-72.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Icons/Icon-Small-50.png
Binary file project_files/HedgewarsMobile/Resources/Icons/Icon-Small-50.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Icons/Icon-Small.png
Binary file project_files/HedgewarsMobile/Resources/Icons/Icon-Small.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Icons/Icon-Small@2x.png
Binary file project_files/HedgewarsMobile/Resources/Icons/Icon-Small@2x.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Icons/Icon.png
Binary file project_files/HedgewarsMobile/Resources/Icons/Icon.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Icons/Icon@2x.png
Binary file project_files/HedgewarsMobile/Resources/Icons/Icon@2x.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Icons/checkbox.png
Binary file project_files/HedgewarsMobile/Resources/Icons/checkbox.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Icons/checkbox@2x.png
Binary file project_files/HedgewarsMobile/Resources/Icons/checkbox@2x.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Icons/fb.png
Binary file project_files/HedgewarsMobile/Resources/Icons/fb.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Icons/fb@2x.png
Binary file project_files/HedgewarsMobile/Resources/Icons/fb@2x.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Icons/iTunesArtwork.png
Binary file project_files/HedgewarsMobile/Resources/Icons/iTunesArtwork.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Icons/irc.png
Binary file project_files/HedgewarsMobile/Resources/Icons/irc.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Icons/irc@2x.png
Binary file project_files/HedgewarsMobile/Resources/Icons/irc@2x.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Icons/plus.png
Binary file project_files/HedgewarsMobile/Resources/Icons/plus.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Icons/plus@2x.png
Binary file project_files/HedgewarsMobile/Resources/Icons/plus@2x.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Icons/tw.png
Binary file project_files/HedgewarsMobile/Resources/Icons/tw.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Icons/tw@2x.png
Binary file project_files/HedgewarsMobile/Resources/Icons/tw@2x.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Overlay/ammoButton.png
Binary file project_files/HedgewarsMobile/Resources/Overlay/ammoButton.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Overlay/ammoButton@2x.png
Binary file project_files/HedgewarsMobile/Resources/Overlay/ammoButton@2x.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Overlay/arrowDown.png
Binary file project_files/HedgewarsMobile/Resources/Overlay/arrowDown.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Overlay/arrowDown@2x.png
Binary file project_files/HedgewarsMobile/Resources/Overlay/arrowDown@2x.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Overlay/arrowLeft.png
Binary file project_files/HedgewarsMobile/Resources/Overlay/arrowLeft.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Overlay/arrowLeft@2x.png
Binary file project_files/HedgewarsMobile/Resources/Overlay/arrowLeft@2x.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Overlay/arrowRight.png
Binary file project_files/HedgewarsMobile/Resources/Overlay/arrowRight.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Overlay/arrowRight@2x.png
Binary file project_files/HedgewarsMobile/Resources/Overlay/arrowRight@2x.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Overlay/arrowUp.png
Binary file project_files/HedgewarsMobile/Resources/Overlay/arrowUp.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Overlay/arrowUp@2x.png
Binary file project_files/HedgewarsMobile/Resources/Overlay/arrowUp@2x.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Overlay/cornerButton.png
Binary file project_files/HedgewarsMobile/Resources/Overlay/cornerButton.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Overlay/cornerButton@2x.png
Binary file project_files/HedgewarsMobile/Resources/Overlay/cornerButton@2x.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Overlay/helpabove.png
Binary file project_files/HedgewarsMobile/Resources/Overlay/helpabove.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Overlay/helpbottom.png
Binary file project_files/HedgewarsMobile/Resources/Overlay/helpbottom.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Overlay/helpingame.png
Binary file project_files/HedgewarsMobile/Resources/Overlay/helpingame.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Overlay/helpleft.png
Binary file project_files/HedgewarsMobile/Resources/Overlay/helpleft.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Overlay/helpplain.png
Binary file project_files/HedgewarsMobile/Resources/Overlay/helpplain.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Overlay/helpright.png
Binary file project_files/HedgewarsMobile/Resources/Overlay/helpright.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Overlay/joyButtonAttack.png
Binary file project_files/HedgewarsMobile/Resources/Overlay/joyButtonAttack.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Overlay/joyButtonAttack@2x.png
Binary file project_files/HedgewarsMobile/Resources/Overlay/joyButtonAttack@2x.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Overlay/joyButtonBackJump.png
Binary file project_files/HedgewarsMobile/Resources/Overlay/joyButtonBackJump.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Overlay/joyButtonBackJump@2x.png
Binary file project_files/HedgewarsMobile/Resources/Overlay/joyButtonBackJump@2x.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Overlay/joyButtonForwardJump.png
Binary file project_files/HedgewarsMobile/Resources/Overlay/joyButtonForwardJump.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Overlay/joyButtonForwardJump@2x.png
Binary file project_files/HedgewarsMobile/Resources/Overlay/joyButtonForwardJump@2x.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Settings/Images/hedgehog.png
Binary file project_files/HedgewarsMobile/Resources/Settings/Images/hedgehog.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Settings/Images/hedgehog@2x.png
Binary file project_files/HedgewarsMobile/Resources/Settings/Images/hedgehog@2x.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Settings/Images/robotBadge.png
Binary file project_files/HedgewarsMobile/Resources/Settings/Images/robotBadge.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/Settings/Images/robotBadge@2x.png
Binary file project_files/HedgewarsMobile/Resources/Settings/Images/robotBadge@2x.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/denied.png
Binary file project_files/HedgewarsMobile/Resources/denied.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/HedgewarsMobile/Resources/surprise.png
Binary file project_files/HedgewarsMobile/Resources/surprise.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 project_files/hedgewars.pro
--- a/project_files/hedgewars.pro Tue Feb 01 00:12:19 2011 +0100
+++ b/project_files/hedgewars.pro Tue Feb 01 00:18:25 2011 +0100
@@ -2,6 +2,8 @@
TARGET = hedgewars
DEPENDPATH += ../QTfrontend/
INCLUDEPATH += ../QTfrontend/
+INCLUDEPATH += /usr/local/include/SDL
+
DESTDIR = .
win32 {
@@ -22,18 +24,21 @@
../QTfrontend/igbox.h ../QTfrontend/input_ip.h \
../QTfrontend/itemNum.h ../QTfrontend/mapContainer.h \
../QTfrontend/misc.h ../QTfrontend/namegen.h \
- ../QTfrontend/netregister.h ../QTfrontend/netserver.h \
+ ../QTfrontend/netregister.h ../QTfrontend/netserver.h \
../QTfrontend/netserverslist.h ../QTfrontend/netudpserver.h \
../QTfrontend/netudpwidget.h ../QTfrontend/newnetclient.h \
../QTfrontend/pages.h ../QTfrontend/playrecordpage.h \
- ../QTfrontend/predefteams.h ../QTfrontend/proto.h \
+ ../QTfrontend/proto.h \
../QTfrontend/sdlkeys.h ../QTfrontend/selectWeapon.h \
../QTfrontend/statsPage.h ../QTfrontend/tcpBase.h \
../QTfrontend/team.h ../QTfrontend/teamselect.h \
../QTfrontend/teamselhelper.h ../QTfrontend/togglebutton.h \
../QTfrontend/ui_hwform.h ../QTfrontend/vertScrollArea.h \
../QTfrontend/weaponItem.h ../QTfrontend/xfire.h \
- ../QTfrontend/achievements.h
+ ../QTfrontend/achievements.h \
+ ../QTfrontend/drawmapwidget.h \
+ ../QTfrontend/drawmapscene.h \
+ ../QTfrontend/qaspectratiolayout.h
SOURCES += ../QTfrontend/SDLs.cpp ../QTfrontend/SquareLabel.cpp \
../QTfrontend/about.cpp ../QTfrontend/ammoSchemeModel.cpp \
@@ -56,7 +61,11 @@
../QTfrontend/teamselect.cpp ../QTfrontend/teamselhelper.cpp \
../QTfrontend/togglebutton.cpp ../QTfrontend/ui_hwform.cpp \
../QTfrontend/vertScrollArea.cpp ../QTfrontend/weaponItem.cpp \
- ../QTfrontend/achievements.cpp
+ ../QTfrontend/achievements.cpp \
+ ../QTfrontend/hwconsts.cpp \
+ ../QTfrontend/drawmapwidget.cpp \
+ ../QTfrontend/drawmapscene.cpp \
+ ../QTfrontend/qaspectratiolayout.cpp
win32 {
SOURCES += ../QTfrontend/xfire.cpp
@@ -89,7 +98,7 @@
RESOURCES += ../QTfrontend/hedgewars.qrc
!macx {
- LIBS += -lSDL -lSDL_Mixer
+ LIBS += -lSDL -lSDL_mixer
} else {
QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.6
QMAKE_MAC_SDK=/Developer/SDKs/MacOSX10.6.sdk
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/AmmoMenu/Ammos.png
Binary file share/hedgewars/Data/Graphics/AmmoMenu/Ammos.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/AmmoMenu/Ammos_bw.png
Binary file share/hedgewars/Data/Graphics/AmmoMenu/Ammos_bw.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/BulletHit.png
Binary file share/hedgewars/Data/Graphics/BulletHit.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/CMakeLists.txt
--- a/share/hedgewars/Data/Graphics/CMakeLists.txt Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Graphics/CMakeLists.txt Tue Feb 01 00:18:25 2011 +0100
@@ -3,6 +3,7 @@
add_subdirectory(Graves)
add_subdirectory(Hats)
add_subdirectory(Hedgehog)
+add_subdirectory(SuddenDeath)
file(GLOB BaseSprites *.png)
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Case.png
Binary file share/hedgewars/Data/Graphics/Case.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Explosives.png
Binary file share/hedgewars/Data/Graphics/Explosives.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Finger.png
Binary file share/hedgewars/Data/Graphics/Finger.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/FirstAid.png
Binary file share/hedgewars/Data/Graphics/FirstAid.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Flags/cm_42.png
Binary file share/hedgewars/Data/Graphics/Flags/cm_42.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Flags/cm_anarchy.png
Binary file share/hedgewars/Data/Graphics/Flags/cm_anarchy.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Flags/cm_balrog.png
Binary file share/hedgewars/Data/Graphics/Flags/cm_balrog.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Flags/cm_binary.png
Binary file share/hedgewars/Data/Graphics/Flags/cm_binary.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Flags/cm_brittany.png
Binary file share/hedgewars/Data/Graphics/Flags/cm_brittany.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Flags/cm_earth2.png
Binary file share/hedgewars/Data/Graphics/Flags/cm_earth2.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Flags/cm_female.png
Binary file share/hedgewars/Data/Graphics/Flags/cm_female.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Flags/cm_hax0r.png
Binary file share/hedgewars/Data/Graphics/Flags/cm_hax0r.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Flags/cm_iluvu.png
Binary file share/hedgewars/Data/Graphics/Flags/cm_iluvu.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Flags/cm_magicskull.png
Binary file share/hedgewars/Data/Graphics/Flags/cm_magicskull.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Flags/cm_male.png
Binary file share/hedgewars/Data/Graphics/Flags/cm_male.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Flags/cm_music.png
Binary file share/hedgewars/Data/Graphics/Flags/cm_music.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Flags/cm_pacman.png
Binary file share/hedgewars/Data/Graphics/Flags/cm_pacman.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Flags/cm_pacman2.png
Binary file share/hedgewars/Data/Graphics/Flags/cm_pacman2.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Flags/cm_vampire.png
Binary file share/hedgewars/Data/Graphics/Flags/cm_vampire.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Graves/Simple.png
Binary file share/hedgewars/Data/Graphics/Graves/Simple.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/4gsuif.png
Binary file share/hedgewars/Data/Graphics/Hats/4gsuif.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/AkuAku.png
Binary file share/hedgewars/Data/Graphics/Hats/AkuAku.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/Balrog.png
Binary file share/hedgewars/Data/Graphics/Hats/Balrog.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/Bandit.png
Binary file share/hedgewars/Data/Graphics/Hats/Bandit.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/Blanka.png
Binary file share/hedgewars/Data/Graphics/Hats/Blanka.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/BlankaToothless.png
Binary file share/hedgewars/Data/Graphics/Hats/BlankaToothless.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/BlueCap.png
Binary file share/hedgewars/Data/Graphics/Hats/BlueCap.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/BlueHair.png
Binary file share/hedgewars/Data/Graphics/Hats/BlueHair.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/Bob.png
Binary file share/hedgewars/Data/Graphics/Hats/Bob.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/BrainSlug.png
Binary file share/hedgewars/Data/Graphics/Hats/BrainSlug.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/BrainSlugMouth.png
Binary file share/hedgewars/Data/Graphics/Hats/BrainSlugMouth.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/Bub.png
Binary file share/hedgewars/Data/Graphics/Hats/Bub.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/Bunny.png
Binary file share/hedgewars/Data/Graphics/Hats/Bunny.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/Chunli.png
Binary file share/hedgewars/Data/Graphics/Hats/Chunli.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/Coonskin3.png
Binary file share/hedgewars/Data/Graphics/Hats/Coonskin3.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/Cororon.png
Binary file share/hedgewars/Data/Graphics/Hats/Cororon.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/Cowboy.png
Binary file share/hedgewars/Data/Graphics/Hats/Cowboy.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/Deer.png
Binary file share/hedgewars/Data/Graphics/Hats/Deer.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/Disguise.png
Binary file share/hedgewars/Data/Graphics/Hats/Disguise.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/Dragon.png
Binary file share/hedgewars/Data/Graphics/Hats/Dragon.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/Elvis.png
Binary file share/hedgewars/Data/Graphics/Hats/Elvis.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/Eva_00b.png
Binary file share/hedgewars/Data/Graphics/Hats/Eva_00b.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/Eva_00y.png
Binary file share/hedgewars/Data/Graphics/Hats/Eva_00y.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/Falcon.png
Binary file share/hedgewars/Data/Graphics/Hats/Falcon.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/Gasmask.png
Binary file share/hedgewars/Data/Graphics/Hats/Gasmask.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/Geordi.png
Binary file share/hedgewars/Data/Graphics/Hats/Geordi.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/Glasses.png
Binary file share/hedgewars/Data/Graphics/Hats/Glasses.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/GreenCap.png
Binary file share/hedgewars/Data/Graphics/Hats/GreenCap.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/GreenHair.png
Binary file share/hedgewars/Data/Graphics/Hats/GreenHair.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/GreyHair.png
Binary file share/hedgewars/Data/Graphics/Hats/GreyHair.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/Guile.png
Binary file share/hedgewars/Data/Graphics/Hats/Guile.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/HogInTheHat.png
Binary file share/hedgewars/Data/Graphics/Hats/HogInTheHat.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/Honda.png
Binary file share/hedgewars/Data/Graphics/Hats/Honda.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/IndianChief.png
Binary file share/hedgewars/Data/Graphics/Hats/IndianChief.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/InfernalHorns.png
Binary file share/hedgewars/Data/Graphics/Hats/InfernalHorns.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/Jason.png
Binary file share/hedgewars/Data/Graphics/Hats/Jason.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/Ken.png
Binary file share/hedgewars/Data/Graphics/Hats/Ken.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/KirbyMask.png
Binary file share/hedgewars/Data/Graphics/Hats/KirbyMask.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/Kululun.png
Binary file share/hedgewars/Data/Graphics/Hats/Kululun.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/Ladle.png
Binary file share/hedgewars/Data/Graphics/Hats/Ladle.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/Laminaria.png
Binary file share/hedgewars/Data/Graphics/Hats/Laminaria.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/Luigi.png
Binary file share/hedgewars/Data/Graphics/Hats/Luigi.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/Mario.png
Binary file share/hedgewars/Data/Graphics/Hats/Mario.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/MegaHogX.png
Binary file share/hedgewars/Data/Graphics/Hats/MegaHogX.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/Moose.png
Binary file share/hedgewars/Data/Graphics/Hats/Moose.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/Mummy.png
Binary file share/hedgewars/Data/Graphics/Hats/Mummy.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/NinjaFull.png
Binary file share/hedgewars/Data/Graphics/Hats/NinjaFull.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/NinjaStraight.png
Binary file share/hedgewars/Data/Graphics/Hats/NinjaStraight.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/NinjaTriangle.png
Binary file share/hedgewars/Data/Graphics/Hats/NinjaTriangle.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/NoHat.png
Binary file share/hedgewars/Data/Graphics/Hats/NoHat.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/OldMan.png
Binary file share/hedgewars/Data/Graphics/Hats/OldMan.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/OrangeHair.png
Binary file share/hedgewars/Data/Graphics/Hats/OrangeHair.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/Pantsu.png
Binary file share/hedgewars/Data/Graphics/Hats/Pantsu.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/Pig.png
Binary file share/hedgewars/Data/Graphics/Hats/Pig.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/PinkHair.png
Binary file share/hedgewars/Data/Graphics/Hats/PinkHair.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/Plunger.png
Binary file share/hedgewars/Data/Graphics/Hats/Plunger.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/PrincessDaisy.png
Binary file share/hedgewars/Data/Graphics/Hats/PrincessDaisy.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/PrincessPeach.png
Binary file share/hedgewars/Data/Graphics/Hats/PrincessPeach.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/Pumpkin_Hat.png
Binary file share/hedgewars/Data/Graphics/Hats/Pumpkin_Hat.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/PurpleHair.png
Binary file share/hedgewars/Data/Graphics/Hats/PurpleHair.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/RSR.png
Binary file share/hedgewars/Data/Graphics/Hats/RSR.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/Rain.png
Binary file share/hedgewars/Data/Graphics/Hats/Rain.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/Rambo.png
Binary file share/hedgewars/Data/Graphics/Hats/Rambo.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/RedCap.png
Binary file share/hedgewars/Data/Graphics/Hats/RedCap.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/RedHair.png
Binary file share/hedgewars/Data/Graphics/Hats/RedHair.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/RobinHood.png
Binary file share/hedgewars/Data/Graphics/Hats/RobinHood.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/Ryu.png
Binary file share/hedgewars/Data/Graphics/Hats/Ryu.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/Samurai.png
Binary file share/hedgewars/Data/Graphics/Hats/Samurai.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/Samus.png
Binary file share/hedgewars/Data/Graphics/Hats/Samus.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/Santa.png
Binary file share/hedgewars/Data/Graphics/Hats/Santa.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/SauceBoatSilver.png
Binary file share/hedgewars/Data/Graphics/Hats/SauceBoatSilver.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/ShaggyYeti.png
Binary file share/hedgewars/Data/Graphics/Hats/ShaggyYeti.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/ShortHair_Black.png
Binary file share/hedgewars/Data/Graphics/Hats/ShortHair_Black.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/ShortHair_Brown.png
Binary file share/hedgewars/Data/Graphics/Hats/ShortHair_Brown.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/ShortHair_Grey.png
Binary file share/hedgewars/Data/Graphics/Hats/ShortHair_Grey.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/ShortHair_Red.png
Binary file share/hedgewars/Data/Graphics/Hats/ShortHair_Red.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/ShortHair_Yellow.png
Binary file share/hedgewars/Data/Graphics/Hats/ShortHair_Yellow.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/Skull.png
Binary file share/hedgewars/Data/Graphics/Hats/Skull.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/Sleepwalker.png
Binary file share/hedgewars/Data/Graphics/Hats/Sleepwalker.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/Sniper.png
Binary file share/hedgewars/Data/Graphics/Hats/Sniper.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/Sonic.png
Binary file share/hedgewars/Data/Graphics/Hats/Sonic.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/SparkleSuperFun.png
Binary file share/hedgewars/Data/Graphics/Hats/SparkleSuperFun.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/StrawHat.png
Binary file share/hedgewars/Data/Graphics/Hats/StrawHat.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/StrawHatEyes.png
Binary file share/hedgewars/Data/Graphics/Hats/StrawHatEyes.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/StrawHatFacial.png
Binary file share/hedgewars/Data/Graphics/Hats/StrawHatFacial.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/SunWukong.png
Binary file share/hedgewars/Data/Graphics/Hats/SunWukong.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/Sunglasses.png
Binary file share/hedgewars/Data/Graphics/Hats/Sunglasses.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/Teacup.png
Binary file share/hedgewars/Data/Graphics/Hats/Teacup.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/Teapot.png
Binary file share/hedgewars/Data/Graphics/Hats/Teapot.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/Terminator_Glasses.png
Binary file share/hedgewars/Data/Graphics/Hats/Terminator_Glasses.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/Toad.png
Binary file share/hedgewars/Data/Graphics/Hats/Toad.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/Vega.png
Binary file share/hedgewars/Data/Graphics/Hats/Vega.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/Viking.png
Binary file share/hedgewars/Data/Graphics/Hats/Viking.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/Wario.png
Binary file share/hedgewars/Data/Graphics/Hats/Wario.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/WizardHat.png
Binary file share/hedgewars/Data/Graphics/Hats/WizardHat.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/YellowCap.png
Binary file share/hedgewars/Data/Graphics/Hats/YellowCap.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/YellowHair.png
Binary file share/hedgewars/Data/Graphics/Hats/YellowHair.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/Zombi.png
Binary file share/hedgewars/Data/Graphics/Hats/Zombi.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/android.png
Binary file share/hedgewars/Data/Graphics/Hats/android.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/angel.png
Binary file share/hedgewars/Data/Graphics/Hats/angel.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/anzac.png
Binary file share/hedgewars/Data/Graphics/Hats/anzac.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/apple.png
Binary file share/hedgewars/Data/Graphics/Hats/apple.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/ash.png
Binary file share/hedgewars/Data/Graphics/Hats/ash.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/banana.png
Binary file share/hedgewars/Data/Graphics/Hats/banana.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/beefeater.png
Binary file share/hedgewars/Data/Graphics/Hats/beefeater.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/charmander.png
Binary file share/hedgewars/Data/Graphics/Hats/charmander.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/chef.png
Binary file share/hedgewars/Data/Graphics/Hats/chef.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/chikorita.png
Binary file share/hedgewars/Data/Graphics/Hats/chikorita.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/clown-copper.png
Binary file share/hedgewars/Data/Graphics/Hats/clown-copper.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/clown-crossed.png
Binary file share/hedgewars/Data/Graphics/Hats/clown-crossed.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/clown.png
Binary file share/hedgewars/Data/Graphics/Hats/clown.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/crown.png
Binary file share/hedgewars/Data/Graphics/Hats/crown.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/cyborg.png
Binary file share/hedgewars/Data/Graphics/Hats/cyborg.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/darthvader.png
Binary file share/hedgewars/Data/Graphics/Hats/darthvader.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/diglett.png
Binary file share/hedgewars/Data/Graphics/Hats/diglett.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/dwarf.png
Binary file share/hedgewars/Data/Graphics/Hats/dwarf.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/eastertop.png
Binary file share/hedgewars/Data/Graphics/Hats/eastertop.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/jigglypuff.png
Binary file share/hedgewars/Data/Graphics/Hats/jigglypuff.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/judo.png
Binary file share/hedgewars/Data/Graphics/Hats/judo.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/junior.png
Binary file share/hedgewars/Data/Graphics/Hats/junior.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/kiss_criss.png
Binary file share/hedgewars/Data/Graphics/Hats/kiss_criss.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/kiss_frehley.png
Binary file share/hedgewars/Data/Graphics/Hats/kiss_frehley.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/kiss_simmons.png
Binary file share/hedgewars/Data/Graphics/Hats/kiss_simmons.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/kiss_stanley.png
Binary file share/hedgewars/Data/Graphics/Hats/kiss_stanley.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/knight.png
Binary file share/hedgewars/Data/Graphics/Hats/knight.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/lambda.png
Binary file share/hedgewars/Data/Graphics/Hats/lambda.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/laurel.png
Binary file share/hedgewars/Data/Graphics/Hats/laurel.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/lemon.png
Binary file share/hedgewars/Data/Graphics/Hats/lemon.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/link.png
Binary file share/hedgewars/Data/Graphics/Hats/link.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/lugia.png
Binary file share/hedgewars/Data/Graphics/Hats/lugia.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/mickey_ears.png
Binary file share/hedgewars/Data/Graphics/Hats/mickey_ears.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/mp3.png
Binary file share/hedgewars/Data/Graphics/Hats/mp3.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/mudkip.png
Binary file share/hedgewars/Data/Graphics/Hats/mudkip.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/naruto.png
Binary file share/hedgewars/Data/Graphics/Hats/naruto.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/orange.png
Binary file share/hedgewars/Data/Graphics/Hats/orange.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/pikachu.png
Binary file share/hedgewars/Data/Graphics/Hats/pikachu.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/pinksunhat.png
Binary file share/hedgewars/Data/Graphics/Hats/pinksunhat.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/pirate_jack.png
Binary file share/hedgewars/Data/Graphics/Hats/pirate_jack.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/pirate_jack_bandana.png
Binary file share/hedgewars/Data/Graphics/Hats/pirate_jack_bandana.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/policecap.png
Binary file share/hedgewars/Data/Graphics/Hats/policecap.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/quotecap.png
Binary file share/hedgewars/Data/Graphics/Hats/quotecap.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/rasta.png
Binary file share/hedgewars/Data/Graphics/Hats/rasta.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/royalguard.png
Binary file share/hedgewars/Data/Graphics/Hats/royalguard.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/slowpoke.png
Binary file share/hedgewars/Data/Graphics/Hats/slowpoke.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/spartan.png
Binary file share/hedgewars/Data/Graphics/Hats/spartan.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/spidey.png
Binary file share/hedgewars/Data/Graphics/Hats/spidey.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/squirtle.png
Binary file share/hedgewars/Data/Graphics/Hats/squirtle.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/sth_Amy.png
Binary file share/hedgewars/Data/Graphics/Hats/sth_Amy.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/sth_AmyClassic.png
Binary file share/hedgewars/Data/Graphics/Hats/sth_AmyClassic.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/sth_Eggman.png
Binary file share/hedgewars/Data/Graphics/Hats/sth_Eggman.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/sth_Knux.png
Binary file share/hedgewars/Data/Graphics/Hats/sth_Knux.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/sth_Metal.png
Binary file share/hedgewars/Data/Graphics/Hats/sth_Metal.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/sth_Shadow.png
Binary file share/hedgewars/Data/Graphics/Hats/sth_Shadow.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/sth_Sonic.png
Binary file share/hedgewars/Data/Graphics/Hats/sth_Sonic.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/sth_Super.png
Binary file share/hedgewars/Data/Graphics/Hats/sth_Super.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/sth_Tails.png
Binary file share/hedgewars/Data/Graphics/Hats/sth_Tails.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/stormcloud.png
Binary file share/hedgewars/Data/Graphics/Hats/stormcloud.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/stormtrooper.png
Binary file share/hedgewars/Data/Graphics/Hats/stormtrooper.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/thug.png
Binary file share/hedgewars/Data/Graphics/Hats/thug.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/tophats.png
Binary file share/hedgewars/Data/Graphics/Hats/tophats.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/ushanka.png
Binary file share/hedgewars/Data/Graphics/Hats/ushanka.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/venom.png
Binary file share/hedgewars/Data/Graphics/Hats/venom.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hats/voltorb.png
Binary file share/hedgewars/Data/Graphics/Hats/voltorb.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hedgehog/ILoveLemonade.png
Binary file share/hedgewars/Data/Graphics/Hedgehog/ILoveLemonade.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hedgehog/Idle.png
Binary file share/hedgewars/Data/Graphics/Hedgehog/Idle.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hedgehog/Juggle.png
Binary file share/hedgewars/Data/Graphics/Hedgehog/Juggle.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Hedgehog/Shrug.png
Binary file share/hedgewars/Data/Graphics/Hedgehog/Shrug.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Lag.png
Binary file share/hedgewars/Data/Graphics/Lag.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Power.png
Binary file share/hedgewars/Data/Graphics/Power.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Snow.png
Binary file share/hedgewars/Data/Graphics/Snow.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Snow.svg
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/share/hedgewars/Data/Graphics/Snow.svg Tue Feb 01 00:18:25 2011 +0100
@@ -0,0 +1,93 @@
+
+
+
+
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Splash.png
Binary file share/hedgewars/Data/Graphics/Splash.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/SuddenDeath/CMakeLists.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/share/hedgewars/Data/Graphics/SuddenDeath/CMakeLists.txt Tue Feb 01 00:18:25 2011 +0100
@@ -0,0 +1,5 @@
+file(GLOB Sprites *.png)
+
+install(FILES
+ ${Sprites}
+ DESTINATION ${SHAREPATH}Data/Graphics/SuddenDeath)
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/SuddenDeath/SDClouds.png
Binary file share/hedgewars/Data/Graphics/SuddenDeath/SDClouds.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/SuddenDeath/SDDroplet.png
Binary file share/hedgewars/Data/Graphics/SuddenDeath/SDDroplet.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/SuddenDeath/SDFlake.png
Binary file share/hedgewars/Data/Graphics/SuddenDeath/SDFlake.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/SuddenDeath/SDSplash.png
Binary file share/hedgewars/Data/Graphics/SuddenDeath/SDSplash.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/SuddenDeath/SDWater.png
Binary file share/hedgewars/Data/Graphics/SuddenDeath/SDWater.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/Utility.png
Binary file share/hedgewars/Data/Graphics/Utility.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/amGirder.png
Binary file share/hedgewars/Data/Graphics/amGirder.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/hhMask.png
Binary file share/hedgewars/Data/Graphics/hhMask.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Graphics/missions.png
Binary file share/hedgewars/Data/Graphics/missions.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Locale/ar.txt
--- a/share/hedgewars/Data/Locale/ar.txt Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Locale/ar.txt Tue Feb 01 00:18:25 2011 +0100
@@ -12,7 +12,7 @@
00:09=مسدس حربي
00:10=ديناميت
00:11=مضرب بيسبول
-00:12=لكمة
+00:12=Shoryuken
00:13=ثانية
00:14=برشوت
00:15=هجوم جوي
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Locale/bg.txt
--- a/share/hedgewars/Data/Locale/bg.txt Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Locale/bg.txt Tue Feb 01 00:18:25 2011 +0100
@@ -12,7 +12,7 @@
00:09=Пистолет
00:10=Динамит
00:11=Бухалка
-00:12=Огнен Удар
+00:12=Shoryuken
00:13=сек
00:14=Парашут
00:15=Въздушна Атака
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Locale/cs.txt
--- a/share/hedgewars/Data/Locale/cs.txt Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Locale/cs.txt Tue Feb 01 00:18:25 2011 +0100
@@ -12,7 +12,7 @@
00:09=DEagle
00:10=Dynamit
00:11=Basebalová pálka
-00:12=Ohnivý úder
+00:12=Shoryuken
00:13=sec
00:14=Padák
00:15=Nálet
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Locale/de.lua
--- a/share/hedgewars/Data/Locale/de.lua Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Locale/de.lua Tue Feb 01 00:18:25 2011 +0100
@@ -52,8 +52,7 @@
-- ["Listen up, maggot!!"] = "",
-- ["|- Mines Time:"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
-- ["MISSION FAILED"] = "", -- User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
--- ["MISSION SUCCESSFUL"] = "", -- User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
--- ["MISSION SUCCESS"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
+-- ["MISSION SUCCESSFUL"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
-- ["NEW fastest lap: "] = "",
-- ["NO JUMPING"] = "",
["Not So Friendly Match"] = "Kein-so-Freundschaftsspiel", -- Basketball, Knockball
@@ -62,11 +61,11 @@
-- ["Operation Diver"] = "",
-- ["Opposing Team: "] = "",
-- ["Pathetic Hog #%d"] = "",
+-- ["points"] = "", -- Control, CTF_Blizzard, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle
-- ["Poison"] = "",
-- ["Random Weapons"] = "",
-- [" - Return the enemy flag to your base to score | - First team to 3 captures wins | - You may only score when your flag is in your base | - Hogs will drop the flag if killed, or drowned | - Dropped flags may be returned or recaptured | - Hogs respawn when killed"] = "",
-- ["RULES OF THE GAME [Press ESC to view]"] = "",
--- ["RULES OF THE GAME [Press ESC to view]"] = "",
-- ["sec"] = "", -- CTF_Blizzard, TrophyRace, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork, Capture_the_Flag
-- ["See ya!"] = "",
["Shotgun Team"] = "Entrenamiento con escopeta",
@@ -87,10 +86,9 @@
-- ["T_T"] = "",
-- ["Unit 3378"] = "",
-- ["Use your rope to get from start to finish as fast as you can!"] = "",
--- ["Victory for the"] = "",
+-- ["Victory for the "] = "", -- CTF_Blizzard, Capture_the_Flag
-- ["You have SCORED!!"] = "",
-- ["You've failed. Try again."] = "",
--- ["You've reached the goal!| |Time:"] = "",
-- ["You've reached the goal!| |Time: "] = "",
["'Zooka Team"] = "Die Knalltüten",
}
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Locale/de.txt
--- a/share/hedgewars/Data/Locale/de.txt Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Locale/de.txt Tue Feb 01 00:18:25 2011 +0100
@@ -12,7 +12,7 @@
00:09=Desert Eagle
00:10=Dynamit
00:11=Baseballschläger
-00:12=Feuerfaust
+00:12=Shoryuken
00:13=s
00:14=Fallschirm
00:15=Luftangriff
@@ -50,6 +50,9 @@
00:47=Haftmine
00:48=Hammer
00:49=Totenbeschwörung
+00:50=Bohr-Luftangriff
+00:51=Schlammball
+00:52=Keine Waffe ausgewählt
01:00=Auf in die Schlacht!
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Locale/el.txt
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/share/hedgewars/Data/Locale/el.txt Tue Feb 01 00:18:25 2011 +0100
@@ -0,0 +1,508 @@
+; Greek locale
+
+00:00=Χειροβομβίδα
+00:01=Χειροβομβίδα Διασποράς
+00:02=Μπαζούκας
+00:03=Αυτοκαθοδηγούμενη Μέλισσα
+00:04=Καραμπίνα
+00:05=Κρουστικό Δράπανο
+00:06=Άχθος Αρούρης
+00:07=Σχοινί
+00:08=Νάρκη
+00:09=Desert Eagle
+00:10=Δυναμίτης
+00:11=Μπαστούνι Του Βaseball
+00:12=Shoryuken
+00:13=δευ
+00:14=Αλεξίπτωτο
+00:15=Αεροπορικός Βομβαρδισμός
+00:16=Βομβαρδισμός Με Νάρκες
+00:17=Καμινέτο
+00:18=Δοκός
+00:19=Τηλεμεταφορά
+00:20=Εναλλαγή Σκαντζόχοιρου
+00:21=Όλμος
+00:22=Μαστίγιο
+00:23=Καμικάζι
+00:24=Τούρτα
+00:25=Αποπλάνηση
+00:26=Καρπουζόβομβα
+00:27=Σατανική Χειροβομβίδα
+00:28=Διατρητικός Πύραυλος
+00:29=Εκτοξευτής Χρωμοσφαιρίδιων
+00:30=Ναπάλμ
+00:31=Τηλεκατευθυνόμενο
+00:32=Μικροβαρύτητα
+00:33=Επιπλέον Ζημιά
+00:34=Ασπίδα
+00:35=Επιπλέον Χρόνος
+00:36=Διόπτρα Laser
+00:37=Βαμπιρισμός
+00:38=Τυφέκιο Ελεύθερου Σκοπευτή
+00:39=Ιπτάμενος Δίσκος
+00:40=Μολότωφ
+00:41=Πτηνό
+00:42=Φορητή Σκουληκότρυπα
+00:43=Πιάνο
+00:44=Χαλασμένη Φέτα
+00:45=Sine Gun (beta)
+00:46=Φλογοβόλο
+00:47=Αυτοκόλλητη Νάρκη
+00:48=Σφυρί
+00:49=Νεκρανάσταση
+
+01:00=Ας Πολεμήσουμε!
+01:01=Ισόπαλος Γύρος
+01:02=Οι %1 Νικούν!
+01:03=Ένταση Ήχου %1%
+01:04=Παύση
+01:05=Σίγουρα θέλετε να φύγετε (Y/Esc);
+01:06=Ξαφνικός Θάνατος!
+01:07=%1 απομένουν
+01:08=Καύσιμα
+01:09=Συγχρονισμός...
+01:10=Χρησιμοποιώντας αυτό το βοήθημα δεν τελειώνει η σειρά σας!
+01:11=Αυτό το όπλο ή βοήθημα δεν είναι ακόμα διαθέσιμο!
+01:12=Τελευταίος γύρος μέχρι τον Ξαφνικό Θάνατο!
+01:13=%1 γύροι μέχρι τον Ξαφνικό Θάνατο!
+01:14=Ετοιμάσου, %1!
+
+; Event messages
+; Hog (%1) died
+02:00=Ο %1 τίναξε τα πέταλα!
+02:00=Ο %1 είδε το φως στο τέλος της σήραγγας!
+02:00=Ο %1 δεν το περίμενε ποτέ!
+02:00=Ο %1 μας αποχαιρετά!
+02:00=Ο %1 βόσκει στα ουράνια λιβάδια!
+02:00=Ο %1 πήγε να συναντήσει το δημιουργό του!
+02:00=Ο %1 δεν μπορεί να κρατηθεί άλλο!
+02:00=Ο %1 έκανε το καθήκον του!
+02:00=Ο %1 κάνει την υπέρτατη θυσία!
+02:00=Ο %1 αφήνει τον μάταιο τούτο κόσμο!
+02:00=Ο %1 μας την έκανε με ελαφρά πηδηματάκια!
+02:00=Ο %1 δεν έχει άλλο χρόνο στη διάθεσή του!
+02:00=Θα θυμόμαστε τον %1 με στοργή!
+02:00=Ο %1 έχει ανεύρυσμα!
+02:00=Ο %1 αφήνει πίσω γυναίκα και παιδί!
+02:00=Ο %1 εκτόξευσε το τελευταίο μπαζούκας του!
+02:00=Ο %1 έριξε την τελευταία χειροβομβίδα του!
+02:00=Ο %1 έφτιαξε την τελευταία τούρτα του!
+02:00=Ο %1 έκανε την τελευταία του αεροπορική επίθεση!
+02:00=Ο %1 έριξε για τελευταία φορά με την καραμπίνα του!
+02:00=Ο %1 έριξε την τελευταία του καρπουζόβομβα!
+02:00=Ο %1 έριξε την τελευταία του βολή με το desert eagle!
+02:00=Ο %1 το πήρε κατάκαρδα!
+02:00=Ο %1 θα μπορούσε κάλλιστα να είχε χρησιμοποιήσει ένα κιβώτιο υγείας!
+02:00=Ο %1 πήγε να παίξει ένα καλύτερο παιχνίδι!
+02:00=Ο %1 έζησε μια καλή ζωή!
+02:00=Ο %1 απέτυχε οικτρά...
+02:00=Καψερέ μου %1, τι σου έμελλε να πάθεις!
+02:00=Ο %1 προτιμά να παίζει Wormux!
+02:00=Ο %1 σταμάταγε τις σφαίρες με τη φάτσα του!
+02:00=Ο %1 πήγε να συναντήσει τους προγόνους του!
+02:00=Ο %1 βρήκε τη θέση του στον παράδεισο!
+02:00=Ο %1 βρήκε τη θέση του στο Valhalla!
+02:00=Ο %1 βρήκε τη θέση του στο πάνθεον των ηρώων!
+02:00=Ο %1 εγκατέλειψε το κτήριο!
+02:00=Ο %1 εξαφανίστηκε σαν τους δεινόσαυρους!
+02:00=Ο %1 φέρνει τους σκαντζόχοιρους ένα βήμα κοντύτερα στην εξαφάνιση!
+02:00=Ο %1 με κάνει και συγκινούμαι...
+02:00=Ο %1 είναι ένας πρώην σκαντζόχοιρος τώρα πια!
+02:00=Ο %1 βλέπει τα ραδίκια ανάποδα!
+02:00=Ο %1 έπαψε να υφίσταται!
+02:00=Πραγματικά κρίμα %1!
+02:00=Δεν υπάρχει καμία ελπίδα για τον %1!
+02:00=Ας είναι ελαφρύ το χώμα που σκεπάζει τον %1...
+02:00=Ο %1 υποφέρει από το σύνδρομο της ανυπαρξίας!
+02:00=Ο %1 έγινε αλαφροΐσκιωτος!
+02:00=Ο %1 μας τέλειωσε!
+02:00=Ο %1 έληξε!
+02:00=%1... Αιωνία αυτού η μνήμη...
+02:00=Ο %1 αναπαύθηκε εν ειρήνη!
+02:00=Ο %1 έγινε δεκτός στην χορωδία των αγγέλων!
+02:00=Έχε γεια %1, μετά βίας σε γνωρίσαμε!
+02:00=Ο %1 έχει μικρή ανεκτικότητα στα χτυπήματα!
+02:00=Ο %1 θα μπορούσε κάλλιστα να χρησιμοποιούσε μια επιπλέον ζωή!
+02:00=Ένα γιατρό για τον %1!
+
+; Hog (%1) drowned
+02:01=Ο %1 κάνει το υποβρύχιο!
+02:01=Ο %1 μιμείται τον Τιτανικό!
+02:01=Ο %1 κολυμπάει σαν πέτρα!
+02:01=Ο %1 επιπλέει σαν τούβλο!
+02:01=Ο %1 πήγε να εξερευνήσει το βυθό!
+02:01=Ο %1 κάνει γαργάρες!
+02:01=Ο %1 ξέχασε τα μπρατσάκια του!
+02:01=Ο %1 θα μπορούσε κάλλιστα να είχε πάρει μαθήματα κολύμβησης!
+02:01=Ο %1 ξέχασε την ιστιοσανίδα του στο σπίτι!
+02:01=Ο %1 πήγε να πλυθεί!
+02:01=Ο %1 είναι ένας βρεγμένος σκαντζόχοιρος!
+02:01=Ο %1 ξέχασε να βάλει το σωσίβιό του!
+02:01=Ο %1 κοιμάται με τα ψάρια!
+02:01=Ο %1 πιστεύει ότι η φυσική του νερού είναι άθλια σε αυτό το παιχνίδι!
+02:01=Ο %1 μοιάζει διψασμένος...
+02:01=Η θάλασσα διεκδίκησε και πήρε τον %1...
+02:01=Ο %1 χάθηκε στη θάλασσα!
+02:01=Ο %1 έπρεπε να φέρει τη μάσκα του!
+02:01=Ο %1 έπρεπε να φέρει τα βατραχοπέδιλά του!
+02:01=Ο %1 έχει ταφή στη θάλασσα!
+02:01=Ο %1 βυθίστηκε στις σκέψεις του!
+02:01=Ο %1 κάνει προπόνηση στην ελεύθερη κατάδυση!
+02:01=Ο %1 κάνει προπόνηση στο ύπτιο!
+02:01=Ο %1 πάει να ψάξει για τον Τιτανικό!
+02:01=Ο %1 δεν είναι ο Μεσσίας αφού δεν περπατάει στο νερό!
+02:01=Ο %1 πάει να βρει το Nemo!
+02:01=Ο %1 έχει διαρροές!
+02:01=Σε κάνει να αναρωτιέσαι πόσοι σκαντζόχοιροι να βρίσκονται εκεί κάτω...
+02:01=Ο %1 αυξάνει ελαφρώς τη στάθμη της θάλασσας!
+02:01=Ο %1 δεν ήθελε να καταταγεί στο ναυτικό!
+02:01=Ο %1 μιμείται ένα νεκρό ψάρι!
+02:01=Τουλάχιστον δεν έπεσες στα σκ@τ@, %1!
+02:01=Ο %1 δεν έμαθε ποτέ να κολυμπάει!
+02:01=Ο %1 θέλει να παίξει τον Ecco το δελφίνι!
+02:01=Ο %1 θα προτιμούσε να είχε βράγχια!
+02:01=Ο %1 βρήκε την χαμένη πόλη της Ατλαντίδας!
+02:01=Ο %1 έγινε τροφή για τα ψάρια!
+02:01=Του %1 δεν του αρέσουν τα αθλήματα του νερού!
+02:01=Ο %1 έπρεπε να φέρει τη σχεδία του!
+02:01=Ο %1 πιστεύει ότι το θαλασσινό νερό κάνει καλό στο δέρμα!
+02:01=Ο %1 βάζει αλάτι στις πληγές του!
+02:01=Ο %1 πάει ταξίδι στην άβυσσο!
+02:01=Ο %1 άρχισε από νωρίς φέτος τα μπάνια στη θάλασσα!
+02:01=Ο %1 έγινε μούσκεμα!
+02:01=Ο %1 βράχηκε μέχρι το κόκκαλο!
+
+; Round starts
+02:02=Ας πολεμήσουμε!
+02:02=Οπλισμένος και έτοιμος!
+02:02=Ας ξεκινήσει το πάρτι!
+02:02=Ο τελευταίος όρθιος σκαντζόχοιρος κερδίζει!
+02:02=Πάμε!
+02:02=Ας ροκάρουμε!
+02:02=Ας τζαμάρουμε!
+02:02=Αρχίζει...
+02:02=Αυτή είναι η απαρχή κάτι μεγάλου...
+02:02=Καλώς ήλθατε στο Hedgewars!
+02:02=Καλώς ήλθατε στην πρώτη γραμμή!
+02:02=Συνέτριψε τους εχθρούς σου!
+02:02=Ας νικήσει ο καλύτερος σκαντζόχοιρος!
+02:02=Νίκη ή θάνατος!
+02:02=Τα λάφυρα πάνε στο νικητή!
+02:02=Η ήττα δεν είναι επιλογή!
+02:02=Σκορπίστε τον όλεθρο!
+02:02=Αφέθηκαν ελεύθεροι οι σκαντζόχοιροι του πολέμου!
+02:02=Hedgewars, σας προσφέρεται από το Hedgewars.org
+02:02=ΑΑΑΑΕΕΕΕΕΕΡΡΡΡΡΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑ.....
+02:02=Είσαι πολύ τυχερός αν δεν είσαι εναντίων του Tiyuri!
+02:02=Είσαι πολύ τυχερός αν δεν είσαι εναντίων του unC0Rr!
+02:02=Είσαι πολύ τυχερός αν δεν είσαι εναντίων του Nemo!
+02:02=Είσαι πολύ τυχερός αν δεν είσαι εναντίων του Smaxx!
+02:02=Είσαι πολύ τυχερός αν δεν είσαι εναντίων του Jessor!
+02:02=Δώσε όλο το είναι σου!
+02:02=Οι χαμένοι καθαρίζουν στο τέλος!
+02:02=Ας αρχίσει η μάχη της χιλιετίας!
+02:02=Ας αρχίσει η μάχη του αιώνα!
+02:02=Ας αρχίσει η μάχη της δεκαετίας!
+02:02=Ας αρχίσει η μάχη της χρονιάς!
+02:02=Ας αρχίσει η μάχη του μήνα!
+02:02=Ας αρχίσει η μάχη της εβδομάδας!
+02:02=Ας αρχίσει η μάχη της ημέρας!
+02:02=Ας αρχίσει η μάχη της ώρας!
+02:02=Δώσε τον καλύτερο εαυτό σου!
+02:02=Κατάστρεψε τον εχθρό!
+02:02=Καλή τύχη!
+02:02=Καλή διασκέδαση!
+02:02=Δώσε τον αγώνα τον καλό!
+02:02=Πάλεψε βρώμικα!
+02:02=Πάλεψε με τιμή!
+02:02=Μην τα παρατήσεις!
+02:02=Μην παραδοθείς ποτέ!
+02:02=Ρόκαρέ τους και σόκαρέ τους!
+02:02=Πάμε Πάμε Πάμε!
+02:02=Σκαντζόχοιροι προελάστε!
+02:02=Μην φοβάσαι, να είσαι ατρόμητος!
+02:02=Να είσαι γενναίος και να κατακτάς!
+
+; Round ends (win; unused atm)
+02:03=...
+
+; Round ends (draw; unused atm)
+02:04=...
+
+; New health crate
+02:05=Εισερχόμενη βοήθεια!
+02:05=Φαρμακάκι!
+02:05=Πρώτες βοήθειες από τον ουρανό!
+02:05=Ένα πακετάκι υγείας αποκλειστικά για σένα!
+02:05=Καλή υγεία... σε μορφή κουτιού!
+02:05=Μια ευγενική χορηγία του Δρ. Ζιβάγκο!
+02:05=Είναι εγκεκριμένο και από τον Ε.Ο.Φ.!
+02:05=Αυτό θα σε κάνει να νιώσεις καλύτερα!
+02:05=Μαγικός Ζωμός...! Ούπς! Λάθος παιχνίδι!
+02:05=Περιέχει σουπερμαντολίνη 100%!
+02:05=Άρπαξέ το όσο προλαβαίνεις!
+02:05=Ένα υγιεινό snack!
+02:05=Μια θεραπεία για τον πόνο!
+02:05=Περιέχει εκχύλισμα από το σπανάκι του Ποπάϊ!
+02:05=Κατεπείγουσα παράδοση!
+02:05=Προμήθειες!
+02:05=Όποιος πρόλαβε τον κύριο είδε!
+
+; New ammo crate
+02:06=Περισσότερα όπλα!
+02:06=Ενισχύσεις!
+02:06=Το κουτί της Πανδώρας!
+02:06=Αναρωτιέμαι τι όπλο να υπάρχει εκεί μέσα;
+02:06=Προμήθειες!
+02:06=Τι θα μπορούσε να κρύβεται μέσα;
+02:06=Οι γιορτές ήρθαν νωρίς στο Hedgewars!
+02:06=Ένα δώρο!
+02:06=Ειδική παράδοση!
+02:06=Ήταν σκέτος μπελάς να περάσει από το τελωνείο...
+02:06=Παιχνίδια μαζικής καταστροφής από τον ουρανό!
+02:06=Προσοχή! Ασταθές περιεχόμενο!
+02:06=Περισυνέλεξέ το ή ανατίναξέ το, εσύ αποφασίζεις!
+02:06=Εκρηκτικά αγαθά!
+02:06=Χμμμμμμ... πυρομαχικά εν' όψη!
+02:06=Ένα κουτί καταστρεπτικής δύναμης!
+02:06=Συστημένο!
+02:06=Οτιδήποτε μπορεί να περιέχει το κουτί, εκτός από πίτσα!
+02:06=Πιάσ'το!
+02:06=Επικείμενη ρίψη οπλισμού!
+02:06=Μην το αφήσεις να πέσει στα χέρια του εχθρού!
+02:06=Αστραφτερά νέα παιχνίδια!
+02:06=Ένα μυστηριώδες κουτί!
+
+; New utility crate
+02:07=Ώρα για μαστορέματα!
+02:07=Αυτό όλο και κάπου θα φανεί χρήσιμο...
+02:07=Βοηθήματα!
+02:07=Προσοχή! Δεν πωλείται στα καταστήματα!
+02:07=Απευθείας από το εργαστήρι του Κύρου Γρανάζη!
+02:07=Περισσότερα βοηθήματα!
+02:07=Εργαλεία για το λαό!
+02:07=Αυτό είναι καλό!
+02:07=Χρησιμοποίησέ το με φειδώ!
+02:07=Ωωωχ! Αυτό το κουτί είναι βαρύ!
+02:07=Μπορεί να σου χρησιμεύσει σε κάτι!
+
+; Hog (%1) skips his turn
+02:08=Ο %1 είναι τόσο βαρετός...
+02:08=Ο %1 βαριέται ασυστόλως!
+02:08=Ο %1 είναι ένας τεμπέλης σκαντζόχοιρος!
+02:08=Ο %1 είναι απερίσκεπτος!
+02:08=Ο %1 τα παράτησε!
+02:08=Τον %1 τον πήρε ο ύπνος...
+02:08=Ο %1 είναι ρίψασπις!
+02:08=Ο %1 ατιμωτικά χάνει τη σειρά του!
+02:08=Ο %1 είναι πραγματικά ξύστης!
+02:08=Ο %1 χρειάζεται λίγο παραπάνω ενθάρρυνση!
+02:08=Ο %1 είναι ειρηνιστής!
+02:08=Ο %1 κάνει την ανάπαυλά του!
+02:08=Ο %1 ξεκουράζεται!
+02:08=Ο %1 κρατάει δυνάμεις για μετά!
+02:08=Ο %1 χαλαρώνει!
+02:08=Ο %1 δεν πιστεύει στις ικανότητές του!
+02:08=Ο %1 αποφασίζει να μην κάνει τίποτα απολύτως!
+02:08=Ο %1 αφήνει τον εχθρό να αυτοκαταστραφεί!
+02:08=Ο %1 θα ήταν άθλιος στα πάρτι!
+02:08=Ο %1 κάνει απόκρυψη!
+02:08=Ο %1 αποφάσισε να αφήσει την ευκαιρία ανεκμετάλλευτη!
+02:08=Ο %1 αποφάσισε πως το καλύτερο που έχει να κάνει είναι... να μην κάνει τίποτα!
+02:08=Ο %1 είναι μεγάλη κωλώστρα!
+02:08=Ο %1 είναι κότα!
+02:08=Ο %1 έχασε το χρώμα του!
+02:08=Ο %1 είναι δειλός!
+02:08=Ο %1 περιμένει τον Ξαφνικό Θάνατο!
+02:08=Ο %1 δεν είναι ο τύπος του αγωνιστή!
+02:08=Ο %1 επανεξετάζει τον σκοπό της ζωής του!
+02:08=Ο %1 δεν ήταν ποτέ του εύστοχος ούτως ή άλλως...
+02:08=Ο %1 δεν ήθελε να καταταγεί στο στρατό, εδώ που τα λέμε!
+02:08=Σταμάτα να σπαταλάς το χρόνο μας, %1...
+02:08=Είμαι πολύ απογοητευμένος από σένα, %1...
+02:08=Έλα, μπορείς περισσότερα από αυτό %1...
+02:08=Το φρόνημα του %1 έχει τσακίσει για τα καλά!
+02:08=Ο %1 προφανώς έχει καλύτερα πράγματα να κάνει!
+02:08=Ο %1 έχει κλάσει μέντες!
+02:08=Ο %1 αποκοιμήθηκε!
+
+; Hog (%1) hurts himself only
+02:09=Ο %1 πρέπει να εξασκηθεί στην σκοποβολή!
+02:09=Ο %1 φαίνεται να έχει αυτοκτονικές τάσεις!
+02:09=Ο %1 πολεμάει στην λάθος πλευρά!
+02:09=Ο %1 είναι emo!
+02:09=Ο %1 κρατούσε το όπλο του ανάποδα!
+02:09=Ο %1 είναι μαζόχας!
+02:09=Ο %1 δεν έχει το ένστικτο της αυτοσυντήρησης!
+02:09=Ο %1 τα έκανε σαλάτα!
+02:09=Ο %1 τα σκάτωσε!
+02:09=Αυτή ήταν βολή γιωτά, %1!
+02:09=Ο %1 είναι λιγάκι απρόσεκτος με επικίνδυνα όπλα!
+02:09=Ο %1 πρέπει να σκεφτεί να αλλάξει καριέρα!
+02:09=Η χειρότερη βολή. Όλων των εποχών!
+02:09=Όχι %1,το κάνεις λάθος... Σημαδεύεις τον Ε-Χ-Θ-Ρ-Ο!
+02:09=Ο %1 θα έπρεπε να καταστρέφει μόνο τον εχθρό!
+02:09=Ο %1 κινείται ένα βήμα κοντύτερα στην αυτοκτονία.
+02:09=Ο %1 βοηθάει τον εχθρό!
+02:09=Αυτό ήταν χαζό %1!
+02:09=Το ρητό του %1 είναι : "Τα αγαθά κόποις κτώνται"!
+02:09=Ο %1 είναι μπερδεμένος!
+02:09=Ο %1 αυτοτραυματίστηκε πάνω στη σύγχυσή του!
+02:09=Ο %1 έχει την ικανότητα να γελοιοποιείται!
+02:09=Ο %1 είναι γκαντέμης!
+02:09=Ο %1 είναι ατζαμής!
+02:09=Ο %1 είναι άτσαλος!
+02:09=Ο %1 είναι αδέξιος!
+02:09=Ο %1 είναι γιωτάς!
+02:09=Ο %1 είναι γιωτόμπαλο!
+02:09=Ο %1 δείχνει στον εχθρό τις ικανότητες του!
+02:09=Ο %1 δεν μπορεί να είναι τέλειος κάθε στιγμή!
+02:09=Μην ανησυχείς %1, κανείς δεν είναι άσφαλτος!
+02:09=Ο %1 το έκανε αυτό εσκεμμένως!
+02:09=Ο %1 το έκανε αυτό επίτηδες!
+02:09=Ο %1 το έκανε αυτό εξεπίτηδες!
+02:09=Μην ανησυχείς, δε θα το πω πουθενά %1...
+02:09=Τι ντροπή!
+02:09=Είμαι σίγουρος πως αυτό δεν το είδε κανείς %1!
+02:09=Ο %1 πρέπει να ξαναδιαβάσει το εγκόλπιο του μαχητή!
+02:09=Του %1 το όπλο δυσλειτούργησε!
+
+; Hog shot an home run (using the bat and another hog)
+02:10=Μπήκε σε τροχιά!
+02:10=Εκτοξεύτηκε στο διάστημα...
+02:10=Στο άπειρο κι ακόμα παραπέρα!
+
+; Hog (%1) has to leave (team is gone)
+02:11=Ο %1 πρέπει να πάει για ύπνο!
+02:11=Ο %1 μοιάζει πολυάσχολος για να παίξει!
+02:11=Διακτίνησε τον %1, Σποκ!
+02:11=Ο %1 πρέπει να πηγαίνει!
+02:11=Ο %1 ξέχασε το θερμοσίφωνο αναμμένο!
+02:11=Ο %1 ξέχασε το φούρνο αναμμένο!
+
+; Weapon Categories
+03:00=Χειροβομβίδα με χρονοδιακόπτη
+03:01=Χειροβομβίδα με χρονοδιακόπτη
+03:02=Βαλλιστικό Όπλο
+03:03=Καθοδηγούμενο Όπλο
+03:04=Περίστροφο (πολλαπλές βολές)
+03:05=Σκαπτικό Εργαλείο
+03:06=Δράση (ναι... καλά!)
+03:07=Βοήθημα Μεταφοράς
+03:08=Βόμβα Εγγύτητας
+03:09=Περίστροφο (πολλαπλές βολές)
+03:10=ΜΠΟΥΜ!
+03:11=Μπονκ!
+03:12=Πολεμικές Τέχνες
+03:13=UNUSED
+03:14=Βοήθημα Μεταφοράς
+03:15=Αεροπορική Επιδρομή
+03:16=Αεροπορική Επιδρομή
+03:17=Σκαπτικό Εργαλείο
+03:18=Βοήθημα
+03:19=Βοήθημα Μεταφοράς
+03:20=Δράση
+03:21=Βαλλιστικό Όπλο
+03:22=Φώναζέ με Ιντιάνα!
+03:23=(Χωρίς Πλάκα) Πολεμικές Τέχνες
+03:24=Τούρτα 0% λιπαρά με όλη τη γεύση!
+03:25=Στολή
+03:26=Ζουμερή Χειροβομβίδα
+03:27=Πύρινη χειροβομβίδα
+03:28=Βαλλιστικό Όπλο
+03:29=Βαλλιστικό Όπλο
+03:30=Αεροπορική Επιδρομή
+03:31=Τηλεχειριζόμενη Βόμβα
+03:32=Προσωρινό Φαινόμενο
+03:33=Προσωρινό Φαινόμενο
+03:34=Προσωρινό Φαινόμενο
+03:35=Προσωρινό Φαινόμενο
+03:36=Προσωρινό Φαινόμενο
+03:37=Προσωρινό Φαινόμενο
+03:38=Περίστροφο (πολλαπλές βολές)
+03:39=Βοήθημα Μεταφοράς
+03:40=Αποτεφρωτική Χειροβομβίδα
+03:41=Θα ζήσω ελεύθερο πουλί...
+03:42=Η φυσική μπορεί να γίνει πολύ διασκεδαστική...
+03:43=Εκτελώντας την φονική συμφωνία του Μπετόβεν
+03:44=Ανάλωση κατά προτίμηση πριν από το 1923
+03:45=Η δύναμη της επιστήμης
+03:46=Το υγρόν πύρ!
+03:47=Κόλλα τες κάπου χρήσιμα!
+03:48=Ήρθε η ώρα του σφυριού!
+03:49=Πάντες οι εν τοις μνημείοις, εκπορεύσονται...
+
+; Weapon Descriptions (use | as line breaks)
+04:00=Κάντε επίθεση τους εχθρούς σας χρησιμοποιώντας μια απλή|χειροβομβίδα. Θα εκραγεί μόλις το χρονόμετρο τερματίσει.|1-5: Θέστε το χρονόμετρο της χειροβομβίδας.|Επίθεση : Κρατήστε πατημένο για μακρύτερη βολή.
+04:01=Κάντε επίθεση στους εχθρούς σας χρησιμοποιώντας μια|χειροβομβίδα διασποράς. Θα διαρραγεί σε μικρότερες|βόμβες μόλις το χρονόμετρό της τερματίσει.|1-5: Θέστε το χρονόμετρο της χειροβομβίδας.|Επίθεση : Κρατήστε πατημένο για μακρύτερη βολή.
+04:02=Κάντε επίθεση στους εχθρούς σας χρησιμοποιώντας ένα|βαλλιστικό βλήμα το οποίο επηρεάζεται από τον άνεμο.|Επίθεση : Κρατήστε πατημένο για μακρύτερη βολή.
+04:03=Εκτοξεύστε μια εκρηκτική μέλισσα η οποία θα "κλειδώσει"|στον επιλεγμένο στόχο. Αν δεν πυροδοτήσετε με πλήρη|ισχύ θα βελτιώσετε την ακρίβεια του όπλου.|Δείκτης ποντικιού : Επιλογή στόχου.|Επίθεση : Κρατήστε πατημένο για ισχυρότερη βολή.
+04:04=Κάντε επίθεση στους εχθρούς σας χρησιμοποιώντας μια|καραμπίνα με δύο σφαίρες. Χάρη στην ισχύ της δεν χρειάζεστε|απευθείας χτυπήματα για να βλάψετε τους αντιπάλους σας.|Επίθεση : Πυροβολήστε (δις).
+04:05=Κινηθείτε υπογείως! Χρησιμοποιήστε το Κρουστικό Δράπανο για να σκάψετε|μια σήραγγα στο έδαφος και να φτάσετε απρόσιτες περιοχές.|Επίθεση : Ξεκινήστε ή σταματήστε το σκάψιμο.
+04:06=Βαρεθήκατε; Δεν υπάρχει τρόπος να επιτεθείτε; Κάνετε οικονομία στα|πυρομαχικά; Κανένα πρόβλημα! Απλώς παραχωρήστε τη σειρά σας, δειλέ!|(Σημ. Μετ.) : Προέρχεται από ομηρική φράση (Ιλιάδα Σ 104) όπου ο Αχιλλέας|απευθυνόμενος στη μητέρα του Θέτιδα αποκαλεί τον εαυτό του «άχθος|αρούρης» (βάρος της γης) μετά από μεγάλο διάστημα απραξίας και|αποχής από τη μάχη.)|Επίθεση : Παραχωρήστε τη σειρά σας χωρίς μάχη.
+04:07=Γεφυρώστε μεγάλες αποστάσεις χρησιμοποιώντας το σχοινί.|Χρησιμοποιήστε την ορμή σας για να γλιστρήσετε πάνω σε άλλους|σκαντζόχοιρους ή ρίξτε χειροβομβίδες και άλλα όπλα πάνω τους.|Επίθεση : Εκτοξεύστε ή αφήστε το σχοινί.|Άλμα εις Μήκος : Ρίξτε χειροβομβίδες ή άλλα συναφή όπλα.
+04:08=Κρατήστε τους εχθρούς σας μακρυά αφήνοντας μια νάρκη|σε στενά περάσματα ή ακριβώς κάτω από τα πόδια τους.|Φροντίστε όμως να οπισθοχωρήσετε σε ασφαλή απόσταση|πριν αυτή ενεργοποιηθεί πάνω σας!|Επίθεση : Ρίξτε τη νάρκη δίπλα στα πόδια σας.
+04:09=Δεν είστε σίγουροι για το σημάδι σας; Χρησιμοποιήστε το Desert Eagle|για να επιτεθείτε χρησιμοποιώντας μέχρι και τέσσερις πυροβολισμούς.|Επίθεση : Πυροβολήστε (τετράκις).
+04:10=Η ωμή δύναμη είναι πάντα στις επιλογές σας. Ρίξτε αυτό το κλασσικό|εκρηκτικό δίπλα στους εχθρούς σας και οπισθοχωρήστε.|Επίθεση : Ρίξτε το δυναμίτη δίπλα στα πόδια σας.
+04:11=Ξεφορτωθείτε τους αντίπαλους σκαντζόχοιρους εκτοξεύοντάς τους|έξω από τα σύνορα του χάρτη ή κατευθείαν στο νερό. Ή τι θα λέγατε|να κλοτσούσατε πάνω στους "φίλους" σας μερικές νάρκες;|Επίθεση : Χτυπήστε ότι βρίσκεται μπροστά σας.
+04:12=Πάρτε το προσωπικά και πλησιάστε τον αντίπαλό σας|για να απελευθερώσετε την δύναμη αυτής της παρολίγον|θανάσιμης τεχνικής των πολεμικών τεχνών.|Επίθεση : Εκτελέστε την Fire Punch.
+04:13=UNUSED
+04:14=Φοβάστε τα ύψη; Καλύτερα χρησιμοποιήστε ένα αλεξίπτωτο.|Θα ξεδιπλωθεί μόλις πέσετε αρκετά χαμηλά και θα σώσει το|σκαντζόχοιρό σας από το να πάθει ζημιά λόγω της πτώσης.|Επίθεση : Ξεδιπλώστε το αλεξίπτωτο.|Άλμα εις Μήκος: Ρίξτε χειροβομβίδες ή άλλα συναφή όπλα.
+04:15=Καλέστε ένα αεροσκάφος να επιτεθεί στους εχθρούς σας|χρησιμοποιώντας βόμβες αέρος-εδάφους.|Αριστερά/Δεξιά : Καθορίστε την κατεύθυνση της αεροπορικής επίθεσης.|Δείκτης ποντικιού : Επιλέξτε την ζώνη ρίψης.
+04:16=Καλέστε ένα αεροσκάφος να ρίξει αρκετές νάρκες προς τον στόχο.|Αριστερά/Δεξιά : Καθορίστε την κατεύθυνση της αεροπορικής επίθεσης.|Δείκτης ποντικιού : Επιλέξτε την ζώνη ρίψης.
+04:17=Χρειάζεστε καταφύγιο; Χρησιμοποιήστε το καμινέτο για να σκάψετε|μια σήραγγα σε στερεό έδαφος με σκοπό την κάλυψη/απόκρυψη.|Επίθεση : Ξεκινήστε ή σταματήστε το σκάψιμο.
+04:18=Χρειάζεστε επιπρόσθετη προστασία ή επιθυμείτε να διασχίσετε|απροσπέλαστα εδάφη; Τοποθετήστε μερικές δοκούς όπως εσείς|επιθυμείτε.|Αριστερά/Δεξιά : Επιλέξτε την δοκό που θα τοποθετηθεί.|Δείκτης ποντικιού : Τοποθετήστε την δοκό σε έγκυρη θέση.
+04:19=Αν χρησιμοποιηθεί την κατάλληλη στιγμή, η τηλεμεταφορά|μπορεί να είναι ισχυρότερη από σχεδόν όλα τα άλλα όπλα|καθώς σας επιτρέπει να διασώζετε σκαντζόχοιρους από|επικίνδυνες καταστάσεις μέσα σε μερικά δευτερόλεπτα.|Δείκτης ποντικιού : Επιλέξτε την περιοχή του στόχου.
+04:20=Σας επιτρέπει να παίξετε την τρέχουσα σειρά με ένα άλλο σκαντζόχοιρο.|Επίθεση : Ενεργοποιήστε την αλλαγή σειράς παιξίματος των σκαντζόχοιρων.
+04:21=Ρίξτε ένα βαλλιστικό βλήμα που μοιάζει με πύραυλο το οποίο|κατά την πρόσκρουση θα απελευθερώσει πολλαπλές βόμβες.|Επίθεση : Εκτόξευση με πλήρη ισχύ.
+04:22=Δεν είναι αποκλειστικότητα μόνο του Indiana Jones!|Το μαστίγιο είναι ένα χρήσιμο όπλο σε πολλές περιστάσεις.|Ιδιαιτέρως όταν θα θέλατε να σπρώξετε κάποιον σε ένα γκρεμό.|Επίθεση : Χτυπήστε οτιδήποτε βρίσκεται μπροστά σας.
+04:23=Εάν δεν έχετε τίποτα να χάσετε, αυτό μπορεί να είναι πολύ|χρήσιμο. Θυσιάστε τον σκαντζόχοιρό σας, εκτοξεύοντάς|τον σε μια καθορισμένη κατεύθυνση χτυπώντας ότι|βρεθεί στο δρόμο του, σκάζοντας στο τέλος.|Επίθεση : Ξεκινήστε την καταστροφική και θανάσιμη επίθεση.
+04:24=Χρόνια Πολλά! Θέστε σε λειτουργία την τούρτα, αφήστε την να|περπατήσει μέχρι να φτάσει ακριβώς δίπλα από τους αντιπάλους σας|και αφιερώστε τους ένα εκρηκτικό πάρτι. Η τούρτα είναι ικανή να|διασχίσει σχεδόν όλα τα εμπόδια αλλά μπορεί να εκραγεί νωρίτερα|κατ' αυτόν τον τρόπο.|Επίθεση : Ξεκινήστε την τούρτα, η οποία θα εκραγεί μόλις λήξει το|χρονόμετρο ή σταματήστε τη για να εκραγεί στην τρέχουσα θέση.
+04:25=Χρησιμοποιήστε αυτή τη στολή μεταμφίεσης για|να αναγκάσετε τους αντιπάλους σας να πηδήξουν|προς τον σκαντζόχοιρό σας (και να πέσουν σε κάποιο|κενό ή τρύπα).|Επίθεση : Χρησιμοποιήστε τη στολή και προσπαθήστε|να αποπλανήσετε κάποιον άλλο σκαντζόχοιρο.
+04:26=Εκτοξεύστε αυτό το ζουμερό καρπούζι στους εχθρούς σας.|Όταν το χρονόμετρο τερματίσει, θα διαρραγεί σε αρκετά|εκρηκτικά κομμάτια.|1-5: Θέστε το χρονόμετρο.|Επίθεση : Κρατήστε πατημένο για μακρύτερη βολή.
+04:27=Το πυρ της κολάσεως θα λούσει τους αντιπάλους σας χρησιμοποιώντας|αυτό το πύρινο εκρηκτικό. Μην πλησιάσετε πολύ στην έκρηξη καθώς|οι μικρότερες φωτιές ενδέχεται να διαρκέσουν περισσότερο.|Επίθεση : Κρατήστε πατημένο για περισσότερη ισχύ.
+04:28=Μόλις αυτός ο πύραυλος αγγίξει το στερεό έδαφος θα|ξεκινήσει το σκάψιμο και θα εκραγεί μόλις το φιτίλι του|καεί ή αναδυθεί από το έδαφος σε αέρα ξανά.|Επίθεση : Κρατήστε πατημένο για περισσότερη ισχύ.
+04:29=Αυτό το όπλο δεν βγάζει καραμέλες για μικρά παιδιά!|Ο εκτοξευτής χρωμοσφαιρίδιων εκτοξεύει πολλές|μικρές χρωματιστές σφαίρες με εκρηκτική γόμωση.|Επίθεση : Εκτόξευση με πλήρη ισχύ.|Πάνω/Κάτω : Ρύθμιση στοχεύσεως.
+04:30=Καλέστε ένα αεροσκάφος να επιτεθεί με μια πανίσχυρη βόμβα Ναπάλμ.|Με κατάλληλη στόχευση το όπλο αυτό μπορεί να εξαλείψει τεράστια|κομμάτια του τοπίου συμπεριλαμβανομένων και κάποιων άτυχων|σκαντζόχοιρων οι οποίοι θα έχουν την ατυχία να βρεθούν στο διάβα του.|Αριστερά/Δεξιά : Καθορίστε την κατεύθυνση της αεροπορικής επίθεσης.|Δείκτης ποντικιού : Επιλέξτε την ζώνη ρίψης.
+04:31=Το τηλεκατευθυνόμενο είναι το ιδανικό όπλο για να περισυλλέξετε|κιβώτια ή να επιτεθείτε σε απομακρυσμένους σκαντζόχοιρους.|Είτε οδηγήστε το κατευθείαν πάνω στους εχθρούς σας ή ρίξτε|μερικές βόμβες πρώτα.|Επίθεση : Εκτοξεύστε το τηλεκατευθυνόμενο ή ρίξτε βόμβες.|Άλμα εις μήκος : Οι Βαλκυρίες θα σας συνοδέψουν στη μάχη!|Πάνω/Κάτω : Κατευθύνετε το τηλεκατευθυνόμενο.
+04:32=Η μικροβαρύτητα είναι πιο αποτελεσματική από οποιαδήποτε|δίαιτα! Πηδήξτε ψηλότερα και μακρύτερα ή κάντε τους εχθρούς|σας να εκτοξευτούν ακόμα μακρύτερα.|Επίθεση : Ενεργοποίηση μικροβαρύτητας.
+04:33=Μερικές φορές χρειάζεστε αυτή τη λίγη επιπρόσθετη ώθηση|για να προκαλέσετε λίγο παραπάνω ζημιά.|Επίθεση : Ενεργοποίηση επιπρόσθετης ζημιάς.
+04:34=Μια ενεργειακή ασπίδα κατευθείαν από το εργαστήριο του Nikola Tesla!|Επίθεση : Ενεργοποίηση ασπίδας.
+04:35=Μερικές φορές ο χρόνος κυλάει πολύ γρήγορα. Κερδίστε μερικά|επιπρόσθετα δευτερόλεπτα για να τελειώσετε την επίθεσή σας.|Επίθεση : Ενεργοποίηση επιπρόσθετου χρόνου.
+04:36=Ας το παραδεχτούμε, μερικές φορές είστε απλώς τόσο κακός στην στόχευση.|Λάβετε λίγη βοήθεια χρησιμοποιώντας νεωτεριστική τεχνολογία αιχμής.|Επίθεση : Ενεργοποίηση διόπτρας.
+04:37=Μην φοβάστε το φως της αυγής! Θα κρατήσει μονάχα για όσο|διαρκεί η σειρά σας αλλά θα σας επιτρέψει να απορροφήσετε|ως υγεία, την ζημιά που προκαλείτε στους αντιπάλους σας.|Επίθεση : Ενεργοποίηση βαμπιρισμού.
+04:38=Το τυφέκιο του ελεύθερου σκοπευτή μπορεί να γίνει το πιο|καταστρεπτικό όπλο στο οπλοστάσιό σας, ωστόσο είναι πολύ|αναποτελεσματικό σε κοντινές αποστάσεις. Η ζημιά η οποία|προκαλείται αυξάνει με την απόσταση από το στόχο.|Επίθεση : Πυροβολήστε (δις).
+04:39=Πετάξτε σε άλλα μέρη του χάρτη χρησιμοποιώντας τον ιπτάμενο|δίσκο. Αυτό το δύσκολο στο χειρισμό βοήθημα είναι ικανό να|σας μεταφέρει σχεδόν σε κάθε θέση του πεδίου μάχης.|Επίθεση : Ενεργοποίηση ιπτάμενου δίσκου|Πάνω/Αριστερά/Δεξιά : Εφαρμόστε δύναμη προς μια κατεύθυνση.|Άλμα εις μήκος : Ρίξτε χειροβομβίδες ή άλλα συναφή όπλα.
+04:40=Βάλτε φωτιά χρησιμοποιώντας αυτή τη φιάλη|η οποία είναι γεμάτη με εύφλεκτο υγρό.|Επίθεση : Κρατήστε πατημένο για ισχυρότερη βολή.
+04:41=Το πτηνό μπορεί να κουβαλήσει τον σκαντζόχοιρό σας|και να ρίξει αυγά καταπάνω στους εχθρούς σας!|Επίθεση : Ενεργοποιήστε το πτηνό και ρίξτε αυγά.|Πάνω/Αριστερά/Δεξιά : Φτερουγίστε προς μια κατεύθυνση.
+04:42=Αυτή η φορητή σκουληκότρυπα είναι ικανή να μεταφέρει|ακαριαία εσάς, τους εχθρούς σας, ή τον οπλισμό σας|μεταξύ δύο σημείων της πίστας. Χρησιμοποιήστε τη με|σύνεση και θα έχετε τεράστια επιτυχία!|Επίθεση : Εκτοξεύστε μια σκουληκότρυπα.|Εναλλαγή : Εναλλάξτε τα χρώματα της σκουληκότρυπας.
+04:43=Κάντε την πρώτη σας μουσική εμφάνιση μια εκρηκτική επιτυχία!|Ρίξτε ένα πιάνο από τα ουράνια, αλλά προσοχή...|κάποιος πρέπει να το παίζει, και αυτό θα σας στοιχίσει τη ζωή σας!|Δείκτης ποντικιού : Επιλογή στόχου.|F1-F9 : Παίξτε το πιάνο.
+04:44=Αυτό δεν είναι απλώς ένα κομμάτι τυρί, είναι βιολογικός|πόλεμος! Η έκρηξη δεν θα προκαλέσει μεγάλη ζημιά αλλά|σαφώς θα δηλητηριάσει οποιονδήποτε άτυχο σκαντζόχοιρο|βρεθεί στην πορεία του βρωμερού σύννεφου!|1-5 : Θέστε το χρονόμετρο.|Επίθεση : Κρατήστε πατημένο για ισχυρότερη βολή.
+04:45=Όλα τα φροντιστήρια φυσικής που κάνατε, τελικά απέδωσαν καρπούς.|Ρίξτε ένα καταστρεπτικό ημιτονοειδές κύμα στους αντιπάλους σας.|Η δύναμη των σολιτονίων είναι στα χέρια σας! Προσοχή όμως!|Αυτό το όπλο έχει τρομερή κλωτσιά.(Το όπλο αυτό είναι ημιτελές).|Επίθεση : Πυροβολήστε.
+04:46=Καλύψτε τους εχθρούς σας με τσιτσιριστή υγρή φλόγα.|Σίγουρα σπάει τον "πάγο" της αποξένωσης!|Επίθεση : Ενεργοποίηση φλογοβόλου.|Πάνω/Κάτω : Ρύθμιση στοχεύσεως.|Αριστερά/Δεξιά : Ρύθμιση ισχύος εκροής.
+04:47=Διπλάσια διασκέδαση με δύο αγκαθωτές, ύπουλες, κολλώδης νάρκες.|Θέστε μια αλυσιδωτή αντίδραση ή υπερασπιστείτε τον εαυτό σας|(ή και τα δύο!).|Επίθεση : Κρατήστε πατημένο για μακρύτερη βολή (δις).
+04:48=Γιατί πρέπει μόνο οι κατσαρίδες να δέχονται όλη την κακομεταχείριση;|Χτυπώντας ένα σκαντζόχοιρο μπορεί να είναι εξίσου διασκεδαστικό!|Ένα καλό χτύπημα από αυτό το σφυρί θα αφαιρέσει το ένα τρίτο|από την υγεία του σκαντζόχοιρου και θα τον βυθίσει υπογείως.|Επίθεση : Ενεργοποίηση σφυριού.
+04:49=Αναστήστε τους φίλους σας! Προσέξτε όμως ότι μπορεί να αναστήσει|επίσης και τους εχθρούς σας.|Επίθεση : Κρατήστε πατημένο το πλήκτρο επιθέσεως για αργή νεκρανάσταση.|Πάνω : Επιταχύνετε τη νεκρανάσταση.
+
+; Game goal strings
+05:00=Κανόνες Παιχνιδιού
+05:01=Ισχύουν οι ακόλουθοι κανόνες :
+05:02=Φρούρια : Υπερασπιστείτε το φρούριό σας, συντρίψτε τους εχθρούς σας!
+05:03=Μικροβαρύτητα : Προσέξτε πού πατάτε!
+05:04=Ασπίδα: Οι σκαντζόχοιροι είναι (σχεδόν) άτρωτοι.
+05:05=Βαμπιρισμός : Οι σκαντζόχοιροι θα γιατρεύονται από την προκαλούμενη ζημιά.
+05:06=Μοίρα : Οι σκαντζόχοιροι θα πλήττονται εξίσου για την προκαλούμενη ζημιά.
+05:07=Προστασία του Βασιλιά : Μην αφήσετε τον βασιλιά σας να πεθάνει!|Τοποθετήστε το βασιλιά : Διαλέξτε ένα προστατευόμενο σημείο εκκίνησης για το βασιλιά σας.
+05:08=Τοποθέτηση Σκαντζόχοιρων : Τοποθετήστε τους σκαντζόχοιρους πριν ξεκινήσει το παιχνίδι.
+05:09=Πυροβολικό: Οι σκαντζόχοιροι δεν μπορούν να προχωρήσουν για να αλλάξουν θέση.
+05:10=Άφθαρτο Έδαφος : Τα περισσότερα όπλα δεν θα καταστρέψουν το έδαφος.
+05:11=Κοινά Πυρομαχικά : Όλες οι ομάδες του ιδίου χρώματος μοιράζονται τα πυρομαχικά τους.
+05:12=Χρονισμός Ναρκών : Οι νάρκες θα εκρήγνυνται μετά από %1 δευτερόλεπτο/α.
+05:13=Χρονισμός Ναρκών : Οι νάρκες θα εκρήγνυνται ακαριαία.
+05:14=Χρονισμός Ναρκών : Οι νάρκες θα εκρήγνυνται μετά από 0 - 5 δευτερόλεπτα.
+05:15=Τροποποιητής Ζημιάς: Όλα τα όπλα θα προκαλούν %1% ζημιά.
+05:16=Η υγεία όλων των σκαντζόχοιρων επαναφέρεται στην αρχική της τιμή στο τέλος κάθε γύρου.
+05:17=Οι ελεγχόμενοι από τον υπολογιστή σκαντζόχοιροι επανεμφανίζονται όταν πεθάνουν.
+05:18=Αμέτρητες Επιθέσεις.
+05:19=Τα όπλα επαναφέρονται στο τέλος κάθε γύρου.
+05:20=Τα όπλα δεν χρησιμοποιούνται από κοινού από τους σκαντζόχοιρους.
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Locale/en.txt
--- a/share/hedgewars/Data/Locale/en.txt Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Locale/en.txt Tue Feb 01 00:18:25 2011 +0100
@@ -12,7 +12,7 @@
00:09=Desert Eagle
00:10=Dynamite
00:11=Baseball Bat
-00:12=Fire Punch
+00:12=Shoryuken
00:13=sec
00:14=Parachute
00:15=Air Attack
@@ -52,6 +52,9 @@
00:49=Resurrector
00:50=Drill Strike
00:51=Mudball
+00:52=No weapon selected
+00:53=TARDIS
+00:54=Structure
01:00=Let's fight!
01:01=Round draw
@@ -434,6 +437,10 @@
03:48=It's Hammer time!
03:49=Does what you guess
03:50=Moles fan
+03:51=Found on the ground
+03:52=UNUSED
+03:53=Type 40
+03:54=Build something
; Weapon Descriptions (use | as line breaks)
04:00=Attack your enemies using a simple grenade.|It will explode once its timer reaches zero.|1-5: Set grenade's timer|Attack: Hold to throw with more power
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Locale/es.lua
--- a/share/hedgewars/Data/Locale/es.lua Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Locale/es.lua Tue Feb 01 00:18:25 2011 +0100
@@ -52,8 +52,7 @@
["Listen up, maggot!!"] = "¡Atento, escoria!",
-- ["|- Mines Time:"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
["MISSION FAILED"] = "MISIÓN FALLIDA", -- User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
- ["MISSION SUCCESSFUL"] = "MISIÓN COMPLETADA", -- User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
- ["MISSION SUCCESS"] = "MISIÓN COMPLETADA", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
+ ["MISSION SUCCESSFUL"] = "MISIÓN COMPLETADA", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
["NEW fastest lap: "] = "NUEVA vuelta rápida: ",
["NO JUMPING"] = "PROHIBIDO SALTAR",
["Not So Friendly Match"] = "Partido no-tan-amistoso", -- Basketball, Knockball
@@ -62,6 +61,7 @@
["Operation Diver"] = "Buzo",
["Opposing Team: "] = "Equipo enemigo: ",
["Pathetic Hog #%d"] = "Erizo patético #%d",
+-- ["points"] = "", -- Control, CTF_Blizzard, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle
["Poison"] = "Veneno",
["Random Weapons"] = "Armas aleatorias",
[" - Return the enemy flag to your base to score | - First team to 3 captures wins | - You may only score when your flag is in your base | - Hogs will drop the flag if killed, or drowned | - Dropped flags may be returned or recaptured | - Hogs respawn when killed"] = "- Vuelve a tu base con la bandera enemiga para anotar un punto | - El equipo que anote 3 puntos gana | - Sólo se puede anotar si tu propia bandera está en tu base | - Los erizos resucitan cuando mueren",
@@ -87,10 +87,9 @@
["T_T"] = "T_T",
["Unit 3378"] = "Unidad 3378",
["Use your rope to get from start to finish as fast as you can!"] = "¡Usa tu cuerda para llegar a la salida lo más rápido que puedas!",
- ["Victory for the"] = "La victoria es para",
+ ["Victory for the "] = "La victoria es para", -- CTF_Blizzard, Capture_the_Flag
["You have SCORED!!"] = "¡Has anotado!",
["You've failed. Try again."] = "Has fracasado. Inténtalo de nuevo.",
["You've reached the goal!| |Time: "] = "¡Has llegado a la meta!| |Tiempo: ",
- ["You've reached the goal!| |Time:"] = "¡Has llegado a la meta!| |Tiempo:",
["'Zooka Team"] = "Bazuqueros",
}
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Locale/es.txt
--- a/share/hedgewars/Data/Locale/es.txt Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Locale/es.txt Tue Feb 01 00:18:25 2011 +0100
@@ -13,7 +13,7 @@
00:09=Desert Eagle
00:10=Dinamita
00:11=Bate de béisbol
-00:12=Puño de fuego
+00:12=Shoryuken
00:13=seg.
00:14=Paracaídas
00:15=Bombardeo aéreo
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Locale/fi.txt
--- a/share/hedgewars/Data/Locale/fi.txt Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Locale/fi.txt Tue Feb 01 00:18:25 2011 +0100
@@ -12,7 +12,7 @@
00:09=DEagle
00:10=Dynamiitti
00:11=Pesäpallomaila
-00:12=Fire Punch
+00:12=Shoryuken
00:13=sek
00:14=Laskuvarjo
00:15=Ilmaisku
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Locale/fr.lua
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/share/hedgewars/Data/Locale/fr.lua Tue Feb 01 00:18:25 2011 +0100
@@ -0,0 +1,94 @@
+locale = {
+-- [":("] = "",
+-- ["!!!"] = "",
+ ["A game of luck"] = "Un jeu de chance",
+ ["Aiming Practice"] = "Entrainement de tir", --Bazooka, Shotgun, SniperRifle
+ ["Bat balls at your enemies and|push them into the sea!"] = "Frappez vos ennemis à la batte|et envoyez-les à la mer !",
+ ["Bat your opponents through the|baskets and out of the map!"] = "Frappez vos ennemis à la batte|, marquez des paniers ou envoyez-les à la mer !",
+ ["Bazooka Training"] = "Entrainement au Bazooka",
+ ["Best laps per team: "] = "Meilleur temps par équipe",
+ ["Bloody Rookies"] = "Nouvelles recrues", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree
+-- ["Boom!"] = "",
+ ["by mikade"] = "par mikade", -- Control, User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork, Capture_the_Flag
+ ["CAPTURE THE FLAG"] = "Capturez le drapeau !",
+ ["Codename: Teamwork"] = "Nom de code : Travail d'équipe",
+ ["Congratulations!"] = "Félicitations !",
+ ["Congratulations! You've eliminated all targets|within the allowed time frame."] = "Félicitations ! Vous avez éliminé toutes les cibles|pendant le temps alloué.", --Bazooka, Shotgun, SniperRifle
+ ["CONTROL"] = "Domination",
+ ["Control pillars to score points."] = "Contrôlez les piliers pour marquer des points",
+ ["CONTROL v0.3"] = "Domination v0.3",
+-- ["CTF_BLIZZARD"] = "",
+ ["CUSTOM BUILD 0.2"] = "Compilation 0.2",
+ ["Cybernetic Empire"] = "Empire cybernétique",
+ ["DAMMIT, ROOKIE!"] = "Et merde, recrue",
+ ["DAMMIT, ROOKIE! GET OFF MY HEAD!"] = "Et merde, recrue ! Dégage de me tête !",
+ ["Dangerous Ducklings"] = "Canetons dangereux",
+ ["Eliminate all enemies"] = "Éliminez tous les ennemis",
+ ["Eliminate all targets before your time runs out.|You have unlimited ammo for this mission."] = "Éliminez toutes les cibles avant d'être à cours de temps.|Vos munitions sont illimitées pour cette mission.", --Bazooka, Shotgun, SniperRifle
+ ["Eliminate Poison before the time runs out"] = "Éliminez tout le Poison avant d'être à cours de temps.",
+ ["Eliminate the Blue Team"] = "Éliminez l'équipe bleue",
+ ["- Eliminate Unit 3378 |- Feeble Resistance must survive"] = "Éliminez l'unité 3378|- Résistance Futile doit survivre",
+ ["Enjoy the swim..."] = "Profitez du bain ...",
+ ["Fastest lap: "] = "Meilleur tour : ",
+ ["Feeble Resistance"] = "Résistance Futile",
+ ["Flag captured!"] = "Drapeau capturé !",
+ ["Flag respawned!"] = "Drapeau réapparu",
+ ["Flag returned!"] = "Drapeau récupéré",
+ ["Flags will be placed where each team ends their turn."] = "Les Drapeaux seront placès là où chaque équipe terminera son tour.",
+ ["GAME OVER!"] = "Fin du jeu ! ",
+ ["Game Started!"] = "Début du jeu ! ",
+ ["Get on over there and take him out!"] = "Viens par ici et débarrasse-toi de lui ! ",
+-- ["Goal:"] = "",
+-- ["GO! GO! GO!"] = "",
+ ["Good birdy......"] = "Gentil oiseau ...",
+ ["Good luck out there!"] = "Bonne chance pour sortir d'ici",
+-- ["Hedgewars-Basketball"] = "",
+-- ["Hedgewars-Knockball"] = "",
+-- ["Hmmm..."] = "",
+ ["Hooray!"] = "Hourra ! ",
+ ["Hunter"] = "Chasseur", --Bazooka, Shotgun, SniperRifle
+ ["Instructor"] = "Instructeur", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings
+ ["- Jumping is disabled"] = "Saut désactivé",
+ ["Listen up, maggot!!"] = "Écoutez, asticots",
+-- ["|- Mines Time:"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
+ ["MISSION FAILED"] = "Mission échouée", -- User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
+ ["MISSION SUCCESSFUL"] = "Mission réussie", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
+ ["NEW fastest lap: "] = "Nouveau meilleur temps",
+ ["NO JUMPING"] = "PAS DE SAUT",
+ ["Not So Friendly Match"] = "Match pas si amical", -- Basketball, Knockball
+ ["Oh no! Just try again!"] = "Eh non ! Essayez encore ! ", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
+ ["Oh no! Time's up! Just try again."] = "Eh non ! Temps écoulé ! Essayez encore ! ", --Bazooka, Shotgun, SniperRifle
+-- ["Operation Diver"] = "",
+ ["Opposing Team: "] = "Équipe opposée",
+ ["Pathetic Hog #%d"] = "Hérisson pathétique #%d",
+ ["points"] = "points", -- Control, CTF_Blizzard, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle
+ ["Poison"] = "Poison",
+ ["Random Weapons"] = "Armes aléatoires",
+ [" - Return the enemy flag to your base to score | - First team to 3 captures wins | - You may only score when your flag is in your base | - Hogs will drop the flag if killed, or drowned | - Dropped flags may be returned or recaptured | - Hogs respawn when killed"] = "Ramenez le drapeau ennemi à votre base pour marquer | -La première équipe à 3 captures gagne | - Vous marquez uniquement si votre drapeau est dans votre base | - Les hérissons vont lâcher le drapeau s'ils sont tués ou noyés | - Les drapeaux lâchés peuvent être ramenés ou recapturés | - Les hérissons réapparaissent quand ils sont tués",
+ ["RULES OF THE GAME [Press ESC to view]"] = "RÈGLES DU JEU | [Appuyez Échap pour voir]",
+-- ["sec"] = "", -- CTF_Blizzard, TrophyRace, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork, Capture_the_Flag
+ ["See ya!"] = "Bye bye",
+ ["Shotgun Team"] = "Équipe de choc",
+ ["Shotgun Training"] = "Entrainement au fusil",
+ ["%s is out and Team %d|scored a penalty!| |Score:"] = "%s est dehors et l'équipe %d| reçoit une pénalité ! | |Score : ", -- Basketball, Knockball
+ ["%s is out and Team %d|scored a point!| |Score:"] = "%s est dehors et l'équipe %d| reçoit un point ! | |Score : ", -- Basketball, Knockball
+ ["Sniper Training"] = "Entrainement au fusil de sniper",
+-- ["Sniperz"] = "",
+ ["Spooky Tree"] = "Arbre fantomatique",
+ ["Team %d: "] = "Équipe %d : ",
+ ["Team Scores:"] = "Score de l'équipe",
+ ["That was pointless."] = "C'était inutile.",
+ ["The enemy is hiding out on yonder ducky!"] = "L'ennemi se cache là-bas sur le canard !",
+ ["The flag will respawn next round."] = "Le drapeau va réapparaitre au prochain tour",
+ ["There has been a mix-up with your gear and now you|have to utilize whatever is coming your way!"] = "Il y a eu un mélange avec votre équipement et maintenant| vous devrez utiliser ce qui vous arrivera dans les mains !",
+ ["Toxic Team"] = "Équipe toxique", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
+-- ["TrophyRace"] = "",
+-- ["T_T"] = "",
+ ["Unit 3378"] = "Unité 3378",
+ ["Use your rope to get from start to finish as fast as you can!"] = "Utilisez votre Corde Ninja pour aller du début à la fin aussi vite que vous pouvez !",
+ ["Victory for the "] = "Victoire pour ", -- CTF_Blizzard, Capture_the_Flag
+ ["You have SCORED!!"] = "Vous avez marqué !",
+ ["You've failed. Try again."] = "Vous avez échoué. Essayez encore.",
+ ["You've reached the goal!| |Time: "] = "Vous avez atteins le but !| |Temps : ",
+-- ["'Zooka Team"] = "",
+ }
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Locale/fr.txt
--- a/share/hedgewars/Data/Locale/fr.txt Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Locale/fr.txt Tue Feb 01 00:18:25 2011 +0100
@@ -12,7 +12,7 @@
00:09=Révolver
00:10=Dynamite
00:11=Batte de baseball
-00:12=Poing de feu
+00:12=Shoryuken
00:13=sec
00:14=Parachute
00:15=Attaque aérienne
@@ -42,6 +42,16 @@
00:39=Soucoupe Volante
00:40=Cocktail Molotov
00:41=Piaf
+00:42=Fusil à portails
+00:43=Attaque du Piano
+00:44=Vieux Limburger
+00:45=Fusil Sinus (bêta)
+00:46=Lance-flammes
+00:47=Mines adhésives
+00:48=Marteau
+00:49=Resurrecteur
+00:50=Attaque perforante
+00:51=Boule de terre
01:00=C'est parti !
01:01=Round ex-aequo
@@ -137,7 +147,7 @@
02:01=%1 est parti visiter l'aquarium
02:01=%1 a trouvé la cité perdue d'Atlantide
02:01=%1 se propose pour le rôle principal de Bioshock 3
-02:01=Ta paggaie pour chiens aurait pû servir, %1
+02:01=Ta pagaie pour chiens aurait pû servir, %1
02:01=%1 aurait dû acheter un jet ski
02:01=%1 n'aime pas les sports aquatiques
02:01=%1 va faire des bulles pour toujours
@@ -178,7 +188,7 @@
02:02=Que la bataille du jour commence !
02:02=Que la bataille de l'heure commence !
02:02=Faites de votre mieux !
-02:02=Detruisez l'ennemi !
+02:02=Détruisez l'ennemi !
02:02=Bonne chance !
02:02=Amusez-vous bien !
02:02=Combattez avec honneur !
@@ -265,7 +275,7 @@
02:08=%1 est une vache !
02:08=%1 attend la mort subite
02:08=%1 n'est pas du genre bagarreur
-02:08=%1 réflechit au sens de la vie
+02:08=%1 réfléchit au sens de la vie
02:08=%1 n'était pas un bon tireur de toutes manières
02:08=%1 ne voulait pas rejoindre l'armée au début
02:08=Arrête de perdre ton temps, %1
@@ -299,7 +309,7 @@
02:09=%1 montre à l'ennemi de quoi il est capable
02:09=%1 ne peut pas être parfait tout le temps
02:09=Ne t'inquiète pas %1, personne p'est narfait
-02:09=%1 a fait cela totallement intentionnellement
+02:09=%1 a fait cela totalement intentionnellement
02:09=Je ne le dirais à personne, %1
02:09=C'est embarrassant !
02:09=Je suis sûr que personne n'a vu cela %1
@@ -397,7 +407,15 @@
04:38= Le fusil à lunettes peut être une de armes les plus dévastatrices|de tout votre arsenal, toutefois il est totalement inefficace|en combat rapproché. Les dommages qu'il cause augmentent suivant|la distance de la cible.|Attaque : Tirez (deux fois)
04:39=Volez vers d'autres secteurs de la carte en utilisant une soucoupe|volante. Ce moyen de transport pas facile à dompter est capable de vous|emporter vers presque tous les lieux du champ de bataille|Attaque : Activer|Haut/Gauche/Droite : appliquez la force dans une direction
04:40=Mettez le feu à un territoire en utilisant cette bouteille remplie|de liquide inflammable.|Attaque : maintenez pour tirer avec plus de force
-04:41=Une arme naturelle qui peut suffire à dégommer même la soucoupe|volante. Le piaf peut transporter votre hérisson et|balancer de soeufs sur vos ennemis !|Attaque : Activez et larguez des oeufs|Haut/Gauche/Droite: voltigez vers une direction.
+04:41=Une arme naturelle qui peut suffire à dégommer même la soucoupe|volante. Le piaf peut transporter votre hérisson et|balancer des œufs sur vos ennemis !|Attaque : Activez et larguez des œufs|Haut/Gauche/Droite: voltigez vers une direction.
+04:42=Ce fusil à portails est capable de vous transporter instantanément,| ainsi que vos ennemis ou des armes entre deux points du terrain. |Utilisez-le intelligemment et votre campagne sera un ... GRAND SUCCÈS !|Attaque : Crée un portail|Modificateur : Change la couleur du portail
+04:43=Faites de vos débuts musicaux un succès explosif !| Lâchez un piano depuis les cieux, mais attention ... quelqu'un doit|jouer dessus, et cela pourrait lui coûter sa vie !|Curseur : Choix de la cible|F1-F9 : Jouer du piano
+04:44=Ce n'est pas juste un fromage, c'est une arme biologique !|Il ne provoquera de gros dommages une fois que le compteur|atteindra zéro mais il empoisonnera tous les malchanceux touchés par l'odeur !|1-5 : Lancez le minuteur de la grenade|Attaque : maintenez pour la lancer avec plus de force
+04:45=Tous ces cours de physique ont finalement payé,|lancez une onde Sinus dévastatrice à vos ennemis.|Attention au recul ! (cette arme est incomplète)|Attaque : Activez
+04:46=Recouvrez vos ennemis de sifflantes flammes liquides.|Hauts les cœurs !|Attaque : Activez|Haut/Bas : Continuez à viser|Droite/Gauche : Changer la puissance de tir
+04:47=Doublez le fun avec deux mines, piquantes, furtives et collantes.|Provoquez une réaction en chaine ou défendez-vous ! (ou les deux)|Attaque : maintenez pour tirer avec plus de force (deux fois)
+04:48=Pourquoi les taupes auraient tous le fun ?|Un bon coup de ce marteau enlèvera un tiers de la santé du hérisson et l'enverra dans le sol|Attaque : Activez
+04:49=Ressuscite vos amis !Mais méfiez-vous, cela ressuscite également vos ennemis.|Attaque : Maintenez attaque pressée pour ressusciter lentement|Haut : Accélérer la résurrection
; Game goal strings
05:00=Modes de jeu
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Locale/gl.txt
--- a/share/hedgewars/Data/Locale/gl.txt Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Locale/gl.txt Tue Feb 01 00:18:25 2011 +0100
@@ -12,7 +12,7 @@
00:09=DEagle
00:10=Dinamita
00:11=Bate de béisbol
-00:12=Puñada de lume
+00:12=Shoryuken
00:13=seg
00:14=Paracaídas
00:15=Ataque aéreo
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Locale/hedgewars_ar.ts
--- a/share/hedgewars/Data/Locale/hedgewars_ar.ts Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Locale/hedgewars_ar.ts Tue Feb 01 00:18:25 2011 +0100
@@ -562,11 +562,6 @@
- The Windows version of Hedgewars supports Xfire. Make sure to add Hedgwars to its game list so your friends can see you playing.
- Tips
-
-
- You should never install Hedgewars on computers you don't own (school, university, work, etc.). Please ask the responsible person instead!Tips
@@ -612,11 +607,6 @@
- The Homing Bee can be tricky to use. It's turn radius depends on it's velocity, so try to not use full power.
- Tips
-
-
- Sticky Mines are a perfect tool to create small chain reactions knocking enemy hedgehogs into dire situations ... or water.Tips
@@ -642,11 +632,6 @@
- Use the Incinerating Grenade to temporary keep hedgehogs from passing terrain such as tunnels or platforms.
- Tips
-
-
- Want to know who's behind the game? Click on the Hedgewars logo in the main menu to see the credits.Tips
@@ -696,6 +681,21 @@
Tips
+
+ The Windows version of Hedgewars supports Xfire. Make sure to add Hedgewars to its game list so your friends can see you playing.
+ Tips
+
+
+
+ The Homing Bee can be tricky to use. Its turn radius depends on it's velocity, so try to not use full power.
+ Tips
+
+
+
+ Use the Molotov or Flame Thrower to temporary keep hedgehogs from passing terrain such as tunnels or platforms.
+ Tips
+
+ PageMultiplayer
@@ -1257,6 +1257,46 @@
hand drawn map...
+
+ Disabled
+
+
+
+ Red/Cyan
+
+
+
+ Cyan/Red
+
+
+
+ Red/Blue
+
+
+
+ Blue/Red
+
+
+
+ Red/Green
+
+
+
+ Green/Red
+
+
+
+ Side-by-side
+
+
+
+ Top-Bottom
+
+
+
+ Wiggle
+
+ QGroupBox
@@ -1487,6 +1527,10 @@
Gameplay
+
+ Stereo rendering
+
+ QLineEdit
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Locale/hedgewars_bg.ts
--- a/share/hedgewars/Data/Locale/hedgewars_bg.ts Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Locale/hedgewars_bg.ts Tue Feb 01 00:18:25 2011 +0100
@@ -513,11 +513,6 @@
- The Windows version of Hedgewars supports Xfire. Make sure to add Hedgwars to its game list so your friends can see you playing.
- Tips
-
-
- You should never install Hedgewars on computers you don't own (school, university, work, etc.). Please ask the responsible person instead!Tips
@@ -583,11 +578,6 @@
- The Homing Bee can be tricky to use. It's turn radius depends on it's velocity, so try to not use full power.
- Tips
-
-
- Sticky Mines are a perfect tool to create small chain reactions knocking enemy hedgehogs into dire situations ... or water.Tips
@@ -613,11 +603,6 @@
- Use the Incinerating Grenade to temporary keep hedgehogs from passing terrain such as tunnels or platforms.
- Tips
-
-
- Want to know who's behind the game? Click on the Hedgewars logo in the main menu to see the credits.Tips
@@ -667,6 +652,21 @@
Tips
+
+ The Windows version of Hedgewars supports Xfire. Make sure to add Hedgewars to its game list so your friends can see you playing.
+ Tips
+
+
+
+ The Homing Bee can be tricky to use. Its turn radius depends on it's velocity, so try to not use full power.
+ Tips
+
+
+
+ Use the Molotov or Flame Thrower to temporary keep hedgehogs from passing terrain such as tunnels or platforms.
+ Tips
+
+ PageMultiplayer
@@ -1203,6 +1203,46 @@
hand drawn map...
+
+ Disabled
+
+
+
+ Red/Cyan
+
+
+
+ Cyan/Red
+
+
+
+ Red/Blue
+
+
+
+ Blue/Red
+
+
+
+ Red/Green
+
+
+
+ Green/Red
+
+
+
+ Side-by-side
+
+
+
+ Top-Bottom
+
+
+
+ Wiggle
+
+ QGroupBox
@@ -1433,6 +1473,10 @@
Gameplay
+
+ Stereo rendering
+
+ QLineEdit
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Locale/hedgewars_cs.ts
--- a/share/hedgewars/Data/Locale/hedgewars_cs.ts Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Locale/hedgewars_cs.ts Tue Feb 01 00:18:25 2011 +0100
@@ -520,11 +520,6 @@
- The Windows version of Hedgewars supports Xfire. Make sure to add Hedgwars to its game list so your friends can see you playing.
- Tips
-
-
- You should never install Hedgewars on computers you don't own (school, university, work, etc.). Please ask the responsible person instead!Tips
@@ -590,11 +585,6 @@
- The Homing Bee can be tricky to use. It's turn radius depends on it's velocity, so try to not use full power.
- Tips
-
-
- Sticky Mines are a perfect tool to create small chain reactions knocking enemy hedgehogs into dire situations ... or water.Tips
@@ -620,11 +610,6 @@
- Use the Incinerating Grenade to temporary keep hedgehogs from passing terrain such as tunnels or platforms.
- Tips
-
-
- Want to know who's behind the game? Click on the Hedgewars logo in the main menu to see the credits.Tips
@@ -674,6 +659,21 @@
Tips
+
+ The Windows version of Hedgewars supports Xfire. Make sure to add Hedgewars to its game list so your friends can see you playing.
+ Tips
+
+
+
+ The Homing Bee can be tricky to use. Its turn radius depends on it's velocity, so try to not use full power.
+ Tips
+
+
+
+ Use the Molotov or Flame Thrower to temporary keep hedgehogs from passing terrain such as tunnels or platforms.
+ Tips
+
+ PageMultiplayer
@@ -1212,6 +1212,46 @@
hand drawn map...
+
+ Disabled
+
+
+
+ Red/Cyan
+
+
+
+ Cyan/Red
+
+
+
+ Red/Blue
+
+
+
+ Blue/Red
+
+
+
+ Red/Green
+
+
+
+ Green/Red
+
+
+
+ Side-by-side
+
+
+
+ Top-Bottom
+
+
+
+ Wiggle
+
+ QGroupBox
@@ -1442,6 +1482,10 @@
Gameplay
+
+ Stereo rendering
+
+ QLineEdit
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Locale/hedgewars_de.ts
--- a/share/hedgewars/Data/Locale/hedgewars_de.ts Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Locale/hedgewars_de.ts Tue Feb 01 00:18:25 2011 +0100
@@ -565,7 +565,7 @@
The Windows version of Hedgewars supports Xfire. Make sure to add Hedgwars to its game list so your friends can see you playing.Tips
- Die Windowsversion von Hedgewars unterstützt Xfire. Füge Hedgewars zu der Spieleliste hinzu, sodass deine Freunde sehen können wann du spielst.
+ Die Windowsversion von Hedgewars unterstützt Xfire. Füge Hedgewars zu der Spieleliste hinzu, sodass deine Freunde sehen können wann du spielst.You should never install Hedgewars on computers you don't own (school, university, work, etc.). Please ask the responsible person instead!
@@ -635,7 +635,7 @@
The Homing Bee can be tricky to use. It's turn radius depends on it's velocity, so try to not use full power.Tips
- Die zielsuchende Biene ist schwierig in der Handhabung. Ihr Wendekreis hängt von ihrer Geschwindigkeit ab, also versuche nicht die volle Kraft zu benutzen.
+ Die zielsuchende Biene ist schwierig in der Handhabung. Ihr Wendekreis hängt von ihrer Geschwindigkeit ab, also versuche nicht die volle Kraft zu benutzen.Sticky Mines are a perfect tool to create small chain reactions knocking enemy hedgehogs into dire situations ... or water.
@@ -665,7 +665,7 @@
Use the Incinerating Grenade to temporary keep hedgehogs from passing terrain such as tunnels or platforms.Tips
- Benutze den Molotov-Cocktail um kurzzeitig Igel daran zu hindern Tunnel zu durchqueren oder Plattformen zu erklimmen.
+ Benutze den Molotov-Cocktail um kurzzeitig Igel daran zu hindern Tunnel zu durchqueren oder Plattformen zu erklimmen.Want to know who's behind the game? Click on the Hedgewars logo in the main menu to see the credits.
@@ -722,6 +722,21 @@
Tips
+
+ The Windows version of Hedgewars supports Xfire. Make sure to add Hedgewars to its game list so your friends can see you playing.
+ Tips
+
+
+
+ The Homing Bee can be tricky to use. Its turn radius depends on it's velocity, so try to not use full power.
+ Tips
+
+
+
+ Use the Molotov or Flame Thrower to temporary keep hedgehogs from passing terrain such as tunnels or platforms.
+ Tips
+
+ PageMultiplayer
@@ -1281,6 +1296,46 @@
hand drawn map...
+
+ Disabled
+
+
+
+ Red/Cyan
+
+
+
+ Cyan/Red
+
+
+
+ Red/Blue
+
+
+
+ Blue/Red
+
+
+
+ Red/Green
+
+
+
+ Green/Red
+
+
+
+ Side-by-side
+
+
+
+ Top-Bottom
+
+
+
+ Wiggle
+
+ QGroupBox
@@ -1517,6 +1572,10 @@
Gameplay
+
+ Stereo rendering
+
+ QLineEdit
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Locale/hedgewars_el.ts
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/share/hedgewars/Data/Locale/hedgewars_el.ts Tue Feb 01 00:18:25 2011 +0100
@@ -0,0 +1,2284 @@
+
+
+
+
+ AmmoSchemeModel
+
+ new
+ Νέο
+
+
+
+ FreqSpinBox
+
+ Never
+ Ποτέ
+
+
+ Every %1 turn
+
+ Κάθε %1 γύρο
+ Κάθε %1 γύρους
+
+
+
+
+ GameCFGWidget
+
+ Edit weapons
+ Επεξεργασία όπλων
+
+
+ Error
+ Σφάλμα
+
+
+ Illegal ammo scheme
+ Ασύμβατος σχεδιασμός όπλων
+
+
+ Edit schemes
+ Επεξεργασία σχεδιασμών
+
+
+ When this option is enabled selecting a game scheme will auto-select a weapon (and viceversa)
+ Όταν αυτή η επιλογη είναι ενεργοποιημένη, επιλέγοντας ένα σχεδιασμό παιχνιδιού θα επιλέγεται αυτομάτως ένα όπλο (και αντιστρόφως)
+
+
+
+ HWChatWidget
+
+ %1 *** %2 has been removed from your ignore list
+ %1 *** %2 αφαιρέθηκε από τη "μαύρη" λίστα
+
+
+ %1 *** %2 has been added to your ignore list
+ %1 *** %2 προστέθηκε στη "μαύρη" λίστα
+
+
+ %1 *** %2 has been removed from your friends list
+ %1 *** %2 αφαιρέθηκε από τη λίστα φίλων
+
+
+ %1 *** %2 has been added to your friends list
+ %1 *** %2 προστέθηκε στη λίστα φίλων
+
+
+
+ HWForm
+
+ new
+ Νέο
+
+
+ Error
+ Σφάλμα
+
+
+ OK
+ Εντάξει
+
+
+ Unable to start the server
+ Δεν είναι δυνατόν να ξεκινήσει ο εξυπηρετητής
+
+
+ Cannot save record to file %1
+ Δεν μπορεί να σωθεί η εγγραφή στο αρχείο %1
+
+
+ Please select record from the list above
+ Παρακαλώ επέλεξε εγγραφή από την παραπάνω λίστα
+
+
+ DefaultTeam
+ Ομάδα εξ' ορισμού
+
+
+ Hedgewars Demo File
+ File Types
+ Τύπος Αρχείων
+ Αρχείο Επιδείξεων Hedgewars
+
+
+ Hedgewars Save File
+ File Types
+ Τύπος Αρχείων
+ Αρχείο Αποθήκευσης Hedgewars
+
+
+
+ HWGame
+
+ el.txt
+ el.txt
+
+
+ Cannot open demofile %1
+ Δεν μπορεί να φορτωθεί το αρχείο επιδείξεων %1
+
+
+
+ HWMapContainer
+
+ Map
+ Χάρτης
+
+
+ Themes
+ Θέματα
+
+
+ Filter
+ Φίλτρο
+
+
+ All
+ Όλα
+
+
+ Small
+ Μικρό
+
+
+ Medium
+ Μέτριο
+
+
+ Large
+ Μεγάλο
+
+
+ Cavern
+ Σπηλιά
+
+
+ Wacky
+ Εξωφρενικό
+
+
+ Type
+ Τύπος
+
+
+ Small tunnels
+ Μικρές σήραγγες
+
+
+ Medium tunnels
+ Μέτριες σήραγγες
+
+
+ Large tunnels
+ Μεγάλες σήραγγες
+
+
+ Small floating islands
+ Μικρά επιπλέοντα νησιά
+
+
+ Medium floating islands
+ Μέτρια επιπλέοντα νησιά
+
+
+ Large floating islands
+ Μεγάλα επιπλέοντα νησιά
+
+
+
+ HWNetServersModel
+
+ Title
+ Τίτλος
+
+
+ IP
+ IP
+
+
+ Port
+ Θύρα
+
+
+
+ HWNewNet
+
+ The host was not found. Please check the host name and port settings.
+ Δεν βρέθηκε αποδέκτης (host). Παρακαλώ ελέγξτε το όνομα αποδέκτη (hostname) και τις ρυθμίσεις (port settings).
+
+
+ Connection refused
+ Connection refused
+
+
+ Room destroyed
+ Το δωμάτιο καταστράφηκε
+
+
+ Quit reason:
+ Λόγος αποχώρησης:
+
+
+ You got kicked
+ Σε πέταξαν έξω
+
+
+ Password
+ Κωδικός
+
+
+ Your nickname %1 is
+registered on Hedgewars.org
+Please provide your password
+or pick another nickname:
+ Your nickname %1 is
+registered on Hedgewars.org
+Please provide your password
+or pick another nickname:
+
+
+ %1 *** %2 has joined the room
+ %1 *** %2 εισήλθε στο δωμάτιο
+
+
+ %1 *** %2 has joined
+ %1 *** %2 εισήλθε
+
+
+ %1 *** %2 has left (%3)
+ %1 *** %2 εγκατέλειψε (%3)
+
+
+ %1 *** %2 has left
+ %1 *** %2 εγκατέλειψε
+
+
+ Your nickname %1 is
+registered on Hedgewars.org
+Please provide your password below
+or pick another nickname in game config:
+ Το ψευδώνυμο %1 είναι ήδη
+καταχωρημένο στο Hedgewars.org
+Παρακαλώ εισάγετε τον κωδικό σας
+ή επιλέξτε άλλο ψευδώνυμο από τις
+ρυθμίσεις του παιχνιδιού:
+
+
+
+ KB
+
+ 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.
+ Το SDL_ttf επέστρεψε σφάλμα καθώς διερμήνευσε κείμενο. Το πιο πιθανό είναι αυτό να σχετίζεται με το σφάλμα στο freetype2. Προτείνεται να αναβαθμίσετε το freetype lib.
+
+
+
+ PageAdmin
+
+ Server message:
+ Server message:
+
+
+ Set message
+ Set message
+
+
+ Clear Accounts Cache
+ Καθαρισμός μνήμης λογαριασμών
+
+
+ Fetch data
+ Προσκομιδή δεδομένων
+
+
+ Server message for latest version:
+ Μήνυμα εξηπηρετητή για την τελευταία έκδοση:
+
+
+ Server message for previous versions:
+ Μήνυμα εξηπηρετητή για προηγούμενες εκδόσεις:
+
+
+ Latest version protocol number:
+ Αριθμός πρωτοκόλλου τελευταίας έκδοσης :
+
+
+ MOTD preview:
+ Προεπισκόπηση MOTD :
+
+
+ Set data
+ Τοποθέτηση δεδομένων
+
+
+
+ PageConnecting
+
+ Connecting...
+ Σύνδεση...
+
+
+
+ PageEditTeam
+
+ General
+ Γενικά
+
+
+ Advanced
+ Για προχωρημένους
+
+
+
+ PageGameStats
+
+ <p>The best shot award was won by <b>%1</b> with <b>%2</b> pts.</p>
+ <p>The best shot award was won by <b>%1</b> with <b>%2</b> pts.</p>
+
+
+ <p>The best killer is <b>%1</b> with <b>%2</b> kills in a turn.</p>
+
+ <p>The best killer is <b>%1</b> with <b>%2</b> kill in a turn.</p>
+ <p>The best killer is <b>%1</b> with <b>%2</b> kills in a turn.</p>
+
+
+
+ <p>A total of <b>%1</b> hedgehog(s) were killed during this round.</p>
+
+ <p>A total of <b>%1</b> hedgehog was killed during this round.</p>
+ <p>A total of <b>%1</b> hedgehogs were killed during this round.</p>
+
+
+
+ Details
+ Λεπτομέρειες
+
+
+ Health graph
+ Γράφημα υγείας
+
+
+ Ranking
+ Κατάταξη
+
+
+ The best shot award was won by <b>%1</b> with <b>%2</b> pts.
+ Το βραβείο καλύτερης βολής κερδίθηκε από τον <b>%1</b> με <b>%2</b> πόντους.
+
+
+ The best killer is <b>%1</b> with <b>%2</b> kills in a turn.
+
+ Ο καλύτερος φονιάς είναι ο <b>%1</b> με <b>%2</b> σκοτωμό.
+ Ο καλύτερος φονιάς είναι ο <b>%1</b> με <b>%2</b> συνεχόμενους σκοτωμούς.
+
+
+
+ A total of <b>%1</b> hedgehog(s) were killed during this round.
+
+ Συνολικώς <b>%1</b> σκατζόχοιρος σκοτώθηκε στη διάρκεια αυτού του γύρου.
+ Συνολικώς <b>%1</b> σκατζόχοιροι σκοτώθηκαν στη διάρκεια αυτού του γύρου.
+
+
+
+ (%1 kill)
+
+ (%1 σκοτωμός)
+ (%1 σκοτωμοί)
+
+
+
+ <b>%1</b> thought it's good to shoot his own hedgehogs with <b>%2</b> pts.
+
+ Ο <b>%1</b> θεώρησε ορθό να μακελέψει τους συμπαίχτες του, αφαιρώντας τους <b>%2</b> πόντο.
+ Ο <b>%1</b> θεώρησε ορθό να μακελέψει τους συμπαίχτες του, αφαιρώντας τους <b>%2</b> πόντους.
+
+
+
+ <b>%1</b> killed <b>%2</b> of his own hedgehogs.
+
+ Ο <b>%1</b> σκότωσε <b>%2</b> συνάδελφό του.
+ Ο <b>%1</b> σκότωσε <b>%2</b> από τους συναδέλφους του.
+
+
+
+ <b>%1</b> was scared and skipped turn <b>%2</b> times.
+
+ Ο <b>%1</b> φοβήθηκε και παραχώρησε τη σειρά του <b>%2</b> φορά.
+ Ο <b>%1</b> φοβήθηκε και παραχώρησε τη σειρά του <b>%2</b> φορές.
+
+
+
+
+ PageMain
+
+ Local Game (Play a game on a single computer)
+ Τοπικό Παιχνίδι (Παίξιμο παιχνιδιού σε ένα υπολογιστή)
+
+
+ Network Game (Play a game across a network)
+ Δικτυακό Παιχνίδι (Παίξιμο παιχνιδιού σε δίκτυο)
+
+
+ Simply pick the same color as a friend to play together as a team. Each of you will still control his or her own hedgehogs but they'll win or lose together.
+ Tips
+ Απλώς επιλέξτε το ίδιο χρώμα με το φίλο σας για να παίξετε μαζί σαν ομάδα. Ο καθένας από σας θα μπορεί ακόμα να ελέγχει τους δικούς του ή τους δικούς της σκατζόχοιρους, αλλά χάνετε ή κερδίζετε μαζί.
+
+
+ Some weapons might do only low damage but they can be a lot more devastating in the right situation. Try to use the Desert Eagle to knock multiple hedgehogs into the water.
+ Tips
+ Μερικά όπλα μπορεί να κάνουν μόνο λίγη ζημιά αλλά μπορεί να είναι πολύ πιο καταστρεπτικά στην κατάλληλη περίσταση. Δοκιμάστε να χρησιμοποιήσετε το Desert Eagle για να ρίξετε πολλαπλούς σκατζόχοιρους στο νερό.
+
+
+ If you're unsure what to do and don't want to waste ammo, skip one round. But don't let too much time pass as there will be Sudden Death!
+ Tips
+ Εαν δεν ξέρετε τι να κάνετε και δεν θέλετε να σπαταλήσετε πυρομαχικά, "πηδήξτε" ένα γύρο. Αλλά μην αφήσετε πολύ ώρα να περάσει διότι θα επέλθει Ξαφνικός Θάνατος!
+
+
+ If you'd like to keep others from using your preferred nickname on the official server, register an account at http://www.hedgewars.org/.
+ Tips
+ Εαν θα θέλατε να αποτρέψετε τρίτους από το να χρησιμοποιούν το ψευδώνυμό σας στον επίσημο εξυπηρετητή, φτιάξτε ένα λογαριασμό στην ιστοσελίδα : http://www.hedgewars.org/.
+
+
+ You're bored of default gameplay? Try one of the missions - they'll offer different gameplay depending on the one you picked.
+ Tips
+ Βαριέστε το παραδοσιακό παίξιμο; Δοκιμάστε μια από τις αποστολές! Θα σας προσφέρουν ένα διαφορετικό τρόπο παιχνιδιού, αναλόγως την αποστολή.
+
+
+ By default the game will always record the last game played as a demo. Select 'Local Game' and pick the 'Demos' button on the lower right corner to play or manage them.
+ Tips
+ Εξ'ορισμού το παιχνίδι πάντα θα καταγράφει την πιο πρόσφατη παρτίδα σαν επίδειξη. Επιλέξτε "Τοπικό Παιχνίδι" και κατόπιν επιλέξτε "Επιδείξεις" στην κάτω δεξιά γωνία για να τις αναπαράγετε ή να τις διαχειριστείτε.
+
+
+ Hedgewars is Open Source and Freeware we create in our spare time. If you've got problems, ask on our forums but please don't expect 24/7 support!
+ Tips
+ Το Hedgewars είναι λογισμικό Ανοικτού Κώδικα (Open Source) και Ελεύθερο Λογισμικό (Free Software) το οποίο δημιουργούμε στον ελεύθερο χρόνο μας. Άν έχετε προβλήματα ρωτήστε στο forum αλλά παρακαλώ μην περιμένετε υποστήριξη 24/7!
+
+
+ Hedgewars is Open Source and Freeware we create in our spare time. If you like it, help us with a small donation or contribute your own work!
+ Tips
+ Το Hedgewars είναι λογισμικό Ανοικτού Κώδικα (Open Source) και Ελεύθερο Λογισμικό (Free Software) το οποίο δημιουργούμε στον ελεύθερο χρόνο μας. Άν σας αρέσει βοηθήστε μας με μια μικρή δωρεά ή συνεισφέρετε την δική σας δουλειά!
+
+
+ Hedgewars is Open Source and Freeware we create in our spare time. Share it with your family and friends as you like!
+ Tips
+ Το Hedgewars είναι λογισμικό Ανοικτού Κώδικα (Open Source) και Ελεύθερο Λογισμικό (Free Software) το οποίο δημιουργούμε στον ελεύθερο χρόνο μας. Μοιραστείτε το με την οικογένειά σας και τους φίλους σας όπως εσείς επιθυμείτε!
+
+
+ From time to time there will be official tournaments. Upcoming events will be announced at http://www.hedgewars.org/ some days in advance.
+ Tips
+ Συχνά-πυκνά θα υπάρχουν επίσημα πρωταθλήματα. Τα επικείμενα γεγονότα θα ανακοινώνονται στην ιστοσελίδα : http://www.hedgewars.org/ μερικές ημέρες νωρίτερα.
+
+
+ Hedgewars is available in many languages. If the translation in your language seems to be missing or outdated, feel free to contact us!
+ Tips
+ Το Hedgewars είναι διαθέσιμο σε πολλές γλώσσες. Εάν η μετάφραση για τη γλώσσα σας μοιάζει απαρχαιωμένη ή λείπει, μην διστάσετε να επικοινωνίσετε μαζί μας!
+
+
+ Hedgewars can be run on lots of different operating systems including Microsoft Windows, Mac OS X and Linux.
+ Tips
+ Το Hedgewars μπορεί να τρέξει σε μια μεγάλη ποικιλία λειτουργικών συστημάτων εκ των οποίων συμπεριλαμβάνονται τα Microsoft Windows, Mac OS X και το GNU/Linux.
+
+
+ Always remember you're able to set up your own games in local and network/online play. You're not restricted to the 'Simple Game' option.
+ Tips
+ Μην ξεχνάτε ότι έχετε τη δυνατότητα να "στήσετε" τα δικά σας σενάρια παιχνιδιού σε τοπικό και δικτυακό/διαδικτυακό παιχνίδι. Δεν είστε περιορισμένοι στην επιλογή "Απλό Παιχνίδι".
+
+
+ While playing you should give yourself a short break at least once an hour.
+ Tips
+ Ενόσω παίζετε πρέπει να κάνετε τακτικά διαλείμματα, τουλάχιστον κάθε μία ώρα.
+
+
+ If your graphics card isn't able to provide hardware accelerated OpenGL, try to enable the low quality mode to improve performance.
+ Tips
+ Εαν η κάρτα γραφικών σας δεν μπορεί να παρέχει επιτάχυνση υλικού για το OpenGL (hardware accelerated OpenGL) προσπαθήστε να ενεργοποιήσετε την επιλογή χαμηλής ποιότητας έτσι ώστε να βελτιωθεί η απόδοση του παιχνιδιού.
+
+
+ We're open to suggestions and constructive feedback. If you don't like something or got a great idea, let us know!
+ Tips
+ Είμαστε ανοικτοί σε συμβουλές και εποικοδομητικό διάλογο. Εαν δεν σας αρέσει κάτι ή έχετε μια τρομερή ιδέα, τότε ενημερώστε μας!
+
+
+ Especially while playing online be polite and always remember there might be some minors playing with or against you as well!
+ Tips
+ Ειδικώς όταν παίζετε στο διαδίκτυο, να είστε ευγενικοί και να θυμάστε πάντα οτι μπορεί να παίζουν ανήλικοι, είτε μαζί σας ή εναντίον σας!
+
+
+ Special game modes such as 'Vampirism' or 'Karma' allow you to develop completely new tactics. Try them in a custom game!
+ Tips
+ Ειδικοί τρόποι παιχνιδιού όπως το "Βαμπιρισμός" ή το "Μοίρα" σας επιτρέπουν να αναπτύξετε εντελώς νέες τακτικές. Δοκιμάστε τους σε ένα προσαρμόσιμο παιχνίδι!
+
+
+ The Windows version of Hedgewars supports Xfire. Make sure to add Hedgwars to its game list so your friends can see you playing.
+ Tips
+ Η έκδοση Hedgewars για Windows υποστηρίζει Xfire. Σιγουρευτείτε οτι προσθέσατε το Hedgewars στη λίστα παιχνιδιών του, ώστε οι φίλοι σας να μπορούν να σας δουν όταν εσείς παίζετε.
+
+
+ You should never install Hedgewars on computers you don't own (school, university, work, etc.). Please ask the responsible person instead!
+ Tips
+ Δεν πρέπει ποτέ να εγκαταστήσετε το Hedgewars σε υπολογιστές που δεν σας ανήκουν (σχολείο, πανεπιστήμιο, εργασία, κ.λπ.). Αντ 'αυτού, ζητήστε το από τον υπεύθυνο!
+
+
+ Hedgewars can be perfect for short games during breaks. Just ensure you don't add too many hedgehogs or use an huge map. Reducing time and health might help as well.
+ Tips
+ Το Hedgewars είναι ιδανικό για σύντομα παιχνίδια κατά τη διάρκεια του διαλείμματος. Απλά βεβαιωθείτε ότι δεν προσθέσατε πολλούς σκαντζόχοιρους ή χρησιμοποιείτε ένα τεράστιο χάρτη. Μείωση του χρόνου και της υγείας μπορεί να βοηθήσει επίσης.
+
+
+ No hedgehogs were harmed in making this game.
+ Tips
+ Κανένας σκατζόχοιρος δεν βλάφτηκε στην δημιουργία αυτού του παιχνιδιού.
+
+
+ Hedgewars is Open Source and Freeware we create in our spare time. If someone sold you the game, you should try get a refund!
+ Tips
+ Το Hedgewars είναι λογισμικό Ανοικτού Κώδικα (Open Source) και Ελεύθερο Λογισμικό (Free Software) το οποίο δημιουργούμε στον ελεύθερο χρόνο μας. Εαν κάποιος σας πούλησε το παιχνίδι, πρέπει να διεκδικήσετε αποζημίωση!
+
+
+ Connect one or more gamepads before starting the game to be able to assign their controls to your teams.
+ Tips
+ Συνδέστε ένα ή περισσότερα gamepad πριν από την έναρξη του παιχνιδιού έτσι ώστε να είναι σε θέση να αναθέτει τους χειρισμούς του στις ομάδες σας.
+
+
+ Create an account on %1 to keep others from using your most favourite nickname while playing on the official server.
+ Tips
+ Δημιουργήστε έναν λογαριασμό στο %1 για να αποτρέψετε τους άλλους από το να χρησιμοποιούν το ψευδώνυμό σας ενόσω παίζετε στον επίσημο εξυπηρετητή.
+
+
+ If your graphics card isn't able to provide hardware accelerated OpenGL, try to update the associated drivers.
+ Tips
+ Εαν η κάρτα γραφικών σας δεν μπορεί να παρέχει επιτάχυνση υλικού για το OpenGL (hardware accelerated OpenGL) προσπαθήστε να αναβαθμίσετε τους αντίστοιχους οδηγούς υλικού.
+
+
+ There are three different jumps available. Tap [high jump] twice to do a very high/backwards jump.
+ Tips
+ Υπάρχουν τρία διαφορετικά άλματα διαθέσιμα. Άλμα εις μήκος, άλμα εις ύψος [με ένα πάτημα],πολύ υψηλό / οπίσθιο άλμα [με δύο πατήματα].
+
+
+ Afraid of falling off a cliff? Hold down [precise] to turn [left] or [right] without actually moving.
+ Tips
+ Φοβάστε μήπως πέσετε στο γκρεμό; Κρατήστε πατημένο το πλήκτρο ακρίβειας [Left Shift] και έπειτα αριστερά ή δεξιά χωρίς να κινήστε στην πραγματικότητα.
+
+
+ Some weapons require special strategies or just lots of training, so don't give up on a particular tool if you miss an enemy once.
+ Tips
+ Ορισμένα όπλα απαιτούν ειδικές στρατηγικές ή απλώς πολύ εκπαίδευση, γι 'αυτό μην εγκαταλείπετε ένα συγκεκριμένο εργαλείο, εάν αστοχήσετε μια φορά σε έναν εχθρό.
+
+
+ Most weapons won't work once they touch the water. The Homing Bee as well as the Cake are exceptions to this.
+ Tips
+ Τα περισσότερα όπλα δεν λειτουργούν μόλις αγγίζουν το νερό. Η Αυτοκαθοδηγούμενη Μέλισσα καθώς και η Τούρτα αποτελούν εξαιρέσεις σε αυτό.
+
+
+ The Old Limbuger only causes a small explosion. However the wind affected smelly cloud can poison lots of hogs at once.
+ Tips
+ Η Χαλασμένη Φέτα προκαλεί μόνο μια μικρή έκρηξη. Ωστόσο, το δύσοσμο σύννεφο το οποίο επιρρεάζεται από τον άνεμο μπορεί να δηλητηριάσει πολλούς σκατζόχοιρους με τη μία.
+
+
+ The Piano Strike is the most damaging air strike. You'll lose the hedgehog performing it, so there's a huge downside as well.
+ Tips
+ Το Πιάνο είναι η πιο επιζήμια αεροπορική επίθεση. Θα χάσετε το σκαντζόχοιρο ο οποίος την εκτελεί, έτσι υπάρχει ένα τεράστιο μειονέκτημα επίσης.
+
+
+ The Homing Bee can be tricky to use. It's turn radius depends on it's velocity, so try to not use full power.
+ Tips
+ Η Αυτοκαθοδηγούμενη Μέλισσα μπορεί να είναι δύσκολη στη χρήση. Η ακτίνα καμπυλότητάς της εξαρτάται από την ταχύτητά της, επομένως προσπαθήστε να μην χρησιμοποιείτε την πλήρη ισχύ.
+
+
+ Sticky Mines are a perfect tool to create small chain reactions knocking enemy hedgehogs into dire situations ... or water.
+ Tips
+ Οι Αυτοκόλλητες Νάρκες είναι ένα τέλειο εργαλείο για να δημιουργηθούν μικρές αλυσιδωτές αντιδράσεις που βάζουν τους αντίπαλους σκαντζόχοιρους σε έντονες καταστάσεις ... ή στο νερό.
+
+
+ The Hammer is most effective when used on bridges or girders. Hit hogs will just break through the ground.
+ Tips
+ Το Σφυρί είναι πιο αποτελεσματικό όταν χρησιμοποιείται σε γέφυρες ή δοκούς. Οι σκατζόχοιροι απλώς θα "φυτευθούν" στο έδαφος.
+
+
+ If you're stuck behind an enemy hedgehog, use the Hammer to free yourself without getting damaged by an explosion.
+ Tips
+ Εάν είστε κολλημένοι πίσω από έναν εχθρικό σκαντζόχοιρο, χρησιμοποιήστε το Σφυρί για να ελευθερώσετε τον εαυτό σας χωρίς να πάθετε ζημιές από έκρηξη.
+
+
+ The Cake's maximum walking distance depends on the ground it has to pass. Use [attack] to detonate it early.
+ Tips
+ Η μέγιστη απόσταση που διανύει η Τούρτα εξαρτάται από το έδαφος το οποίο πρέπει να διαβεί. Χρησιμοποιήστε το κουμπί της επίθεσης για προκαλέσετε την έκρηξη νωρίτερα.
+
+
+ The Flame Thrower is a weapon but it can be used for tunnel digging as well.
+ Tips
+ Το φλογοβόλο είναι όπλο μεν, αλλά μπορεί να χρησιμοποιηθεί εξίσου καλά για σκάψιμο σήραγγας.
+
+
+ Use the Incinerating Grenade to temporary keep hedgehogs from passing terrain such as tunnels or platforms.
+ Tips
+ Χρησιμοποιήστε την Καυστική Χειροβομβίδα για να εμποδίσετε προσωρινώς τους σκατζόχοιρους από το να διασχίσουν έδαφος, όπως σήραγγες ή εξέδρες.
+
+
+ Want to know who's behind the game? Click on the Hedgewars logo in the main menu to see the credits.
+ Tips
+ Θέλετε να μάθετε ποιός είναι πίσω από το παιχνίδι; Πατήστε το λογότυπο Hedgewars στο κυρίως μενου για να δείτε τα credits.
+
+
+ Like Hedgewars? Become a fan on %1 or follow us on %2!
+ Tips
+ Σας αρέσει το Hedgewars; Γίνετε οπαδός στο %1 ή ακολουθήστε μας στο %2!
+
+
+ Feel free to draw your own graves, hats, flags or even maps and themes! But note that you'll have to share them somewhere to use them online.
+ Tips
+ Δημιουργήστε ελεύθερα τους δικούς σας τύμβους, τα καπέλα σας, σημαίες ή ακόμα χάρτες και θέματα! Σημειώστε όμως ότι θα πρέπει να τα μοιραστείτε κάπου για να τα χρησιμοποιήσετε σε διαδικτυακό παιχνίδι.
+
+
+ Really want to wear a specific hat? Donate to us and receive an exclusive hat of your choice!
+ Tips
+ Σας αρέσει πραγματικά να φοράτε ένα συγκεκριμένο καπέλο; Κάντε μια δωρεά σε μας και λάβετε ένα αποκλειστικό καπέλο της επιλογής σας!
+
+
+ Keep your video card drivers up to date to avoid issues playing the game.
+ Tips
+ Αναβαθμίστε τους οδηγούς της κάρτας γραφικών σας για να αποφύγετε τυχόν προβλήματα παίζοντας το παιχνίδι.
+
+
+ You can find your Hedgewars configuration files under "My Documents\Hedgewars". Create backups or take the files with you, but don't edit them by hand.
+ Tips
+ Μπορείτε να βρείτε τα αρχεία ρυθμίσεων του Hedgewars στο "My Documents\Hedgewars". Δημιουργήστε αντίγραφα ασφαλείας ή πάρτε τα αρχεία μαζί σας, αλλά μην τα επεξεργαστείτε χειροκίνητα.
+
+
+ You're able to associate Hedgewars related files (savegames and demo recordings) with the game to launch them right from your favorite file or internet browser.
+ Tips
+ Μπορείτε να αντιστοιχίσετε τα αντίστοιχα αρχεία του Hedgewars (σωσμένα παιχνίδια και εγγραφές επίδειξης) με το παιχνίδι, έτσι ώστε να τα τρέχετε απευθείας από τον αγαπημένο σας περιηγητή αρχείων ή διαδικτύου.
+
+
+ Want to save ropes? Release the rope in mid air and then shoot again. As long as you don't touch the ground you'll reuse your rope without wasting ammo!
+ Tips
+ Θέλετε να κάνετε οικονομία στα σχοινιά; Αφήστε το σχοινί ενώσο βρίσκεστε στον αέρα και στη συνέχεια πυροβολήστε ξανά. Όσο δεν αγγίζετε το έδαφος θα επαναχρησιμοποιείτε το σχοινί σας χωρίς σπατάλη πυρομαχικών!
+
+
+ You can find your Hedgewars configuration files under "Library/Application Support/Hedgewars" in your home directory. Create backups or take the files with you, but don't edit them by hand.
+ Tips
+ Μπορείτε να βρείτε τα αρχεία ρυθμίσεων του Hedgewars στο "Library/Application Support/Hedgewars" στον προσωπικό σας φάκελο. Δημιουργήστε αντίγραφα ασφαλείας ή πάρτε τα αρχεία μαζί σας, αλλά μην τα επεξεργαστείτε χειροκίνητα.
+
+
+ You can find your Hedgewars configuration files under ".hedgewars" in your home directory. Create backups or take the files with you, but don't edit them by hand.
+ Tips
+ Μπορείτε να βρείτε τα αρχεία ρυθμίσεων του Hedgewars στο ".hedgewars" στον προσωπικό σας φάκελο. Δημιουργήστε αντίγραφα ασφαλείας ή πάρτε τα αρχεία μαζί σας, αλλά μην τα επεξεργαστείτε χειροκίνητα.
+
+
+
+ PageMultiplayer
+
+ Start
+ Εκκίνηση
+
+
+
+ PageNet
+
+ Error
+ Σφάλμα
+
+
+ Please select server from the list above
+ Παρακαλώ επιλέξτε εξυπηρετητή από την παρακάτω λίστα
+
+
+
+ PageNetGame
+
+ Control
+ Έλεγχος
+
+
+
+ PageNetType
+
+ LAN game
+ Παιχνίδι σε δίκτυο (LAN)
+
+
+ Official server
+ Επίσημος εξυπηρετητής
+
+
+
+ PageOptions
+
+ New team
+ Νέα ομάδα
+
+
+ Edit team
+ Επεξεργασία ομάδας
+
+
+ Delete team
+ Διαγραφή ομάδας
+
+
+ New weapon scheme
+ Νέος σχεδιασμός όπλων
+
+
+ Edit weapon scheme
+ Επεξεργασία σχεδιασμού όπλων
+
+
+ Delete weapon scheme
+ Διαγραφή σχεδιασμού όπλων
+
+
+ You can't edit teams from team selection. Go back to main menu to add, edit or delete teams.
+ Δεν μπορείτε να επεξεργαστείτε τις ομάδες από την επιλογή ομάδων. Πηγαίνετε πίσω στην κύρια σελίδα για να προσθέσετε, να επεξεργαστείτε ή να διαγράψετε ομάδες.
+
+
+
+ PagePlayDemo
+
+ Error
+ Σφάλμα
+
+
+ OK
+ Εντάξει
+
+
+ Rename dialog
+ Μετονομασία διαλόγου
+
+
+ Enter new file name:
+ Εισάγετε το όνομα του νέου αρχείου :
+
+
+ Cannot rename to
+ Δεν μπορεί να γίνει μετονομασία σε
+
+
+ Cannot delete file
+ Δεν μπορεί να διαγραφεί το αρχείο
+
+
+ Please select record from the list
+ Παρακαλώ επιλέξτε εγγραφή από την λίστα
+
+
+
+ PageRoomsList
+
+ Create
+ Δημιουργία
+
+
+ Join
+ Σύνδεση
+
+
+ Refresh
+ Ανανέωση
+
+
+ Error
+ Σφάλμα
+
+
+ OK
+ Εντάξει
+
+
+ Admin features
+ Χαρακτηριστικά διαχειριστή
+
+
+ Room Name:
+ Όνομα δωματίου :
+
+
+ This game is in lobby.
+You may join and start playing once the game starts.
+ Αυτό το παιχνίδι είναι σε αναμονή.
+Μπορείτε να συνδεθείτε και να παίξετε μόλις το παιχνίδι ξεκινήσει.
+
+
+ This game is in progress.
+You may join and spectate now but you'll have to wait for the game to end to start playing.
+ Αυτό το παιχνίδι είναι σε εξέλιξη.
+Μπορείτε να συνδεθείτε και να παρακολουθείτε την εξέλιξη αλλά θα πρέπει να περιμένετε να τελειώσει το παιχνίδι για να ξεκινήσετε να παίζετε.
+
+
+ %1 is the host. He may adjust settings and start the game.
+ %1 είναι ο οικοδεσπότης. Μπορεί να προσαρμόζει τις ρυθμίσεις και να ξεκινά το παιχνίδι.
+
+
+ Random Map
+ Τυχαίος χάρτης
+
+
+ Games may be played on precreated or randomized maps.
+ Τα παιχνίδια μπορούν να παίζονται σε προκατασκευασμένους ή τυχαιοποιημένους χάρτες.
+
+
+ The Game Scheme defines general options and preferences like Round Time, Sudden Death or Vampirism.
+ Ο σχεδιασμός του παιχνιδιού καθορίζει τις γενικές επιλογές και τις προτιμήσεις όπως τον Χρόνο του Γύρου, τον Ξαφνικό Θάνατο ή τον Βαμπιρισμό.
+
+
+ The Weapon Scheme defines available weapons and their ammunition count.
+ Ο Σχεδιασμός των Όπλων καθορίζει τα διαθέσιμα όπλα και το ποσό των πυρομαχικών.
+
+
+ There are %1 clients connected to this room.
+
+ Υπάρχει %1 χρήστης συνδεδεμένος σε αυτό το δωμάτιο.
+ Υπάρχουν %1 χρήστες συνδεδεμένοι σε αυτό το δωμάτιο.
+
+
+
+ There are %1 teams participating in this room.
+
+ %1 ομάδα συμμετέχει σε αυτό το δωμάτιο.
+ %1 ομάδες συμμετέχουν σε αυτό το δωμάτιο.
+
+
+
+ Please enter room name
+ Εισάγετε το όνομα του δωματίου
+
+
+ Please select room from the list
+ Παρακαλώ επιλέξτε δωμάτιο από τη λίστα
+
+
+ Random Maze
+ Τυχαίος Λαβύρινθος
+
+
+ State:
+ Κατάσταση :
+
+
+ Rules:
+ Κανόνες :
+
+
+ Weapons:
+ Όπλα :
+
+
+ Search:
+ Αναζήτηση :
+
+
+ Clear
+ Καθαρισμός
+
+
+ Warning
+ Προσοχή
+
+
+ The game you are trying to join has started.
+Do you still want to join the room?
+ Το παιχνίδι στο οποίο προσπαθείτε να συνδεθείτε έχει ήδη ξεκινήσει.
+Θέλετε ακόμα να συνδεθείτε με το δωμάτιο;
+
+
+
+ PageScheme
+
+ Defend your fort and destroy the opponents, two team colours max!
+ Υπερασπιστείτε το φρούριό σας και καταστρέψτε τους αντιπάλους σας, μέγιστο επιτρεπόμενο δυο χρώματα ομάδων!
+
+
+ Teams will start on opposite sides of the terrain, two team colours max!
+ Οι ομάδες θα ξεκινούν σε αντίθετες μεριές της πίστας, μέγιστο επιτρεπόμενο δυο χρώματα ομάδων!
+
+
+ Land can not be destroyed!
+ Το έδαφος δεν μπορεί να καταστραφεί!
+
+
+ Add an indestructable border around the terrain
+ Προσθήκη ενός άφθαρτου συνόρου γύρω από την πίστα
+
+
+ Lower gravity
+ Μικροβαρύτητα
+
+
+ Assisted aiming with laser sight
+ Υποβοηθούμενη στόχευση με διόπτρα laser
+
+
+ All hogs have a personal forcefield
+ Όλοιοι σκατζόχοιροι έχουν ατομικό πεδίο δυνάμεων
+
+
+ Enable random mines
+ Enable random mines
+
+
+ Gain 80% of the damage you do back in health
+ Κερδίστε το 80% της ζημιάς που προκαλείτε σε υγεία
+
+
+ Share your opponents pain, share their damage
+ Μοιραστείτε τον πόνο του αντιπάλου σας, μοιραστείτε τη ζημιά του
+
+
+ Your hogs are unable to move, put your artillery skills to the test
+ Οι σκατζόχοιροί σας είναι αδύνατον να κινηθούν, δοκιμάστε τις ικανότητες του πυροβολικού σας
+
+
+ Random
+ Τυχαίο
+
+
+ Seconds
+ Δευτερόλεπτα
+
+
+ New
+ Νέο
+
+
+ Delete
+ Διαγραφή
+
+
+ Order of play is random instead of in room order.
+ Η σειρά παιξίματος είναι τυχαία αντί για την σειρά του δωματίου.
+
+
+ Play with a King. If he dies, your side dies.
+ Παίξτε με ένα βασιλιά. Εαν πεθάνει, η ομάδα σας χάνει.
+
+
+ Take turns placing your hedgehogs before the start of play.
+ Τοποθετήστε εναλλάξ με τους αντιπάλους σας τους σκατζόχοιρούς σας στην πίστα προτού ξεκινήσει το παιχνίδι.
+
+
+ Ammo is shared between all teams that share a colour.
+ Τα πυρομαχικά είναι κοινά ανάμεσα σε όλες τις ομάδες που μοιράζονται ένα χρώμα.
+
+
+ Disable girders when generating random maps.
+ Απενεργοποίηση δοκών όταν δημιουργούνται τυχαίοι χάρτες.
+
+
+ Disable land objects when generating random maps.
+ Απενεργοποίηση εδαφικών αντικειμένων όταν δημιουργούνται τυχαίοι χάρτες.
+
+
+ AI respawns on death.
+ Οι σκατζόχοιροι που ελέγχονται από τον υπολογιστή "ξαναφυτρώνουν" όταν πεθάνουν.
+
+
+ All (living) hedgehogs are fully restored at the end of turn
+ Όλοι (οι ζωντανοί) σκατζόχοιροι αποκαθίστανται πλήρως στο τέλος κάθε γύρου
+
+
+ Attacking does not end your turn.
+ Η επίθεση δεν εξαντλεί τη σειρά σας.
+
+
+ Weapons are reset to starting values each turn.
+ Όλα τα όπλα επανέρχονται στις αρχικές τιμές σε κάθε γύρο.
+
+
+ Each hedgehog has its own ammo. It does not share with the team.
+ Κάθε σκατζόχοιρος έχει τα δικά του πυρομαχικά. Δεν τα μοιράζεται με την ομάδα.
+
+
+
+ PageSelectWeapon
+
+ Default
+ Εξ'ορισμού
+
+
+ Delete
+ Διαγραφή
+
+
+
+ PageSinglePlayer
+
+ Simple Game (a quick game against the computer, settings are chosen for you)
+ Απλό Παιχνίδι (ένα γρήγορο παιχνίδι εναντίον του υπολογιστή, οι ρυθμίσεις είναι προεπιλεγμένεs)
+
+
+ Multiplayer (play a hotseat game against your friends, or AI teams)
+ Πολλοί Παίχτες (ένα παιχνίδι εναντίον των φίλων σας ή του υπολογιστή)
+
+
+ Training Mode (Practice your skills in a range of training missions). IN DEVELOPMENT
+ Εξάσκηση (Εξασκήστε τις δεξιότητές σας σε ένα εύρος εκπαιδευτικών αποστολών). ΣΕ ΕΞΕΛΙΞΗ
+
+
+ Demos (Watch recorded demos)
+ Επιδείξεις (Παρακολουθήστε καταγεγραμμένες επιδείξεις)
+
+
+ Load (Load a previously saved game)
+ Φόρτωση Σωσμένου Παιχνιδιού (Φορτώστε ένα σωσμένο παιχνίδι)
+
+
+ Campaign Mode (...). IN DEVELOPMENT
+ Εκστρατεία ΣΕ ΕΞΕΛΙΞΗ
+
+
+
+ QAction
+
+ Kick
+ Απόλυση
+
+
+ Info
+ Πληροφορίες
+
+
+ Start
+ Έναρξη
+
+
+ Restrict Joins
+ Περιορισμός συνδέσεων
+
+
+ Restrict Team Additions
+ Περιορισμός προσθήκης ομάδων
+
+
+ Ban
+ Απαγόρευση
+
+
+ Follow
+ Ακολουθώ
+
+
+ Ignore
+ Αγνοώ
+
+
+ Add friend
+ Προσθήκη φίλου
+
+
+ Unignore
+ Κατάργηση αγνόησης
+
+
+ Remove friend
+ Αφαίρεση φίλου
+
+
+
+ QCheckBox
+
+ Check for updates at startup
+ Έλεγχος για ενημερώσεις κατά την εκκίνηση
+
+
+ Fullscreen
+ Πλήρης οθόνη
+
+
+ Frontend fullscreen
+ Διεπαφή σε πλήρη οθόνη
+
+
+ Enable sound
+ Ενεργοποίηση ήχου
+
+
+ Enable music
+ Ενεργοποίηση μουσικής
+
+
+ Show FPS
+ Προβολή FPS
+
+
+ Alternative damage show
+ Εναλλακτική προβολή ζημιάς
+
+
+ Append date and time to record file name
+ Προσάρτηση ημερομηνίας και ώρας στην εγγραφή του ονόματος αρχείου
+
+
+ Reduced quality
+ Reduced quality
+
+
+ Show ammo menu tooltips
+ Προβολή συμβουλών στον κατάλογο των πυρομαχικών
+
+
+ Enable frontend sounds
+ Ενεργοποίηση ήχων διεπαφής
+
+
+ Enable frontend music
+ Ενεργοποίηση μουσικής διεπαφής
+
+
+ Frontend effects
+ Ενεργοποίηση εφε διεπαφής
+
+
+
+ QComboBox
+
+ generated map...
+ Δημιουργημένος χάρτης...
+
+
+ Human
+ Άνθρωπος
+
+
+ Level
+ Επίπεδο
+
+
+ (System default)
+ (Εξ'ορισμού συστήματος)
+
+
+ Mission
+ Αποστολή
+
+
+ generated maze...
+ Δημιουργημένος λαβύρινθος...
+
+
+ Community
+ Κοινότητα
+
+
+ Any
+ Οποιοσδήποτε
+
+
+ In lobby
+ Σε αναμονή
+
+
+ In progress
+ Σε εξέλιξη
+
+
+ Default
+ Default
+
+
+
+ QGroupBox
+
+ Team Members
+ Μέλη Ομάδας
+
+
+ Fort
+ Φρούριο
+
+
+ Key binds
+ Δεσμεύσεις κουμπιών
+
+
+ Teams
+ Ομάδες
+
+
+ Weapons
+ Όπλα
+
+
+ Audio/Graphic options
+ Επιλογές Ήχου/Γραφικών
+
+
+ Net game
+ Δικτυακό παιχνίδι
+
+
+ Playing teams
+ Ομάδες που παίζουν
+
+
+ Game Modifiers
+ Τροποποιητές παιχνιδιού
+
+
+ Basic Settings
+ Βασικές ρυθμίσεις
+
+
+ Team Settings
+ Ρυθμίσεις ομάδας
+
+
+ Misc
+ Διάφορα
+
+
+
+ QLabel
+
+ Mines Time
+ Φυτίλι Νάρκης
+
+
+ Mines
+ Νάρκες
+
+
+ Version
+ Έκδοση
+
+
+ This program is distributed under the GNU General Public License
+ Το πρόγραμμα αυτό διανέμεται κάτω από την GNU General Public License
+
+
+ Developers:
+ Προγραμματιστές :
+
+
+ Art:
+ Γραφικά:
+
+
+ Sounds:
+ Ήχοι:
+
+
+ Translations:
+ Μεταγλωττίσεις:
+
+
+ Special thanks:
+ Ειδικές ευχαριστίες:
+
+
+ Weapons
+ Όπλα
+
+
+ Host:
+ Αποδέκτης (host):
+
+
+ Port:
+ Θύρα :
+
+
+ Net nick
+ Ψευδώνυμο
+
+
+ Resolution
+ Ανάλυση
+
+
+ FPS limit
+ Όριο FPS
+
+
+ Server name:
+ Όνομα εξυπηρετητή :
+
+
+ Server port:
+ Θύρα εξυπηρετητή :
+
+
+ Initial sound volume
+ Αρχική ένταση ήχου
+
+
+ Damage Modifier
+ Τροποποιητής ζημιάς
+
+
+ Turn Time
+ Χρόνος Γύρου
+
+
+ Initial Health
+ Αρχική Υγεία
+
+
+ Sudden Death Timeout
+ Χρόνος μέχρι τον Ξαφνικό Θάνατο
+
+
+ Scheme Name:
+ Όνομα Σχεδιασμού :
+
+
+ Crate Drops
+ Ρίψεις κιβωτίων
+
+
+ Game scheme
+ Σχεδιασμός Παιχνιδιού
+
+
+ % Dud Mines
+ % Τζούφιες Νάρκες
+
+
+ Name
+ Όνομα
+
+
+ Type
+ Τύπος
+
+
+ Grave
+ Τύμβος
+
+
+ Flag
+ Σημαία
+
+
+ Voice
+ Φωνή
+
+
+ Locale
+ Γλώσσα
+
+
+ Restart game to apply
+ Επανεκκινήστε το παιχνίδι για εφαρμογή των αλλαγών
+
+
+ Explosives
+ Εκρηκτικά
+
+
+ Tip:
+ Συμβουλή :
+
+
+ This development build is 'work in progress' and may not be compatible with other versions of the game. Some features might be broken or incomplete. Use at your own risk!
+ Αυτή η διανομή είναι «έργο σε εξέλιξη» και μπορεί να μην είναι συμβατή με άλλες εκδόσεις του παιχνιδιού. Ορισμένες λειτουργίες μπορεί να μη δουλεύουν ή να είναι ελλιπείς. Χρησιμοποιήστε την με δική σας ευθύνη!
+
+
+ Quality
+ Ποιότητα
+
+
+ % Health Crates
+ % Κιβώτια Υγείας
+
+
+ Health in Crates
+ Υγεία στα κιβώτια
+
+
+ Sudden Death Water Rise
+ Άνοδος στάθμης νερού στον Ξαφνικό Θάνατο
+
+
+ Sudden Death Health Decrease
+ Μείωση Υγείας στον Ξαφνικό Θάνατο
+
+
+ Bind schemes and weapons
+ Σύζευξη σχεδιασμών και όπλων
+
+
+
+ QLineEdit
+
+ unnamed
+ Ανώνυμο
+
+
+
+ QMainWindow
+
+ Hedgewars %1
+ Hedgewars %1
+
+
+
+ QMessageBox
+
+ Network
+ Δίκτυο
+
+
+ Connection to server is lost
+ Η σύνδεση με τον εξυπηρετητή διακόπηκε
+
+
+ Error
+ Σφάλμα
+
+
+ Failed to open data directory:
+%1
+Please check your installation
+ Αποτυχία ανοίγματος φακέλου δεδομένων :
+ %1
+Παρακαλώ ελέγξτε την εγκατάστασή σας
+
+
+ Weapons
+ Όπλα
+
+
+ Can not edit default weapon set
+ Can not edit default weapon set
+
+
+ Can not delete default weapon set
+ Δεν μπορεί να διαγραφεί η βασική σειρά όπλων
+
+
+ Really delete this weapon set?
+ Σίγουρα να διαγραφεί αυτή η σειρά όπλων ;
+
+
+ Can not overwrite default weapon set '%1'!
+ Δεν μπορεί να αντικατασταθεί η βασική σειρά όπλων '%1'!
+
+
+ All file associations have been set.
+ Όλες οι αντιστοιχίσεις αρχείων έχουν τεθεί.
+
+
+ File association failed.
+ Η αντιστοίχιση του αρχείου απέτυχε.
+
+
+
+ QObject
+
+ Error
+ Σφάλμα
+
+
+ Cannot create directory %1
+ Δεν μπορεί να δημιουργηθεί ο κατάλογος %1
+
+
+ OK
+ Εντάξει
+
+
+ Nickname
+ Ψευδώνυμο
+
+
+ Please enter your nickname
+ Παρακαλώ εισάγετε το ψευδώνυμό σας
+
+
+
+ QPushButton
+
+ default
+ Εξ'ορισμού
+
+
+ OK
+ Εντάξει
+
+
+ Cancel
+ Άκυρο
+
+
+ Start server
+ Εκκίνηση εξυπηρετητή
+
+
+ Connect
+ Σύνδεση
+
+
+ Update
+ Αναβάθμιση
+
+
+ Specify
+ Καθορισμός
+
+
+ Start
+ Εκκίνηση
+
+
+ Go!
+ Ξεκίνα!
+
+
+ Play demo
+ Αναπαραγωγή επίδειξης
+
+
+ Rename
+ Μετονομασία
+
+
+ Delete
+ Διαγραφή
+
+
+ Load
+ Φόρτωση
+
+
+ Setup
+ Ρύθμιση
+
+
+ Ready
+ Έτοιμο
+
+
+ Random Team
+ Τυχαία Ομάδα
+
+
+ Associate file extensions
+ Αντιστοίχηση επεκτάσεων αρχείων
+
+
+
+ QTableWidget
+
+ Room Name
+ Όνομα Δωματίου
+
+
+ C
+ C
+
+
+ T
+ T
+
+
+ Owner
+ Ιδιοκτήτης
+
+
+ Map
+ Χάρτης
+
+
+ Rules
+ Κανόνες
+
+
+ Weapons
+ Όπλα
+
+
+
+ SelWeaponWidget
+
+ Weapon set
+ Ρυθμίσεις Όπλων
+
+
+ Probabilities
+ Πιθανότητες
+
+
+ Ammo in boxes
+ Πυρομαχικά στα κιβώτια
+
+
+ Delays
+ Καθυστερήσεις
+
+
+
+ TCPBase
+
+ Error
+ Σφάλμα
+
+
+ Unable to start the server: %1.
+ Δεν είναι δυνατόν να ξεκινήσει ο εξυπηρετητής : %1.
+
+
+ Unable to run engine: %1 (
+ Δεν είναι δυνατόν να τρέξει η μηχανή : %1 (
+
+
+
+ ToggleButtonWidget
+
+ Vampirism
+ Βαμπιρισμός
+
+
+ Karma
+ Μοίρα
+
+
+ Artillery
+ Πυροβολικό
+
+
+ Fort Mode
+ Λειτουργία Φρούριου
+
+
+ Divide Teams
+ Διαίρεση Ομάδων
+
+
+ Solid Land
+ Στερεό Έδαφος
+
+
+ Add Border
+ Προσθήκη Συνόρου
+
+
+ Low Gravity
+ Μικροβαρύτητα
+
+
+ Laser Sight
+ Διόπτρα Laser
+
+
+ Invulnerable
+ Άτρωτος
+
+
+ Add Mines
+ Add Mines
+
+
+ Random Order
+ Τυχαία Σειρά
+
+
+ King
+ Βασιλέας
+
+
+ Place Hedgehogs
+ Τοποθέτηση σκατζόχοιρων
+
+
+ Clan Shares Ammo
+ Η συμμορία μοιράζεται τα πυρομαχικά
+
+
+ Disable Girders
+ Απενεργοποίηση δοκών
+
+
+ Disable Land Objects
+ Απενεργοποίηση Αντικειμένων Εδάφους
+
+
+ AI Survival Mode
+ Λειτουργία Επιβίωσης για τον υπολογιστή
+
+
+ Reset Health
+ Επαναφορά Υγείας
+
+
+ Unlimited Attacks
+ Απεριόριστες Επιθέσεις
+
+
+ Reset Weapons
+ Επαναφορά Όπλων
+
+
+ Per Hedgehog Ammo
+ Πυρομαχικά ανά σκατζόχοιρο
+
+
+
+ binds
+
+ up
+ πάνω
+
+
+ left
+ αριστερά
+
+
+ right
+ δεξιά
+
+
+ down
+ κάτω
+
+
+ attack
+ επίθεση
+
+
+ precise aim
+ ακριβής στόχευση
+
+
+ put
+ τοποθέτηση
+
+
+ switch
+ αναλλαγή
+
+
+ find hedgehog
+ εύρεση σκατζόχοιρου
+
+
+ ammo menu
+ κατάλογος πυρομαχικών
+
+
+ slot 1
+ θέση 1
+
+
+ slot 2
+ θέση 2
+
+
+ slot 3
+ θέση 3
+
+
+ slot 4
+ θέση 4
+
+
+ slot 5
+ θέση 5
+
+
+ slot 6
+ θέση 6
+
+
+ slot 7
+ θέση 7
+
+
+ slot 8
+ θέση 8
+
+
+ slot 9
+ θέση 9
+
+
+ timer 1 sec
+ χρονόμετρο 1 δευ
+
+
+ timer 2 sec
+ χρονόμετρο 2 δευ
+
+
+ timer 3 sec
+ χρονόμετρο 3 δευ
+
+
+ timer 4 sec
+ χρονόμετρο 4 δευ
+
+
+ timer 5 sec
+ χρονόμετρο 5 δευ
+
+
+ chat
+ συνομιλία
+
+
+ chat history
+ ιστορικό συνομιλίας
+
+
+ pause
+ παύση
+
+
+ confirmation
+ επιβεβαίωση
+
+
+ volume down
+ μείωση φωνής
+
+
+ volume up
+ αύξηση φωνής
+
+
+ change mode
+ αλλαγή τρόπου
+
+
+ capture
+ αιχμαλώτιση
+
+
+ hedgehogs
+info
+ πληροφορίες
+σκατζόχοιρου
+
+
+ quit
+ έξοδος
+
+
+ zoom in
+ μεγέθυνση
+
+
+ zoom out
+ σμίκρυνση
+
+
+ reset zoom
+ επαναφορά μεγέθυνσης
+
+
+ long jump
+ άλμα εις μήκος
+
+
+ high jump
+ άλμα εις ύψος
+
+
+ slot 10
+ θέση 10
+
+
+
+ binds (categories)
+
+ Basic controls
+ Βασικές Ρυθμίσεις
+
+
+ Weapon controls
+ Ρυθμίσεις Όπλων
+
+
+ Camera and cursor controls
+ Ρυθμίσεις κάμερας και δείκτη ποντικιού
+
+
+ Other
+ Διάφορα
+
+
+
+ binds (descriptions)
+
+ Move your hogs and aim:
+ Μετακινήστε τους σκατζόχοιρούς σας και σημαδέψτε :
+
+
+ Traverse gaps and obstacles by jumping:
+ Διασχίστε κενά και εμπόδια πηδώντας :
+
+
+ Fire your selected weapon or trigger an utility item:
+ Πυροδοτήστε το επιλεγμένο σας όπλο ή ενεργοποιήστε ένα βοήθημα :
+
+
+ Pick a weapon or a target location under the cursor:
+ Επιλέξτε ένα όπλο ή μια τοποθεσία στόχου με το δείκτη ποντικιού :
+
+
+ Switch your currently active hog (if possible):
+ Εναλλάξτε τον τρέχον ενεργοποιημένο σκατζόχοιρο (εαν είναι δυνατόν) :
+
+
+ Pick a weapon or utility item:
+ Επιλέξτε ένα όπλο ή ένα βοήθημα :
+
+
+ Set the timer on bombs and timed weapons:
+ Θέστε το χρονόμετρο στις βόμβες και στα χρονοεξαρτημένα όπλα :
+
+
+ Move the camera to the active hog:
+ Μετακινήστε την κάμερα στον τρέχον σκατζόχοιρο :
+
+
+ Move the cursor or camera without using the mouse:
+ Μετακινήστε τον δείκτη του ποντικιού ή την κάμερα δίχως να χρησιμοποιείτε το ποντίκι :
+
+
+ Modify the camera's zoom level:
+ Τροποποιήστε το επίπεδο μεγέθυνσης της κάμερας :
+
+
+ Talk to your team or all participants:
+ Μιλήστε στην ομάδα σας ή σε όλους τους συμμετέχοντες :
+
+
+ Pause, continue or leave your game:
+ Κάντε παύση, συνεχίστε ή εγκαταλείψτε το παιχνίδι σας:
+
+
+ Modify the game's volume while playing:
+ Τροποποιήστε την ένταση της φωνής του παιχνιδιού καθώς παίζετε :
+
+
+ Toggle fullscreen mode:
+ Εναλλάξτε προβολή σε πλήρη οθόνη :
+
+
+ Take a screenshot:
+ Λάβετε ένα στιγμιότυπο οθόνης :
+
+
+ Toggle labels above hedgehogs:
+ Εναλλάξτε τις επιγραφές πάνω από τους σκατζόχοιρους :
+
+
+
+ binds (keys)
+
+ Axis
+ Άξονας
+
+
+ (Up)
+ (Πάνω)
+
+
+ (Down)
+ (Κάτω)
+
+
+ Hat
+ Καπέλο
+
+
+ (Left)
+ (Αριστερά)
+
+
+ (Right)
+ (Δεξιά)
+
+
+ Button
+ Κουμπί
+
+
+ Keyboard
+ Πληκτρολόγιο
+
+
+ Delete
+ Delete
+
+
+ Mouse: Left button
+ Ποντίκι : Αριστερό Κουμπί
+
+
+ Mouse: Middle button
+ Ποντίκι : Μεσαίο Κουμπί
+
+
+ Mouse: Right button
+ Ποντίκι : Δεξί Κουμπί
+
+
+ Mouse: Wheel up
+ Ποντίκι : Ροδέλα Πάνω
+
+
+ Mouse: Wheel down
+ Ποντίκι : Ροδέλα Κάτω
+
+
+ Backspace
+ Backspace
+
+
+ Tab
+ Tab
+
+
+ Clear
+ Clear
+
+
+ Return
+ Return
+
+
+ Pause
+ Παύση
+
+
+ Escape
+ Escape
+
+
+ Space
+ Διάστημα
+
+
+ Numpad 0
+ Numpad 0
+
+
+ Numpad 1
+ Numpad 1
+
+
+ Numpad 2
+ Numpad 2
+
+
+ Numpad 3
+ Numpad 3
+
+
+ Numpad 4
+ Numpad 4
+
+
+ Numpad 5
+ Numpad 5
+
+
+ Numpad 6
+ Numpad 6
+
+
+ Numpad 7
+ Numpad 7
+
+
+ Numpad 8
+ Numpad 8
+
+
+ Numpad 9
+ Numpad 9
+
+
+ Numpad .
+ Numpad .
+
+
+ Numpad /
+ Numpad /
+
+
+ Numpad *
+ Numpad *
+
+
+ Numpad -
+ Numpad -
+
+
+ Numpad +
+ Numpad +
+
+
+ Enter
+ Enter
+
+
+ Equals
+ Ίσον
+
+
+ Up
+ Πάνω
+
+
+ Down
+ Κάτω
+
+
+ Right
+ Δεξιά
+
+
+ Left
+ Αριστερά
+
+
+ Insert
+ Insert
+
+
+ Home
+ Home
+
+
+ End
+ End
+
+
+ Page up
+ Page up
+
+
+ Page down
+ Page down
+
+
+ Num lock
+ Num lock
+
+
+ Caps lock
+ Caps lock
+
+
+ Scroll lock
+ Scroll lock
+
+
+ Right shift
+ Δεξί Shift
+
+
+ Left shift
+ Αριστερό Shift
+
+
+ Right ctrl
+ Δεξί Ctrl
+
+
+ Left ctrl
+ Αριστερό Ctrl
+
+
+ Right alt
+ Δεξί Alt
+
+
+ Left alt
+ Αριστερό Alt
+
+
+ Right meta
+ Δεξί meta
+
+
+ Left meta
+ Αριστερό meta
+
+
+ A button
+ Κουμπί Α
+
+
+ B button
+ Κουμπί Β
+
+
+ X button
+ Κουμπί Χ
+
+
+ Y button
+ Κουμπί Υ
+
+
+ LB button
+ Κουμπί LB
+
+
+ RB button
+ Κουμπί RB
+
+
+ Back button
+ Κουμπί Back
+
+
+ Start button
+ Κουμπί Start
+
+
+ Left stick
+ Left stick
+
+
+ Right stick
+ Right stick
+
+
+ Left stick (Right)
+ Left stick (Right)
+
+
+ Left stick (Left)
+ Left stick (Left)
+
+
+ Left stick (Down)
+ Left stick (Down)
+
+
+ Left stick (Up)
+ Left stick (Up)
+
+
+ Left trigger
+ Left trigger
+
+
+ Right trigger
+ Right trigger
+
+
+ Right stick (Down)
+ Right stick (Down)
+
+
+ Right stick (Up)
+ Right stick (Up)
+
+
+ Right stick (Right)
+ Right stick (Right)
+
+
+ Right stick (Left)
+ Right stick (Left)
+
+
+ DPad
+ DPad
+
+
+
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Locale/hedgewars_en.ts
--- a/share/hedgewars/Data/Locale/hedgewars_en.ts Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Locale/hedgewars_en.ts Tue Feb 01 00:18:25 2011 +0100
@@ -548,11 +548,6 @@
- The Windows version of Hedgewars supports Xfire. Make sure to add Hedgwars to its game list so your friends can see you playing.
- Tips
-
-
- You should never install Hedgewars on computers you don't own (school, university, work, etc.). Please ask the responsible person instead!Tips
@@ -618,11 +613,6 @@
- The Homing Bee can be tricky to use. It's turn radius depends on it's velocity, so try to not use full power.
- Tips
-
-
- Sticky Mines are a perfect tool to create small chain reactions knocking enemy hedgehogs into dire situations ... or water.Tips
@@ -648,11 +638,6 @@
- Use the Incinerating Grenade to temporary keep hedgehogs from passing terrain such as tunnels or platforms.
- Tips
-
-
- Want to know who's behind the game? Click on the Hedgewars logo in the main menu to see the credits.Tips
@@ -702,6 +687,21 @@
Tips
+
+ The Windows version of Hedgewars supports Xfire. Make sure to add Hedgewars to its game list so your friends can see you playing.
+ Tips
+
+
+
+ The Homing Bee can be tricky to use. Its turn radius depends on it's velocity, so try to not use full power.
+ Tips
+
+
+
+ Use the Molotov or Flame Thrower to temporary keep hedgehogs from passing terrain such as tunnels or platforms.
+ Tips
+
+ PageMultiplayer
@@ -1261,6 +1261,46 @@
hand drawn map...
+
+ Disabled
+
+
+
+ Red/Cyan
+
+
+
+ Cyan/Red
+
+
+
+ Red/Blue
+
+
+
+ Blue/Red
+
+
+
+ Red/Green
+
+
+
+ Green/Red
+
+
+
+ Side-by-side
+
+
+
+ Top-Bottom
+
+
+
+ Wiggle
+
+ QGroupBox
@@ -1491,6 +1531,10 @@
Gameplay
+
+ Stereo rendering
+
+ QLineEdit
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Locale/hedgewars_es.ts
--- a/share/hedgewars/Data/Locale/hedgewars_es.ts Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Locale/hedgewars_es.ts Tue Feb 01 00:18:25 2011 +0100
@@ -567,7 +567,7 @@
The Windows version of Hedgewars supports Xfire. Make sure to add Hedgwars to its game list so your friends can see you playing.Tips
- La versión para Windows de Hedgewars soporta Xfire. Recuerda añadie Hedgewars a tu lista de juegos favoritos para que tus amigos sepan cuándo estás jugando.
+ La versión para Windows de Hedgewars soporta Xfire. Recuerda añadie Hedgewars a tu lista de juegos favoritos para que tus amigos sepan cuándo estás jugando.You should never install Hedgewars on computers you don't own (school, university, work, etc.). Please ask the responsible person instead!
@@ -637,7 +637,7 @@
The Homing Bee can be tricky to use. It's turn radius depends on it's velocity, so try to not use full power.Tips
- El abejorro puede ser complicado de usar. Su maniobrabilidad depende de su velocidad, así que intenta no lanzarlo a máxima potencia.
+ El abejorro puede ser complicado de usar. Su maniobrabilidad depende de su velocidad, así que intenta no lanzarlo a máxima potencia.Sticky Mines are a perfect tool to create small chain reactions knocking enemy hedgehogs into dire situations ... or water.
@@ -667,7 +667,7 @@
Use the Incinerating Grenade to temporary keep hedgehogs from passing terrain such as tunnels or platforms.Tips
- Puedes usar el cóctel molotov para evitar que erizos enemigos crucen túneles angostos o puentes.
+ Puedes usar el cóctel molotov para evitar que erizos enemigos crucen túneles angostos o puentes.Want to know who's behind the game? Click on the Hedgewars logo in the main menu to see the credits.
@@ -724,6 +724,21 @@
TipsPuedes encontrar los archivos de configuración del juego en la carpeta ".hedgewars" dentro de tu directorio personal. Puedes hacer copias de seguridad de los mismos o copiarlos a otro ordenador si lo deseas, pero no intentes editarlos a mano para evitar posibles pérdidas de datos.
+
+ The Windows version of Hedgewars supports Xfire. Make sure to add Hedgewars to its game list so your friends can see you playing.
+ Tips
+
+
+
+ The Homing Bee can be tricky to use. Its turn radius depends on it's velocity, so try to not use full power.
+ Tips
+
+
+
+ Use the Molotov or Flame Thrower to temporary keep hedgehogs from passing terrain such as tunnels or platforms.
+ Tips
+
+ PageMultiplayer
@@ -1315,6 +1330,46 @@
hand drawn map...Mapa dibujado a mano...
+
+ Disabled
+
+
+
+ Red/Cyan
+
+
+
+ Cyan/Red
+
+
+
+ Red/Blue
+
+
+
+ Blue/Red
+
+
+
+ Red/Green
+
+
+
+ Green/Red
+
+
+
+ Side-by-side
+
+
+
+ Top-Bottom
+
+
+
+ Wiggle
+
+ QGroupBox
@@ -1558,6 +1613,10 @@
GameplayTipo de juego
+
+ Stereo rendering
+
+ QLineEdit
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Locale/hedgewars_fi.ts
--- a/share/hedgewars/Data/Locale/hedgewars_fi.ts Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Locale/hedgewars_fi.ts Tue Feb 01 00:18:25 2011 +0100
@@ -559,7 +559,7 @@
The Windows version of Hedgewars supports Xfire. Make sure to add Hedgwars to its game list so your friends can see you playing.Tips
- Windows-versio Hedgewarsista tukee Xfireä. Lisää Hedgewars sen pelilistaan niin kaverisi näkee kun pelaat.
+ Windows-versio Hedgewarsista tukee Xfireä. Lisää Hedgewars sen pelilistaan niin kaverisi näkee kun pelaat.You should never install Hedgewars on computers you don't own (school, university, work, etc.). Please ask the responsible person instead!
@@ -629,7 +629,7 @@
The Homing Bee can be tricky to use. It's turn radius depends on it's velocity, so try to not use full power.Tips
- Mehiläinen voi olla hankala käyttää. Sen säde riippuu nopeudesta, joten älä käytä sitä täydellä voimalla
+ Mehiläinen voi olla hankala käyttää. Sen säde riippuu nopeudesta, joten älä käytä sitä täydellä voimallaSticky Mines are a perfect tool to create small chain reactions knocking enemy hedgehogs into dire situations ... or water.
@@ -659,7 +659,7 @@
Use the Incinerating Grenade to temporary keep hedgehogs from passing terrain such as tunnels or platforms.Tips
- Käytä palavaa kranaattia estämään siilia kulkemasta esimerkiksi tunneleihin ja tasoille.
+ Käytä palavaa kranaattia estämään siilia kulkemasta esimerkiksi tunneleihin ja tasoille.Want to know who's behind the game? Click on the Hedgewars logo in the main menu to see the credits.
@@ -716,6 +716,21 @@
Tips
+
+ The Windows version of Hedgewars supports Xfire. Make sure to add Hedgewars to its game list so your friends can see you playing.
+ Tips
+
+
+
+ The Homing Bee can be tricky to use. Its turn radius depends on it's velocity, so try to not use full power.
+ Tips
+
+
+
+ Use the Molotov or Flame Thrower to temporary keep hedgehogs from passing terrain such as tunnels or platforms.
+ Tips
+
+ PageMultiplayer
@@ -1303,6 +1318,46 @@
hand drawn map...
+
+ Disabled
+
+
+
+ Red/Cyan
+
+
+
+ Cyan/Red
+
+
+
+ Red/Blue
+
+
+
+ Blue/Red
+
+
+
+ Red/Green
+
+
+
+ Green/Red
+
+
+
+ Side-by-side
+
+
+
+ Top-Bottom
+
+
+
+ Wiggle
+
+ QGroupBox
@@ -1533,6 +1588,10 @@
Gameplay
+
+ Stereo rendering
+
+ QLineEdit
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Locale/hedgewars_fr.ts
--- a/share/hedgewars/Data/Locale/hedgewars_fr.ts Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Locale/hedgewars_fr.ts Tue Feb 01 00:18:25 2011 +0100
@@ -9,7 +9,7 @@
copy of
-
+ Copier à partir de ...
@@ -46,18 +46,18 @@
When this option is enabled selecting a game scheme will auto-select a weapon
-
+ Quand cette option est active choisir des paramètres de jeu sélectionnera les armesHWChatWidget%1 *** %2 has been removed from your ignore list
- %1 *** %2 a été enlevé de la liste des personnes ignorées
+ %1 *** %2 a été enlevé de votre liste de personnes ignorées%1 *** %2 has been added to your ignore list
- %1 *** %2 a été ajouté dans la liste des personnes ignorées
+ %1 *** %2 a été ajouté dans votre liste de personnes ignorées%1 *** %2 has been removed from your friends list
@@ -92,7 +92,7 @@
Please select record from the list above
- Veuillez sélectionner une partie dans la liste ci-dessus
+ Veuillez sélectionner une partie enregistrée dans la liste ci-dessusDefaultTeam
@@ -101,12 +101,12 @@
Hedgewars Demo FileFile Types
-
+ Fichier de démonstration d'HedgewarsHedgewars Save FileFile Types
-
+ Fichier de sauvegarde d'Hedgewars
@@ -156,7 +156,7 @@
Wacky
- Farpelu
+ FarfeluType
@@ -188,11 +188,11 @@
Seed
-
+ GraineSet
-
+ Valider
@@ -244,7 +244,7 @@
Votre pseudo %1 est
enregistré sur Hedgewars.org
Veuillez fournir votre mot de passe
-ou choisir un nouveau pseudo:
+ou choisir un nouveau pseudo :
%1 *** %2 has joined the room
@@ -267,7 +267,10 @@
registered on Hedgewars.org
Please provide your password below
or pick another nickname in game config:
-
+ Votre pseudo %1 est
+enregistré sur Hedgewars.org
+Veuillez fournir votre mot de passe
+ou choisir un nouveau pseudo :
@@ -289,31 +292,31 @@
Clear Accounts Cache
- Vider le cache de comptes
+ Vider le cache des comptesFetch data
-
+ Récupérer les donnéesServer message for latest version:
-
+ Message du serveur pour la dernière version : Server message for previous versions:
-
+ Message du serveur pour la version précédente : Latest version protocol number:
-
+ Numéro de la dernière version du protocole : MOTD preview:
-
+ Prévisualisation du MOTDSet data
-
+ Enregistrer les données
@@ -327,31 +330,31 @@
PageDrawMapUndo
-
+ AnnulerClear
-
+ EffacerLoad
- Charger
+ ChargerSave
-
+ EnregistrerLoad drawn map
-
+ Charger une carte dessinéeDrawn Maps (*.hwmap);;All files (*.*)
-
+ Cartes dessinées (*.hwmap);;Tous les fichiers (*.*)Save drawn map
-
+ Enregistrer une carte dessinée
@@ -387,59 +390,59 @@
Details
-
+ DétailsHealth graph
-
+ Courbes de santé-Ranking
-
+ RangThe best shot award was won by <b>%1</b> with <b>%2</b> pts.
-
+ Le prix du meilleur tir a été décerné à <b>%1</b> avec <b>%2</b> points.The best killer is <b>%1</b> with <b>%2</b> kills in a turn.
-
-
-
+
+ Le meilleur tueur est <b>%1</b> avec <b>%2</b> mort dans un tour.
+ Le meilleur tueur est <b>%1</b> avec <b>%2</b> morts dans un tour.A total of <b>%1</b> hedgehog(s) were killed during this round.
-
-
-
+
+ Un total de <b>%1</b> hérisson a été tué durant ce tour.
+ Un total de <b>%1</b> hérissons ont été tués durant ce tour.(%1 kill)
-
+ (%1 Tue)<b>%1</b> thought it's good to shoot his own hedgehogs with <b>%2</b> pts.
-
-
-
+
+ <b>%1</b> pense que c'est bien de tirer sur ses propres hérissons pour <b>%2</b> point.
+ <b>%1</b> pense que c'est bien de tirer sur ses propres hérissons pour <b>%2</b> points.<b>%1</b> killed <b>%2</b> of his own hedgehogs.
-
-
+
+ <b>%1</b> a tué <b>%2</b> de ses propres hérissons.<b>%1</b> was scared and skipped turn <b>%2</b> times.
-
-
+
+ <b>%1</b> a eu peur et a passé son tour <b>%2</b> fois.
@@ -457,246 +460,261 @@
Simply pick the same color as a friend to play together as a team. Each of you will still control his or her own hedgehogs but they'll win or lose together.Tips
-
+ Choisissez la même couleur qu'un ami pour jouer dans la même équipe. Chacun de vous continuera à contrôler son ou ses hérissons mais ils gagneront ou perdront ensembles.Some weapons might do only low damage but they can be a lot more devastating in the right situation. Try to use the Desert Eagle to knock multiple hedgehogs into the water.Tips
-
+ Certaines armes peuvent occasionner seulement de faibles dommages mais être beaucoup plus dévastatrices dans la situation adéquate. Essayez le Révolver pour envoyer plusieurs hérissons à l'eau.If you're unsure what to do and don't want to waste ammo, skip one round. But don't let too much time pass as there will be Sudden Death!Tips
-
+ Si vous ne savez pas quoi faire et ne voulez pas gaspiller de munitions, passez un tour. Mais ne laissez pas trop filer le temps ou ce sera la Mort Subite !If you'd like to keep others from using your preferred nickname on the official server, register an account at http://www.hedgewars.org/.Tips
-
+ Si vous voulez empêcher les autres d'utiliser votre pseudo sur le serveur officiel, créez un compte sur http://www.hedgewars.org/.You're bored of default gameplay? Try one of the missions - they'll offer different gameplay depending on the one you picked.Tips
-
+ Assez du mode par défaut ? Essayez une des missions - elles offrent différents types de jeu suivant votre choix.By default the game will always record the last game played as a demo. Select 'Local Game' and pick the 'Demos' button on the lower right corner to play or manage them.Tips
-
+ Par défaut le jeu enregistre la dernière partie jouée comme une démonstration. Sélectionnez « Jeu en local » puis « Démonstrations » en bas à droite pour les visionner ou les gérer.Hedgewars is Open Source and Freeware we create in our spare time. If you've got problems, ask on our forums but please don't expect 24/7 support!Tips
-
+ Hedgewars est un jeu libre et gratuit créé sur notre temps libre. Si vous avez des problèmes, demandez sur nos forums mais n'attendez pas de support 24h/24.Hedgewars is Open Source and Freeware we create in our spare time. If you like it, help us with a small donation or contribute your own work!Tips
-
+ Hedgewars est un jeu libre et gratuit créé sur notre temps libre. Si vous l'aimez, aidez-nous avec un petit don ou contribuez par votre travail !Hedgewars is Open Source and Freeware we create in our spare time. Share it with your family and friends as you like!Tips
-
+ Hedgewars est un jeu libre et gratuit créé sur notre temps libre. Partagez-le avec votre famille et vos amis comme vous le voulez !From time to time there will be official tournaments. Upcoming events will be announced at http://www.hedgewars.org/ some days in advance.Tips
-
+ De temps en temps il y aura des tournois officiels. Les évènements à venir seront annoncés sur http://www.hedgewars.org/ quelques jours à l'avance.Hedgewars is available in many languages. If the translation in your language seems to be missing or outdated, feel free to contact us!Tips
-
+ Hedgewars est disponible dans de nombreuses langues. Si la traduction dans votre langue est partielle ou obsolète, contactez-nous !Hedgewars can be run on lots of different operating systems including Microsoft Windows, Mac OS X and Linux.Tips
-
+ Hedgewars peux être exécuté sur de nombreux systèmes d'exploitation différents, incluant Microsoft Windows, Mac OS X et Linux. Always remember you're able to set up your own games in local and network/online play. You're not restricted to the 'Simple Game' option.Tips
-
+ Souvenez-vous que vous pouvez créer votre propres parties en local et en ligne. Vous n'est pas limités aux options de jeu par défaut.While playing you should give yourself a short break at least once an hour.Tips
-
+ Vous devriez faire une petite pause au moins une fois par heure.If your graphics card isn't able to provide hardware accelerated OpenGL, try to enable the low quality mode to improve performance.Tips
-
+ Si votre carte graphique ne peut pas fournir d'accélération matérielle pour OpenGL, essayez le mode de faible qualité pour améliorer les performances.We're open to suggestions and constructive feedback. If you don't like something or got a great idea, let us know!Tips
-
+ Nous sommes ouverts aux suggestions et au critiques constructives. Si vous n'aimez pas quelque chose ou avez une grande idée, contactez-nous !Especially while playing online be polite and always remember there might be some minors playing with or against you as well!Tips
-
+ Particulièrement quand vous jouez en ligne soyez polis et pensez que certains joueurs avec vous peuvent être mineurs.Special game modes such as 'Vampirism' or 'Karma' allow you to develop completely new tactics. Try them in a custom game!Tips
-
+ Les modes de jeu spéciaux comme « Vampirisme » ou « Karma » vous permettent de développer de nouvelles tactiques. Essayez-les en parties personnalisées !The Windows version of Hedgewars supports Xfire. Make sure to add Hedgwars to its game list so your friends can see you playing.Tips
-
+ La version Windows d'Hedgewars fonctionne avec Xfire. Pensez à ajouter Hedgewars dans la liste de jeu pour que vous amis vous voient jouer.You should never install Hedgewars on computers you don't own (school, university, work, etc.). Please ask the responsible person instead!Tips
-
+ Vous ne devriez jamais installer Hedgewars sur des ordinateurs ne vous appartenant pas (école, université, travail, etc...). Demandez au responsable !Hedgewars can be perfect for short games during breaks. Just ensure you don't add too many hedgehogs or use an huge map. Reducing time and health might help as well.Tips
-
+ Hedgewars peut être parfait pour des parties courtes pendant une pause. Assurez-vous juste de ne pas avoir mis trop de hérissons ou de ne pas utiliser une carte énorme. Réduire le temps ou la santé peuvent aider également.No hedgehogs were harmed in making this game.Tips
-
+ Aucun hérisson n'a été blessé durant la conception de ce jeu.Hedgewars is Open Source and Freeware we create in our spare time. If someone sold you the game, you should try get a refund!Tips
-
+ Hedgewars est un jeu libre et gratuit créé sur notre temps libre. Si quelqu'un vous l'a vendu, vous devriez vous faire rembourser !Connect one or more gamepads before starting the game to be able to assign their controls to your teams.Tips
-
+ Branchez une ou plusieurs manettes avant de lancer le jeu pour pouvoir contrôler vos équipes avec.Create an account on %1 to keep others from using your most favourite nickname while playing on the official server.Tips
-
+ Créer un compte sur %1 vous permet d'empêcher les autres d'utiliser votre pseudo favori sur le serveur officiel.If your graphics card isn't able to provide hardware accelerated OpenGL, try to update the associated drivers.Tips
-
+ Si votre carte graphique ne peut pas fournir d'accélération matérielle pour OpenGL, essayez d'installer les drivers associés.There are three different jumps available. Tap [high jump] twice to do a very high/backwards jump.Tips
-
+ Il y a différents types de saut disponibles. Pressez [high jump] deux fois pour faire un très haut saut un peu en arrière.Afraid of falling off a cliff? Hold down [precise] to turn [left] or [right] without actually moving.Tips
-
+ Peur de tomber d'une falaise ? Maintenez [precise] pour tourner [left] ou [right] sans bouger.Some weapons require special strategies or just lots of training, so don't give up on a particular tool if you miss an enemy once.Tips
-
+ Certaines armes demandent de la stratégie ou juste beaucoup d'entrainement, alors ne laissez pas tomber une arme si vous avez raté une fois un ennemi.Most weapons won't work once they touch the water. The Homing Bee as well as the Cake are exceptions to this.Tips
-
+ La plupart des armes ne fonctionnent pas une fois qu'elles ont touché l'eau. L'Abeille Missile ou le Gâteau sont des exceptions.The Old Limbuger only causes a small explosion. However the wind affected smelly cloud can poison lots of hogs at once.Tips
-
+ Le Old Limbuger cause seulement une petite explosion. En revanche le vent affecte le petit nuage empoisonné qui peut contaminer de nombreux hérissons à la fois.The Piano Strike is the most damaging air strike. You'll lose the hedgehog performing it, so there's a huge downside as well.Tips
-
+ L'attaque du Piano est la plus dévastatrice des attaques aériennes. Vous perdrez le hérisson qui la lance, donc il y a une contrepartie énorme.The Homing Bee can be tricky to use. It's turn radius depends on it's velocity, so try to not use full power.Tips
-
+ L'Abeille Missile peut être délicate à utiliser. Son rayon de courbure dépend de sa vitesse, alors essayer de ne pas l'utiliser à pleine puissance.Sticky Mines are a perfect tool to create small chain reactions knocking enemy hedgehogs into dire situations ... or water.Tips
-
+ Les Mines adhésives sont l'outil parfait pour créer de petites réactions en chaines envoyant les ennemis dans des situations délicates ... ou dans l'eau.The Hammer is most effective when used on bridges or girders. Hit hogs will just break through the ground.Tips
-
+ Le Marteau est plus efficace utilisé sur des ponts ou des poutrelles. Les hérissons touchés vont passer à travers le sol.If you're stuck behind an enemy hedgehog, use the Hammer to free yourself without getting damaged by an explosion.Tips
-
+ Si vous êtes coincés derrière un hérisson ennemi, utilisez le Marteau pour vous libérer sans subir les dégâts d'une explosion.The Cake's maximum walking distance depends on the ground it has to pass. Use [attack] to detonate it early.Tips
-
+ La distance maximale que le Gâteau peux parcourir dépend du terrain qu'il doit franchir. Utiliser [attack] pour le faire exploser avant.The Flame Thrower is a weapon but it can be used for tunnel digging as well.Tips
-
+ Le Lance-flammes est une arme mais peut aussi être utilisé pour creuser un tunnel.Use the Incinerating Grenade to temporary keep hedgehogs from passing terrain such as tunnels or platforms.Tips
-
+ Utilisez la grenade infernale pour empêcher temporairement des hérissons de traverser du terrain comme un tunnel ou une plate-forme.Want to know who's behind the game? Click on the Hedgewars logo in the main menu to see the credits.Tips
-
+ Vous voulez savoir qui est derrière le jeu ? Cliquez sur le logo Hedgewars dans le menu principal pour voir les crédits.Feel free to draw your own graves, hats, flags or even maps and themes! But note that you'll have to share them somewhere to use them online.Tips
-
+ Soyez libre de dessiner vos propres tombes, chapeaux, drapeaux ou même cartes et thèmes ! Mais pour les utiliser en ligne vous devrez les partager quelque part.Really want to wear a specific hat? Donate to us and receive an exclusive hat of your choice!Tips
-
+ Vous voulez vraiment un chapeau spécifique ? Faites un don et recevez un chapeau exclusif de votre choix.Keep your video card drivers up to date to avoid issues playing the game.Tips
-
+ Conservez les pilotes de votre carte graphique à jour pour éviter les problèmes en jouant.You can find your Hedgewars configuration files under "My Documents\Hedgewars". Create backups or take the files with you, but don't edit them by hand.Tips
-
+ Vous pouvez trouver vos fichiers de configuration Hedgewars sous « Mes Documents\Hedgewars ». Créez des sauvegardes ou prenez les fichiers avec vous, mais ne les modifiez pas à la main !You're able to associate Hedgewars related files (savegames and demo recordings) with the game to launch them right from your favorite file or internet browser.Tips
-
+ Vous pouvez associer les fichiers relatifs à Hedgewars (parties enregistrées ou démonstrations) au jeu pour les lancer depuis votre navigateur de fichiers ou internet.Like Hedgewars? Become a fan on %1 or follow us on %2!Tips
-
+ Vous aimez Hedgewars ? Devenez un fan sur %1 ou suivez-nous sur %2 !Want to save ropes? Release the rope in mid air and then shoot again. As long as you don't touch the ground you'll reuse your rope without wasting ammo!Tips
-
+ Envie d'économiser des Cordes Ninja ? Relâchez la Corde Ninja en l'air et tirez à nouveau. Du moment que vous ne touchez pas le sol, vous réutiliserez votre Corde Ninja sans gaspiller de munitions.You can find your Hedgewars configuration files under "Library/Application Support/Hedgewars" in your home directory. Create backups or take the files with you, but don't edit them by hand.Tips
-
+ Vous pouvez trouver vos fichiers de configuration Hedgewars sous « Library/Application Support/Hedgewars » dans votre répertoire personnel. Créez des sauvegardes ou prenez les fichiers avec vous, mais ne les modifiez pas à la main !You can find your Hedgewars configuration files under ".hedgewars" in your home directory. Create backups or take the files with you, but don't edit them by hand.Tips
+ Vous pouvez trouver vos fichiers de configuration Hedgewars sous « .hedgewars » dans votre répertoire personnel. Créez des sauvegardes ou prenez les fichiers avec vous, mais ne les modifiez pas à la main !
+
+
+ The Windows version of Hedgewars supports Xfire. Make sure to add Hedgewars to its game list so your friends can see you playing.
+ Tips
+
+
+
+ The Homing Bee can be tricky to use. Its turn radius depends on it's velocity, so try to not use full power.
+ Tips
+
+
+
+ Use the Molotov or Flame Thrower to temporary keep hedgehogs from passing terrain such as tunnels or platforms.
+ Tips
@@ -748,35 +766,35 @@
Delete team
-
+ Supprimer une équipeYou can't edit teams from team selection. Go back to main menu to add, edit or delete teams.
-
+ Vous ne pouvez pas modifier d'équipe depuis la sélection d'équipes. Retournez au manu principal pour ajouter, modifier ou supprimer des équipes.New scheme
-
+ Nouveaux paramètresEdit scheme
-
+ Modifier paramètresDelete scheme
-
+ Supprimer paramètresNew weapon set
-
+ Nouvel ensemble d'armesEdit weapon set
-
+ Modifier un ensemble d'armesDelete weapon set
-
+ Supprimer un ensemble d'armes
@@ -896,36 +914,36 @@
Random Maze
-
+ Labyrinthe aléatoireState:
-
+ État : Rules:
-
+ Règles : Weapons:
-
+ Armes : Search:
-
+ Recherche : Clear
-
+ EffacerWarning
-
+ AttentionThe game you are trying to join has started.
Do you still want to join the room?
-
+ Vous voulez rejoindre une partie qui a déjà commencée. Voulez-vous tout de même rejoindre la salle ?
@@ -992,59 +1010,59 @@
Order of play is random instead of in room order.
-
+ Ordre de jeu aléatoire plutôt que par ordre dans la salle.Play with a King. If he dies, your side dies.
-
+ Jouez avec un Roi. S'il meurs, votre côté perds.Take turns placing your hedgehogs before the start of play.
-
+ Placez vos hérissons chacun à votre tour avant de commencer à jouer.Ammo is shared between all teams that share a colour.
-
+ Les munitions sont partagées parmi les équipes de même couleur.Disable girders when generating random maps.
-
+ Désactiver les poutres en générant des cartes aléatoires.Disable land objects when generating random maps.
-
+ Désactiver les objets de terrain en générant des cartes aléatoires.AI respawns on death.
-
+ L'IA ressuscite à chaque mort.All (living) hedgehogs are fully restored at the end of turn
-
+ Tous les hérissons (vivants) sont soignés complètement à la fin du tour.Attacking does not end your turn.
-
+ Attaquer ne termine pas votre tour.Weapons are reset to starting values each turn.
-
+ Les armes sont réinitialisées aux valeurs de départ à la fin de chaque tour.Each hedgehog has its own ammo. It does not share with the team.
-
+ Chaque hérisson a ses propres munitions. Il ne les partage pas avec son équipe.You will not have to worry about wind anymore.
-
+ Vous n'aurez plus jamais à vous soucier du vent.Wind will affect almost everything.
-
+ Le vent affectera quasiment tout.Copy
-
+ Copier
@@ -1059,11 +1077,11 @@
New
- Nouveau
+ NouveauCopy
-
+ Copier
@@ -1090,7 +1108,7 @@
Campaign Mode (...). IN DEVELOPMENT
-
+ Mode Campagne (...). EN DÉVELOPPEMENT
@@ -1121,23 +1139,23 @@
Follow
-
+ SuivreIgnore
-
+ IgnorerAdd friend
-
+ Ajouter un amiUnignore
-
+ Ne plus ignorerRemove friend
-
+ Retirer un ami
@@ -1180,19 +1198,19 @@
Show ammo menu tooltips
-
+ Montrer le menu d'aide des munitions.Enable frontend sounds
-
+ Activer les sons du menu principalEnable frontend music
-
+ Activer la musique du menu principalFrontend effects
-
+ Effets du menu principal
@@ -1211,19 +1229,19 @@
(System default)
-
+ Réglage du systèmegenerated maze...
-
+ Labyrinthe généréMission
-
+ MissionCommunity
-
+ CommunautéAny
@@ -1235,7 +1253,7 @@
In progress
-
+ En coursDefault
@@ -1243,6 +1261,46 @@
hand drawn map...
+ Carte dessinée
+
+
+ Disabled
+
+
+
+ Red/Cyan
+
+
+
+ Cyan/Red
+
+
+
+ Red/Blue
+
+
+
+ Blue/Red
+
+
+
+ Red/Green
+
+
+
+ Green/Red
+
+
+
+ Side-by-side
+
+
+
+ Top-Bottom
+
+
+
+ Wiggle
@@ -1290,15 +1348,15 @@
Team Settings
-
+ Réglages de l'équipeMisc
-
+ DiversSchemes and Weapons
-
+ Paramètres et Armes
@@ -1405,11 +1463,11 @@
% Dud Mines
-
+ % de Mines défectueusesName
-
+ NomType
@@ -1417,64 +1475,68 @@
Grave
-
+ TombeFlag
-
+ DrapeauVoice
-
+ VoixLocale
-
+ LangueRestart game to apply
-
+ Relancez le jeu pour appliquerExplosives
-
+ ExplosifsTip:
-
+ Conseil : This development build is 'work in progress' and may not be compatible with other versions of the game. Some features might be broken or incomplete. Use at your own risk!
-
+ Cette version de développement est un travail en cours, il peut ne pas être compatible avec les autres versions du jeu. Certaines fonctionnalités peuvent être cassées ou incomplètes.Quality
-
+ Qualité% Health Crates
-
+ % Caisses de SantéHealth in Crates
-
+ Santé dans les CaissesSudden Death Water Rise
-
+ Montée de l'eau à la Mort SubiteSudden Death Health Decrease
-
+ Perte de Santé à la Mort Subite% Rope Length
-
+ % longueur de la Corde NinjaGameplay
+
+ Stereo rendering
+
+ QLineEdit
@@ -1530,39 +1592,39 @@
Can not overwrite default weapon set '%1'!
-
+ Impossible d'enregistrer sur le set d'armes par défaut.All file associations have been set.
-
+ Toutes les associations d'extensions de fichiers ont été effectuées.File association failed.
-
+ Les associations d'extensions de fichiers ont échoué.Teams
- Équipes
+ ÉquipesReally delete this team?
-
+ Voulez-vous vraiment effacer cette équipe ?Schemes
-
+ Paramètres de jeuCan not delete default scheme '%1'!
-
+ Impossible d'effacer les paramètres de jeu par défaut.Really delete this game scheme?
-
+ Voulez-vous vraiment effacer ces paramètres de jeu ?Can not delete default weapon set '%1'!
-
+ Impossible d'effacer le set d'armes par défaut.
@@ -1652,15 +1714,15 @@
Random Team
-
+ Équipes aléatoiresAssociate file extensions
-
+ Associer les extensions de fichiersmore
-
+ plus
@@ -1706,19 +1768,19 @@
Ammo in boxes
-
+ Munitions dans les caissesDelays
-
+ Délaisnew
-
+ Nouveaucopy of
-
+ Copie de
@@ -1784,55 +1846,55 @@
Random Order
-
+ Ordre aléatoireKing
-
+ RoiPlace Hedgehogs
-
+ Placer les hérissonsClan Shares Ammo
-
+ Les Clans partagent les munitionsDisable Girders
-
+ Désactiver les poutresDisable Land Objects
-
+ Désactiver les objets de terrainAI Survival Mode
-
+ Mode de survie de l'IAReset Health
-
+ Réinitialiser la SantéUnlimited Attacks
-
+ Attaques illimitéesReset Weapons
-
+ Réinitialiser les ArmesPer Hedgehog Ammo
-
+ Munitions par hérissonDisable Wind
-
+ Désactiver le ventMore Wind
-
+ Davantage de vent
@@ -2103,7 +2165,7 @@
Hat
- Bouton directionnel
+ Chapeau(Left)
@@ -2403,7 +2465,7 @@
Clear
-
+ Effacer
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Locale/hedgewars_hu.ts
--- a/share/hedgewars/Data/Locale/hedgewars_hu.ts Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Locale/hedgewars_hu.ts Tue Feb 01 00:18:25 2011 +0100
@@ -556,11 +556,6 @@
- The Windows version of Hedgewars supports Xfire. Make sure to add Hedgwars to its game list so your friends can see you playing.
- Tips
-
-
- You should never install Hedgewars on computers you don't own (school, university, work, etc.). Please ask the responsible person instead!Tips
@@ -606,11 +601,6 @@
- The Homing Bee can be tricky to use. It's turn radius depends on it's velocity, so try to not use full power.
- Tips
-
-
- Sticky Mines are a perfect tool to create small chain reactions knocking enemy hedgehogs into dire situations ... or water.Tips
@@ -636,11 +626,6 @@
- Use the Incinerating Grenade to temporary keep hedgehogs from passing terrain such as tunnels or platforms.
- Tips
-
-
- Want to know who's behind the game? Click on the Hedgewars logo in the main menu to see the credits.Tips
@@ -690,6 +675,21 @@
Tips
+
+ The Windows version of Hedgewars supports Xfire. Make sure to add Hedgewars to its game list so your friends can see you playing.
+ Tips
+
+
+
+ The Homing Bee can be tricky to use. Its turn radius depends on it's velocity, so try to not use full power.
+ Tips
+
+
+
+ Use the Molotov or Flame Thrower to temporary keep hedgehogs from passing terrain such as tunnels or platforms.
+ Tips
+
+ PageMultiplayer
@@ -1246,6 +1246,46 @@
hand drawn map...
+
+ Disabled
+
+
+
+ Red/Cyan
+
+
+
+ Cyan/Red
+
+
+
+ Red/Blue
+
+
+
+ Blue/Red
+
+
+
+ Red/Green
+
+
+
+ Green/Red
+
+
+
+ Side-by-side
+
+
+
+ Top-Bottom
+
+
+
+ Wiggle
+
+ QGroupBox
@@ -1482,6 +1522,10 @@
Gameplay
+
+ Stereo rendering
+
+ QLineEdit
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Locale/hedgewars_it.ts
--- a/share/hedgewars/Data/Locale/hedgewars_it.ts Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Locale/hedgewars_it.ts Tue Feb 01 00:18:25 2011 +0100
@@ -9,7 +9,7 @@
copy of
-
+ copia di
@@ -46,7 +46,7 @@
When this option is enabled selecting a game scheme will auto-select a weapon
-
+ Quando questa opzione è attiva selezionare uno schema di gioco selezionerà automaticamente le armi appropriate
@@ -96,17 +96,17 @@
DefaultTeam
-
+ SquadraPredefinitaHedgewars Demo FileFile Types
-
+ Demo di HedgewarsHedgewars Save FileFile Types
-
+ Salvataggio di Hedgewars
@@ -160,43 +160,43 @@
Tunnel size
- Grandezza Tunnel
+ Grandezza GallerieType
- Tipo
+ TipoSmall tunnels
-
+ Gallerie piccoleMedium tunnels
-
+ Gallerie medieLarge tunnels
-
+ Gallerie grandiSmall floating islands
-
+ Isole piccoleMedium floating islands
-
+ Isole medieLarge floating islands
-
+ Isole grandiSeed
-
+ SeedSet
-
+ Imposta
@@ -211,7 +211,7 @@
Port
- Port
+ Porta
@@ -226,7 +226,7 @@
Quit reason:
- Quit reason:
+ Ragione di uscita: Room destroyed
@@ -271,14 +271,17 @@
registered on Hedgewars.org
Please provide your password below
or pick another nickname in game config:
-
+ Il nickname %1 è
+registrato su Hedgewars.org
+Per favore inserisci la tua password
+o scegli un altro nickname:KBSDL_ttf returned error while rendering text, most propably it is related to the bug in freetype2. It's recommended to update your freetype lib.
- SDL_ttf ha ritornato un errore durante il rendering del testo, probabilmente relativo ad un bug in freetype2. Si raccomanda di aggiornare le proprie librerie freetype.
+ SDL_ttf ha restituito un errore durante il rendering del testo, probabilmente relativo ad un bug in freetype2. Si raccomanda di aggiornare le proprie librerie freetype.
@@ -297,27 +300,27 @@
Fetch data
-
+ Dati FetchServer message for latest version:
-
+ Messaggio del server per l'ultima versione:Server message for previous versions:
-
+ Messaggio del server per la versione precedente:Latest version protocol number:
-
+ Numero di protocollo dell'ultima versione:MOTD preview:
-
+ Anteprima MOTD:Set data
-
+ Imposta dati
@@ -331,31 +334,31 @@
PageDrawMapUndo
-
+ AnnullaClear
- Cancella
+ CancellaLoad
- Carica
+ CaricaSave
-
+ SalvaLoad drawn map
-
+ Carica mappa disegnataDrawn Maps (*.hwmap);;All files (*.*)
-
+ Mappe Disegnate (*.hwmap);;Tutti i file (*.*)Save drawn map
-
+ Salva mappa disegnata
@@ -391,60 +394,60 @@
Details
-
+ DettagliHealth graph
-
+ Grafico della vitaRanking
-
+ ClassificaThe best shot award was won by <b>%1</b> with <b>%2</b> pts.
-
+ Il premio per il miglior colpo è stato vinto da <b>%1</b> con <b>%2</b> punti.The best killer is <b>%1</b> with <b>%2</b> kills in a turn.
-
-
-
+
+ <p>Il miglior killer è <b>%1</b> con <b>%2</b> uccisione in un turno.</p>
+ <p>Il miglior killer è <b>%1</b> con <b>%2</b> uccisioni in un turno.</p>A total of <b>%1</b> hedgehog(s) were killed during this round.
-
-
-
+
+ <p>Durante questo round sono stati uccisi <b>%1</b> ricci in totale.</p>
+ <p>Un totale di <b>%1</b> ricci sono stati uccisi durante questo round.</p>(%1 kill)
-
-
-
+
+ (%1 uccisione)
+ (%1 uccisioni)<b>%1</b> thought it's good to shoot his own hedgehogs with <b>%2</b> pts.
-
-
-
+
+ <b>%1</b> ha pensato che fosse buona cosa sparare ai propri compagni di squadra con <b>%2</b> punto.
+ <b>%1</b> ha pensato che fosse buona cosa sparare ai propri compagni di squadra con <b>%2</b> punti.<b>%1</b> killed <b>%2</b> of his own hedgehogs.
-
-
-
+
+ <b>%1</b> ha ucciso <b>%2</b> dei suoi compagni di squadra.
+ <b>%1</b> ha ucciso <b>%2</b> dei suoi compagni di squadra.<b>%1</b> was scared and skipped turn <b>%2</b> times.
-
-
-
+
+ <b>%1</b> aveva paura e ha passato il turno <b>%2</b> volta.
+ <b>%1</b> aveva paura e ha passato il turno <b>%2</b> volte.
@@ -549,11 +552,6 @@
- The Windows version of Hedgewars supports Xfire. Make sure to add Hedgwars to its game list so your friends can see you playing.
- Tips
-
-
- You should never install Hedgewars on computers you don't own (school, university, work, etc.). Please ask the responsible person instead!Tips
@@ -619,11 +617,6 @@
- The Homing Bee can be tricky to use. It's turn radius depends on it's velocity, so try to not use full power.
- Tips
-
-
- Sticky Mines are a perfect tool to create small chain reactions knocking enemy hedgehogs into dire situations ... or water.Tips
@@ -649,11 +642,6 @@
- Use the Incinerating Grenade to temporary keep hedgehogs from passing terrain such as tunnels or platforms.
- Tips
-
-
- Want to know who's behind the game? Click on the Hedgewars logo in the main menu to see the credits.Tips
@@ -703,6 +691,21 @@
Tips
+
+ The Windows version of Hedgewars supports Xfire. Make sure to add Hedgewars to its game list so your friends can see you playing.
+ Tips
+
+
+
+ The Homing Bee can be tricky to use. Its turn radius depends on it's velocity, so try to not use full power.
+ Tips
+
+
+
+ Use the Molotov or Flame Thrower to temporary keep hedgehogs from passing terrain such as tunnels or platforms.
+ Tips
+
+ PageMultiplayer
@@ -768,31 +771,31 @@
You can't edit teams from team selection. Go back to main menu to add, edit or delete teams.
-
+ Non puoi modificare le squadre in questo modo. Vai al menu principale per aggiungere, modificare o eliminare squadre.New scheme
-
+ Nuovo schema di giocoEdit scheme
-
+ Modifica schema di giocoDelete scheme
-
+ Elimina schema di giocoNew weapon set
-
+ Nuovo set delle armiEdit weapon set
-
+ Modifica set delle armiDelete weapon set
-
+ Elimina set delle armi
@@ -916,32 +919,33 @@
State:
-
+ Stato:Rules:
-
+ Regole:Weapons:
-
+ Armi:Search:
-
+ Cerca:Clear
- Cancella
+ CancellaWarning
-
+ AttenzioneThe game you are trying to join has started.
Do you still want to join the room?
-
+ La partita a cui stai cercando di unirti è già iniziata.
+Voui comunque entrare nella stanza?
@@ -1028,39 +1032,39 @@
Disable land objects when generating random maps.
-
+ Disabilita gli oggetti nella generazione di mappe casuali.AI respawns on death.
-
+ I ricci AI risorgono dalla morte.All (living) hedgehogs are fully restored at the end of turn
-
+ La vita di tutti i ricci rimasti vivi è resettata allo stato di partenza alla fine di ogni turno.Attacking does not end your turn.
-
+ Attaccare con qualsiasi arma non farà finire il turno.Weapons are reset to starting values each turn.
-
+ Le armi sono resettate allo stato di partenza alla fine di ogni turno.Each hedgehog has its own ammo. It does not share with the team.
-
+ Ogni riccio ha le sue armi che non condivide con la squadra.You will not have to worry about wind anymore.
-
+ Non dovrai più preoccuparti del vento.Wind will affect almost everything.
-
+ Il vento avrà effetto su praticamente ogni cosa.Copy
-
+ Copia
@@ -1075,11 +1079,11 @@
New
- Nuovo
+ NuovoCopy
-
+ Copia
@@ -1106,7 +1110,7 @@
Campaign Mode (...). IN DEVELOPMENT
-
+ Modalità Campagna. IN SVILUPPO
@@ -1239,19 +1243,19 @@
Community
-
+ ComunitàAny
-
+ QualsiasiIn lobby
-
+ In lobbyIn progress
-
+ In corsoDefault
@@ -1259,6 +1263,46 @@
hand drawn map...
+ mappa disegnata...
+
+
+ Disabled
+
+
+
+ Red/Cyan
+
+
+
+ Cyan/Red
+
+
+
+ Red/Blue
+
+
+
+ Blue/Red
+
+
+
+ Red/Green
+
+
+
+ Green/Red
+
+
+
+ Side-by-side
+
+
+
+ Top-Bottom
+
+
+
+ Wiggle
@@ -1314,7 +1358,7 @@
Schemes and Weapons
-
+ Schemi di Gioco e Armi
@@ -1463,7 +1507,7 @@
Tip:
-
+ Tip:This development build is 'work in progress' and may not be compatible with other versions of the game. Some features might be broken or incomplete. Use at your own risk!
@@ -1471,30 +1515,34 @@
Quality
-
+ Qualità% Health Crates
-
+ % Casse SaluteHealth in Crates
-
+ Vita nelle Casse SaluteSudden Death Water Rise
-
+ Salita dell'Acqua nel Sudden DeathSudden Death Health Decrease
-
+ Danni durante il Sudden Death% Rope Length
-
+ % Lunghezza della CordaGameplay
+ Tipo di gioco
+
+
+ Stereo rendering
@@ -1552,39 +1600,39 @@
Can not overwrite default weapon set '%1'!
-
+ Impossibile sovrascrivere il set delle armi predefinito '%1'!All file associations have been set.
-
+ Associazione delle estensioni a Hedgewars completata con successo.File association failed.
-
+ Associazione delle estensioni a Hedgewars fallita.Teams
- Squadre
+ SquadreReally delete this team?
-
+ Eliminare veramente questa squadra?Schemes
-
+ Schemi di giocoCan not delete default scheme '%1'!
-
+ Impossibile eliminare lo schema di gioco predefinito '%1'!Really delete this game scheme?
-
+ Eliminare veramente questo schema di gioco?Can not delete default weapon set '%1'!
-
+ Impossibile elimininare il set delle armi predefinito '%1'!
@@ -1678,11 +1726,11 @@
Associate file extensions
-
+ Associa estensioni a Hedgewarsmore
-
+ Altro
@@ -1736,11 +1784,11 @@
new
- nuovo
+ nuovocopy of
-
+ copia di
@@ -1826,35 +1874,35 @@
Disable Land Objects
-
+ Disabilità OggettiAI Survival Mode
-
+ Modalità Sopravvivenza AIReset Health
-
+ Resetta la VitaUnlimited Attacks
-
+ Attacchi IllimitatiReset Weapons
-
+ Resetta le ArmiPer Hedgehog Ammo
-
+ Munzioni non Condivise con gli altri RicciDisable Wind
-
+ Disabilita VentoMore Wind
-
+ Più Vento
@@ -2019,7 +2067,7 @@
slot 10
- slot 10
+ slot 10
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Locale/hedgewars_ja.ts
--- a/share/hedgewars/Data/Locale/hedgewars_ja.ts Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Locale/hedgewars_ja.ts Tue Feb 01 00:18:25 2011 +0100
@@ -506,11 +506,6 @@
- The Windows version of Hedgewars supports Xfire. Make sure to add Hedgwars to its game list so your friends can see you playing.
- Tips
-
-
- You should never install Hedgewars on computers you don't own (school, university, work, etc.). Please ask the responsible person instead!Tips
@@ -576,11 +571,6 @@
- The Homing Bee can be tricky to use. It's turn radius depends on it's velocity, so try to not use full power.
- Tips
-
-
- Sticky Mines are a perfect tool to create small chain reactions knocking enemy hedgehogs into dire situations ... or water.Tips
@@ -606,11 +596,6 @@
- Use the Incinerating Grenade to temporary keep hedgehogs from passing terrain such as tunnels or platforms.
- Tips
-
-
- Want to know who's behind the game? Click on the Hedgewars logo in the main menu to see the credits.Tips
@@ -660,6 +645,21 @@
Tips
+
+ The Windows version of Hedgewars supports Xfire. Make sure to add Hedgewars to its game list so your friends can see you playing.
+ Tips
+
+
+
+ The Homing Bee can be tricky to use. Its turn radius depends on it's velocity, so try to not use full power.
+ Tips
+
+
+
+ Use the Molotov or Flame Thrower to temporary keep hedgehogs from passing terrain such as tunnels or platforms.
+ Tips
+
+ PageMultiplayer
@@ -1194,6 +1194,46 @@
hand drawn map...
+
+ Disabled
+
+
+
+ Red/Cyan
+
+
+
+ Cyan/Red
+
+
+
+ Red/Blue
+
+
+
+ Blue/Red
+
+
+
+ Red/Green
+
+
+
+ Green/Red
+
+
+
+ Side-by-side
+
+
+
+ Top-Bottom
+
+
+
+ Wiggle
+
+ QGroupBox
@@ -1424,6 +1464,10 @@
Gameplay
+
+ Stereo rendering
+
+ QLineEdit
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Locale/hedgewars_ko.ts
--- a/share/hedgewars/Data/Locale/hedgewars_ko.ts Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Locale/hedgewars_ko.ts Tue Feb 01 00:18:25 2011 +0100
@@ -108,7 +108,7 @@
HWGameen.txt
-
+ ko.txtCannot open demofile %1
@@ -498,11 +498,6 @@
- The Windows version of Hedgewars supports Xfire. Make sure to add Hedgwars to its game list so your friends can see you playing.
- Tips
-
-
- You should never install Hedgewars on computers you don't own (school, university, work, etc.). Please ask the responsible person instead!Tips
@@ -568,11 +563,6 @@
- The Homing Bee can be tricky to use. It's turn radius depends on it's velocity, so try to not use full power.
- Tips
-
-
- Sticky Mines are a perfect tool to create small chain reactions knocking enemy hedgehogs into dire situations ... or water.Tips
@@ -598,11 +588,6 @@
- Use the Incinerating Grenade to temporary keep hedgehogs from passing terrain such as tunnels or platforms.
- Tips
-
-
- Want to know who's behind the game? Click on the Hedgewars logo in the main menu to see the credits.Tips
@@ -652,6 +637,21 @@
Tips
+
+ The Windows version of Hedgewars supports Xfire. Make sure to add Hedgewars to its game list so your friends can see you playing.
+ Tips
+
+
+
+ The Homing Bee can be tricky to use. Its turn radius depends on it's velocity, so try to not use full power.
+ Tips
+
+
+
+ Use the Molotov or Flame Thrower to temporary keep hedgehogs from passing terrain such as tunnels or platforms.
+ Tips
+
+ PageMultiplayer
@@ -1182,6 +1182,46 @@
hand drawn map...
+
+ Disabled
+
+
+
+ Red/Cyan
+
+
+
+ Cyan/Red
+
+
+
+ Red/Blue
+
+
+
+ Blue/Red
+
+
+
+ Red/Green
+
+
+
+ Green/Red
+
+
+
+ Side-by-side
+
+
+
+ Top-Bottom
+
+
+
+ Wiggle
+
+ QGroupBox
@@ -1408,6 +1448,10 @@
Gameplay
+
+ Stereo rendering
+
+ QLineEdit
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Locale/hedgewars_nl.ts
--- a/share/hedgewars/Data/Locale/hedgewars_nl.ts Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Locale/hedgewars_nl.ts Tue Feb 01 00:18:25 2011 +0100
@@ -515,11 +515,6 @@
- The Windows version of Hedgewars supports Xfire. Make sure to add Hedgwars to its game list so your friends can see you playing.
- Tips
-
-
- You should never install Hedgewars on computers you don't own (school, university, work, etc.). Please ask the responsible person instead!Tips
@@ -585,11 +580,6 @@
- The Homing Bee can be tricky to use. It's turn radius depends on it's velocity, so try to not use full power.
- Tips
-
-
- Sticky Mines are a perfect tool to create small chain reactions knocking enemy hedgehogs into dire situations ... or water.Tips
@@ -615,11 +605,6 @@
- Use the Incinerating Grenade to temporary keep hedgehogs from passing terrain such as tunnels or platforms.
- Tips
-
-
- Want to know who's behind the game? Click on the Hedgewars logo in the main menu to see the credits.Tips
@@ -669,6 +654,21 @@
Tips
+
+ The Windows version of Hedgewars supports Xfire. Make sure to add Hedgewars to its game list so your friends can see you playing.
+ Tips
+
+
+
+ The Homing Bee can be tricky to use. Its turn radius depends on it's velocity, so try to not use full power.
+ Tips
+
+
+
+ Use the Molotov or Flame Thrower to temporary keep hedgehogs from passing terrain such as tunnels or platforms.
+ Tips
+
+ PageMultiplayer
@@ -1201,6 +1201,46 @@
hand drawn map...
+
+ Disabled
+
+
+
+ Red/Cyan
+
+
+
+ Cyan/Red
+
+
+
+ Red/Blue
+
+
+
+ Blue/Red
+
+
+
+ Red/Green
+
+
+
+ Green/Red
+
+
+
+ Side-by-side
+
+
+
+ Top-Bottom
+
+
+
+ Wiggle
+
+ QGroupBox
@@ -1427,6 +1467,10 @@
Gameplay
+
+ Stereo rendering
+
+ QLineEdit
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Locale/hedgewars_pl.ts
--- a/share/hedgewars/Data/Locale/hedgewars_pl.ts Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Locale/hedgewars_pl.ts Tue Feb 01 00:18:25 2011 +0100
@@ -16,15 +16,15 @@
DrawMapWidgetFile error
- Błąd pliku
+ Błąd plikuCannot open file '%1' for writing
- Nie można otworzyć '%1' do zapisu
+ Nie można otworzyć '%1' do zapisuCannot read file '%1'
- Nie można odczytać pliku '%1'
+ Nie można odczytać pliku '%1'
@@ -601,7 +601,7 @@
The Windows version of Hedgewars supports Xfire. Make sure to add Hedgwars to its game list so your friends can see you playing.Tips
- Wersja Hedgewars dla systemu Windows wspiera XFire. Upewnij się, że dodałeś Hedgewars do listy gier by Twoi znajomi mogli zobaczyć Ciebie w czasie gry.
+ Wersja Hedgewars dla systemu Windows wspiera XFire. Upewnij się, że dodałeś Hedgewars do listy gier by Twoi znajomi mogli zobaczyć Ciebie w czasie gry.You should never install Hedgewars on computers you don't own (school, university, work, etc.). Please ask the responsible person instead!
@@ -676,7 +676,7 @@
The Homing Bee can be tricky to use. It's turn radius depends on it's velocity, so try to not use full power.Tips
- Pszczoła potrafi być ciężka w użyciu. Jej promień skrętu zależy od prędkości lotu, więc nie staraj się nie używać pełnej mocy podczas strzału.
+ Pszczoła potrafi być ciężka w użyciu. Jej promień skrętu zależy od prędkości lotu, więc nie staraj się nie używać pełnej mocy podczas strzału.Sticky Mines are a perfect tool to create small chain reactions knocking enemy hedgehogs into dire situations ... or water.
@@ -706,7 +706,7 @@
Use the Incinerating Grenade to temporary keep hedgehogs from passing terrain such as tunnels or platforms.Tips
- Użyj koktajlu Mołotowa by powstrzymać przeciwnika przed przedostaniem się przez tunele lub platformy.
+ Użyj koktajlu Mołotowa by powstrzymać przeciwnika przed przedostaniem się przez tunele lub platformy.Want to know who's behind the game? Click on the Hedgewars logo in the main menu to see the credits.
@@ -763,6 +763,21 @@
TipsSwoje zespoły i konfigurację gry znajdziesz w folderze ".hedgewars" w twoim katalogu domowym. Twórz regularnie kopie zapasowe, ale nie edytuj tych plików własnoręcznie.
+
+ The Windows version of Hedgewars supports Xfire. Make sure to add Hedgewars to its game list so your friends can see you playing.
+ Tips
+
+
+
+ The Homing Bee can be tricky to use. Its turn radius depends on it's velocity, so try to not use full power.
+ Tips
+
+
+
+ Use the Molotov or Flame Thrower to temporary keep hedgehogs from passing terrain such as tunnels or platforms.
+ Tips
+
+ PageMultiplayer
@@ -1356,6 +1371,46 @@
hand drawn map...Mapa rysowana ręcznie...
+
+ Disabled
+
+
+
+ Red/Cyan
+
+
+
+ Cyan/Red
+
+
+
+ Red/Blue
+
+
+
+ Blue/Red
+
+
+
+ Red/Green
+
+
+
+ Green/Red
+
+
+
+ Side-by-side
+
+
+
+ Top-Bottom
+
+
+
+ Wiggle
+
+ QGroupBox
@@ -1602,6 +1657,10 @@
GameplayRozgrywka
+
+ Stereo rendering
+
+ QLineEdit
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Locale/hedgewars_pt_BR.ts
--- a/share/hedgewars/Data/Locale/hedgewars_pt_BR.ts Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Locale/hedgewars_pt_BR.ts Tue Feb 01 00:18:25 2011 +0100
@@ -612,7 +612,7 @@
The Windows version of Hedgewars supports Xfire. Make sure to add Hedgwars to its game list so your friends can see you playing.Tips
- A versão Windows deste jogo permite o uso do Xfire. Certifique-se de adicionar Hedgewars para sua lista de jogos para ver quem está jogando.
+ A versão Windows deste jogo permite o uso do Xfire. Certifique-se de adicionar Hedgewars para sua lista de jogos para ver quem está jogando.You should never install Hedgewars on computers you don't own (school, university, work, etc.). Please ask the responsible person instead!
@@ -688,7 +688,7 @@
The Homing Bee can be tricky to use. It's turn radius depends on it's velocity, so try to not use full power.Tips
- A Abelha pode ser dificil de usar. O raio da sua volta depende da velocidade dela, então evite usar força máxima.
+ A Abelha pode ser dificil de usar. O raio da sua volta depende da velocidade dela, então evite usar força máxima.Sticky Mines are a perfect tool to create small chain reactions knocking enemy hedgehogs into dire situations ... or water.
@@ -718,7 +718,7 @@
Use the Incinerating Grenade to temporary keep hedgehogs from passing terrain such as tunnels or platforms.Tips
- Use o Cocktail Molotov para evitar que ouriços atravessem terrenos como túneis ou plataformas temporariamente.
+ Use o Cocktail Molotov para evitar que ouriços atravessem terrenos como túneis ou plataformas temporariamente.Want to know who's behind the game? Click on the Hedgewars logo in the main menu to see the credits.
@@ -775,6 +775,21 @@
TipsVocê pode encontrar os arquivos de configuração do Hedgewars em ".hedgewars/" no seu diretório base. Crie backups ou leve os arquivos com você, mas não os edite manualmente.
+
+ The Windows version of Hedgewars supports Xfire. Make sure to add Hedgewars to its game list so your friends can see you playing.
+ Tips
+
+
+
+ The Homing Bee can be tricky to use. Its turn radius depends on it's velocity, so try to not use full power.
+ Tips
+
+
+
+ Use the Molotov or Flame Thrower to temporary keep hedgehogs from passing terrain such as tunnels or platforms.
+ Tips
+
+ PageMultiplayer
@@ -1366,6 +1381,46 @@
hand drawn map...mapa desenhado a mão...
+
+ Disabled
+
+
+
+ Red/Cyan
+
+
+
+ Cyan/Red
+
+
+
+ Red/Blue
+
+
+
+ Blue/Red
+
+
+
+ Red/Green
+
+
+
+ Green/Red
+
+
+
+ Side-by-side
+
+
+
+ Top-Bottom
+
+
+
+ Wiggle
+
+ QGroupBox
@@ -1606,6 +1661,10 @@
GameplayModo de Jogo
+
+ Stereo rendering
+
+ QLineEdit
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Locale/hedgewars_pt_PT.ts
--- a/share/hedgewars/Data/Locale/hedgewars_pt_PT.ts Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Locale/hedgewars_pt_PT.ts Tue Feb 01 00:18:25 2011 +0100
@@ -550,7 +550,7 @@
The Windows version of Hedgewars supports Xfire. Make sure to add Hedgwars to its game list so your friends can see you playing.Tips
- A versão do Hedgewars para Windows suporta Xfire. Não te esqueças de adicionar o Hedgewars à tua lista de jogos para que os teus amigos te possam ver a jogar.
+ A versão do Hedgewars para Windows suporta Xfire. Não te esqueças de adicionar o Hedgewars à tua lista de jogos para que os teus amigos te possam ver a jogar.You should never install Hedgewars on computers you don't own (school, university, work, etc.). Please ask the responsible person instead!
@@ -620,7 +620,7 @@
The Homing Bee can be tricky to use. It's turn radius depends on it's velocity, so try to not use full power.Tips
- A Abelha Teleguiada é uma arma difícil de usar. O grau a que pode virar depende da sua velocidade, por isso tenta não a usar com o poder máximo.
+ A Abelha Teleguiada é uma arma difícil de usar. O grau a que pode virar depende da sua velocidade, por isso tenta não a usar com o poder máximo.Sticky Mines are a perfect tool to create small chain reactions knocking enemy hedgehogs into dire situations ... or water.
@@ -650,7 +650,7 @@
Use the Incinerating Grenade to temporary keep hedgehogs from passing terrain such as tunnels or platforms.Tips
- Utiliza o Coquetail Molotov para temporariamente impedir outros ouriços de passar por áreas no terreno como túneis e plataformas.
+ Utiliza o Coquetail Molotov para temporariamente impedir outros ouriços de passar por áreas no terreno como túneis e plataformas.Want to know who's behind the game? Click on the Hedgewars logo in the main menu to see the credits.
@@ -702,6 +702,21 @@
TipsPodes encontrar os ficheiros de configuração do Hedgewars em ".hedgewars" dentro da tua "Pasta Pessoal". Cria cópias de segurança ou leva os ficheiros contigo, mas não os edites manualmente.
+
+ The Windows version of Hedgewars supports Xfire. Make sure to add Hedgewars to its game list so your friends can see you playing.
+ Tips
+
+
+
+ The Homing Bee can be tricky to use. Its turn radius depends on it's velocity, so try to not use full power.
+ Tips
+
+
+
+ Use the Molotov or Flame Thrower to temporary keep hedgehogs from passing terrain such as tunnels or platforms.
+ Tips
+
+ PageMultiplayer
@@ -1261,6 +1276,46 @@
hand drawn map...mapa desenhado à mão...
+
+ Disabled
+
+
+
+ Red/Cyan
+
+
+
+ Cyan/Red
+
+
+
+ Red/Blue
+
+
+
+ Blue/Red
+
+
+
+ Red/Green
+
+
+
+ Green/Red
+
+
+
+ Side-by-side
+
+
+
+ Top-Bottom
+
+
+
+ Wiggle
+
+ QGroupBox
@@ -1491,6 +1546,10 @@
GameplayJogabilidade
+
+ Stereo rendering
+
+ QLineEdit
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Locale/hedgewars_ru.ts
--- a/share/hedgewars/Data/Locale/hedgewars_ru.ts Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Locale/hedgewars_ru.ts Tue Feb 01 00:18:25 2011 +0100
@@ -561,11 +561,6 @@
- The Windows version of Hedgewars supports Xfire. Make sure to add Hedgwars to its game list so your friends can see you playing.
- Tips
-
-
- You should never install Hedgewars on computers you don't own (school, university, work, etc.). Please ask the responsible person instead!Tips
@@ -631,11 +626,6 @@
- The Homing Bee can be tricky to use. It's turn radius depends on it's velocity, so try to not use full power.
- Tips
-
-
- Sticky Mines are a perfect tool to create small chain reactions knocking enemy hedgehogs into dire situations ... or water.Tips
@@ -661,11 +651,6 @@
- Use the Incinerating Grenade to temporary keep hedgehogs from passing terrain such as tunnels or platforms.
- Tips
-
-
- Want to know who's behind the game? Click on the Hedgewars logo in the main menu to see the credits.Tips
@@ -715,6 +700,21 @@
Tips
+
+ The Windows version of Hedgewars supports Xfire. Make sure to add Hedgewars to its game list so your friends can see you playing.
+ Tips
+
+
+
+ The Homing Bee can be tricky to use. Its turn radius depends on it's velocity, so try to not use full power.
+ Tips
+
+
+
+ Use the Molotov or Flame Thrower to temporary keep hedgehogs from passing terrain such as tunnels or platforms.
+ Tips
+
+ PageMultiplayer
@@ -1276,6 +1276,46 @@
hand drawn map...
+
+ Disabled
+
+
+
+ Red/Cyan
+
+
+
+ Cyan/Red
+
+
+
+ Red/Blue
+
+
+
+ Blue/Red
+
+
+
+ Red/Green
+
+
+
+ Green/Red
+
+
+
+ Side-by-side
+
+
+
+ Top-Bottom
+
+
+
+ Wiggle
+
+ QGroupBox
@@ -1516,6 +1556,10 @@
Gameplay
+
+ Stereo rendering
+
+ QLineEdit
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Locale/hedgewars_sk.ts
--- a/share/hedgewars/Data/Locale/hedgewars_sk.ts Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Locale/hedgewars_sk.ts Tue Feb 01 00:18:25 2011 +0100
@@ -197,7 +197,7 @@
Set
- Nastaviť
+ Nastaviť
@@ -574,7 +574,7 @@
The Windows version of Hedgewars supports Xfire. Make sure to add Hedgwars to its game list so your friends can see you playing.Tips
- Verzia Hedgewars pre Windows podporuje Xfire. Ubezpečte sa, že ste pridali Hedgewars do zoznamu hier tak, aby vaši priatelia videli, že hráte.
+ Verzia Hedgewars pre Windows podporuje Xfire. Ubezpečte sa, že ste pridali Hedgewars do zoznamu hier tak, aby vaši priatelia videli, že hráte.You should never install Hedgewars on computers you don't own (school, university, work, etc.). Please ask the responsible person instead!
@@ -644,7 +644,7 @@
The Homing Bee can be tricky to use. It's turn radius depends on it's velocity, so try to not use full power.Tips
- Navádzaná včela je trošku zložitejšia na použitie. Jej polomer otočenia závisí na jej rýchlosti, takže ju radšej nepoužívajte pri plnej sile.
+ Navádzaná včela je trošku zložitejšia na použitie. Jej polomer otočenia závisí na jej rýchlosti, takže ju radšej nepoužívajte pri plnej sile.Sticky Mines are a perfect tool to create small chain reactions knocking enemy hedgehogs into dire situations ... or water.
@@ -674,7 +674,7 @@
Use the Incinerating Grenade to temporary keep hedgehogs from passing terrain such as tunnels or platforms.Tips
- Použite spaľujúci granát na dočasné zabránenie ježkom prejsť terénom ako sú tunely alebo plošiny.
+ Použite spaľujúci granát na dočasné zabránenie ježkom prejsť terénom ako sú tunely alebo plošiny.Want to know who's behind the game? Click on the Hedgewars logo in the main menu to see the credits.
@@ -736,6 +736,21 @@
TipsKonfiguračné súbory Hedgewars nájdete v ".hedgewars" vo vašom domovskom adresári. Vytvárajte si zálohy alebo prenášajte si tieto súbory medzi počítačmi, ale needitujte ich ručne.
+
+ The Windows version of Hedgewars supports Xfire. Make sure to add Hedgewars to its game list so your friends can see you playing.
+ Tips
+
+
+
+ The Homing Bee can be tricky to use. Its turn radius depends on it's velocity, so try to not use full power.
+ Tips
+
+
+
+ Use the Molotov or Flame Thrower to temporary keep hedgehogs from passing terrain such as tunnels or platforms.
+ Tips
+
+ PageMultiplayer
@@ -1329,6 +1344,46 @@
hand drawn map...ručne kreslená mapa...
+
+ Disabled
+
+
+
+ Red/Cyan
+
+
+
+ Cyan/Red
+
+
+
+ Red/Blue
+
+
+
+ Blue/Red
+
+
+
+ Red/Green
+
+
+
+ Green/Red
+
+
+
+ Side-by-side
+
+
+
+ Top-Bottom
+
+
+
+ Wiggle
+
+ QGroupBox
@@ -1570,6 +1625,10 @@
GameplayHra
+
+ Stereo rendering
+
+ QLineEdit
@@ -1759,7 +1818,7 @@
more
-
+ viac
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Locale/hedgewars_sv.ts
--- a/share/hedgewars/Data/Locale/hedgewars_sv.ts Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Locale/hedgewars_sv.ts Tue Feb 01 00:18:25 2011 +0100
@@ -559,7 +559,7 @@
The Windows version of Hedgewars supports Xfire. Make sure to add Hedgwars to its game list so your friends can see you playing.Tips
- Windows-versionen av Hedgewars har stöd för Xfire. Se till att lägga till Hedgewars till spellistan så att dina vänner kan se dig spela.
+ Windows-versionen av Hedgewars har stöd för Xfire. Se till att lägga till Hedgewars till spellistan så att dina vänner kan se dig spela.You should never install Hedgewars on computers you don't own (school, university, work, etc.). Please ask the responsible person instead!
@@ -629,7 +629,7 @@
The Homing Bee can be tricky to use. It's turn radius depends on it's velocity, so try to not use full power.Tips
- Målsökande biet kan vara svårt att använda. Biets sväng beror på hastigheten, så försök inte att använda full kraft.
+ Målsökande biet kan vara svårt att använda. Biets sväng beror på hastigheten, så försök inte att använda full kraft.Sticky Mines are a perfect tool to create small chain reactions knocking enemy hedgehogs into dire situations ... or water.
@@ -659,7 +659,7 @@
Use the Incinerating Grenade to temporary keep hedgehogs from passing terrain such as tunnels or platforms.Tips
- Använd Molotov för att tillfälligt förhindra igelkottar från att passera terräng såsom tunnlar och platformer.
+ Använd Molotov för att tillfälligt förhindra igelkottar från att passera terräng såsom tunnlar och platformer.Want to know who's behind the game? Click on the Hedgewars logo in the main menu to see the credits.
@@ -716,6 +716,21 @@
TipsDu kan hitta dina konfigurationsfiler under ".hedgewars" i din hem-mapp. Gör en säkerhetskopia eller ta med dig filerna, men redigera dem inte för hand.
+
+ The Windows version of Hedgewars supports Xfire. Make sure to add Hedgewars to its game list so your friends can see you playing.
+ Tips
+
+
+
+ The Homing Bee can be tricky to use. Its turn radius depends on it's velocity, so try to not use full power.
+ Tips
+
+
+
+ Use the Molotov or Flame Thrower to temporary keep hedgehogs from passing terrain such as tunnels or platforms.
+ Tips
+
+ PageMultiplayer
@@ -1307,6 +1322,46 @@
hand drawn map...handritad karta...
+
+ Disabled
+
+
+
+ Red/Cyan
+
+
+
+ Cyan/Red
+
+
+
+ Red/Blue
+
+
+
+ Blue/Red
+
+
+
+ Red/Green
+
+
+
+ Green/Red
+
+
+
+ Side-by-side
+
+
+
+ Top-Bottom
+
+
+
+ Wiggle
+
+ QGroupBox
@@ -1543,6 +1598,10 @@
GameplaySpeltyp
+
+ Stereo rendering
+
+ QLineEdit
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Locale/hedgewars_tr_TR.ts
--- a/share/hedgewars/Data/Locale/hedgewars_tr_TR.ts Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Locale/hedgewars_tr_TR.ts Tue Feb 01 00:18:25 2011 +0100
@@ -514,11 +514,6 @@
- The Windows version of Hedgewars supports Xfire. Make sure to add Hedgwars to its game list so your friends can see you playing.
- Tips
-
-
- You should never install Hedgewars on computers you don't own (school, university, work, etc.). Please ask the responsible person instead!Tips
@@ -584,11 +579,6 @@
- The Homing Bee can be tricky to use. It's turn radius depends on it's velocity, so try to not use full power.
- Tips
-
-
- Sticky Mines are a perfect tool to create small chain reactions knocking enemy hedgehogs into dire situations ... or water.Tips
@@ -614,11 +604,6 @@
- Use the Incinerating Grenade to temporary keep hedgehogs from passing terrain such as tunnels or platforms.
- Tips
-
-
- Want to know who's behind the game? Click on the Hedgewars logo in the main menu to see the credits.Tips
@@ -668,6 +653,21 @@
Tips
+
+ The Windows version of Hedgewars supports Xfire. Make sure to add Hedgewars to its game list so your friends can see you playing.
+ Tips
+
+
+
+ The Homing Bee can be tricky to use. Its turn radius depends on it's velocity, so try to not use full power.
+ Tips
+
+
+
+ Use the Molotov or Flame Thrower to temporary keep hedgehogs from passing terrain such as tunnels or platforms.
+ Tips
+
+ PageMultiplayer
@@ -1206,6 +1206,46 @@
hand drawn map...
+
+ Disabled
+
+
+
+ Red/Cyan
+
+
+
+ Cyan/Red
+
+
+
+ Red/Blue
+
+
+
+ Blue/Red
+
+
+
+ Red/Green
+
+
+
+ Green/Red
+
+
+
+ Side-by-side
+
+
+
+ Top-Bottom
+
+
+
+ Wiggle
+
+ QGroupBox
@@ -1436,6 +1476,10 @@
Gameplay
+
+ Stereo rendering
+
+ QLineEdit
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Locale/hedgewars_uk.ts
--- a/share/hedgewars/Data/Locale/hedgewars_uk.ts Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Locale/hedgewars_uk.ts Tue Feb 01 00:18:25 2011 +0100
@@ -563,7 +563,7 @@
The Windows version of Hedgewars supports Xfire. Make sure to add Hedgwars to its game list so your friends can see you playing.Tips
- Windows-версія Hedgewars підтримує Xfire. Переконайтеся в тому, що ви додали Hedgwars до списку ігор, щоб ваші друзі могли бачити вас в грі.
+ Windows-версія Hedgewars підтримує Xfire. Переконайтеся в тому, що ви додали Hedgwars до списку ігор, щоб ваші друзі могли бачити вас в грі.You should never install Hedgewars on computers you don't own (school, university, work, etc.). Please ask the responsible person instead!
@@ -633,7 +633,7 @@
The Homing Bee can be tricky to use. It's turn radius depends on it's velocity, so try to not use full power.Tips
- Навідна Бджілка може бути складною у керуванні. Радіус повороту залежить від її швидкості, тому постарайтеся не стріляти на повну силу.
+ Навідна Бджілка може бути складною у керуванні. Радіус повороту залежить від її швидкості, тому постарайтеся не стріляти на повну силу.Sticky Mines are a perfect tool to create small chain reactions knocking enemy hedgehogs into dire situations ... or water.
@@ -663,7 +663,7 @@
Use the Incinerating Grenade to temporary keep hedgehogs from passing terrain such as tunnels or platforms.Tips
- Використайте Горючу Гранату щоб тимчасово утримати їжаків від проходження такої місцевості як тунелі або платформи.
+ Використайте Горючу Гранату щоб тимчасово утримати їжаків від проходження такої місцевості як тунелі або платформи.Want to know who's behind the game? Click on the Hedgewars logo in the main menu to see the credits.
@@ -715,6 +715,21 @@
TipsВи можете знайти файли конфігурації Hedgewars в ".hedgewars" в домашній теці. Ви можете створити резервні копії або взяти файли з собою, але не редагуйте їх.
+
+ The Windows version of Hedgewars supports Xfire. Make sure to add Hedgewars to its game list so your friends can see you playing.
+ Tips
+
+
+
+ The Homing Bee can be tricky to use. Its turn radius depends on it's velocity, so try to not use full power.
+ Tips
+
+
+
+ Use the Molotov or Flame Thrower to temporary keep hedgehogs from passing terrain such as tunnels or platforms.
+ Tips
+
+ PageMultiplayer
@@ -1276,6 +1291,46 @@
hand drawn map...
+
+ Disabled
+
+
+
+ Red/Cyan
+
+
+
+ Cyan/Red
+
+
+
+ Red/Blue
+
+
+
+ Blue/Red
+
+
+
+ Red/Green
+
+
+
+ Green/Red
+
+
+
+ Side-by-side
+
+
+
+ Top-Bottom
+
+
+
+ Wiggle
+
+ QGroupBox
@@ -1506,6 +1561,10 @@
Gameplay
+
+ Stereo rendering
+
+ QLineEdit
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Locale/hedgewars_zh_CN.ts
--- a/share/hedgewars/Data/Locale/hedgewars_zh_CN.ts Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Locale/hedgewars_zh_CN.ts Tue Feb 01 00:18:25 2011 +0100
@@ -9,7 +9,22 @@
copy of
-
+ 备份
+
+
+
+ DrawMapWidget
+
+ File error
+ 文件错误
+
+
+ Cannot open file '%1' for writing
+ 无法打开文件 '%1' 写入
+
+
+ Cannot read file '%1'
+ 无法读取文件 '%1'
@@ -187,11 +202,11 @@
Seed
-
+ 作种Set
-
+ 设定
@@ -329,31 +344,31 @@
PageDrawMapUndo
-
+ 取消Clear
-
+ 清除Load
- 读取
+ 读取Save
-
+ 保存Load drawn map
-
+ 读取已经绘制的地图Drawn Maps (*.hwmap);;All files (*.*)
-
+ 绘制的地图 (*.hwmap);;全部文件 (*.*)Save drawn map
-
+ 保存绘制的地图
@@ -555,7 +570,7 @@
The Windows version of Hedgewars supports Xfire. Make sure to add Hedgwars to its game list so your friends can see you playing.Tips
- Windows版本的刺猬大作战支持Xfire。添加它到游戏列表里让您的朋友看到。
+ Windows版本的刺猬大作战支持Xfire。添加它到游戏列表里让您的朋友看到。You should never install Hedgewars on computers you don't own (school, university, work, etc.). Please ask the responsible person instead!
@@ -620,7 +635,7 @@
The Homing Bee can be tricky to use. It's turn radius depends on it's velocity, so try to not use full power.Tips
- 归巢的蜜蜂有些技巧。它的回转半径和初速有关,最好不用全力发射。
+ 归巢的蜜蜂有些技巧。它的回转半径和初速有关,最好不用全力发射。Sticky Mines are a perfect tool to create small chain reactions knocking enemy hedgehogs into dire situations ... or water.
@@ -650,7 +665,7 @@
Use the Incinerating Grenade to temporary keep hedgehogs from passing terrain such as tunnels or platforms.Tips
- 燃烧瓶可以短时阻止刺猬通过特定区域(比如通道或平台)
+ 燃烧瓶可以短时阻止刺猬通过特定区域(比如通道或平台)Want to know who's behind the game? Click on the Hedgewars logo in the main menu to see the credits.
@@ -727,6 +742,21 @@
Tips在家目录的".hedgewars"找到刺猬的配置文件。备份随你,但是不要手动编辑。
+
+ The Windows version of Hedgewars supports Xfire. Make sure to add Hedgewars to its game list so your friends can see you playing.
+ Tips
+
+
+
+ The Homing Bee can be tricky to use. Its turn radius depends on it's velocity, so try to not use full power.
+ Tips
+
+
+
+ Use the Molotov or Flame Thrower to temporary keep hedgehogs from passing terrain such as tunnels or platforms.
+ Tips
+
+ PageMultiplayer
@@ -1083,7 +1113,7 @@
Copy
-
+ 备份
@@ -1102,7 +1132,7 @@
Copy
-
+ 备份
@@ -1310,6 +1340,46 @@
hand drawn map...
+ 手绘地图
+
+
+ Disabled
+
+
+
+ Red/Cyan
+
+
+
+ Cyan/Red
+
+
+
+ Red/Blue
+
+
+
+ Blue/Red
+
+
+
+ Red/Green
+
+
+
+ Green/Red
+
+
+
+ Side-by-side
+
+
+
+ Top-Bottom
+
+
+
+ Wiggle
@@ -1540,6 +1610,10 @@
Gameplay
+ 游戏
+
+
+ Stereo rendering
@@ -1785,7 +1859,7 @@
copy of
-
+ 备份
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Locale/hedgewars_zh_TW.ts
--- a/share/hedgewars/Data/Locale/hedgewars_zh_TW.ts Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Locale/hedgewars_zh_TW.ts Tue Feb 01 00:18:25 2011 +0100
@@ -536,11 +536,6 @@
- The Windows version of Hedgewars supports Xfire. Make sure to add Hedgwars to its game list so your friends can see you playing.
- Tips
-
-
- You should never install Hedgewars on computers you don't own (school, university, work, etc.). Please ask the responsible person instead!Tips
@@ -606,11 +601,6 @@
- The Homing Bee can be tricky to use. It's turn radius depends on it's velocity, so try to not use full power.
- Tips
-
-
- Sticky Mines are a perfect tool to create small chain reactions knocking enemy hedgehogs into dire situations ... or water.Tips
@@ -636,11 +626,6 @@
- Use the Incinerating Grenade to temporary keep hedgehogs from passing terrain such as tunnels or platforms.
- Tips
-
-
- Want to know who's behind the game? Click on the Hedgewars logo in the main menu to see the credits.Tips
@@ -690,6 +675,21 @@
Tips
+
+ The Windows version of Hedgewars supports Xfire. Make sure to add Hedgewars to its game list so your friends can see you playing.
+ Tips
+
+
+
+ The Homing Bee can be tricky to use. Its turn radius depends on it's velocity, so try to not use full power.
+ Tips
+
+
+
+ Use the Molotov or Flame Thrower to temporary keep hedgehogs from passing terrain such as tunnels or platforms.
+ Tips
+
+ PageMultiplayer
@@ -1234,6 +1234,46 @@
hand drawn map...
+
+ Disabled
+
+
+
+ Red/Cyan
+
+
+
+ Cyan/Red
+
+
+
+ Red/Blue
+
+
+
+ Blue/Red
+
+
+
+ Red/Green
+
+
+
+ Green/Red
+
+
+
+ Side-by-side
+
+
+
+ Top-Bottom
+
+
+
+ Wiggle
+
+ QGroupBox
@@ -1464,6 +1504,10 @@
Gameplay
+
+ Stereo rendering
+
+ QLineEdit
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Locale/hu.txt
--- a/share/hedgewars/Data/Locale/hu.txt Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Locale/hu.txt Tue Feb 01 00:18:25 2011 +0100
@@ -12,7 +12,7 @@
00:09=Desert Eagle
00:10=Dinamit
00:11=Baseball ütő
-00:12=Felütés
+00:12=Shoryuken
00:13=mp
00:14=Ejtőernyő
00:15=Légicsapás
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Locale/it.lua
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/share/hedgewars/Data/Locale/it.lua Tue Feb 01 00:18:25 2011 +0100
@@ -0,0 +1,95 @@
+locale = {
+ [":("] = ":(",
+ ["!!!"] = "!!!",
+ ["A game of luck"] = "Un gioco di fortuna",
+ ["Aiming Practice"] = "Pratica la tua mira", --Bazooka, Shotgun, SniperRifle
+ ["Bat balls at your enemies and|push them into the sea!"] = "Lancia delle palle ai tuoi nemici|e spingili in acqua!",
+ ["Bat your opponents through the|baskets and out of the map!"] = "Manda (colpendoli) i tuoi nemici|in acqua attraverso i canestri laterali!",
+ ["Bazooka Training"] = "Addestramento con il Bazooka",
+ ["Best laps per team: "] = "Tempo migliore per squadra: ",
+ ["Bloody Rookies"] = "Reclute Sanguinose", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree
+-- ["Boom!"] = "BOOM!",
+ ["by mikade"] = "creato da mikade", -- Control, User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork, Capture_the_Flag
+ ["CAPTURE THE FLAG"] = "Cattura la Bandiera",
+ ["Codename: Teamwork"] = "Nome in codice: Lavoro di Squadra",
+ ["Congratulations!"] = "Complimenti!",
+ ["Congratulations! You've eliminated all targets|within the allowed time frame."] = "Complimenti! Hai distrutto tutti gli obiettivi|entro il tempo previsto.", --Bazooka, Shotgun, SniperRifle
+ ["CONTROL"] = "Dominazione",
+ ["Control pillars to score points."] = "Controlla i pilastri per guadagnare punti.",
+ ["CONTROL v0.3"] = "Dominazione v0.3",
+-- ["CTF_BLIZZARD"] = "",
+ ["CUSTOM BUILD 0.2"] = "BUILD PERSONALE 0.2",
+ ["Cybernetic Empire"] = "Impero Cibernetico",
+ ["DAMMIT, ROOKIE! GET OFF MY HEAD!"] = "MALEDIZIONE, RECLUTA! VIA DALLA MIA TESTA!",
+ ["DAMMIT, ROOKIE!"] = "MALEDIZIONE, RECLUTA!",
+ ["Dangerous Ducklings"] = "Papere Pericolose",
+ ["Eliminate all enemies"] = "Elimina tutti i nemici",
+ ["Eliminate all targets before your time runs out.|You have unlimited ammo for this mission."] = "Distruggi tutti gli obiettivi entro il tempo previsto.|Hai armi illimitate per questa missione.", --Bazooka, Shotgun, SniperRifle
+ ["Eliminate Poison before the time runs out"] = "Elimina Veleno prima che il tempo finisca",
+ ["Eliminate the Blue Team"] = "Elimina il Blue Team",
+ ["- Eliminate Unit 3378 |- Feeble Resistance must survive"] = "- Elimina l'Unità 3378 |- La Resistenza Finale deve sopravvivere",
+ ["Enjoy the swim..."] = "Nuota con piacere...",
+ ["Fastest lap: "] = "Giro migliore: ",
+ ["Feeble Resistance"] = "Resistenza Finale",
+ ["Flag captured!"] = "Bandiera catturata!",
+ ["Flag respawned!"] = "Bandiera restituita!",
+ ["Flag returned!"] = "Bandiera recuperata!",
+ ["Flags will be placed where each team ends their turn."] = "La bandiera viene piazzata dove ogni squadra finisce il primo turno.",
+ ["GAME OVER!"] = "GAME OVER!",
+ ["Game Started!"] = "Gioco iniziato!",
+ ["Get on over there and take him out!"] = "Vai fuori da qui ed eliminalo!",
+-- ["Goal:"] = "",
+ ["GO! GO! GO!"] = "VAI! VAI! VAI!",
+ ["Good birdy......"] = "Bell'uccellino......",
+ ["Good luck out there!"] = "Buona fortuna!",
+ ["Hedgewars-Basketball"] = "Hedgewars-Pallacanestro",
+ ["Hedgewars-Knockball"] = "Hedgewars-Knockball",
+ ["Hmmm..."] = "Mmmmm...",
+ ["Hooray!"] = "Hurra!!!",
+ ["Hunter"] = "Cacciatore", --Bazooka, Shotgun, SniperRifle
+ ["Instructor"] = "Istruttore", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings
+ ["- Jumping is disabled"] = "- Non si può saltare!",
+ ["Listen up, maggot!!"] = "Recluta, Attenzione!!",
+-- ["|- Mines Time:"] = "|-Timer delle mine:", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
+ ["MISSION FAILED"] = "MISSIONE FALLITA", -- User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
+ ["MISSION SUCCESSFUL"] = "MISSIONE COMPLETATA CON SUCCESSO", -- User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
+ ["MISSION SUCCESS"] = "MISSIONE COMPLETATA", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
+ ["NEW fastest lap: "] = "Nuovo giro migliore: ",
+ ["NO JUMPING"] = "NON È POSSIBILE SALTARE",
+ ["Not So Friendly Match"] = "Partita non molto amichevole", -- Basketball, Knockball
+ ["Oh no! Just try again!"] = "Oh no! Prova ancora!", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
+ ["Oh no! Time's up! Just try again."] = "Oh no! Tempo scaduto! Prova ancora!", --Bazooka, Shotgun, SniperRifle
+ ["Operation Diver"] = "Operazione Sub",
+ ["Opposing Team: "] = "Squadra Nemica: ",
+ ["Pathetic Hog #%d"] = "Riccio Patetico #%d",
+ ["Poison"] = "Veleno",
+ ["Random Weapons"] = "Armi Casuali",
+ [" - Return the enemy flag to your base to score | - First team to 3 captures wins | - You may only score when your flag is in your base | - Hogs will drop the flag if killed, or drowned | - Dropped flags may be returned or recaptured | - Hogs respawn when killed"] = " - Riporta la bandiera nemica alla tua base per guadagnare un punto| - La prima squadra a catturarne 3 vince! | - Puoi guadagnare punti solo quando la tua bandiera si trova nella tua base! | - I ricci lasceranno cadere la bandiera se uccisi o caduti in acqua! | - Le bandiere cadute possono essere restituite o ricatturate! | - I ricci risorgono dalla morte!",
+-- ["RULES OF THE GAME [Press ESC to view]"] = "",
+ ["RULES OF THE GAME [Press ESC to view]"] = "REGOLE DEL GIOCO (Premi ESC per visualizzarle)",
+-- ["sec"] = "sec", -- CTF_Blizzard, TrophyRace, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork, Capture_the_Flag
+ ["See ya!"] = "Ci vediamo!",
+ ["Shotgun Team"] = "Squadra FaP",
+ ["Shotgun Training"] = "Allenamento con il Fucile a Pompa",
+ ["%s is out and Team %d|scored a penalty!| |Score:"] = "%s è fuori dal campo e la squadra %d|prende una penalità!| |Punteggio:", -- Basketball, Knockball
+ ["%s is out and Team %d|scored a point!| |Score:"] = "?s è fuori dal campo e la squadra %d|guadagna un punto!| |Puntuación:", -- Basketball, Knockball
+ ["Sniper Training"] = "Addestramento con il Fucile di Precisione",
+ ["Sniperz"] = "Squadra FdP",
+ ["Spooky Tree"] = "Albero stregato",
+ ["Team %d: "] = "Squadra %d: ",
+ ["Team Scores:"] = "Punteggi:",
+-- ["That was pointless."] = "Questo era senza scopo.",
+ ["The enemy is hiding out on yonder ducky!"] = "Il nemico si sta nascondendo dietro a quella papera!",
+-- ["The flag will respawn next round."] = "La bandiera verrà restituita alla fine del turno.",
+ ["There has been a mix-up with your gear and now you|have to utilize whatever is coming your way!"] = "C'è stato un problema con il tuo arsenale|e ora dovrai usare la prima arma che trovi!",
+ ["Toxic Team"] = "Team Velenoso", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
+ ["TrophyRace"] = "TrophyRace",
+ ["T_T"] = "T_T",
+ ["Unit 3378"] = "Unità 3378",
+ ["Use your rope to get from start to finish as fast as you can!"] = "Usa la tua corda per raggiungere il traguardo il più velocemente possibile!",
+ ["Victory for the"] = "La vittoria è di",
+ ["You have SCORED!!"] = "Hai guadagnato un PUNTO!",
+ ["You've failed. Try again."] = "Hai fallito. Prova di nuovo!",
+ ["You've reached the goal!| |Time: "] = "Hai raggiunto il traguardo!| |Tempo: ",
+ ["'Zooka Team"] = "Squadra 'zooka",
+ }
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Locale/it.txt
--- a/share/hedgewars/Data/Locale/it.txt Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Locale/it.txt Tue Feb 01 00:18:25 2011 +0100
@@ -38,10 +38,21 @@
00:35=Tempo Extra
00:36=Mirino Laser
00:37=Vampirismo
-00:38=Fucile di precisione
+00:38=Fucile di Precisione
00:39=Disco Volante
00:40=Bomba Molotov
00:41=Uccellino
+00:42=Dispositivo Portatile per Portali
+00:43=Ultima Sonata
+00:44=Vecchio Limburger
+00:45=Pistola Sinusoidale (beta)
+00:46=Lanciafiamme
+00:47=Mine Adesive
+00:48=Martello
+00:49=Risurrettore
+00:50=Attacco Perforante
+00:51=Palla di Fango
+00:52=Nessuna arma selezionata
01:00=Combattiamo!
01:01=Round in parità
@@ -52,7 +63,12 @@
01:06=Sudden death!
01:07=%1 rimanenti
01:08=Carburante
-01:09=Sincronizzo...
+01:09=Sincronizzazione...
+01:10=L'utilizzo di questa utilità non farà finire il turno!
+01:11=Questa arma o utilità non è ancora disponibile!
+01:12=Ultimo turno prima del Sudden Death!
+01:13=%1 turni rimanenti prima del Sudden Death!
+01:14=Preparati, %1!
; Event messages
; Hog (%1) died
@@ -97,6 +113,16 @@
02:00=%1 è spirato
02:00=%1 riposa in pace
02:00=Dottore, chiami un dottore!
+02:00=%1 preferisce giocare a Wormux
+02:00=%1 ha perso la sua partita!
+02:00=%1 è morto con (poco) onore!
+02:00=%1 va verso il Giudizio Universale!
+02:00=%1 non meritava di giocare questa partita!
+02:00=È la fine per %1
+02:00=I gatti hanno sette vite, %1 no!
+02:00=%1 è caduto per l'onore della sua squadra!
+02:00=%1 non ama questo gioco
+
; Hog (%1) drowned
02:01=%1 gioca a fare il sottomarino!
02:01=%1 imita il Titanic!
@@ -138,6 +164,13 @@
02:01=%1 si sta allenando nel nuoto a dorso
02:01=%1 ha scoperto che l'acqua è bagnata
02:01=%1 ha perso il battello
+02:01=%1 va a visitare la Fossa delle Marianne
+02:01=%1 è cibo per i pesci
+02:01=Ooops! %1 can't swim without flippers!
+02:01=%1 pare amare l'acqua più di ogni altra cosa
+02:01=%1 avrebbe dovuto fare qualche lezione di nuoto
+02:01=E' abbastanza salata l'acqua, %1?
+02:01=%1 sprofonda nei più neri abissi
; Match starts
02:02=Combattiamo!
02:02=Armato e pronto!
@@ -189,6 +222,9 @@
02:05=Corretto dosaggio: tutti quelli che trovi!
02:05=Consegna urgente!
02:05=Rifornimenti!
+02:05=Direttamente dall'ospedale!
+02:05=Correte! Casse salute in omaggio!
+02:05=Una superpozione! Ops... gioco sbagliato!
; New ammo crate
02:06=Altre armi!
02:06=È qui la festa?!
@@ -210,6 +246,10 @@
02:06=Non farlo prendere al nemico!
02:06=Una cassa misteriosa!
02:06=Giochi nuovi di zecca!
+02:06=Attenzione! Fragile!
+02:06=Regali per ricci simpatici!
+02:06=Con questo non avrai più problemi!
+02:06=Nuove armi solo per te!
; New utility crate
02:07=Attrezzi per tutti!
02:07=Nuovi accessori per la casa!
@@ -220,6 +260,7 @@
02:07=Usalo con saggezza
02:07=Oooh questa cassa è pesante
02:07=Potrebbe servirti
+02:07=Utilissime queste utilità!
; Hog (%1) skips his turn
02:08=%1 è così noioso...
02:08=%1 deve riordinare le idee
@@ -250,6 +291,11 @@
02:08=Forza, puoi fare di meglio, %1!
02:08=%1 ha apparentemente cose migliori da fare
02:08=%1 s'è addormentato
+02:08=%1 vuole rispondere al telefono
+02:08=%1 adotta una nuova strategia
+02:08=%1 preferisce rimanere neutrale
+02:08=%1 ha alzato la bandiera bianca
+
; Hog (%1) hurts himself only
02:09=%1 dovrebbe migliorare la sua mira!
02:09=%1 sembra odiarsi...
@@ -279,9 +325,14 @@
02:09=%1 l'ha fatto chiaramente di proposito
02:09=Non lo dirò a nessuno se non vuoi, %1
02:09=Imbarazzante!
-02:09=Sono sicuro che nessuno ti ha visto %1
+02:09=Sono sicuro che nessuno ti abbia visto, %1
02:09=%1 dovrebbe riguardarsi qualche manuale
02:09=Chiaramente è l'arma di %1 che non funziona
+02:09=%1 non ama molto la sua vita
+02:09=%1 imita i kamikaze
+02:09=Il colpo peggiore. Della storia.
+02:09=%1 fa la figura del peracottaio
+02:09=%1 fa la figura del cioccolataio
; Hog shot an home run (using the bat and another hog)
02:10=Un fuori campo!
@@ -295,21 +346,21 @@
03:03=Arma Guidata
03:04=Arma da Fuoco (colpi multipli)
03:05=Strumento di Scavo
-03:06=Azione
+03:06=Azione (da Codardi)
03:07=Mezzo di Trasporto
03:08=Bomba di Prossimità
03:09=Arma da Fuoco (colpi multipli)
-03:10=BOOM!
-03:11=Bonk!
+03:10=Pericoloso Esplosivo!
+03:11=Arma da Sportivi (Bonk!)
03:12=Arti Marziali
03:13=NON USATO
03:14=Mezzo di Trasporto
03:15=Attacco Aereo
03:16=Attacco Aereo
03:17=Strumeno di Scavo
-03:18=Utilità
+03:18=Utilitàdi costruzione
03:19=Mezzo di Trasporto
-03:20=Azione
+03:20=Azione di Cambio
03:21=Arma Balistica
03:22=Chiamatemi Indiana!
03:23=(Vera) Arte Marziale
@@ -331,6 +382,16 @@
03:39=Mezzo di Trasporto
03:40=Granata ad Incenerimento
03:41=Grande fan di Squawks
+03:42=Portali ovunque!
+; the misspelled "Beethoven" is intentional (-> to beat)
+03:43=La mortale sonata di Beathoven!
+03:44=Il meglio prima del 1923
+03:45=Arma Scientifica (beta)
+03:46=Arma da Fuoco (quello vero!)
+03:47=Arma da Lancio
+03:48=E' tempo di martellate!
+03:49=Antica Arte Mistica
+03:50=Attacco Aereo
; Weapon Descriptions (use | as line breaks)
04:00=Attacca i tuoi nemici con una semplice granata.|Esploderà quando il suo timer arriverà a zero.|1-5: Imposta il timer della granata|Attacco: Tieni premuto per lanciare con più forza
@@ -342,7 +403,7 @@
04:06=Annoiato? Non hai modo di attaccare? Non vuoi|sprecare munizioni? Nessun problema!|Salta il turno, codardo!|Attacco: Salta il turno senza combattere
04:07=Copri lunghe distanze usando colpi precisi del|rampino. Usa la tua inerzia per scivolare contro altri|ricci o fai cadere granate o altre armi|su di loro.|Attacco: Spara o rilascia il rampino|Salto Lungo: Lascia granate o armi simili
04:08=Tieni i tuoi nemici alla larga lasciando una|mina in passaggi stretti o proprio sotto i loro|piedi. Assicurati di scappare prima di azionarla|tu stesso!|Attacco: Lascia la mina davanti a te
-04:09=Non confidi nella tua mira? Usa la Desert|Eagle per attaccare usando fino a quattro colpi.|Attacco: Spara (più volte)
+04:09=Non confidi nella tua mira? Usa la Desert|Eagle per attaccare usando fino a quattro colpi.|Attacco: Spara (quattro volte)
04:10=La forza bruta è sempre un'opzione. Lascia questo|classico esplosivo vicino ai tuoi nemici e|batti in ritirata.|Attacco: Lascia la dinamite davanti a te
04:11=Liberati dei ricci nemici battendoli oltre|i bordi della mappa o nell'acqua. Oppure che|ne diresti di buttare alcune mine ai|tuoi amici?|Attacco: colpisci qualunque cosa di fronte a te
04:12=Avvicinati faccia a faccia per scatenare il|potere di questa mortale tecnica di arti marziali.|Attacco: esegue il Pugno di Fuoco
@@ -359,7 +420,7 @@
04:23=Se non avete niente da perdere, questo può|esservi d'aiuto. Sacrificate il vostro riccio|lanciandolo in una direzione, facendogli urtare|tutto ciò che incontra per poi esplodere alla fine.|Attacco: Lancia il mortale e devastante attacco
04:24=Buon Compleanno! Lancia questa torta, falla camminare|fino ai tuoi nemici e lasciagli avere un party|esplosivo. La torta può passare quasi tutti i terreni|ma potrebbe detonare prima in questo modo.|Attacco: Avvia la torta o fermala per farla esplodere
04:25=Usa questo kit di travestimento per far saltare|i nemici verso il tuo riccio (e in qualche|precipzio o buco).|Attacco: Usa il kit e cerca di sedurre un altro riccio
-04:26=Lancia questa succosa anguria ai tuoi nemici.|Quando il timer finirà, si dividerà in molti altri|pezzi esplosivi.|1-5: Imposta il timer del'anguria|Attacco: Tieni premuto per lanciare con più forza
+04:26=Lancia questa succosa anguria ai tuoi nemici.|Quando il timer finirà, si dividerà in molti altri|pezzi esplosivi.|1-5: Imposta il timer dell'anguria|Attacco: Tieni premuto per lanciare con più forza
04:27=Lascia che il fuoco dell'inferno cada sui nemici|usando questo diabolico esplosivo. Non|avvicinarti troppo all'esplosione dato che piccoli|fuochi possono perdurare di più.|Attacco: Tieni premuto per lanciare con più forza
04:28=Poco dopo averlo lanciato, questo razzo inizierà|a scavare attraverso il terreno ed esploderà|quando la sua spoletta verrà azionata o tornerà|di nuovo in superficie.|Attacco: Tieni premuto per lanciare con più forza
04:29=Questa non è adatta ai bambini! La Sparapalle spara|tonnellate di piccole palline colorate riempite di|esplosivo.|Attacco: Spara alla massima potenza|Su/Giu: Continua a mirare
@@ -372,9 +433,19 @@
04:36=Beh, a volte si è davvero uno schifo a mirare.|Sfruttate un po' di assistenza usando la moderna|tecnologia.|Attacco: Attiva
04:37=Non temete la luce del giorno. Durerà solo un turno|ma vi permetterà di assorbire il danno che farete|agli altri ricci.|Attacco: Attiva
04:38=Il fucile di precisione può essere l'arma più|devastante del vostro arsenale, tuttavia è molto debole|a distanza ravvicinata. Il danno inflitto aumenta con|la distanza dall'obiettivo.|Attacco: Spara (due volte)
-04:39=Vola in un'altra parte della mappa usando il|disco volante. Questo veicolo difficile da imparare|è in grado di portarvi quasi in ogni zona del|campo di battaglia.|Attacco: Attiva|Su/Destra/Sinistra: Applica forza in una direzione
+04:39=Vola in un'altra parte della mappa usando il|disco volante. Questo veicolo difficile da imparare|è in grado di portarvi quasi in ogni zona del|campo di battaglia.|Lo potete usare anche per andare sott'acqua!|Attacco: Attiva|Su/Destra/Sinistra: Applica forza in una direzione
04:40=Dai fuoco a una parte di terreno usando questa|bottiglia piena di liquido infiammabile.|Attacco: Tieni premuto per lanciare con più potenza
04:41=La prova che la natura può persino fare meglio|del disco volante. L'uccellino può trasportare|il vostro riccio e bombardare di uova i nemici!|Attacco: Attiva e lancia le uova|Su/Giu/Destra/Sinistra: Vola in una direzione
+04:42=Questo creatore portatile di portali|può trasferire all'istante voi, i vostri nemici|o le vostre armi da un punto all'altro del|terreno.|Usatelo con accortezza e potrà riverlarsi|la vostra arma vincente!|Attacco: Lancia un portale|Tab: Cambia il colore del portale
+04:43=Do! Re! Mi! Fa! Sol! La! Si!|Suonate il mitico pianoforte di Beathoven e|sarà un successo esplosivo!|Il pianoforte cadrà dal cielo ma|qualcuno deve suonarlo e questo costerà|la sua vita!|Cursore: Sceglie la zona da attaccare|F1-F9: Suona il pianoforte
+04:44=Questo non è normale formaggio, è guerriglia biologica!| Non farà un gran danno al momento dell'esplosione|ma avvelenerà chiunque ne senta lo spiacevole odore!|1-5: Imposta il timer del limburger|Attacco: Tieni premuto per lanciare con più forza
+04:45=Tutto il potere della fisica e della scienza in|mano vostra con questa potente arma|in grado di generare una potente curva|sinusoidale di pura energia.|Attenzione! Questa arma vi darà un forte|contraccolpo (ancora in versione beta)|Attacco: Spara
+04:46=Lanciate delle brucianti fiamme contro i vostri nemici.|Assolutamente scottante!|Attacco: Attiva|Su/Giù: Continua a mirare|Sinistra/Destra: Modifica la potenza di fuoriuscita delle fiamme
+04:47=Raddoppiate il divertimento con due appiccicose mine.|Usatele per difendervi o creare potenti reazioni a catena (o ambedue le cose!)|Attacco: Tieni premuto per lanciare con più forza (due volte)
+04:48=Colpite i vostri nemici con forza!|Un buon colpo di questo martello toglierà|un terzo della vita della vittima e la farà|sprofondare nel terreno.|Attacco: Attiva
+04:49=Risuscitate i vostri ricci morti in battaglia.|Ma attenzione a non risuscitare i vostri nemici!|Attacco: Tieni premuto per risuscitare lentamente|Su: Accelera la risurrezione
+04:50=Scavate dall'alto verso il basso!|Con questo attacco aereo è possibile scavare a fondo grazie|a cinque razzi trivella lanciati dall'alto, che colpiranno|tutto quello che sarà a tiro.|Cursore: Sceglie la zona da attaccare
+04:51=Spingete i nemici in acqua o sopra le mine!|Questa semplice arma non farà molti danni ma|spingerà con forza i nemici che colpisce!|Nei temi Snow e Christmas è una palla di neve!|Attacco: Tieni premuto per lanciare con più forza
; Game goal strings
05:00=Modalità di Gioco
@@ -393,3 +464,8 @@
05:13=Timer delle Mine: Le mine esploderanno all'istante
05:14=Timer delle Mine: Le mine esploderanno dopo 0 - 3 secondi
05:15=Modificatore Danni: Tutte le armi faranno il %1% di danni
+05:16=La vita di tutti i ricci verrà resettata allo stato di partenza alla fine di ogni turno
+05:17=I ricci AI risorgono dalla morte
+05:18=Attacchi illimitati
+05:19=Le armi verranno resettate allo stato di partenza alla fine di ogni turno
+05:20=Le armi non sono condivise tra i ricci della stessa squadra
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Locale/ja.txt
--- a/share/hedgewars/Data/Locale/ja.txt Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Locale/ja.txt Tue Feb 01 00:18:25 2011 +0100
@@ -12,7 +12,7 @@
00:09=ヂーガル
00:10=ダイナマイト
00:11=野球バット
-00:12=ファイヤーパンチ
+00:12=昇竜拳
00:13=秒
00:14=落下傘
00:15=空袭
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Locale/ko.lua
--- a/share/hedgewars/Data/Locale/ko.lua Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Locale/ko.lua Tue Feb 01 00:18:25 2011 +0100
@@ -28,7 +28,6 @@
-- ["Eliminate Poison before the time runs out"] = "",
-- ["Eliminate the Blue Team"] = "",
-- ["- Eliminate Unit 3378 |- Feeble Resistance must survive"] = "",
--- ["- Eliminate Unit 3378 |- Feeble Resistance must survive"] = "",
-- ["Enjoy the swim..."] = "",
-- ["Fastest lap: "] = "",
-- ["Feeble Resistance"] = "",
@@ -53,8 +52,7 @@
-- ["Listen up, maggot!!"] = "",
-- ["|- Mines Time:"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
-- ["MISSION FAILED"] = "", -- User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
--- ["MISSION SUCCESSFUL"] = "", -- User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
--- ["MISSION SUCCESS"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
+-- ["MISSION SUCCESSFUL"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
-- ["NEW fastest lap: "] = "",
-- ["NO JUMPING"] = "",
-- ["Not So Friendly Match"] = "", -- Basketball, Knockball
@@ -63,11 +61,10 @@
-- ["Operation Diver"] = "",
-- ["Opposing Team: "] = "",
-- ["Pathetic Hog #%d"] = "",
+-- ["points"] = "", -- Control, CTF_Blizzard, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle
-- ["Poison"] = "",
-- ["Random Weapons"] = "",
-- [" - Return the enemy flag to your base to score | - First team to 3 captures wins | - You may only score when your flag is in your base | - Hogs will drop the flag if killed, or drowned | - Dropped flags may be returned or recaptured | - Hogs respawn when killed"] = "",
--- [" - Return the enemy flag to your base to score | - First team to 3 captures wins | - You may only score when your flag is in your base | - Hogs will drop the flag if killed, or drowned | - Dropped flags may be returned or recaptured | - Hogs respawn when killed"] = "",
--- ["RULES OF THE GAME [Press ESC to view]"] = "",
-- ["RULES OF THE GAME [Press ESC to view]"] = "",
-- ["sec"] = "", -- CTF_Blizzard, TrophyRace, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork, Capture_the_Flag
-- ["See ya!"] = "",
@@ -89,7 +86,7 @@
-- ["T_T"] = "",
-- ["Unit 3378"] = "",
-- ["Use your rope to get from start to finish as fast as you can!"] = "",
--- ["Victory for the"] = "",
+-- ["Victory for the "] = "", -- CTF_Blizzard, Capture_the_Flag
-- ["You have SCORED!!"] = "",
-- ["You've failed. Try again."] = "",
-- ["You've reached the goal!| |Time: "] = "",
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Locale/ko.txt
--- a/share/hedgewars/Data/Locale/ko.txt Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Locale/ko.txt Tue Feb 01 00:18:25 2011 +0100
@@ -12,7 +12,7 @@
00:09=권총
00:10=다이너마이트
00:11=야구 방망이
-00:12=올려치기
+00:12=Shoryuken
00:13=초
00:14=낙하산
00:15=폭탄 공습
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Locale/nl.txt
--- a/share/hedgewars/Data/Locale/nl.txt Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Locale/nl.txt Tue Feb 01 00:18:25 2011 +0100
@@ -12,7 +12,7 @@
00:09=Desert Eagle
00:10=Dynamite
00:11=Baseball Bat
-00:12=Fire Punch
+00:12=Shoryuken
00:13=sec
00:14=Parachute
00:15=Air Attack
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Locale/pl.lua
--- a/share/hedgewars/Data/Locale/pl.lua Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Locale/pl.lua Tue Feb 01 00:18:25 2011 +0100
@@ -20,8 +20,8 @@
["CTF_BLIZZARD"] = "Śnieżyca",
["CUSTOM BUILD 0.2"] = "Wersja 0.2",
["Cybernetic Empire"] = "Cybernetyczne Imperium",
+ ["DAMMIT, ROOKIE! GET OFF MY HEAD!"] = "Młody!!! Złaź z mojej głowy!!!",
["DAMMIT, ROOKIE!"] = "Żółtodziobie!",
- ["DAMMIT, ROOKIE! GET OFF MY HEAD!"] = "Młody!!! Złaź z mojej głowy!!!",
["Dangerous Ducklings"] = "Niebezpieczne Kaczory",
["Eliminate all enemies"] = "Wyeliminuj wszystkich przeciwników",
["Eliminate all targets before your time runs out.|You have unlimited ammo for this mission."] = "Zniszcz wszystkie cele zanim upłynie czas.|W tej misji masz nieskończoną ilość amunicji.",
@@ -53,7 +53,6 @@
["|- Mines Time:"] = "|- Czas detonacji min:",
["MISSION FAILED"] = "MISJA ZAKOŃCZONA NIEPOWODZENIEM",
["MISSION SUCCESSFUL"] = "MISJA POWIODŁA SIĘ",
- ["MISSION SUCCESS"] = "MISJA POWIODŁA SIĘ",
["NEW fastest lap: "] = "NOWE najszybsze okrążenie: ",
["NO JUMPING"] = "BEZ SKAKANIA",
["Not So Friendly Match"] = "Mecz Nie-Do-Końca Towarzyski",
@@ -62,6 +61,7 @@
["Operation Diver"] = "Operacja Nurek",
["Opposing Team: "] = "Przeciwna drużyna",
["Pathetic Hog #%d"] = "Załosny Jeż #%d",
+-- ["points"] = "", -- Control, CTF_Blizzard, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle
["Poison"] = "Truciciel",
["Random Weapons"] = "Losowe uzbrojenie",
[" - Return the enemy flag to your base to score | - First team to 3 captures wins | - You may only score when your flag is in your base | - Hogs will drop the flag if killed, or drowned | - Dropped flags may be returned or recaptured | - Hogs respawn when killed"] = " - Przynieś flagę wroga do swojej bazy by zdobyć punkt | - Pierwszy kto zrobi to 3 razy, wygrywa | - Punkt zdobywasz tylko gdy twoja flaga znajduje się w bazie | - Jeże upuszczą flagę gdy zostaną zabite bądź utopione | - Upuszczona flaga może być przywrócona lub przechwycona ponownie | - Jeże odradzają się po śmierci",
@@ -86,7 +86,7 @@
["T_T"] = "T_T",
["Unit 3378"] = "Jednostka 3378",
["Use your rope to get from start to finish as fast as you can!"] = "Użyj liny by jak najszybciej dotrzec od startu do mety",
- ["Victory for the"] = "Zwycięstwo przypadło",
+ ["Victory for the "] = "Zwycięstwo przypadło",
["You have SCORED!!"] = "Zdobyłeś PUNKT",
["You've failed. Try again."] = "Przegrałeś. Spróbuj jeszcze raz",
["You've reached the goal!| |Time: "] = "Dotarłeś do celu!| |Czas: ",
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Locale/pl.txt
--- a/share/hedgewars/Data/Locale/pl.txt Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Locale/pl.txt Tue Feb 01 00:18:25 2011 +0100
@@ -12,7 +12,7 @@
00:09=Desert Eagle
00:10=Dynamit
00:11=Kij bejsbolowy
-00:12=Ognista pięść
+00:12=Shoryuken
00:13=sek
00:14=Spadochron
00:15=Nalot
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Locale/pt_BR.lua
--- a/share/hedgewars/Data/Locale/pt_BR.lua Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Locale/pt_BR.lua Tue Feb 01 00:18:25 2011 +0100
@@ -52,8 +52,7 @@
-- ["Listen up, maggot!!"] = "",
-- ["|- Mines Time:"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
-- ["MISSION FAILED"] = "", -- User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
--- ["MISSION SUCCESSFUL"] = "", -- User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
--- ["MISSION SUCCESS"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
+-- ["MISSION SUCCESSFUL"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
["NEW fastest lap: "] = "NOVA volta mais rápida: ",
-- ["NO JUMPING"] = "",
["Not So Friendly Match"] = "Partida não muito amigável", -- Basketball, Knockball
@@ -62,11 +61,11 @@
-- ["Operation Diver"] = "",
-- ["Opposing Team: "] = "",
-- ["Pathetic Hog #%d"] = "",
+-- ["points"] = "", -- Control, CTF_Blizzard, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle
-- ["Poison"] = "",
-- ["Random Weapons"] = "",
-- [" - Return the enemy flag to your base to score | - First team to 3 captures wins | - You may only score when your flag is in your base | - Hogs will drop the flag if killed, or drowned | - Dropped flags may be returned or recaptured | - Hogs respawn when killed"] = "",
-- ["RULES OF THE GAME [Press ESC to view]"] = "",
--- ["RULES OF THE GAME [Press ESC to view]"] = "",
-- ["sec"] = "", -- CTF_Blizzard, TrophyRace, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork, Capture_the_Flag
-- ["See ya!"] = "",
["Shotgun Team"] = "Carabineiros",
@@ -87,10 +86,9 @@
-- ["T_T"] = "",
-- ["Unit 3378"] = "",
["Use your rope to get from start to finish as fast as you can!"] = "Use sua corda para ir do início ao fim o mais rápido que você puder!",
--- ["Victory for the"] = "",
+-- ["Victory for the "] = "", -- CTF_Blizzard, Capture_the_Flag
-- ["You have SCORED!!"] = "",
-- ["You've failed. Try again."] = "",
--- ["You've reached the goal!| |Time:"] = "",
["You've reached the goal!| |Time: "] = "Você alcançou o objetivo!| |Tempo: ",
["'Zooka Team"] = "Bazuqueiros",
}
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Locale/pt_BR.txt
--- a/share/hedgewars/Data/Locale/pt_BR.txt Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Locale/pt_BR.txt Tue Feb 01 00:18:25 2011 +0100
@@ -12,7 +12,7 @@
00:09=Desert Eagle (Pistola)
00:10=Dinamite
00:11=Taco de Baseball
-00:12=Soco de Fogo
+00:12=Shoryuken
00:13=seg
00:14=Paraquedas
00:15=Ataque Aéreo
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Locale/pt_PT.lua
--- a/share/hedgewars/Data/Locale/pt_PT.lua Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Locale/pt_PT.lua Tue Feb 01 00:18:25 2011 +0100
@@ -52,8 +52,7 @@
-- ["Listen up, maggot!!"] = "",
-- ["|- Mines Time:"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
-- ["MISSION FAILED"] = "", -- User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
--- ["MISSION SUCCESSFUL"] = "", -- User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
--- ["MISSION SUCCESS"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
+-- ["MISSION SUCCESSFUL"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
["NEW fastest lap: "] = "NOVA volta recorde: ",
-- ["NO JUMPING"] = "",
["Not So Friendly Match"] = "Partida não muito amigável", -- Basketball, Knockball
@@ -62,11 +61,11 @@
-- ["Operation Diver"] = "",
-- ["Opposing Team: "] = "",
-- ["Pathetic Hog #%d"] = "",
+-- ["points"] = "", -- Control, CTF_Blizzard, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle
-- ["Poison"] = "",
-- ["Random Weapons"] = "",
-- [" - Return the enemy flag to your base to score | - First team to 3 captures wins | - You may only score when your flag is in your base | - Hogs will drop the flag if killed, or drowned | - Dropped flags may be returned or recaptured | - Hogs respawn when killed"] = "",
-- ["RULES OF THE GAME [Press ESC to view]"] = "",
--- ["RULES OF THE GAME [Press ESC to view]"] = "",
-- ["sec"] = "", -- CTF_Blizzard, TrophyRace, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork, Capture_the_Flag
-- ["See ya!"] = "",
["Shotgun Team"] = "Caçadores",
@@ -87,10 +86,9 @@
-- ["T_T"] = "",
-- ["Unit 3378"] = "",
["Use your rope to get from start to finish as fast as you can!"] = "Utilizando a corda, percorre o percurso do inicio ao fim o mais rápido que conseguires!",
--- ["Victory for the"] = "",
+-- ["Victory for the "] = "", -- CTF_Blizzard, Capture_the_Flag
-- ["You have SCORED!!"] = "",
-- ["You've failed. Try again."] = "",
--- ["You've reached the goal!| |Time:"] = "",
["You've reached the goal!| |Time: "] = "Chegaste ao fim!| |Tempo: ",
["'Zooka Team"] = "Bazuqueiros",
}
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Locale/pt_PT.txt
--- a/share/hedgewars/Data/Locale/pt_PT.txt Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Locale/pt_PT.txt Tue Feb 01 00:18:25 2011 +0100
@@ -12,7 +12,7 @@
00:09=Desert Eagle
00:10=Dinamite
00:11=Taco de Basebol
-00:12=Soco de Fogo
+00:12=Shoryuken
00:13=seg
00:14=Paraquedas
00:15=Ataque Aéreo
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Locale/ru.txt
--- a/share/hedgewars/Data/Locale/ru.txt Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Locale/ru.txt Tue Feb 01 00:18:25 2011 +0100
@@ -12,7 +12,7 @@
00:09=Пистолет Desert Eagle
00:10=Динамит
00:11=Бейсбольная бита
-00:12=Неистовый удар
+00:12=Shoryuken
00:13=сек
00:14=Парашют
00:15=Воздушная атака
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Locale/sk.lua
--- a/share/hedgewars/Data/Locale/sk.lua Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Locale/sk.lua Tue Feb 01 00:18:25 2011 +0100
@@ -1,96 +1,94 @@
locale = {
--- [":("] = "",
--- ["!!!"] = "",
--- ["A game of luck"] = "",
+ [":("] = ":(",
+ ["!!!"] = "!!!",
+ ["A game of luck"] = "Hra o šťastí",
["Aiming Practice"] = "Tréning presnosti", --Bazooka, Shotgun, SniperRifle
["Bat balls at your enemies and|push them into the sea!"] = "Loptami triafajte vašich nepriateľov|a zhoďte ich tak do mora!",
["Bat your opponents through the|baskets and out of the map!"] = "Odpálkujte vašich súperov do koša|a von z mapy!",
["Bazooka Training"] = "Tréning s bazukou",
["Best laps per team: "] = "Najrýchlejšie kolá podľa tímov: ",
--- ["Bloody Rookies"] = "", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree
--- ["Boom!"] = "",
--- ["by mikade"] = "", -- Control, User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork, Capture_the_Flag
--- ["CAPTURE THE FLAG"] = "",
--- ["Codename: Teamwork"] = "",
--- ["Congratulations!"] = "",
+ ["Bloody Rookies"] = "Mizerní zelenáči", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree
+ ["Boom!"] = "Bum!",
+ ["by mikade"] = "napísal mikade", -- Control, User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork, Capture_the_Flag
+ ["CAPTURE THE FLAG"] = "ZMOCNITE SA VLAJKY",
+ ["Codename: Teamwork"] = "Kódové meno: Teamová práca",
+ ["Congratulations!"] = "Gratulujem!",
["Congratulations! You've eliminated all targets|within the allowed time frame."] = "Gratulujem! Zneškodnili ste všetky ciele|v stanovenom čase.", --Bazooka, Shotgun, SniperRifle
--- ["CONTROL"] = "",
--- ["Control pillars to score points."] = "",
--- ["CONTROL v0.3"] = "",
--- ["CTF_BLIZZARD"] = "",
--- ["CUSTOM BUILD 0.2"] = "",
--- ["Cybernetic Empire"] = "",
--- ["DAMMIT, ROOKIE!"] = "",
--- ["DAMMIT, ROOKIE! GET OFF MY HEAD!"] = "",
--- ["Dangerous Ducklings"] = "",
--- ["Eliminate all enemies"] = "",
+ ["CONTROL"] = "OVLÁDNUTIE",
+ ["Control pillars to score points."] = "Ovládnite piliere, aby ste skórovali",
+ ["CONTROL v0.3"] = "OVLÁDNUTIE v0.3",
+ ["CTF_BLIZZARD"] = "CTF_METELICA",
+ ["CUSTOM BUILD 0.2"] = "VLASTNÉ ZOSTAVENIE 0.2",
+ ["Cybernetic Empire"] = "Kybertnetické impérium",
+ ["DAMMIT, ROOKIE!"] = "Prekliaty zelenáč!",
+ ["DAMMIT, ROOKIE! GET OFF MY HEAD!"] = "Do kelu s tebou, zelenáč! Okamžite mi zlez z hlavy!",
+ ["Dangerous Ducklings"] = "Nebezpečné kačiatka",
+ ["Eliminate all enemies"] = "Zneškodnite všetkých nepriateľov",
["Eliminate all targets before your time runs out.|You have unlimited ammo for this mission."] = "Zneškodnite všetky ciele pred vypršaním času.|Na túto misiu máte neobmedzené množstvo streliva.", --Bazooka, Shotgun, SniperRifle
--- ["Eliminate Poison before the time runs out"] = "",
--- ["Eliminate the Blue Team"] = "",
--- ["- Eliminate Unit 3378 |- Feeble Resistance must survive"] = "",
--- ["Enjoy the swim..."] = "",
+ ["Eliminate Poison before the time runs out"] = "Zneškodnite Poisona pred tým, ako vyprší čas",
+ ["Eliminate the Blue Team"] = "Zneškodnite modrý tím",
+ ["- Eliminate Unit 3378 |- Feeble Resistance must survive"] = "- Zneškodnite Jednotku 3378|- Slabý odpor musí prežiť",
+ ["Enjoy the swim..."] = "Užite si plávanie...",
["Fastest lap: "] = "Najrýchlejšie kolo: ",
--- ["Feeble Resistance"] = "",
--- ["Flag captured!"] = "",
--- ["Flag respawned!"] = "",
--- ["Flag returned!"] = "",
--- ["Flags will be placed where each team ends their turn."] = "",
--- ["GAME OVER!"] = "",
--- ["Game Started!"] = "",
--- ["Get on over there and take him out!"] = "",
--- ["Goal:"] = "",
--- ["GO! GO! GO!"] = "",
--- ["Good birdy......"] = "",
--- ["Good luck out there!"] = "",
+ ["Feeble Resistance"] = "Slabý odpor",
+ ["Flag captured!"] = "Získaná vlajka!",
+ ["Flag respawned!"] = "Vlajka obnovená!",
+ ["Flag returned!"] = "Vlajka vrátená!",
+ ["Flags will be placed where each team ends their turn."] = "Vlajky budu umiestnené po skončení tohto ťahu",
+ ["GAME OVER!"] = "KONIEC HRY!",
+ ["Game Started!"] = "Hra začala!",
+ ["Get on over there and take him out!"] = "Okamžite poď sem a dostaň ho!",
+ ["Goal:"] = "Cieľ:",
+ ["GO! GO! GO!"] = "POĎ! POĎ! POĎ!",
+ ["Good birdy......"] = "Dobrý vtáčik......",
+ ["Good luck out there!"] = "Veľa šťastia!",
["Hedgewars-Basketball"] = "Hedgewars-Basketbal",
["Hedgewars-Knockball"] = "Hedgewars-Knockball",
--- ["Hmmm..."] = "",
--- ["Hooray!"] = "",
+ ["Hmmm..."] = "Hmm..",
+ ["Hooray!"] = "Hurá!",
["Hunter"] = "Lovec", --Bazooka, Shotgun, SniperRifle
--- ["Instructor"] = "", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings
--- ["- Jumping is disabled"] = "",
--- ["Listen up, maggot!!"] = "",
--- ["|- Mines Time:"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
--- ["MISSION FAILED"] = "", -- User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
--- ["MISSION SUCCESSFUL"] = "", -- User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
--- ["MISSION SUCCESS"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
+ ["Instructor"] = "Inštruktor", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings
+ ["- Jumping is disabled"] = "- Skákanie je vypnuté",
+ ["Listen up, maggot!!"] = "Počúvaj, ty biedny červ!",
+ ["|- Mines Time:"] = "|- Časovač pre míny:", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
+ ["MISSION FAILED"] = "MISIA NEÚSPEŠNÁ", -- User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
+ ["MISSION SUCCESSFUL"] = "MISIA ÚSPEŠNÁ", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
["NEW fastest lap: "] = "NOVÉ najrýchlejšie kolo: ",
--- ["NO JUMPING"] = "",
+ ["NO JUMPING"] = "ŽIADNE SKÁKANIE",
["Not So Friendly Match"] = "Nie tak celkom priateľský zápas", -- Basketball, Knockball
--- ["Oh no! Just try again!"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
- ["Oh no! Time's up! Just try again."] = "Ale nie! Čas vypršal! Tak to skúste znovu.", --Bazooka, Shotgun, SniperRifle
--- ["Operation Diver"] = "",
--- ["Opposing Team: "] = "",
--- ["Pathetic Hog #%d"] = "",
--- ["Poison"] = "",
--- ["Random Weapons"] = "",
--- [" - Return the enemy flag to your base to score | - First team to 3 captures wins | - You may only score when your flag is in your base | - Hogs will drop the flag if killed, or drowned | - Dropped flags may be returned or recaptured | - Hogs respawn when killed"] = "",
--- ["RULES OF THE GAME [Press ESC to view]"] = "",
--- ["RULES OF THE GAME [Press ESC to view]"] = "",
--- ["sec"] = "", -- CTF_Blizzard, TrophyRace, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork, Capture_the_Flag
--- ["See ya!"] = "",
+ ["Oh no! Just try again!"] = "Áále nie! Tak to skúste znovu!", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
+ ["Oh no! Time's up! Just try again."] = "Áále nie! Čas vypršal! Tak to skúste znovu.", --Bazooka, Shotgun, SniperRifle
+ ["Operation Diver"] = "Operácia Potápač",
+ ["Opposing Team: "] = "Nepriateľský tím",
+ ["Pathetic Hog #%d"] = "Žalostný ježko #%d",
+ ["points"] = "body", -- Control, CTF_Blizzard, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle
+ ["Poison"] = "Poison",
+ ["Random Weapons"] = "Náhodné zbrane",
+ [" - Return the enemy flag to your base to score | - First team to 3 captures wins | - You may only score when your flag is in your base | - Hogs will drop the flag if killed, or drowned | - Dropped flags may be returned or recaptured | - Hogs respawn when killed"] = " - Skórujete prinesením nepriateľskej vlajky do vašej základne | - Prvý tím, ktorý dosiahne 3 body, vyhráva | - Skórujete len vtedy, keď je máte svoju vlajku v základni | - Spadnuté vlajky môžu byť vrátené na základňu alebo sa ich môže zmocniť súpere | - Ježkovia po smrti ožiujú",
+ ["RULES OF THE GAME [Press ESC to view]"] = "PRAVIDLÁ HRY [Stlačte Esc pre ich zobrazenie]",
+ ["sec"] = "sek", -- CTF_Blizzard, TrophyRace, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork, Capture_the_Flag
+ ["See ya!"] = "Tak zatiaľ!",
["Shotgun Team"] = "Shotgun tím",
["Shotgun Training"] = "Tréning s brokovnicou",
["%s is out and Team %d|scored a penalty!| |Score:"] = "%s je mimo hru a tím %d|dostal trestný bod!| |Skóre:", -- Basketball, Knockball
["%s is out and Team %d|scored a point!| |Score:"] = "%s je mimo hru a tím %d|získal bod!| |Skóre:", -- Basketball, Knockball
["Sniper Training"] = "Tréning pre ostreľovačov",
["Sniperz"] = "Ostreľovači",
--- ["Spooky Tree"] = "",
+ ["Spooky Tree"] = "Strašidelný strom",
["Team %d: "] = "Tím %d: ",
--- ["Team Scores:"] = "",
--- ["That was pointless."] = "",
--- ["The enemy is hiding out on yonder ducky!"] = "",
--- ["The flag will respawn next round."] = "",
--- ["There has been a mix-up with your gear and now you|have to utilize whatever is coming your way!"] = "",
--- ["Toxic Team"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
+ ["Team Scores:"] = "Tím skóruje:",
+ ["That was pointless."] = "To bolo zbytočné.",
+ ["The enemy is hiding out on yonder ducky!"] = "Nepriateľ sa schováva na tamtej kačičke!",
+ ["The flag will respawn next round."] = "V ďalšom kole sa obnoví vlajka.",
+ ["There has been a mix-up with your gear and now you|have to utilize whatever is coming your way!"] = "Niekto rozhádzal vašu výbavu a teraz|musíte použiť len to, čo vám ostalo!",
+ ["Toxic Team"] = "Toxic tím", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
["TrophyRace"] = "Preteky o trofej",
--- ["T_T"] = "",
--- ["Unit 3378"] = "",
+ ["T_T"] = "T_T",
+ ["Unit 3378"] = "Jednotka 3378",
["Use your rope to get from start to finish as fast as you can!"] = "Použite lano na presun zo štartovnej pozície do cieľa tak rýchlo, ako to len viete!",
--- ["Victory for the"] = "",
--- ["You have SCORED!!"] = "",
--- ["You've failed. Try again."] = "",
--- ["You've reached the goal!| |Time:"] = "",
+ ["Victory for the "] = "Víťazstvo pre", -- CTF_Blizzard, Capture_the_Flag
+ ["You have SCORED!!"] = "SKÓROVALI ste!!",
+ ["You've failed. Try again."] = "Neuspeli ste. Skúste to znova.",
["You've reached the goal!| |Time: "] = "Dosiahli ste cieľ!| |Čas: ",
["'Zooka Team"] = "Bazuka tím",
}
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Locale/sk.txt
--- a/share/hedgewars/Data/Locale/sk.txt Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Locale/sk.txt Tue Feb 01 00:18:25 2011 +0100
@@ -12,7 +12,7 @@
00:09=DEagle
00:10=Dynamit
00:11=Bejzbolka
-00:12=Úder ohňa
+00:12=Shoryuken
00:13=sek
00:14=Padák
00:15=Vzdušné posily
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Locale/stub.lua
--- a/share/hedgewars/Data/Locale/stub.lua Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Locale/stub.lua Tue Feb 01 00:18:25 2011 +0100
@@ -28,7 +28,6 @@
-- ["Eliminate Poison before the time runs out"] = "",
-- ["Eliminate the Blue Team"] = "",
-- ["- Eliminate Unit 3378 |- Feeble Resistance must survive"] = "",
--- ["- Eliminate Unit 3378 |- Feeble Resistance must survive"] = "",
-- ["Enjoy the swim..."] = "",
-- ["Fastest lap: "] = "",
-- ["Feeble Resistance"] = "",
@@ -53,8 +52,7 @@
-- ["Listen up, maggot!!"] = "",
-- ["|- Mines Time:"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
-- ["MISSION FAILED"] = "", -- User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
--- ["MISSION SUCCESSFUL"] = "", -- User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
--- ["MISSION SUCCESS"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
+-- ["MISSION SUCCESSFUL"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
-- ["NEW fastest lap: "] = "",
-- ["NO JUMPING"] = "",
-- ["Not So Friendly Match"] = "", -- Basketball, Knockball
@@ -63,11 +61,10 @@
-- ["Operation Diver"] = "",
-- ["Opposing Team: "] = "",
-- ["Pathetic Hog #%d"] = "",
+-- ["points"] = "", -- Control, CTF_Blizzard, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle
-- ["Poison"] = "",
-- ["Random Weapons"] = "",
-- [" - Return the enemy flag to your base to score | - First team to 3 captures wins | - You may only score when your flag is in your base | - Hogs will drop the flag if killed, or drowned | - Dropped flags may be returned or recaptured | - Hogs respawn when killed"] = "",
--- [" - Return the enemy flag to your base to score | - First team to 3 captures wins | - You may only score when your flag is in your base | - Hogs will drop the flag if killed, or drowned | - Dropped flags may be returned or recaptured | - Hogs respawn when killed"] = "",
--- ["RULES OF THE GAME [Press ESC to view]"] = "",
-- ["RULES OF THE GAME [Press ESC to view]"] = "",
-- ["sec"] = "", -- CTF_Blizzard, TrophyRace, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork, Capture_the_Flag
-- ["See ya!"] = "",
@@ -89,7 +86,7 @@
-- ["T_T"] = "",
-- ["Unit 3378"] = "",
-- ["Use your rope to get from start to finish as fast as you can!"] = "",
--- ["Victory for the"] = "",
+-- ["Victory for the "] = "", -- CTF_Blizzard, Capture_the_Flag
-- ["You have SCORED!!"] = "",
-- ["You've failed. Try again."] = "",
-- ["You've reached the goal!| |Time: "] = "",
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Locale/sv.lua
--- a/share/hedgewars/Data/Locale/sv.lua Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Locale/sv.lua Tue Feb 01 00:18:25 2011 +0100
@@ -8,7 +8,7 @@
["Bazooka Training"] = "Bazookaträning",
["Best laps per team: "] = "Bästa varv per lag: ",
["Bloody Rookies"] = "Blodiga gröngölingar", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree
--- ["Boom!"] = "",
+ ["Boom!"] = "Bom!",
["by mikade"] = "av mikade", -- Control, User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork, Capture_the_Flag
["CAPTURE THE FLAG"] = "CAPTURE THE FLAG",
["Codename: Teamwork"] = "Kodnamn: Lagarbete",
@@ -17,7 +17,7 @@
["CONTROL"] = "KONTROLL",
["Control pillars to score points."] = "Kontrollera pelare för att ta poäng",
["CONTROL v0.3"] = "KONTROLL v0.3",
--- ["CTF_BLIZZARD"] = "",
+ ["CTF_BLIZZARD"] = "CTF_BLIZZARD",
["CUSTOM BUILD 0.2"] = "SPECIALVERSION 0.2",
["Cybernetic Empire"] = "Robotriket",
["DAMMIT, ROOKIE! GET OFF MY HEAD!"] = "SATAN, GRÖNGÖLING! SLUTA TJATA!",
@@ -38,7 +38,7 @@
["GAME OVER!"] = "SPELET ÄR SLUT!",
["Game Started!"] = "Spel startat!",
["Get on over there and take him out!"] = "Ta dig bort där och gör dig av med honom!",
--- ["Goal:"] = "",
+ ["Goal:"] = "Mål:",
["GO! GO! GO!"] = "Kör! Kör! Kör!",
["Good birdy......"] = "Fin fågel......",
["Good luck out there!"] = "Lycka till där ute!",
@@ -50,10 +50,9 @@
["Instructor"] = "Instruktör", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings
["- Jumping is disabled"] = "- Hoppande är avaktiverat",
["Listen up, maggot!!"] = "Hör här, ynkrygg!!",
--- ["|- Mines Time:"] = "", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
+ ["|- Mines Time:"] = "|- Mintid:", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
["MISSION FAILED"] = "UPPDRAG MISSLYCKADES", -- User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
- ["MISSION SUCCESSFUL"] = "UPPDRAG SLUTFÖRT", -- User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
- ["MISSION SUCCESS"] = "UPPDRAG LYCKADES", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
+ ["MISSION SUCCESSFUL"] = "UPPDRAG SLUTFÖRT", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
["NEW fastest lap: "] = "NYTT snabbast varv: ",
["NO JUMPING"] = "INGET HOPPANDE",
["Not So Friendly Match"] = "En inte så vänlig match", -- Basketball, Knockball
@@ -62,12 +61,12 @@
["Operation Diver"] = "Operationens dykare",
["Opposing Team: "] = "Motståndarlag: ",
["Pathetic Hog #%d"] = "Patetisk kott #%d",
+-- ["points"] = "", -- Control, CTF_Blizzard, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle
["Poison"] = "Gift",
["Random Weapons"] = "Slumpade vapen",
[" - Return the enemy flag to your base to score | - First team to 3 captures wins | - You may only score when your flag is in your base | - Hogs will drop the flag if killed, or drowned | - Dropped flags may be returned or recaptured | - Hogs respawn when killed"] = " - Återvänd med fiendens flagga till din bas för att ta poäng | - Första laget till tre vinner | - Du kan bara ta poäng när din egen flagga är i basen | - Kottar tappar flaggan när de dödas eller drunknar | - Tappade flaggor kan tas tillbaka eller fångas | - Kottar kommer tillbaka när de dör",
--- ["RULES OF THE GAME [Press ESC to view]"] = "",
- ["RULES OF THE GAME [Press ESC to view]"] = "SPELREGLER [Tryck ESC för att se",
--- ["sec"] = "", -- CTF_Blizzard, TrophyRace, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork, Capture_the_Flag
+ ["RULES OF THE GAME [Press ESC to view]"] = "SPELREGLER [Tryck ESC för att se]",
+ ["sec"] = "sec", -- CTF_Blizzard, TrophyRace, Basic_Training_-_Bazooka, Basic_Training_-_Shotgun, Basic_Training_-_Sniper_Rifle, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork, Capture_the_Flag
["See ya!"] = "Ses!",
["Shotgun Team"] = "Hagelgevärslaget",
["Shotgun Training"] = "Hagelgevärsträning",
@@ -78,16 +77,16 @@
["Spooky Tree"] = "Kusligt träd",
["Team %d: "] = "Lag %d: ",
["Team Scores:"] = "Lagresultat:",
--- ["That was pointless."] = "",
+ ["That was pointless."] = "Det där var meningslöst.",
["The enemy is hiding out on yonder ducky!"] = "Fienden gömmer sig på andra ankan!",
--- ["The flag will respawn next round."] = "",
+ ["The flag will respawn next round."] = "Flaggan kommer tillbaka nästa runda.",
["There has been a mix-up with your gear and now you|have to utilize whatever is coming your way!"] = "Det har uppstått ett missförstånd om din utrustning|och nu måste du använda vad du kan hitta!",
["Toxic Team"] = "Förgiftade laget", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
["TrophyRace"] = "TrophyRace",
["T_T"] = "T_T",
["Unit 3378"] = "Enhet 3378",
["Use your rope to get from start to finish as fast as you can!"] = "Använd ditt rep för att ta dig från start till mål så fort som möjligt!",
- ["Victory for the"] = "Vinst för",
+ ["Victory for the "] = "Vinst för", -- CTF_Blizzard, Capture_the_Flag
["You have SCORED!!"] = "Du har tagit poäng!",
["You've failed. Try again."] = "Du har misslyckats. Försök igen.",
["You've reached the goal!| |Time: "] = "Du har nått målet!| |Tid: ",
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Locale/sv.txt
--- a/share/hedgewars/Data/Locale/sv.txt Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Locale/sv.txt Tue Feb 01 00:18:25 2011 +0100
@@ -12,7 +12,7 @@
00:09=Desert Eagle
00:10=Dynamit
00:11=Basebollträ
-00:12=Flammande näve
+00:12=Shoryuken
00:13=sek
00:14=Fallskärm
00:15=Luftangrepp
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Locale/tr.txt
--- a/share/hedgewars/Data/Locale/tr.txt Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Locale/tr.txt Tue Feb 01 00:18:25 2011 +0100
@@ -12,7 +12,7 @@
00:09=Çöl Kartalı
00:10=Dinamit
00:11=Beyzbol Sopası
-00:12=Alev Yumruğu
+00:12=Shoryuken
00:13=san
00:14=Paraşüt
00:15=Hava Saldırısı
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Locale/uk.txt
--- a/share/hedgewars/Data/Locale/uk.txt Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Locale/uk.txt Tue Feb 01 00:18:25 2011 +0100
@@ -12,7 +12,7 @@
00:09=Пустельний Орел
00:10=Динаміт
00:11=Бейсбольна бита
-00:12=Вогняний удар
+00:12=Shoryuken
00:13=сек
00:14=Парашут
00:15=Повітряна атака
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Locale/zh_CN.lua
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/share/hedgewars/Data/Locale/zh_CN.lua Tue Feb 01 00:18:25 2011 +0100
@@ -0,0 +1,98 @@
+locale = {
+ ["!!!"] = "!!!",
+ ["A game of luck"] = "运气游戏",
+ ["Aiming Practice"] = "瞄准练习", --火箭筒、霰弹枪、狙击枪
+ ["Bat balls at your enemies and|push them into the sea!"] = "发射棒球将敌人击打入水",
+ ["Bat your opponents through the|baskets and out of the map!"] = "把敌人击出场地——对准栏框",
+ ["Bazooka Training"] = "火箭筒训练",
+ ["Best laps per team: "] = "每一队最佳速度:",
+ ["Bloody Rookies"] = "雉儿飞", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree
+-- ["Boom!"] =
+ ["by mikade"] = "mikade撰写", -- Control, User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork, Capture_the_Flag
+ ["CAPTURE THE FLAG"] = "抢旗子",
+ ["Codename: Teamwork"] = "代号:团队行动",
+ ["Congratulations! You've eliminated all targets|within the allowed time frame."] = "恭喜!你在规定时限内清零全部目标。", --Bazooka, Shotgun, SniperRifle
+ ["Congratulations!"] = "恭喜",
+ ["Control pillars to score points."] = "控制支柱得分",
+ ["CONTROL v0.3"] = "控制 v0.3",
+ ["CONTROL"] = "控制",
+-- ["CTF_BLIZZARD"] =
+ ["CUSTOM BUILD 0.2"] = "自定义建设 0.2",
+ ["Cybernetic Empire"] = "自动化帝国",
+ ["DAMMIT, ROOKIE! GET OFF MY HEAD!"] = "新人,别让我看到",
+ ["DAMMIT, ROOKIE!"] = "新人",
+ ["Dangerous Ducklings"] = "危险的小鸭子",
+ ["Eliminate all enemies"] = "解决全部对手",
+ ["Eliminate all targets before your time runs out.|You have unlimited ammo for this mission."] = "时间限制内清除全部目标。弹药无限。", --Bazooka, Shotgun, SniperRifle
+ ["Eliminate Poison before the time runs out"] = "时间限制内清除毒素。",
+ ["Eliminate the Blue Team"] = "解决蓝色队伍",
+ ["- Eliminate Unit 3378 |- Feeble Resistance must survive"] = "- 打倒 3378 |-反抗者必须存活",
+ ["Enjoy the swim..."] = "游水愉快",
+ ["Fastest lap: "] = "最快记录:",
+ ["Feeble Resistance"] = "反抗者",
+ ["Flag captured!"] = "夺旗得分!",
+ ["Flag respawned!"] = "旗帜重生!",
+ ["Flag returned!"] = "旗帜归还!",
+ ["Flags will be placed where each team ends their turn."] = "旗帜会被放置在每个队伍回合结束时所在的地方。",
+ ["GAME OVER!"] = "结束了!",
+ ["Game Started!"] = "开始",
+ ["Get on over there and take him out!"] = "上去把它拉下来!",
+-- ["Goal:"] =
+ ["GO! GO! GO!"] = "上!",
+ ["Good birdy......"] = "乖鸟儿",
+ ["Good luck out there!"] = "祝好运",
+ ["Hedgewars-Basketball"] = "刺猬大作战-篮球计划",
+ ["Hedgewars-Knockball"] = "刺猬大作战-击球计划",
+ ["Hmmm..."] = "呃...",
+ ["Hooray!"] = "呼!",
+ ["Hunter"] = "猎人", --Bazooka, Shotgun, SniperRifle
+ ["Instructor"] = "引导员", -- 01#Boot_Camp, User_Mission_-_Dangerous_Ducklings
+ ["- Jumping is disabled"] = "- 跳跃禁止",
+ ["Listen up, maggot!!"] = "听好,小子!!",
+-- ["|- Mines Time:"] =
+ ["MISSION FAILED"] = "任务失败", -- User_Mission_-_Dangerous_Ducklings, User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
+ ["MISSION SUCCESSFUL"] = "任务成功", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
+ ["NEW fastest lap: "] = "新记录",
+ ["NO JUMPING"] = "不准跳",
+ ["Not So Friendly Match"] = "非友善对抗", -- Basketball, Knockball
+ ["Oh no! Just try again!"] = "不!重新再来。", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
+ ["Oh no! Time's up! Just try again."] = "不!到点了,需要重新来。", --Bazooka, Shotgun, SniperRifle
+ ["Operation Diver"] = "水下行动",
+-- ["Opposing Team: "] =
+ ["Opposing Team:"] = "对方队伍",
+ ["Pathetic Hog #1"] = "可怜刺猬一号",
+ ["Pathetic Hog #2"] = "可怜刺猬二号",
+-- ["Pathetic Hog #%d"] =
+-- ["points"] =
+-- ["Poison"] =
+ ["Random Weapons"] = "随机武器",
+-- [" - Return the enemy flag to your base to score | - First team to 3 captures wins | - You may only score when your flag is in your base | - Hogs will drop the flag if killed, or drowned | - Dropped flags may be returned or recaptured | - Hogs respawn when killed"] =
+ ["- Return the enemy flag to your base to score | - First team to 3 captures wins | - You may only score when your flag is in your base | - Hogs will drop the flag if killed, or drowned | - Dropped flags may be returned or recaptured | - Hogs respawn when killed"] = "-带回敌人旗帜得分| -第一支3次夺旗队伍获胜| - 只有旗帜在己方基地才算| -带旗刺猬消逝则旗帜落下| -落下的旗帜使用方式不变| -损失的刺猬瞬间还原",
+ ["RULES OF THE GAME [Press ESC to view]"] = "游戏规则 [按下 ESC键 查看]",
+-- ["sec"] =
+ ["See ya!"] = "再见!",
+ ["Shotgun Team"] = "霰弹枪队",
+ ["Shotgun Training"] = "霰弹枪训练",
+ ["%s is out and Team %d|scored a penalty!| |Score:"] = "%s 出局, %d 惩罚分数!", -- Basketball, Knockball
+ ["%s is out and Team %d|scored a point!| |Score:"] = "%s 出局, %d 得分!", -- Basketball, Knockball
+ ["Sniper Training"] = "狙击训练",
+ ["Sniperz"] = "狙击手",
+ ["Spooky Tree"] = "怪树",
+ ["Team %d: "] = "队伍 %d",
+ ["Team Scores:"] = "队伍得分:",
+-- ["That was pointless."] =
+ ["The enemy is hiding out on yonder ducky!"] = "敌人藏在那边!",
+-- ["The flag will respawn next round."] =
+ ["There has been a mix-up with your gear and now you|have to utilize whatever is coming your way!"] = "现阶段装备混用,只能最大|程度地用好到手的玩具。",
+ ["Toxic Team"] = "腐坏的队伍", -- User_Mission_-_Diver, User_Mission_-_Spooky_Tree, User_Mission_-_Teamwork
+ ["TrophyRace"] = "竞速",
+ ["T_T"] = "T_T",
+ ["Unit 3378"] = "3378",
+ ["Use your rope to get from start to finish as fast as you can!"] = "抓起绳子飞向目的地,越快越好。",
+ ["Victory for the "] = "胜利属于",
+ ["You have SCORED!!"] = "得分",
+ ["You've failed. Try again."] = "失败了。再尝试吧。",
+ ["You've reached the goal!| |Time: "] = "目标达成| |时间:",
+ ["'Zooka Team"] = "火箭队",
+ [":("] = "囧",
+ }
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Locale/zh_CN.txt
--- a/share/hedgewars/Data/Locale/zh_CN.txt Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Locale/zh_CN.txt Tue Feb 01 00:18:25 2011 +0100
@@ -2,23 +2,23 @@
00:00=手榴弹
00:01=集束炸弹
-00:02=反坦克火箭筒
+00:02=火箭筒
00:03=归巢的蜜蜂
00:04=霰弹枪
-00:05=鹤嘴锤
+00:05=大锤
00:06=跳过回合
00:07=绳索
00:08=地雷
00:09=沙漠之鹰
00:10=炸药
00:11=球棒
-00:12=升龙拳
+00:12=Shoryuken
00:13=秒
-00:14=空降
+00:14=降落伞
00:15=空袭
00:16=地雷空袭
00:17=喷灯
-00:18=建设工具
+00:18=钢梁
00:19=传送
00:20=切换刺猬
00:21=迫击炮
@@ -30,19 +30,19 @@
00:27=地狱礼花
00:28=钻头火箭
00:29=弹珠炮
-00:30=汽油弹
+00:30=汽油弹空袭
00:31=遥控轰炸机
00:32=低重力
-00:33=额外伤害
+00:33=增强伤害
00:34=无敌
00:35=加时
00:36=激光瞄准
00:37=吸血
00:38=狙击枪
-00:39=飞盘
+00:39=UFO
00:40=燃烧瓶
00:41=鸟儿
-00:42=移动传送器
+00:42=传送器
00:43=飞来的钢琴
00:44=毒奶酪
00:45=正弦能量炮
@@ -51,6 +51,7 @@
00:48=大锤
00:49=复苏
00:50=电钻空袭
+00:51=土块
01:00=开战!
01:01=平局
@@ -473,7 +474,7 @@
;02:06=Shiny new toys!
02:06=新玩具!
;02:06=A mysterious box!
-02:06=谜的箱子...
+02:06=神秘的箱子!
; New utility crate
; 02:07=Tooltime!
@@ -700,7 +701,7 @@
03:39=移动工具
03:40=燃烧弹
;03:41=Huge fan of Squawks
-03:41=噪音
+03:41=粉丝的呼喊
;03:42=I'm making a note here...
03:42=我将在此记录...
; the misspelled "Beethoven" is intentional (-> to beat)
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Locale/zh_TW.txt
--- a/share/hedgewars/Data/Locale/zh_TW.txt Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Locale/zh_TW.txt Tue Feb 01 00:18:25 2011 +0100
@@ -12,7 +12,7 @@
00:09=沙漠之鷹
00:10=炸藥
00:11=球棒
-00:12=升龍拳
+00:12=Shoryuken
00:13=秒
00:14=空降
00:15=空襲
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Maps/Basketball/preview.png
Binary file share/hedgewars/Data/Maps/Basketball/preview.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Maps/Blizzard/map.svg
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/share/hedgewars/Data/Maps/Blizzard/map.svg Tue Feb 01 00:18:25 2011 +0100
@@ -0,0 +1,1067 @@
+
+
+
+
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Maps/Blizzard/mask.png
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Maps/Blizzard/preview@2x.png
Binary file share/hedgewars/Data/Maps/Blizzard/preview@2x.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Maps/CTF_Blizzard/CMakeLists.txt
--- a/share/hedgewars/Data/Maps/CTF_Blizzard/CMakeLists.txt Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Maps/CTF_Blizzard/CMakeLists.txt Tue Feb 01 00:18:25 2011 +0100
@@ -1,7 +1,5 @@
install(FILES
- map.png
map.cfg
map.lua
- mask.png
preview.png
DESTINATION ${SHAREPATH}Data/Maps/CTF_Blizzard)
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Maps/CTF_Blizzard/map.lua
--- a/share/hedgewars/Data/Maps/CTF_Blizzard/map.lua Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Maps/CTF_Blizzard/map.lua Tue Feb 01 00:18:25 2011 +0100
@@ -1,754 +1,791 @@
---------------------------------
--- CTF_BLIZZARD 0.4
---------------------------------
-
----------
--- 0.2
----------
-
--- disabled super weapons
-
--- theme modifications
-
--- improved hog placement system: teams can now be put
--- in any order and be of any size
-
----------
--- 0.3
----------
-
--- In this version:
-
--- changed starting weapons
--- changed crate drop contents and rate of drops
-
--- completely removed super weapons and super weapon scripts
-
--- removed custom respawning
--- removed set respawn points
-
--- added AIRespawn-esque respawning
--- added simple left vs right respawn points
-
--- added non-lethal poison to flag carriers as an indicator
-
--- improved flag mechanics and player-flag feedback
--- flag now instantly respawns if you kill enemy hog and return it,
--- or if the flag falls in water, _BUT_ not if it is blown up
-
----------
--- 0.4
----------
-
--- tweaked crate drop rates and crate contents
--- improved the teleporters, they should now be able to handle rope... hopefully
--- updated SetEffect calls to be in line with 0.9.15 definitions
--- added visual gears when hogs respawn
--- added visual gears when hogs teleport
--- added visual gear to track flag and flag carriers
--- removed poisoning of flag carriers
--- removed health adjustments for flag carriers due to aforementioned poisons
-
----------
--- 0.5
----------
-
--- added translation support, hopefully
--- added ctf rules
--- added effects to the teleporters
--- added aura round spawning area
--- changed the aura around the flag carrier / flag to an aura and added some support for this
--- changed things so the seed is no longer always the same...
-
-
-loadfile(GetDataPath() .. "Scripts/Locale.lua")()
-
----------------------------------------------------------------
-----------lots of bad variables and things
-----------because someone is too lazy
-----------to read about tables properly
------------------- "Oh well, they probably have the memory"
-
-local actionReset = 0 -- used in CheckTeleporters()
-
-local roundsCounter = 0 -- used to determine when to spawn more crates
- -- currently every 6 TURNS, should this work
- -- on ROUNDS instead?
-local effectTimer = 0
-
---------------------------
--- hog and team tracking variales
---------------------------
-
-local numhhs = 0 -- store number of hedgehogs
-local hhs = {} -- store hedgehog gears
-
-local numTeams -- store the number of teams in the game
-local teamNameArr = {} -- store the list of teams
-local teamSize = {} -- store how many hogs per team
-local teamIndex = {} -- at what point in the hhs{} does each team begin
-
--------------------
--- flag variables
--------------------
-
-local fGear = {} -- pointer to the case gears that represent the flag
-local fThief = {} -- pointer to the hogs who stole the flags
-local fIsMissing = {} -- have the flags been destroyed or captured
-local fNeedsRespawn = {} -- do the flags need to be respawned
-local fCaptures = {} -- the team "scores" how many captures
-local fSpawnX = {} -- spawn X for flags
-local fSpawnY = {} -- spawn Y for flags
-
-local fThiefX = {}
-local fThiefY = {}
-local FTTC = 0 -- flag thief tracker counter
---local fThiefsHealed = false
-
-local fSpawnC = {}
-local fCirc = {} -- flag/carrier marker circles
-local fCol = {} -- colour of the clans
-
-local vCircX = {}
-local vCircY = {}
-local vCircMinA = {}
-local vCircMaxA = {}
-local vCircType = {}
-local vCircPulse = {}
-local vCircFuckAll = {}
-local vCircRadius = {}
-local vCircWidth = {}
-local vCircCol = {}
-
-
---------------------------------
---zone and teleporter variables
---------------------------------
-
-local redTel
-local orangeTel
---local areaArr = {} -- no longer used
-
-local zXMin = {}
-local zWidth = {}
-local zYMin = {}
-local zHeight = {}
-local zOccupied = {}
-local zCount = 0
-
-------------------------
--- zone methods
-------------------------
--- see on gameTick also
-
-function ManageTeleporterEffects()
- effectTimer = effectTimer + 1
- if effectTimer > 50 then -- 100
- effectTimer = 0
-
- for i = 0,1 do
- eX = 10 + zXMin[i] + GetRandom(zWidth[i]-10)
- eY = 50 + zYMin[i] + GetRandom(zHeight[i]-110)
-
- -- steam and smoke and DUST look good, smokering looks trippy
- -- smoketrace and eviltrace are not effected by wind?
- -- chunk is a LR falling gear
- tempE = AddVisualGear(eX, eY, vgtDust, 0, false)
- g1, g2, g3, g4, g5, g6, g7, g8, g9, g10 = GetVisualGearValues(tempE)
- SetVisualGearValues(tempE, eX, eY, g3, g4, g5, g6, g7, g8, g9, fCol[i])
- end
- end
-end
-
-function CreateZone(xMin, yMin, width, height)
-
-
- zXMin[zCount] = xMin
- zYMin[zCount] = yMin
- zWidth[zCount] = width
- zHeight[zCount] = height
- zOccupied[zCount] = false
- zCount = zCount + 1
-
- return (zCount-1)
-
-end
-
-function GearIsInZone(gear, zI)
-
- if (GetX(gear) > zXMin[zI]) and (GetX(gear) < (zXMin[zI]+zWidth[zI])) and (GetY(gear) > zYMin[zI]) and (GetY(gear) < (zYMin[zI]+zHeight[zI])) then
- zOccupied[zI] = true
- else
- zOccupied[zI] = false
- end
-
- return zOccupied[zI]
-
-end
-
-------------------------
---flag methods
-------------------------
-
-function CheckScore(teamID)
-
- if teamID == 0 then
- alt = 1
- winner = "Red"
-
- elseif teamID == 1 then
- alt = 0
- winner = "Blue"
- end
-
- if fCaptures[teamID] == 2 then
- for i = 0, (numhhs-1) do
- if GetHogClan(hhs[i]) == alt then
- SetEffect(hhs[i], heResurrectable, false)
- SetHealth(hhs[i],0)
- end
- end
- --ShowMission("GAME OVER!", "Victory for the " .. winner .. " Team!", "Hooray!", 0, 0)
- ShowMission(loc("GAME OVER!"), loc("Victory for the ") .. GetHogTeamName(CurrentHedgehog), loc("Hooray!"), 0, 0)
- end
-
-end
-
-function HandleRespawns()
-
- for i = 0, 1 do
-
- if fNeedsRespawn[i] == true then
- fGear[i] = SpawnAmmoCrate(fSpawnX[i],fSpawnY[i],amSkip)
- --fGear[i] = SpawnHealthCrate(fSpawnX[i],fSpawnY[i])
- fNeedsRespawn[i] = false
- fIsMissing[i] = false -- new, this should solve problems of a respawned flag being "returned" when a player tries to score
- AddCaption(loc("Flag respawned!"))
- end
-
- end
-
-end
-
-function FlagDeleted(gear)
-
- if (gear == fGear[0]) then
- wtf = 0
- bbq = 1
- elseif (gear == fGear[1]) then
- wtf = 1
- bbq = 0
- end
-
- --ShowMission("OH HAI!", "FlagDeleted was called", "Oh noes!", -amBazooka, 0)
-
- if CurrentHedgehog ~= nil then
-
- --ShowMission("GUESS WAT?", "I'm not nil", "Oh noes!", -amBazooka, 0)
- --if the player picks up the flag
- if CheckDistance(CurrentHedgehog, fGear[wtf]) < 1600 then
-
- fGear[wtf] = nil -- the flag has now disappeared and we shouldnt be pointing to it
-
- -- player has successfully captured the enemy flag
- if (GetHogClan(CurrentHedgehog) == wtf) and (CurrentHedgehog == fThief[bbq]) and (fIsMissing[wtf] == false) then
- fIsMissing[wtf] = false
- fNeedsRespawn[wtf] = true
- fIsMissing[bbq] = false
- fNeedsRespawn[bbq] = true
- fCaptures[wtf] = fCaptures[wtf] +1 --fCaptures[wtf]
-
- --ShowMission(loc("You have SCORED!!"), "Red Team: " .. fCaptures[0], "Blue Team: " .. fCaptures[1], -amBazooka, 0)
- ShowMission(loc("You have SCORED!!"), GetHogTeamName(CurrentHedgehog) .. ": " .. fCaptures[wtf], loc("Opposing Team: ") .. fCaptures[bbq], 0, 0)
-
- PlaySound(sndVictory)
- --SetEffect(fThief[bbq], hePoisoned, false)
- fThief[bbq] = nil -- player no longer has the enemy flag
- CheckScore(wtf)
-
- --if the player is returning the flag
- elseif GetHogClan(CurrentHedgehog) == wtf then
-
- fNeedsRespawn[wtf] = true
-
- -- NEW ADDIITON, does this work? Should make it possible to return your flag and then score in the same turn
- if fIsMissing[wtf] == true then
- HandleRespawns() -- this will set fIsMissing[wtf] to false :)
- AddCaption(loc("Flag returned!"))
- elseif fIsMissing[wtf] == false then
- AddCaption(loc("That was pointless.") .. loc("The flag will respawn next round."))
- end
-
- --fIsMissing[wtf] = false
- --ShowMission("Flag returned!", "Hooray", "", -amBazooka, 0)
-
- --if the player is taking the enemy flag
- elseif GetHogClan(CurrentHedgehog) == bbq then
- fIsMissing[wtf] = true
- for i = 0,numhhs-1 do
- if CurrentHedgehog == hhs[i] then
- fThief[wtf] = hhs[i]
- --SetEffect(fThief[wtf], hePoisoned, true)
- end
- end
-
- AddCaption(loc("Flag captured!"))
-
- else --below line doesnt usually get called
- AddCaption("Hmm... that wasn't supposed to happen...")
-
- end
-
- -- if flag has been destroyed, probably
- else
-
- if GetY(fGear[wtf]) > 2025 then
- fGear[wtf] = nil
- fIsMissing[wtf] = true
- fNeedsRespawn[wtf] = true
- HandleRespawns()
- else
- fGear[wtf] = nil
- fIsMissing[wtf] = true
- fNeedsRespawn[wtf] = true
- AddCaption(loc("Boom!") .. " " .. loc("The flag will respawn next round."))
- end
-
- end
-
- -- if flag has been destroyed deep underwater and player is now nil
- -- probably only gets called if the flag thief drowns himself
- -- otherwise the above one will work fine
- else
- --ShowMission("NIL PLAYER!", "Oh snap", "Oh noes!", -amBazooka, 0)
- fGear[wtf] = nil
- fIsMissing[wtf] = true
- fNeedsRespawn[wtf] = true
- AddCaption(loc("The flag will respawn next round."))
- end
-
-end
-
-function FlagThiefDead(gear)
-
- if (gear == fThief[0]) then
- wtf = 0
- bbq = 1
- elseif (gear == fThief[1]) then
- wtf = 1
- bbq = 0
- end
-
- if fThief[wtf] ~= nil then
- --SetEffect(fThief[wtf], hePoisoned, false)
- fGear[wtf] = SpawnAmmoCrate(fThiefX[wtf],fThiefY[wtf]-50,amSkip)
- AddVisualGear(fThiefX[wtf], fThiefY[wtf], vgtBigExplosion, 0, false)
- fThief[wtf] = nil
- end
-
-end
-
-function HandleCircles()
-
- for i = 0, 1 do
- if fIsMissing[i] == false then -- draw a circle at the flag's spawning place
- --SetVisualGearValues(fCirc[i], fSpawnX[i],fSpawnY[i], 20, 200, 0, 0, 100, 33, 2, fCol[i])
- SetVisualGearValues(fCirc[i], fSpawnX[i],fSpawnY[i], vCircMinA[i], vCircMaxA[i], vCircType[i], vCircPulse[i], vCircFuckAll[i], vCircRadius[i], vCircWidth[i], vCircCol[i])
- elseif (fIsMissing[i] == true) and (fNeedsRespawn[i] == false) then
- if fThief[i] ~= nil then -- draw circle round flag carrier
- --SetVisualGearValues(fCirc[i], fThiefX[i], fThiefY[i], 20, 200, 0, 0, 100, 33, 2, fCol[i])
- SetVisualGearValues(fCirc[i], fThiefX[i], fThiefY[i], vCircMinA[i], vCircMaxA[i], vCircType[i], vCircPulse[i], vCircFuckAll[i], vCircRadius[i], vCircWidth[i], vCircCol[i])
- elseif fThief[i] == nil then -- draw cirle round dropped flag
- --SetVisualGearValues(fCirc[i], GetX(fGear[i]), GetY(fGear[i]), 20, 200, 0, 0, 100, 33, 2, fCol[i])
- SetVisualGearValues(fCirc[i], GetX(fGear[i]),GetY(fGear[i]), vCircMinA[i], vCircMaxA[i], vCircType[i], vCircPulse[i], vCircFuckAll[i], vCircRadius[i], vCircWidth[i], vCircCol[i])
- end
- end
-
- if fNeedsRespawn[i] == true then -- if the flag has been destroyed, no need for a circle
- SetVisualGearValues(fCirc[i], fSpawnX[i],fSpawnY[i], 20, 200, 0, 0, 100, 0, 0, fCol[i])
- end
- end
-
-end
-
-------------------------
--- general methods
-------------------------
-
-function CheckDistance(gear1, gear2)
-
- g1X, g1Y = GetGearPosition(gear1)
- g2X, g2Y = GetGearPosition(gear2)
-
- g1X = g1X - g2X
- g1Y = g1Y - g2Y
- z = (g1X*g1X) + (g1Y*g1Y)
-
- --dist = math.sqrt(z)
-
- dist = z
-
- return dist
-
-end
-
-function CheckTeleporters()
-
- teleportActive = false
-
- if (GearIsInZone(CurrentHedgehog, redTel) == true) and (GetHogClan(CurrentHedgehog) == 0) then
- teleportActive = true
- destinationX = 1402
- destinationY = 321
- elseif (GearIsInZone(CurrentHedgehog, orangeTel) == true) and (GetHogClan(CurrentHedgehog) == 1) then
- teleportActive = true
- destinationX = 2692
- destinationY = 321
- end
-
- if teleportActive == true then
- if actionReset == 0 then
- SetGearMessage(CurrentHedgehog, gmAttack)
- --AddCaption(actionReset .. ";" .. "attack")
- elseif actionReset == 10 then
- SetGearMessage(CurrentHedgehog, 0)
- --AddCaption(actionReset .. ";" .. "reset")
- elseif actionReset == 20 then
- AddVisualGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog), vgtBigExplosion, 0, false)
- SetGearPosition(CurrentHedgehog,destinationX,destinationY)
- AddVisualGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog), vgtBigExplosion, 0, false)
- --AddCaption(actionReset .. ";" .. "teleport")
- end
-
- actionReset = actionReset + 1
- if actionReset >= 30 then
- actionReset = 0
- end
-
- end
-
-end
-
-function RebuildTeamInfo()
-
-
- -- make a list of individual team names
- for i = 0, 5 do
- teamNameArr[i] = i
- teamSize[i] = 0
- teamIndex[i] = 0
- end
- numTeams = 0
-
- for i = 0, (numhhs-1) do
-
- z = 0
- unfinished = true
- while(unfinished == true) do
-
- newTeam = true
- tempHogTeamName = GetHogTeamName(hhs[i]) -- this is the new name
-
- if tempHogTeamName == teamNameArr[z] then
- newTeam = false
- unfinished = false
- end
-
- z = z + 1
-
- if z == TeamsCount then
- unfinished = false
- if newTeam == true then
- teamNameArr[numTeams] = tempHogTeamName
- numTeams = numTeams + 1
- end
- end
-
- end
-
- end
-
- -- find out how many hogs per team, and the index of the first hog in hhs
- for i = 0, numTeams-1 do
-
- for z = 0, numhhs-1 do
- if GetHogTeamName(hhs[z]) == teamNameArr[i] then
- if teamSize[i] == 0 then
- teamIndex[i] = z -- should give starting index
- end
- teamSize[i] = teamSize[i] + 1
- --add a pointer so this hog appears at i in hhs
- end
- end
-
- end
-
-end
-
-function HandleCrateDrops()
-
- roundsCounter = roundsCounter +1
-
- if roundsCounter == 5 then
-
- roundsCounter = 0
-
- r = GetRandom(8)
- if r == 0 then
- SpawnUtilityCrate(0,0,amSwitch)
- elseif r == 1 then
- SpawnUtilityCrate(0,0,amTeleport)
- elseif r == 2 then
- SpawnUtilityCrate(0,0,amJetpack)
- elseif r == 3 then
- SpawnUtilityCrate(0,0,amExtraTime)
- elseif r == 4 then
- SpawnUtilityCrate(0,0,amGirder)
- elseif r == 5 then
- SpawnAmmoCrate(0,0,amDynamite)
- elseif r == 6 then
- SpawnAmmoCrate(0,0,amFlamethrower)
- elseif r == 7 then
- SpawnUtilityCrate(0,0,amPortalGun)
- end
-
- end
-
-end
-
-------------------------
--- game methods
-------------------------
-
-function onGameInit()
-
- -- Things we don't modify here will use their default values.
- GameFlags = gfDivideTeams -- Game settings and rules
- TurnTime = 30000 -- (was 30) The time the player has to move each round (in ms)
- CaseFreq = 0 -- The frequency of crate drops
- MinesNum = 0 -- The number of mines being placed
- MinesTime = 2000
- Explosives = 0 -- The number of explosives being placed
- Delay = 10 -- The delay between each round
- SuddenDeathTurns = 99 -- suddendeath is off, effectively
- Map = "Blizzard" -- The map to be played
- Theme = "Snow" -- The theme to be used "Nature"
-
-end
-
-
-function onGameStart()
-
- --ShowMission(loc(caption), loc(subcaption), loc(goal), 0, 0)
- ShowMission(loc("CTF_BLIZZARD") .. " 0.5", loc("by mikade"), loc(" - Return the enemy flag to your base to score | - First team to 3 captures wins | - You may only score when your flag is in your base | - Hogs will drop the flag if killed, or drowned | - Dropped flags may be returned or recaptured | - Hogs respawn when killed"), 0, 0)
-
-
- -- initialize teleporters
- redTel = CreateZone(342,1316,42,449) -- red teleporter
- orangeTel = CreateZone(3719,1330,45,449) -- orange teleporter
-
-
- --new improved placement schematics aw yeah
- RebuildTeamInfo()
- --ShowMission("Team Info Rebuilt", "Here you go:", "TeamCount: " .. TeamsCount .. "|" .. teamNameArr[0] .. ": " .. teamSize[0] .. " Hogs|" .. teamNameArr[1] .. ": " .. teamSize[1] .. " Hogs|" .. teamNameArr[2] .. ": " .. teamSize[2] .. " Hogs|", 0, 0)
- team1Placed = 0
- team2Placed = 0
- for i = 0, (TeamsCount-1) do
- for g = teamIndex[i], (teamIndex[i]+teamSize[i]-1) do
- if GetHogClan(hhs[g]) == 0 then
- SetGearPosition(hhs[g],1403+ ((team1Placed+1)*50),1570)
- team1Placed = team1Placed +1
- if team1Placed > 6 then
- team1Placed = 0
- end
- elseif GetHogClan(hhs[g]) == 1 then
- SetGearPosition(hhs[g],2230+ ((team2Placed+1)*50),1570)
- team2Placed = team2Placed +1
- if team2Placed > 6 then
- team2Placed = 0
- end
- end
- end
- end
-
-
-
- --spawn starting ufos and or super weapons
- SpawnAmmoCrate(2048,1858,amJetpack)
- --SpawnUtilityCrate(2048,1858,amExtraTime)
-
- --set flag spawn points and spawn the flags
- fSpawnX[0] = 957
- fSpawnY[0] = 1747
- fSpawnX[1] = 3123
- fSpawnY[1] = 1747
-
- for i = 0, 1 do
- fGear[i] = SpawnAmmoCrate(fSpawnX[i],fSpawnY[i],amSkip)
- fCirc[i] = AddVisualGear(fSpawnX[i],fSpawnY[i],vgtCircle,0,true)
- fCol[i] = GetClanColor(i)
-
- fSpawnC[i] = AddVisualGear(fSpawnX[i],fSpawnY[i],vgtCircle,0,true)
- SetVisualGearValues(fSpawnC[i], fSpawnX[i],fSpawnY[i], 10, 200, 1, 10, 0, 300, 5, fCol[i])
-
-
- fIsMissing[i] = false
- fNeedsRespawn[i] = false
- fCaptures[i] = 0
-
- vCircMinA[i] = 20
- vCircMaxA[i] = 255
- vCircType[i] = 1
- vCircPulse[i] = 10
- vCircFuckAll[i] = 0
- vCircRadius[i] = 150
- vCircWidth[i] = 5
- vCircCol[i] = fCol[i]
-
- SetVisualGearValues(fCirc[i], fSpawnX[i],fSpawnY[i], vCircMinA[i], vCircMaxA[i], vCircType[i], vCircPulse[i], vCircFuckAll[i], vCircRadius[i], vCircWidth[i], vCircCol[i])
-
- end
-
-end
-
-
-function onNewTurn()
-
- if lastTeam ~= GetHogTeamName(CurrentHedgehog) then
- lastTeam = GetHogTeamName(CurrentHedgehog)
- end
-
- for i = 0, 1 do
- if fThief[i] ~= nil then
- --adjust = 5 + GetHealth(fThief[i])
- --SetHealth(fThief[i], adjust)
- --AddCaption('Helped out the flag poisoned flag thiefs')
- end
- end
-
- --AddCaption("Handling respawns")
- HandleRespawns()
- HandleCrateDrops()
-
- --myC = AddVisualGear(GetX(CurrentHedgehog),GetY(CurrentHedgehog),vgtCircle,0,true)
- --SetVisualGearValues(myC, GetX(CurrentHedgehog),GetY(CurrentHedgehog), 20, 200, 0, 0, 100, 50, 3, GetClanColor(GetHogClan(CurrentHedgehog)))
-
-end
-
-function onGameTick()
-
- -- onRessurect calls AFTER you have resurrected,
- -- so keeping track of x,y a few milliseconds before
- -- is useful
- --FTTC = FTTC + 1
- --if FTTC == 100 then
- -- FTTC = 0
- for i = 0,1 do
- if fThief[i] ~= nil then
- fThiefX[i] = GetX(fThief[i])
- fThiefY[i] = GetY(fThief[i])
- end
- end
- --end
-
- -- things we wanna check often
- if (CurrentHedgehog ~= nil) then
- --AddCaption(GetX(CurrentHedgehog) .. "; " .. GetY(CurrentHedgehog))
- --AddCaption("Checking Teleporters")
- CheckTeleporters()
- end
-
- HandleCircles()
- ManageTeleporterEffects()
-
-end
-
-
-function onAmmoStoreInit()
-
- SetAmmo(amDrill,9,0,0,0)
- SetAmmo(amMortar,9,0,0,0)
-
- SetAmmo(amGrenade,9,0,0,0)
- SetAmmo(amClusterBomb,4,0,0,0)
-
- --SetAmmo(amDEagle, 4, 0, 0, 0)
- SetAmmo(amShotgun, 9, 0, 0, 0)
- SetAmmo(amFlamethrower, 1, 0, 0, 1)
-
- SetAmmo(amFirePunch, 9, 0, 0, 0)
- SetAmmo(amBaseballBat, 2, 0, 0, 0)
-
- SetAmmo(amDynamite,2,0,0,1)
- SetAmmo(amSMine,4,0,0,0)
-
- SetAmmo(amBlowTorch, 9, 0, 0, 0)
- SetAmmo(amPickHammer, 9, 0, 0, 0)
- SetAmmo(amGirder, 2, 0, 0, 2)
- SetAmmo(amPortalGun, 2, 0, 0, 2)
-
- SetAmmo(amParachute, 9, 0, 0, 0)
- SetAmmo(amRope, 9, 0, 0, 0)
- SetAmmo(amTeleport, 1, 0, 0, 1)
- SetAmmo(amJetpack, 1, 0, 0, 1)
-
- SetAmmo(amSwitch, 2, 0, 0, 1)
- SetAmmo(amExtraTime,1,0,0,1)
- SetAmmo(amLowGravity,1,0,0,0)
- SetAmmo(amSkip, 9, 0, 0, 0)
-
-end
-
-
-function onGearResurrect(gear)
-
- --AddCaption("A gear has been resurrected!")
-
- -- mark the flag thief as dead if he needed a respawn
- for i = 0,1 do
- if gear == fThief[i] then
- FlagThiefDead(gear)
- end
- end
-
- -- place hogs belonging to each clan either left or right side of map
- if GetHogClan(gear) == 0 then
- FindPlace(gear, false, 0, 2048)
- elseif GetHogClan(gear) == 1 then
- FindPlace(gear, false, 2048, LAND_WIDTH)
- end
-
- AddVisualGear(GetX(gear), GetY(gear), vgtBigExplosion, 0, false)
-
-end
-
-function onGearDamage(gear, damage)
-
- -- >_< damn, occurs too fast, before the hog has finished moving / updated his health
- --if GetGearType(gear) == gtHedgehog then
- -- if damage > GetHealth(gear) then
- -- AddVisualGear(GetX(gear), GetY(gear), vgtExplosion, 0, false)
- -- end
- --end
-
-end
-
-function onGearAdd(gear)
-
- if GetGearType(gear) == gtHedgehog then
-
- hhs[numhhs] = gear
- numhhs = numhhs + 1
- SetEffect(gear, heResurrectable, true)
-
- end
-
-end
-
-function onGearDelete(gear)
-
- if (gear == fGear[0]) or (gear == fGear[1]) then
- FlagDeleted(gear)
- end
-
-end
+--------------------------------
+-- CTF_BLIZZARD 0.6
+--------------------------------
+
+---------
+-- 0.2
+---------
+
+-- disabled super weapons
+
+-- theme modifications
+
+-- improved hog placement system: teams can now be put
+-- in any order and be of any size
+
+---------
+-- 0.3
+---------
+
+-- In this version:
+
+-- changed starting weapons
+-- changed crate drop contents and rate of drops
+
+-- completely removed super weapons and super weapon scripts
+
+-- removed custom respawning
+-- removed set respawn points
+
+-- added AIRespawn-esque respawning
+-- added simple left vs right respawn points
+
+-- added non-lethal poison to flag carriers as an indicator
+
+-- improved flag mechanics and player-flag feedback
+-- flag now instantly respawns if you kill enemy hog and return it,
+-- or if the flag falls in water, _BUT_ not if it is blown up
+
+---------
+-- 0.4
+---------
+
+-- tweaked crate drop rates and crate contents
+-- improved the teleporters, they should now be able to handle rope... hopefully
+-- updated SetEffect calls to be in line with 0.9.15 definitions
+-- added visual gears when hogs respawn
+-- added visual gears when hogs teleport
+-- added visual gear to track flag and flag carriers
+-- removed poisoning of flag carriers
+-- removed health adjustments for flag carriers due to aforementioned poisons
+
+---------
+-- 0.5
+---------
+
+-- added translation support, hopefully
+-- added ctf rules
+-- added effects to the teleporters
+-- added aura round spawning area
+-- changed the aura around the flag carrier / flag to an aura and added some support for this
+-- changed things so the seed is no longer always the same...
+
+---------
+-- 0.6
+---------
+
+-- removed branding and version number
+-- removed teleport from starting weapons
+-- increased captures to 3
+
+-----------
+-- 0.7
+------------
+
+-- hopefully fixed a bug with the teleporters
+
+-- added a fix for crate possibly getting imbedded in land when it was near
+-- the water line
+
+loadfile(GetDataPath() .. "Scripts/Locale.lua")()
+
+---------------------------------------------------------------
+----------lots of bad variables and things
+----------because someone is too lazy
+----------to read about tables properly
+------------------ "Oh well, they probably have the memory"
+
+local actionReset = 0 -- used in CheckTeleporters()
+
+local roundsCounter = 0 -- used to determine when to spawn more crates
+ -- currently every 6 TURNS, should this work
+ -- on ROUNDS instead?
+local effectTimer = 0
+
+local ropeGear = nil
+
+--------------------------
+-- hog and team tracking variales
+--------------------------
+
+local numhhs = 0 -- store number of hedgehogs
+local hhs = {} -- store hedgehog gears
+
+local numTeams -- store the number of teams in the game
+local teamNameArr = {} -- store the list of teams
+local teamSize = {} -- store how many hogs per team
+local teamIndex = {} -- at what point in the hhs{} does each team begin
+
+-------------------
+-- flag variables
+-------------------
+
+local fGear = {} -- pointer to the case gears that represent the flag
+local fThief = {} -- pointer to the hogs who stole the flags
+local fIsMissing = {} -- have the flags been destroyed or captured
+local fNeedsRespawn = {} -- do the flags need to be respawned
+local fCaptures = {} -- the team "scores" how many captures
+local fSpawnX = {} -- spawn X for flags
+local fSpawnY = {} -- spawn Y for flags
+
+local fThiefX = {}
+local fThiefY = {}
+local FTTC = 0 -- flag thief tracker counter
+--local fThiefsHealed = false
+
+local fSpawnC = {}
+local fCirc = {} -- flag/carrier marker circles
+local fCol = {} -- colour of the clans
+
+local vCircX = {}
+local vCircY = {}
+local vCircMinA = {}
+local vCircMaxA = {}
+local vCircType = {}
+local vCircPulse = {}
+local vCircFuckAll = {}
+local vCircRadius = {}
+local vCircWidth = {}
+local vCircCol = {}
+
+
+--------------------------------
+--zone and teleporter variables
+--------------------------------
+
+local redTel
+local orangeTel
+--local areaArr = {} -- no longer used
+
+local zXMin = {}
+local zWidth = {}
+local zYMin = {}
+local zHeight = {}
+local zOccupied = {}
+local zCount = 0
+
+------------------------
+-- zone methods
+------------------------
+-- see on gameTick also
+
+function ManageTeleporterEffects()
+ effectTimer = effectTimer + 1
+ if effectTimer > 50 then -- 100
+ effectTimer = 0
+
+ for i = 0,1 do
+ eX = 10 + zXMin[i] + GetRandom(zWidth[i]-10)
+ eY = 50 + zYMin[i] + GetRandom(zHeight[i]-110)
+
+ -- steam and smoke and DUST look good, smokering looks trippy
+ -- smoketrace and eviltrace are not effected by wind?
+ -- chunk is a LR falling gear
+ tempE = AddVisualGear(eX, eY, vgtDust, 0, false)
+ if tempE ~= 0 then
+ g1, g2, g3, g4, g5, g6, g7, g8, g9, g10 = GetVisualGearValues(tempE)
+ SetVisualGearValues(tempE, eX, eY, g3, g4, g5, g6, g7, g8, g9, fCol[i])
+ end
+ end
+ end
+end
+
+function CreateZone(xMin, yMin, width, height)
+
+
+ zXMin[zCount] = xMin
+ zYMin[zCount] = yMin
+ zWidth[zCount] = width
+ zHeight[zCount] = height
+ zOccupied[zCount] = false
+ zCount = zCount + 1
+
+ return (zCount-1)
+
+end
+
+function GearIsInZone(gear, zI)
+
+ if (GetX(gear) > zXMin[zI]) and (GetX(gear) < (zXMin[zI]+zWidth[zI])) and (GetY(gear) > zYMin[zI]) and (GetY(gear) < (zYMin[zI]+zHeight[zI])) then
+ zOccupied[zI] = true
+ else
+ zOccupied[zI] = false
+ end
+
+ return zOccupied[zI]
+
+end
+
+------------------------
+--flag methods
+------------------------
+
+function CheckScore(teamID)
+
+ if teamID == 0 then
+ alt = 1
+ winner = "Red"
+
+ elseif teamID == 1 then
+ alt = 0
+ winner = "Blue"
+ end
+
+ if fCaptures[teamID] == 3 then
+ for i = 0, (numhhs-1) do
+ if GetHogClan(hhs[i]) == alt then
+ SetEffect(hhs[i], heResurrectable, false)
+ SetHealth(hhs[i],0)
+ end
+ end
+ --ShowMission("GAME OVER!", "Victory for the " .. winner .. " Team!", "Hooray!", 0, 0)
+ ShowMission(loc("GAME OVER!"), loc("Victory for the ") .. GetHogTeamName(CurrentHedgehog), loc("Hooray!"), 0, 0)
+ end
+
+end
+
+function HandleRespawns()
+
+ for i = 0, 1 do
+
+ if fNeedsRespawn[i] == true then
+ fGear[i] = SpawnAmmoCrate(fSpawnX[i],fSpawnY[i],amSkip)
+ --fGear[i] = SpawnHealthCrate(fSpawnX[i],fSpawnY[i])
+ fNeedsRespawn[i] = false
+ fIsMissing[i] = false -- new, this should solve problems of a respawned flag being "returned" when a player tries to score
+ AddCaption(loc("Flag respawned!"))
+ end
+
+ end
+
+end
+
+function FlagDeleted(gear)
+
+ if (gear == fGear[0]) then
+ wtf = 0
+ bbq = 1
+ elseif (gear == fGear[1]) then
+ wtf = 1
+ bbq = 0
+ end
+
+ --ShowMission("OH HAI!", "FlagDeleted was called", "Oh noes!", -amBazooka, 0)
+
+ if CurrentHedgehog ~= nil then
+
+ --ShowMission("GUESS WAT?", "I'm not nil", "Oh noes!", -amBazooka, 0)
+ --if the player picks up the flag
+ if CheckDistance(CurrentHedgehog, fGear[wtf]) < 1600 then
+
+ fGear[wtf] = nil -- the flag has now disappeared and we shouldnt be pointing to it
+
+ -- player has successfully captured the enemy flag
+ if (GetHogClan(CurrentHedgehog) == wtf) and (CurrentHedgehog == fThief[bbq]) and (fIsMissing[wtf] == false) then
+ fIsMissing[wtf] = false
+ fNeedsRespawn[wtf] = true
+ fIsMissing[bbq] = false
+ fNeedsRespawn[bbq] = true
+ fCaptures[wtf] = fCaptures[wtf] +1 --fCaptures[wtf]
+
+ --ShowMission(loc("You have SCORED!!"), "Red Team: " .. fCaptures[0], "Blue Team: " .. fCaptures[1], -amBazooka, 0)
+ ShowMission(loc("You have SCORED!!"), GetHogTeamName(CurrentHedgehog) .. ": " .. fCaptures[wtf], loc("Opposing Team: ") .. fCaptures[bbq], 0, 0)
+
+ PlaySound(sndVictory)
+ --SetEffect(fThief[bbq], hePoisoned, false)
+ fThief[bbq] = nil -- player no longer has the enemy flag
+ CheckScore(wtf)
+
+ --if the player is returning the flag
+ elseif GetHogClan(CurrentHedgehog) == wtf then
+
+ fNeedsRespawn[wtf] = true
+
+ -- NEW ADDIITON, does this work? Should make it possible to return your flag and then score in the same turn
+ if fIsMissing[wtf] == true then
+ HandleRespawns() -- this will set fIsMissing[wtf] to false :)
+ AddCaption(loc("Flag returned!"))
+ elseif fIsMissing[wtf] == false then
+ AddCaption(loc("That was pointless.") .. loc("The flag will respawn next round."))
+ end
+
+ --fIsMissing[wtf] = false
+ --ShowMission("Flag returned!", "Hooray", "", -amBazooka, 0)
+
+ --if the player is taking the enemy flag
+ elseif GetHogClan(CurrentHedgehog) == bbq then
+ fIsMissing[wtf] = true
+ for i = 0,numhhs-1 do
+ if CurrentHedgehog == hhs[i] then
+ fThief[wtf] = hhs[i]
+ --SetEffect(fThief[wtf], hePoisoned, true)
+ end
+ end
+
+ AddCaption(loc("Flag captured!"))
+
+ else --below line doesnt usually get called
+ AddCaption("Hmm... that wasn't supposed to happen...")
+
+ end
+
+ -- if flag has been destroyed, probably
+ else
+
+ if GetY(fGear[wtf]) > 2025 then
+ fGear[wtf] = nil
+ fIsMissing[wtf] = true
+ fNeedsRespawn[wtf] = true
+ HandleRespawns()
+ else
+ fGear[wtf] = nil
+ fIsMissing[wtf] = true
+ fNeedsRespawn[wtf] = true
+ AddCaption(loc("Boom!") .. " " .. loc("The flag will respawn next round."))
+ end
+
+ end
+
+ -- if flag has been destroyed deep underwater and player is now nil
+ -- probably only gets called if the flag thief drowns himself
+ -- otherwise the above one will work fine
+ else
+ --ShowMission("NIL PLAYER!", "Oh snap", "Oh noes!", -amBazooka, 0)
+ fGear[wtf] = nil
+ fIsMissing[wtf] = true
+ fNeedsRespawn[wtf] = true
+ AddCaption(loc("The flag will respawn next round."))
+ end
+
+end
+
+function FlagThiefDead(gear)
+
+ if (gear == fThief[0]) then
+ wtf = 0
+ bbq = 1
+ elseif (gear == fThief[1]) then
+ wtf = 1
+ bbq = 0
+ end
+
+ if fThief[wtf] ~= nil then
+
+ if fThiefY[wtf] > 2040 then
+ fGear[wtf] = SpawnAmmoCrate(fThiefX[wtf],(fThiefY[wtf]+10),amSkip)
+ else
+ fGear[wtf] = SpawnAmmoCrate(fThiefX[wtf],(fThiefY[wtf]-50),amSkip)
+ end
+
+ AddVisualGear(fThiefX[wtf], fThiefY[wtf], vgtBigExplosion, 0, false)
+ fThief[wtf] = nil
+ end
+
+end
+
+function HandleCircles()
+
+ for i = 0, 1 do
+ if fIsMissing[i] == false then -- draw a circle at the flag's spawning place
+ --SetVisualGearValues(fCirc[i], fSpawnX[i],fSpawnY[i], 20, 200, 0, 0, 100, 33, 2, fCol[i])
+ SetVisualGearValues(fCirc[i], fSpawnX[i],fSpawnY[i], vCircMinA[i], vCircMaxA[i], vCircType[i], vCircPulse[i], vCircFuckAll[i], vCircRadius[i], vCircWidth[i], vCircCol[i])
+ elseif (fIsMissing[i] == true) and (fNeedsRespawn[i] == false) then
+ if fThief[i] ~= nil then -- draw circle round flag carrier
+ --SetVisualGearValues(fCirc[i], fThiefX[i], fThiefY[i], 20, 200, 0, 0, 100, 33, 2, fCol[i])
+ SetVisualGearValues(fCirc[i], fThiefX[i], fThiefY[i], vCircMinA[i], vCircMaxA[i], vCircType[i], vCircPulse[i], vCircFuckAll[i], vCircRadius[i], vCircWidth[i], vCircCol[i])
+ elseif fThief[i] == nil then -- draw cirle round dropped flag
+ --SetVisualGearValues(fCirc[i], GetX(fGear[i]), GetY(fGear[i]), 20, 200, 0, 0, 100, 33, 2, fCol[i])
+ SetVisualGearValues(fCirc[i], GetX(fGear[i]),GetY(fGear[i]), vCircMinA[i], vCircMaxA[i], vCircType[i], vCircPulse[i], vCircFuckAll[i], vCircRadius[i], vCircWidth[i], vCircCol[i])
+ end
+ end
+
+ if fNeedsRespawn[i] == true then -- if the flag has been destroyed, no need for a circle
+ SetVisualGearValues(fCirc[i], fSpawnX[i],fSpawnY[i], 20, 200, 0, 0, 100, 0, 0, fCol[i])
+ end
+ end
+
+end
+
+------------------------
+-- general methods
+------------------------
+
+function CheckDistance(gear1, gear2)
+
+ g1X, g1Y = GetGearPosition(gear1)
+ g2X, g2Y = GetGearPosition(gear2)
+
+ g1X = g1X - g2X
+ g1Y = g1Y - g2Y
+ z = (g1X*g1X) + (g1Y*g1Y)
+
+ --dist = math.sqrt(z)
+
+ dist = z
+
+ return dist
+
+end
+
+function CheckTeleporters()
+
+ teleportActive = false
+
+ if (GearIsInZone(CurrentHedgehog, redTel) == true) and (GetHogClan(CurrentHedgehog) == 0) then
+ teleportActive = true
+ destinationX = 1402
+ destinationY = 321
+ elseif (GearIsInZone(CurrentHedgehog, orangeTel) == true) and (GetHogClan(CurrentHedgehog) == 1) then
+ teleportActive = true
+ destinationX = 2692
+ destinationY = 321
+ end
+
+ if teleportActive == true then
+ if actionReset == 0 then
+ if ropeGear ~= nil then
+ if GetGearElasticity(ropeGear) ~= 0 then
+ SetGearMessage(CurrentHedgehog, gmAttack)
+ end
+ end
+ --AddCaption(actionReset .. ";" .. "attack")
+ elseif actionReset == 10 then
+ SetGearMessage(CurrentHedgehog, 0)
+ --AddCaption(actionReset .. ";" .. "reset")
+ elseif actionReset == 20 then
+ AddVisualGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog), vgtBigExplosion, 0, false)
+ SetGearPosition(CurrentHedgehog,destinationX,destinationY)
+ AddVisualGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog), vgtBigExplosion, 0, false)
+ --AddCaption(actionReset .. ";" .. "teleport")
+ end
+
+ actionReset = actionReset + 1
+ if actionReset >= 30 then
+ actionReset = 0
+ end
+
+ end
+
+end
+
+function RebuildTeamInfo()
+
+
+ -- make a list of individual team names
+ for i = 0, 5 do
+ teamNameArr[i] = i
+ teamSize[i] = 0
+ teamIndex[i] = 0
+ end
+ numTeams = 0
+
+ for i = 0, (numhhs-1) do
+
+ z = 0
+ unfinished = true
+ while(unfinished == true) do
+
+ newTeam = true
+ tempHogTeamName = GetHogTeamName(hhs[i]) -- this is the new name
+
+ if tempHogTeamName == teamNameArr[z] then
+ newTeam = false
+ unfinished = false
+ end
+
+ z = z + 1
+
+ if z == TeamsCount then
+ unfinished = false
+ if newTeam == true then
+ teamNameArr[numTeams] = tempHogTeamName
+ numTeams = numTeams + 1
+ end
+ end
+
+ end
+
+ end
+
+ -- find out how many hogs per team, and the index of the first hog in hhs
+ for i = 0, numTeams-1 do
+
+ for z = 0, numhhs-1 do
+ if GetHogTeamName(hhs[z]) == teamNameArr[i] then
+ if teamSize[i] == 0 then
+ teamIndex[i] = z -- should give starting index
+ end
+ teamSize[i] = teamSize[i] + 1
+ --add a pointer so this hog appears at i in hhs
+ end
+ end
+
+ end
+
+end
+
+function HandleCrateDrops()
+
+ roundsCounter = roundsCounter +1
+
+ if roundsCounter == 5 then
+
+ roundsCounter = 0
+
+ r = GetRandom(8)
+ if r == 0 then
+ SpawnUtilityCrate(0,0,amSwitch)
+ elseif r == 1 then
+ SpawnUtilityCrate(0,0,amTeleport)
+ elseif r == 2 then
+ SpawnUtilityCrate(0,0,amJetpack)
+ elseif r == 3 then
+ SpawnUtilityCrate(0,0,amExtraTime)
+ elseif r == 4 then
+ SpawnUtilityCrate(0,0,amGirder)
+ elseif r == 5 then
+ SpawnAmmoCrate(0,0,amDynamite)
+ elseif r == 6 then
+ SpawnAmmoCrate(0,0,amFlamethrower)
+ elseif r == 7 then
+ SpawnUtilityCrate(0,0,amPortalGun)
+ end
+
+ end
+
+end
+
+------------------------
+-- game methods
+------------------------
+
+function onGameInit()
+
+ -- Things we don't modify here will use their default values.
+ GameFlags = gfDivideTeams -- Game settings and rules
+ TurnTime = 30000 -- (was 30) The time the player has to move each round (in ms)
+ CaseFreq = 0 -- The frequency of crate drops
+ MinesNum = 0 -- The number of mines being placed
+ MinesTime = 2000
+ Explosives = 0 -- The number of explosives being placed
+ Delay = 10 -- The delay between each round
+ SuddenDeathTurns = 99 -- suddendeath is off, effectively
+ Map = "Blizzard" -- The map to be played
+ Theme = "Snow" -- The theme to be used "Nature"
+
+end
+
+
+function onGameStart()
+
+ --ShowMission(loc(caption), loc(subcaption), loc(goal), 0, 0)
+ ShowMission(loc("CTF_BLIZZARD"), "", loc(" - Return the enemy flag to your base to score | - First team to 3 captures wins | - You may only score when your flag is in your base | - Hogs will drop the flag if killed, or drowned | - Dropped flags may be returned or recaptured | - Hogs respawn when killed"), 0, 0)
+
+
+ -- initialize teleporters
+ redTel = CreateZone(342,1316,42,449) -- red teleporter
+ orangeTel = CreateZone(3719,1330,45,449) -- orange teleporter
+
+
+ --new improved placement schematics aw yeah
+ RebuildTeamInfo()
+ --ShowMission("Team Info Rebuilt", "Here you go:", "TeamCount: " .. TeamsCount .. "|" .. teamNameArr[0] .. ": " .. teamSize[0] .. " Hogs|" .. teamNameArr[1] .. ": " .. teamSize[1] .. " Hogs|" .. teamNameArr[2] .. ": " .. teamSize[2] .. " Hogs|", 0, 0)
+ team1Placed = 0
+ team2Placed = 0
+ for i = 0, (TeamsCount-1) do
+ for g = teamIndex[i], (teamIndex[i]+teamSize[i]-1) do
+ if GetHogClan(hhs[g]) == 0 then
+ SetGearPosition(hhs[g],1403+ ((team1Placed+1)*50),1570)
+ team1Placed = team1Placed +1
+ if team1Placed > 6 then
+ team1Placed = 0
+ end
+ elseif GetHogClan(hhs[g]) == 1 then
+ SetGearPosition(hhs[g],2230+ ((team2Placed+1)*50),1570)
+ team2Placed = team2Placed +1
+ if team2Placed > 6 then
+ team2Placed = 0
+ end
+ end
+ end
+ end
+
+
+
+ --spawn starting ufos and or super weapons
+ SpawnAmmoCrate(2048,1858,amJetpack)
+ --SpawnUtilityCrate(2048,1858,amExtraTime)
+
+ --set flag spawn points and spawn the flags
+ fSpawnX[0] = 957
+ fSpawnY[0] = 1747
+ fSpawnX[1] = 3123
+ fSpawnY[1] = 1747
+
+ for i = 0, 1 do
+ fGear[i] = SpawnAmmoCrate(fSpawnX[i],fSpawnY[i],amSkip)
+ fCirc[i] = AddVisualGear(fSpawnX[i],fSpawnY[i],vgtCircle,0,true)
+ fCol[i] = GetClanColor(i)
+
+ fSpawnC[i] = AddVisualGear(fSpawnX[i],fSpawnY[i],vgtCircle,0,true)
+ SetVisualGearValues(fSpawnC[i], fSpawnX[i],fSpawnY[i], 10, 200, 1, 10, 0, 300, 5, fCol[i])
+
+
+ fIsMissing[i] = false
+ fNeedsRespawn[i] = false
+ fCaptures[i] = 0
+
+ vCircMinA[i] = 20
+ vCircMaxA[i] = 255
+ vCircType[i] = 1
+ vCircPulse[i] = 10
+ vCircFuckAll[i] = 0
+ vCircRadius[i] = 150
+ vCircWidth[i] = 5
+ vCircCol[i] = fCol[i]
+
+ SetVisualGearValues(fCirc[i], fSpawnX[i],fSpawnY[i], vCircMinA[i], vCircMaxA[i], vCircType[i], vCircPulse[i], vCircFuckAll[i], vCircRadius[i], vCircWidth[i], vCircCol[i])
+
+ end
+
+end
+
+
+function onNewTurn()
+
+ if lastTeam ~= GetHogTeamName(CurrentHedgehog) then
+ lastTeam = GetHogTeamName(CurrentHedgehog)
+ end
+
+ for i = 0, 1 do
+ if fThief[i] ~= nil then
+ --adjust = 5 + GetHealth(fThief[i])
+ --SetHealth(fThief[i], adjust)
+ --AddCaption('Helped out the flag poisoned flag thiefs')
+ end
+ end
+
+ --AddCaption("Handling respawns")
+ HandleRespawns()
+ HandleCrateDrops()
+
+ --myC = AddVisualGear(GetX(CurrentHedgehog),GetY(CurrentHedgehog),vgtCircle,0,true)
+ --SetVisualGearValues(myC, GetX(CurrentHedgehog),GetY(CurrentHedgehog), 20, 200, 0, 0, 100, 50, 3, GetClanColor(GetHogClan(CurrentHedgehog)))
+
+end
+
+function onGameTick()
+
+ -- onRessurect calls AFTER you have resurrected,
+ -- so keeping track of x,y a few milliseconds before
+ -- is useful
+ --FTTC = FTTC + 1
+ --if FTTC == 100 then
+ -- FTTC = 0
+ for i = 0,1 do
+ if fThief[i] ~= nil then
+ fThiefX[i] = GetX(fThief[i])
+ fThiefY[i] = GetY(fThief[i])
+ end
+ end
+ --end
+
+ -- things we wanna check often
+ if (CurrentHedgehog ~= nil) then
+ --AddCaption(GetX(CurrentHedgehog) .. "; " .. GetY(CurrentHedgehog))
+ --AddCaption("Checking Teleporters")
+ CheckTeleporters()
+ end
+
+ HandleCircles()
+ ManageTeleporterEffects()
+
+end
+
+
+function onAmmoStoreInit()
+
+ SetAmmo(amDrill,9,0,0,0)
+ SetAmmo(amMortar,9,0,0,0)
+
+ SetAmmo(amGrenade,9,0,0,0)
+ SetAmmo(amClusterBomb,4,0,0,0)
+
+ --SetAmmo(amDEagle, 4, 0, 0, 0)
+ SetAmmo(amShotgun, 9, 0, 0, 0)
+ SetAmmo(amFlamethrower, 1, 0, 0, 1)
+
+ SetAmmo(amFirePunch, 9, 0, 0, 0)
+ SetAmmo(amBaseballBat, 2, 0, 0, 0)
+
+ SetAmmo(amDynamite,2,0,0,1)
+ SetAmmo(amSMine,4,0,0,0)
+
+ SetAmmo(amBlowTorch, 9, 0, 0, 0)
+ SetAmmo(amPickHammer, 9, 0, 0, 0)
+ SetAmmo(amGirder, 2, 0, 0, 2)
+ SetAmmo(amPortalGun, 2, 0, 0, 2)
+
+ SetAmmo(amParachute, 9, 0, 0, 0)
+ SetAmmo(amRope, 9, 0, 0, 0)
+ SetAmmo(amTeleport, 0, 0, 0, 1)
+ SetAmmo(amJetpack, 1, 0, 0, 1)
+
+ SetAmmo(amSwitch, 2, 0, 0, 1)
+ SetAmmo(amExtraTime,1,0,0,1)
+ SetAmmo(amLowGravity,1,0,0,0)
+ SetAmmo(amSkip, 9, 0, 0, 0)
+
+end
+
+
+function onGearResurrect(gear)
+
+ --AddCaption("A gear has been resurrected!")
+
+ -- mark the flag thief as dead if he needed a respawn
+ for i = 0,1 do
+ if gear == fThief[i] then
+ FlagThiefDead(gear)
+ end
+ end
+
+ -- place hogs belonging to each clan either left or right side of map
+ if GetHogClan(gear) == 0 then
+ FindPlace(gear, false, 0, 2048)
+ elseif GetHogClan(gear) == 1 then
+ FindPlace(gear, false, 2048, LAND_WIDTH)
+ end
+
+ AddVisualGear(GetX(gear), GetY(gear), vgtBigExplosion, 0, false)
+
+end
+
+function onGearDamage(gear, damage)
+
+ -- >_< damn, occurs too fast, before the hog has finished moving / updated his health
+ --if GetGearType(gear) == gtHedgehog then
+ -- if damage > GetHealth(gear) then
+ -- AddVisualGear(GetX(gear), GetY(gear), vgtExplosion, 0, false)
+ -- end
+ --end
+
+end
+
+function onGearAdd(gear)
+
+ if GetGearType(gear) == gtHedgehog then
+
+ hhs[numhhs] = gear
+ numhhs = numhhs + 1
+ SetEffect(gear, heResurrectable, true)
+
+ end
+
+ if GetGearType(gear) == gtRope then
+ ropeGear = gear
+ end
+
+end
+
+function onGearDelete(gear)
+
+ if (gear == fGear[0]) or (gear == fGear[1]) then
+ FlagDeleted(gear)
+ end
+
+ if GetGearType(gear) == gtRope then
+ ropeGear = nil
+ end
+
+end
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Maps/CTF_Blizzard/map.png
Binary file share/hedgewars/Data/Maps/CTF_Blizzard/map.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Maps/CTF_Blizzard/map.svg
--- a/share/hedgewars/Data/Maps/CTF_Blizzard/map.svg Tue Feb 01 00:12:19 2011 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1067 +0,0 @@
-
-
-
-
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Maps/CTF_Blizzard/mask.png
Binary file share/hedgewars/Data/Maps/CTF_Blizzard/mask.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Maps/CTF_Blizzard/preview@2x.png
Binary file share/hedgewars/Data/Maps/CTF_Blizzard/preview@2x.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Maps/Cave/preview.png
Binary file share/hedgewars/Data/Maps/Cave/preview.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Maps/Control/map.lua
--- a/share/hedgewars/Data/Maps/Control/map.lua Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Maps/Control/map.lua Tue Feb 01 00:18:25 2011 +0100
@@ -200,7 +200,9 @@
if CurrentHedgehog ~= nil then
if cOwnerClan[i] == GetHogClan(CurrentHedgehog) then
g = AddVisualGear(vCircX[i], vCircY[i], vgtHealthTag, 100, False)
- SetVisualGearValues(g, vCircX[i], vCircY[i], 0, 0, 0, 0, 0, teamScore[cOwnerClan[i]], 1500, GetClanColor(cOwnerClan[i]))
+ if g ~= 0 then
+ SetVisualGearValues(g, vCircX[i], vCircY[i], 0, 0, 0, 0, 0, teamScore[cOwnerClan[i]], 1500, GetClanColor(cOwnerClan[i]))
+ end
end
end
end
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Maps/Ropes/preview.png
Binary file share/hedgewars/Data/Maps/Ropes/preview.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Missions/Training/User_Mission_-_Diver.lua
--- a/share/hedgewars/Data/Missions/Training/User_Mission_-_Diver.lua Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Missions/Training/User_Mission_-_Diver.lua Tue Feb 01 00:18:25 2011 +0100
@@ -87,7 +87,7 @@
function onGearDelete(gear)
if (gear == enemy) and (GameOver == false) then
- ShowMission(loc("Operation Diver"), loc("MISSION SUCCESS"), loc("Congratulations!"), 0, 0)
+ ShowMission(loc("Operation Diver"), loc("MISSION SUCCESSFUL"), loc("Congratulations!"), 0, 0)
elseif gear == player then
ShowMission(loc("Operation Diver"), loc("MISSION FAILED"), loc("Oh no! Just try again!"), -amSkip, 0)
GameOver = true
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Scripts/Locale.lua
--- a/share/hedgewars/Data/Scripts/Locale.lua Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Scripts/Locale.lua Tue Feb 01 00:18:25 2011 +0100
@@ -1,4 +1,7 @@
+-- Library for localizing strings in lua scripts
+
local lang = loadfile(GetDataPath() .. "Locale/" .. tostring(L) .. ".lua")
+
if lang ~= nil then
lang()
end
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Scripts/Multiplayer/GaudyRacer.cfg
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/share/hedgewars/Data/Scripts/Multiplayer/GaudyRacer.cfg Tue Feb 01 00:18:25 2011 +0100
@@ -0,0 +1,2 @@
+Default
+Default
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Scripts/Multiplayer/GaudyRacer.lua
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/share/hedgewars/Data/Scripts/Multiplayer/GaudyRacer.lua Tue Feb 01 00:18:25 2011 +0100
@@ -0,0 +1,730 @@
+
+------------------------------------------
+-- RACER
+-- a crazy, map-independant racing script
+-- by mikade
+-----------------------------------------
+
+-----------------------------------
+--0.1: with apologies to tumbler
+-----------------------------------
+-- added tumbler movement system
+-- added weapon systems
+-- added timer to stop tumbler
+-- added racer circle arrays
+-- added changing of circs on contact
+-- added a "track complete" etc
+
+-----------------------------------
+--0.2: for your racing convenience
+-----------------------------------
+
+-- added resurrection
+-- added team tracking
+-- added proper scoring (hopefully, finally)
+-- changed showmission icons to match feedback
+-- changed circles to be netural colours, and then change to team col
+-- cleaned up code
+-- cleaned up gameplay: removing control on resurrect, trackcomplete, maxpointset etc
+-- improved player feedback: race record, clan record, no record etc.
+
+-----------------------------------
+--0.3: user-requested features
+-----------------------------------
+
+-- hogs now start at the location of the first waypoint \o/
+-- added sticky camera. Hog will no longer lose focus on explosions etc.
+-- increased maximum complexity for tracks
+
+-----------------------------------
+--0.4: user-requested features
+-----------------------------------
+
+-- added movement trail
+-- removed exploder weapon
+-- removed mortar weapon
+
+-----------------------------------
+-- 0.5 gaudy feature experimentation
+-----------------------------------
+-- added a booster
+-- added flame trail for booster
+-- added and removed dx/dy on mortar launch
+-- added and removed keypress-based mortar fire
+-- changed mortar for a gtShell, probably more useful for tunneling
+-- added dx/dy *2 shell fire
+
+----------------------------------
+-- 0.6 modesty / display mod
+----------------------------------
+-- author branding removed
+-- version numbers removed
+
+-----------------------------
+-- SCRIPT BEGINS
+-----------------------------
+
+-- enable awesome translaction support so we can use loc() wherever we want
+loadfile(GetDataPath() .. "Scripts/Locale.lua")()
+
+------------------
+-- Got Variables?
+------------------
+
+local roundLimit = 3
+local roundNumber = 0
+local firstClan = 10
+
+local versionNo = loc("v.06")
+
+--------------------------
+-- hog and team tracking variales
+--------------------------
+
+local numhhs = 0 -- store number of hedgehogs
+local hhs = {} -- store hedgehog gears
+
+local numTeams -- store the number of teams in the game
+local teamNameArr = {} -- store the list of teams
+local teamClan = {}
+local teamSize = {} -- store how many hogs per team
+local teamIndex = {} -- at what point in the hhs{} does each team begin
+
+local teamComment = {}
+local teamScore = {}
+
+---------
+-- tumbler stuff
+---------
+
+local moveTimer = 0
+local leftOn = false
+local rightOn = false
+local upOn = false
+local downOn = false
+
+local shotsMax = 30 --10
+local shotsLeft = 10
+
+local TimeLeftCounter = 0
+local TimeLeft = 60
+local stopMovement = false
+local tumbleStarted = false
+
+-------
+-- racer vars
+--------
+
+local boosterOn = false
+local boosterFuel = 75
+local boosterPower = 0.3
+local boosterTimer = 0
+
+local bestClan = nil
+local bestTime = nil
+
+local gameBegun = false
+local gameOver = false
+local racerActive = false
+local trackTime = 0
+local wpCheckCounter = 0
+
+local wpCirc = {}
+local wpX = {}
+local wpY = {}
+local wpCol = {}
+local wpActive = {}
+local wpRad = 75
+local wpCount = 0
+local wpLimit = 20
+
+-------------------
+-- general methods
+-------------------
+
+function RebuildTeamInfo()
+
+
+ -- make a list of individual team names
+ for i = 0, 7 do
+ teamNameArr[i] = " " -- = i
+ teamSize[i] = 0
+ teamIndex[i] = 0
+ teamScore[i] = 100000
+ end
+ numTeams = 0
+
+ for i = 0, (numhhs-1) do
+
+ z = 0
+ unfinished = true
+ while(unfinished == true) do
+
+ newTeam = true
+ tempHogTeamName = GetHogTeamName(hhs[i]) -- this is the new name
+
+ if tempHogTeamName == teamNameArr[z] then
+ newTeam = false
+ unfinished = false
+ end
+
+ z = z + 1
+
+ if z == TeamsCount then
+ unfinished = false
+ if newTeam == true then
+ teamNameArr[numTeams] = tempHogTeamName
+ numTeams = numTeams + 1
+ end
+ end
+
+ end
+
+ end
+
+ -- find out how many hogs per team, and the index of the first hog in hhs
+ for i = 0, (numTeams-1) do
+ for z = 0, (numhhs-1) do
+ if GetHogTeamName(hhs[z]) == teamNameArr[i] then
+ teamClan[i] = GetHogClan(hhs[z])
+ if teamSize[i] == 0 then
+ teamIndex[i] = z -- should give starting index
+ end
+ teamSize[i] = teamSize[i] + 1
+ --add a pointer so this hog appears at i in hhs
+ end
+ end
+
+ end
+
+end
+
+
+-----------------
+-- RACER METHODS
+-----------------
+
+function GetSpeed()
+
+ dx, dy = GetGearVelocity(CurrentHedgehog)
+
+ x = dx*dx
+ y = dy*dy
+ z = x+y
+
+ z = z*100
+
+ k = z%1
+
+ if k ~= 0 then
+ z = z - k
+ end
+
+ return(z)
+
+end
+
+function CheckWaypoints()
+
+ trackFinished = true
+
+ for i = 0, (wpCount-1) do
+
+ g1X, g1Y = GetGearPosition(CurrentHedgehog)
+ g2X, g2Y = wpX[i], wpY[i]
+
+ g1X = g1X - g2X
+ g1Y = g1Y - g2Y
+ dist = (g1X*g1X) + (g1Y*g1Y)
+
+ --if i == 0 then
+ -- AddCaption(dist .. "/" .. (wpRad*wpRad) )
+ --end
+
+ if dist < (wpRad*wpRad) then
+ --AddCaption("howdy")
+ wpActive[i] = true
+ wpCol[i] = GetClanColor(GetHogClan(CurrentHedgehog)) -- new --GetClanColor(1)
+ SetVisualGearValues(wpCirc[i], wpX[i], wpY[i], 20, 100, 0, 10, 0, wpRad, 5, wpCol[i])
+ end
+
+ if wpActive[i] == false then
+ trackFinished = false
+ end
+
+ end
+
+ return(trackFinished)
+
+end
+
+function AdjustScores()
+
+ --[[if bestTime == nil then
+ bestTime = 100000
+ bestClan = 10
+ bestTimeComment = "N/A"
+ else
+ bestTimeComment = (bestTime/1000) ..loc("s")
+ end]]
+
+ if bestTime == nil then
+ bestTime = 100000
+ bestClan = 10
+ bestTimeComment = "N/A"
+ end
+
+ newScore = false
+
+ -- update this clan's time if the new track is better
+ for i = 0, (numTeams-1) do
+ if teamClan[i] == GetHogClan(CurrentHedgehog) then
+ if trackTime < teamScore[i] then
+ teamScore[i] = trackTime
+ newScore = true
+ else
+ newScore = false
+ end
+ end
+ end
+
+ --bestTime = 100000
+ --bestClan = 10
+
+ -- find the best time out of those so far
+ for i = 0, (numTeams-1) do
+ if teamScore[i] < bestTime then
+ bestTime = teamScore[i]
+ bestClan = teamClan[i]
+ end
+ end
+
+ if bestTime ~= 100000 then
+ bestTimeComment = (bestTime/1000) ..loc("s")
+ end
+
+ if newScore == true then
+ if trackTime == bestTime then -- best time of the race
+ ShowMission(loc("RACER"), loc("TRACK COMPLETED"), loc("NEW RACE RECORD: ") .. (trackTime/1000) ..loc("s") .. "|" .. loc("WINNING TIME: ") .. bestTimeComment, 0, 4000)
+ else -- best time for the clan
+ ShowMission(loc("RACER"), loc("TRACK COMPLETED"), loc("NEW CLAN RECORD: ") .. (trackTime/1000) ..loc("s") .. "|" .. loc("WINNING TIME: ") .. bestTimeComment, 4, 4000)
+ end
+ else -- not any kind of new score
+ ShowMission(loc("RACER"), loc("TRACK COMPLETED"), loc("TIME: ") .. (trackTime/1000) ..loc("s") .. "|" .. loc("WINNING TIME: ") .. bestTimeComment, -amSkip, 4000)
+ end
+
+end
+
+function CheckForNewRound()
+
+ if GetHogClan(CurrentHedgehog) == firstClan then
+
+ roundNumber = roundNumber + 1
+
+ for i = 0, 7 do
+ if teamNameArr[i] ~= " " then -- teamScore[teamClan[i]]
+ teamComment[i] = teamNameArr[i] .. ": " .. (teamScore[i]/1000) .. loc("s|")
+ elseif teamNameArr[i] == " " then
+ teamComment[i] = "|"
+ end
+ end
+ ShowMission(loc("RACER"), loc("STATUS UPDATE"), loc("Rounds Complete: ") .. roundNumber .. "/" .. roundLimit .. "|" .. " " .. "|" .. loc("Best Team Times: ") .. "|" .. teamComment[0] .. teamComment[1] .. teamComment[2] .. teamComment[3] .. teamComment[4] .. teamComment[5] .. teamComment[6] .. teamComment[7], 0, 1600)
+
+ -- end game if its at round limit
+ if roundNumber == roundLimit then
+ for i = 0, (numhhs-1) do
+ if GetHogClan(hhs[i]) ~= bestClan then
+ SetEffect(hhs[i], heResurrectable, false)
+ SetHealth(hhs[i],0)
+ end
+ end
+ gameOver = true
+ TurnTimeLeft = 1
+ end
+
+ end
+
+end
+
+function DisableTumbler()
+ stopMovement = true
+ upOn = false
+ down = false
+ leftOn = false
+ rightOn = false
+ boosterOn = false
+end
+
+----------------------------------
+-- GAME METHODS / EVENT HANDLERS
+----------------------------------
+
+function onGameInit()
+ --Theme = "Hell"
+ --GameFlags
+ --GameFlags = gfDisableWind
+end
+
+
+function onGameStart()
+ RebuildTeamInfo()
+ ShowMission(loc("RACER"), "", "", 4, 4000)
+end
+
+function onHJump()
+ if (shotsLeft > 0) and (CurrentHedgehog ~= nil) and (stopMovement == false) and (tumbleStarted == true) then -- seems to not work with a hedgehog nil chek
+
+ shotsLeft = shotsLeft - 1
+ morte = AddGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog), gtShell, 0, 0, 0, 1)
+ AddCaption(loc("Shots Left: ") .. shotsLeft)
+
+
+ -- based on player movement already
+ CopyPV(CurrentHedgehog, morte) -- new addition
+
+ --x2
+ x,y = GetGearVelocity(morte)
+ x = x*2
+ y = y*2
+ SetGearVelocity(morte, x, y)
+
+ --- or based on keys?
+ --[[x = 0
+ y = 0
+
+ launchPower = 0.5
+
+ if leftOn == true then
+ x = x - launchPower
+ end
+ if rightOn == true then
+ x = x + launchPower
+ end
+
+ if upOn == true then
+ y = y - launchPower
+ end
+ if downOn == true then
+ y = y + launchPower
+ end
+
+ SetGearVelocity(morte, x, y)]]
+
+
+ end
+end
+
+function onLJump()
+
+
+ if (wpCount < wpLimit) and (CurrentHedgehog ~= nil) and (stopMovement == false) and (tumbleStarted == true) and (gameBegun == false) then -- seems to not work with a hedgehog nil chek
+
+ wpX[wpCount] = GetX(CurrentHedgehog)
+ wpY[wpCount] = GetY(CurrentHedgehog)
+ wpCol[wpCount] = 0xffffffff
+ wpCirc[wpCount] = AddVisualGear(wpX[wpCount],wpY[wpCount],vgtCircle,0,true)
+ --100 --0 --75 --wpCol[wpCount]
+ SetVisualGearValues(wpCirc[wpCount], wpX[wpCount], wpY[wpCount], 20, 100, 0, 10, 0, wpRad, 5, wpCol[wpCount])
+
+ wpCount = wpCount + 1
+
+ AddCaption(loc("Waypoint placed.") .. " " .. loc("Available points remaining: ") .. (wpLimit-wpCount))
+
+ if wpCount == wpLimit then
+ AddCaption(loc("Race complexity limit reached."))
+ DisableTumbler()
+ end
+
+ end
+
+
+ if (boosterFuel > 0) and (CurrentHedgehog ~= nil) and (stopMovement == false) and (tumbleStarted == true) and (gameBegun == true) then
+
+ if boosterOn == false then
+ boosterOn = true
+ else
+ boosterOn = false
+ end
+
+ end
+
+end
+
+function onLeft()
+ if (CurrentHedgehog ~= nil) and (stopMovement == false) then
+ leftOn = true
+ end
+end
+
+function onRight()
+ if (CurrentHedgehog ~= nil) and (stopMovement == false) then
+ rightOn = true
+ end
+end
+
+function onUp()
+ if (CurrentHedgehog ~= nil) and (stopMovement == false) then
+ upOn = true
+ end
+end
+
+function onDown()
+ if (CurrentHedgehog ~= nil) and (stopMovement == false) then
+ downOn = true
+ end
+end
+
+function onDownUp()
+ downOn = false
+end
+function onUpUp()
+ upOn = false
+end
+function onLeftUp()
+ leftOn = false
+end
+function onRightUp()
+ rightOn = false
+end
+
+function onNewTurn()
+
+ CheckForNewRound()
+
+ --if gameOver == false then
+ shotsLeft = shotsMax
+ stopMovement = false
+ tumbleStarted = false
+ boosterOn = false
+ boosterFuel = 75
+ SetTag(AddGear(0, 0, gtATSmoothWindCh, 0, 0, 0, 1), boosterFuel)
+ --SetInputMask(band(0xFFFFFFFF, bnot(gmAnimate+gmAttack+gmDown+gmHJump+gmLeft+gmLJump+gmPrecise+gmRight+gmSlot+gmSwitch+gmTimer+gmUp+gmWeapon)))
+ --AddGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog), gtGrenade, 0, 0, 0, 1)
+ --end
+
+
+
+ -- Set the waypoints to unactive on new round
+ for i = 0,(wpCount-1) do
+ wpActive[i] = false
+ wpCol[i] = 0xffffffff
+ SetVisualGearValues(wpCirc[i], wpX[i], wpY[i], 20, 100, 0, 10, 0, wpRad, 5, wpCol[i])
+ end
+
+ -- Handle Starting Stage of Game
+ if (gameOver == false) and (gameBegun == false) then
+ if wpCount >= 3 then
+ gameBegun = true
+ racerActive = true
+ roundNumber = 0 -- 0
+ firstClan = GetHogClan(CurrentHedgehog)
+ ShowMission(loc("RACER"), loc("GAME BEGUN!!!"), loc("Complete the track as fast as you can!"), 2, 4000)
+ else
+ ShowMission(loc("RACER"), loc("NOT ENOUGH WAYPOINTS"), loc("Place more waypoints using [ENTER]"), 2, 4000)
+ end
+ end
+
+ if gameOver == true then
+ gameBegun = false
+ stopMovement = true
+ tumbleStarted = false
+ end
+
+end
+
+function onGameTick()
+
+ -- start the player tumbling with a boom once their turn has actually begun
+ if tumbleStarted == false then
+ if (TurnTimeLeft > 0) and (TurnTimeLeft ~= TurnTime) then
+ AddCaption("Good to go!")
+ tumbleStarted = true
+ racerActive = true
+ trackTime = 0
+ TimeLeft = 60
+
+ -- if the gamehas started put the player in the middle of the first
+ --waypoint that was placed
+ if gameBegun == true then
+ SetGearPosition(CurrentHedgehog, wpX[0], wpY[0])
+ AddGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog), gtGrenade, 0, 0, 0, 1)
+ FollowGear(CurrentHedgehog)
+ else -- otherwise just start him tumbling from wherever he is
+ AddGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog), gtGrenade, 0, 0, 0, 1)
+ end
+
+ end
+ end
+
+ -- has the player started his tumbling spree?
+ if (CurrentHedgehog ~= nil) and (tumbleStarted == true) then
+
+ --AddCaption(loc("Speed: ") .. GetSpeed())
+
+ -- if the RACE has started, show tracktimes and keep tabs on waypoints
+ if (racerActive == true) and (gameBegun == true) then
+
+ trackTime = trackTime + 1
+
+ wpCheckCounter = wpCheckCounter + 1
+ if (wpCheckCounter == 100) then
+
+ AddCaption(loc("Track Time: ") .. (trackTime/1000) .. loc("s") )
+ wpCheckCounter = 0
+ if (CheckWaypoints() == true) then
+ AdjustScores()
+ racerActive = false
+ DisableTumbler()
+ end
+
+ end
+
+ end
+
+ if boosterOn == true then
+ boosterTimer = boosterTimer + 1
+ if boosterTimer == 150 then --200
+ boosterTimer = 0
+ boosterFuel = boosterFuel - 1
+ SetTag(AddGear(0, 0, gtATSmoothWindCh, 0, 0, 0, 1), boosterFuel)
+ if boosterFuel == 0 then
+ boosterOn = false
+ end
+ end
+ end
+
+ -- Calculate and display turn time
+ TimeLeftCounter = TimeLeftCounter + 1
+ if TimeLeftCounter == 1000 then
+ TimeLeftCounter = 0
+ TimeLeft = TimeLeft - 1
+
+ if TimeLeft >= 0 then
+ --TurnTimeLeft = TimeLeft
+ --AddCaption(loc("Time Left: ") .. TimeLeft)
+ end
+
+ end
+
+ -- if the player has expended his tunbling time, stop him tumbling
+ if TimeLeft == 0 then
+ DisableTumbler()
+ end
+
+
+ -- handle movement based on IO
+ moveTimer = moveTimer + 1
+ if moveTimer == 100 then -- 100
+ moveTimer = 0
+
+ -- keep in mind gravity is acting on the hog
+ -- so his down is more powerful than his up
+
+ dx, dy = GetGearVelocity(CurrentHedgehog)
+
+ dxlimit = 0.4 --0.4
+ dylimit = 0.4 --0.4
+
+ if boosterOn == true then
+
+ --flame trail, now removed
+ AddGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog), gtFlame, 0, 0, 0, 0)
+ --tempE = AddVisualGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog), vgtDust, 0, false)
+
+ dxlimit = dxlimit + boosterPower
+ dylimit = dylimit + boosterPower
+ else
+ tempE = AddVisualGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog), vgtDust, 0, false)
+ g1, g2, g3, g4, g5, g6, g7, g8, g9, g10 = GetVisualGearValues(tempE)
+ SetVisualGearValues(tempE, g1, g2, g3, g4, g5, g6, g7, g8, g9, GetClanColor(GetHogClan(CurrentHedgehog)) )
+ end
+
+ if dx > dxlimit then
+ dx = dxlimit
+ end
+ if dy > dylimit then
+ dy = dylimit
+ end
+ if dx < -dxlimit then
+ dx = -dxlimit
+ end
+ if dy < -dylimit then
+ dy = -dylimit
+ end
+
+
+ dxPower = 0.1 --0.1
+ dyPower = 0.1 --0.1
+
+ if leftOn == true then
+ dx = dx - dxPower
+ end
+ if rightOn == true then
+ dx = dx + dxPower
+ end
+
+ if upOn == true then
+ dy = dy - dyPower -- -0.1 -- new addition
+ end
+ if downOn == true then
+ dy = dy + dyPower
+ end
+
+ --if leftOn == true then
+ -- dx = dx - 0.04
+ --end
+ --if rightOn == true then
+ -- dx = dx + 0.04
+ --end
+
+ --if upOn == true then
+ -- dy = dy - 0.1
+ --end
+ --if downOn == true then
+ -- dy = dy + 0.06
+ --end
+
+ SetGearVelocity(CurrentHedgehog, dx, dy)
+
+ end
+
+ end
+
+end
+
+function onGearDamage(gear, damage)
+ --if gear == CurrentHedgehog then
+ -- You are now tumbling
+ --end
+end
+
+function onGearResurrect(gear)
+
+ AddVisualGear(GetX(gear), GetY(gear), vgtBigExplosion, 0, false)
+
+ -- if the player stops and "dies" or flies into water, stop him tumbling
+ if gear == CurrentHedgehog then
+ DisableTumbler()
+ end
+
+end
+
+function onGearAdd(gear)
+
+ if GetGearType(gear) == gtHedgehog then
+ hhs[numhhs] = gear
+ numhhs = numhhs + 1
+ SetEffect(gear, heResurrectable, true)
+ end
+
+end
+
+function onGearDelete(gear)
+ --not needed today, yet
+
+ --sticky camera
+ if CurrentHedgehog ~= nil then
+ FollowGear(CurrentHedgehog)
+ end
+
+end
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Scripts/Multiplayer/No_Jumping.lua
--- a/share/hedgewars/Data/Scripts/Multiplayer/No_Jumping.lua Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Scripts/Multiplayer/No_Jumping.lua Tue Feb 01 00:18:25 2011 +0100
@@ -4,10 +4,14 @@
loadfile(GetDataPath() .. "Scripts/Locale.lua")()
-function onGameStart()
- ShowMission(loc("NO JUMPING"), loc("- Jumping is disabled"), loc("Good luck out there!"), 0, 0)
+function onGameInit()
+ Goals = loc("Jumping is disabled")
end
+--function onGameStart()
+-- ShowMission(loc("NO JUMPING"), loc("- Jumping is disabled"), loc("Good luck out there!"), 0, 0)
+--end
+
function onNewTurn()
SetInputMask(band(0xFFFFFFFF, bnot(gmLJump + gmHJump)))
end
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Scripts/Multiplayer/Random_Weapon.lua
--- a/share/hedgewars/Data/Scripts/Multiplayer/Random_Weapon.lua Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Scripts/Multiplayer/Random_Weapon.lua Tue Feb 01 00:18:25 2011 +0100
@@ -5,13 +5,14 @@
amBaseballBat, amTeleport, amMortar, amCake, amSeduction,
amWatermelon, amHellishBomb, amDrill, amBallgun, amRCPlane,
amSniperRifle, amMolotov, amBirdy, amBlowTorch, amGasBomb,
- amFlamethrower, amSMine, amHammer, amSnowball }
+ amFlamethrower, amSMine, amHammer, amSnowball, amTardis, amStructure }
local airweapons = { amAirAttack, amMineStrike, amNapalm, amDrillStrike }
function onGameInit()
GameFlags = band(bor(GameFlags, gfResetWeps), bnot(gfInfAttack + gfPerHogAmmo))
+ Goals = loc("Each turn you get one random weapon")
end
function onGameStart()
@@ -20,8 +21,7 @@
table.insert(weapons, w)
end
end
-
- ShowMission(loc("Random Weapons"), loc("A game of luck"), loc("There has been a mix-up with your gear and now you|have to utilize whatever is coming your way!"), -amSkip, 0)
+ --ShowMission(loc("Random Weapons"), loc("A game of luck"), loc("There has been a mix-up with your gear and now you|have to utilize whatever is coming your way!"), -amSkip, 0)
end
function onAmmoStoreInit()
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Scripts/Multiplayer/Tumbler.cfg
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/share/hedgewars/Data/Scripts/Multiplayer/Tumbler.cfg Tue Feb 01 00:18:25 2011 +0100
@@ -0,0 +1,2 @@
+Default
+Default
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Scripts/Multiplayer/Tumbler.lua
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/share/hedgewars/Data/Scripts/Multiplayer/Tumbler.lua Tue Feb 01 00:18:25 2011 +0100
@@ -0,0 +1,285 @@
+-- enable awesome translaction support so we can use loc() wherever we want
+loadfile(GetDataPath() .. "Scripts/Locale.lua")()
+
+local moveTimer = 0
+local leftOn = false
+local rightOn = false
+local upOn = false
+local downOn = false
+
+local shotsMax = 10
+local shotsLeft = 50
+
+local TimeLeftCounter = 0
+local TimeLeft = 30--000
+local stopMovement = false
+local tumbleStarted = false
+
+------------------------
+
+function GetSpeed()
+
+ dx, dy = GetGearVelocity(CurrentHedgehog)
+
+ x = dx*dx
+ y = dy*dy
+ z = x+y
+
+ z = z*100
+
+ k = z%1
+
+ if k ~= 0 then
+ z = z - k
+ end
+
+ return(z)
+
+end
+
+function onGameInit()
+ --Theme = "Hell"
+end
+
+
+function onGameStart()
+ ShowMission(loc("TUMBLER"), "a Hedgewars mini-game", "- Use the arrow keys to move|- Use [enter] and [backspace] to fire", 4, 4000)
+end
+
+function onHJump()
+ if (shotsLeft > 0) and (CurrentHedgehog ~= nil) and (stopMovement == false) and (tumbleStarted == true) then -- seems to not work with a hedgehog nil chek
+ shotsLeft = shotsLeft - 1
+ AddGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog), gtMortar, 0, 0, 0, 1)
+ AddCaption(loc("Shots Left: ") .. shotsLeft)
+ end
+end
+
+function onLJump()
+ if (shotsLeft > 0) and (CurrentHedgehog ~= nil) and (stopMovement == false) and (tumbleStarted == true) then -- seems to not work with a hedgehog nil chek
+
+ dx, dy = GetGearVelocity(CurrentHedgehog)
+
+ --boosts in the direction you're already going
+ --[[if dx >= 0 then
+ x = -15
+ elseif dx < 0 then
+ x = 15
+ end
+
+ if dy >= 0 then
+ y = -15
+ elseif dy < 0 then
+ y = 15
+ end]]
+
+
+ -- this repositions where the explosions are going to appear
+ -- based on the users INTENDED (keypress) direction
+ -- thus allowing to boost yourself or change direction with
+ -- a blast
+
+ -- naturally, it's also an anti-hog weapon
+
+ x = 0
+ y = 0
+
+ if leftOn == true then
+ x = x + 15
+ end
+ if rightOn == true then
+ x = x - 15
+ end
+
+ if upOn == true then
+ y = y + 15
+ end
+ if downOn == true then
+ y = y - 15
+ end
+
+
+ shotsLeft = shotsLeft - 1
+ AddGear((GetX(CurrentHedgehog) + x), (GetY(CurrentHedgehog) + y), gtGrenade, 0, 0, 0, 1)
+ AddCaption(loc("Shots Left: ") .. shotsLeft)
+
+ end
+end
+
+function onLeft()
+ if (CurrentHedgehog ~= nil) and (stopMovement == false) then
+ leftOn = true
+ end
+end
+
+function onRight()
+ if (CurrentHedgehog ~= nil) and (stopMovement == false) then
+ rightOn = true
+ end
+end
+
+function onUp()
+ if (CurrentHedgehog ~= nil) and (stopMovement == false) then
+ upOn = true
+ end
+end
+
+function onDown()
+ if (CurrentHedgehog ~= nil) and (stopMovement == false) then
+ downOn = true
+ end
+end
+
+function onDownUp()
+ downOn = false
+end
+function onUpUp()
+ upOn = false
+end
+function onLeftUp()
+ leftOn = false
+end
+function onRightUp()
+ rightOn = false
+end
+
+function onNewTurn()
+ shotsLeft = shotsMax
+ stopMovement = false
+ tumbleStarted = false
+ --SetInputMask(band(0xFFFFFFFF, bnot(gmAnimate+gmAttack+gmDown+gmHJump+gmLeft+gmLJump+gmPrecise+gmRight+gmSlot+gmSwitch+gmTimer+gmUp+gmWeapon)))
+ --AddGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog), gtGrenade, 0, 0, 0, 1)
+end
+
+function onGameTick()
+
+ -- start the player tumbling with a boom once their turn has actually begun
+ if tumbleStarted == false then
+ if (TurnTimeLeft > 0) and (TurnTimeLeft ~= TurnTime) then
+ AddCaption("Good to go!")
+ tumbleStarted = true
+ TimeLeft = 45
+ AddGear(GetX(CurrentHedgehog), GetY(CurrentHedgehog), gtGrenade, 0, 0, 0, 1)
+ end
+ end
+
+ if (CurrentHedgehog ~= nil) and (tumbleStarted == true) then
+
+ --AddCaption(loc("Speed: ") .. GetSpeed())
+
+ -- Calculate and display turn time
+ TimeLeftCounter = TimeLeftCounter + 1
+ if TimeLeftCounter == 1000 then
+ TimeLeftCounter = 0
+ TimeLeft = TimeLeft - 1
+
+ if TimeLeft >= 0 then
+ --TurnTimeLeft = TimeLeft
+ AddCaption(loc("Time Left: ") .. TimeLeft)
+ end
+
+ end
+
+ --if TimeLeft >= 0 then
+ -- --TurnTimeLeft = TimeLeft
+ -- AddCaption(loc("Time Left: ") .. TimeLeft)
+ --end
+
+ --ShowMission(loc("TUMBLER"), loc("v0.2"), loc("Speed: ") .. GetSpeed() .. "|" .. loc("Ammo: ") .. shotsLeft, 4, 0)
+
+ if TimeLeft == 0 then
+ stopMovement = true
+ upOn = false
+ down = false
+ leftOn = false
+ rightOn = false
+ end
+
+
+
+
+ -- handle movement based on IO
+ moveTimer = moveTimer + 1
+ if moveTimer == 100 then -- 100
+ moveTimer = 0
+
+ dx, dy = GetGearVelocity(CurrentHedgehog)
+
+ dxlimit = 0.4
+ dylimit = 0.4
+
+ if dx > dxlimit then
+ dx = dxlimit
+ end
+ if dy > dylimit then
+ dy = dylimit
+ end
+ if dx < -dxlimit then
+ dx = -dxlimit
+ end
+ if dy < -dylimit then
+ dy = -dylimit
+ end
+
+
+ if leftOn == true then
+ dx = dx - 0.1
+ end
+ if rightOn == true then
+ dx = dx + 0.1
+ end
+
+ if upOn == true then
+ dy = dy - 0.1
+ end
+ if downOn == true then
+ dy = dy + 0.1
+ end
+
+ --if leftOn == true then
+ -- dx = dx - 0.04
+ --end
+ --if rightOn == true then
+ -- dx = dx + 0.04
+ --end
+
+ --if upOn == true then
+ -- dy = dy - 0.1
+ --end
+ --if downOn == true then
+ -- dy = dy + 0.06
+ --end
+
+ SetGearVelocity(CurrentHedgehog, dx, dy)
+
+ end
+
+
+
+
+
+
+
+ end
+
+
+
+end
+
+
+function onGearDamage(gear, damage)
+ if gear == CurrentHedgehog then
+ -- You are now tumbling
+ end
+end
+
+
+function onGearAdd(gear)
+end
+
+function onGearDelete(gear)
+
+ if CurrentHedgehog ~= nil then
+ FollowGear(CurrentHedgehog)
+ end
+
+end
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Scripts/Tracker.lua
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/share/hedgewars/Data/Scripts/Tracker.lua Tue Feb 01 00:18:25 2011 +0100
@@ -0,0 +1,288 @@
+-- Library for keeping track of gears in the game
+-- and running functions on them
+-- also keeps track of clans and teams
+
+local trackingTeams = false
+local resurrecting = false
+local gears = {}
+local teams = {}
+local clans = {}
+local resurrectedHogs = {}
+local gearValues = {}
+local teamValues = {}
+local clanValues = {}
+
+-- Registers when a gear is added
+function trackGear(gear)
+ table.insert(gears, gear)
+ if trackingTeams and GetGearType(gear) == gtResurrector then
+ resurrecting = true
+ elseif resurrecting and GetGearType(gear) == gtHedgehog then
+ table.insert(resurrectedHogs, gear)
+ end
+end
+
+-- Registers when a gear is deleted
+function trackDeletion(gear)
+ gearValues[gear] = nil
+ for k, g in ipairs(gears) do
+ if g == gear then
+ table.remove(gears, k)
+ break
+ end
+ end
+ if trackingTeams and GetGearType(gear) == gtHedgehog then
+ for team, hogs in pairs(teams) do
+ if team == GetHogTeamName(gear) then
+ if table.maxn(hogs) == 1 then
+ hogs = nil
+ else
+ for k, hog in ipairs(hogs) do
+ if hog == gear then
+ table.remove(hogs, k)
+ break
+ end
+ end
+ end
+ break
+ end
+ end
+ elseif resurrecting and GetGearType(gear) == gtResurrector then
+ for k, gear in ipairs(resurrectedHogs) do
+ team = GetHogTeamName(gear)
+ if teams[team] == nil then
+ teams[team] = {}
+ end
+ table.insert(teams[team], gear)
+ end
+ resurrecting = false
+ resurrectedHogs = {}
+ end
+end
+
+-- Not needed?
+-- Registers when a gear is resurrected
+--function trackResurrection(gear)
+-- if trackingTeams then
+-- if GetGearType(gear) == gtHedgehog then
+-- found = false
+-- for team, hogs in pairs(teams) do
+-- if team == GetHogTeamName(gear) then
+-- table.insert(hogs, gear)
+-- found = true
+-- end
+-- end
+-- if not found then
+-- teams[GetHogTeamName(gear)] = { gear }
+-- end
+-- end
+-- end
+--end
+
+-- Start to keep track of teams
+function trackTeams()
+ if not trackingTeams then
+ trackingTeams = true
+ for k, gear in ipairs(gears) do
+ if GetGearType(gear) == gtHedgehog then
+ team = GetHogTeamName(gear)
+ if teams[team] == nil then
+ teams[team] = { gear }
+ clans[team] = GetHogClan(gear)
+ else
+ table.insert(teams[team], gear)
+ end
+ end
+ end
+ end
+end
+
+-- Get a value for a specific gear
+function getGearValue(gear, key)
+ if gearValues[gear] ~= nil then
+ return gearValues[gear][key]
+ end
+ return nil
+end
+
+-- Set a value for a specific gear
+function setGearValue(gear, key, value)
+ found = false
+ for id, values in pairs(gearValues) do
+ if id == gear then
+ values[key] = value
+ found = true
+ end
+ end
+ if not found then
+ gearValues[gear] = { [key] = value }
+ end
+end
+
+-- Increase a value for a specific gear
+function increaseGearValue(gear, key)
+ for id, values in pairs(gearValues) do
+ if id == gear then
+ values[key] = values[key] + 1
+ end
+ end
+end
+
+-- Decrease a value for a specific gear
+function decreaseGearValue(gear, key)
+ for id, values in pairs(gearValues) do
+ if id == gear then
+ values[key] = values[key] - 1
+ end
+ end
+end
+
+-- Get a value for a specific team
+function getTeamValue(team, key)
+ if teamValues[team] ~= nil then
+ return teamValues[team][key]
+ end
+ return nil
+end
+
+-- Set a value for a specific team
+function setTeamValue(team, key, value)
+ found = false
+ for name, values in pairs(teamValues) do
+ if name == team then
+ values[key] = value
+ found = true
+ end
+ end
+ if not found then
+ teamValues[team] = { [key] = value }
+ end
+end
+
+-- Increase a value for a specific team
+function increaseTeamValue(team, key)
+ for name, values in pairs(teamValues) do
+ if name == team then
+ values[key] = values[key] + 1
+ end
+ end
+end
+
+-- Decrease a value for a specific team
+function decreaseTeamValue(team, key)
+ for name, values in pairs(teamValues) do
+ if name == team then
+ values[key] = values[key] - 1
+ end
+ end
+end
+
+-- Get a value for a specific clan
+function getClanValue(clan, key)
+ if clanValues[clan] ~= nil then
+ return clanValues[clan][key]
+ end
+ return nil
+end
+
+-- Set a value for a specific clan
+function setClanValue(clan, key, value)
+ found = false
+ for num, values in ipairs(clanValues) do
+ if num == clan then
+ values[key] = value
+ found = true
+ end
+ end
+ if not found then
+ clanValues[clan] = { [key] = value }
+ end
+end
+
+-- Increase a value for a specific clan
+function increaseClanValue(clan, key)
+ for num, values in ipairs(clanValues) do
+ if num == clan then
+ values[key] = values[key] + 1
+ end
+ end
+end
+
+-- Decrease a value for a specific clan
+function decreaseClanValue(clan, key)
+ for num, values in ipairs(clanValues) do
+ if num == clan then
+ values[key] = values[key] - 1
+ end
+ end
+end
+
+-- Run a function on all tracked gears
+function runOnGears(func)
+ for k, gear in ipairs(gears) do
+ func(gear)
+ end
+end
+
+-- Run a function on all tracked hogs
+function runOnHogs(func)
+ for k, hogs in pairs(teams) do
+ for m, hog in ipairs(hogs) do
+ func(hog)
+ end
+ end
+end
+
+-- Run a function on hogs in a team
+function runOnHogsInTeam(func, team)
+ if teams[team] ~= nil then
+ for k, hog in ipairs(teams[team]) do
+ func(hog)
+ end
+ end
+end
+
+-- Run a function on hogs in other teams
+function runOnHogsInOtherTeams(func, team)
+ for k, hogs in pairs(teams) do
+ if k ~= team then
+ for m, hog in ipairs(hogs) do
+ func(hog)
+ end
+ end
+ end
+end
+
+-- Run a function on hogs in a clan
+function runOnHogsInClan(func, clan)
+ for i = 1, table.maxn(clans) do
+ if clans[i] == clan then
+ for k, hog in ipairs(teams[i]) do
+ func(hog)
+ end
+ end
+ end
+end
+
+-- Run a function on hogs in other clans
+function runOnHogsInOtherClans(func, clan)
+ for i = 1, table.maxn(clans) do
+ if clans[i] ~= clan then
+ for k, hog in ipairs(teams[i]) do
+ func(hog)
+ end
+ end
+ end
+end
+
+function numGears()
+ return table.maxn(gears)
+end
+
+function numTeams()
+ num = 0
+ for team, hogs in pairs(teams) do
+ num = num + 1
+ end
+ return num
+end
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Scripts/Utils.lua
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/share/hedgewars/Data/Scripts/Utils.lua Tue Feb 01 00:18:25 2011 +0100
@@ -0,0 +1,22 @@
+-- Library for miscellaneous utilitiy functions
+
+-- Check if a gear is inside a box
+function gearIsInBox(gear, x, y, w, h)
+ gx, gy = GetGearPosition(gear)
+ if gx >= x and gy >= y and gx <= x + w and gy <= y + h then
+ return true
+ end
+ return false
+end
+
+-- Check if a gear is inside a circle
+function gearIsInCircle(gear, x, y, r, useRadius)
+ gx, gy = GetGearPosition(gear)
+ if useRadius then
+ r = r + GetGearRadius(gear)
+ end
+ if r ^ 2 >= (x - gx) ^ 2 + (y - gy) ^ 2 then
+ return true
+ end
+ return false
+end
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/Art/Splash.png
Binary file share/hedgewars/Data/Themes/Art/Splash.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/Art/theme.cfg
--- a/share/hedgewars/Data/Themes/Art/theme.cfg Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Themes/Art/theme.cfg Tue Feb 01 00:18:25 2011 +0100
@@ -1,18 +1,11 @@
-7 13 40
-13 17 22
-$01 $3b $66
-$01 $3b $66 $80
-Art.ogg
-0
-4
-Soup
-3 3 220 130 18 1 0 0 142 150
-Mona
-2 0 190 191 8 1 0 0 191 150
-Schrei
-1 0 345 130 1 1 0 0 160 175
-Zeit
-2 0 153 45 5 1 90 20 106 105
-0
-0
-30 0 0 0
+sky = 7, 13, 40
+border = 13, 17, 22
+water-top = $01, $3b, $66
+water-bottom = $01, $3b, $66
+water-opacity = $80
+music = Art.ogg
+clouds = 0
+object = Soup, 3, 3, 220, 130, 18, 1, 0, 0, 142, 150
+object = Mona, 2, 0, 190, 191, 8, 1, 0, 0, 191, 150
+object = Schrei, 1, 0, 345, 130, 1, 1, 0, 0, 160, 175
+object = Zeit, 2, 0, 153, 45, 5, 1, 90, 20, 106, 105
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/Bamboo/SkyL.png
Binary file share/hedgewars/Data/Themes/Bamboo/SkyL.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/Bamboo/SkyR.png
Binary file share/hedgewars/Data/Themes/Bamboo/SkyR.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/Bamboo/theme.cfg
--- a/share/hedgewars/Data/Themes/Bamboo/theme.cfg Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Themes/Bamboo/theme.cfg Tue Feb 01 00:18:25 2011 +0100
@@ -1,18 +1,12 @@
-117 141 186
-143 171 80
-$54 $5C $9D
-$34 $3C $7D $80
-oriental.ogg
-9
-4
-Flower
-3 65 258 80 2 1 0 0 240 215
-Bamboo
-3 65 258 80 2 1 0 0 240 215
-Bamboo2
-3 65 258 80 2 1 0 0 240 215
-Bamboo3
-3 65 258 80 2 1 0 0 240 215
-0
-100
-1 1000 50 50
+sky = 117, 141, 186
+border = 143, 171, 80
+water-top = $54, $5C, $9D
+water-bottom = $34, $3C, $7D
+water-opacity = $80
+music = oriental.ogg
+clouds = 9
+object = Flower, 3, 65, 258, 80, 2, 1, 0, 0, 240, 215
+object = Bamboo, 3, 65, 258, 80, 2, 1, 0, 0, 240, 215
+object = Bamboo2, 3, 65, 258, 80, 2, 1, 0, 0, 240, 215
+object = Bamboo3, 3, 65, 258, 80, 2, 1, 0, 0, 240, 215
+flakes = 100, 1, 1000, 50, 50
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/Bath/Sky.png
Binary file share/hedgewars/Data/Themes/Bath/Sky.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/Bath/theme.cfg
--- a/share/hedgewars/Data/Themes/Bath/theme.cfg Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Themes/Bath/theme.cfg Tue Feb 01 00:18:25 2011 +0100
@@ -1,22 +1,14 @@
-255 255 237
-173 182 247
-$54 $5C $9D
-$34 $3C $7D $80
-bath.ogg
-15
-6
-Toothbrush
-3 120 245 8 15 1 90 6 65 220
-Toothbrush_g
-3 85 243 10 11 1 89 13 97 211
-Toothbrush_b
-3 113 245 8 15 1 84 6 66 218
-Duck
-3 102 253 20 4 1 48 142 150 107
-Duck2
-3 50 94 16 4 1 5 15 101 72
-Bubble
-3 37 78 3 2 1 0 0 77 44
-0
-100
-1 0 0 10
+sky = 255, 255, 237
+border = 173, 182, 247
+water-top = $54, $5C, $9D
+water-bottom = $34, $3C, $7D
+water-opacity = $80
+music = bath.ogg
+clouds = 15
+object = Toothbrush, 3, 120, 245, 8, 15, 1, 90, 6, 65, 220
+object = Toothbrush_g, 3, 85, 243, 10, 11, 1, 89, 13, 97, 211
+object = Toothbrush_b, 3, 113, 245, 8, 15, 1, 84, 6, 66, 218
+object = Duck, 3, 102, 253, 20, 4, 1, 48, 142, 150, 107
+object = Duck2, 3, 50, 94, 16, 4, 1, 5, 15, 101, 72
+object = Bubble, 3, 37, 78, 3, 2, 1, 0, 0, 77, 44
+flakes = 100, 1, 0, 0, 10
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/Blox/theme.cfg
--- a/share/hedgewars/Data/Themes/Blox/theme.cfg Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Themes/Blox/theme.cfg Tue Feb 01 00:18:25 2011 +0100
@@ -1,10 +1,8 @@
-179 243 243
-128 128 128
-$54 $5C $9D
-$34 $3C $7D $80
-Nature.ogg
-0
-0
-0
-100
-2 500 100 300
+sky = 179, 243, 243
+border = 128, 128, 128
+water-top = $54, $5C, $9D
+water-bottom = $34, $3C, $7D
+water-opacity = $80
+music = Nature.ogg
+clouds = 0
+flakes = 100, 2, 500, 100, 300
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/Brick/Splash.png
Binary file share/hedgewars/Data/Themes/Brick/Splash.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/Brick/horizont.png
Binary file share/hedgewars/Data/Themes/Brick/horizont.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/Brick/theme.cfg
--- a/share/hedgewars/Data/Themes/Brick/theme.cfg Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Themes/Brick/theme.cfg Tue Feb 01 00:18:25 2011 +0100
@@ -1,35 +1,21 @@
-11 21 80
-155 155 155
-$51 $5B $60
-$22 $2F $36 $80
-Brick.ogg
-9
-9
-plant1
-1 83 215 92 35 1 0 0 250 190
-plant2
-2 0 115 70 40 1 8 0 60 100
-plant3
-2 0 115 70 40 1 8 0 60 100
-plant4
-2 20 200 25 5 1 0 0 70 140
-plant5
-2 240 22 17 43 1 8 21 227 80
-plant6
-1 83 225 92 25 1 0 0 250 200
-plant7
-2 20 200 25 5 1 0 0 70 140
-plant8
-5 45 0 10 10 1 0 50 109 155
-plant9
-2 20 200 25 5 1 0 0 70 140
-3
-spray1
-2
-spray2
-2
-spray3
-2
-0
-20
-30 50 50 250
+sky = 11, 21, 80
+border = 155, 155, 155
+water-top = $51, $5B, $60
+water-bottom = $22, $2F, $36
+water-opacity = $80
+music = Brick.ogg
+clouds = 9
+object = plant1, 1, 83, 215, 92, 35, 1, 0, 0, 250, 190
+object = plant2, 2, 0, 115, 70, 40, 1, 8, 0, 60, 100
+object = plant3, 2, 0, 115, 70, 40, 1, 8, 0, 60, 100
+object = plant4, 2, 20, 200, 25, 5, 1, 0, 0, 70, 140
+object = plant5, 2, 240, 22, 17, 43, 1, 8, 21, 227, 80
+object = plant6, 1, 83, 225, 92, 25, 1, 0, 0, 250, 200
+object = plant7, 2, 20, 200, 25, 5, 1, 0, 0, 70, 140
+object = plant8, 5, 45, 0, 10, 10, 1, 0, 50, 109, 155
+object = plant9, 2, 20, 200, 25, 5, 1, 0, 0, 70, 140
+spray = spray1, 2
+spray = spray2, 2
+spray = spray3, 2
+;Should this theme have flakes? they where disabled
+;flakes = 20, 30, 50, 50, 250
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/Cake/Splash.png
Binary file share/hedgewars/Data/Themes/Cake/Splash.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/Cake/theme.cfg
--- a/share/hedgewars/Data/Themes/Cake/theme.cfg Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Themes/Cake/theme.cfg Tue Feb 01 00:18:25 2011 +0100
@@ -1,18 +1,12 @@
-0 0 51
-255 200 90
-$FF $DF $E1
-$FF $DF $E1 $80
-snow.ogg
-9
-4
-plant1
-3 83 215 92 35 1 0 0 250 190
-plant2
-3 118 115 41 20 1 0 0 159 110
-plant3
-3 0 115 70 40 1 8 0 60 100
-plant4
-3 20 200 25 5 1 0 0 70 150
-0
-20
-100 0 30 250
+sky = 0, 0, 51
+border = 255, 200, 90
+water-top = $FF, $DF, $E1
+water-bottom = $FF, $DF, $E1
+water-opacity = $80
+music = snow.ogg
+clouds = 9
+object = plant1, 3, 83, 215, 92, 35, 1, 0, 0, 250, 190
+object = plant2, 3, 118, 115, 41, 20, 1, 0, 0, 159, 110
+object = plant3, 3, 0, 115, 70, 40, 1, 8, 0, 60, 100
+object = plant4, 3, 20, 200, 25, 5, 1, 0, 0, 70, 150
+flakes = 20, 100, 0, 30, 250
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/Castle/SkyL.png
Binary file share/hedgewars/Data/Themes/Castle/SkyL.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/Castle/SkyR.png
Binary file share/hedgewars/Data/Themes/Castle/SkyR.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/Castle/Splash.png
Binary file share/hedgewars/Data/Themes/Castle/Splash.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/Castle/horizont.png
Binary file share/hedgewars/Data/Themes/Castle/horizont.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/Castle/theme.cfg
--- a/share/hedgewars/Data/Themes/Castle/theme.cfg Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Themes/Castle/theme.cfg Tue Feb 01 00:18:25 2011 +0100
@@ -1,18 +1,12 @@
-45 53 57
-145 145 145
-81 91 96
-81 91 96 $80
-Castle.ogg
-5
-4
-Spear
-3 65 258 175 2 1 0 0 240 215
-Shield
-3 0 165 163 2 1 0 0 163 140
-Sword
-3 240 22 17 43 1 8 21 227 80
-Axe
-3 25 195 90 65 1 40 5 195 175
-0
-25
-3 99999999 0 750
+sky = 45, 53, 57
+border = 145, 145, 145
+water-top = 81, 91, 96
+water-bottom = 81, 91, 96
+water-opacity = $80
+music = Castle.ogg
+clouds = 5
+object = Spear, 3, 65, 258, 175, 2, 1, 0, 0, 240, 215
+object = Shield, 3, 0, 165, 163, 2, 1, 0, 0, 163, 140
+object = Sword, 3, 240, 22, 17, 43, 1, 8, 21, 227, 80
+object = Axe, 3, 25, 195, 90, 65, 1, 40, 5, 195, 175
+flakes = 25, 3, 99999999, 0, 750
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/Cheese/theme.cfg
--- a/share/hedgewars/Data/Themes/Cheese/theme.cfg Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Themes/Cheese/theme.cfg Tue Feb 01 00:18:25 2011 +0100
@@ -1,19 +1,12 @@
-16 5 27
-240 175 32
-$54 $5C $9D
-$34 $3C $7D $80
-EarthRise.ogg
-9
-5
-cheese
-3 60 80 55 30 1 0 0 140 70
-mouseright
-3 85 162 60 20 1 6 6 200 140
-mouseleft
-3 60 162 63 20 1 6 6 200 140
-knife
-3 90 130 50 20 1 140 0 160 110
-fork
-3 240 130 10 30 1 0 0 170 120
-0
-0
+sky = 16, 5, 27
+border = 240, 175, 32
+water-top = $54, $5C, $9D
+water-bottom = $34, $3C, $7D
+water-opacity = $80
+music = EarthRise.ogg
+clouds = 9
+object = cheese, 3, 60, 80, 55, 30, 1, 0, 0, 140, 70
+object = mouseright, 3, 85, 162, 60, 20, 1, 6, 6, 200, 140
+object = mouseleft, 3, 60, 162, 63, 20, 1, 6, 6, 200, 140
+object = knife, 3, 90, 130, 50, 20, 1, 140, 0, 160, 110
+object = fork, 3, 240, 130, 10, 30, 1, 0, 0, 170, 120
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/Christmas/theme.cfg
--- a/share/hedgewars/Data/Themes/Christmas/theme.cfg Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Themes/Christmas/theme.cfg Tue Feb 01 00:18:25 2011 +0100
@@ -1,26 +1,16 @@
-9 14 45
-141 151 213
-$54 $5C $9D
-$34 $3C $7D $80
-snow.ogg
-9
-6
-reindeer
-1 90 232 94 12 2 55 60 90 73 80 134 105 64
-tree
-1 238 706 36 9 2 122 355 208 293 164 168 82 154
-plant2
-3 0 85 25 25 2 0 0 170 70 50 70 120 40
-plant3
-3 26 0 48 1 1 25 15 50 60
-plant4
-3 45 4 1 45 1 20 45 20 60
-Snowman
-1 38 283 119 14 1 38 21 124 216
-2
-holly
-4
-holly2
-4
-100
-3 99999999 100 300
+sky = 9, 14, 45
+border = 141, 151, 213
+water-top = $54, $5C, $9D
+water-bottom = $34, $3C, $7D
+water-opacity = $80
+music = snow.ogg
+clouds = 9
+object = reindeer, 1, 90, 232, 94, 12, 2, 55, 60, 90, 73, 80, 134, 105, 64
+object = tree, 1, 238, 706, 36, 9, 2, 122, 355, 208, 293, 164, 168, 82, 154
+object = plant2, 3, 0, 85, 25, 25, 2, 0, 0, 170, 70, 50, 70, 120, 40
+object = plant3, 3, 26, 0, 48, 1, 1, 25, 15, 50, 60
+object = plant4, 3, 45, 4, 1, 45, 1, 20, 45, 20, 60
+object = Snowman, 1, 38, 283, 119, 14, 1, 38, 21, 124, 216
+spray = holly, 4
+spray = holly2, 4
+flakes = 100, 3, 99999999, 100, 300
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/City/theme.cfg
--- a/share/hedgewars/Data/Themes/City/theme.cfg Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Themes/City/theme.cfg Tue Feb 01 00:18:25 2011 +0100
@@ -1,19 +1,12 @@
-21 20 38
-128 0 0
-$54 $5C $9D
-$34 $3C $7D
-$80
-City.ogg
-45
-4
-plant1
-3 200 344 54 2 1 0 0 160 215
-plant2
-3 32 165 65 2 1 0 0 163 140
-plant3
-3 45 0 14 1 1 23 9 54 57
-plant4
-3 99 8 1 38 1 42 7 42 103
-0
-1500
-0 0 0 2000
+sky = 21, 20, 38
+border = 128, 0, 0
+water-top = $54, $5C, $9D
+water-bottom = $34, $3C, $7D
+water-opacity = $80
+music = City.ogg
+clouds = 45
+object = plant1, 3, 200, 344, 54, 2, 1, 0, 0, 160, 215
+object = plant2, 3, 32, 165, 65, 2, 1, 0, 0, 163, 140
+object = plant3, 3, 45, 0, 14, 1, 1, 23, 9, 54, 57
+object = plant4, 3, 99, 8, 1, 38, 1, 42, 7, 42, 103
+flakes = 1500, 0, 0, 0, 2000
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/Compost/Splash.png
Binary file share/hedgewars/Data/Themes/Compost/Splash.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/Compost/theme.cfg
--- a/share/hedgewars/Data/Themes/Compost/theme.cfg Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Themes/Compost/theme.cfg Tue Feb 01 00:18:25 2011 +0100
@@ -1,34 +1,20 @@
-92 151 253
-52 38 23
-$41 $23 $12
-$33 $21 $9 $FF
-Compost.ogg
-16
-8
-Eggshell1
-3 48 92 78 37 1 0 0 125 47
-Eggshell2
-3 40 65 80 50 1 0 0 120 50
-Onion1
-3 0 65 90 30 1 0 0 75 50
-Onion2
-3 35 80 75 40 2 0 0 30 50 0 36 30 50
-Cucumber1
-3 0 100 75 40 1 80 0 89 95
-Cucumber2
-3 0 70 125 45 1 0 0 70 55
-Carrot1
-3 65 0 40 30 1 0 100 100 100
-Carrot2
-3 0 30 40 35 1 80 65 100 100
-4
-Cucumber3
-1
-Cucumber4
-1
-Carrot3
-1
-Carrot4
-1
-100
-1 130 0 5
+sky = 92, 151, 253
+border = 52, 38, 23
+water-top = $41, $23, $12
+water-bottom = $33, $21, $9
+water-opacity = $FF
+music = Compost.ogg
+clouds = 16
+object = Eggshell1, 3, 48, 92, 78, 37, 1, 0, 0, 125, 47
+object = Eggshell2, 3, 40, 65, 80, 50, 1, 0, 0, 120, 50
+object = Onion1, 3, 0, 65, 90, 30, 1, 0, 0, 75, 50
+object = Onion2, 3, 35, 80, 75, 40, 2, 0, 0, 30, 50, 0, 36, 30, 50
+object = Cucumber1, 3, 0, 100, 75, 40, 1, 80, 0, 89, 95
+object = Cucumber2, 3, 0, 70, 125, 45, 1, 0, 0, 70, 55
+object = Carrot1, 3, 65, 0, 40, 30, 1, 0, 100, 100, 100
+object = Carrot2, 3, 0, 30, 40, 35, 1, 80, 65, 100, 100
+spray = Cucumber3, 1
+spray = Cucumber4, 1
+spray = Carrot3, 1
+spray = Carrot4, 1
+flakes = 100, 1, 130, 0, 5
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/CrazyMission/SkyL.png
Binary file share/hedgewars/Data/Themes/CrazyMission/SkyL.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/CrazyMission/SkyR.png
Binary file share/hedgewars/Data/Themes/CrazyMission/SkyR.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/CrazyMission/Splash.png
Binary file share/hedgewars/Data/Themes/CrazyMission/Splash.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/CrazyMission/horizont.png
Binary file share/hedgewars/Data/Themes/CrazyMission/horizont.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/CrazyMission/theme.cfg
--- a/share/hedgewars/Data/Themes/CrazyMission/theme.cfg Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Themes/CrazyMission/theme.cfg Tue Feb 01 00:18:25 2011 +0100
@@ -1,9 +1,7 @@
-20 23 24
-20 23 24
-21 57 76
-21 57 76 $80
-snow.ogg
-4
-0
-0
-0
\ No newline at end of file
+sky = 20, 23, 24
+border = 20, 23, 24
+water-top = 21, 57, 76
+water-bottom = 21, 57, 76
+water-opacity = $80
+music = snow.ogg
+clouds = 4
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/Deepspace/Sky.png
Binary file share/hedgewars/Data/Themes/Deepspace/Sky.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/Deepspace/Splash.png
Binary file share/hedgewars/Data/Themes/Deepspace/Splash.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/Deepspace/horizont.png
Binary file share/hedgewars/Data/Themes/Deepspace/horizont.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/Deepspace/theme.cfg
--- a/share/hedgewars/Data/Themes/Deepspace/theme.cfg Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Themes/Deepspace/theme.cfg Tue Feb 01 00:18:25 2011 +0100
@@ -1,9 +1,9 @@
-0 0 0
-175 177 75
-$2B $2B $2B
-$2A $2A $2A $CC
-hell.ogg
-9
-0
-0
-50
+sky = 0, 0, 0
+border = 175, 177, 75
+water-top = $2B, $2B, $2B
+water-bottom = $2A, $2A, $2A
+water-opacity = $CC
+music = hell.ogg
+clouds = 9
+flakes = 50, 1, 1000, 50, 50
+;1, 1000, 50, 50 are copied from bamboo theme, as these numbers are required
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/Desert/Splash.png
Binary file share/hedgewars/Data/Themes/Desert/Splash.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/Desert/theme.cfg
--- a/share/hedgewars/Data/Themes/Desert/theme.cfg Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Themes/Desert/theme.cfg Tue Feb 01 00:18:25 2011 +0100
@@ -1,26 +1,15 @@
-116 239 255
-242 230 124
-$3E $7B $94
-$35 $69 $85 $80
-Desert.ogg
-9
-7
-sand
-4 9 3 4 4 2 1 1 7 27 9 31 5 6
-sandR
-4 4 3 4 4 2 9 1 7 27 3 31 5 6
-buzzard
-1 17 318 4 21 1 51 91 289 241
-cobra
-1 65 230 57 4 1 28 0 206 202
-cactus
-3 27 440 73 10 1 0 0 258 384
-rock1
-2 75 108 73 12 1 0 0 173 99
-rock2
-5 7 18 10 1 1 0 0 24 12
-1
-cowskull
-2
-0
-1 9999 50 10
+sky = 116, 239, 255
+border = 242, 230, 124
+water-top = $3E, $7B, $94
+water-bottom = $35, $69, $85
+water-opacity = $80
+music = Desert.ogg
+clouds = 9
+object = sand, 4, 9, 3, 4, 4, 2, 1, 1, 7, 27, 9, 31, 5, 6
+object = sandR, 4, 4, 3, 4, 4, 2, 9, 1, 7, 27, 3, 31, 5, 6
+object = buzzard, 1, 17, 318, 4, 21, 1, 51, 91, 289, 241
+object = cobra, 1, 65, 230, 57, 4, 1, 28, 0, 206, 202
+object = cactus, 3, 27, 440, 73, 10, 1, 0, 0, 258, 384
+object = rock1, 2, 75, 108, 73, 12, 1, 0, 0, 173, 99
+object = rock2, 5, 7, 18, 10, 1, 1, 0, 0, 24, 12
+spray = cowskull, 2
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/EarthRise/Sky.png
Binary file share/hedgewars/Data/Themes/EarthRise/Sky.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/EarthRise/SkyL.png
Binary file share/hedgewars/Data/Themes/EarthRise/SkyL.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/EarthRise/SkyR.png
Binary file share/hedgewars/Data/Themes/EarthRise/SkyR.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/EarthRise/horizontL.png
Binary file share/hedgewars/Data/Themes/EarthRise/horizontL.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/EarthRise/horizontR.png
Binary file share/hedgewars/Data/Themes/EarthRise/horizontR.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/EarthRise/theme.cfg
--- a/share/hedgewars/Data/Themes/EarthRise/theme.cfg Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Themes/EarthRise/theme.cfg Tue Feb 01 00:18:25 2011 +0100
@@ -1,14 +1,10 @@
-0 0 0
-106 106 106
-$54 $5C $9D
-$34 $3C $7D $80
-EarthRise.ogg
-0
-2
-Rock
-3 65 258 175 2 1 0 0 240 215
-RockShort
-3 0 165 163 2 1 0 0 163 140
-0
-20
-1 0 20 0
+sky = 0, 0, 0
+border = 106, 106, 106
+water-top = $54, $5C, $9D
+water-bottom = $34, $3C, $7D
+water-opacity = $80
+music = EarthRise.ogg
+clouds = 0
+object = Rock, 3, 65, 258, 175, 2, 1, 0, 0, 240, 215
+object = RockShort, 3, 0, 165, 163, 2, 1, 0, 0, 163, 140
+flakes = 20, 1, 0, 20, 0
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/Eyes/Sky.png
Binary file share/hedgewars/Data/Themes/Eyes/Sky.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/Eyes/Splash.png
Binary file share/hedgewars/Data/Themes/Eyes/Splash.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/Eyes/horizont.png
Binary file share/hedgewars/Data/Themes/Eyes/horizont.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/Eyes/theme.cfg
--- a/share/hedgewars/Data/Themes/Eyes/theme.cfg Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Themes/Eyes/theme.cfg Tue Feb 01 00:18:25 2011 +0100
@@ -1,9 +1,9 @@
-0 0 0
-175 177 75
-$2B $2B $2B
-$2A $2A $2A $CC
-hell.ogg
-9
-0
-0
-50
+sky = 0, 0, 0
+border = 175, 177, 75
+water-top = $2B, $2B, $2B
+water-bottom = $2A, $2A, $2A
+water-opacity = $CC
+music = hell.ogg
+clouds = 9
+flakes = 50, 1, 1000, 50, 50
+;1, 1000, 50, 50 are copied from bamboo theme, as these numbers are required
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/Freeway/theme.cfg
--- a/share/hedgewars/Data/Themes/Freeway/theme.cfg Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Themes/Freeway/theme.cfg Tue Feb 01 00:18:25 2011 +0100
@@ -1,22 +1,14 @@
-99 51 43
-70 58 55
-$54 $5C $9D
-$34 $3C $7D $80
-Freeway.ogg
-9
-2
-Tire
-3 83 215 92 35 1 0 0 250 190
-AppleSmall
-3 40 0 25 1 1 0 35 100 65
-4
-TireDirt
-2
-AppleDirt
-5
-FishDirt
-4
-BottleDirt
-4
-200
-1 0 0 0
+sky = 99, 51, 43
+border = 70, 58, 55
+water-top = $54, $5C, $9D
+water-bottom = $34, $3C, $7D
+water-opacity = $80
+music = Freeway.ogg
+clouds = 9
+object = Tire, 3, 83, 215, 92, 35, 1, 0, 0, 250, 190
+object = AppleSmall, 3, 40, 0, 25, 1, 1, 0, 35, 100, 65
+spray = TireDirt, 2
+spray = AppleDirt, 5
+spray = FishDirt, 4
+spray = BottleDirt, 4
+flakes = 200, 1, 0, 0, 0
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/Halloween/SkyL.png
Binary file share/hedgewars/Data/Themes/Halloween/SkyL.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/Halloween/SkyR.png
Binary file share/hedgewars/Data/Themes/Halloween/SkyR.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/Halloween/Splash.png
Binary file share/hedgewars/Data/Themes/Halloween/Splash.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/Halloween/theme.cfg
--- a/share/hedgewars/Data/Themes/Halloween/theme.cfg Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Themes/Halloween/theme.cfg Tue Feb 01 00:18:25 2011 +0100
@@ -1,14 +1,10 @@
-16 3 8
-116 0 100
-37 91 31
-44 84 40 $80
-Halloween.ogg
-9
-2
-Rock
-3 65 258 175 2 1 0 0 240 215
-RockShort
-3 0 165 163 2 1 0 0 163 140
-0
-20
-7 130 0 5
+sky = 16, 3, 8
+border = 116, 0, 100
+water-top = 37, 91, 31
+water-bottom = 44, 84, 40
+water-opacity = $80
+music = Halloween.ogg
+clouds = 9
+object = Rock, 3, 65, 258, 175, 2, 1, 0, 0, 240, 215
+object = RockShort, 3, 0, 165, 163, 2, 1, 0, 0, 163, 140
+flakes = 20, 7, 130, 0, 5
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/Hell/Splash.png
Binary file share/hedgewars/Data/Themes/Hell/Splash.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/Hell/theme.cfg
--- a/share/hedgewars/Data/Themes/Hell/theme.cfg Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Themes/Hell/theme.cfg Tue Feb 01 00:18:25 2011 +0100
@@ -1,18 +1,12 @@
-10 10 10
-245 118 0
-$A7 $0B $0C
-$A1 $0A $0A $80
-hell.ogg
-9
-4
-plant1
-3 83 215 92 35 1 0 0 250 190
-plant2
-3 118 115 41 20 1 0 0 159 110
-plant3
-3 0 115 70 40 1 8 0 60 100
-plant4
-3 20 200 25 5 1 0 0 70 150
-0
-20
-30 0 0 250
+sky = 10, 10, 10
+border = 245, 118, 0
+water-top = $A7, $0B, $0C
+water-bottom = $A1, $0A, $0A
+water-opacity = $80
+music = hell.ogg
+clouds = 9
+object = plant1, 3, 83, 215, 92, 35, 1, 0, 0, 250, 190
+object = plant2, 3, 118, 115, 41, 20, 1, 0, 0, 159, 110
+object = plant3, 3, 0, 115, 70, 40, 1, 8, 0, 60, 100
+object = plant4, 3, 20, 200, 25, 5, 1, 0, 0, 70, 150
+flakes = 20, 30, 0, 0, 250
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/Island/theme.cfg
--- a/share/hedgewars/Data/Themes/Island/theme.cfg Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Themes/Island/theme.cfg Tue Feb 01 00:18:25 2011 +0100
@@ -1,20 +1,13 @@
-21 20 38
-242 230 124
-$54 $5C $9D
-$34 $3C $7D $80
-pirate.ogg
-9
-5
-anchor
-3 65 258 80 2 1 0 0 240 215
-plant1
-3 10 192 60 2 1 33 0 149 152
-plant2
-3 55 218 30 2 1 0 0 240 175
-plant3
-3 20 0 60 1 1 0 15 100 44
-plant4
-3 78 5 2 60 1 0 0 65 110
-0
-100
-2 500 100 300
+sky = 21, 20, 38
+border = 242, 230, 124
+water-top = $54, $5C, $9D
+water-bottom = $34, $3C, $7D
+water-opacity = $80
+music = pirate.ogg
+clouds = 9
+object = anchor, 3, 65, 258, 80, 2, 1, 0, 0, 240, 215
+object = plant1, 3, 10, 192, 60, 2, 1, 33, 0, 149, 152
+object = plant2, 3, 55, 218, 30, 2, 1, 0, 0, 240, 175
+object = plant3, 3, 20, 0, 60, 1, 1, 0, 15, 100, 44
+object = plant4, 3, 78, 5, 2, 60, 1, 0, 0, 65, 110
+flakes = 100, 2, 500, 100, 300
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/Jungle/LandTex.png
Binary file share/hedgewars/Data/Themes/Jungle/LandTex.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/Jungle/Sky.png
Binary file share/hedgewars/Data/Themes/Jungle/Sky.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/Jungle/SkyL.png
Binary file share/hedgewars/Data/Themes/Jungle/SkyL.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/Jungle/SkyR.png
Binary file share/hedgewars/Data/Themes/Jungle/SkyR.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/Jungle/theme.cfg
--- a/share/hedgewars/Data/Themes/Jungle/theme.cfg Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Themes/Jungle/theme.cfg Tue Feb 01 00:18:25 2011 +0100
@@ -1,30 +1,18 @@
-141 149 164
-75 103 25
-$A7 $6A $32
-$B3 $78 $1B $80
-oriental.ogg
-20
-7
-PalmTree
-1 141 225 25 5 1 0 0 230 190
-Flowers
-1 5 65 180 5 1 0 0 150 50
-Liana
-2 0 0 25 10 1 0 40 25 160
-Monkey
-1 20 145 60 5 1 0 0 130 130
-Snake
-1 30 95 40 5 1 0 0 110 75
-FernRight
-2 0 0 20 70 1 40 0 165 70
-FernLeft
-2 185 0 20 70 1 0 0 165 70
-3
-FlowerRed
-2
-FlowerBlue
-2
-Spider
-2
-100
-1 1000 50 50
+sky = 141, 149, 164
+border = 75, 103, 25
+water-top = $A7, $6A, $32
+water-bottom = $B3, $78, $1B
+water-opacity = $80
+music = oriental.ogg
+clouds = 20
+object = PalmTree, 1, 141, 225, 25, 5, 1, 0, 0, 230, 190
+object = Flowers, 1, 5, 65, 180, 5, 1, 0, 0, 150, 50
+object = Liana, 2, 0, 0, 25, 10, 1, 0, 40, 25, 160
+object = Monkey, 1, 20, 145, 60, 5, 1, 0, 0, 130, 130
+object = Snake, 1, 30, 95, 40, 5, 1, 0, 0, 110, 75
+object = FernRight, 2, 0, 0, 20, 70, 1, 40, 0, 165, 70
+object = FernLeft, 2, 185, 0, 20, 70, 1, 0, 0, 165, 70
+spray = FlowerRed, 2
+spray = FlowerBlue, 2
+spray = Spider, 2
+flakes = 100, 1, 1000, 50, 50
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/Nature/LandTex.png
Binary file share/hedgewars/Data/Themes/Nature/LandTex.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/Nature/theme.cfg
--- a/share/hedgewars/Data/Themes/Nature/theme.cfg Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Themes/Nature/theme.cfg Tue Feb 01 00:18:25 2011 +0100
@@ -1,33 +1,19 @@
-19 18 82
-176 51 0
-$54 $5C $9D
-$34 $3C $7D
-$80
-Nature.ogg
-9
-11
-plant1
-3 65 258 80 2 1 0 0 240 215
-plant2
-3 21 163 33 15 1 60 62 87 95
-plant3
-3 40 0 25 1 1 0 35 100 65
-plant4
-3 98 10 2 25 1 0 0 70 110
-mole
-1 0 129 161 71 1 13 0 142 99
-mole2
-1 0 129 161 71 1 13 0 142 99
-mole3
-1 0 129 161 71 1 13 0 142 99
-butterfly
-1 43 176 56 6 1 21 14 91 46
-snail
-3 51 94 52 3 1 0 0 135 87
-mushroom
-3 14 77 24 2 1 0 0 76 73
-mushroom2
-3 24 78 48 7 2 0 0 80 36 15 38 57 30
-0
-55
-40 99999999 30 200
+sky = 19, 18, 82
+border = 176, 51, 0
+water-top = $54, $5C, $9D
+water-bottom = $34, $3C, $7D
+water-opacity = $80
+music = Nature.ogg
+clouds = 9
+object = plant1, 3, 65, 258, 80, 2, 1, 0, 0, 240, 215
+object = plant2, 3, 21, 163, 33, 15, 1, 60, 62, 87, 95
+object = plant3, 3, 40, 0, 25, 1, 1, 0, 35, 100, 65
+object = plant4, 3, 98, 10, 2, 25, 1, 0, 0, 70, 110
+object = mole, 1, 0, 129, 161, 71, 1, 13, 0, 142, 99
+object = mole2, 1, 0, 129, 161, 71, 1, 13, 0, 142, 99
+object = mole3, 1, 0, 129, 161, 71, 1, 13, 0, 142, 99
+object = butterfly, 1, 43, 176, 56, 6, 1, 21, 14, 91, 46
+object = snail, 3, 51, 94, 52, 3, 1, 0, 0, 135, 87
+object = mushroom, 3, 14, 77, 24, 2, 1, 0, 0, 76, 73
+object = mushroom2, 3, 24, 78, 48, 7, 2, 0, 0, 80, 36, 15, 38, 57, 30
+flakes = 55, 40, 99999999, 30, 200
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/Olympics/theme.cfg
--- a/share/hedgewars/Data/Themes/Olympics/theme.cfg Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Themes/Olympics/theme.cfg Tue Feb 01 00:18:25 2011 +0100
@@ -1,19 +1,12 @@
-177 190 216
-204 200 168
-$54 $5C $9D
-$34 $3C $7D
-$80
-Olympics.ogg
-9
-4
-Statue
-3 42 258 115 2 1 0 0 165 240
-Column01
-3 21 258 80 2 1 0 0 110 240
-Column02
-3 12 258 76 2 1 0 0 110 240
-Column03
-3 3 173 84 2 1 0 0 90 155
-0
-50
-1 1000 0 10
+sky = 177, 190, 216
+border = 204, 200, 168
+water-top = $54, $5C, $9D
+water-bottom = $34, $3C, $7D
+water-opacity = $80
+music = Olympics.ogg
+clouds = 9
+object = Statue, 3, 42, 258, 115, 2, 1, 0, 0, 165, 240
+object = Column01, 3, 21, 258, 80, 2, 1, 0, 0, 110, 240
+object = Column02, 3, 12, 258, 76, 2, 1, 0, 0, 110, 240
+object = Column03, 3, 3, 173, 84, 2, 1, 0, 0, 90, 155
+flakes = 50, 1, 1000, 0, 10
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/Planes/theme.cfg
--- a/share/hedgewars/Data/Themes/Planes/theme.cfg Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Themes/Planes/theme.cfg Tue Feb 01 00:18:25 2011 +0100
@@ -1,9 +1,7 @@
-21 20 38
-177 175 49
-$54 $5C $9D
-$34 $3C $7D $80
-City.ogg
-9
-0
-0
-0
+sky = 21, 20, 38
+border = 177, 175, 49
+water-top = $54, $5C, $9D
+water-bottom = $34, $3C, $7D
+water-opacity = $80
+music = City.ogg
+clouds = 9
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/Sheep/theme.cfg
--- a/share/hedgewars/Data/Themes/Sheep/theme.cfg Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Themes/Sheep/theme.cfg Tue Feb 01 00:18:25 2011 +0100
@@ -1,40 +1,23 @@
-66 71 141
-0 88 0
-$54 $5C $9D
-$34 $3C $7D $80
-Sheep.ogg
-4
-7
-fleur
-3 45 127 50 3 1 0 0 120 105
-mouton1
-3 88 222 122 4 1 0 0 275 200
-mouton2
-3 84 245 125 20 1 0 0 275 200
-mouton3
-3 152 255 176 15 1 0 0 440 230
-mouton4
-3 148 245 162 20 1 0 0 440 205
-barriere
-3 34 190 300 10 1 0 0 381 140
-rocher
-3 16 90 69 3 1 0 0 110 65
-8
-grass
-7
-grass2
-7
-grassp
-7
-grassp2
-7
-fleurland
-7
-fleurland2
-7
-fleurland3
-7
-fleurland4
-7
-20
-1000 1000 25 1
+sky = 66, 71, 141
+border = 0, 88, 0
+water-top = $54, $5C, $9D
+water-bottom = $34, $3C, $7D
+water-opacity = $80
+music = Sheep.ogg
+clouds = 4
+object = fleur, 3, 45, 127, 50, 3, 1, 0, 0, 120, 105
+object = mouton1, 3, 88, 222, 122, 4, 1, 0, 0, 275, 200
+object = mouton2, 3, 84, 245, 125, 20, 1, 0, 0, 275, 200
+object = mouton3, 3, 152, 255, 176, 15, 1, 0, 0, 440, 230
+object = mouton4, 3, 148, 245, 162, 20, 1, 0, 0, 440, 205
+object = barriere, 3, 34, 190, 300, 10, 1, 0, 0, 381, 140
+object = rocher, 3, 16, 90, 69, 3, 1, 0, 0, 110, 65
+spray = grass, 7
+spray = grass2, 7
+spray = grassp, 7
+spray = grassp2, 7
+spray = fleurland, 7
+spray = fleurland2, 7
+spray = fleurland3, 7
+spray = fleurland4, 7
+flakes = 20, 1000, 1000, 25, 1
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/Snow/theme.cfg
--- a/share/hedgewars/Data/Themes/Snow/theme.cfg Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Themes/Snow/theme.cfg Tue Feb 01 00:18:25 2011 +0100
@@ -1,18 +1,12 @@
-21 20 38
-141 151 213
-$54 $5C $9D
-$34 $3C $7D $80
-snow.ogg
-9
-4
-plant1
-3 65 258 80 2 1 0 0 240 215
-plant2
-3 0 85 25 25 2 0 0 170 70 50 70 120 40
-plant3
-3 26 0 48 1 1 25 15 50 60
-plant4
-3 45 4 1 45 1 20 45 20 60
-0
-100
-3 99999999 100 300
+sky = 21, 20, 38
+border = 141, 151, 213
+water-top = $54, $5C, $9D
+water-bottom = $34, $3C, $7D
+water-opacity = $80
+music = snow.ogg
+clouds = 9
+object = plant1, 3, 65, 258, 80, 2, 1, 0, 0, 240, 215
+object = plant2, 3, 0, 85, 25, 25, 2, 0, 0, 170, 70, 50, 70, 120, 40
+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
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/Stage/SkyL.png
Binary file share/hedgewars/Data/Themes/Stage/SkyL.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/Stage/SkyR.png
Binary file share/hedgewars/Data/Themes/Stage/SkyR.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/Stage/Splash.png
Binary file share/hedgewars/Data/Themes/Stage/Splash.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/Stage/theme.cfg
--- a/share/hedgewars/Data/Themes/Stage/theme.cfg Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Themes/Stage/theme.cfg Tue Feb 01 00:18:25 2011 +0100
@@ -1,30 +1,18 @@
-0 0 0
-106 106 106
-72 105 127
-37 76 91 128
-Rock.ogg
-0
-6
-MicR
-1 0 28 7 24 1 25 0 125 52
-MicL
-1 145 27 5 25 1 0 0 110 52
-Bass
-1 243 373 20 5 1 0 0 330 310
-Light
-1 10 0 65 10 1 0 42 140 122
-Box
-1 0 170 150 8 1 0 0 150 145
-drum
-1 0 202 239 4 1 39 0 200 150
-4
-poster1
-2
-poster2
-2
-poster3
-2
-poster4
-2
-100
-3 99999999 10 20
+sky = 0, 0, 0
+border = 106, 106, 106
+water-top = 72, 105, 127
+water-bottom = 37, 76, 91
+water-opacity = 128
+music = Rock.ogg
+clouds = 0
+object = MicR, 1, 0, 28, 7, 24, 1, 25, 0, 125, 52
+object = MicL, 1, 145, 27, 5, 25, 1, 0, 0, 110, 52
+object = Bass, 1, 243, 373, 20, 5, 1, 0, 0, 330, 310
+object = Light, 1, 10, 0, 65, 10, 1, 0, 42, 140, 122
+object = Box, 1, 0, 170, 150, 8, 1, 0, 0, 150, 145
+object = drum, 1, 0, 202, 239, 4, 1, 39, 0, 200, 150
+spray = poster1, 2
+spray = poster2, 2
+spray = poster3, 2
+spray = poster4, 2
+flakes = 100, 3, 99999999, 10, 20
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/Underwater/SDClouds.png
Binary file share/hedgewars/Data/Themes/Underwater/SDClouds.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/Underwater/SDFlake.png
Binary file share/hedgewars/Data/Themes/Underwater/SDFlake.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/Underwater/Sky.png
Binary file share/hedgewars/Data/Themes/Underwater/Sky.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/Underwater/Splash.png
Binary file share/hedgewars/Data/Themes/Underwater/Splash.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/Underwater/horizont.png
Binary file share/hedgewars/Data/Themes/Underwater/horizont.png has changed
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/Themes/Underwater/theme.cfg
--- a/share/hedgewars/Data/Themes/Underwater/theme.cfg Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/Themes/Underwater/theme.cfg Tue Feb 01 00:18:25 2011 +0100
@@ -1,20 +1,15 @@
-255 255 255
-123 148 220
-0 0 0
-0 0 0 $FF
-underwater.ogg
-9
-5
-anchor
-3 65 258 80 2 1 0 0 240 215
-clam
-3 60 131 16 2 1 0 0 150 117
-crab
-3 78 256 96 2 1 3 60 237 155
-coral
-3 10 193 38 32 2 128 66 66 94 39 0 88 167
-coral2
-3 119 146 23 22 1 5 0 123 130
-0
-20
-20 150 0 5
+sky = 255, 255, 255
+border = 123, 148, 220
+water-top = 0, 0, 0
+water-bottom = 0, 0, 0
+water-opacity = $FF
+music = underwater.ogg
+clouds = 9
+object = anchor, 3, 65, 258, 80, 2, 1, 0, 0, 240, 215
+object = clam, 3, 60, 131, 16, 2, 1, 0, 0, 150, 117
+object = crab, 3, 78, 256, 96, 2, 1, 3, 60, 237, 155
+object = coral, 3, 10, 193, 38, 32, 2, 128, 66, 66, 94, 39, 0, 88, 167
+object = coral2, 3, 119, 146, 23, 22, 1, 5, 0, 123, 130
+flakes = 20, 20, 150, 0, 5
+sd-flakes = 20, 20, 150, 0, 5
+rq-sky = 0, 70, 210
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/misc/hedgewars-mimeinfo.xml
--- a/share/hedgewars/Data/misc/hedgewars-mimeinfo.xml Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/misc/hedgewars-mimeinfo.xml Tue Feb 01 00:18:25 2011 +0100
@@ -8,13 +8,14 @@
-->
Hedgewars DemoHedgewars Demo
- Hedgewars Démonstration
+ Demo de Hedgewars
+ Démonstration d'Hedgewars
+ Demo di Hedgewars
+ 헤즈와스 데모Demo gry Hedgewars
+ Hedgewars DemoDemo hry HedgewarsDemo för Hedgewars
- Demo de Hedgewars
- Demo di Hedgewars
- Hedgewars Demo
@@ -26,12 +27,14 @@
Hedgewars SaveHedgewars gespeichertes Spiel
+ Partida guardada de Hedgewars
+ Parties enregistrées d'Hedgewars
+ 헤즈와스 저장된 게임
+ Partita salvata di HedgewarsZapis gry Hedgewars
+ Partida guardada de HedgewarsUložená hra HedgewarsSparfil för Hedgewars
- Partida guardada de Hedgewars
- Partita salvata di Hedgewars
- Partida guardada de Hedgewars
diff -r 69f8431a5d20 -r efcea232bbf6 share/hedgewars/Data/misc/hwengine.desktop.in
--- a/share/hedgewars/Data/misc/hwengine.desktop.in Tue Feb 01 00:12:19 2011 +0100
+++ b/share/hedgewars/Data/misc/hwengine.desktop.in Tue Feb 01 00:18:25 2011 +0100
@@ -5,13 +5,14 @@
Name=Hedgewars Engine
GenericName=Hedgewars engine, for playback of saves and demos
GenericName[de]=Hedgewars engine, für die Wiedergabe von gespeicherten Spielen und Demos
+GenericName[es]=Motor del juego Hedgewars, reproduce demos y partidas guardadas
+GenericName[fr]=Moteur graphique d'Hedgewars, pour revoir les parties enregistrées et de démonstration.
+GenericName[it]=Motore grafico di Hedgewars, riproduce le demo e riprende le partite salvate
GenericName[pl]=Silnik gry Hedgewars do odtwarzania dem i zapisów gier
+GenericName[pt]=Motor de jogo Hedgewars, para reprodução de jogos guardados e demos
+GenericName[ru]=Движок Hedgewars для проигрывания сохранённых игр и демок
GenericName[sk]=Engine hry Hedgewars, pre prehrávanie uložených hier a demo súborov
GenericName[sv]=Hedgewarsmotorn, för att öppna demo- och sparfiler
-GenericName[es]=Motor del juego Hedgewars, reproduce demos y partidas guardadas
-GenericName[it]=Motore grafico di Hedgewars, riproduce le demo e riprende le partite salvate
-GenericName[pt]=Motor de jogo Hedgewars, para reprodução de jogos guardados e demos
-GenericName[ru]=Движок Hedgewars для проигрывания сохранённых игр и демок
Icon=hedgewars.png
Exec=${CMAKE_INSTALL_PREFIX}/bin/hwengine ${HEDGEWARS_DATADIR}/hedgewars/Data %f
Path=/tmp