Replace tabs with spaces using 'expand -t 4' command
authorunc0rr
Sat, 06 Mar 2010 10:59:20 +0000
changeset 2948 3f21a9dc93d0
parent 2947 803b277e4894
child 2949 d137a9da7701
Replace tabs with spaces using 'expand -t 4' command
QTfrontend/AutoUpdater.h
QTfrontend/CocoaInitializer.h
QTfrontend/InstallController.h
QTfrontend/KB.h
QTfrontend/M3InstallController.h
QTfrontend/M3Panel.h
QTfrontend/NSWorkspace_RBAdditions.h
QTfrontend/SDLs.cpp
QTfrontend/SDLs.h
QTfrontend/SparkleAutoUpdater.h
QTfrontend/SquareLabel.cpp
QTfrontend/SquareLabel.h
QTfrontend/about.cpp
QTfrontend/about.h
QTfrontend/ammoSchemeModel.cpp
QTfrontend/ammoSchemeModel.h
QTfrontend/bgwidget.cpp
QTfrontend/bgwidget.h
QTfrontend/binds.cpp
QTfrontend/binds.h
QTfrontend/chatwidget.cpp
QTfrontend/fpsedit.cpp
QTfrontend/fpsedit.h
QTfrontend/frameTeam.cpp
QTfrontend/game.cpp
QTfrontend/game.h
QTfrontend/gamecfgwidget.cpp
QTfrontend/gamecfgwidget.h
QTfrontend/gameuiconfig.cpp
QTfrontend/gameuiconfig.h
QTfrontend/hats.cpp
QTfrontend/hats.h
QTfrontend/hwform.cpp
QTfrontend/hwform.h
QTfrontend/hwmap.cpp
QTfrontend/igbox.cpp
QTfrontend/igbox.h
QTfrontend/input_ip.cpp
QTfrontend/input_ip.h
QTfrontend/main.cpp
QTfrontend/mapContainer.cpp
QTfrontend/misc.h
QTfrontend/namegen.cpp
QTfrontend/namegen.h
QTfrontend/netregister.h
QTfrontend/netserver.cpp
QTfrontend/netserver.h
QTfrontend/netserverslist.cpp
QTfrontend/netserverslist.h
QTfrontend/netudpwidget.cpp
QTfrontend/netudpwidget.h
QTfrontend/newnetclient.cpp
QTfrontend/pages.cpp
QTfrontend/pages.h
QTfrontend/playrecordpage.cpp
QTfrontend/playrecordpage.h
QTfrontend/predefteams.h
QTfrontend/proto.cpp
QTfrontend/proto.h
QTfrontend/sdlkeys.h
QTfrontend/selectWeapon.cpp
QTfrontend/statsPage.cpp
QTfrontend/statsPage.h
QTfrontend/tcpBase.cpp
QTfrontend/team.cpp
QTfrontend/team.h
QTfrontend/teamselect.cpp
QTfrontend/teamselhelper.cpp
QTfrontend/togglebutton.cpp
QTfrontend/togglebutton.h
QTfrontend/ui_hwform.cpp
QTfrontend/ui_hwform.h
QTfrontend/vertScrollArea.cpp
QTfrontend/vertScrollArea.h
QTfrontend/xfire.cpp
QTfrontend/xfire.h
gameServer/Actions.hs
gameServer/ServerCore.hs
gameServer/stresstest.hs
gameServer/stresstest2.hs
hedgewars/CCHandlers.inc
hedgewars/GSHandlers.inc
hedgewars/HHHandlers.inc
hedgewars/LuaPas.pas
hedgewars/PascalExports.pas
hedgewars/SDLh.pas
hedgewars/hwengine.pas
hedgewars/uAI.pas
hedgewars/uAIAmmoTests.pas
hedgewars/uAIMisc.pas
hedgewars/uAmmos.pas
hedgewars/uChat.pas
hedgewars/uCollisions.pas
hedgewars/uConsole.pas
hedgewars/uConsts.pas
hedgewars/uFloat.pas
hedgewars/uGame.pas
hedgewars/uGears.pas
hedgewars/uIO.pas
hedgewars/uKeys.pas
hedgewars/uLand.pas
hedgewars/uLandGraphics.pas
hedgewars/uLandObjects.pas
hedgewars/uLandTexture.pas
hedgewars/uLocale.pas
hedgewars/uMisc.pas
hedgewars/uRandom.pas
hedgewars/uScript.pas
hedgewars/uSound.pas
hedgewars/uStats.pas
hedgewars/uStore.pas
hedgewars/uTeams.pas
hedgewars/uTriggers.pas
hedgewars/uVisualGears.pas
hedgewars/uWorld.pas
--- a/QTfrontend/AutoUpdater.h	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/AutoUpdater.h	Sat Mar 06 10:59:20 2010 +0000
@@ -7,10 +7,10 @@
 
 class AutoUpdater
 {
-	public:
-		virtual ~AutoUpdater();
+    public:
+        virtual ~AutoUpdater();
 
-		virtual void checkForUpdates() = 0;
+        virtual void checkForUpdates() = 0;
 };
 
 #endif
--- a/QTfrontend/CocoaInitializer.h	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/CocoaInitializer.h	Sat Mar 06 10:59:20 2010 +0000
@@ -7,13 +7,13 @@
 
 class CocoaInitializer
 {
-	public:
-		CocoaInitializer();
-		~CocoaInitializer();
+    public:
+        CocoaInitializer();
+        ~CocoaInitializer();
 
-	private:
-		class Private;
-		Private* d;
+    private:
+        class Private;
+        Private* d;
                 Private* c;
 };
 
--- a/QTfrontend/InstallController.h	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/InstallController.h	Sat Mar 06 10:59:20 2010 +0000
@@ -12,10 +12,10 @@
 
 class InstallController
         {
-	public:
-		virtual ~InstallController();
+    public:
+        virtual ~InstallController();
                 
-		virtual void showInstallController() = 0;
+        virtual void showInstallController() = 0;
         };
 
 #endif
\ No newline at end of file
--- a/QTfrontend/KB.h	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/KB.h	Sat Mar 06 10:59:20 2010 +0000
@@ -25,10 +25,10 @@
 
 const QString KBMessages[KBmsgsCount] =
 {
-	QT_TRANSLATE_NOOP("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.")
+    QT_TRANSLATE_NOOP("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.")
 };
 
 #endif // KB_H
--- a/QTfrontend/M3InstallController.h	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/M3InstallController.h	Sat Mar 06 10:59:20 2010 +0000
@@ -43,7 +43,7 @@
 
 
 @interface M3InstallController : NSObject {
-	NSAlert *alert;
+    NSAlert *alert;
 }
 
 - (void)displayInstaller;
--- a/QTfrontend/M3Panel.h	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/M3Panel.h	Sat Mar 06 10:59:20 2010 +0000
@@ -14,15 +14,15 @@
 
 class M3Panel : public InstallController
         {
-	public:
-		M3Panel(void);
-		~M3Panel();
+    public:
+        M3Panel(void);
+        ~M3Panel();
                 
-		void showInstallController();
+        void showInstallController();
                 
-	private:
-		class Private;
-		Private* c;
+    private:
+        class Private;
+        Private* c;
         };
 
 #endif
--- a/QTfrontend/NSWorkspace_RBAdditions.h	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/NSWorkspace_RBAdditions.h	Sat Mar 06 10:59:20 2010 +0000
@@ -24,11 +24,11 @@
 //- NSWorkspace_RBfstypename: will always be present.Shows the filesystem type (usually "hfs"), from statfs.
 //- NSWorkspace_RBmntonname: will always be present. Shows the volume mount point.
 //- NSWorkspace_RBmntfromname: will always be present. Shows the BSD device path for local volumes; info for
-//		remote volumes depends on the filesystem type.
+//      remote volumes depends on the filesystem type.
 //- NSWorkspace_RBconnectiontype: should always be present for local volumes. Shows the connection type ("SATA", "USB", etc.).
 //- NSWorkspace_RBpartitionscheme: should always be present for local volumes. Shows the partition scheme.
 //- NSWorkspace_RBdeviceinfo: should always be present for local volumes. Shows some information about the
-//		physical device; varies widely.
+//      physical device; varies widely.
 //- NSWorkspace_RBimagefilepath: should be present for disk images only. Shows the path of the disk image file.
 //- NSWorkspace_RBserverURL: should be present for remote volumes only. Shows the server URL.
 
--- a/QTfrontend/SDLs.cpp	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/SDLs.cpp	Sat Mar 06 10:59:20 2010 +0000
@@ -34,152 +34,152 @@
 SDLInteraction::SDLInteraction()
 {
 
-	SDL_Init(SDL_INIT_VIDEO | SDL_INIT_JOYSTICK);
-	
-	musicInitialized = 0;
-	music = NULL;
-	if(SDL_NumJoysticks())
-		addGameControllerKeys();
-	SDL_QuitSubSystem(SDL_INIT_JOYSTICK);
+    SDL_Init(SDL_INIT_VIDEO | SDL_INIT_JOYSTICK);
+    
+    musicInitialized = 0;
+    music = NULL;
+    if(SDL_NumJoysticks())
+        addGameControllerKeys();
+    SDL_QuitSubSystem(SDL_INIT_JOYSTICK);
 }
 
 SDLInteraction::~SDLInteraction()
 {
-	if (musicInitialized == 1) {
-		if (music != NULL)
-			Mix_FreeMusic(music);
-		Mix_CloseAudio();
-	}
-	SDL_Quit();
+    if (musicInitialized == 1) {
+        if (music != NULL)
+            Mix_FreeMusic(music);
+        Mix_CloseAudio();
+    }
+    SDL_Quit();
 }
 
 QStringList SDLInteraction::getResolutions() const
 {
-	QStringList result;
+    QStringList result;
 
-	SDL_Rect **modes;
+    SDL_Rect **modes;
 
-	modes = SDL_ListModes(NULL, SDL_FULLSCREEN);
+    modes = SDL_ListModes(NULL, SDL_FULLSCREEN);
 
-	if((modes == (SDL_Rect **)0) || (modes == (SDL_Rect **)-1))
-	{
-		result << "640x480";
-	} else
-	{
-		for(int i = 0; modes[i]; ++i)
-			if ((modes[i]->w >= 640) && (modes[i]->h >= 480))
-				result << QString("%1x%2").arg(modes[i]->w).arg(modes[i]->h);
-	}
+    if((modes == (SDL_Rect **)0) || (modes == (SDL_Rect **)-1))
+    {
+        result << "640x480";
+    } else
+    {
+        for(int i = 0; modes[i]; ++i)
+            if ((modes[i]->w >= 640) && (modes[i]->h >= 480))
+                result << QString("%1x%2").arg(modes[i]->w).arg(modes[i]->h);
+    }
 
-	return result;
+    return result;
 }
 
 void SDLInteraction::addGameControllerKeys() const
 {
-	QStringList result;
+    QStringList result;
 
-	int i = 0;
-	while(i < 1024 && sdlkeys[i][1][0] != '\0')
-		i++;
+    int i = 0;
+    while(i < 1024 && sdlkeys[i][1][0] != '\0')
+        i++;
 
-	// Iterate through all game controllers
-	for(int jid = 0; jid < SDL_NumJoysticks(); jid++)
-	{
-		SDL_Joystick* joy = SDL_JoystickOpen(jid);
-		
-		// Retrieve the game controller's name and strip "Controller (...)" that's added by some drivers (English only)
-		QString joyname = QString(SDL_JoystickName(jid)).replace(QRegExp("^Controller \\((.*)\\)$"), "\\1");
+    // Iterate through all game controllers
+    for(int jid = 0; jid < SDL_NumJoysticks(); jid++)
+    {
+        SDL_Joystick* joy = SDL_JoystickOpen(jid);
+        
+        // Retrieve the game controller's name and strip "Controller (...)" that's added by some drivers (English only)
+        QString joyname = QString(SDL_JoystickName(jid)).replace(QRegExp("^Controller \\((.*)\\)$"), "\\1");
 
-		// Connected Xbox 360 controller? Use specific button names then
-		// Might be interesting to add 'named' buttons for the most often used gamepads
-		bool isxb = joyname.contains("Xbox 360");
+        // Connected Xbox 360 controller? Use specific button names then
+        // Might be interesting to add 'named' buttons for the most often used gamepads
+        bool isxb = joyname.contains("Xbox 360");
 
-		// This part of the string won't change for multiple keys/hats, so keep it
-		QString prefix = QString("%1 (%2): ").arg(joyname).arg(jid + 1);
+        // This part of the string won't change for multiple keys/hats, so keep it
+        QString prefix = QString("%1 (%2): ").arg(joyname).arg(jid + 1);
 
-		// Register entries for missing axes not assigned to sticks of this joystick/gamepad
-		for(int aid = 0; aid < SDL_JoystickNumAxes(joy) && i < 1021; aid++)
-		{
-			// Again store the part of the string not changing for multiple uses
-			QString axis = prefix + QApplication::translate("binds (keys)", "Axis") + QString(" %1 ").arg(aid + 1);
-			
-			// Entry for "Axis Up"
-			sprintf(sdlkeys[i][0], "j%da%du", jid, aid);
-			sprintf(sdlkeys[i++][1], "%s", ((isxb && aid < 5) ? (prefix + QApplication::translate("binds (keys)", xbox360axes[aid * 2])) : axis + QApplication::translate("binds (keys)", "(Up)")).toStdString().c_str());
+        // Register entries for missing axes not assigned to sticks of this joystick/gamepad
+        for(int aid = 0; aid < SDL_JoystickNumAxes(joy) && i < 1021; aid++)
+        {
+            // Again store the part of the string not changing for multiple uses
+            QString axis = prefix + QApplication::translate("binds (keys)", "Axis") + QString(" %1 ").arg(aid + 1);
+            
+            // Entry for "Axis Up"
+            sprintf(sdlkeys[i][0], "j%da%du", jid, aid);
+            sprintf(sdlkeys[i++][1], "%s", ((isxb && aid < 5) ? (prefix + QApplication::translate("binds (keys)", xbox360axes[aid * 2])) : axis + QApplication::translate("binds (keys)", "(Up)")).toStdString().c_str());
 
-			// Entry for "Axis Down"
-			sprintf(sdlkeys[i][0], "j%da%dd", jid, aid);
-			sprintf(sdlkeys[i++][1], "%s", ((isxb && aid < 5) ? (prefix + QApplication::translate("binds (keys)", xbox360axes[aid * 2 + 1])) : axis + QApplication::translate("binds (keys)", "(Down)")).toStdString().c_str());
-		}
+            // Entry for "Axis Down"
+            sprintf(sdlkeys[i][0], "j%da%dd", jid, aid);
+            sprintf(sdlkeys[i++][1], "%s", ((isxb && aid < 5) ? (prefix + QApplication::translate("binds (keys)", xbox360axes[aid * 2 + 1])) : axis + QApplication::translate("binds (keys)", "(Down)")).toStdString().c_str());
+        }
 
-		// Register entries for all coolie hats of this joystick/gamepad
-		for(int hid = 0; hid < SDL_JoystickNumHats(joy) && i < 1019; hid++)
-		{
-			// Again store the part of the string not changing for multiple uses
-			QString hat = prefix + (isxb ? (QApplication::translate("binds (keys)", xb360dpad) + QString(" ")) : QApplication::translate("binds (keys)", "Hat") + QString(" %1 ").arg(hid + 1));
+        // Register entries for all coolie hats of this joystick/gamepad
+        for(int hid = 0; hid < SDL_JoystickNumHats(joy) && i < 1019; hid++)
+        {
+            // Again store the part of the string not changing for multiple uses
+            QString hat = prefix + (isxb ? (QApplication::translate("binds (keys)", xb360dpad) + QString(" ")) : QApplication::translate("binds (keys)", "Hat") + QString(" %1 ").arg(hid + 1));
 
-			// Entry for "Hat Up"
-			sprintf(sdlkeys[i][0], "j%dh%du", jid, hid);			
-			sprintf(sdlkeys[i++][1], "%s", (hat + QApplication::translate("binds (keys)", "(Up)")).toStdString().c_str());
+            // Entry for "Hat Up"
+            sprintf(sdlkeys[i][0], "j%dh%du", jid, hid);            
+            sprintf(sdlkeys[i++][1], "%s", (hat + QApplication::translate("binds (keys)", "(Up)")).toStdString().c_str());
 
-			// Entry for "Hat Down"
-			sprintf(sdlkeys[i][0], "j%dh%dd", jid, hid);			
-			sprintf(sdlkeys[i++][1], "%s", (hat + QApplication::translate("binds (keys)", "(Down)")).toStdString().c_str());
+            // Entry for "Hat Down"
+            sprintf(sdlkeys[i][0], "j%dh%dd", jid, hid);            
+            sprintf(sdlkeys[i++][1], "%s", (hat + QApplication::translate("binds (keys)", "(Down)")).toStdString().c_str());
 
-			// Entry for "Hat Left"
-			sprintf(sdlkeys[i][0], "j%dh%dl", jid, hid);			
-			sprintf(sdlkeys[i++][1], "%s", (hat + QApplication::translate("binds (keys)", "(Left)")).toStdString().c_str());
+            // Entry for "Hat Left"
+            sprintf(sdlkeys[i][0], "j%dh%dl", jid, hid);            
+            sprintf(sdlkeys[i++][1], "%s", (hat + QApplication::translate("binds (keys)", "(Left)")).toStdString().c_str());
 
-			// Entry for "Hat Right"
-			sprintf(sdlkeys[i][0], "j%dh%dr", jid, hid);			
-			sprintf(sdlkeys[i++][1], "%s", (hat + QApplication::translate("binds (keys)", "(Right)")).toStdString().c_str());
-		}
-		
-		// Register entries for all buttons of this joystick/gamepad
-		for(int bid = 0; bid < SDL_JoystickNumButtons(joy) && i < 1022; bid++)
-		{
-			// Buttons
-			sprintf(sdlkeys[i][0], "j%db%d", jid, bid);			
-			sprintf(sdlkeys[i++][1], "%s", (prefix + ((isxb && bid < 10) ? (QApplication::translate("binds (keys)", xb360buttons[bid]) + QString(" ")) : QApplication::translate("binds (keys)", "Button") + QString(" %1").arg(bid + 1))).toStdString().c_str());
-		}
-		// Close the game controller as we no longer need it
-		SDL_JoystickClose(joy);
-	}
-	
-	// Terminate the list
-	sdlkeys[i][0][0] = '\0';
-	sdlkeys[i][1][0] = '\0';
+            // Entry for "Hat Right"
+            sprintf(sdlkeys[i][0], "j%dh%dr", jid, hid);            
+            sprintf(sdlkeys[i++][1], "%s", (hat + QApplication::translate("binds (keys)", "(Right)")).toStdString().c_str());
+        }
+        
+        // Register entries for all buttons of this joystick/gamepad
+        for(int bid = 0; bid < SDL_JoystickNumButtons(joy) && i < 1022; bid++)
+        {
+            // Buttons
+            sprintf(sdlkeys[i][0], "j%db%d", jid, bid);         
+            sprintf(sdlkeys[i++][1], "%s", (prefix + ((isxb && bid < 10) ? (QApplication::translate("binds (keys)", xb360buttons[bid]) + QString(" ")) : QApplication::translate("binds (keys)", "Button") + QString(" %1").arg(bid + 1))).toStdString().c_str());
+        }
+        // Close the game controller as we no longer need it
+        SDL_JoystickClose(joy);
+    }
+    
+    // Terminate the list
+    sdlkeys[i][0][0] = '\0';
+    sdlkeys[i][1][0] = '\0';
 }
 
 void SDLInteraction::SDLMusicInit()
 {
-	if (musicInitialized == 0) {
-		SDL_Init(SDL_INIT_AUDIO);
-		Mix_OpenAudio(44100, MIX_DEFAULT_FORMAT, 2, 1024);
-		musicInitialized = 1;
-	}
+    if (musicInitialized == 0) {
+        SDL_Init(SDL_INIT_AUDIO);
+        Mix_OpenAudio(44100, MIX_DEFAULT_FORMAT, 2, 1024);
+        musicInitialized = 1;
+    }
 }
 
 
 void SDLInteraction::StartMusic()
 {
-	SDLMusicInit();
+    SDLMusicInit();
 
-	if (music == NULL) {
-		music = Mix_LoadMUS((datadir->absolutePath() + "/Music/main theme.ogg").toLocal8Bit().constData());
-	
-	}
-	Mix_VolumeMusic(MIX_MAX_VOLUME - 28);
-	Mix_FadeInMusic(music, -1, 1750);
+    if (music == NULL) {
+        music = Mix_LoadMUS((datadir->absolutePath() + "/Music/main theme.ogg").toLocal8Bit().constData());
+    
+    }
+    Mix_VolumeMusic(MIX_MAX_VOLUME - 28);
+    Mix_FadeInMusic(music, -1, 1750);
 }
 
 void SDLInteraction::StopMusic()
 {
-	if (music != NULL) {
-		// fade out music to finish 0,5 seconds from now
-		while(!Mix_FadeOutMusic(1000) && Mix_PlayingMusic()) {
-			SDL_Delay(100);
-		}
-	}
+    if (music != NULL) {
+        // fade out music to finish 0,5 seconds from now
+        while(!Mix_FadeOutMusic(1000) && Mix_PlayingMusic()) {
+            SDL_Delay(100);
+        }
+    }
 }
 
--- a/QTfrontend/SDLs.h	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/SDLs.h	Sat Mar 06 10:59:20 2010 +0000
@@ -28,20 +28,20 @@
 
 class SDLInteraction : public QObject
 {
-	Q_OBJECT
+    Q_OBJECT
 
 private:
-	Mix_Music *music;
-	int musicInitialized;	
+    Mix_Music *music;
+    int musicInitialized;   
 
 public:
-	SDLInteraction();
-	~SDLInteraction();
-	QStringList getResolutions() const;
-	void addGameControllerKeys() const;
-	void StartMusic();
-	void StopMusic();
-	void SDLMusicInit();	
+    SDLInteraction();
+    ~SDLInteraction();
+    QStringList getResolutions() const;
+    void addGameControllerKeys() const;
+    void StartMusic();
+    void StopMusic();
+    void SDLMusicInit();    
 };
 
 
--- a/QTfrontend/SparkleAutoUpdater.h	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/SparkleAutoUpdater.h	Sat Mar 06 10:59:20 2010 +0000
@@ -11,15 +11,15 @@
 
 class SparkleAutoUpdater : public AutoUpdater
 {
-	public:
-		SparkleAutoUpdater(const QString& url);
-		~SparkleAutoUpdater();
+    public:
+        SparkleAutoUpdater(const QString& url);
+        ~SparkleAutoUpdater();
 
-		void checkForUpdates();
+        void checkForUpdates();
 
-	private:
-		class Private;
-		Private* d;
+    private:
+        class Private;
+        Private* d;
 };
 
 #endif
--- a/QTfrontend/SquareLabel.cpp	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/SquareLabel.cpp	Sat Mar 06 10:59:20 2010 +0000
@@ -22,27 +22,27 @@
 #include "hwform.h"
 
 SquareLabel::SquareLabel(QWidget * parent) :
-	QWidget(parent)
+    QWidget(parent)
 {
     if(frontendEffects) setAttribute(Qt::WA_PaintOnScreen, true);
 }
 
 void SquareLabel::paintEvent(QPaintEvent * event)
 {
-	QPainter painter(this);
-	int pixsize;
-	if (width() > height()) {
-		pixsize = height();
-		painter.translate((width() - pixsize) / 2, 0);
-	} else {
-		pixsize = width();
-		painter.translate(0, (height() - pixsize) / 2);
-	}
-	painter.drawPixmap(0, 0, pixsize, pixsize, pixmap.scaled(pixsize, pixsize, Qt::KeepAspectRatio));
+    QPainter painter(this);
+    int pixsize;
+    if (width() > height()) {
+        pixsize = height();
+        painter.translate((width() - pixsize) / 2, 0);
+    } else {
+        pixsize = width();
+        painter.translate(0, (height() - pixsize) / 2);
+    }
+    painter.drawPixmap(0, 0, pixsize, pixsize, pixmap.scaled(pixsize, pixsize, Qt::KeepAspectRatio));
 }
 
 void SquareLabel::setPixmap(const QPixmap & pixmap)
 {
-	this->pixmap = pixmap;
-	repaint();
+    this->pixmap = pixmap;
+    repaint();
 }
--- a/QTfrontend/SquareLabel.h	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/SquareLabel.h	Sat Mar 06 10:59:20 2010 +0000
@@ -24,17 +24,17 @@
 
 class SquareLabel : public QWidget
 {
-	Q_OBJECT
+    Q_OBJECT
 
 public:
-	SquareLabel(QWidget * parent = 0);
+    SquareLabel(QWidget * parent = 0);
 
-	void setPixmap(const QPixmap & pixmap);
+    void setPixmap(const QPixmap & pixmap);
 protected:
-	virtual void paintEvent(QPaintEvent * event);
+    virtual void paintEvent(QPaintEvent * event);
 
 private:
-	QPixmap pixmap;
+    QPixmap pixmap;
 
 };
 
--- a/QTfrontend/about.cpp	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/about.cpp	Sat Mar 06 10:59:20 2010 +0000
@@ -25,7 +25,7 @@
 About::About(QWidget * parent) :
   QWidget(parent)
 {
-	QGridLayout *mainLayout = new QGridLayout(this);
+    QGridLayout *mainLayout = new QGridLayout(this);
         QLabel *imageLabel = new QLabel;
         QImage image(":/res/Hedgehog.png");
 
@@ -38,97 +38,97 @@
         imageLabel->setMaximumHeight(300);
         mainLayout->addWidget(imageLabel, 0, 0, 2, 1);
 
-	QLabel *lbl1 = new QLabel(this);
+    QLabel *lbl1 = new QLabel(this);
 
-	lbl1->setOpenExternalLinks(true);
-	lbl1->setText(
+    lbl1->setOpenExternalLinks(true);
+    lbl1->setText(
             "<style type=\"text/css\">"
             "a { color: #ffcc00; }"
 //            "a:hover { color: yellow; }"
             "</style>"
-			"<div align=\"center\"><h1>Hedgewars</h1>"
-			"<h3>" + QLabel::tr("Version") + " " + *cVersionString + "</h3>"
-			"<p><a href=\"http://www.hedgewars.org/\">http://www.hedgewars.org/</a></p><br>" +
-			QLabel::tr("This program is distributed under the GNU General Public License") +
-			"</div>"
-			);
-	lbl1->setWordWrap(true);
-	mainLayout->addWidget(lbl1, 0, 1);
+            "<div align=\"center\"><h1>Hedgewars</h1>"
+            "<h3>" + QLabel::tr("Version") + " " + *cVersionString + "</h3>"
+            "<p><a href=\"http://www.hedgewars.org/\">http://www.hedgewars.org/</a></p><br>" +
+            QLabel::tr("This program is distributed under the GNU General Public License") +
+            "</div>"
+            );
+    lbl1->setWordWrap(true);
+    mainLayout->addWidget(lbl1, 0, 1);
 
-	QTextBrowser *lbl2 = new QTextBrowser(this);
+    QTextBrowser *lbl2 = new QTextBrowser(this);
 
-	lbl2->setOpenExternalLinks(true);
-	lbl2->setText(
+    lbl2->setOpenExternalLinks(true);
+    lbl2->setText(
             "<style type=\"text/css\">"
             "a { color: #ffcc00; }"
 //            "a:hover { color: yellow; }"
             "</style>" +
             QString("<h2>") +
-			QLabel::tr("Developers:") +
-			"</h2><p>"
-			"Engine, frontend, net server: Andrey Korotaev &lt;<a href=\"mailto:unC0Rr@gmail.com\">unC0Rr@gmail.com</a>&gt;<br>"
-			"Many frontend improvements: Igor Ulyanov &lt;<a href=\"mailto:disinbox@gmail.com\">disinbox@gmail.com</a>&gt;<br>"
-			"Many engine and frontend improvements: Derek Pomery &lt;<a href=\"mailto:nemo@m8y.org\">nemo@m8y.org</a>&gt;<br>"
-			"Drill rocket, Ballgun, RC Plane weapons: Martin Boze &lt;<a href=\"mailto:afffect@gmail.com\">afffect@gmail.com</a>&gt;<br>"
-			"Mine number and time game settings: David A. Cuadrado &lt;<a href=\"mailto:krawek@gmail.com\">krawek@gmail.com</a>&gt;<br>"
-			"Frontend improvements: Martin Minarik &lt;<a href=\"mailto:ttsmj@pokec.sk\">ttsmj@pokec.sk</a>&gt;<br>"
-			"Frontend improvements: Kristian Lehmann &lt;<a href=\"mailto:email@thexception.net\">email@thexception.net</a>&gt;<br>"
-			"Mac OS X port, OpenAL wrapper library: Vittorio Giovara &lt;<a href=\"mailto:vittorio.giovara@gmail.com\">vittorio.giovara@gmail.com</a>&gt;<br>"
-			"Gamepad support and additional effects: Mario Liebisch &lt;<a href=\"mailto:mario.liebisch@googlemail.com\">mario.liebisch@googlemail.com</a>&gt;"
-			"</p><h2>" +
+            QLabel::tr("Developers:") +
+            "</h2><p>"
+            "Engine, frontend, net server: Andrey Korotaev &lt;<a href=\"mailto:unC0Rr@gmail.com\">unC0Rr@gmail.com</a>&gt;<br>"
+            "Many frontend improvements: Igor Ulyanov &lt;<a href=\"mailto:disinbox@gmail.com\">disinbox@gmail.com</a>&gt;<br>"
+            "Many engine and frontend improvements: Derek Pomery &lt;<a href=\"mailto:nemo@m8y.org\">nemo@m8y.org</a>&gt;<br>"
+            "Drill rocket, Ballgun, RC Plane weapons: Martin Boze &lt;<a href=\"mailto:afffect@gmail.com\">afffect@gmail.com</a>&gt;<br>"
+            "Mine number and time game settings: David A. Cuadrado &lt;<a href=\"mailto:krawek@gmail.com\">krawek@gmail.com</a>&gt;<br>"
+            "Frontend improvements: Martin Minarik &lt;<a href=\"mailto:ttsmj@pokec.sk\">ttsmj@pokec.sk</a>&gt;<br>"
+            "Frontend improvements: Kristian Lehmann &lt;<a href=\"mailto:email@thexception.net\">email@thexception.net</a>&gt;<br>"
+            "Mac OS X port, OpenAL wrapper library: Vittorio Giovara &lt;<a href=\"mailto:vittorio.giovara@gmail.com\">vittorio.giovara@gmail.com</a>&gt;<br>"
+            "Gamepad support and additional effects: Mario Liebisch &lt;<a href=\"mailto:mario.liebisch@googlemail.com\">mario.liebisch@googlemail.com</a>&gt;"
+            "</p><h2>" +
 
-			QLabel::tr("Art:") + "</h2>"
-			+ QString::fromUtf8(
-			"<p>Finn Brice &lt;<a href=\"mailto:tiyuri@gmail.com\">tiyuri@gmail.com</a>&gt;"
-			"<br>"
-			"Joshua Frese &lt;<a href=\"mailto:joshfrese@gmail.com\">joshfrese@gmail.com</a>&gt;"
-			"<br>"
-			"Stanko Tadić &lt;<a href=\"mailto:stanko@mfhinc.net\">stanko@mfhinc.net</a>&gt;"
-			"<br>"
-			"Julien Koesten &lt;<a href=\"mailto:julienkoesten@aol.com\">julienkoesten@aol.com</a>&gt;"
-			"<br>"
-			"Joshua O'Sullivan &lt;<a href=\"mailto:battysausage@hotmail.co.uk\">battysausage@hotmail.co.uk</a>&gt;"
-			"<br>"
-			"Nils Lück &lt;<a href=\"mailto:nils.luck.design@gmail.com\">nils.luck.design@gmail.com</a>&gt;"
-			"<br>"
-			"Hats: Trey Perry &lt;<a href=\"mailto:tx.perry.j@gmail.com\">tx.perry.j@gmail.com</a>&gt;"
-			"</p><h2>") +
-			QLabel::tr("Sounds:") + "</h2>"
-			"Hedgehogs voice: Stephen Alexander &lt;<a href=\"mailto:ArmagonNo1@gmail.com\">ArmagonNo1@gmail.com</a>&gt;"
-			"<br>"
-			"Finn Brice &lt;<a href=\"mailto:tiyuri@gmail.com\">tiyuri@gmail.com</a>&gt;"
-			"<br>"
-			"Jonatan Nilsson &lt;<a href=\"mailto:jonatanfan@gmail.com\">jonatanfan@gmail.com</a>&gt;"
-			"<br>"
-			"Daniel Martin &lt;<a href=\"mailto:elhombresinremedio@gmail.com\">elhombresinremedio@gmail.com</a>&gt;"
-			"</p><h2>" +
+            QLabel::tr("Art:") + "</h2>"
+            + QString::fromUtf8(
+            "<p>Finn Brice &lt;<a href=\"mailto:tiyuri@gmail.com\">tiyuri@gmail.com</a>&gt;"
+            "<br>"
+            "Joshua Frese &lt;<a href=\"mailto:joshfrese@gmail.com\">joshfrese@gmail.com</a>&gt;"
+            "<br>"
+            "Stanko Tadić &lt;<a href=\"mailto:stanko@mfhinc.net\">stanko@mfhinc.net</a>&gt;"
+            "<br>"
+            "Julien Koesten &lt;<a href=\"mailto:julienkoesten@aol.com\">julienkoesten@aol.com</a>&gt;"
+            "<br>"
+            "Joshua O'Sullivan &lt;<a href=\"mailto:battysausage@hotmail.co.uk\">battysausage@hotmail.co.uk</a>&gt;"
+            "<br>"
+            "Nils Lück &lt;<a href=\"mailto:nils.luck.design@gmail.com\">nils.luck.design@gmail.com</a>&gt;"
+            "<br>"
+            "Hats: Trey Perry &lt;<a href=\"mailto:tx.perry.j@gmail.com\">tx.perry.j@gmail.com</a>&gt;"
+            "</p><h2>") +
+            QLabel::tr("Sounds:") + "</h2>"
+            "Hedgehogs voice: Stephen Alexander &lt;<a href=\"mailto:ArmagonNo1@gmail.com\">ArmagonNo1@gmail.com</a>&gt;"
+            "<br>"
+            "Finn Brice &lt;<a href=\"mailto:tiyuri@gmail.com\">tiyuri@gmail.com</a>&gt;"
+            "<br>"
+            "Jonatan Nilsson &lt;<a href=\"mailto:jonatanfan@gmail.com\">jonatanfan@gmail.com</a>&gt;"
+            "<br>"
+            "Daniel Martin &lt;<a href=\"mailto:elhombresinremedio@gmail.com\">elhombresinremedio@gmail.com</a>&gt;"
+            "</p><h2>" +
 
-			QLabel::tr("Translations:") + "</h2><p>"
-			+ QString::fromUtf8(
-			"Brazilian Portuguese: Romulo Fernandes Machado &lt;<a href=\"mailto:abra185@gmail.com\">abra185@gmail.com</a>&gt;<br>"
-			"Bulgarian: Svetoslav Stefanov<br>"
-			"Czech: Petr Řezáček &lt;<a href=\"mailto:rezacek@gmail.com\">rezacek@gmail.com</a>&gt;<br>"
-			"Chinese: Jie Luo &lt;<a href=\"mailto:lililjlj@gmail.com\">lililjlj@gmail.com</a>&gt;<br>"
-			"English: Andrey Korotaev &lt;<a href=\"mailto:unC0Rr@gmail.com\">unC0Rr@gmail.com</a>&gt;<br>"
-			"Finnish: Nina Kuisma &lt;<a href=\"mailto:ninnnu@gmail.com\">ninnnu@gmail.com</a>&gt;<br>"
-			"French: Antoine Turmel &lt;<a href=\"mailto:geekshadow@gmail.com\">geekshadow@gmail.com</a>&gt;<br>"
-			"German: Peter Hüwe &lt;<a href=\"mailto:PeterHuewe@gmx.de\">PeterHuewe@gmx.de</a>&gt;<br>"
-			"Italian: Luca Bonora &lt;<a href=\"mailto:bonora.luca@gmail.com\">bonora.luca@gmail.com</a>&gt;<br>"
-			"Japanese: ADAM Etienne &lt;<a href=\"mailto:etienne.adam@gmail.com\">etienne.adam@gmail.com</a>&gt;<br>"
-			"Polish: Maciej Mroziński &lt;<a href=\"mailto:mynick2@o2.pl\">mynick2@o2.pl</a>&gt;, Wojciech Latkowski &lt;<a href=\"mailto:magik_15l@poczta.fm\">magik_15l@poczta.fm</a>&gt;, Maciej Górny<br>"
-			"Russian: Andrey Korotaev &lt;<a href=\"mailto:unC0Rr@gmail.com\">unC0Rr@gmail.com</a>&gt;<br>"
-			"Slovak: Jose Riha<br>"
-			"Spanish: Carlos Vives &lt;<a href=\"mailto:mail@carlosvives.es\">mail@carlosvives.es</a>&gt;<br>"
-			"Swedish: Niklas Grahn &lt;<a href=\"mailto:raewolusjoon@yaoo.com\">raewolusjoon@yaoo.com</a>&gt;<br>"
-			"Ukrainian: Eugene V. Lyubimkin &lt;<a href=\"mailto:jackyf.devel@gmail.com\">jackyf.devel@gmail.com</a>&gt;"
-			"</p><h2>") +
+            QLabel::tr("Translations:") + "</h2><p>"
+            + QString::fromUtf8(
+            "Brazilian Portuguese: Romulo Fernandes Machado &lt;<a href=\"mailto:abra185@gmail.com\">abra185@gmail.com</a>&gt;<br>"
+            "Bulgarian: Svetoslav Stefanov<br>"
+            "Czech: Petr Řezáček &lt;<a href=\"mailto:rezacek@gmail.com\">rezacek@gmail.com</a>&gt;<br>"
+            "Chinese: Jie Luo &lt;<a href=\"mailto:lililjlj@gmail.com\">lililjlj@gmail.com</a>&gt;<br>"
+            "English: Andrey Korotaev &lt;<a href=\"mailto:unC0Rr@gmail.com\">unC0Rr@gmail.com</a>&gt;<br>"
+            "Finnish: Nina Kuisma &lt;<a href=\"mailto:ninnnu@gmail.com\">ninnnu@gmail.com</a>&gt;<br>"
+            "French: Antoine Turmel &lt;<a href=\"mailto:geekshadow@gmail.com\">geekshadow@gmail.com</a>&gt;<br>"
+            "German: Peter Hüwe &lt;<a href=\"mailto:PeterHuewe@gmx.de\">PeterHuewe@gmx.de</a>&gt;<br>"
+            "Italian: Luca Bonora &lt;<a href=\"mailto:bonora.luca@gmail.com\">bonora.luca@gmail.com</a>&gt;<br>"
+            "Japanese: ADAM Etienne &lt;<a href=\"mailto:etienne.adam@gmail.com\">etienne.adam@gmail.com</a>&gt;<br>"
+            "Polish: Maciej Mroziński &lt;<a href=\"mailto:mynick2@o2.pl\">mynick2@o2.pl</a>&gt;, Wojciech Latkowski &lt;<a href=\"mailto:magik_15l@poczta.fm\">magik_15l@poczta.fm</a>&gt;, Maciej Górny<br>"
+            "Russian: Andrey Korotaev &lt;<a href=\"mailto:unC0Rr@gmail.com\">unC0Rr@gmail.com</a>&gt;<br>"
+            "Slovak: Jose Riha<br>"
+            "Spanish: Carlos Vives &lt;<a href=\"mailto:mail@carlosvives.es\">mail@carlosvives.es</a>&gt;<br>"
+            "Swedish: Niklas Grahn &lt;<a href=\"mailto:raewolusjoon@yaoo.com\">raewolusjoon@yaoo.com</a>&gt;<br>"
+            "Ukrainian: Eugene V. Lyubimkin &lt;<a href=\"mailto:jackyf.devel@gmail.com\">jackyf.devel@gmail.com</a>&gt;"
+            "</p><h2>") +
 
-			QLabel::tr("Special thanks:") + "</h2><p>"
-			"Aleksey Andreev &lt;<a href=\"mailto:blaknayabr@gmail.com\">blaknayabr@gmail.com</a>&gt;<br>"
-			"Aleksander Rudalev &lt;<a href=\"mailto:alexv@pomorsu.ru\">alexv@pomorsu.ru</a>&gt;<br>"
-			"Natasha Stafeeva &lt;<a href=\"mailto:layout@pisem.net\">layout@pisem.net</a>&gt;<br>"
-			"Adam Higerd (aka ahigerd at FreeNode)"
-			"</p>"
-			);
-	mainLayout->addWidget(lbl2, 1, 1);
+            QLabel::tr("Special thanks:") + "</h2><p>"
+            "Aleksey Andreev &lt;<a href=\"mailto:blaknayabr@gmail.com\">blaknayabr@gmail.com</a>&gt;<br>"
+            "Aleksander Rudalev &lt;<a href=\"mailto:alexv@pomorsu.ru\">alexv@pomorsu.ru</a>&gt;<br>"
+            "Natasha Stafeeva &lt;<a href=\"mailto:layout@pisem.net\">layout@pisem.net</a>&gt;<br>"
+            "Adam Higerd (aka ahigerd at FreeNode)"
+            "</p>"
+            );
+    mainLayout->addWidget(lbl2, 1, 1);
 }
--- a/QTfrontend/about.h	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/about.h	Sat Mar 06 10:59:20 2010 +0000
@@ -24,10 +24,10 @@
 
 class About : public QWidget
 {
-	Q_OBJECT
+    Q_OBJECT
 
 public:
-	About(QWidget * parent = 0);
+    About(QWidget * parent = 0);
 };
 
 #endif // _ABOUT_H
--- a/QTfrontend/ammoSchemeModel.cpp	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/ammoSchemeModel.cpp	Sat Mar 06 10:59:20 2010 +0000
@@ -23,370 +23,370 @@
 #include "hwconsts.h"
 
 QList<QVariant> defaultScheme = QList<QVariant>()
-		<< QVariant("Default")     // name           0
-		<< QVariant(false)         // fortsmode      1
-		<< QVariant(false)         // team divide    2
-		<< QVariant(false)         // solid land     3
-		<< QVariant(false)         // border         4
-		<< QVariant(false)         // low gravity    5
-		<< QVariant(false)         // laser sight    6
-		<< QVariant(false)         // invulnerable   7
-		<< QVariant(true)          // add mines      8
-		<< QVariant(false)         // vampiric       9
-		<< QVariant(false)         // karma          10
-		<< QVariant(false)         // artillery      11
-		<< QVariant(true)          // random order   12
-		<< QVariant(false)         // king           13
-		<< QVariant(false)         // place hog      14
-		<< QVariant(false)         // shared ammo    15
-		<< QVariant(false)		   //disable girders 16
-		<< QVariant(100)           // damage modfier 17
-		<< QVariant(45)            // turn time      18
-		<< QVariant(100)           // init health    19
-		<< QVariant(15)            // sudden death   20
-		<< QVariant(5)             // case prob      21
-		<< QVariant(3)             //  mines time    22
-		<< QVariant(4)             //  landadds      23
-		<< QVariant(0)             // mine dud pct   24
-		<< QVariant(2)             // explosives     25
-		;
+        << QVariant("Default")     // name           0
+        << QVariant(false)         // fortsmode      1
+        << QVariant(false)         // team divide    2
+        << QVariant(false)         // solid land     3
+        << QVariant(false)         // border         4
+        << QVariant(false)         // low gravity    5
+        << QVariant(false)         // laser sight    6
+        << QVariant(false)         // invulnerable   7
+        << QVariant(true)          // add mines      8
+        << QVariant(false)         // vampiric       9
+        << QVariant(false)         // karma          10
+        << QVariant(false)         // artillery      11
+        << QVariant(true)          // random order   12
+        << QVariant(false)         // king           13
+        << QVariant(false)         // place hog      14
+        << QVariant(false)         // shared ammo    15
+        << QVariant(false)         //disable girders 16
+        << QVariant(100)           // damage modfier 17
+        << QVariant(45)            // turn time      18
+        << QVariant(100)           // init health    19
+        << QVariant(15)            // sudden death   20
+        << QVariant(5)             // case prob      21
+        << QVariant(3)             //  mines time    22
+        << QVariant(4)             //  landadds      23
+        << QVariant(0)             // mine dud pct   24
+        << QVariant(2)             // explosives     25
+        ;
 
 AmmoSchemeModel::AmmoSchemeModel(QObject* parent, const QString & fileName) :
-	QAbstractTableModel(parent),
-	numberOfDefaultSchemes(4),
-	fileConfig(fileName, QSettings::IniFormat)
+    QAbstractTableModel(parent),
+    numberOfDefaultSchemes(4),
+    fileConfig(fileName, QSettings::IniFormat)
 {
-	QStringList predefSchemesNames;
-	predefSchemesNames
-		<< "Default"
-		<< "Pro mode"
-		<< "Shoppa"
-		<< "Basketball"
-		<< "Minefield";
+    QStringList predefSchemesNames;
+    predefSchemesNames
+        << "Default"
+        << "Pro mode"
+        << "Shoppa"
+        << "Basketball"
+        << "Minefield";
 
-	spNames = QStringList()
-		<< "name"             //  0
-		<< "fortsmode"        //  1
-		<< "divteams"         //  2
-		<< "solidland"        //  3
-		<< "border"           //  4
-		<< "lowgrav"          //  5
-		<< "laser"            //  6
-		<< "invulnerability"  //  7
-		<< "mines"            //  8
-		<< "vampiric"         //  9
-		<< "karma"            // 10
-		<< "artillery"        // 11
-		<< "randomorder"      // 12
-		<< "king"             // 13
-		<< "placehog"         // 14
-		<< "sharedammo"       // 15
-		<< "disablegirders"	  // 16
-		<< "damagefactor"     // 17
-		<< "turntime"         // 18
-		<< "health"           // 19
-		<< "suddendeath"      // 20
-		<< "caseprobability"  // 21
-		<< "minestime"        // 22
-		<< "landadds"         // 23
-		<< "minedudpct"       // 24
-		<< "explosives"       // 25
-		;
+    spNames = QStringList()
+        << "name"             //  0
+        << "fortsmode"        //  1
+        << "divteams"         //  2
+        << "solidland"        //  3
+        << "border"           //  4
+        << "lowgrav"          //  5
+        << "laser"            //  6
+        << "invulnerability"  //  7
+        << "mines"            //  8
+        << "vampiric"         //  9
+        << "karma"            // 10
+        << "artillery"        // 11
+        << "randomorder"      // 12
+        << "king"             // 13
+        << "placehog"         // 14
+        << "sharedammo"       // 15
+        << "disablegirders"   // 16
+        << "damagefactor"     // 17
+        << "turntime"         // 18
+        << "health"           // 19
+        << "suddendeath"      // 20
+        << "caseprobability"  // 21
+        << "minestime"        // 22
+        << "landadds"         // 23
+        << "minedudpct"       // 24
+        << "explosives"       // 25
+        ;
 
-	QList<QVariant> proMode;
-	proMode
-		<< predefSchemesNames[1]   // name           0
-		<< QVariant(false)         // fortsmode      1
-		<< QVariant(false)         // team divide    2
-		<< QVariant(false)         // solid land     3
-		<< QVariant(false)         // border         4
-		<< QVariant(false)         // low gravity    5
-		<< QVariant(false)         // laser sight    6
-		<< QVariant(false)         // invulnerable   7
-		<< QVariant(false)         // add mines      8
-		<< QVariant(false)         // vampiric       9
-		<< QVariant(false)         // karma          10
-		<< QVariant(false)         // artillery      11
-		<< QVariant(true)          // random order   12
-		<< QVariant(false)         // king           13
-		<< QVariant(false)         // place hog      14
-		<< QVariant(true)          // shared ammo    15
-		<< QVariant(false)		   //disable girders 16
-		<< QVariant(100)           // damage modfier 17
-		<< QVariant(15)            // turn time      18
-		<< QVariant(100)           // init health    19
-		<< QVariant(15)            // sudden death   20
-		<< QVariant(0)             // case prob      21
-		<< QVariant(3)             //  mines time    22
-		<< QVariant(4)             //  landadds      23
-		<< QVariant(0)             // mine dud pct   24
-		<< QVariant(2)             // explosives     25
-		;
+    QList<QVariant> proMode;
+    proMode
+        << predefSchemesNames[1]   // name           0
+        << QVariant(false)         // fortsmode      1
+        << QVariant(false)         // team divide    2
+        << QVariant(false)         // solid land     3
+        << QVariant(false)         // border         4
+        << QVariant(false)         // low gravity    5
+        << QVariant(false)         // laser sight    6
+        << QVariant(false)         // invulnerable   7
+        << QVariant(false)         // add mines      8
+        << QVariant(false)         // vampiric       9
+        << QVariant(false)         // karma          10
+        << QVariant(false)         // artillery      11
+        << QVariant(true)          // random order   12
+        << QVariant(false)         // king           13
+        << QVariant(false)         // place hog      14
+        << QVariant(true)          // shared ammo    15
+        << QVariant(false)         //disable girders 16
+        << QVariant(100)           // damage modfier 17
+        << QVariant(15)            // turn time      18
+        << QVariant(100)           // init health    19
+        << QVariant(15)            // sudden death   20
+        << QVariant(0)             // case prob      21
+        << QVariant(3)             //  mines time    22
+        << QVariant(4)             //  landadds      23
+        << QVariant(0)             // mine dud pct   24
+        << QVariant(2)             // explosives     25
+        ;
 
-	QList<QVariant> shoppa;
-	shoppa
-		<< predefSchemesNames[2]   // name           0
-		<< QVariant(false)         // fortsmode      1
-		<< QVariant(false)         // team divide    2
-		<< QVariant(true)          // solid land     3
-		<< QVariant(true)          // border         4
-		<< QVariant(false)         // low gravity    5
-		<< QVariant(false)         // laser sight    6
-		<< QVariant(false)         // invulnerable   7
-		<< QVariant(false)         // add mines      8
-		<< QVariant(false)         // vampiric       9
-		<< QVariant(false)         // karma          10
-		<< QVariant(false)         // artillery      11
-		<< QVariant(true)          // random order   12
-		<< QVariant(false)         // king           13
-		<< QVariant(false)         // place hog      14
-		<< QVariant(true)          // shared ammo    15
-		<< QVariant(true)		   //disable girders 16
-		<< QVariant(100)           // damage modfier 17
-		<< QVariant(30)            // turn time      18
-		<< QVariant(100)           // init health    19
-		<< QVariant(50)            // sudden death   20
-		<< QVariant(1)             // case prob      21
-		<< QVariant(3)             //  mines time    22
-		<< QVariant(4)             //  landadds      23
-		<< QVariant(0)             // mine dud pct   24
-		<< QVariant(0)             // explosives     25
-		;
+    QList<QVariant> shoppa;
+    shoppa
+        << predefSchemesNames[2]   // name           0
+        << QVariant(false)         // fortsmode      1
+        << QVariant(false)         // team divide    2
+        << QVariant(true)          // solid land     3
+        << QVariant(true)          // border         4
+        << QVariant(false)         // low gravity    5
+        << QVariant(false)         // laser sight    6
+        << QVariant(false)         // invulnerable   7
+        << QVariant(false)         // add mines      8
+        << QVariant(false)         // vampiric       9
+        << QVariant(false)         // karma          10
+        << QVariant(false)         // artillery      11
+        << QVariant(true)          // random order   12
+        << QVariant(false)         // king           13
+        << QVariant(false)         // place hog      14
+        << QVariant(true)          // shared ammo    15
+        << QVariant(true)          //disable girders 16
+        << QVariant(100)           // damage modfier 17
+        << QVariant(30)            // turn time      18
+        << QVariant(100)           // init health    19
+        << QVariant(50)            // sudden death   20
+        << QVariant(1)             // case prob      21
+        << QVariant(3)             //  mines time    22
+        << QVariant(4)             //  landadds      23
+        << QVariant(0)             // mine dud pct   24
+        << QVariant(0)             // explosives     25
+        ;
 
-	QList<QVariant> basketball;
-	basketball
-		<< predefSchemesNames[3]   // name           0
-		<< QVariant(false)         // fortsmode      1
-		<< QVariant(false)         // team divide    2
-		<< QVariant(true)          // solid land     3
-		<< QVariant(true)          // border         4
-		<< QVariant(true)          // low gravity    5
-		<< QVariant(false)         // laser sight    6
-		<< QVariant(true)          // invulnerable   7
-		<< QVariant(false)         // add mines      8
-		<< QVariant(false)         // vampiric       9
-		<< QVariant(false)         // karma          10
-		<< QVariant(false)         // artillery      11
-		<< QVariant(true)          // random order   12
-		<< QVariant(false)         // king           13
-		<< QVariant(false)         // place hog      14
-		<< QVariant(true)          // shared ammo    15
-		<< QVariant(true)		   //disable girders 16
-		<< QVariant(100)           // damage modfier 17
-		<< QVariant(30)            // turn time      18
-		<< QVariant(100)           // init health    19
-		<< QVariant(15)            // sudden death   20
-		<< QVariant(0)             // case prob      21
-		<< QVariant(3)             //  mines time    22
-		<< QVariant(4)             //  landadds      23
-		<< QVariant(0)             // mine dud pct   24
-		<< QVariant(0)             // explosives     25
-		;
+    QList<QVariant> basketball;
+    basketball
+        << predefSchemesNames[3]   // name           0
+        << QVariant(false)         // fortsmode      1
+        << QVariant(false)         // team divide    2
+        << QVariant(true)          // solid land     3
+        << QVariant(true)          // border         4
+        << QVariant(true)          // low gravity    5
+        << QVariant(false)         // laser sight    6
+        << QVariant(true)          // invulnerable   7
+        << QVariant(false)         // add mines      8
+        << QVariant(false)         // vampiric       9
+        << QVariant(false)         // karma          10
+        << QVariant(false)         // artillery      11
+        << QVariant(true)          // random order   12
+        << QVariant(false)         // king           13
+        << QVariant(false)         // place hog      14
+        << QVariant(true)          // shared ammo    15
+        << QVariant(true)          //disable girders 16
+        << QVariant(100)           // damage modfier 17
+        << QVariant(30)            // turn time      18
+        << QVariant(100)           // init health    19
+        << QVariant(15)            // sudden death   20
+        << QVariant(0)             // case prob      21
+        << QVariant(3)             //  mines time    22
+        << QVariant(4)             //  landadds      23
+        << QVariant(0)             // mine dud pct   24
+        << QVariant(0)             // explosives     25
+        ;
 
-	QList<QVariant> minefield;
-	minefield
-		<< predefSchemesNames[4]   // name           0
-		<< QVariant(false)         // fortsmode      1
-		<< QVariant(false)         // team divide    2
-		<< QVariant(false)         // solid land     3
-		<< QVariant(false)         // border         4
-		<< QVariant(false)         // low gravity    5
-		<< QVariant(false)         // laser sight    6
-		<< QVariant(false)         // invulnerable   7
-		<< QVariant(true)          // add mines      8
-		<< QVariant(false)         // vampiric       9
-		<< QVariant(false)         // karma          10
-		<< QVariant(false)         // artillery      11
-		<< QVariant(true)          // random order   12
-		<< QVariant(false)         // king           13
-		<< QVariant(false)         // place hog      14
-		<< QVariant(true)          // shared ammo    15
-		<< QVariant(true)		   //disable girders 16
-		<< QVariant(150)           // damage modfier 17
-		<< QVariant(30)            // turn time      18
-		<< QVariant(50)            // init health    19
-		<< QVariant(15)            // sudden death   20
-		<< QVariant(0)             // case prob      21
-		<< QVariant(0)             //  mines time    22
-		<< QVariant(80)            //  landadds      23
-		<< QVariant(0)             // mine dud pct   24
-		<< QVariant(0)             // explosives     25
-		;
+    QList<QVariant> minefield;
+    minefield
+        << predefSchemesNames[4]   // name           0
+        << QVariant(false)         // fortsmode      1
+        << QVariant(false)         // team divide    2
+        << QVariant(false)         // solid land     3
+        << QVariant(false)         // border         4
+        << QVariant(false)         // low gravity    5
+        << QVariant(false)         // laser sight    6
+        << QVariant(false)         // invulnerable   7
+        << QVariant(true)          // add mines      8
+        << QVariant(false)         // vampiric       9
+        << QVariant(false)         // karma          10
+        << QVariant(false)         // artillery      11
+        << QVariant(true)          // random order   12
+        << QVariant(false)         // king           13
+        << QVariant(false)         // place hog      14
+        << QVariant(true)          // shared ammo    15
+        << QVariant(true)          //disable girders 16
+        << QVariant(150)           // damage modfier 17
+        << QVariant(30)            // turn time      18
+        << QVariant(50)            // init health    19
+        << QVariant(15)            // sudden death   20
+        << QVariant(0)             // case prob      21
+        << QVariant(0)             //  mines time    22
+        << QVariant(80)            //  landadds      23
+        << QVariant(0)             // mine dud pct   24
+        << QVariant(0)             // explosives     25
+        ;
 
-	schemes.append(defaultScheme);
-	schemes.append(proMode);
-	schemes.append(shoppa);
-	schemes.append(basketball);
-	schemes.append(minefield);
+    schemes.append(defaultScheme);
+    schemes.append(proMode);
+    schemes.append(shoppa);
+    schemes.append(basketball);
+    schemes.append(minefield);
 
 
-	int size = fileConfig.beginReadArray("schemes");
-	for (int i = 0; i < size; ++i) {
-		fileConfig.setArrayIndex(i);
+    int size = fileConfig.beginReadArray("schemes");
+    for (int i = 0; i < size; ++i) {
+        fileConfig.setArrayIndex(i);
 
-		if (!predefSchemesNames.contains(fileConfig.value(spNames[0]).toString()))
-		{
-			QList<QVariant> scheme;
+        if (!predefSchemesNames.contains(fileConfig.value(spNames[0]).toString()))
+        {
+            QList<QVariant> scheme;
 
-			for (int k = 0; k < spNames.size(); ++k)
-				scheme << fileConfig.value(spNames[k], defaultScheme[k]);
+            for (int k = 0; k < spNames.size(); ++k)
+                scheme << fileConfig.value(spNames[k], defaultScheme[k]);
 
-			schemes.append(scheme);
-		}
-	}
-	fileConfig.endArray();
+            schemes.append(scheme);
+        }
+    }
+    fileConfig.endArray();
 }
 
 QVariant AmmoSchemeModel::headerData(int section, Qt::Orientation orientation, int role) const
 {
-	return QVariant();
+    return QVariant();
 }
 
 int AmmoSchemeModel::rowCount(const QModelIndex &parent) const
 {
-	if (parent.isValid())
-		return 0;
-	else
-		return schemes.size();
+    if (parent.isValid())
+        return 0;
+    else
+        return schemes.size();
 }
 
 int AmmoSchemeModel::columnCount(const QModelIndex & parent) const
 {
-	if (parent.isValid())
-		return 0;
-	else
-		return defaultScheme.size();
+    if (parent.isValid())
+        return 0;
+    else
+        return defaultScheme.size();
 }
 
 Qt::ItemFlags AmmoSchemeModel::flags(const QModelIndex & index) const
 {
-	return
-		Qt::ItemIsEnabled
-		| Qt::ItemIsSelectable
-		| Qt::ItemIsEditable;
+    return
+        Qt::ItemIsEnabled
+        | Qt::ItemIsSelectable
+        | Qt::ItemIsEditable;
 }
 
 bool AmmoSchemeModel::setData(const QModelIndex & index, const QVariant & value, int role)
 {
-	if (!index.isValid() || index.row() < numberOfDefaultSchemes
-		|| index.row() >= schemes.size()
-		|| index.column() >= defaultScheme.size()
-		|| role != Qt::EditRole)
-		return false;
+    if (!index.isValid() || index.row() < numberOfDefaultSchemes
+        || index.row() >= schemes.size()
+        || index.column() >= defaultScheme.size()
+        || role != Qt::EditRole)
+        return false;
 
-	schemes[index.row()][index.column()] = value;
+    schemes[index.row()][index.column()] = value;
 
-	emit dataChanged(index, index);
-	return true;
+    emit dataChanged(index, index);
+    return true;
 }
 
 bool AmmoSchemeModel::insertRows(int row, int count, const QModelIndex & parent)
 {
-	beginInsertRows(parent, row, row);
+    beginInsertRows(parent, row, row);
 
-	QList<QVariant> newScheme = defaultScheme;
-	newScheme[0] = QVariant(tr("new"));
+    QList<QVariant> newScheme = defaultScheme;
+    newScheme[0] = QVariant(tr("new"));
 
-	schemes.insert(row, newScheme);
+    schemes.insert(row, newScheme);
 
-	endInsertRows();
+    endInsertRows();
 
-	return true;
+    return true;
 }
 
 bool AmmoSchemeModel::removeRows(int row, int count, const QModelIndex & parent)
 {
-	if(count != 1
-		|| row < numberOfDefaultSchemes
-		|| row >= schemes.size())
-		return false;
+    if(count != 1
+        || row < numberOfDefaultSchemes
+        || row >= schemes.size())
+        return false;
 
-	beginRemoveRows(parent, row, row);
+    beginRemoveRows(parent, row, row);
 
-	schemes.removeAt(row);
+    schemes.removeAt(row);
 
-	endRemoveRows();
+    endRemoveRows();
 
-	return true;
+    return true;
 }
 
 QVariant AmmoSchemeModel::data(const QModelIndex &index, int role) const
 {
-	if (!index.isValid() || index.row() < 0
-		|| index.row() >= schemes.size()
-		|| index.column() >= defaultScheme.size()
-		|| (role != Qt::EditRole && role != Qt::DisplayRole)
-		)
-		return QVariant();
+    if (!index.isValid() || index.row() < 0
+        || index.row() >= schemes.size()
+        || index.column() >= defaultScheme.size()
+        || (role != Qt::EditRole && role != Qt::DisplayRole)
+        )
+        return QVariant();
 
-	return schemes[index.row()][index.column()];
+    return schemes[index.row()][index.column()];
 }
 
 void AmmoSchemeModel::Save()
 {
-	fileConfig.beginWriteArray("schemes", schemes.size());
+    fileConfig.beginWriteArray("schemes", schemes.size());
 
-	for (int i = 0; i < schemes.size(); ++i) {
-		fileConfig.setArrayIndex(i);
+    for (int i = 0; i < schemes.size(); ++i) {
+        fileConfig.setArrayIndex(i);
 
-		QList<QVariant> scheme = schemes[i];
+        QList<QVariant> scheme = schemes[i];
 
-		for (int k = 0; k < scheme.size(); ++k)
-			fileConfig.setValue(spNames[k], scheme[k]);
-	}
-	fileConfig.endArray();
+        for (int k = 0; k < scheme.size(); ++k)
+            fileConfig.setValue(spNames[k], scheme[k]);
+    }
+    fileConfig.endArray();
 }
 
 
 NetAmmoSchemeModel::NetAmmoSchemeModel(QObject * parent) :
-	QAbstractTableModel(parent)
+    QAbstractTableModel(parent)
 {
-	netScheme = defaultScheme;
+    netScheme = defaultScheme;
 }
 
 QVariant NetAmmoSchemeModel::headerData(int section, Qt::Orientation orientation, int role) const
 {
-	return QVariant();
+    return QVariant();
 }
 
 int NetAmmoSchemeModel::rowCount(const QModelIndex & parent) const
 {
-	if (parent.isValid())
-		return 0;
-	else
-		return 1;
+    if (parent.isValid())
+        return 0;
+    else
+        return 1;
 }
 
 int NetAmmoSchemeModel::columnCount(const QModelIndex & parent) const
 {
-	if (parent.isValid())
-		return 0;
-	else
-		return defaultScheme.size();
+    if (parent.isValid())
+        return 0;
+    else
+        return defaultScheme.size();
 }
 
 QVariant NetAmmoSchemeModel::data(const QModelIndex &index, int role) const
 {
-	if (!index.isValid() || index.row() < 0
-		|| index.row() > 1
-		|| index.column() >= defaultScheme.size()
-		|| (role != Qt::EditRole && role != Qt::DisplayRole)
-		)
-		return QVariant();
+    if (!index.isValid() || index.row() < 0
+        || index.row() > 1
+        || index.column() >= defaultScheme.size()
+        || (role != Qt::EditRole && role != Qt::DisplayRole)
+        )
+        return QVariant();
 
-	return netScheme[index.column()];
+    return netScheme[index.column()];
 }
 
 void NetAmmoSchemeModel::setNetSchemeConfig(QStringList & cfg)
 {
-	if(cfg.size() != netScheme.size())
-	{
-		qWarning("Incorrect scheme cfg size");
-		return;
-	}
+    if(cfg.size() != netScheme.size())
+    {
+        qWarning("Incorrect scheme cfg size");
+        return;
+    }
 
-	for(int i = 0; i < cfg.size(); ++i)
-		netScheme[i] = QVariant(cfg[i]);
+    for(int i = 0; i < cfg.size(); ++i)
+        netScheme[i] = QVariant(cfg[i]);
 
-	reset();
+    reset();
 }
--- a/QTfrontend/ammoSchemeModel.h	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/ammoSchemeModel.h	Sat Mar 06 10:59:20 2010 +0000
@@ -26,54 +26,54 @@
 
 class AmmoSchemeModel : public QAbstractTableModel
 {
-	Q_OBJECT
+    Q_OBJECT
 
 public:
-	AmmoSchemeModel(QObject * parent, const QString & fileName);
+    AmmoSchemeModel(QObject * parent, const QString & fileName);
 
-	QVariant headerData(int section, Qt::Orientation orientation, int role) const;
-	int rowCount(const QModelIndex & parent) const;
-	int columnCount(const QModelIndex & parent) const;
-	Qt::ItemFlags flags(const QModelIndex & index) const;
-	bool setData(const QModelIndex & index, const QVariant & value, int role = Qt::EditRole);
-	bool insertRows(int row, int count, const QModelIndex & parent = QModelIndex());
-	bool removeRows(int row, int count, const QModelIndex & parent = QModelIndex());
-	QVariant data(const QModelIndex &index, int role) const;
+    QVariant headerData(int section, Qt::Orientation orientation, int role) const;
+    int rowCount(const QModelIndex & parent) const;
+    int columnCount(const QModelIndex & parent) const;
+    Qt::ItemFlags flags(const QModelIndex & index) const;
+    bool setData(const QModelIndex & index, const QVariant & value, int role = Qt::EditRole);
+    bool insertRows(int row, int count, const QModelIndex & parent = QModelIndex());
+    bool removeRows(int row, int count, const QModelIndex & parent = QModelIndex());
+    QVariant data(const QModelIndex &index, int role) const;
 
-	const int numberOfDefaultSchemes;
+    const int numberOfDefaultSchemes;
 
 public slots:
-	void Save();
+    void Save();
 
 signals:
-	void dataChanged(const QModelIndex & topLeft, const QModelIndex & bottomRight);
+    void dataChanged(const QModelIndex & topLeft, const QModelIndex & bottomRight);
 
 protected:
-	QList< QList<QVariant> > schemes;
+    QList< QList<QVariant> > schemes;
 
 private:
-	QSettings fileConfig;
+    QSettings fileConfig;
 
-	QStringList spNames;
+    QStringList spNames;
 };
 
 class NetAmmoSchemeModel : public QAbstractTableModel
 {
-	Q_OBJECT
+    Q_OBJECT
 
 public:
-	NetAmmoSchemeModel(QObject * parent);
+    NetAmmoSchemeModel(QObject * parent);
 
-	QVariant headerData(int section, Qt::Orientation orientation, int role) const;
-	int rowCount(const QModelIndex & parent) const;
-	int columnCount(const QModelIndex & parent) const;
-	QVariant data(const QModelIndex &index, int role) const;
+    QVariant headerData(int section, Qt::Orientation orientation, int role) const;
+    int rowCount(const QModelIndex & parent) const;
+    int columnCount(const QModelIndex & parent) const;
+    QVariant data(const QModelIndex &index, int role) const;
 
 public slots:
-	void setNetSchemeConfig(QStringList & cfg);
+    void setNetSchemeConfig(QStringList & cfg);
 
 private:
-	QList<QVariant> netScheme;
+    QList<QVariant> netScheme;
 };
 
 #endif // _AMMO_SCHEME_MODEL_INCLUDED
--- a/QTfrontend/bgwidget.cpp	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/bgwidget.cpp	Sat Mar 06 10:59:20 2010 +0000
@@ -20,9 +20,9 @@
 
 SpritePosition::SpritePosition(QWidget * parent, int sh)
 {
-	wParent = parent;
-	iSpriteHeight = sh;
-	reset();
+    wParent = parent;
+    iSpriteHeight = sh;
+    reset();
 }
 
 SpritePosition::~SpritePosition()
@@ -31,110 +31,110 @@
 
 void SpritePosition::move()
 {
-	fX += fXMov;
-	fY += fYMov;
-	iAngle += 4;
-	if (iAngle >= 360) iAngle = 0;
-	if (fY > wParent->height()) reset();
+    fX += fXMov;
+    fY += fYMov;
+    iAngle += 4;
+    if (iAngle >= 360) iAngle = 0;
+    if (fY > wParent->height()) reset();
 }
 
 void SpritePosition::reset()
 {
-	fY = -1 * iSpriteHeight;
-	fX = (qrand() % ((int)(wParent->width() * 1.5))) - wParent->width()/2;
-	fYMov = ((qrand() % 400)+300) / 100.0f;
-	fXMov = fYMov * 0.5f;
-	iAngle = qrand() % 360;
+    fY = -1 * iSpriteHeight;
+    fX = (qrand() % ((int)(wParent->width() * 1.5))) - wParent->width()/2;
+    fYMov = ((qrand() % 400)+300) / 100.0f;
+    fXMov = fYMov * 0.5f;
+    iAngle = qrand() % 360;
 }
 
 QPoint SpritePosition::pos()
 {
-	return QPoint((int)fX,(int)fY);
+    return QPoint((int)fX,(int)fY);
 }
 
 int SpritePosition::getAngle()
 {
-	return iAngle;
+    return iAngle;
 }
 
 void SpritePosition::init()
 {
-	fY = qrand() % (wParent->height() + 1);
-	fX = qrand() % (wParent->width() + 1);
+    fY = qrand() % (wParent->height() + 1);
+    fX = qrand() % (wParent->width() + 1);
 }
 
 BGWidget::BGWidget(QWidget * parent) : QWidget(parent)
 {
     setAttribute(Qt::WA_NoSystemBackground, true);
-	sprite.load(":/res/Star.png");
+    sprite.load(":/res/Star.png");
 
-	setAutoFillBackground(false);
+    setAutoFillBackground(false);
 
-	for (int i = 0; i < SPRITE_MAX; i++) spritePositions[i] = new SpritePosition(this, sprite.height());
+    for (int i = 0; i < SPRITE_MAX; i++) spritePositions[i] = new SpritePosition(this, sprite.height());
 
-	for (int i = 0; i < 360; i++)
-	{
-		rotatedSprites[i] = new QImage(sprite.width(), sprite.height(), QImage::Format_ARGB32);
-		rotatedSprites[i]->fill(0);
+    for (int i = 0; i < 360; i++)
+    {
+        rotatedSprites[i] = new QImage(sprite.width(), sprite.height(), QImage::Format_ARGB32);
+        rotatedSprites[i]->fill(0);
 
-		QPoint translate(sprite.width()/2, sprite.height()/2);
+        QPoint translate(sprite.width()/2, sprite.height()/2);
 
-		QPainter p;
-		p.begin(rotatedSprites[i]);
-	//	p.setRenderHint(QPainter::Antialiasing);
-		p.setRenderHint(QPainter::SmoothPixmapTransform);
-		p.translate(translate.x(), translate.y());
-		p.rotate(i);
-		p.translate(-1*translate.x(), -1*translate.y());
-		p.drawImage(0, 0, sprite);
-	}
+        QPainter p;
+        p.begin(rotatedSprites[i]);
+    //  p.setRenderHint(QPainter::Antialiasing);
+        p.setRenderHint(QPainter::SmoothPixmapTransform);
+        p.translate(translate.x(), translate.y());
+        p.rotate(i);
+        p.translate(-1*translate.x(), -1*translate.y());
+        p.drawImage(0, 0, sprite);
+    }
 
-	timerAnimation = new QTimer();
-	connect(timerAnimation, SIGNAL(timeout()), this, SLOT(animate()));
-	timerAnimation->setInterval(ANIMATION_INTERVAL);
+    timerAnimation = new QTimer();
+    connect(timerAnimation, SIGNAL(timeout()), this, SLOT(animate()));
+    timerAnimation->setInterval(ANIMATION_INTERVAL);
 }
 
 BGWidget::~BGWidget()
 {
-	for (int i = 0; i < SPRITE_MAX; i++) delete spritePositions[i];
-	for (int i = 0; i < 360; i++) delete rotatedSprites[i];
-	delete timerAnimation;
+    for (int i = 0; i < SPRITE_MAX; i++) delete spritePositions[i];
+    for (int i = 0; i < 360; i++) delete rotatedSprites[i];
+    delete timerAnimation;
 }
 
 void BGWidget::paintEvent(QPaintEvent *event)
 {
-	QPainter p;
-	p.begin(this);
-	//p.setRenderHint(QPainter::Antialiasing);
-	for (int i = 0; i < SPRITE_MAX; i++)
-	{
-		QPoint point = spritePositions[i]->pos();
-		p.drawImage(point.x(), point.y(), *rotatedSprites[spritePositions[i]->getAngle()]);
-	}
-	p.end();
+    QPainter p;
+    p.begin(this);
+    //p.setRenderHint(QPainter::Antialiasing);
+    for (int i = 0; i < SPRITE_MAX; i++)
+    {
+        QPoint point = spritePositions[i]->pos();
+        p.drawImage(point.x(), point.y(), *rotatedSprites[spritePositions[i]->getAngle()]);
+    }
+    p.end();
 }
 
 void BGWidget::animate()
 {
-	for (int i = 0; i < SPRITE_MAX; i++)
-	{
+    for (int i = 0; i < SPRITE_MAX; i++)
+    {
         // bottom edge of star *seems* clipped, but in fact, if I switch to just plain old repaint()/update() it is still clipped - artifact of transform?  As for 5, is arbitrary number. 4 was noticeably clipping, 5 seemed same as update() - I assume extra room is due to rotation and value really should be calculated proportional to width/height
         update(spritePositions[i]->pos().x(),spritePositions[i]->pos().y(), sprite.width()+5, sprite.height()+5);
-		spritePositions[i]->move();
-	}
+        spritePositions[i]->move();
+    }
 }
 
 void BGWidget::startAnimation()
 {
-	timerAnimation->start();
+    timerAnimation->start();
 }
 
 void BGWidget::stopAnimation()
 {
-	timerAnimation->stop();
+    timerAnimation->stop();
 }
 
 void BGWidget::init()
 {
-	for (int i = 0; i < SPRITE_MAX; i++) spritePositions[i]->init();
+    for (int i = 0; i < SPRITE_MAX; i++) spritePositions[i]->init();
 }
--- a/QTfrontend/bgwidget.h	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/bgwidget.h	Sat Mar 06 10:59:20 2010 +0000
@@ -34,42 +34,42 @@
 class SpritePosition
 {
 public:
-	SpritePosition(QWidget * parent, int sh);
-	~SpritePosition();
+    SpritePosition(QWidget * parent, int sh);
+    ~SpritePosition();
 private:
-	float fX;
-	float fY;
-	float fXMov;
-	float fYMov;
-	int iAngle;
-	QWidget * wParent;
-	int iSpriteHeight;
+    float fX;
+    float fY;
+    float fXMov;
+    float fYMov;
+    int iAngle;
+    QWidget * wParent;
+    int iSpriteHeight;
 public:
-	void move();
-	void reset();
-	QPoint pos();
-	int getAngle();
-	void init();
+    void move();
+    void reset();
+    QPoint pos();
+    int getAngle();
+    void init();
 };
 
 class BGWidget : public QWidget
 {
-	Q_OBJECT
+    Q_OBJECT
 public:
-	BGWidget(QWidget * parent);
-	~BGWidget();
-	void startAnimation();
-	void stopAnimation();
-	void init();
+    BGWidget(QWidget * parent);
+    ~BGWidget();
+    void startAnimation();
+    void stopAnimation();
+    void init();
 private:
-	QImage sprite;
-	QTimer * timerAnimation;
-	SpritePosition * spritePositions[SPRITE_MAX];
-	QImage * rotatedSprites[360];
+    QImage sprite;
+    QTimer * timerAnimation;
+    SpritePosition * spritePositions[SPRITE_MAX];
+    QImage * rotatedSprites[360];
 protected:
-	void paintEvent(QPaintEvent * event);
+    void paintEvent(QPaintEvent * event);
 private slots:
-	void animate();
+    void animate();
 };
 
 #endif // BGWIDGET_H
--- a/QTfrontend/binds.cpp	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/binds.cpp	Sat Mar 06 10:59:20 2010 +0000
@@ -20,50 +20,50 @@
 
 const BindAction cbinds[BINDS_NUMBER] =
 {
-	{"+up",	"up",	QT_TRANSLATE_NOOP("binds", "up"),	QT_TRANSLATE_NOOP("binds (categories)", "Basic controls"), QT_TRANSLATE_NOOP("binds (descriptions)", "Move your hogs and aim:")},
-	{"+left",	"left",	QT_TRANSLATE_NOOP("binds", "left"),	NULL, NULL},
-	{"+right",	"right",	QT_TRANSLATE_NOOP("binds", "right"),	NULL, NULL},
-	{"+down",	"down",	QT_TRANSLATE_NOOP("binds", "down"),	NULL, NULL},
-	{"+precise",	"left_shift",	QT_TRANSLATE_NOOP("binds", "precise aim"),	NULL, NULL},
-	{"ljump",	"return",	QT_TRANSLATE_NOOP("binds", "long jump"),	NULL, QT_TRANSLATE_NOOP("binds (descriptions)", "Traverse gaps and obstacles by jumping:")},
-	{"hjump",	"backspace",	QT_TRANSLATE_NOOP("binds", "high jump"),	NULL, NULL},
-	{"+attack",	"space",	QT_TRANSLATE_NOOP("binds", "attack"),	NULL, QT_TRANSLATE_NOOP("binds (descriptions)", "Fire your selected weapon or trigger an utility item:")},
-	{"put",	"mousel",	QT_TRANSLATE_NOOP("binds", "put"),	NULL, QT_TRANSLATE_NOOP("binds (descriptions)", "Pick a weapon or a target location under the cursor:")},
-	{"switch",	"tab",	QT_TRANSLATE_NOOP("binds", "switch"),	NULL, QT_TRANSLATE_NOOP("binds (descriptions)", "Switch your currently active hog (if possible):")},
-	{"ammomenu",	"mouser",	QT_TRANSLATE_NOOP("binds", "ammo menu"),	QT_TRANSLATE_NOOP("binds (categories)", "Weapon controls"), QT_TRANSLATE_NOOP("binds (descriptions)", "Pick a weapon or utility item:")},
-	{"slot 1",	"f1",	QT_TRANSLATE_NOOP("binds", "slot 1"),	NULL, NULL},
-	{"slot 2",	"f2",	QT_TRANSLATE_NOOP("binds", "slot 2"),	NULL, NULL},
-	{"slot 3",	"f3",	QT_TRANSLATE_NOOP("binds", "slot 3"),	NULL, NULL},
-	{"slot 4",	"f4",	QT_TRANSLATE_NOOP("binds", "slot 4"),	NULL, NULL},
-	{"slot 5",	"f5",	QT_TRANSLATE_NOOP("binds", "slot 5"),	NULL, NULL},
-	{"slot 6",	"f6",	QT_TRANSLATE_NOOP("binds", "slot 6"),	NULL, NULL},
-	{"slot 7",	"f7",	QT_TRANSLATE_NOOP("binds", "slot 7"),	NULL, NULL},
-	{"slot 8",	"f8",	QT_TRANSLATE_NOOP("binds", "slot 8"),	NULL, NULL},
-	{"slot 9",	"f9",	QT_TRANSLATE_NOOP("binds", "slot 9"),	NULL, NULL},
-	{"timer 1",	"1",	QT_TRANSLATE_NOOP("binds", "timer 1 sec"),	NULL, QT_TRANSLATE_NOOP("binds (descriptions)", "Set the timer on bombs and timed weapons:")},
-	{"timer 2",	"2",	QT_TRANSLATE_NOOP("binds", "timer 2 sec"),	NULL, NULL},
-	{"timer 3",	"3",	QT_TRANSLATE_NOOP("binds", "timer 3 sec"),	NULL, NULL},
-	{"timer 4",	"4",	QT_TRANSLATE_NOOP("binds", "timer 4 sec"),	NULL, NULL},
-	{"timer 5",	"5",	QT_TRANSLATE_NOOP("binds", "timer 5 sec"),	NULL, NULL},
-	{"findhh",	"h",	QT_TRANSLATE_NOOP("binds", "find hedgehog"),	QT_TRANSLATE_NOOP("binds (categories)", "Camera and cursor controls"), QT_TRANSLATE_NOOP("binds (descriptions)", "Move the camera to the active hog:")},
-	{"+cur_u",	"",	QT_TRANSLATE_NOOP("binds", "up"),	NULL, QT_TRANSLATE_NOOP("binds (descriptions)", "Move the cursor or camera without using the mouse:")},
-	{"+cur_l",	"",	QT_TRANSLATE_NOOP("binds", "left"),	NULL, NULL},
-	{"+cur_r",	"",	QT_TRANSLATE_NOOP("binds", "right"),	NULL, NULL},
-	{"+cur_d",	"",	QT_TRANSLATE_NOOP("binds", "down"),	NULL, NULL},
-//	{"+cur_m",	"",	QT_TRANSLATE_NOOP("binds", "movement key modifier"),	NULL, QT_TRANSLATE_NOOP("binds (descriptions)", "Specify a modifier key to move camera and cursor using your default hog movement keys:")},
-	{"zoomin",	"wheeldown",	QT_TRANSLATE_NOOP("binds", "zoom in"),	NULL, QT_TRANSLATE_NOOP("binds (descriptions)", "Modify the camera's zoom level:")},
-	{"zoomout",	"wheelup",	QT_TRANSLATE_NOOP("binds", "zoom out"),	NULL, NULL},
-	{"zoomreset",	"mousem",	QT_TRANSLATE_NOOP("binds", "reset zoom"),	NULL, NULL},
-	{"chat",	"t",	QT_TRANSLATE_NOOP("binds", "chat"),	QT_TRANSLATE_NOOP("binds (categories)", "Other"), QT_TRANSLATE_NOOP("binds (descriptions)", "Talk to your team or all participants:")},
-	{"history",	"`",	QT_TRANSLATE_NOOP("binds", "chat history"),	NULL, NULL},
-	{"pause",	"p",	QT_TRANSLATE_NOOP("binds", "pause"),	NULL, QT_TRANSLATE_NOOP("binds (descriptions)", "Pause, continue or leave your game:")},
-	{"quit",	"escape",	QT_TRANSLATE_NOOP("binds", "quit"),	NULL, NULL},
-	{"confirm",	"y",	QT_TRANSLATE_NOOP("binds", "confirmation"),	NULL, NULL},
-	{"+voldown",	"9",	QT_TRANSLATE_NOOP("binds", "volume down"),	NULL, QT_TRANSLATE_NOOP("binds (descriptions)", "Modify the game's volume while playing:")},
-	{"+volup",	"0",	QT_TRANSLATE_NOOP("binds", "volume up"),	NULL, NULL},
+    {"+up", "up",   QT_TRANSLATE_NOOP("binds", "up"),   QT_TRANSLATE_NOOP("binds (categories)", "Basic controls"), QT_TRANSLATE_NOOP("binds (descriptions)", "Move your hogs and aim:")},
+    {"+left",   "left", QT_TRANSLATE_NOOP("binds", "left"), NULL, NULL},
+    {"+right",  "right",    QT_TRANSLATE_NOOP("binds", "right"),    NULL, NULL},
+    {"+down",   "down", QT_TRANSLATE_NOOP("binds", "down"), NULL, NULL},
+    {"+precise",    "left_shift",   QT_TRANSLATE_NOOP("binds", "precise aim"),  NULL, NULL},
+    {"ljump",   "return",   QT_TRANSLATE_NOOP("binds", "long jump"),    NULL, QT_TRANSLATE_NOOP("binds (descriptions)", "Traverse gaps and obstacles by jumping:")},
+    {"hjump",   "backspace",    QT_TRANSLATE_NOOP("binds", "high jump"),    NULL, NULL},
+    {"+attack", "space",    QT_TRANSLATE_NOOP("binds", "attack"),   NULL, QT_TRANSLATE_NOOP("binds (descriptions)", "Fire your selected weapon or trigger an utility item:")},
+    {"put", "mousel",   QT_TRANSLATE_NOOP("binds", "put"),  NULL, QT_TRANSLATE_NOOP("binds (descriptions)", "Pick a weapon or a target location under the cursor:")},
+    {"switch",  "tab",  QT_TRANSLATE_NOOP("binds", "switch"),   NULL, QT_TRANSLATE_NOOP("binds (descriptions)", "Switch your currently active hog (if possible):")},
+    {"ammomenu",    "mouser",   QT_TRANSLATE_NOOP("binds", "ammo menu"),    QT_TRANSLATE_NOOP("binds (categories)", "Weapon controls"), QT_TRANSLATE_NOOP("binds (descriptions)", "Pick a weapon or utility item:")},
+    {"slot 1",  "f1",   QT_TRANSLATE_NOOP("binds", "slot 1"),   NULL, NULL},
+    {"slot 2",  "f2",   QT_TRANSLATE_NOOP("binds", "slot 2"),   NULL, NULL},
+    {"slot 3",  "f3",   QT_TRANSLATE_NOOP("binds", "slot 3"),   NULL, NULL},
+    {"slot 4",  "f4",   QT_TRANSLATE_NOOP("binds", "slot 4"),   NULL, NULL},
+    {"slot 5",  "f5",   QT_TRANSLATE_NOOP("binds", "slot 5"),   NULL, NULL},
+    {"slot 6",  "f6",   QT_TRANSLATE_NOOP("binds", "slot 6"),   NULL, NULL},
+    {"slot 7",  "f7",   QT_TRANSLATE_NOOP("binds", "slot 7"),   NULL, NULL},
+    {"slot 8",  "f8",   QT_TRANSLATE_NOOP("binds", "slot 8"),   NULL, NULL},
+    {"slot 9",  "f9",   QT_TRANSLATE_NOOP("binds", "slot 9"),   NULL, NULL},
+    {"timer 1", "1",    QT_TRANSLATE_NOOP("binds", "timer 1 sec"),  NULL, QT_TRANSLATE_NOOP("binds (descriptions)", "Set the timer on bombs and timed weapons:")},
+    {"timer 2", "2",    QT_TRANSLATE_NOOP("binds", "timer 2 sec"),  NULL, NULL},
+    {"timer 3", "3",    QT_TRANSLATE_NOOP("binds", "timer 3 sec"),  NULL, NULL},
+    {"timer 4", "4",    QT_TRANSLATE_NOOP("binds", "timer 4 sec"),  NULL, NULL},
+    {"timer 5", "5",    QT_TRANSLATE_NOOP("binds", "timer 5 sec"),  NULL, NULL},
+    {"findhh",  "h",    QT_TRANSLATE_NOOP("binds", "find hedgehog"),    QT_TRANSLATE_NOOP("binds (categories)", "Camera and cursor controls"), QT_TRANSLATE_NOOP("binds (descriptions)", "Move the camera to the active hog:")},
+    {"+cur_u",  "", QT_TRANSLATE_NOOP("binds", "up"),   NULL, QT_TRANSLATE_NOOP("binds (descriptions)", "Move the cursor or camera without using the mouse:")},
+    {"+cur_l",  "", QT_TRANSLATE_NOOP("binds", "left"), NULL, NULL},
+    {"+cur_r",  "", QT_TRANSLATE_NOOP("binds", "right"),    NULL, NULL},
+    {"+cur_d",  "", QT_TRANSLATE_NOOP("binds", "down"), NULL, NULL},
+//  {"+cur_m",  "", QT_TRANSLATE_NOOP("binds", "movement key modifier"),    NULL, QT_TRANSLATE_NOOP("binds (descriptions)", "Specify a modifier key to move camera and cursor using your default hog movement keys:")},
+    {"zoomin",  "wheeldown",    QT_TRANSLATE_NOOP("binds", "zoom in"),  NULL, QT_TRANSLATE_NOOP("binds (descriptions)", "Modify the camera's zoom level:")},
+    {"zoomout", "wheelup",  QT_TRANSLATE_NOOP("binds", "zoom out"), NULL, NULL},
+    {"zoomreset",   "mousem",   QT_TRANSLATE_NOOP("binds", "reset zoom"),   NULL, NULL},
+    {"chat",    "t",    QT_TRANSLATE_NOOP("binds", "chat"), QT_TRANSLATE_NOOP("binds (categories)", "Other"), QT_TRANSLATE_NOOP("binds (descriptions)", "Talk to your team or all participants:")},
+    {"history", "`",    QT_TRANSLATE_NOOP("binds", "chat history"), NULL, NULL},
+    {"pause",   "p",    QT_TRANSLATE_NOOP("binds", "pause"),    NULL, QT_TRANSLATE_NOOP("binds (descriptions)", "Pause, continue or leave your game:")},
+    {"quit",    "escape",   QT_TRANSLATE_NOOP("binds", "quit"), NULL, NULL},
+    {"confirm", "y",    QT_TRANSLATE_NOOP("binds", "confirmation"), NULL, NULL},
+    {"+voldown",    "9",    QT_TRANSLATE_NOOP("binds", "volume down"),  NULL, QT_TRANSLATE_NOOP("binds (descriptions)", "Modify the game's volume while playing:")},
+    {"+volup",  "0",    QT_TRANSLATE_NOOP("binds", "volume up"),    NULL, NULL},
 #ifndef _WIN32
-	{"fullscr",	"f12",	QT_TRANSLATE_NOOP("binds", "change mode"),	NULL, QT_TRANSLATE_NOOP("binds (descriptions)", "Toggle fullscreen mode:")},
+    {"fullscr", "f12",  QT_TRANSLATE_NOOP("binds", "change mode"),  NULL, QT_TRANSLATE_NOOP("binds (descriptions)", "Toggle fullscreen mode:")},
 #endif
-	{"capture",	"c",	QT_TRANSLATE_NOOP("binds", "capture"),	NULL, QT_TRANSLATE_NOOP("binds (descriptions)", "Take a screenshot:")},
-	{"rotmask",	"delete",	QT_TRANSLATE_NOOP("binds", "hedgehogs\ninfo"),	NULL, QT_TRANSLATE_NOOP("binds (descriptions)", "Toggle labels above hedgehogs:")}
+    {"capture", "c",    QT_TRANSLATE_NOOP("binds", "capture"),  NULL, QT_TRANSLATE_NOOP("binds (descriptions)", "Take a screenshot:")},
+    {"rotmask", "delete",   QT_TRANSLATE_NOOP("binds", "hedgehogs\ninfo"),  NULL, QT_TRANSLATE_NOOP("binds (descriptions)", "Toggle labels above hedgehogs:")}
 };
--- a/QTfrontend/binds.h	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/binds.h	Sat Mar 06 10:59:20 2010 +0000
@@ -29,11 +29,11 @@
 
 struct BindAction
 {
-	QString action;
-	QString strbind;
-	const char * name;
-	const char * category;
-	const char * description;
+    QString action;
+    QString strbind;
+    const char * name;
+    const char * category;
+    const char * description;
 };
 
 extern const BindAction cbinds[BINDS_NUMBER];
--- a/QTfrontend/chatwidget.cpp	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/chatwidget.cpp	Sat Mar 06 10:59:20 2010 +0000
@@ -51,192 +51,192 @@
        sound[3] = Mix_LoadWAV(QString(tmpdir.absolutePath() + "/Russian/Hello.ogg").toLocal8Bit().constData());
     }
 
-	mainLayout.setSpacing(1);
-	mainLayout.setMargin(1);
-	mainLayout.setSizeConstraint(QLayout::SetMinimumSize);
-	mainLayout.setColumnStretch(0, 75);
-	mainLayout.setColumnStretch(1, 25);
+    mainLayout.setSpacing(1);
+    mainLayout.setMargin(1);
+    mainLayout.setSizeConstraint(QLayout::SetMinimumSize);
+    mainLayout.setColumnStretch(0, 75);
+    mainLayout.setColumnStretch(1, 25);
 
-	chatEditLine = new QLineEdit(this);
-	chatEditLine->setMaxLength(300);
-	connect(chatEditLine, SIGNAL(returnPressed()), this, SLOT(returnPressed()));
+    chatEditLine = new QLineEdit(this);
+    chatEditLine->setMaxLength(300);
+    connect(chatEditLine, SIGNAL(returnPressed()), this, SLOT(returnPressed()));
 
-	mainLayout.addWidget(chatEditLine, 1, 0, 1, 2);
+    mainLayout.addWidget(chatEditLine, 1, 0, 1, 2);
 
-	chatText = new QTextBrowser(this);
-	chatText->setMinimumHeight(20);
-	chatText->setMinimumWidth(10);
-	chatText->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
-	chatText->setOpenExternalLinks(true);
-	mainLayout.addWidget(chatText, 0, 0);
+    chatText = new QTextBrowser(this);
+    chatText->setMinimumHeight(20);
+    chatText->setMinimumWidth(10);
+    chatText->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
+    chatText->setOpenExternalLinks(true);
+    mainLayout.addWidget(chatText, 0, 0);
 
-	chatNicks = new QListWidget(this);
-	chatNicks->setMinimumHeight(10);
-	chatNicks->setMinimumWidth(10);
-	chatNicks->setSortingEnabled(true);
-	chatNicks->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
-	chatNicks->setContextMenuPolicy(Qt::ActionsContextMenu);
-	connect(chatNicks, SIGNAL(itemDoubleClicked(QListWidgetItem *)),
-		this, SLOT(chatNickDoubleClicked(QListWidgetItem *)));
-	connect(chatNicks, SIGNAL(currentRowChanged(int)),
-		this, SLOT(chatNickSelected(int)));
+    chatNicks = new QListWidget(this);
+    chatNicks->setMinimumHeight(10);
+    chatNicks->setMinimumWidth(10);
+    chatNicks->setSortingEnabled(true);
+    chatNicks->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
+    chatNicks->setContextMenuPolicy(Qt::ActionsContextMenu);
+    connect(chatNicks, SIGNAL(itemDoubleClicked(QListWidgetItem *)),
+        this, SLOT(chatNickDoubleClicked(QListWidgetItem *)));
+    connect(chatNicks, SIGNAL(currentRowChanged(int)),
+        this, SLOT(chatNickSelected(int)));
 
-	mainLayout.addWidget(chatNicks, 0, 1);
+    mainLayout.addWidget(chatNicks, 0, 1);
 
-	acInfo = new QAction(QAction::tr("Info"), chatNicks);
-	connect(acInfo, SIGNAL(triggered(bool)), this, SLOT(onInfo()));
-	acKick = new QAction(QAction::tr("Kick"), chatNicks);
-	connect(acKick, SIGNAL(triggered(bool)), this, SLOT(onKick()));
-	acBan = new QAction(QAction::tr("Ban"), chatNicks);
-	connect(acBan, SIGNAL(triggered(bool)), this, SLOT(onBan()));
-	acFollow = new QAction(QAction::tr("Follow"), chatNicks);
-	connect(acFollow, SIGNAL(triggered(bool)), this, SLOT(onFollow()));
-	acIgnore = new QAction(QAction::tr("Ignore"), chatNicks);
-	connect(acIgnore, SIGNAL(triggered(bool)), this, SLOT(onIgnore()));
-	acFriend = new QAction(QAction::tr("Add friend"), chatNicks);
-	connect(acFriend, SIGNAL(triggered(bool)), this, SLOT(onFriend()));
+    acInfo = new QAction(QAction::tr("Info"), chatNicks);
+    connect(acInfo, SIGNAL(triggered(bool)), this, SLOT(onInfo()));
+    acKick = new QAction(QAction::tr("Kick"), chatNicks);
+    connect(acKick, SIGNAL(triggered(bool)), this, SLOT(onKick()));
+    acBan = new QAction(QAction::tr("Ban"), chatNicks);
+    connect(acBan, SIGNAL(triggered(bool)), this, SLOT(onBan()));
+    acFollow = new QAction(QAction::tr("Follow"), chatNicks);
+    connect(acFollow, SIGNAL(triggered(bool)), this, SLOT(onFollow()));
+    acIgnore = new QAction(QAction::tr("Ignore"), chatNicks);
+    connect(acIgnore, SIGNAL(triggered(bool)), this, SLOT(onIgnore()));
+    acFriend = new QAction(QAction::tr("Add friend"), chatNicks);
+    connect(acFriend, SIGNAL(triggered(bool)), this, SLOT(onFriend()));
 
-	chatNicks->insertAction(0, acInfo);
-	chatNicks->insertAction(0, acFollow);
-	chatNicks->insertAction(0, acIgnore);
-	chatNicks->insertAction(0, acFriend);
-	
-	showReady = false;
+    chatNicks->insertAction(0, acInfo);
+    chatNicks->insertAction(0, acFollow);
+    chatNicks->insertAction(0, acIgnore);
+    chatNicks->insertAction(0, acFriend);
+    
+    showReady = false;
 }
 
 void HWChatWidget::loadList(QStringList & list, const QString & file)
 {
-	list.clear();
-	QFile txt((cfgdir->absolutePath() + "/" + file).toLocal8Bit().constData());
-	if(!txt.open(QIODevice::ReadOnly))
-		return;
-	QTextStream stream(&txt);
-	stream.setCodec("UTF-8");
+    list.clear();
+    QFile txt((cfgdir->absolutePath() + "/" + file).toLocal8Bit().constData());
+    if(!txt.open(QIODevice::ReadOnly))
+        return;
+    QTextStream stream(&txt);
+    stream.setCodec("UTF-8");
 
-	while(!stream.atEnd())
-	{
-		QString str = stream.readLine();
-		if(str.startsWith(";") || str.length() == 0)
-			continue;
-		list << str.trimmed();
-	}
-	list.removeDuplicates();
-	txt.close();
+    while(!stream.atEnd())
+    {
+        QString str = stream.readLine();
+        if(str.startsWith(";") || str.length() == 0)
+            continue;
+        list << str.trimmed();
+    }
+    list.removeDuplicates();
+    txt.close();
 }
 
 void HWChatWidget::saveList(QStringList & list, const QString & file)
 {
-	QFile txt((cfgdir->absolutePath() + "/" + file).toLocal8Bit().constData());
-	if(!txt.open(QIODevice::WriteOnly | QIODevice::Truncate))
-		return;
-	QTextStream stream(&txt);
-	stream.setCodec("UTF-8");
+    QFile txt((cfgdir->absolutePath() + "/" + file).toLocal8Bit().constData());
+    if(!txt.open(QIODevice::WriteOnly | QIODevice::Truncate))
+        return;
+    QTextStream stream(&txt);
+    stream.setCodec("UTF-8");
 
-	stream << "; this list is used by Hedgewars - do not edit it unless you know what you're doing!" << endl;
-	for(int i = 0; i < list.size(); i++)
-		stream << list[i] << endl;
-	txt.close();
+    stream << "; this list is used by Hedgewars - do not edit it unless you know what you're doing!" << endl;
+    for(int i = 0; i < list.size(); i++)
+        stream << list[i] << endl;
+    txt.close();
 }
 
 void HWChatWidget::updateIcon(QListWidgetItem *item)
 {
-	QString nick = item->text();
+    QString nick = item->text();
 
-	if(ignoreList.contains(nick, Qt::CaseInsensitive))
-	{
-		item->setIcon(QIcon(showReady ? (item->data(Qt::UserRole).toBool() ? ":/res/chat_ignore_on" : ":/res/chat_ignore_off") : ":/res/chat_ignore.png"));
-		item->setForeground(Qt::gray);
-	}
-	else if(friendsList.contains(nick, Qt::CaseInsensitive))
-	{
-		item->setIcon(QIcon(showReady ? (item->data(Qt::UserRole).toBool() ? ":/res/chat_friend_on" : ":/res/chat_friend_off") : ":/res/chat_friend.png"));
-		item->setForeground(Qt::green);
-	}
-	else
-	{
-		item->setIcon(QIcon(showReady ? (item->data(Qt::UserRole).toBool() ? ":/res/chat_default_on" : ":/res/chat_default_off") : ":/res/chat_default.png"));
-		item->setForeground(QBrush(QColor(0xff, 0xcc, 0x00)));
-	}
+    if(ignoreList.contains(nick, Qt::CaseInsensitive))
+    {
+        item->setIcon(QIcon(showReady ? (item->data(Qt::UserRole).toBool() ? ":/res/chat_ignore_on" : ":/res/chat_ignore_off") : ":/res/chat_ignore.png"));
+        item->setForeground(Qt::gray);
+    }
+    else if(friendsList.contains(nick, Qt::CaseInsensitive))
+    {
+        item->setIcon(QIcon(showReady ? (item->data(Qt::UserRole).toBool() ? ":/res/chat_friend_on" : ":/res/chat_friend_off") : ":/res/chat_friend.png"));
+        item->setForeground(Qt::green);
+    }
+    else
+    {
+        item->setIcon(QIcon(showReady ? (item->data(Qt::UserRole).toBool() ? ":/res/chat_default_on" : ":/res/chat_default_off") : ":/res/chat_default.png"));
+        item->setForeground(QBrush(QColor(0xff, 0xcc, 0x00)));
+    }
 }
 
 void HWChatWidget::updateIcons()
 {
-	for(int i = 0; i < chatNicks->count(); i++)
-		updateIcon(chatNicks->item(i));
+    for(int i = 0; i < chatNicks->count(); i++)
+        updateIcon(chatNicks->item(i));
 }
 
 void HWChatWidget::loadLists(const QString & nick)
 {
-	loadList(ignoreList, nick.toLower() + "_ignore.txt");
-	loadList(friendsList, nick.toLower() + "_friends.txt");
-	updateIcons();
+    loadList(ignoreList, nick.toLower() + "_ignore.txt");
+    loadList(friendsList, nick.toLower() + "_friends.txt");
+    updateIcons();
 }
 
 void HWChatWidget::saveLists(const QString & nick)
 {
-	saveList(ignoreList, nick.toLower() + "_ignore.txt");
-	saveList(friendsList, nick.toLower() + "_friends.txt");
+    saveList(ignoreList, nick.toLower() + "_ignore.txt");
+    saveList(friendsList, nick.toLower() + "_friends.txt");
 }
 
 void HWChatWidget::returnPressed()
 {
-	emit chatLine(chatEditLine->text());
-	chatEditLine->clear();
+    emit chatLine(chatEditLine->text());
+    chatEditLine->clear();
 }
 
 void HWChatWidget::onChatString(const QString& str)
 {
-	if (chatStrings.size() > 250)
-		chatStrings.removeFirst();
+    if (chatStrings.size() > 250)
+        chatStrings.removeFirst();
 
-	QString formattedStr = Qt::escape(str.mid(1));
-	QStringList parts = formattedStr.split(QRegExp("\\W+"), QString::SkipEmptyParts);
+    QString formattedStr = Qt::escape(str.mid(1));
+    QStringList parts = formattedStr.split(QRegExp("\\W+"), QString::SkipEmptyParts);
 
-	if (!formattedStr.startsWith(" ***")) // don't ignore status messages
-	{
-		if (formattedStr.startsWith(" *")) // emote
-			parts[0] = parts[1];
-		if(parts.size() > 0 && ignoreList.contains(parts[0], Qt::CaseInsensitive))
-			return;
-	}
+    if (!formattedStr.startsWith(" ***")) // don't ignore status messages
+    {
+        if (formattedStr.startsWith(" *")) // emote
+            parts[0] = parts[1];
+        if(parts.size() > 0 && ignoreList.contains(parts[0], Qt::CaseInsensitive))
+            return;
+    }
 
-	QString color("");
-	bool isFriend = friendsList.contains(parts[0], Qt::CaseInsensitive);
-	
-	if (str.startsWith("\x03"))
-		color = QString("#c0c0c0");
-	else if (str.startsWith("\x02"))
-		color = QString(isFriend ? "#00ff00" : "#ff00ff");
-	else if (isFriend)
-		color = QString("#00c000");
+    QString color("");
+    bool isFriend = friendsList.contains(parts[0], Qt::CaseInsensitive);
+    
+    if (str.startsWith("\x03"))
+        color = QString("#c0c0c0");
+    else if (str.startsWith("\x02"))
+        color = QString(isFriend ? "#00ff00" : "#ff00ff");
+    else if (isFriend)
+        color = QString("#00c000");
 
-	if(color.compare("") != 0)
-		formattedStr = QString("<font color=\"%2\">%1</font>").arg(formattedStr).arg(color);
+    if(color.compare("") != 0)
+        formattedStr = QString("<font color=\"%2\">%1</font>").arg(formattedStr).arg(color);
 
-	chatStrings.append(formattedStr);
+    chatStrings.append(formattedStr);
 
-	chatText->setHtml(chatStrings.join("<br>"));
+    chatText->setHtml(chatStrings.join("<br>"));
 
-	chatText->moveCursor(QTextCursor::End);
+    chatText->moveCursor(QTextCursor::End);
 }
 
 void HWChatWidget::onServerMessage(const QString& str)
 {
-	if (chatStrings.size() > 250)
-		chatStrings.removeFirst();
+    if (chatStrings.size() > 250)
+        chatStrings.removeFirst();
 
-	chatStrings.append("<hr>" + str + "<hr>");
+    chatStrings.append("<hr>" + str + "<hr>");
 
-	chatText->setHtml(chatStrings.join("<br>"));
+    chatText->setHtml(chatStrings.join("<br>"));
 
-	chatText->moveCursor(QTextCursor::End);
+    chatText->moveCursor(QTextCursor::End);
 }
 
 void HWChatWidget::nickAdded(const QString& nick, bool notifyNick)
 {
-	QListWidgetItem * item = new QListWidgetItem(nick);
-	updateIcon(item);
-	chatNicks->addItem(item);
+    QListWidgetItem * item = new QListWidgetItem(nick);
+    updateIcon(item);
+    chatNicks->addItem(item);
 
     if(notifyNick && notify && gameSettings->value("audio/frontendsound", true).toBool()) {
        Mix_PlayChannel(-1, sound[rand()%4], 0);
@@ -245,140 +245,140 @@
 
 void HWChatWidget::nickRemoved(const QString& nick)
 {
-	QList<QListWidgetItem *> items = chatNicks->findItems(nick, Qt::MatchExactly);
-	for(QList<QListWidgetItem *>::iterator it=items.begin(); it!=items.end();) {
-		chatNicks->takeItem(chatNicks->row(*it));
-		++it;
-	}
+    QList<QListWidgetItem *> items = chatNicks->findItems(nick, Qt::MatchExactly);
+    for(QList<QListWidgetItem *>::iterator it=items.begin(); it!=items.end();) {
+        chatNicks->takeItem(chatNicks->row(*it));
+        ++it;
+    }
 }
 
 void HWChatWidget::clear()
 {
-	chatText->clear();
-	chatStrings.clear();
-	chatNicks->clear();
+    chatText->clear();
+    chatStrings.clear();
+    chatNicks->clear();
 }
 
 void HWChatWidget::onKick()
 {
-	QListWidgetItem * curritem = chatNicks->currentItem();
-	if (curritem)
-		emit kick(curritem->text());
+    QListWidgetItem * curritem = chatNicks->currentItem();
+    if (curritem)
+        emit kick(curritem->text());
 }
 
 void HWChatWidget::onBan()
 {
-	QListWidgetItem * curritem = chatNicks->currentItem();
-	if (curritem)
-		emit ban(curritem->text());
+    QListWidgetItem * curritem = chatNicks->currentItem();
+    if (curritem)
+        emit ban(curritem->text());
 }
 
 void HWChatWidget::onInfo()
 {
-	QListWidgetItem * curritem = chatNicks->currentItem();
-	if (curritem)
-		emit info(curritem->text());
+    QListWidgetItem * curritem = chatNicks->currentItem();
+    if (curritem)
+        emit info(curritem->text());
 }
 
 void HWChatWidget::onFollow()
 {
-	QListWidgetItem * curritem = chatNicks->currentItem();
-	if (curritem)
-		emit follow(curritem->text());
+    QListWidgetItem * curritem = chatNicks->currentItem();
+    if (curritem)
+        emit follow(curritem->text());
 }
 
 void HWChatWidget::onIgnore()
 {
-	QListWidgetItem * curritem = chatNicks->currentItem();
-	if(!curritem)
-		return;
+    QListWidgetItem * curritem = chatNicks->currentItem();
+    if(!curritem)
+        return;
 
-	if(ignoreList.contains(curritem->text(), Qt::CaseInsensitive)) // already on list - remove him
-	{
-		ignoreList.removeAll(curritem->text().toLower());
-		onChatString(HWChatWidget::tr("%1 *** %2 has been removed from your ignore list").arg('\x03').arg(curritem->text()));
-	}
-	else // not on list - add
-	{
-		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
-	chatNickSelected(0); // update context menu
+    if(ignoreList.contains(curritem->text(), Qt::CaseInsensitive)) // already on list - remove him
+    {
+        ignoreList.removeAll(curritem->text().toLower());
+        onChatString(HWChatWidget::tr("%1 *** %2 has been removed from your ignore list").arg('\x03').arg(curritem->text()));
+    }
+    else // not on list - add
+    {
+        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
+    chatNickSelected(0); // update context menu
 }
 
 void HWChatWidget::onFriend()
 {
-	QListWidgetItem * curritem = chatNicks->currentItem();
-	if(!curritem)
-		return;
+    QListWidgetItem * curritem = chatNicks->currentItem();
+    if(!curritem)
+        return;
 
-	if(friendsList.contains(curritem->text(), Qt::CaseInsensitive)) // already on list - remove him
-	{
-		friendsList.removeAll(curritem->text().toLower());
-		onChatString(HWChatWidget::tr("%1 *** %2 has been removed from your friends list").arg('\x03').arg(curritem->text()));
-	}
-	else // not on list - add
-	{
-		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
-	chatNickSelected(0); // update context menu
+    if(friendsList.contains(curritem->text(), Qt::CaseInsensitive)) // already on list - remove him
+    {
+        friendsList.removeAll(curritem->text().toLower());
+        onChatString(HWChatWidget::tr("%1 *** %2 has been removed from your friends list").arg('\x03').arg(curritem->text()));
+    }
+    else // not on list - add
+    {
+        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
+    chatNickSelected(0); // update context menu
 }
 
 void HWChatWidget::chatNickDoubleClicked(QListWidgetItem * item)
 {
-	if (item) onFollow();
+    if (item) onFollow();
 }
 
 void HWChatWidget::chatNickSelected(int index)
 {
-	QListWidgetItem* item = chatNicks->currentItem();
-	if (!item)
-		return;
+    QListWidgetItem* item = chatNicks->currentItem();
+    if (!item)
+        return;
 
-	// update context menu labels according to possible action
-	if(ignoreList.contains(item->text(), Qt::CaseInsensitive))
-		acIgnore->setText(QAction::tr("Unignore"));
-	else
-		acIgnore->setText(QAction::tr("Ignore"));
+    // update context menu labels according to possible action
+    if(ignoreList.contains(item->text(), Qt::CaseInsensitive))
+        acIgnore->setText(QAction::tr("Unignore"));
+    else
+        acIgnore->setText(QAction::tr("Ignore"));
 
-	if(friendsList.contains(item->text(), Qt::CaseInsensitive))
-		acFriend->setText(QAction::tr("Remove friend"));
-	else
-		acFriend->setText(QAction::tr("Add friend"));
+    if(friendsList.contains(item->text(), Qt::CaseInsensitive))
+        acFriend->setText(QAction::tr("Remove friend"));
+    else
+        acFriend->setText(QAction::tr("Add friend"));
 }
 
 void HWChatWidget::setShowReady(bool s)
 {
-	showReady = s;
+    showReady = s;
 }
 
 void HWChatWidget::setReadyStatus(const QString & nick, bool isReady)
 {
-	QList<QListWidgetItem *> items = chatNicks->findItems(nick, Qt::MatchExactly);
-	if (items.size() != 1)
-	{
-		qWarning("Bug: cannot find user in chat");
-		return;
-	}
+    QList<QListWidgetItem *> items = chatNicks->findItems(nick, Qt::MatchExactly);
+    if (items.size() != 1)
+    {
+        qWarning("Bug: cannot find user in chat");
+        return;
+    }
 
-	items[0]->setData(Qt::UserRole, isReady); // bulb status
-	updateIcon(items[0]);
+    items[0]->setData(Qt::UserRole, isReady); // bulb status
+    updateIcon(items[0]);
 
-	// ensure we're still showing the status bulbs
-	showReady = true;
+    // ensure we're still showing the status bulbs
+    showReady = true;
 }
 
 void HWChatWidget::adminAccess(bool b)
 {
-	chatNicks->removeAction(acKick);
-	chatNicks->removeAction(acBan);
+    chatNicks->removeAction(acKick);
+    chatNicks->removeAction(acBan);
 
-	if(b)
-	{
-		chatNicks->insertAction(0, acKick);
-//		chatNicks->insertAction(0, acBan);
-	}
+    if(b)
+    {
+        chatNicks->insertAction(0, acKick);
+//      chatNicks->insertAction(0, acBan);
+    }
 }
--- a/QTfrontend/fpsedit.cpp	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/fpsedit.cpp	Sat Mar 06 10:59:20 2010 +0000
@@ -19,13 +19,13 @@
 #include "fpsedit.h"
 
 FPSEdit::FPSEdit(QWidget * parent) :
-	QSpinBox(parent)
+    QSpinBox(parent)
 {
-	setRange(1, 34);
-	setValue(27);
+    setRange(1, 34);
+    setValue(27);
 }
 
 QString FPSEdit::textFromValue(int value) const
 {
-	return QString::number(1000 / (35 - value));
+    return QString::number(1000 / (35 - value));
 }
--- a/QTfrontend/fpsedit.h	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/fpsedit.h	Sat Mar 06 10:59:20 2010 +0000
@@ -23,13 +23,13 @@
 
 class FPSEdit : public QSpinBox
 {
-	Q_OBJECT
+    Q_OBJECT
 
 public:
-	FPSEdit(QWidget * parent = 0);
+    FPSEdit(QWidget * parent = 0);
 
 protected:
-	 QString textFromValue (int value) const;
+     QString textFromValue (int value) const;
 };
 
 #endif // _FPSEDIT_H
--- a/QTfrontend/frameTeam.cpp	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/frameTeam.cpp	Sat Mar 06 10:59:20 2010 +0000
@@ -27,32 +27,32 @@
 FrameTeams::FrameTeams(QWidget* parent) :
   QFrame(parent), maxHedgehogsPerGame(48), overallHedgehogs(0), mainLayout(this), nonInteractive(false)
 {
-	QPalette newPalette = palette();
-	newPalette.setColor(QPalette::Window, QColor(0x00, 0x00, 0x00));
-	setPalette(newPalette);
-	setAutoFillBackground(true);
+    QPalette newPalette = palette();
+    newPalette.setColor(QPalette::Window, QColor(0x00, 0x00, 0x00));
+    setPalette(newPalette);
+    setAutoFillBackground(true);
 
-	mainLayout.setSpacing(1);
-	mainLayout.setContentsMargins(4, 4, 4, 4);
+    mainLayout.setSpacing(1);
+    mainLayout.setContentsMargins(4, 4, 4, 4);
 
-	availableColors.push_back(*color1);
-	availableColors.push_back(*color2);
-	availableColors.push_back(*color3);
-	availableColors.push_back(*color4);
-	availableColors.push_back(*color5);
-	availableColors.push_back(*color6);
+    availableColors.push_back(*color1);
+    availableColors.push_back(*color2);
+    availableColors.push_back(*color3);
+    availableColors.push_back(*color4);
+    availableColors.push_back(*color5);
+    availableColors.push_back(*color6);
 
-	resetColors();
+    resetColors();
 }
 
 void FrameTeams::setInteractivity(bool interactive)
 {
-	nonInteractive = !interactive;
-	for(tmapTeamToWidget::iterator it=teamToWidget.begin(); it!=teamToWidget.end(); ++it) {
-		TeamShowWidget* pts = dynamic_cast<TeamShowWidget*>(it.value());
-		if(!pts) throw;
-		pts->setInteractivity(interactive);
-	}
+    nonInteractive = !interactive;
+    for(tmapTeamToWidget::iterator it=teamToWidget.begin(); it!=teamToWidget.end(); ++it) {
+        TeamShowWidget* pts = dynamic_cast<TeamShowWidget*>(it.value());
+        if(!pts) throw;
+        pts->setInteractivity(interactive);
+    }
 }
 
 void FrameTeams::resetColors()
--- a/QTfrontend/game.cpp	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/game.cpp	Sat Mar 06 10:59:20 2010 +0000
@@ -37,315 +37,315 @@
   ammostr(ammo),
   m_pTeamSelWidget(pTeamSelWidget)
 {
-	this->config = config;
-	this->gamecfg = gamecfg;
-	TeamCount = 0;
+    this->config = config;
+    this->gamecfg = gamecfg;
+    TeamCount = 0;
 }
 
 HWGame::~HWGame()
 {
-	SetGameState(gsDestroyed);
+    SetGameState(gsDestroyed);
 }
 
 void HWGame::onClientDisconnect()
 {
-	switch (gameType) {
-		case gtDemo: break;
-		case gtNet:
-			emit HaveRecord(true, demo);
-			break;
-		default:
-			if (gameState == gsInterrupted) emit HaveRecord(false, demo);
-			else if (gameState == gsFinished) emit HaveRecord(true, demo);
-	}
-	SetGameState(gsStopped);
+    switch (gameType) {
+        case gtDemo: break;
+        case gtNet:
+            emit HaveRecord(true, demo);
+            break;
+        default:
+            if (gameState == gsInterrupted) emit HaveRecord(false, demo);
+            else if (gameState == gsFinished) emit HaveRecord(true, demo);
+    }
+    SetGameState(gsStopped);
 }
 
 void HWGame::commonConfig()
 {
-	QByteArray buf;
-	QString gt;
-	switch (gameType) {
-		case gtDemo:
-			gt = "TD";
-			break;
-		case gtNet:
-			gt = "TN";
-			break;
-		default:
-			gt = "TL";
-	}
-	HWProto::addStringToBuffer(buf, gt);
+    QByteArray buf;
+    QString gt;
+    switch (gameType) {
+        case gtDemo:
+            gt = "TD";
+            break;
+        case gtNet:
+            gt = "TN";
+            break;
+        default:
+            gt = "TL";
+    }
+    HWProto::addStringToBuffer(buf, gt);
 
-	HWProto::addStringListToBuffer(buf, gamecfg->getFullConfig());
+    HWProto::addStringListToBuffer(buf, gamecfg->getFullConfig());
 
-	if (m_pTeamSelWidget)
-	{
-		QList<HWTeam> teams = m_pTeamSelWidget->getPlayingTeams();
-		for(QList<HWTeam>::iterator it = teams.begin(); it != teams.end(); ++it)
-		{
-			HWProto::addStringListToBuffer(buf,
-				(*it).TeamGameConfig(gamecfg->getInitHealth()));
-			HWProto::addStringToBuffer(buf, QString("eammstore %1").arg(ammostr));
-		}
-	}
-	RawSendIPC(buf);
+    if (m_pTeamSelWidget)
+    {
+        QList<HWTeam> teams = m_pTeamSelWidget->getPlayingTeams();
+        for(QList<HWTeam>::iterator it = teams.begin(); it != teams.end(); ++it)
+        {
+            HWProto::addStringListToBuffer(buf,
+                (*it).TeamGameConfig(gamecfg->getInitHealth()));
+            HWProto::addStringToBuffer(buf, QString("eammstore %1").arg(ammostr));
+        }
+    }
+    RawSendIPC(buf);
 }
 
 void HWGame::SendConfig()
 {
-	commonConfig();
+    commonConfig();
 }
 
 void HWGame::SendQuickConfig()
 {
-	QByteArray teamscfg;
+    QByteArray teamscfg;
 
-	HWProto::addStringToBuffer(teamscfg, "TL");
-	HWProto::addStringToBuffer(teamscfg, QString("etheme %1")
-			.arg((Themes->size() > 0) ? Themes->at(rand() % Themes->size()) : "steel"));
-	HWProto::addStringToBuffer(teamscfg, "eseed " + QUuid::createUuid().toString());
+    HWProto::addStringToBuffer(teamscfg, "TL");
+    HWProto::addStringToBuffer(teamscfg, QString("etheme %1")
+            .arg((Themes->size() > 0) ? Themes->at(rand() % Themes->size()) : "steel"));
+    HWProto::addStringToBuffer(teamscfg, "eseed " + QUuid::createUuid().toString());
 
-	HWNamegen namegen;
+    HWNamegen namegen;
 
-	HWTeam * team1;
-	team1 = new HWTeam;
-	team1->difficulty = 0;
-	team1->teamColor = *color1;
-	team1->numHedgehogs = 4;
-	namegen.TeamRandomNames(team1,TRUE);
-	HWProto::addStringListToBuffer(teamscfg,
-			team1->TeamGameConfig(100));
+    HWTeam * team1;
+    team1 = new HWTeam;
+    team1->difficulty = 0;
+    team1->teamColor = *color1;
+    team1->numHedgehogs = 4;
+    namegen.TeamRandomNames(team1,TRUE);
+    HWProto::addStringListToBuffer(teamscfg,
+            team1->TeamGameConfig(100));
 
-	HWTeam * team2;
-	team2 = new HWTeam;
-	team2->difficulty = 4;
-	team2->teamColor = *color2;
-	team2->numHedgehogs = 4;
-	namegen.TeamRandomNames(team2,TRUE);
-	HWProto::addStringListToBuffer(teamscfg,
-			team2->TeamGameConfig(100));
+    HWTeam * team2;
+    team2 = new HWTeam;
+    team2->difficulty = 4;
+    team2->teamColor = *color2;
+    team2->numHedgehogs = 4;
+    namegen.TeamRandomNames(team2,TRUE);
+    HWProto::addStringListToBuffer(teamscfg,
+            team2->TeamGameConfig(100));
 
-	HWProto::addStringToBuffer(teamscfg, "eammstore " + *cDefaultAmmoStore);
-	HWProto::addStringToBuffer(teamscfg, "eammstore " + *cDefaultAmmoStore);
-	RawSendIPC(teamscfg);
+    HWProto::addStringToBuffer(teamscfg, "eammstore " + *cDefaultAmmoStore);
+    HWProto::addStringToBuffer(teamscfg, "eammstore " + *cDefaultAmmoStore);
+    RawSendIPC(teamscfg);
 }
 
 void HWGame::SendTrainingConfig()
 {
-	QByteArray traincfg;
-	HWProto::addStringToBuffer(traincfg, "TL");
+    QByteArray traincfg;
+    HWProto::addStringToBuffer(traincfg, "TL");
 
-	HWProto::addStringToBuffer(traincfg, "escript " + datadir->absolutePath() + "/Missions/" + training + ".hwt");
+    HWProto::addStringToBuffer(traincfg, "escript " + datadir->absolutePath() + "/Missions/" + training + ".hwt");
 
-	RawSendIPC(traincfg);
+    RawSendIPC(traincfg);
 }
 
 void HWGame::SendNetConfig()
 {
-	commonConfig();
+    commonConfig();
 }
 
 void HWGame::ParseMessage(const QByteArray & msg)
 {
-	switch(msg.at(1)) {
-		case '?': {
-			SendIPC("!");
-			break;
-		}
-		case 'C': {
-			switch (gameType) {
-				case gtLocal: {
-					SendConfig();
-					break;
-				}
-				case gtQLocal: {
-					SendQuickConfig();
-					break;
-				}
-				case gtDemo: break;
-				case gtNet: {
-					SendNetConfig();
-					break;
-				}
-				case gtTraining: {
-					SendTrainingConfig();
-					break;
-				}
-			}
-			break;
-		}
-		case 'E': {
-			int size = msg.size();
-			emit ErrorMessage(QString("Last two engine messages:\n") + QString().append(msg.mid(2)).left(size - 4));
-			return;
-		}
-		case 'K': {
-			ulong kb = msg.mid(2).toULong();
-			if (kb==1) {
-			  qWarning("%s", KBMessages[kb - 1].toLocal8Bit().constData());
-			  return;
-			}
-			if (kb && kb <= KBmsgsCount)
-			{
-				emit ErrorMessage(KBMessages[kb - 1]);
-			}
-			return;
-		}
-		case 'i': {
-			emit GameStats(msg.at(2), QString::fromUtf8(msg.mid(3)));
-			break;
-		}
-		case 'Q': {
-			SetGameState(gsInterrupted);
-			break;
-		}
-		case 'q': {
-			SetGameState(gsFinished);
-			break;
-		}
-		case 's': {
-			int size = msg.size();
-			QString msgbody = QString::fromUtf8(msg.mid(2).left(size - 4));
-			emit SendChat(msgbody);
-			// FIXME: /me command doesn't work here
-			QByteArray buf;
-			HWProto::addStringToBuffer(buf, "s" + HWProto::formatChatMsg(config->netNick(), msgbody) + "\x20\x20");
-			demo.append(buf);
-			break;
-		}
-		case 'b': {
-			int size = msg.size();
-			QString msgbody = QString::fromUtf8(msg.mid(2).left(size - 4));
-			emit SendTeamMessage(msgbody);
-			break;
-		}
-		default: {
-			if (gameType == gtNet)
-			{
-				emit SendNet(msg);
-			}
-		if (msg.at(1) != 's')
-			demo.append(msg);
-		}
-	}
+    switch(msg.at(1)) {
+        case '?': {
+            SendIPC("!");
+            break;
+        }
+        case 'C': {
+            switch (gameType) {
+                case gtLocal: {
+                    SendConfig();
+                    break;
+                }
+                case gtQLocal: {
+                    SendQuickConfig();
+                    break;
+                }
+                case gtDemo: break;
+                case gtNet: {
+                    SendNetConfig();
+                    break;
+                }
+                case gtTraining: {
+                    SendTrainingConfig();
+                    break;
+                }
+            }
+            break;
+        }
+        case 'E': {
+            int size = msg.size();
+            emit ErrorMessage(QString("Last two engine messages:\n") + QString().append(msg.mid(2)).left(size - 4));
+            return;
+        }
+        case 'K': {
+            ulong kb = msg.mid(2).toULong();
+            if (kb==1) {
+              qWarning("%s", KBMessages[kb - 1].toLocal8Bit().constData());
+              return;
+            }
+            if (kb && kb <= KBmsgsCount)
+            {
+                emit ErrorMessage(KBMessages[kb - 1]);
+            }
+            return;
+        }
+        case 'i': {
+            emit GameStats(msg.at(2), QString::fromUtf8(msg.mid(3)));
+            break;
+        }
+        case 'Q': {
+            SetGameState(gsInterrupted);
+            break;
+        }
+        case 'q': {
+            SetGameState(gsFinished);
+            break;
+        }
+        case 's': {
+            int size = msg.size();
+            QString msgbody = QString::fromUtf8(msg.mid(2).left(size - 4));
+            emit SendChat(msgbody);
+            // FIXME: /me command doesn't work here
+            QByteArray buf;
+            HWProto::addStringToBuffer(buf, "s" + HWProto::formatChatMsg(config->netNick(), msgbody) + "\x20\x20");
+            demo.append(buf);
+            break;
+        }
+        case 'b': {
+            int size = msg.size();
+            QString msgbody = QString::fromUtf8(msg.mid(2).left(size - 4));
+            emit SendTeamMessage(msgbody);
+            break;
+        }
+        default: {
+            if (gameType == gtNet)
+            {
+                emit SendNet(msg);
+            }
+        if (msg.at(1) != 's')
+            demo.append(msg);
+        }
+    }
 }
 
 void HWGame::FromNet(const QByteArray & msg)
 {
-	RawSendIPC(msg);
+    RawSendIPC(msg);
 }
 
 void HWGame::FromNetChat(const QString & msg)
 {
-	QByteArray buf;
-	HWProto::addStringToBuffer(buf, 's' + msg + "\x20\x20");
-	RawSendIPC(buf);
+    QByteArray buf;
+    HWProto::addStringToBuffer(buf, 's' + msg + "\x20\x20");
+    RawSendIPC(buf);
 }
 
 void HWGame::onClientRead()
 {
-	quint8 msglen;
-	quint32 bufsize;
-	while (!readbuffer.isEmpty() && ((bufsize = readbuffer.size()) > 0) &&
-			((msglen = readbuffer.data()[0]) < bufsize))
-	{
-		QByteArray msg = readbuffer.left(msglen + 1);
-		readbuffer.remove(0, msglen + 1);
-		ParseMessage(msg);
-	}
+    quint8 msglen;
+    quint32 bufsize;
+    while (!readbuffer.isEmpty() && ((bufsize = readbuffer.size()) > 0) &&
+            ((msglen = readbuffer.data()[0]) < bufsize))
+    {
+        QByteArray msg = readbuffer.left(msglen + 1);
+        readbuffer.remove(0, msglen + 1);
+        ParseMessage(msg);
+    }
 }
 
 QStringList HWGame::setArguments()
 {
-	QStringList arguments;
-	QRect resolution = config->vid_Resolution();
-	arguments << cfgdir->absolutePath();
-	arguments << QString::number(resolution.width());
-	arguments << QString::number(resolution.height());
-	arguments << QString::number(config->bitDepth()); // bpp
-	arguments << QString("%1").arg(ipc_port);
-	arguments << (config->vid_Fullscreen() ? "1" : "0");
-	arguments << (config->isSoundEnabled() ? "1" : "0");
+    QStringList arguments;
+    QRect resolution = config->vid_Resolution();
+    arguments << cfgdir->absolutePath();
+    arguments << QString::number(resolution.width());
+    arguments << QString::number(resolution.height());
+    arguments << QString::number(config->bitDepth()); // bpp
+    arguments << QString("%1").arg(ipc_port);
+    arguments << (config->vid_Fullscreen() ? "1" : "0");
+    arguments << (config->isSoundEnabled() ? "1" : "0");
 #ifdef _WIN32
-	arguments << (config->isSoundHardware() ? "1" : "0");
+    arguments << (config->isSoundHardware() ? "1" : "0");
 #else
-	arguments << "0";
+    arguments << "0";
 #endif
-	arguments << (config->isWeaponTooltip() ? "1" : "0");
-	arguments << tr("en.txt");
-	arguments << QString::number(config->volume()); // sound volume
-	arguments << QString::number(config->timerInterval());
-	arguments << datadir->absolutePath();
-	arguments << (config->isShowFPSEnabled() ? "1" : "0");
-	arguments << (config->isAltDamageEnabled() ? "1" : "0");
-	arguments << config->netNick().toUtf8().toBase64();
-	arguments << (config->isMusicEnabled() ? "1" : "0");
-	arguments << (config->isReducedQuality() ? "1" : "0");
-	return arguments;
+    arguments << (config->isWeaponTooltip() ? "1" : "0");
+    arguments << tr("en.txt");
+    arguments << QString::number(config->volume()); // sound volume
+    arguments << QString::number(config->timerInterval());
+    arguments << datadir->absolutePath();
+    arguments << (config->isShowFPSEnabled() ? "1" : "0");
+    arguments << (config->isAltDamageEnabled() ? "1" : "0");
+    arguments << config->netNick().toUtf8().toBase64();
+    arguments << (config->isMusicEnabled() ? "1" : "0");
+    arguments << (config->isReducedQuality() ? "1" : "0");
+    return arguments;
 }
 
 void HWGame::AddTeam(const QString & teamname)
 {
-	if (TeamCount == 5) return;
-	teams[TeamCount] = teamname;
-	TeamCount++;
+    if (TeamCount == 5) return;
+    teams[TeamCount] = teamname;
+    TeamCount++;
 }
 
 void HWGame::PlayDemo(const QString & demofilename)
 {
-	gameType = gtDemo;
-	QFile demofile(demofilename);
-	if (!demofile.open(QIODevice::ReadOnly))
-	{
-		emit ErrorMessage(tr("Cannot open demofile %1").arg(demofilename));
-		return ;
-	}
+    gameType = gtDemo;
+    QFile demofile(demofilename);
+    if (!demofile.open(QIODevice::ReadOnly))
+    {
+        emit ErrorMessage(tr("Cannot open demofile %1").arg(demofilename));
+        return ;
+    }
 
-	// read demo
-	toSendBuf = demofile.readAll();
+    // read demo
+    toSendBuf = demofile.readAll();
 
-	// run engine
-	demo.clear();
-	Start();
-	SetGameState(gsStarted);
+    // run engine
+    demo.clear();
+    Start();
+    SetGameState(gsStarted);
 }
 
 void HWGame::StartNet()
 {
-	gameType = gtNet;
-	demo.clear();
-	Start();
-	SetGameState(gsStarted);
+    gameType = gtNet;
+    demo.clear();
+    Start();
+    SetGameState(gsStarted);
 }
 
 void HWGame::StartLocal()
 {
-	gameType = gtLocal;
-	demo.clear();
-	Start();
-	SetGameState(gsStarted);
+    gameType = gtLocal;
+    demo.clear();
+    Start();
+    SetGameState(gsStarted);
 }
 
 void HWGame::StartQuick()
 {
-	gameType = gtQLocal;
-	demo.clear();
-	Start();
-	SetGameState(gsStarted);
+    gameType = gtQLocal;
+    demo.clear();
+    Start();
+    SetGameState(gsStarted);
 }
 
 void HWGame::StartTraining(const QString & file)
 {
-	gameType = gtTraining;
-	training = file;
-	demo.clear();
-	Start();
-	SetGameState(gsStarted);
+    gameType = gtTraining;
+    training = file;
+    demo.clear();
+    Start();
+    SetGameState(gsStarted);
 }
 
 void HWGame::SetGameState(GameState state)
 {
-	gameState = state;
-	emit GameStateChanged(state);
+    gameState = state;
+    emit GameStateChanged(state);
 }
--- a/QTfrontend/game.h	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/game.h	Sat Mar 06 10:59:20 2010 +0000
@@ -30,71 +30,71 @@
 class TeamSelWidget;
 
 enum GameState {
-	gsNotStarted = 0,
-	gsStarted  = 1,
-	gsInterrupted = 2,
-	gsFinished = 3,
-	gsStopped = 4,
-	gsDestroyed = 5
+    gsNotStarted = 0,
+    gsStarted  = 1,
+    gsInterrupted = 2,
+    gsFinished = 3,
+    gsStopped = 4,
+    gsDestroyed = 5
 };
 
 
 class HWGame : public TCPBase
 {
-	Q_OBJECT
+    Q_OBJECT
 public:
-	HWGame(GameUIConfig * config, GameCFGWidget * gamecfg, QString ammo, TeamSelWidget* pTeamSelWidget = 0);
-	virtual ~HWGame();
-	void AddTeam(const QString & team);
-	void PlayDemo(const QString & demofilename);
-	void StartLocal();
-	void StartQuick();
-	void StartNet();
-	void StartTraining(const QString & file);
+    HWGame(GameUIConfig * config, GameCFGWidget * gamecfg, QString ammo, TeamSelWidget* pTeamSelWidget = 0);
+    virtual ~HWGame();
+    void AddTeam(const QString & team);
+    void PlayDemo(const QString & demofilename);
+    void StartLocal();
+    void StartQuick();
+    void StartNet();
+    void StartTraining(const QString & file);
 
  protected:
-	virtual QStringList setArguments();
-	virtual void onClientRead();
-	virtual void onClientDisconnect();
+    virtual QStringList setArguments();
+    virtual void onClientRead();
+    virtual void onClientDisconnect();
 
 signals:
-	void SendNet(const QByteArray & msg);
-	void SendChat(const QString & msg);
-	void SendTeamMessage(const QString & msg);
-	void GameStateChanged(GameState gameState);
-	void GameStats(char type, const QString & info);
-	void HaveRecord(bool isDemo, const QByteArray & record);
-	void ErrorMessage(const QString &);
+    void SendNet(const QByteArray & msg);
+    void SendChat(const QString & msg);
+    void SendTeamMessage(const QString & msg);
+    void GameStateChanged(GameState gameState);
+    void GameStats(char type, const QString & info);
+    void HaveRecord(bool isDemo, const QByteArray & record);
+    void ErrorMessage(const QString &);
 
 public slots:
-	void FromNet(const QByteArray & msg);
-	void FromNetChat(const QString & msg);
+    void FromNet(const QByteArray & msg);
+    void FromNetChat(const QString & msg);
 
 private:
-	enum GameType {
-		gtLocal    = 1,
-		gtQLocal   = 2,
-		gtDemo     = 3,
-		gtNet      = 4,
-		gtTraining = 5
+    enum GameType {
+        gtLocal    = 1,
+        gtQLocal   = 2,
+        gtDemo     = 3,
+        gtNet      = 4,
+        gtTraining = 5
     };
-	char msgbuf[MAXMSGCHARS];
-	QString teams[5];
-	QString ammostr;
-	int TeamCount;
-	GameUIConfig * config;
-	GameCFGWidget * gamecfg;
-	TeamSelWidget* m_pTeamSelWidget;
-	GameType gameType;
-	GameState gameState;
+    char msgbuf[MAXMSGCHARS];
+    QString teams[5];
+    QString ammostr;
+    int TeamCount;
+    GameUIConfig * config;
+    GameCFGWidget * gamecfg;
+    TeamSelWidget* m_pTeamSelWidget;
+    GameType gameType;
+    GameState gameState;
 
-	void commonConfig();
-	void SendConfig();
-	void SendQuickConfig();
-	void SendNetConfig();
-	void SendTrainingConfig();
-	void ParseMessage(const QByteArray & msg);
-	void SetGameState(GameState state);
+    void commonConfig();
+    void SendConfig();
+    void SendQuickConfig();
+    void SendNetConfig();
+    void SendTrainingConfig();
+    void ParseMessage(const QByteArray & msg);
+    void SetGameState(GameState state);
 };
 
 #endif
--- a/QTfrontend/gamecfgwidget.cpp	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/gamecfgwidget.cpp	Sat Mar 06 10:59:20 2010 +0000
@@ -34,242 +34,242 @@
 GameCFGWidget::GameCFGWidget(QWidget* parent, bool externalControl) :
   QGroupBox(parent), mainLayout(this)
 {
-	mainLayout.setMargin(0);
-//	mainLayout.setSizeConstraint(QLayout::SetMinimumSize);
+    mainLayout.setMargin(0);
+//  mainLayout.setSizeConstraint(QLayout::SetMinimumSize);
 
-	pMapContainer = new HWMapContainer(this);
-	mainLayout.addWidget(pMapContainer, 0, 0);
+    pMapContainer = new HWMapContainer(this);
+    mainLayout.addWidget(pMapContainer, 0, 0);
 
-	IconedGroupBox *GBoxOptions = new IconedGroupBox(this);
-	GBoxOptions->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
-	mainLayout.addWidget(GBoxOptions);
+    IconedGroupBox *GBoxOptions = new IconedGroupBox(this);
+    GBoxOptions->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
+    mainLayout.addWidget(GBoxOptions);
 
-	QGridLayout *GBoxOptionsLayout = new QGridLayout(GBoxOptions);
+    QGridLayout *GBoxOptionsLayout = new QGridLayout(GBoxOptions);
 
-	GameSchemes = new QComboBox(GBoxOptions);
-	GBoxOptionsLayout->addWidget(GameSchemes, 0, 1);
-	connect(GameSchemes, SIGNAL(currentIndexChanged(int)), this, SLOT(schemeChanged(int)));
+    GameSchemes = new QComboBox(GBoxOptions);
+    GBoxOptionsLayout->addWidget(GameSchemes, 0, 1);
+    connect(GameSchemes, SIGNAL(currentIndexChanged(int)), this, SLOT(schemeChanged(int)));
 
-	GBoxOptionsLayout->addWidget(new QLabel(QLabel::tr("Game scheme"), GBoxOptions), 0, 0);
+    GBoxOptionsLayout->addWidget(new QLabel(QLabel::tr("Game scheme"), GBoxOptions), 0, 0);
 
-	QPixmap pmEdit(":/res/edit.png");
-	
-	QPushButton * goToSchemePage = new QPushButton(GBoxOptions);
-	//goToSchemePage->setText(tr("Edit schemes"));
+    QPixmap pmEdit(":/res/edit.png");
+    
+    QPushButton * goToSchemePage = new QPushButton(GBoxOptions);
+    //goToSchemePage->setText(tr("Edit schemes"));
     goToSchemePage->setToolTip(tr("Edit schemes"));
-	goToSchemePage->setIconSize(pmEdit.size());
-	goToSchemePage->setIcon(pmEdit);
-	goToSchemePage->setMaximumWidth(pmEdit.width() + 6);
-	GBoxOptionsLayout->addWidget(goToSchemePage, 0, 2);
-	connect(goToSchemePage, SIGNAL(clicked()), this, SIGNAL(goToSchemes()));
+    goToSchemePage->setIconSize(pmEdit.size());
+    goToSchemePage->setIcon(pmEdit);
+    goToSchemePage->setMaximumWidth(pmEdit.width() + 6);
+    GBoxOptionsLayout->addWidget(goToSchemePage, 0, 2);
+    connect(goToSchemePage, SIGNAL(clicked()), this, SIGNAL(goToSchemes()));
 
-	GBoxOptionsLayout->addWidget(new QLabel(QLabel::tr("Weapons"), GBoxOptions), 1, 0);
+    GBoxOptionsLayout->addWidget(new QLabel(QLabel::tr("Weapons"), GBoxOptions), 1, 0);
 
-	WeaponsName = new QComboBox(GBoxOptions);
-	GBoxOptionsLayout->addWidget(WeaponsName, 1, 1);
+    WeaponsName = new QComboBox(GBoxOptions);
+    GBoxOptionsLayout->addWidget(WeaponsName, 1, 1);
 
-	connect(WeaponsName, SIGNAL(currentIndexChanged(int)), this, SLOT(ammoChanged(int)));
+    connect(WeaponsName, SIGNAL(currentIndexChanged(int)), this, SLOT(ammoChanged(int)));
 
-	QPushButton * goToWeaponPage = new QPushButton(GBoxOptions);
-	//goToWeaponPage->setText(tr("Edit weapons"));
+    QPushButton * goToWeaponPage = new QPushButton(GBoxOptions);
+    //goToWeaponPage->setText(tr("Edit weapons"));
     goToWeaponPage->setToolTip(tr("Edit weapons"));
-	goToWeaponPage->setIconSize(pmEdit.size());
-	goToWeaponPage->setIcon(pmEdit);
-	goToWeaponPage->setMaximumWidth(pmEdit.width() + 6);
-	GBoxOptionsLayout->addWidget(goToWeaponPage, 1, 2);
+    goToWeaponPage->setIconSize(pmEdit.size());
+    goToWeaponPage->setIcon(pmEdit);
+    goToWeaponPage->setMaximumWidth(pmEdit.width() + 6);
+    GBoxOptionsLayout->addWidget(goToWeaponPage, 1, 2);
 
-	connect(goToWeaponPage, SIGNAL(clicked()), this, SLOT(jumpToWeapons()));
+    connect(goToWeaponPage, SIGNAL(clicked()), this, SLOT(jumpToWeapons()));
 
-	connect(pMapContainer, SIGNAL(seedChanged(const QString &)), this, SLOT(seedChanged(const QString &)));
-	connect(pMapContainer, SIGNAL(mapChanged(const QString &)), this, SLOT(mapChanged(const QString &)));
-	connect(pMapContainer, SIGNAL(themeChanged(const QString &)), this, SLOT(themeChanged(const QString &)));
-	connect(pMapContainer, SIGNAL(newTemplateFilter(int)), this, SLOT(templateFilterChanged(int)));
+    connect(pMapContainer, SIGNAL(seedChanged(const QString &)), this, SLOT(seedChanged(const QString &)));
+    connect(pMapContainer, SIGNAL(mapChanged(const QString &)), this, SLOT(mapChanged(const QString &)));
+    connect(pMapContainer, SIGNAL(themeChanged(const QString &)), this, SLOT(themeChanged(const QString &)));
+    connect(pMapContainer, SIGNAL(newTemplateFilter(int)), this, SLOT(templateFilterChanged(int)));
 }
 
 void GameCFGWidget::jumpToWeapons()
 {
-	emit goToWeapons(WeaponsName->currentText());
+    emit goToWeapons(WeaponsName->currentText());
 }
 
 QVariant GameCFGWidget::schemeData(int column) const
 {
-	return GameSchemes->model()->data(GameSchemes->model()->index(GameSchemes->currentIndex(), column));
+    return GameSchemes->model()->data(GameSchemes->model()->index(GameSchemes->currentIndex(), column));
 }
 
 quint32 GameCFGWidget::getGameFlags() const
 {
-	quint32 result = 0;
+    quint32 result = 0;
 
-	if (schemeData(1).toBool())
-		result |= 0x01;
-	if (schemeData(2).toBool())
-		result |= 0x10;
-	if (schemeData(3).toBool())
-		result |= 0x04;
-	if (schemeData(4).toBool())
-		result |= 0x08;
-	if (schemeData(5).toBool())
-		result |= 0x20;
-	if (schemeData(6).toBool())
-		result |= 0x40;
-	if (schemeData(7).toBool())
-		result |= 0x80;
-	if (schemeData(8).toBool())
-		result |= 0x100;
-	if (schemeData(9).toBool())
-		result |= 0x200;
-	if (schemeData(10).toBool())
-		result |= 0x400;
-	if (schemeData(11).toBool())
-		result |= 0x800;
-	if (schemeData(12).toBool())
-		result |= 0x2000;
-	if (schemeData(13).toBool())
-		result |= 0x4000;
-	if (schemeData(14).toBool())
-		result |= 0x8000;
-	if (schemeData(15).toBool())
-		result |= 0x10000;
-	if (schemeData(16).toBool())
-		result |= 0x20000;
+    if (schemeData(1).toBool())
+        result |= 0x01;
+    if (schemeData(2).toBool())
+        result |= 0x10;
+    if (schemeData(3).toBool())
+        result |= 0x04;
+    if (schemeData(4).toBool())
+        result |= 0x08;
+    if (schemeData(5).toBool())
+        result |= 0x20;
+    if (schemeData(6).toBool())
+        result |= 0x40;
+    if (schemeData(7).toBool())
+        result |= 0x80;
+    if (schemeData(8).toBool())
+        result |= 0x100;
+    if (schemeData(9).toBool())
+        result |= 0x200;
+    if (schemeData(10).toBool())
+        result |= 0x400;
+    if (schemeData(11).toBool())
+        result |= 0x800;
+    if (schemeData(12).toBool())
+        result |= 0x2000;
+    if (schemeData(13).toBool())
+        result |= 0x4000;
+    if (schemeData(14).toBool())
+        result |= 0x8000;
+    if (schemeData(15).toBool())
+        result |= 0x10000;
+    if (schemeData(16).toBool())
+        result |= 0x20000;
 
-	return result;
+    return result;
 }
 
 quint32 GameCFGWidget::getInitHealth() const
 {
-	return schemeData(19).toInt();
+    return schemeData(19).toInt();
 }
 
 QStringList GameCFGWidget::getFullConfig() const
 {
-	QStringList sl;
-	sl.append("eseed " + pMapContainer->getCurrentSeed());
-	sl.append(QString("e$gmflags %1").arg(getGameFlags()));
-	sl.append(QString("e$damagepct %1").arg(schemeData(17).toInt()));
-	sl.append(QString("e$turntime %1").arg(schemeData(18).toInt() * 1000));
-	sl.append(QString("e$minestime %1").arg(schemeData(22).toInt() * 1000));
-	sl.append(QString("e$landadds %1").arg(schemeData(23).toInt()));
-	sl.append(QString("e$sd_turns %1").arg(schemeData(20).toInt()));
-	sl.append(QString("e$casefreq %1").arg(schemeData(21).toInt()));
-	sl.append(QString("e$minedudpct %1").arg(schemeData(24).toInt()));
-	sl.append(QString("e$explosives %1").arg(schemeData(25).toInt()));
-	sl.append(QString("e$template_filter %1").arg(pMapContainer->getTemplateFilter()));
+    QStringList sl;
+    sl.append("eseed " + pMapContainer->getCurrentSeed());
+    sl.append(QString("e$gmflags %1").arg(getGameFlags()));
+    sl.append(QString("e$damagepct %1").arg(schemeData(17).toInt()));
+    sl.append(QString("e$turntime %1").arg(schemeData(18).toInt() * 1000));
+    sl.append(QString("e$minestime %1").arg(schemeData(22).toInt() * 1000));
+    sl.append(QString("e$landadds %1").arg(schemeData(23).toInt()));
+    sl.append(QString("e$sd_turns %1").arg(schemeData(20).toInt()));
+    sl.append(QString("e$casefreq %1").arg(schemeData(21).toInt()));
+    sl.append(QString("e$minedudpct %1").arg(schemeData(24).toInt()));
+    sl.append(QString("e$explosives %1").arg(schemeData(25).toInt()));
+    sl.append(QString("e$template_filter %1").arg(pMapContainer->getTemplateFilter()));
 
-	QString currentMap = pMapContainer->getCurrentMap();
-	if (currentMap.size() > 0)
-		sl.append("emap " + currentMap);
-	sl.append("etheme " + pMapContainer->getCurrentTheme());
-	return sl;
+    QString currentMap = pMapContainer->getCurrentMap();
+    if (currentMap.size() > 0)
+        sl.append("emap " + currentMap);
+    sl.append("etheme " + pMapContainer->getCurrentTheme());
+    return sl;
 }
 
 void GameCFGWidget::setNetAmmo(const QString& name, const QString& ammo)
 {
-	bool illegal = ammo.size() != cDefaultAmmoStore->size();
-	if (illegal)
-		QMessageBox::critical(this, tr("Error"), tr("Illegal ammo scheme"));
+    bool illegal = ammo.size() != cDefaultAmmoStore->size();
+    if (illegal)
+        QMessageBox::critical(this, tr("Error"), tr("Illegal ammo scheme"));
 
-	int pos = WeaponsName->findText(name);
-	if ((pos == -1) || illegal) { // prevent from overriding schemes with bad ones
-		WeaponsName->addItem(name, ammo);
-		WeaponsName->setCurrentIndex(WeaponsName->count() - 1);
-	} else {
-		WeaponsName->setItemData(pos, ammo);
-		WeaponsName->setCurrentIndex(pos);
-	}
+    int pos = WeaponsName->findText(name);
+    if ((pos == -1) || illegal) { // prevent from overriding schemes with bad ones
+        WeaponsName->addItem(name, ammo);
+        WeaponsName->setCurrentIndex(WeaponsName->count() - 1);
+    } else {
+        WeaponsName->setItemData(pos, ammo);
+        WeaponsName->setCurrentIndex(pos);
+    }
 }
 
 void GameCFGWidget::fullNetConfig()
 {
-	ammoChanged(WeaponsName->currentIndex());
+    ammoChanged(WeaponsName->currentIndex());
 
-	seedChanged(pMapContainer->getCurrentSeed());
-	templateFilterChanged(pMapContainer->getTemplateFilter());
-	themeChanged(pMapContainer->getCurrentTheme());
+    seedChanged(pMapContainer->getCurrentSeed());
+    templateFilterChanged(pMapContainer->getTemplateFilter());
+    themeChanged(pMapContainer->getCurrentTheme());
 
-	schemeChanged(GameSchemes->currentIndex());
+    schemeChanged(GameSchemes->currentIndex());
 
-	// map must be the last
-	QString map = pMapContainer->getCurrentMap();
-	if (map.size())
-		mapChanged(map);
+    // map must be the last
+    QString map = pMapContainer->getCurrentMap();
+    if (map.size())
+        mapChanged(map);
 }
 
 void GameCFGWidget::setParam(const QString & param, const QStringList & slValue)
 {
-	if (slValue.size() == 1)
-	{
-		QString value = slValue[0];
-		if (param == "MAP") {
-			pMapContainer->setMap(value);
-			return;
-		}
-		if (param == "SEED") {
-			pMapContainer->setSeed(value);
-			return;
-		}
-		if (param == "THEME") {
-			pMapContainer->setTheme(value);
-			return;
-		}
-		if (param == "TEMPLATE") {
-			pMapContainer->setTemplateFilter(value.toUInt());
-			return;
-		}
-	}
+    if (slValue.size() == 1)
+    {
+        QString value = slValue[0];
+        if (param == "MAP") {
+            pMapContainer->setMap(value);
+            return;
+        }
+        if (param == "SEED") {
+            pMapContainer->setSeed(value);
+            return;
+        }
+        if (param == "THEME") {
+            pMapContainer->setTheme(value);
+            return;
+        }
+        if (param == "TEMPLATE") {
+            pMapContainer->setTemplateFilter(value.toUInt());
+            return;
+        }
+    }
 
-	if (slValue.size() == 2)
-	{
-		if (param == "AMMO") {
-			setNetAmmo(slValue[0], slValue[1]);
-			return;
-		}
-	}
+    if (slValue.size() == 2)
+    {
+        if (param == "AMMO") {
+            setNetAmmo(slValue[0], slValue[1]);
+            return;
+        }
+    }
 
-	qWarning("Got bad config param from net");
+    qWarning("Got bad config param from net");
 }
 
 void GameCFGWidget::ammoChanged(int index)
 {
-	if (index >= 0)
-		emit paramChanged(
-			"AMMO",
-			QStringList() << WeaponsName->itemText(index) << WeaponsName->itemData(index).toString()
-		);
+    if (index >= 0)
+        emit paramChanged(
+            "AMMO",
+            QStringList() << WeaponsName->itemText(index) << WeaponsName->itemData(index).toString()
+        );
 }
 
 void GameCFGWidget::mapChanged(const QString & value)
 {
-	emit paramChanged("MAP", QStringList(value));
+    emit paramChanged("MAP", QStringList(value));
 }
 
 void GameCFGWidget::templateFilterChanged(int value)
 {
-	emit paramChanged("TEMPLATE", QStringList(QString::number(value)));
+    emit paramChanged("TEMPLATE", QStringList(QString::number(value)));
 }
 
 void GameCFGWidget::seedChanged(const QString & value)
 {
-	emit paramChanged("SEED", QStringList(value));
+    emit paramChanged("SEED", QStringList(value));
 }
 
 void GameCFGWidget::themeChanged(const QString & value)
 {
-	emit paramChanged("THEME", QStringList(value));
+    emit paramChanged("THEME", QStringList(value));
 }
 
 void GameCFGWidget::schemeChanged(int value)
 {
-	QStringList sl;
+    QStringList sl;
 
-	int size = GameSchemes->model()->columnCount();
-	for(int i = 0; i < size; ++i)
-		sl << schemeData(i).toString();
+    int size = GameSchemes->model()->columnCount();
+    for(int i = 0; i < size; ++i)
+        sl << schemeData(i).toString();
 
-	emit paramChanged("SCHEME", sl);
+    emit paramChanged("SCHEME", sl);
 }
 
 void GameCFGWidget::resendSchemeData()
 {
-	schemeChanged(GameSchemes->currentIndex());
+    schemeChanged(GameSchemes->currentIndex());
 }
--- a/QTfrontend/gamecfgwidget.h	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/gamecfgwidget.h	Sat Mar 06 10:59:20 2010 +0000
@@ -33,46 +33,46 @@
 
 class GameCFGWidget : public QGroupBox
 {
-	Q_OBJECT
+    Q_OBJECT
 
 public:
-	GameCFGWidget(QWidget* parent, bool externalControl=false);
-	quint32 getGameFlags() const;
-	quint32 getInitHealth() const;
-	QStringList getFullConfig() const;
-	QComboBox * GameSchemes;
-	QComboBox * WeaponsName;
-	HWMapContainer* pMapContainer;
-	QTableView * tv;
+    GameCFGWidget(QWidget* parent, bool externalControl=false);
+    quint32 getGameFlags() const;
+    quint32 getInitHealth() const;
+    QStringList getFullConfig() const;
+    QComboBox * GameSchemes;
+    QComboBox * WeaponsName;
+    HWMapContainer* pMapContainer;
+    QTableView * tv;
 
 public slots:
-	void setParam(const QString & param, const QStringList & value);
-	void fullNetConfig();
-	void resendSchemeData();
+    void setParam(const QString & param, const QStringList & value);
+    void fullNetConfig();
+    void resendSchemeData();
 
 signals:
-	void paramChanged(const QString & param, const QStringList & value);
-	void goToSchemes();
-	void goToWeapons(const QString & name);
+    void paramChanged(const QString & param, const QStringList & value);
+    void goToSchemes();
+    void goToWeapons(const QString & name);
 
 private slots:
-	void ammoChanged(int index);
-	void mapChanged(const QString &);
-	void templateFilterChanged(int);
-	void seedChanged(const QString &);
-	void themeChanged(const QString &);
-	void schemeChanged(int);
-	void jumpToWeapons();
+    void ammoChanged(int index);
+    void mapChanged(const QString &);
+    void templateFilterChanged(int);
+    void seedChanged(const QString &);
+    void themeChanged(const QString &);
+    void schemeChanged(int);
+    void jumpToWeapons();
 
 private:
-	QGridLayout mainLayout;
+    QGridLayout mainLayout;
 
-	QString curNetAmmoName;
-	QString curNetAmmo;
+    QString curNetAmmoName;
+    QString curNetAmmo;
 
-	void setNetAmmo(const QString& name, const QString& ammo);
+    void setNetAmmo(const QString& name, const QString& ammo);
 
-	QVariant schemeData(int column) const;
+    QVariant schemeData(int column) const;
 };
 
 #endif // GAMECONFIGWIDGET_H
--- a/QTfrontend/gameuiconfig.cpp	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/gameuiconfig.cpp	Sat Mar 06 10:59:20 2010 +0000
@@ -30,77 +30,77 @@
 #include "fpsedit.h"
 
 GameUIConfig::GameUIConfig(HWForm * FormWidgets, const QString & fileName)
-	: QSettings(fileName, QSettings::IniFormat)
+    : QSettings(fileName, QSettings::IniFormat)
 {
-	Form = FormWidgets;
+    Form = FormWidgets;
 
-	connect(Form->ui.pageOptions->CBEnableFrontendMusic, SIGNAL(toggled(bool)), Form, SLOT(Music(bool)));
+    connect(Form->ui.pageOptions->CBEnableFrontendMusic, SIGNAL(toggled(bool)), Form, SLOT(Music(bool)));
 
-	//Form->resize(value("window/width", 640).toUInt(), value("window/height", 450).toUInt());
-	resizeToConfigValues();
+    //Form->resize(value("window/width", 640).toUInt(), value("window/height", 450).toUInt());
+    resizeToConfigValues();
 
-	Form->ui.pageOptions->WeaponTooltip->setChecked(value("misc/weaponTooltip", true).toBool());
+    Form->ui.pageOptions->WeaponTooltip->setChecked(value("misc/weaponTooltip", true).toBool());
 
-	int t = Form->ui.pageOptions->CBResolution->findText(value("video/resolution").toString());
-	Form->ui.pageOptions->CBResolution->setCurrentIndex((t < 0) ? 0 : t);
-	Form->ui.pageOptions->CBFullscreen->setChecked(value("video/fullscreen", false).toBool());
-	bool ffscr=value("video/frontendfullscreen", false).toBool();
-	Form->ui.pageOptions->CBFrontendFullscreen->setChecked(ffscr);
+    int t = Form->ui.pageOptions->CBResolution->findText(value("video/resolution").toString());
+    Form->ui.pageOptions->CBResolution->setCurrentIndex((t < 0) ? 0 : t);
+    Form->ui.pageOptions->CBFullscreen->setChecked(value("video/fullscreen", false).toBool());
+    bool ffscr=value("video/frontendfullscreen", false).toBool();
+    Form->ui.pageOptions->CBFrontendFullscreen->setChecked(ffscr);
 
-	Form->ui.pageOptions->CBReduceQuality->setChecked(value("video/reducequality", false).toBool());
-	Form->ui.pageOptions->CBFrontendEffects->setChecked(frontendEffects);
-	Form->ui.pageOptions->CBEnableSound->setChecked(value("audio/sound", true).toBool());
-	Form->ui.pageOptions->CBEnableFrontendSound->setChecked(value("audio/frontendsound", true).toBool());
+    Form->ui.pageOptions->CBReduceQuality->setChecked(value("video/reducequality", false).toBool());
+    Form->ui.pageOptions->CBFrontendEffects->setChecked(frontendEffects);
+    Form->ui.pageOptions->CBEnableSound->setChecked(value("audio/sound", true).toBool());
+    Form->ui.pageOptions->CBEnableFrontendSound->setChecked(value("audio/frontendsound", true).toBool());
 #ifdef _WIN32
-//	Form->ui.pageOptions->CBHardwareSound->setChecked(value("audio/hardware", false).toBool());
+//  Form->ui.pageOptions->CBHardwareSound->setChecked(value("audio/hardware", false).toBool());
 #endif
-	Form->ui.pageOptions->CBEnableMusic->setChecked(value("audio/music", true).toBool());
-	Form->ui.pageOptions->CBEnableFrontendMusic->setChecked(value("audio/frontendmusic", true).toBool());
-	Form->ui.pageOptions->volumeBox->setValue(value("audio/volume", 100).toUInt());
+    Form->ui.pageOptions->CBEnableMusic->setChecked(value("audio/music", true).toBool());
+    Form->ui.pageOptions->CBEnableFrontendMusic->setChecked(value("audio/frontendmusic", true).toBool());
+    Form->ui.pageOptions->volumeBox->setValue(value("audio/volume", 100).toUInt());
 
-	QString netNick = value("net/nick", "").toString();
-	if (netNick.isEmpty())
-		netNick = QInputDialog::getText(Form,
-				QObject::tr("Nickname"),
-				QObject::tr("Please enter your nickname"),
-				QLineEdit::Normal,
-				QDir::home().dirName());
+    QString netNick = value("net/nick", "").toString();
+    if (netNick.isEmpty())
+        netNick = QInputDialog::getText(Form,
+                QObject::tr("Nickname"),
+                QObject::tr("Please enter your nickname"),
+                QLineEdit::Normal,
+                QDir::home().dirName());
 
-	Form->ui.pageOptions->editNetNick->setText(netNick);
+    Form->ui.pageOptions->editNetNick->setText(netNick);
 
-	delete netHost;
-	netHost = new QString(value("net/ip", "").toString());
-	netPort = value("net/port", 46631).toUInt();
+    delete netHost;
+    netHost = new QString(value("net/ip", "").toString());
+    netPort = value("net/port", 46631).toUInt();
 
-	Form->ui.pageNetServer->leServerDescr->setText(value("net/servername", "hedgewars server").toString());
-	Form->ui.pageNetServer->sbPort->setValue(value("net/serverport", 46631).toUInt());
+    Form->ui.pageNetServer->leServerDescr->setText(value("net/servername", "hedgewars server").toString());
+    Form->ui.pageNetServer->sbPort->setValue(value("net/serverport", 46631).toUInt());
 
-	Form->ui.pageOptions->CBShowFPS->setChecked(value("fps/show", false).toBool());
-	Form->ui.pageOptions->fpsedit->setValue(value("fps/interval", 27).toUInt());
+    Form->ui.pageOptions->CBShowFPS->setChecked(value("fps/show", false).toBool());
+    Form->ui.pageOptions->fpsedit->setValue(value("fps/interval", 27).toUInt());
 
-	Form->ui.pageOptions->CBAltDamage->setChecked(value("misc/altdamage", false).toBool());
-	Form->ui.pageOptions->CBNameWithDate->setChecked(value("misc/appendTimeToRecords", false).toBool());
+    Form->ui.pageOptions->CBAltDamage->setChecked(value("misc/altdamage", false).toBool());
+    Form->ui.pageOptions->CBNameWithDate->setChecked(value("misc/appendTimeToRecords", false).toBool());
 
 #ifdef SPARKLE_ENABLED
         Form->ui.pageOptions->CBAutoUpdate->setChecked(value("misc/autoUpdate", true).toBool());
 #endif
 
-	Form->ui.pageOptions->CBLanguage->setCurrentIndex(Form->ui.pageOptions->CBLanguage->findData(value("misc/locale", "").toString()));
+    Form->ui.pageOptions->CBLanguage->setCurrentIndex(Form->ui.pageOptions->CBLanguage->findData(value("misc/locale", "").toString()));
 
-	depth = QApplication::desktop()->depth();
-	if (depth < 16) depth = 16;
-	else if (depth > 16) depth = 32;
+    depth = QApplication::desktop()->depth();
+    if (depth < 16) depth = 16;
+    else if (depth > 16) depth = 32;
 }
 
 QStringList GameUIConfig::GetTeamsList()
 {
-	QStringList teamslist = cfgdir->entryList(QStringList("*.cfg"));
-	QStringList cleanedList;
-	for (QStringList::Iterator it = teamslist.begin(); it != teamslist.end(); ++it ) {
+    QStringList teamslist = cfgdir->entryList(QStringList("*.cfg"));
+    QStringList cleanedList;
+    for (QStringList::Iterator it = teamslist.begin(); it != teamslist.end(); ++it ) {
             QString tmpTeamStr=(*it).replace(QRegExp("^(.*)\\.cfg$"), "\\1");
             cleanedList.push_back(tmpTeamStr);
-	}
-	return cleanedList;
+    }
+    return cleanedList;
 }
 
 void GameUIConfig::resizeToConfigValues()
@@ -110,46 +110,46 @@
 
 void GameUIConfig::SaveOptions()
 {
-	setValue("video/resolution", Form->ui.pageOptions->CBResolution->currentText());
-	setValue("video/fullscreen", vid_Fullscreen());
+    setValue("video/resolution", Form->ui.pageOptions->CBResolution->currentText());
+    setValue("video/fullscreen", vid_Fullscreen());
 
-	setValue("video/reducequality", isReducedQuality());
+    setValue("video/reducequality", isReducedQuality());
 
-	setValue("video/frontendeffects", isFrontendEffects());
+    setValue("video/frontendeffects", isFrontendEffects());
 
-	setValue("misc/weaponTooltip", isWeaponTooltip());
+    setValue("misc/weaponTooltip", isWeaponTooltip());
 
-	bool ffscr = isFrontendFullscreen();
-	setValue("video/frontendfullscreen", ffscr);
-	emit frontendFullscreen(ffscr);
-	if (!ffscr) {
-	  setValue("window/width", Form->width());
-	  setValue("window/height", Form->height());
-	} else {
-	  //resizeToConfigValues(); // TODO: why this has been made?
-	}
+    bool ffscr = isFrontendFullscreen();
+    setValue("video/frontendfullscreen", ffscr);
+    emit frontendFullscreen(ffscr);
+    if (!ffscr) {
+      setValue("window/width", Form->width());
+      setValue("window/height", Form->height());
+    } else {
+      //resizeToConfigValues(); // TODO: why this has been made?
+    }
 
-	setValue("audio/sound", isSoundEnabled());
-	setValue("audio/frontendsound", isFrontendSoundEnabled());
+    setValue("audio/sound", isSoundEnabled());
+    setValue("audio/frontendsound", isFrontendSoundEnabled());
 #ifdef _WIN32
-//	setValue("audio/hardware", isSoundHardware());
+//  setValue("audio/hardware", isSoundHardware());
 #endif
-	setValue("audio/music", isMusicEnabled());
-	setValue("audio/frontendmusic", isFrontendMusicEnabled());
-	setValue("audio/volume", Form->ui.pageOptions->volumeBox->value());
+    setValue("audio/music", isMusicEnabled());
+    setValue("audio/frontendmusic", isFrontendMusicEnabled());
+    setValue("audio/volume", Form->ui.pageOptions->volumeBox->value());
 
-	setValue("net/nick", netNick());
-	setValue("net/ip", *netHost);
-	setValue("net/port", netPort);
-	setValue("net/servername", Form->ui.pageNetServer->leServerDescr->text());
-	setValue("net/serverport", Form->ui.pageNetServer->sbPort->value());
+    setValue("net/nick", netNick());
+    setValue("net/ip", *netHost);
+    setValue("net/port", netPort);
+    setValue("net/servername", Form->ui.pageNetServer->leServerDescr->text());
+    setValue("net/serverport", Form->ui.pageNetServer->sbPort->value());
 
-	setValue("fps/show", isShowFPSEnabled());
-	setValue("fps/interval", Form->ui.pageOptions->fpsedit->value());
+    setValue("fps/show", isShowFPSEnabled());
+    setValue("fps/interval", Form->ui.pageOptions->fpsedit->value());
 
-	setValue("misc/altdamage", isAltDamageEnabled());
-	setValue("misc/appendTimeToRecords", appendDateTimeToRecordName());
-	setValue("misc/locale", language());
+    setValue("misc/altdamage", isAltDamageEnabled());
+    setValue("misc/appendTimeToRecords", appendDateTimeToRecordName());
+    setValue("misc/locale", language());
 
 #ifdef SPARKLE_ENABLED
         setValue("misc/autoUpdate", isAutoUpdateEnabled());
@@ -159,24 +159,24 @@
 
 QString GameUIConfig::language()
 {
-	return Form->ui.pageOptions->CBLanguage->itemData(Form->ui.pageOptions->CBLanguage->currentIndex()).toString();
+    return Form->ui.pageOptions->CBLanguage->itemData(Form->ui.pageOptions->CBLanguage->currentIndex()).toString();
 }
 
 QRect GameUIConfig::vid_Resolution()
 {
-	QRect result(0, 0, 640, 480);
-	QStringList wh = Form->ui.pageOptions->CBResolution->currentText().split('x');
-	if (wh.size() == 2)
-	{
-		result.setWidth(wh[0].toInt());
-		result.setHeight(wh[1].toInt());
-	}
-	return result;
+    QRect result(0, 0, 640, 480);
+    QStringList wh = Form->ui.pageOptions->CBResolution->currentText().split('x');
+    if (wh.size() == 2)
+    {
+        result.setWidth(wh[0].toInt());
+        result.setHeight(wh[1].toInt());
+    }
+    return result;
 }
 
 bool GameUIConfig::vid_Fullscreen()
 {
-	return Form->ui.pageOptions->CBFullscreen->isChecked();
+    return Form->ui.pageOptions->CBFullscreen->isChecked();
 }
 
 bool GameUIConfig::isReducedQuality() const
@@ -200,43 +200,43 @@
 
 bool GameUIConfig::isSoundEnabled()
 {
-	return Form->ui.pageOptions->CBEnableSound->isChecked();
+    return Form->ui.pageOptions->CBEnableSound->isChecked();
 }
 bool GameUIConfig::isFrontendSoundEnabled()
 {
-	return Form->ui.pageOptions->CBEnableFrontendSound->isChecked();
+    return Form->ui.pageOptions->CBEnableFrontendSound->isChecked();
 }
 
 #ifdef _WIN32
 bool GameUIConfig::isSoundHardware()
 {
-//	return Form->ui.pageOptions->CBHardwareSound->isChecked();
+//  return Form->ui.pageOptions->CBHardwareSound->isChecked();
 return false;
 }
 #endif
 
 bool GameUIConfig::isMusicEnabled()
 {
-	return Form->ui.pageOptions->CBEnableMusic->isChecked();
+    return Form->ui.pageOptions->CBEnableMusic->isChecked();
 }
 bool GameUIConfig::isFrontendMusicEnabled()
 {
-	return Form->ui.pageOptions->CBEnableFrontendMusic->isChecked();
+    return Form->ui.pageOptions->CBEnableFrontendMusic->isChecked();
 }
 
 bool GameUIConfig::isShowFPSEnabled()
 {
-	return Form->ui.pageOptions->CBShowFPS->isChecked();
+    return Form->ui.pageOptions->CBShowFPS->isChecked();
 }
 
 bool GameUIConfig::isAltDamageEnabled()
 {
-	return Form->ui.pageOptions->CBAltDamage->isChecked();
+    return Form->ui.pageOptions->CBAltDamage->isChecked();
 }
 
 bool GameUIConfig::appendDateTimeToRecordName()
 {
-	return Form->ui.pageOptions->CBNameWithDate->isChecked();
+    return Form->ui.pageOptions->CBNameWithDate->isChecked();
 }
 
 #ifdef SPARKLE_ENABLED
@@ -248,20 +248,20 @@
 
 quint8 GameUIConfig::timerInterval()
 {
-	return 35 - Form->ui.pageOptions->fpsedit->value();
+    return 35 - Form->ui.pageOptions->fpsedit->value();
 }
 
 quint8 GameUIConfig::bitDepth()
 {
-	return depth;
+    return depth;
 }
 
 QString GameUIConfig::netNick()
 {
-	return Form->ui.pageOptions->editNetNick->text();
+    return Form->ui.pageOptions->editNetNick->text();
 }
 
 quint8 GameUIConfig::volume()
 {
-	return Form->ui.pageOptions->volumeBox->value() * 128 / 100;
+    return Form->ui.pageOptions->volumeBox->value() * 128 / 100;
 }
--- a/QTfrontend/gameuiconfig.h	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/gameuiconfig.h	Sat Mar 06 10:59:20 2010 +0000
@@ -28,49 +28,49 @@
 
 class GameUIConfig : public QSettings
 {
-	Q_OBJECT
+    Q_OBJECT
 
 public:
-	GameUIConfig(HWForm * FormWidgets, const QString & fileName);
-	QStringList GetTeamsList();
-	QRect vid_Resolution();
-	bool vid_Fullscreen();
-	bool isSoundEnabled();
-	bool isFrontendSoundEnabled();
-	QString language();
+    GameUIConfig(HWForm * FormWidgets, const QString & fileName);
+    QStringList GetTeamsList();
+    QRect vid_Resolution();
+    bool vid_Fullscreen();
+    bool isSoundEnabled();
+    bool isFrontendSoundEnabled();
+    QString language();
 #ifdef _WIN32
-	bool isSoundHardware();
+    bool isSoundHardware();
 #endif
-	bool isMusicEnabled();
-	bool isFrontendMusicEnabled();
-	bool isShowFPSEnabled();
-	bool isAltDamageEnabled();
-	bool appendDateTimeToRecordName();
-	quint8 volume();
-	quint8 timerInterval();
-	quint8 bitDepth();
-	QString netNick();
-	bool isReducedQuality() const;
-	bool isFrontendEffects() const;
-	bool isFrontendFullscreen() const;
-	bool isWeaponTooltip() const;
-	void resizeToConfigValues();
+    bool isMusicEnabled();
+    bool isFrontendMusicEnabled();
+    bool isShowFPSEnabled();
+    bool isAltDamageEnabled();
+    bool appendDateTimeToRecordName();
+    quint8 volume();
+    quint8 timerInterval();
+    quint8 bitDepth();
+    QString netNick();
+    bool isReducedQuality() const;
+    bool isFrontendEffects() const;
+    bool isFrontendFullscreen() const;
+    bool isWeaponTooltip() const;
+    void resizeToConfigValues();
 
 #ifdef __APPLE__
 #ifdef SPARKLE_ENABLED
-	bool isAutoUpdateEnabled();
+    bool isAutoUpdateEnabled();
 #endif
 #endif
 
  signals:
-	void frontendFullscreen(bool value);
+    void frontendFullscreen(bool value);
 
 public slots:
-	void SaveOptions();
+    void SaveOptions();
 
 private:
-	HWForm * Form;
-	quint8 depth;
+    HWForm * Form;
+    quint8 depth;
 };
 
 #endif
--- a/QTfrontend/hats.cpp	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/hats.cpp	Sat Mar 06 10:59:20 2010 +0000
@@ -26,84 +26,84 @@
 HatsModel::HatsModel(QObject* parent) :
   QAbstractListModel(parent)
 {
-	QPixmap hhpix = QPixmap(datadir->absolutePath() + "/Graphics/Hedgehog/Idle.png").copy(0, 0, 32, 32);
+    QPixmap hhpix = QPixmap(datadir->absolutePath() + "/Graphics/Hedgehog/Idle.png").copy(0, 0, 32, 32);
 
-	QDir tmpdir;
-	tmpdir.cd(datadir->absolutePath());
-	tmpdir.cd("Graphics");
-	tmpdir.cd("Hats");
+    QDir tmpdir;
+    tmpdir.cd(datadir->absolutePath());
+    tmpdir.cd("Graphics");
+    tmpdir.cd("Hats");
 
-	tmpdir.setFilter(QDir::Files);
+    tmpdir.setFilter(QDir::Files);
 
 
-	QStringList hatsList = tmpdir.entryList(QStringList("*.png"));
-	for (QStringList::Iterator it = hatsList.begin(); it != hatsList.end(); ++it )
-	{
-		QString str = (*it).replace(QRegExp("^(.*)\\.png"), "\\1");
-		QPixmap pix(datadir->absolutePath() + "/Graphics/Hats/" + str + ".png");
+    QStringList hatsList = tmpdir.entryList(QStringList("*.png"));
+    for (QStringList::Iterator it = hatsList.begin(); it != hatsList.end(); ++it )
+    {
+        QString str = (*it).replace(QRegExp("^(.*)\\.png"), "\\1");
+        QPixmap pix(datadir->absolutePath() + "/Graphics/Hats/" + str + ".png");
 
-		QPixmap tmppix(32, 37);
-		tmppix.fill(QColor(Qt::transparent));
+        QPixmap tmppix(32, 37);
+        tmppix.fill(QColor(Qt::transparent));
 
-		QPainter painter(&tmppix);
-		painter.drawPixmap(QPoint(0, 5), hhpix);
-		painter.drawPixmap(QPoint(0, 0), pix.copy(0, 0, 32, 32));
-		painter.end();
+        QPainter painter(&tmppix);
+        painter.drawPixmap(QPoint(0, 5), hhpix);
+        painter.drawPixmap(QPoint(0, 0), pix.copy(0, 0, 32, 32));
+        painter.end();
 
-		hats.append(qMakePair(str, QIcon(tmppix)));
-	}
+        hats.append(qMakePair(str, QIcon(tmppix)));
+    }
     // Reserved hats
     tmpdir.cd("Reserved");
-	hatsList = tmpdir.entryList(QStringList(playerHash+"*.png"));
-	for (QStringList::Iterator it = hatsList.begin(); it != hatsList.end(); ++it )
-	{
-		QString str = (*it).replace(QRegExp("^(.*)\\.png"), "\\1");
-		QPixmap pix(datadir->absolutePath() + "/Graphics/Hats/Reserved/" + str + ".png");
+    hatsList = tmpdir.entryList(QStringList(playerHash+"*.png"));
+    for (QStringList::Iterator it = hatsList.begin(); it != hatsList.end(); ++it )
+    {
+        QString str = (*it).replace(QRegExp("^(.*)\\.png"), "\\1");
+        QPixmap pix(datadir->absolutePath() + "/Graphics/Hats/Reserved/" + str + ".png");
 
-		QPixmap tmppix(32, 37);
-		tmppix.fill(QColor(Qt::transparent));
+        QPixmap tmppix(32, 37);
+        tmppix.fill(QColor(Qt::transparent));
 
-		QPainter painter(&tmppix);
-		painter.drawPixmap(QPoint(0, 5), hhpix);
-		painter.drawPixmap(QPoint(0, 0), pix.copy(0, 0, 32, 32));
-		painter.end();
+        QPainter painter(&tmppix);
+        painter.drawPixmap(QPoint(0, 5), hhpix);
+        painter.drawPixmap(QPoint(0, 0), pix.copy(0, 0, 32, 32));
+        painter.end();
 
-		hats.append(qMakePair("Reserved "+str.remove(0,32), QIcon(tmppix)));
-	}
+        hats.append(qMakePair("Reserved "+str.remove(0,32), QIcon(tmppix)));
+    }
 }
 
 QVariant HatsModel::headerData(int section,
             Qt::Orientation orientation, int role) const
 {
-	return QVariant();
+    return QVariant();
 }
 
 int HatsModel::rowCount(const QModelIndex &parent) const
 {
-	if (parent.isValid())
-		return 0;
-	else
-		return hats.size();
+    if (parent.isValid())
+        return 0;
+    else
+        return hats.size();
 }
 
 /*int HatsModel::columnCount(const QModelIndex & parent) const
 {
-	if (parent.isValid())
-		return 0;
-	else
-		return 2;
+    if (parent.isValid())
+        return 0;
+    else
+        return 2;
 }
 */
 QVariant HatsModel::data(const QModelIndex &index,
                          int role) const
 {
-	if (!index.isValid() || index.row() < 0
-		|| index.row() >= hats.size()
-		|| (role != Qt::DisplayRole && role != Qt::DecorationRole))
-		return QVariant();
+    if (!index.isValid() || index.row() < 0
+        || index.row() >= hats.size()
+        || (role != Qt::DisplayRole && role != Qt::DecorationRole))
+        return QVariant();
 
-	if (role == Qt::DisplayRole)
-		return hats.at(index.row()).first;
-	else // role == Qt::DecorationRole
-		return hats.at(index.row()).second;
+    if (role == Qt::DisplayRole)
+        return hats.at(index.row()).first;
+    else // role == Qt::DecorationRole
+        return hats.at(index.row()).second;
 }
--- a/QTfrontend/hats.h	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/hats.h	Sat Mar 06 10:59:20 2010 +0000
@@ -27,18 +27,18 @@
 
 class HatsModel : public QAbstractListModel
 {
-	Q_OBJECT
+    Q_OBJECT
 
 public:
-	HatsModel(QObject *parent = 0);
+    HatsModel(QObject *parent = 0);
 
-	QVariant headerData(int section, Qt::Orientation orientation, int role) const;
-	int rowCount(const QModelIndex & parent) const;
-	//int columnCount(const QModelIndex & parent) const;
+    QVariant headerData(int section, Qt::Orientation orientation, int role) const;
+    int rowCount(const QModelIndex & parent) const;
+    //int columnCount(const QModelIndex & parent) const;
 
-	QVariant data(const QModelIndex &index, int role) const;
+    QVariant data(const QModelIndex &index, int role) const;
 protected:
-	QVector<QPair<QString, QIcon> > hats;
+    QVector<QPair<QString, QIcon> > hats;
 };
 
 #endif // _HATS_INCLUDED
--- a/QTfrontend/hwform.cpp	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/hwform.cpp	Sat Mar 06 10:59:20 2010 +0000
@@ -75,21 +75,21 @@
   : QMainWindow(parent), pnetserver(0), pRegisterServer(0), editedTeam(0), hwnet(0)
 {
 #ifdef USE_XFIRE
-	xfire_init();
+    xfire_init();
 #endif
     gameSettings = new QSettings(cfgdir->absolutePath() + "/hedgewars.ini", QSettings::IniFormat);
     frontendEffects = gameSettings->value("video/frontendeffects", true).toBool();
     playerHash = QString(QCryptographicHash::hash(gameSettings->value("net/nick","").toString().toLatin1(), QCryptographicHash::Md5).toHex());
 
-	ui.setupUi(this);
+    ui.setupUi(this);
 
-	CustomizePalettes();
-	
-	ui.pageOptions->CBResolution->addItems(sdli.getResolutions());
+    CustomizePalettes();
+    
+    ui.pageOptions->CBResolution->addItems(sdli.getResolutions());
 
-	config = new GameUIConfig(this, cfgdir->absolutePath() + "/hedgewars.ini");
+    config = new GameUIConfig(this, cfgdir->absolutePath() + "/hedgewars.ini");
 
-	namegen = new HWNamegen();
+    namegen = new HWNamegen();
 
 #ifdef __APPLE__
         panel = new M3Panel;
@@ -97,107 +97,107 @@
         AutoUpdater* updater;
         CocoaInitializer initializer;
         updater = new SparkleAutoUpdater(SPARKLE_APPCAST_URL);
-	if(updater && config->isAutoUpdateEnabled())
+    if(updater && config->isAutoUpdateEnabled())
             updater->checkForUpdates();
 #endif        
 #endif
 
-	UpdateTeamsLists();
-	UpdateWeapons();
+    UpdateTeamsLists();
+    UpdateWeapons();
 
-	connect(config, SIGNAL(frontendFullscreen(bool)), this, SLOT(onFrontendFullscreen(bool)));
-	onFrontendFullscreen(config->isFrontendFullscreen());
+    connect(config, SIGNAL(frontendFullscreen(bool)), this, SLOT(onFrontendFullscreen(bool)));
+    onFrontendFullscreen(config->isFrontendFullscreen());
 
-	connect(ui.pageMain->BtnSinglePlayer, SIGNAL(clicked()), this, SLOT(GoToSinglePlayer()));
-	connect(ui.pageMain->BtnSetup, SIGNAL(clicked()), this, SLOT(GoToSetup()));
-	connect(ui.pageMain->BtnNet, SIGNAL(clicked()), this, SLOT(GoToNetType()));
-	connect(ui.pageMain->BtnInfo, SIGNAL(clicked()), this, SLOT(GoToInfo()));
-	connect(ui.pageMain->BtnExit, SIGNAL(pressed()), this, SLOT(btnExitPressed()));
-	connect(ui.pageMain->BtnExit, SIGNAL(clicked()), this, SLOT(btnExitClicked()));
+    connect(ui.pageMain->BtnSinglePlayer, SIGNAL(clicked()), this, SLOT(GoToSinglePlayer()));
+    connect(ui.pageMain->BtnSetup, SIGNAL(clicked()), this, SLOT(GoToSetup()));
+    connect(ui.pageMain->BtnNet, SIGNAL(clicked()), this, SLOT(GoToNetType()));
+    connect(ui.pageMain->BtnInfo, SIGNAL(clicked()), this, SLOT(GoToInfo()));
+    connect(ui.pageMain->BtnExit, SIGNAL(pressed()), this, SLOT(btnExitPressed()));
+    connect(ui.pageMain->BtnExit, SIGNAL(clicked()), this, SLOT(btnExitClicked()));
 
-	connect(ui.pageEditTeam->BtnTeamSave, SIGNAL(clicked()), this, SLOT(TeamSave()));
-	connect(ui.pageEditTeam->BtnTeamDiscard, SIGNAL(clicked()), this, SLOT(TeamDiscard()));
+    connect(ui.pageEditTeam->BtnTeamSave, SIGNAL(clicked()), this, SLOT(TeamSave()));
+    connect(ui.pageEditTeam->BtnTeamDiscard, SIGNAL(clicked()), this, SLOT(TeamDiscard()));
 
-	connect(ui.pageEditTeam->signalMapper, SIGNAL(mapped(const int &)), this, SLOT(RandomName(const int &)));
-	connect(ui.pageEditTeam->randTeamButton, SIGNAL(clicked()), this, SLOT(RandomNames()));
+    connect(ui.pageEditTeam->signalMapper, SIGNAL(mapped(const int &)), this, SLOT(RandomName(const int &)));
+    connect(ui.pageEditTeam->randTeamButton, SIGNAL(clicked()), this, SLOT(RandomNames()));
 
-	connect(ui.pageMultiplayer->BtnBack, SIGNAL(clicked()), this, SLOT(GoBack()));
-	connect(ui.pageMultiplayer->BtnStartMPGame, SIGNAL(clicked()), this, SLOT(StartMPGame()));
-	connect(ui.pageMultiplayer->teamsSelect, SIGNAL(setEnabledGameStart(bool)),
-		ui.pageMultiplayer->BtnStartMPGame, SLOT(setEnabled(bool)));
-	connect(ui.pageMultiplayer->teamsSelect, SIGNAL(SetupClicked()), this, SLOT(IntermediateSetup()));
-	connect(ui.pageMultiplayer->gameCFG, SIGNAL(goToSchemes()), this, SLOT(GoToSchemes()));
-	connect(ui.pageMultiplayer->gameCFG, SIGNAL(goToWeapons(const QString &)), this, SLOT(GoToSelectWeaponSet(const QString &)));
+    connect(ui.pageMultiplayer->BtnBack, SIGNAL(clicked()), this, SLOT(GoBack()));
+    connect(ui.pageMultiplayer->BtnStartMPGame, SIGNAL(clicked()), this, SLOT(StartMPGame()));
+    connect(ui.pageMultiplayer->teamsSelect, SIGNAL(setEnabledGameStart(bool)),
+        ui.pageMultiplayer->BtnStartMPGame, SLOT(setEnabled(bool)));
+    connect(ui.pageMultiplayer->teamsSelect, SIGNAL(SetupClicked()), this, SLOT(IntermediateSetup()));
+    connect(ui.pageMultiplayer->gameCFG, SIGNAL(goToSchemes()), this, SLOT(GoToSchemes()));
+    connect(ui.pageMultiplayer->gameCFG, SIGNAL(goToWeapons(const QString &)), this, SLOT(GoToSelectWeaponSet(const QString &)));
 
-	connect(ui.pagePlayDemo->BtnBack, SIGNAL(clicked()), this, SLOT(GoBack()));
-	connect(ui.pagePlayDemo->BtnPlayDemo, SIGNAL(clicked()), this, SLOT(PlayDemo()));
-	connect(ui.pagePlayDemo->DemosList, SIGNAL(doubleClicked (const QModelIndex &)), this, SLOT(PlayDemo()));
+    connect(ui.pagePlayDemo->BtnBack, SIGNAL(clicked()), this, SLOT(GoBack()));
+    connect(ui.pagePlayDemo->BtnPlayDemo, SIGNAL(clicked()), this, SLOT(PlayDemo()));
+    connect(ui.pagePlayDemo->DemosList, SIGNAL(doubleClicked (const QModelIndex &)), this, SLOT(PlayDemo()));
 
-	connect(ui.pageOptions->BtnBack, SIGNAL(clicked()), this, SLOT(GoBack()));
-	connect(ui.pageOptions->BtnNewTeam, SIGNAL(clicked()), this, SLOT(NewTeam()));
-	connect(ui.pageOptions->BtnEditTeam, SIGNAL(clicked()), this, SLOT(EditTeam()));
-	connect(ui.pageOptions->BtnSaveOptions, SIGNAL(clicked()), config, SLOT(SaveOptions()));
-	connect(ui.pageOptions->BtnSaveOptions, SIGNAL(clicked()), this, SLOT(GoBack()));
+    connect(ui.pageOptions->BtnBack, SIGNAL(clicked()), this, SLOT(GoBack()));
+    connect(ui.pageOptions->BtnNewTeam, SIGNAL(clicked()), this, SLOT(NewTeam()));
+    connect(ui.pageOptions->BtnEditTeam, SIGNAL(clicked()), this, SLOT(EditTeam()));
+    connect(ui.pageOptions->BtnSaveOptions, SIGNAL(clicked()), config, SLOT(SaveOptions()));
+    connect(ui.pageOptions->BtnSaveOptions, SIGNAL(clicked()), this, SLOT(GoBack()));
 
-	connect(ui.pageOptions->WeaponEdit, SIGNAL(clicked()), this, SLOT(GoToSelectWeapon()));
-	connect(ui.pageOptions->WeaponsButt, SIGNAL(clicked()), this, SLOT(GoToSelectNewWeapon()));
-	connect(ui.pageSelectWeapon->pWeapons, SIGNAL(weaponsChanged()), this, SLOT(UpdateWeapons()));
+    connect(ui.pageOptions->WeaponEdit, SIGNAL(clicked()), this, SLOT(GoToSelectWeapon()));
+    connect(ui.pageOptions->WeaponsButt, SIGNAL(clicked()), this, SLOT(GoToSelectNewWeapon()));
+    connect(ui.pageSelectWeapon->pWeapons, SIGNAL(weaponsChanged()), this, SLOT(UpdateWeapons()));
 
-	connect(ui.pageNet->BtnBack, SIGNAL(clicked()), this, SLOT(GoBack()));
-	connect(ui.pageNet->BtnSpecifyServer, SIGNAL(clicked()), this, SLOT(NetConnect()));
-	connect(ui.pageNet->BtnNetSvrStart, SIGNAL(clicked()), this, SLOT(GoToNetServer()));
-	connect(ui.pageNet, SIGNAL(connectClicked(const QString &, quint16)), this, SLOT(NetConnectServer(const QString &, quint16)));
+    connect(ui.pageNet->BtnBack, SIGNAL(clicked()), this, SLOT(GoBack()));
+    connect(ui.pageNet->BtnSpecifyServer, SIGNAL(clicked()), this, SLOT(NetConnect()));
+    connect(ui.pageNet->BtnNetSvrStart, SIGNAL(clicked()), this, SLOT(GoToNetServer()));
+    connect(ui.pageNet, SIGNAL(connectClicked(const QString &, quint16)), this, SLOT(NetConnectServer(const QString &, quint16)));
 
-	connect(ui.pageNetServer->BtnBack, SIGNAL(clicked()), this, SLOT(GoBack()));
-	connect(ui.pageNetServer->BtnStart, SIGNAL(clicked()), this, SLOT(NetStartServer()));
+    connect(ui.pageNetServer->BtnBack, SIGNAL(clicked()), this, SLOT(GoBack()));
+    connect(ui.pageNetServer->BtnStart, SIGNAL(clicked()), this, SLOT(NetStartServer()));
 
-	connect(ui.pageNetGame->BtnBack, SIGNAL(clicked()), this, SLOT(GoBack()));
-	connect(ui.pageNetGame->pNetTeamsWidget, SIGNAL(setEnabledGameStart(bool)),
-		ui.pageNetGame->BtnGo, SLOT(setEnabled(bool)));
-	connect(ui.pageNetGame->pNetTeamsWidget, SIGNAL(setEnabledGameStart(bool)),
-		ui.pageNetGame->BtnStart, SLOT(setEnabled(bool)));
-	connect(ui.pageNetGame->pNetTeamsWidget, SIGNAL(SetupClicked()), this, SLOT(IntermediateSetup()));
-	connect(ui.pageNetGame->pGameCFG, SIGNAL(goToSchemes()), this, SLOT(GoToSchemes()));
-	connect(ui.pageNetGame->pGameCFG, SIGNAL(goToWeapons(const QString &)), this, SLOT(GoToSelectWeaponSet(const QString &)));
+    connect(ui.pageNetGame->BtnBack, SIGNAL(clicked()), this, SLOT(GoBack()));
+    connect(ui.pageNetGame->pNetTeamsWidget, SIGNAL(setEnabledGameStart(bool)),
+        ui.pageNetGame->BtnGo, SLOT(setEnabled(bool)));
+    connect(ui.pageNetGame->pNetTeamsWidget, SIGNAL(setEnabledGameStart(bool)),
+        ui.pageNetGame->BtnStart, SLOT(setEnabled(bool)));
+    connect(ui.pageNetGame->pNetTeamsWidget, SIGNAL(SetupClicked()), this, SLOT(IntermediateSetup()));
+    connect(ui.pageNetGame->pGameCFG, SIGNAL(goToSchemes()), this, SLOT(GoToSchemes()));
+    connect(ui.pageNetGame->pGameCFG, SIGNAL(goToWeapons(const QString &)), this, SLOT(GoToSelectWeaponSet(const QString &)));
 
-	connect(ui.pageRoomsList->BtnBack, SIGNAL(clicked()), this, SLOT(GoBack()));
-	connect(ui.pageRoomsList->BtnAdmin, SIGNAL(clicked()), this, SLOT(GoToAdmin()));
+    connect(ui.pageRoomsList->BtnBack, SIGNAL(clicked()), this, SLOT(GoBack()));
+    connect(ui.pageRoomsList->BtnAdmin, SIGNAL(clicked()), this, SLOT(GoToAdmin()));
 
-	connect(ui.pageInfo->BtnBack, SIGNAL(clicked()), this, SLOT(GoBack()));
+    connect(ui.pageInfo->BtnBack, SIGNAL(clicked()), this, SLOT(GoBack()));
 
-	connect(ui.pageGameStats->BtnBack, SIGNAL(clicked()), this, SLOT(GoBack()));
+    connect(ui.pageGameStats->BtnBack, SIGNAL(clicked()), this, SLOT(GoBack()));
 
-	connect(ui.pageSinglePlayer->BtnSimpleGamePage, SIGNAL(clicked()), this, SLOT(SimpleGame()));
-	connect(ui.pageSinglePlayer->BtnTrainPage, SIGNAL(clicked()), this, SLOT(GoToTraining()));
-	connect(ui.pageSinglePlayer->BtnMultiplayer, SIGNAL(clicked()), this, SLOT(GoToMultiplayer()));
-	connect(ui.pageSinglePlayer->BtnLoad, SIGNAL(clicked()), this, SLOT(GoToSaves()));
-	connect(ui.pageSinglePlayer->BtnDemos, SIGNAL(clicked()), this, SLOT(GoToDemos()));
-	connect(ui.pageSinglePlayer->BtnBack, SIGNAL(clicked()), this, SLOT(GoBack()));
+    connect(ui.pageSinglePlayer->BtnSimpleGamePage, SIGNAL(clicked()), this, SLOT(SimpleGame()));
+    connect(ui.pageSinglePlayer->BtnTrainPage, SIGNAL(clicked()), this, SLOT(GoToTraining()));
+    connect(ui.pageSinglePlayer->BtnMultiplayer, SIGNAL(clicked()), this, SLOT(GoToMultiplayer()));
+    connect(ui.pageSinglePlayer->BtnLoad, SIGNAL(clicked()), this, SLOT(GoToSaves()));
+    connect(ui.pageSinglePlayer->BtnDemos, SIGNAL(clicked()), this, SLOT(GoToDemos()));
+    connect(ui.pageSinglePlayer->BtnBack, SIGNAL(clicked()), this, SLOT(GoBack()));
 
-	connect(ui.pageTraining->BtnStartTrain, SIGNAL(clicked()), this, SLOT(StartTraining()));
-	connect(ui.pageTraining->BtnBack, SIGNAL(clicked()), this, SLOT(GoBack()));
+    connect(ui.pageTraining->BtnStartTrain, SIGNAL(clicked()), this, SLOT(StartTraining()));
+    connect(ui.pageTraining->BtnBack, SIGNAL(clicked()), this, SLOT(GoBack()));
 
-	connect(ui.pageSelectWeapon->BtnBack, SIGNAL(clicked()), this, SLOT(GoBack()));
+    connect(ui.pageSelectWeapon->BtnBack, SIGNAL(clicked()), this, SLOT(GoBack()));
 
-	connect(ui.pageSelectWeapon->BtnDelete, SIGNAL(clicked()),
-		ui.pageSelectWeapon->pWeapons, SLOT(deleteWeaponsName())); // executed first
-	connect(ui.pageSelectWeapon->pWeapons, SIGNAL(weaponsDeleted()),
-		this, SLOT(UpdateWeapons())); // executed second
-	connect(ui.pageSelectWeapon->pWeapons, SIGNAL(weaponsDeleted()),
-		this, SLOT(GoBack())); // executed third
+    connect(ui.pageSelectWeapon->BtnDelete, SIGNAL(clicked()),
+        ui.pageSelectWeapon->pWeapons, SLOT(deleteWeaponsName())); // executed first
+    connect(ui.pageSelectWeapon->pWeapons, SIGNAL(weaponsDeleted()),
+        this, SLOT(UpdateWeapons())); // executed second
+    connect(ui.pageSelectWeapon->pWeapons, SIGNAL(weaponsDeleted()),
+        this, SLOT(GoBack())); // executed third
 
-	connect(ui.pageScheme->BtnBack, SIGNAL(clicked()), this, SLOT(GoBack()));
+    connect(ui.pageScheme->BtnBack, SIGNAL(clicked()), this, SLOT(GoBack()));
 
-	connect(ui.pageAdmin->BtnBack, SIGNAL(clicked()), this, SLOT(GoBack()));
+    connect(ui.pageAdmin->BtnBack, SIGNAL(clicked()), this, SLOT(GoBack()));
 
-	connect(ui.pageNetType->BtnBack, SIGNAL(clicked()), this, SLOT(GoBack()));
-	connect(ui.pageNetType->BtnLAN, SIGNAL(clicked()), this, SLOT(GoToNet()));
-	connect(ui.pageNetType->BtnOfficialServer, SIGNAL(clicked()), this, SLOT(NetConnectOfficialServer()));
+    connect(ui.pageNetType->BtnBack, SIGNAL(clicked()), this, SLOT(GoBack()));
+    connect(ui.pageNetType->BtnLAN, SIGNAL(clicked()), this, SLOT(GoToNet()));
+    connect(ui.pageNetType->BtnOfficialServer, SIGNAL(clicked()), this, SLOT(NetConnectOfficialServer()));
 
 
-	ammoSchemeModel = new AmmoSchemeModel(this, cfgdir->absolutePath() + "/schemes.ini");
-	ui.pageScheme->setModel(ammoSchemeModel);
-	ui.pageMultiplayer->gameCFG->GameSchemes->setModel(ammoSchemeModel);
+    ammoSchemeModel = new AmmoSchemeModel(this, cfgdir->absolutePath() + "/schemes.ini");
+    ui.pageScheme->setModel(ammoSchemeModel);
+    ui.pageMultiplayer->gameCFG->GameSchemes->setModel(ammoSchemeModel);
 
     wBackground = NULL;
     if (config->isFrontendEffects()) {
@@ -208,49 +208,49 @@
        wBackground->startAnimation();
     }
 
-	PagesStack.push(ID_PAGE_MAIN);
-	GoBack();
+    PagesStack.push(ID_PAGE_MAIN);
+    GoBack();
 }
 
 #ifdef USE_XFIRE
 void HWForm::updateXfire(void)
 {
-	if(hwnet)
-	{
-		xfire_setvalue(XFIRE_SERVER, !hwnet->getHost().compare("netserver.hedgewars.org:46631") ? "Official server" : hwnet->getHost().toAscii());
-		switch(hwnet->getClientState())
-		{
-			case 1: // Connecting
-			xfire_setvalue(XFIRE_STATUS, "Connecting");
-			xfire_setvalue(XFIRE_NICKNAME, "-");
-			xfire_setvalue(XFIRE_ROOM, "-");
-			case 2: // In lobby
-			xfire_setvalue(XFIRE_STATUS, "Online");
-			xfire_setvalue(XFIRE_NICKNAME, hwnet->getNick().toAscii());
-			xfire_setvalue(XFIRE_ROOM, "In game lobby");
-			break;
-			case 3: // In room
-			xfire_setvalue(XFIRE_STATUS, "Online");
-			xfire_setvalue(XFIRE_NICKNAME, hwnet->getNick().toAscii());
-			xfire_setvalue(XFIRE_ROOM, (hwnet->getRoom() + " (waiting for players)").toAscii());
-			break;
-			case 5: // In game
-			xfire_setvalue(XFIRE_STATUS, "Online");
-			xfire_setvalue(XFIRE_NICKNAME, hwnet->getNick().toAscii());
-			xfire_setvalue(XFIRE_ROOM, (hwnet->getRoom() + " (playing or spectating)").toAscii());
-			break;
-			default:
-			break;
-		}
-	}
-	else
-	{
-		xfire_setvalue(XFIRE_STATUS, "Offline");
-		xfire_setvalue(XFIRE_NICKNAME, "-");
-		xfire_setvalue(XFIRE_ROOM, "-");
-		xfire_setvalue(XFIRE_SERVER, "-");
-	}
-	xfire_update();
+    if(hwnet)
+    {
+        xfire_setvalue(XFIRE_SERVER, !hwnet->getHost().compare("netserver.hedgewars.org:46631") ? "Official server" : hwnet->getHost().toAscii());
+        switch(hwnet->getClientState())
+        {
+            case 1: // Connecting
+            xfire_setvalue(XFIRE_STATUS, "Connecting");
+            xfire_setvalue(XFIRE_NICKNAME, "-");
+            xfire_setvalue(XFIRE_ROOM, "-");
+            case 2: // In lobby
+            xfire_setvalue(XFIRE_STATUS, "Online");
+            xfire_setvalue(XFIRE_NICKNAME, hwnet->getNick().toAscii());
+            xfire_setvalue(XFIRE_ROOM, "In game lobby");
+            break;
+            case 3: // In room
+            xfire_setvalue(XFIRE_STATUS, "Online");
+            xfire_setvalue(XFIRE_NICKNAME, hwnet->getNick().toAscii());
+            xfire_setvalue(XFIRE_ROOM, (hwnet->getRoom() + " (waiting for players)").toAscii());
+            break;
+            case 5: // In game
+            xfire_setvalue(XFIRE_STATUS, "Online");
+            xfire_setvalue(XFIRE_NICKNAME, hwnet->getNick().toAscii());
+            xfire_setvalue(XFIRE_ROOM, (hwnet->getRoom() + " (playing or spectating)").toAscii());
+            break;
+            default:
+            break;
+        }
+    }
+    else
+    {
+        xfire_setvalue(XFIRE_STATUS, "Offline");
+        xfire_setvalue(XFIRE_NICKNAME, "-");
+        xfire_setvalue(XFIRE_ROOM, "-");
+        xfire_setvalue(XFIRE_SERVER, "-");
+    }
+    xfire_update();
 }
 #endif
 
@@ -265,779 +265,779 @@
 
 void HWForm::CustomizePalettes()
 {
-	QList<QScrollBar *> allSBars = findChildren<QScrollBar *>();
-	QPalette pal = palette();
-	pal.setColor(QPalette::WindowText, QColor(0xff, 0xcc, 0x00));
-	pal.setColor(QPalette::Button, QColor(0x00, 0x35, 0x1d));
-	pal.setColor(QPalette::Base, QColor(0x00, 0x35, 0x1d));
-	pal.setColor(QPalette::Window, QColor(0x00, 0x00, 0x00));
+    QList<QScrollBar *> allSBars = findChildren<QScrollBar *>();
+    QPalette pal = palette();
+    pal.setColor(QPalette::WindowText, QColor(0xff, 0xcc, 0x00));
+    pal.setColor(QPalette::Button, QColor(0x00, 0x35, 0x1d));
+    pal.setColor(QPalette::Base, QColor(0x00, 0x35, 0x1d));
+    pal.setColor(QPalette::Window, QColor(0x00, 0x00, 0x00));
 
-	for (int i = 0; i < allSBars.size(); ++i)
-		allSBars.at(i)->setPalette(pal);
+    for (int i = 0; i < allSBars.size(); ++i)
+        allSBars.at(i)->setPalette(pal);
 }
 
 void HWForm::UpdateWeapons()
 {
-	QVector<QComboBox*> combos;
-	combos.push_back(ui.pageOptions->WeaponsName);
-	combos.push_back(ui.pageMultiplayer->gameCFG->WeaponsName);
-	combos.push_back(ui.pageNetGame->pGameCFG->WeaponsName);
+    QVector<QComboBox*> combos;
+    combos.push_back(ui.pageOptions->WeaponsName);
+    combos.push_back(ui.pageMultiplayer->gameCFG->WeaponsName);
+    combos.push_back(ui.pageNetGame->pGameCFG->WeaponsName);
 
-	QStringList names = ui.pageSelectWeapon->pWeapons->getWeaponNames();
+    QStringList names = ui.pageSelectWeapon->pWeapons->getWeaponNames();
 
-	for(QVector<QComboBox*>::iterator it = combos.begin(); it != combos.end(); ++it) {
-		(*it)->clear();
+    for(QVector<QComboBox*>::iterator it = combos.begin(); it != combos.end(); ++it) {
+        (*it)->clear();
 
-		for(int i = 0; i < names.size(); ++i)
-			(*it)->addItem(names[i], ui.pageSelectWeapon->pWeapons->getWeaponsString(names[i]));
+        for(int i = 0; i < names.size(); ++i)
+            (*it)->addItem(names[i], ui.pageSelectWeapon->pWeapons->getWeaponsString(names[i]));
 
-		int pos = (*it)->findText("Default");
-		if (pos != -1) {
-			(*it)->setCurrentIndex(pos);
-		}
-	}
+        int pos = (*it)->findText("Default");
+        if (pos != -1) {
+            (*it)->setCurrentIndex(pos);
+        }
+    }
 }
 
 void HWForm::UpdateTeamsLists(const QStringList* editable_teams)
 {
-	QStringList teamslist;
-	if(editable_teams) {
-	  teamslist =* editable_teams;
-	} else {
-	  teamslist = config->GetTeamsList();
-	}
+    QStringList teamslist;
+    if(editable_teams) {
+      teamslist =* editable_teams;
+    } else {
+      teamslist = config->GetTeamsList();
+    }
 
-	if(teamslist.empty()) {
-		HWTeam defaultTeam("DefaultTeam");
-		defaultTeam.SaveToFile();
-		teamslist.push_back("DefaultTeam");
-	}
+    if(teamslist.empty()) {
+        HWTeam defaultTeam("DefaultTeam");
+        defaultTeam.SaveToFile();
+        teamslist.push_back("DefaultTeam");
+    }
 
-	ui.pageOptions->CBTeamName->clear();
-	ui.pageOptions->CBTeamName->addItems(teamslist);
+    ui.pageOptions->CBTeamName->clear();
+    ui.pageOptions->CBTeamName->addItems(teamslist);
 }
 
 void HWForm::GoToMain()
 {
-	GoToPage(ID_PAGE_MAIN);
+    GoToPage(ID_PAGE_MAIN);
 }
 
 void HWForm::GoToSinglePlayer()
 {
-	GoToPage(ID_PAGE_SINGLEPLAYER);
+    GoToPage(ID_PAGE_SINGLEPLAYER);
 }
 
 void HWForm::GoToTraining()
 {
-	GoToPage(ID_PAGE_TRAINING);
+    GoToPage(ID_PAGE_TRAINING);
 }
 
 void HWForm::GoToSetup()
 {
-	GoToPage(ID_PAGE_SETUP);
+    GoToPage(ID_PAGE_SETUP);
 }
 
 void HWForm::GoToSelectNewWeapon()
 {
-	ui.pageSelectWeapon->pWeapons->setWeaponsName(tr("new"));
-	GoToPage(ID_PAGE_SELECTWEAPON);
+    ui.pageSelectWeapon->pWeapons->setWeaponsName(tr("new"));
+    GoToPage(ID_PAGE_SELECTWEAPON);
 }
 
 void HWForm::GoToSelectWeapon()
 {
-	ui.pageSelectWeapon->pWeapons->setWeaponsName(ui.pageOptions->WeaponsName->currentText());
-	GoToPage(ID_PAGE_SELECTWEAPON);
+    ui.pageSelectWeapon->pWeapons->setWeaponsName(ui.pageOptions->WeaponsName->currentText());
+    GoToPage(ID_PAGE_SELECTWEAPON);
 }
 
 void HWForm::GoToSelectWeaponSet(const QString & name)
 {
-	ui.pageSelectWeapon->pWeapons->setWeaponsName(name);
-	GoToPage(ID_PAGE_SELECTWEAPON);
+    ui.pageSelectWeapon->pWeapons->setWeaponsName(name);
+    GoToPage(ID_PAGE_SELECTWEAPON);
 }
 
 void HWForm::GoToInfo()
 {
-	GoToPage(ID_PAGE_INFO);
+    GoToPage(ID_PAGE_INFO);
 }
 
 void HWForm::GoToMultiplayer()
 {
-	GoToPage(ID_PAGE_MULTIPLAYER);
+    GoToPage(ID_PAGE_MULTIPLAYER);
 }
 
 void HWForm::GoToSaves()
 {
-	ui.pagePlayDemo->FillFromDir(PagePlayDemo::RT_Save);
+    ui.pagePlayDemo->FillFromDir(PagePlayDemo::RT_Save);
 
-	GoToPage(ID_PAGE_DEMOS);
+    GoToPage(ID_PAGE_DEMOS);
 }
 
 void HWForm::GoToDemos()
 {
-	ui.pagePlayDemo->FillFromDir(PagePlayDemo::RT_Demo);
+    ui.pagePlayDemo->FillFromDir(PagePlayDemo::RT_Demo);
 
-	GoToPage(ID_PAGE_DEMOS);
+    GoToPage(ID_PAGE_DEMOS);
 }
 
 void HWForm::GoToNet()
 {
-	ui.pageNet->updateServersList();
+    ui.pageNet->updateServersList();
 
-	GoToPage(ID_PAGE_NET);
+    GoToPage(ID_PAGE_NET);
 }
 
 void HWForm::GoToNetType()
 {
-	GoToPage(ID_PAGE_NETTYPE);
+    GoToPage(ID_PAGE_NETTYPE);
 }
 
 void HWForm::GoToNetServer()
 {
-	GoToPage(ID_PAGE_NETSERVER);
+    GoToPage(ID_PAGE_NETSERVER);
 }
 
 void HWForm::GoToSchemes()
 {
-	GoToPage(ID_PAGE_SCHEME);
+    GoToPage(ID_PAGE_SCHEME);
 }
 
 void HWForm::GoToAdmin()
 {
-	GoToPage(ID_PAGE_ADMIN);
+    GoToPage(ID_PAGE_ADMIN);
 }
 
 void HWForm::OnPageShown(quint8 id, quint8 lastid)
 {
 #ifdef USE_XFIRE
-	updateXfire();
+    updateXfire();
 #endif
-	if (id == ID_PAGE_MULTIPLAYER || id == ID_PAGE_NETGAME) {
-		QStringList tmNames = config->GetTeamsList();
-		TeamSelWidget* curTeamSelWidget;
+    if (id == ID_PAGE_MULTIPLAYER || id == ID_PAGE_NETGAME) {
+        QStringList tmNames = config->GetTeamsList();
+        TeamSelWidget* curTeamSelWidget;
 
-		if(id == ID_PAGE_MULTIPLAYER) {
-		  curTeamSelWidget = ui.pageMultiplayer->teamsSelect;
-		} else {
-		  curTeamSelWidget = ui.pageNetGame->pNetTeamsWidget;
-		}
+        if(id == ID_PAGE_MULTIPLAYER) {
+          curTeamSelWidget = ui.pageMultiplayer->teamsSelect;
+        } else {
+          curTeamSelWidget = ui.pageNetGame->pNetTeamsWidget;
+        }
 
-		QList<HWTeam> teamsList;
-		for(QStringList::iterator it = tmNames.begin(); it != tmNames.end(); it++) {
-		  HWTeam team(*it);
-		  team.LoadFromFile();
-		  teamsList.push_back(team);
-		}
+        QList<HWTeam> teamsList;
+        for(QStringList::iterator it = tmNames.begin(); it != tmNames.end(); it++) {
+          HWTeam team(*it);
+          team.LoadFromFile();
+          teamsList.push_back(team);
+        }
 
-		if(lastid == ID_PAGE_SETUP) { // _TEAM
-		  if (editedTeam) {
-		    curTeamSelWidget->addTeam(*editedTeam);
-		  }
-		} else if(lastid != ID_PAGE_GAMESTATS
-				&& lastid != ID_PAGE_INGAME
-				&& lastid != ID_PAGE_SCHEME
-				&& lastid != ID_PAGE_SELECTWEAPON) {
-			curTeamSelWidget->resetPlayingTeams(teamsList);
-		}
-	} else
-	if (id == ID_PAGE_GAMESTATS)
-	{
-		ui.pageGameStats->renderStats();
-	}
+        if(lastid == ID_PAGE_SETUP) { // _TEAM
+          if (editedTeam) {
+            curTeamSelWidget->addTeam(*editedTeam);
+          }
+        } else if(lastid != ID_PAGE_GAMESTATS
+                && lastid != ID_PAGE_INGAME
+                && lastid != ID_PAGE_SCHEME
+                && lastid != ID_PAGE_SELECTWEAPON) {
+            curTeamSelWidget->resetPlayingTeams(teamsList);
+        }
+    } else
+    if (id == ID_PAGE_GAMESTATS)
+    {
+        ui.pageGameStats->renderStats();
+    }
 
-	// load and save ignore/friends lists
-	if(lastid == ID_PAGE_MULTIPLAYER || lastid == ID_PAGE_NETGAME) // leaving a room
-		ui.pageNetGame->pChatWidget->saveLists(ui.pageOptions->editNetNick->text());
-	else if(lastid == ID_PAGE_ROOMSLIST) // leaving the lobby
-		ui.pageRoomsList->chatWidget->saveLists(ui.pageOptions->editNetNick->text());
-	if(id == ID_PAGE_MULTIPLAYER || id == ID_PAGE_NETGAME) // joining a room
-		ui.pageNetGame->pChatWidget->loadLists(ui.pageOptions->editNetNick->text());
-	else if(id == ID_PAGE_ROOMSLIST) // joining the lobby
-		ui.pageRoomsList->chatWidget->loadLists(ui.pageOptions->editNetNick->text());
+    // load and save ignore/friends lists
+    if(lastid == ID_PAGE_MULTIPLAYER || lastid == ID_PAGE_NETGAME) // leaving a room
+        ui.pageNetGame->pChatWidget->saveLists(ui.pageOptions->editNetNick->text());
+    else if(lastid == ID_PAGE_ROOMSLIST) // leaving the lobby
+        ui.pageRoomsList->chatWidget->saveLists(ui.pageOptions->editNetNick->text());
+    if(id == ID_PAGE_MULTIPLAYER || id == ID_PAGE_NETGAME) // joining a room
+        ui.pageNetGame->pChatWidget->loadLists(ui.pageOptions->editNetNick->text());
+    else if(id == ID_PAGE_ROOMSLIST) // joining the lobby
+        ui.pageRoomsList->chatWidget->loadLists(ui.pageOptions->editNetNick->text());
 }
 
 void HWForm::GoToPage(quint8 id)
 {
-	quint8 lastid = ui.Pages->currentIndex();
-	PagesStack.push(ui.Pages->currentIndex());
-	OnPageShown(id, lastid);
-	ui.Pages->setCurrentIndex(id);
+    quint8 lastid = ui.Pages->currentIndex();
+    PagesStack.push(ui.Pages->currentIndex());
+    OnPageShown(id, lastid);
+    ui.Pages->setCurrentIndex(id);
 }
 
 void HWForm::GoBack()
 {
-	quint8 id = PagesStack.isEmpty() ? ID_PAGE_MAIN : PagesStack.pop();
-	quint8 curid = ui.Pages->currentIndex();
-	ui.Pages->setCurrentIndex(id);
-	OnPageShown(id, curid);
+    quint8 id = PagesStack.isEmpty() ? ID_PAGE_MAIN : PagesStack.pop();
+    quint8 curid = ui.Pages->currentIndex();
+    ui.Pages->setCurrentIndex(id);
+    OnPageShown(id, curid);
 
-	if (id == ID_PAGE_CONNECTING)
-		GoBack();
-	if (id == ID_PAGE_NETSERVER)
-		GoBack();
-	if ((!hwnet) && (id == ID_PAGE_ROOMSLIST))
-		GoBack();
+    if (id == ID_PAGE_CONNECTING)
+        GoBack();
+    if (id == ID_PAGE_NETSERVER)
+        GoBack();
+    if ((!hwnet) && (id == ID_PAGE_ROOMSLIST))
+        GoBack();
 
-	if ((!hwnet) || (!hwnet->isInRoom()))
-		if (id == ID_PAGE_NETGAME || id == ID_PAGE_NETGAME)
-			GoBack();
+    if ((!hwnet) || (!hwnet->isInRoom()))
+        if (id == ID_PAGE_NETGAME || id == ID_PAGE_NETGAME)
+            GoBack();
 
-	if (curid == ID_PAGE_ROOMSLIST) NetDisconnect();
+    if (curid == ID_PAGE_ROOMSLIST) NetDisconnect();
 
-	if (curid == ID_PAGE_SCHEME)
-		ammoSchemeModel->Save();
+    if (curid == ID_PAGE_SCHEME)
+        ammoSchemeModel->Save();
 }
 
 void HWForm::btnExitPressed()
 {
-	eggTimer.start();
+    eggTimer.start();
 }
 
 void HWForm::btnExitClicked()
 {
-	if (eggTimer.elapsed() < 3000){
+    if (eggTimer.elapsed() < 3000){
 #ifdef __APPLE__
                 panel->showInstallController();
 #endif
-		close();
-	}
+        close();
+    }
         else
-	{
-		QPushButton * btn = findChild<QPushButton *>("imageButt");
-		if (btn)
-		{
-			btn->setIcon(QIcon(":/res/bonus.png"));
-		}
-	}
+    {
+        QPushButton * btn = findChild<QPushButton *>("imageButt");
+        if (btn)
+        {
+            btn->setIcon(QIcon(":/res/bonus.png"));
+        }
+    }
 }
 
 void HWForm::IntermediateSetup()
 {
-	quint8 id=ui.Pages->currentIndex();
-	TeamSelWidget* curTeamSelWidget;
+    quint8 id=ui.Pages->currentIndex();
+    TeamSelWidget* curTeamSelWidget;
 
-	if(id == ID_PAGE_MULTIPLAYER) {
-		curTeamSelWidget = ui.pageMultiplayer->teamsSelect;
-	} else {
-		curTeamSelWidget = ui.pageNetGame->pNetTeamsWidget;
-	}
+    if(id == ID_PAGE_MULTIPLAYER) {
+        curTeamSelWidget = ui.pageMultiplayer->teamsSelect;
+    } else {
+        curTeamSelWidget = ui.pageNetGame->pNetTeamsWidget;
+    }
 
-	QList<HWTeam> teams = curTeamSelWidget->getDontPlayingTeams();
-	QStringList tmnames;
-	for(QList<HWTeam>::iterator it = teams.begin(); it != teams.end(); ++it) {
-		tmnames += it->TeamName;
-	}
-	UpdateTeamsLists(&tmnames); // FIXME: still need more work if teamname is updated while configuring
+    QList<HWTeam> teams = curTeamSelWidget->getDontPlayingTeams();
+    QStringList tmnames;
+    for(QList<HWTeam>::iterator it = teams.begin(); it != teams.end(); ++it) {
+        tmnames += it->TeamName;
+    }
+    UpdateTeamsLists(&tmnames); // FIXME: still need more work if teamname is updated while configuring
 
-	GoToPage(ID_PAGE_SETUP);
+    GoToPage(ID_PAGE_SETUP);
 }
 
 void HWForm::NewTeam()
 {
-	editedTeam = new HWTeam("unnamed");
-	editedTeam->SetToPage(this);
-	GoToPage(ID_PAGE_SETUP_TEAM);
+    editedTeam = new HWTeam("unnamed");
+    editedTeam->SetToPage(this);
+    GoToPage(ID_PAGE_SETUP_TEAM);
 }
 
 void HWForm::EditTeam()
 {
-	editedTeam = new HWTeam(ui.pageOptions->CBTeamName->currentText());
-	editedTeam->LoadFromFile();
-	editedTeam->SetToPage(this);
-	GoToPage(ID_PAGE_SETUP_TEAM);
+    editedTeam = new HWTeam(ui.pageOptions->CBTeamName->currentText());
+    editedTeam->LoadFromFile();
+    editedTeam->SetToPage(this);
+    GoToPage(ID_PAGE_SETUP_TEAM);
 }
 
 void HWForm::RandomNames()
 {
-	editedTeam->GetFromPage(this);
-	namegen->TeamRandomNames(editedTeam,FALSE);
-	editedTeam->SetToPage(this);
+    editedTeam->GetFromPage(this);
+    namegen->TeamRandomNames(editedTeam,FALSE);
+    editedTeam->SetToPage(this);
 }
 
 void HWForm::RandomName(const int &i)
 {
-	editedTeam->GetFromPage(this);
-	namegen->TeamRandomName(editedTeam,i);
-	editedTeam->SetToPage(this);
+    editedTeam->GetFromPage(this);
+    namegen->TeamRandomName(editedTeam,i);
+    editedTeam->SetToPage(this);
 }
 
 void HWForm::TeamSave()
 {
-	editedTeam->GetFromPage(this);
-	editedTeam->SaveToFile();
-	delete editedTeam;
-	editedTeam=0;
-	UpdateTeamsLists();
-	GoBack();
+    editedTeam->GetFromPage(this);
+    editedTeam->SaveToFile();
+    delete editedTeam;
+    editedTeam=0;
+    UpdateTeamsLists();
+    GoBack();
 }
 
 void HWForm::TeamDiscard()
 {
-	delete editedTeam;
-	editedTeam=0;
-	GoBack();
+    delete editedTeam;
+    editedTeam=0;
+    GoBack();
 }
 
 void HWForm::SimpleGame()
 {
-	CreateGame(0, 0, *cDefaultAmmoStore);
-	game->StartQuick();
+    CreateGame(0, 0, *cDefaultAmmoStore);
+    game->StartQuick();
 }
 
 void HWForm::PlayDemo()
 {
-	QListWidgetItem * curritem = ui.pagePlayDemo->DemosList->currentItem();
-	if (!curritem)
-	{
-		QMessageBox::critical(this,
-				tr("Error"),
-				tr("Please select record from the list above"),
-				tr("OK"));
-		return ;
-	}
-	CreateGame(0, 0, 0);
-	game->PlayDemo(curritem->data(Qt::UserRole).toString());
+    QListWidgetItem * curritem = ui.pagePlayDemo->DemosList->currentItem();
+    if (!curritem)
+    {
+        QMessageBox::critical(this,
+                tr("Error"),
+                tr("Please select record from the list above"),
+                tr("OK"));
+        return ;
+    }
+    CreateGame(0, 0, 0);
+    game->PlayDemo(curritem->data(Qt::UserRole).toString());
 }
 
 void HWForm::NetConnectServer(const QString & host, quint16 port)
 {
-	_NetConnect(host, port, ui.pageOptions->editNetNick->text());
+    _NetConnect(host, port, ui.pageOptions->editNetNick->text());
 }
 
 void HWForm::NetConnectOfficialServer()
 {
-	NetConnectServer("netserver.hedgewars.org", 46631);
+    NetConnectServer("netserver.hedgewars.org", 46631);
 }
 
 void HWForm::_NetConnect(const QString & hostName, quint16 port, const QString & nick)
 {
-	if(hwnet) {
-		hwnet->Disconnect();
-		delete hwnet;
-		hwnet=0;
-	}
+    if(hwnet) {
+        hwnet->Disconnect();
+        delete hwnet;
+        hwnet=0;
+    }
 
-	ui.pageRoomsList->chatWidget->clear();
+    ui.pageRoomsList->chatWidget->clear();
 
-	hwnet = new HWNewNet(config, ui.pageNetGame->pGameCFG, ui.pageNetGame->pNetTeamsWidget);
+    hwnet = new HWNewNet(config, ui.pageNetGame->pGameCFG, ui.pageNetGame->pNetTeamsWidget);
 
-	GoToPage(ID_PAGE_CONNECTING);
+    GoToPage(ID_PAGE_CONNECTING);
 
-	connect(hwnet, SIGNAL(showMessage(const QString &)), this, SLOT(ShowErrorMessage(const QString &)), Qt::QueuedConnection);
+    connect(hwnet, SIGNAL(showMessage(const QString &)), this, SLOT(ShowErrorMessage(const QString &)), Qt::QueuedConnection);
 
-	connect(hwnet, SIGNAL(AskForRunGame()), this, SLOT(CreateNetGame()));
-	connect(hwnet, SIGNAL(Connected()), this, SLOT(NetConnected()));
-	connect(hwnet, SIGNAL(EnteredGame()), this, SLOT(NetGameEnter()));
-	connect(hwnet, SIGNAL(LeftRoom()), this, SLOT(NetLeftRoom()));
-	connect(hwnet, SIGNAL(AddNetTeam(const HWTeam&)), this, SLOT(AddNetTeam(const HWTeam&)));
-	connect(ui.pageNetGame->BtnBack, SIGNAL(clicked()), hwnet, SLOT(partRoom()));
+    connect(hwnet, SIGNAL(AskForRunGame()), this, SLOT(CreateNetGame()));
+    connect(hwnet, SIGNAL(Connected()), this, SLOT(NetConnected()));
+    connect(hwnet, SIGNAL(EnteredGame()), this, SLOT(NetGameEnter()));
+    connect(hwnet, SIGNAL(LeftRoom()), this, SLOT(NetLeftRoom()));
+    connect(hwnet, SIGNAL(AddNetTeam(const HWTeam&)), this, SLOT(AddNetTeam(const HWTeam&)));
+    connect(ui.pageNetGame->BtnBack, SIGNAL(clicked()), hwnet, SLOT(partRoom()));
 
 // rooms list page stuff
-	connect(hwnet, SIGNAL(roomsList(const QStringList&)),
-		ui.pageRoomsList, SLOT(setRoomsList(const QStringList&)));
-	connect(hwnet, SIGNAL(adminAccess(bool)),
-		ui.pageRoomsList, SLOT(setAdmin(bool)));
-	connect(hwnet, SIGNAL(adminAccess(bool)),
-		ui.pageRoomsList->chatWidget, SLOT(adminAccess(bool)));
+    connect(hwnet, SIGNAL(roomsList(const QStringList&)),
+        ui.pageRoomsList, SLOT(setRoomsList(const QStringList&)));
+    connect(hwnet, SIGNAL(adminAccess(bool)),
+        ui.pageRoomsList, SLOT(setAdmin(bool)));
+    connect(hwnet, SIGNAL(adminAccess(bool)),
+        ui.pageRoomsList->chatWidget, SLOT(adminAccess(bool)));
 
-	connect(hwnet, SIGNAL(serverMessage(const QString&)),
-		ui.pageRoomsList->chatWidget, SLOT(onServerMessage(const QString&)));
+    connect(hwnet, SIGNAL(serverMessage(const QString&)),
+        ui.pageRoomsList->chatWidget, SLOT(onServerMessage(const QString&)));
 
-	connect(ui.pageRoomsList, SIGNAL(askForCreateRoom(const QString &)),
-		hwnet, SLOT(CreateRoom(const QString&)));
-	connect(ui.pageRoomsList, SIGNAL(askForJoinRoom(const QString &)),
-		hwnet, SLOT(JoinRoom(const QString&)));
-//	connect(ui.pageRoomsList, SIGNAL(askForCreateRoom(const QString &)),
-//		this, SLOT(NetGameMaster()));
-//	connect(ui.pageRoomsList, SIGNAL(askForJoinRoom(const QString &)),
-//		this, SLOT(NetGameSlave()));
-	connect(ui.pageRoomsList, SIGNAL(askForRoomList()),
-		hwnet, SLOT(askRoomsList()));
+    connect(ui.pageRoomsList, SIGNAL(askForCreateRoom(const QString &)),
+        hwnet, SLOT(CreateRoom(const QString&)));
+    connect(ui.pageRoomsList, SIGNAL(askForJoinRoom(const QString &)),
+        hwnet, SLOT(JoinRoom(const QString&)));
+//  connect(ui.pageRoomsList, SIGNAL(askForCreateRoom(const QString &)),
+//      this, SLOT(NetGameMaster()));
+//  connect(ui.pageRoomsList, SIGNAL(askForJoinRoom(const QString &)),
+//      this, SLOT(NetGameSlave()));
+    connect(ui.pageRoomsList, SIGNAL(askForRoomList()),
+        hwnet, SLOT(askRoomsList()));
 
 // room status stuff
-	connect(hwnet, SIGNAL(roomMaster(bool)),
-		this, SLOT(NetGameChangeStatus(bool)));
+    connect(hwnet, SIGNAL(roomMaster(bool)),
+        this, SLOT(NetGameChangeStatus(bool)));
 
 // net page stuff
-	connect(hwnet, SIGNAL(chatStringFromNet(const QString&)),
-		ui.pageNetGame->pChatWidget, SLOT(onChatString(const QString&)));
-	connect(hwnet, SIGNAL(setReadyStatus(const QString &, bool)),
-		ui.pageNetGame->pChatWidget, SLOT(setReadyStatus(const QString &, bool)));
-	connect(hwnet, SIGNAL(chatStringFromMe(const QString&)),
-		ui.pageNetGame->pChatWidget, SLOT(onChatString(const QString&)));
-	connect(hwnet, SIGNAL(roomMaster(bool)),
-		ui.pageNetGame->pChatWidget, SLOT(adminAccess(bool)));
-	connect(ui.pageNetGame->pChatWidget, SIGNAL(chatLine(const QString&)),
-		hwnet, SLOT(chatLineToNet(const QString&)));
-	connect(ui.pageNetGame->BtnGo, SIGNAL(clicked()), hwnet, SLOT(ToggleReady()));
-	connect(hwnet, SIGNAL(setMyReadyStatus(bool)),
-		ui.pageNetGame, SLOT(setReadyStatus(bool)));
+    connect(hwnet, SIGNAL(chatStringFromNet(const QString&)),
+        ui.pageNetGame->pChatWidget, SLOT(onChatString(const QString&)));
+    connect(hwnet, SIGNAL(setReadyStatus(const QString &, bool)),
+        ui.pageNetGame->pChatWidget, SLOT(setReadyStatus(const QString &, bool)));
+    connect(hwnet, SIGNAL(chatStringFromMe(const QString&)),
+        ui.pageNetGame->pChatWidget, SLOT(onChatString(const QString&)));
+    connect(hwnet, SIGNAL(roomMaster(bool)),
+        ui.pageNetGame->pChatWidget, SLOT(adminAccess(bool)));
+    connect(ui.pageNetGame->pChatWidget, SIGNAL(chatLine(const QString&)),
+        hwnet, SLOT(chatLineToNet(const QString&)));
+    connect(ui.pageNetGame->BtnGo, SIGNAL(clicked()), hwnet, SLOT(ToggleReady()));
+    connect(hwnet, SIGNAL(setMyReadyStatus(bool)),
+        ui.pageNetGame, SLOT(setReadyStatus(bool)));
 
 // chat widget actions
-	connect(ui.pageNetGame->pChatWidget, SIGNAL(kick(const QString&)),
-		hwnet, SLOT(kickPlayer(const QString&)));
-	connect(ui.pageNetGame->pChatWidget, SIGNAL(ban(const QString&)),
-		hwnet, SLOT(banPlayer(const QString&)));
-	connect(ui.pageNetGame->pChatWidget, SIGNAL(info(const QString&)),
-		hwnet, SLOT(infoPlayer(const QString&)));
-	connect(ui.pageNetGame->pChatWidget, SIGNAL(follow(const QString&)),
-		hwnet, SLOT(followPlayer(const QString&)));
-	connect(ui.pageRoomsList->chatWidget, SIGNAL(kick(const QString&)),
-		hwnet, SLOT(kickPlayer(const QString&)));
-	connect(ui.pageRoomsList->chatWidget, SIGNAL(ban(const QString&)),
-		hwnet, SLOT(banPlayer(const QString&)));
-	connect(ui.pageRoomsList->chatWidget, SIGNAL(info(const QString&)),
-		hwnet, SLOT(infoPlayer(const QString&)));
-	connect(ui.pageRoomsList->chatWidget, SIGNAL(follow(const QString&)),
-		hwnet, SLOT(followPlayer(const QString&)));
+    connect(ui.pageNetGame->pChatWidget, SIGNAL(kick(const QString&)),
+        hwnet, SLOT(kickPlayer(const QString&)));
+    connect(ui.pageNetGame->pChatWidget, SIGNAL(ban(const QString&)),
+        hwnet, SLOT(banPlayer(const QString&)));
+    connect(ui.pageNetGame->pChatWidget, SIGNAL(info(const QString&)),
+        hwnet, SLOT(infoPlayer(const QString&)));
+    connect(ui.pageNetGame->pChatWidget, SIGNAL(follow(const QString&)),
+        hwnet, SLOT(followPlayer(const QString&)));
+    connect(ui.pageRoomsList->chatWidget, SIGNAL(kick(const QString&)),
+        hwnet, SLOT(kickPlayer(const QString&)));
+    connect(ui.pageRoomsList->chatWidget, SIGNAL(ban(const QString&)),
+        hwnet, SLOT(banPlayer(const QString&)));
+    connect(ui.pageRoomsList->chatWidget, SIGNAL(info(const QString&)),
+        hwnet, SLOT(infoPlayer(const QString&)));
+    connect(ui.pageRoomsList->chatWidget, SIGNAL(follow(const QString&)),
+        hwnet, SLOT(followPlayer(const QString&)));
 
 // chatting
-	connect(ui.pageRoomsList->chatWidget, SIGNAL(chatLine(const QString&)),
-		hwnet, SLOT(chatLineToLobby(const QString&)));
-	connect(hwnet, SIGNAL(chatStringLobby(const QString&)),
-		ui.pageRoomsList->chatWidget, SLOT(onChatString(const QString&)));
-	connect(hwnet, SIGNAL(chatStringFromMeLobby(const QString&)),
-		ui.pageRoomsList->chatWidget, SLOT(onChatString(const QString&)));
+    connect(ui.pageRoomsList->chatWidget, SIGNAL(chatLine(const QString&)),
+        hwnet, SLOT(chatLineToLobby(const QString&)));
+    connect(hwnet, SIGNAL(chatStringLobby(const QString&)),
+        ui.pageRoomsList->chatWidget, SLOT(onChatString(const QString&)));
+    connect(hwnet, SIGNAL(chatStringFromMeLobby(const QString&)),
+        ui.pageRoomsList->chatWidget, SLOT(onChatString(const QString&)));
 
 // nick list stuff
-	connect(hwnet, SIGNAL(nickAdded(const QString&, bool)),
-		ui.pageNetGame->pChatWidget, SLOT(nickAdded(const QString&, bool)));
-	connect(hwnet, SIGNAL(nickRemoved(const QString&)),
-		ui.pageNetGame->pChatWidget, SLOT(nickRemoved(const QString&)));
-	connect(hwnet, SIGNAL(nickAddedLobby(const QString&, bool)),
-		ui.pageRoomsList->chatWidget, SLOT(nickAdded(const QString&, bool)));
-	connect(hwnet, SIGNAL(nickRemovedLobby(const QString&)),
-		ui.pageRoomsList->chatWidget, SLOT(nickRemoved(const QString&)));
+    connect(hwnet, SIGNAL(nickAdded(const QString&, bool)),
+        ui.pageNetGame->pChatWidget, SLOT(nickAdded(const QString&, bool)));
+    connect(hwnet, SIGNAL(nickRemoved(const QString&)),
+        ui.pageNetGame->pChatWidget, SLOT(nickRemoved(const QString&)));
+    connect(hwnet, SIGNAL(nickAddedLobby(const QString&, bool)),
+        ui.pageRoomsList->chatWidget, SLOT(nickAdded(const QString&, bool)));
+    connect(hwnet, SIGNAL(nickRemovedLobby(const QString&)),
+        ui.pageRoomsList->chatWidget, SLOT(nickRemoved(const QString&)));
 
 // teams selecting stuff
-	connect(ui.pageNetGame->pNetTeamsWidget, SIGNAL(hhogsNumChanged(const HWTeam&)),
-		hwnet, SLOT(onHedgehogsNumChanged(const HWTeam&)));
-	connect(ui.pageNetGame->pNetTeamsWidget, SIGNAL(teamColorChanged(const HWTeam&)),
-		hwnet, SLOT(onTeamColorChanged(const HWTeam&)));
-	connect(ui.pageNetGame->pNetTeamsWidget, SIGNAL(teamWillPlay(HWTeam)), hwnet, SLOT(AddTeam(HWTeam)));
-	connect(ui.pageNetGame->pNetTeamsWidget, SIGNAL(acceptRequested(HWTeam)), hwnet, SLOT(AddTeam(HWTeam)));
-	connect(ui.pageNetGame->pNetTeamsWidget, SIGNAL(teamNotPlaying(const HWTeam&)), hwnet, SLOT(RemoveTeam(const HWTeam&)));
-	connect(hwnet, SIGNAL(hhnumChanged(const HWTeam&)),
-		ui.pageNetGame->pNetTeamsWidget, SLOT(changeHHNum(const HWTeam&)));
-	connect(hwnet, SIGNAL(teamColorChanged(const HWTeam&)),
-		ui.pageNetGame->pNetTeamsWidget, SLOT(changeTeamColor(const HWTeam&)));
+    connect(ui.pageNetGame->pNetTeamsWidget, SIGNAL(hhogsNumChanged(const HWTeam&)),
+        hwnet, SLOT(onHedgehogsNumChanged(const HWTeam&)));
+    connect(ui.pageNetGame->pNetTeamsWidget, SIGNAL(teamColorChanged(const HWTeam&)),
+        hwnet, SLOT(onTeamColorChanged(const HWTeam&)));
+    connect(ui.pageNetGame->pNetTeamsWidget, SIGNAL(teamWillPlay(HWTeam)), hwnet, SLOT(AddTeam(HWTeam)));
+    connect(ui.pageNetGame->pNetTeamsWidget, SIGNAL(acceptRequested(HWTeam)), hwnet, SLOT(AddTeam(HWTeam)));
+    connect(ui.pageNetGame->pNetTeamsWidget, SIGNAL(teamNotPlaying(const HWTeam&)), hwnet, SLOT(RemoveTeam(const HWTeam&)));
+    connect(hwnet, SIGNAL(hhnumChanged(const HWTeam&)),
+        ui.pageNetGame->pNetTeamsWidget, SLOT(changeHHNum(const HWTeam&)));
+    connect(hwnet, SIGNAL(teamColorChanged(const HWTeam&)),
+        ui.pageNetGame->pNetTeamsWidget, SLOT(changeTeamColor(const HWTeam&)));
 
 // admin stuff
-	connect(hwnet, SIGNAL(serverMessage(const QString&)), ui.pageAdmin, SLOT(serverMessage(const QString &)));
-	connect(ui.pageAdmin, SIGNAL(setServerMessage(const QString&)), hwnet, SLOT(newServerMessage(const QString &)));
-	connect(ui.pageAdmin->pbClearAccountsCache, SIGNAL(clicked()), hwnet, SLOT(clearAccountsCache()));
+    connect(hwnet, SIGNAL(serverMessage(const QString&)), ui.pageAdmin, SLOT(serverMessage(const QString &)));
+    connect(ui.pageAdmin, SIGNAL(setServerMessage(const QString&)), hwnet, SLOT(newServerMessage(const QString &)));
+    connect(ui.pageAdmin->pbClearAccountsCache, SIGNAL(clicked()), hwnet, SLOT(clearAccountsCache()));
 
 // disconnect
-	connect(hwnet, SIGNAL(Disconnected()), this, SLOT(ForcedDisconnect()), Qt::QueuedConnection);
+    connect(hwnet, SIGNAL(Disconnected()), this, SLOT(ForcedDisconnect()), Qt::QueuedConnection);
 
-	hwnet->Connect(hostName, port, nick);
+    hwnet->Connect(hostName, port, nick);
 }
 
 void HWForm::NetConnect()
 {
-	HWHostPortDialog * hpd = new HWHostPortDialog(this);
-	hpd->leHost->setText(*netHost);
-	hpd->sbPort->setValue(netPort);
+    HWHostPortDialog * hpd = new HWHostPortDialog(this);
+    hpd->leHost->setText(*netHost);
+    hpd->sbPort->setValue(netPort);
 
-	if (hpd->exec() == QDialog::Accepted)
-	{
-		config->SaveOptions();
-		delete netHost;
-		netHost = new QString(hpd->leHost->text());
-		netPort = hpd->sbPort->value();
-		NetConnectServer(*netHost, netPort);
-	}
+    if (hpd->exec() == QDialog::Accepted)
+    {
+        config->SaveOptions();
+        delete netHost;
+        netHost = new QString(hpd->leHost->text());
+        netPort = hpd->sbPort->value();
+        NetConnectServer(*netHost, netPort);
+    }
 }
 
 void HWForm::NetStartServer()
 {
-	config->SaveOptions();
+    config->SaveOptions();
 
-	pnetserver = new HWNetServer;
-	if(!pnetserver->StartServer(ui.pageNetServer->sbPort->value()))
-	{
-		QMessageBox::critical(0, tr("Error"),
-				tr("Unable to start the server"));
-		delete pnetserver;
-		pnetserver = 0;
-		return;
-	}
+    pnetserver = new HWNetServer;
+    if(!pnetserver->StartServer(ui.pageNetServer->sbPort->value()))
+    {
+        QMessageBox::critical(0, tr("Error"),
+                tr("Unable to start the server"));
+        delete pnetserver;
+        pnetserver = 0;
+        return;
+    }
 
-	QTimer::singleShot(250, this, SLOT(AsyncNetServerStart()));
+    QTimer::singleShot(250, this, SLOT(AsyncNetServerStart()));
 
-	pRegisterServer = new HWNetUdpServer(0,
-			ui.pageNetServer->leServerDescr->text(),
-			ui.pageNetServer->sbPort->value());
+    pRegisterServer = new HWNetUdpServer(0,
+            ui.pageNetServer->leServerDescr->text(),
+            ui.pageNetServer->sbPort->value());
 }
 
 void HWForm::AsyncNetServerStart()
 {
-	NetConnectServer("localhost", pnetserver->getRunningPort());
+    NetConnectServer("localhost", pnetserver->getRunningPort());
 }
 
 void HWForm::NetDisconnect()
 {
-	//qDebug("NetDisconnect");
-	if(hwnet) {
-		hwnet->Disconnect();
-		delete hwnet;
-		hwnet = 0;
-	}
-	if(pnetserver) {
-		if (pRegisterServer)
-		{
-			pRegisterServer->unregister();
-			pRegisterServer = 0;
-		}
+    //qDebug("NetDisconnect");
+    if(hwnet) {
+        hwnet->Disconnect();
+        delete hwnet;
+        hwnet = 0;
+    }
+    if(pnetserver) {
+        if (pRegisterServer)
+        {
+            pRegisterServer->unregister();
+            pRegisterServer = 0;
+        }
 
-		pnetserver->StopServer();
-		delete pnetserver;
-		pnetserver = 0;
-	}
+        pnetserver->StopServer();
+        delete pnetserver;
+        pnetserver = 0;
+    }
 }
 
 void HWForm::ForcedDisconnect()
 {
-	if(pnetserver) return; // we have server - let it care of all things
-	if (hwnet) {
-		hwnet->deleteLater();
-		hwnet = 0;
-		QMessageBox::warning(this, QMessageBox::tr("Network"),
-				QMessageBox::tr("Connection to server is lost"));
+    if(pnetserver) return; // we have server - let it care of all things
+    if (hwnet) {
+        hwnet->deleteLater();
+        hwnet = 0;
+        QMessageBox::warning(this, QMessageBox::tr("Network"),
+                QMessageBox::tr("Connection to server is lost"));
 
-	}
-	if (ui.Pages->currentIndex() != ID_PAGE_NET) GoBack();
+    }
+    if (ui.Pages->currentIndex() != ID_PAGE_NET) GoBack();
 }
 
 void HWForm::NetConnected()
 {
-	GoToPage(ID_PAGE_ROOMSLIST);
+    GoToPage(ID_PAGE_ROOMSLIST);
 }
 
 void HWForm::NetGameEnter()
 {
-	ui.pageNetGame->pChatWidget->clear();
-	GoToPage(ID_PAGE_NETGAME);
+    ui.pageNetGame->pChatWidget->clear();
+    GoToPage(ID_PAGE_NETGAME);
 }
 
 void HWForm::AddNetTeam(const HWTeam& team)
 {
-	ui.pageNetGame->pNetTeamsWidget->addTeam(team);
+    ui.pageNetGame->pNetTeamsWidget->addTeam(team);
 }
 
 void HWForm::StartMPGame()
 {
-	QString ammo;
-	ammo = ui.pageMultiplayer->gameCFG->WeaponsName->itemData(
-		ui.pageMultiplayer->gameCFG->WeaponsName->currentIndex()
-		).toString();
+    QString ammo;
+    ammo = ui.pageMultiplayer->gameCFG->WeaponsName->itemData(
+        ui.pageMultiplayer->gameCFG->WeaponsName->currentIndex()
+        ).toString();
 
-	CreateGame(ui.pageMultiplayer->gameCFG, ui.pageMultiplayer->teamsSelect, ammo);
+    CreateGame(ui.pageMultiplayer->gameCFG, ui.pageMultiplayer->teamsSelect, ammo);
 
-	game->StartLocal();
+    game->StartLocal();
 }
 
 void HWForm::GameStateChanged(GameState gameState)
 {
-	switch(gameState) {
-		case gsStarted: {
-			Music(false);
-			if (wBackground) wBackground->stopAnimation();
-			GoToPage(ID_PAGE_INGAME);
-			ui.pageGameStats->clear();
-			if (pRegisterServer)
-			{
-				pRegisterServer->unregister();
-				pRegisterServer = 0;
-			}
-			//setVisible(false);
-			setFocusPolicy(Qt::NoFocus);
-			break;
-		}
-		case gsFinished: {
-			//setVisible(true);
-			setFocusPolicy(Qt::StrongFocus);
-			GoBack();
-			Music(ui.pageOptions->CBEnableFrontendMusic->isChecked());
-			if (wBackground) wBackground->startAnimation();
-			GoToPage(ID_PAGE_GAMESTATS);
-			if (hwnet) hwnet->gameFinished();
-			break;
-		}
-		default: {
-			//setVisible(true);
-			setFocusPolicy(Qt::StrongFocus);
-			quint8 id = ui.Pages->currentIndex();
-			if (id == ID_PAGE_INGAME) {
-				GoBack();
-				Music(ui.pageOptions->CBEnableFrontendMusic->isChecked());
-				if (wBackground) wBackground->startAnimation();
-				if (hwnet) hwnet->gameFinished();
-			}
-		};
-	}
+    switch(gameState) {
+        case gsStarted: {
+            Music(false);
+            if (wBackground) wBackground->stopAnimation();
+            GoToPage(ID_PAGE_INGAME);
+            ui.pageGameStats->clear();
+            if (pRegisterServer)
+            {
+                pRegisterServer->unregister();
+                pRegisterServer = 0;
+            }
+            //setVisible(false);
+            setFocusPolicy(Qt::NoFocus);
+            break;
+        }
+        case gsFinished: {
+            //setVisible(true);
+            setFocusPolicy(Qt::StrongFocus);
+            GoBack();
+            Music(ui.pageOptions->CBEnableFrontendMusic->isChecked());
+            if (wBackground) wBackground->startAnimation();
+            GoToPage(ID_PAGE_GAMESTATS);
+            if (hwnet) hwnet->gameFinished();
+            break;
+        }
+        default: {
+            //setVisible(true);
+            setFocusPolicy(Qt::StrongFocus);
+            quint8 id = ui.Pages->currentIndex();
+            if (id == ID_PAGE_INGAME) {
+                GoBack();
+                Music(ui.pageOptions->CBEnableFrontendMusic->isChecked());
+                if (wBackground) wBackground->startAnimation();
+                if (hwnet) hwnet->gameFinished();
+            }
+        };
+    }
 }
 
 void HWForm::CreateGame(GameCFGWidget * gamecfg, TeamSelWidget* pTeamSelWidget, QString ammo)
 {
-	game = new HWGame(config, gamecfg, ammo, pTeamSelWidget);
-	connect(game, SIGNAL(GameStateChanged(GameState)), this, SLOT(GameStateChanged(GameState)));
-	connect(game, SIGNAL(GameStats(char, const QString &)), ui.pageGameStats, SLOT(GameStats(char, const QString &)));
-	connect(game, SIGNAL(ErrorMessage(const QString &)), this, SLOT(ShowErrorMessage(const QString &)), Qt::QueuedConnection);
-	connect(game, SIGNAL(HaveRecord(bool, const QByteArray &)), this, SLOT(GetRecord(bool, const QByteArray &)));
+    game = new HWGame(config, gamecfg, ammo, pTeamSelWidget);
+    connect(game, SIGNAL(GameStateChanged(GameState)), this, SLOT(GameStateChanged(GameState)));
+    connect(game, SIGNAL(GameStats(char, const QString &)), ui.pageGameStats, SLOT(GameStats(char, const QString &)));
+    connect(game, SIGNAL(ErrorMessage(const QString &)), this, SLOT(ShowErrorMessage(const QString &)), Qt::QueuedConnection);
+    connect(game, SIGNAL(HaveRecord(bool, const QByteArray &)), this, SLOT(GetRecord(bool, const QByteArray &)));
 }
 
 void HWForm::ShowErrorMessage(const QString & msg)
 {
-	QMessageBox::warning(this,
-			"Hedgewars",
-			msg);
+    QMessageBox::warning(this,
+            "Hedgewars",
+            msg);
 }
 
 void HWForm::GetRecord(bool isDemo, const QByteArray & record)
 {
-	QString filename;
-	QByteArray demo = record;
-	QString recordFileName =
-			config->appendDateTimeToRecordName() ?
-				QDateTime::currentDateTime().toString("yyyy-MM-dd_hh-mm") :
-				"LastRound";
+    QString filename;
+    QByteArray demo = record;
+    QString recordFileName =
+            config->appendDateTimeToRecordName() ?
+                QDateTime::currentDateTime().toString("yyyy-MM-dd_hh-mm") :
+                "LastRound";
 
-	if (isDemo)
-	{
-		demo.replace(QByteArray("\x02TL"), QByteArray("\x02TD"));
-		demo.replace(QByteArray("\x02TN"), QByteArray("\x02TD"));
-		demo.replace(QByteArray("\x02TS"), QByteArray("\x02TD"));
-		filename = cfgdir->absolutePath() + "/Demos/" + recordFileName + "." + *cProtoVer + ".hwd";
-	} else
-	{
-		demo.replace(QByteArray("\x02TL"), QByteArray("\x02TS"));
-		demo.replace(QByteArray("\x02TN"), QByteArray("\x02TS"));
-		filename = cfgdir->absolutePath() + "/Saves/" + recordFileName + "." + *cProtoVer + ".hws";
-	}
+    if (isDemo)
+    {
+        demo.replace(QByteArray("\x02TL"), QByteArray("\x02TD"));
+        demo.replace(QByteArray("\x02TN"), QByteArray("\x02TD"));
+        demo.replace(QByteArray("\x02TS"), QByteArray("\x02TD"));
+        filename = cfgdir->absolutePath() + "/Demos/" + recordFileName + "." + *cProtoVer + ".hwd";
+    } else
+    {
+        demo.replace(QByteArray("\x02TL"), QByteArray("\x02TS"));
+        demo.replace(QByteArray("\x02TN"), QByteArray("\x02TS"));
+        filename = cfgdir->absolutePath() + "/Saves/" + recordFileName + "." + *cProtoVer + ".hws";
+    }
 
 
-	QFile demofile(filename);
-	if (!demofile.open(QIODevice::WriteOnly))
-	{
-		ShowErrorMessage(tr("Cannot save record to file %1").arg(filename));
-		return ;
-	}
-	demofile.write(demo.constData(), demo.size());
-	demofile.close();
+    QFile demofile(filename);
+    if (!demofile.open(QIODevice::WriteOnly))
+    {
+        ShowErrorMessage(tr("Cannot save record to file %1").arg(filename));
+        return ;
+    }
+    demofile.write(demo.constData(), demo.size());
+    demofile.close();
 }
 
 void HWForm::StartTraining()
 {
-	CreateGame(0, 0, 0);
+    CreateGame(0, 0, 0);
 
-	game->StartTraining(ui.pageTraining->CBSelect->currentText());
+    game->StartTraining(ui.pageTraining->CBSelect->currentText());
 }
 
 void HWForm::CreateNetGame()
 {
-	QString ammo;
-	ammo = ui.pageNetGame->pGameCFG->WeaponsName->itemData(
-			ui.pageNetGame->pGameCFG->WeaponsName->currentIndex()
-			).toString();
+    QString ammo;
+    ammo = ui.pageNetGame->pGameCFG->WeaponsName->itemData(
+            ui.pageNetGame->pGameCFG->WeaponsName->currentIndex()
+            ).toString();
 
-	CreateGame(ui.pageNetGame->pGameCFG, ui.pageNetGame->pNetTeamsWidget, ammo);
+    CreateGame(ui.pageNetGame->pGameCFG, ui.pageNetGame->pNetTeamsWidget, ammo);
 
-	connect(game, SIGNAL(SendNet(const QByteArray &)), hwnet, SLOT(SendNet(const QByteArray &)));
-	connect(game, SIGNAL(SendChat(const QString &)), hwnet, SLOT(chatLineToNet(const QString &)));
-	connect(game, SIGNAL(SendTeamMessage(const QString &)), hwnet, SLOT(SendTeamMessage(const QString &)));
-	connect(hwnet, SIGNAL(FromNet(const QByteArray &)), game, SLOT(FromNet(const QByteArray &)));
-	connect(hwnet, SIGNAL(chatStringFromNet(const QString &)), game, SLOT(FromNetChat(const QString &)));
+    connect(game, SIGNAL(SendNet(const QByteArray &)), hwnet, SLOT(SendNet(const QByteArray &)));
+    connect(game, SIGNAL(SendChat(const QString &)), hwnet, SLOT(chatLineToNet(const QString &)));
+    connect(game, SIGNAL(SendTeamMessage(const QString &)), hwnet, SLOT(SendTeamMessage(const QString &)));
+    connect(hwnet, SIGNAL(FromNet(const QByteArray &)), game, SLOT(FromNet(const QByteArray &)));
+    connect(hwnet, SIGNAL(chatStringFromNet(const QString &)), game, SLOT(FromNetChat(const QString &)));
 
-	game->StartNet();
+    game->StartNet();
 }
 
 void HWForm::closeEvent(QCloseEvent *event)
 {
 #ifdef USE_XFIRE
-	xfire_free();
+    xfire_free();
 #endif
-	config->SaveOptions();
-	event->accept();
+    config->SaveOptions();
+    event->accept();
 }
 
 void HWForm::Music(bool checked)
 {
-	if (checked)
-		sdli.StartMusic();
-	else
-		sdli.StopMusic();
+    if (checked)
+        sdli.StartMusic();
+    else
+        sdli.StopMusic();
 }
 
 void HWForm::NetGameChangeStatus(bool isMaster)
 {
-	if (isMaster)
-		NetGameMaster();
-	else
-		NetGameSlave();
+    if (isMaster)
+        NetGameMaster();
+    else
+        NetGameSlave();
 }
 
 void HWForm::NetGameMaster()
 {
-	ui.pageNetGame->setMasterMode(true);
-	ui.pageNetGame->restrictJoins->setChecked(false);
-	ui.pageNetGame->restrictTeamAdds->setChecked(false);
-	ui.pageNetGame->pGameCFG->GameSchemes->setModel(ammoSchemeModel);
-	ui.pageNetGame->pGameCFG->setEnabled(true);
-	ui.pageNetGame->pNetTeamsWidget->setInteractivity(true);
+    ui.pageNetGame->setMasterMode(true);
+    ui.pageNetGame->restrictJoins->setChecked(false);
+    ui.pageNetGame->restrictTeamAdds->setChecked(false);
+    ui.pageNetGame->pGameCFG->GameSchemes->setModel(ammoSchemeModel);
+    ui.pageNetGame->pGameCFG->setEnabled(true);
+    ui.pageNetGame->pNetTeamsWidget->setInteractivity(true);
 
-	if (hwnet)
-	{
-		// disconnect connections first to ensure their inexistance and not to connect twice
-		ui.pageNetGame->BtnStart->disconnect(hwnet);
-		ui.pageNetGame->restrictJoins->disconnect(hwnet);
-		ui.pageNetGame->restrictTeamAdds->disconnect(hwnet);
-		connect(ui.pageNetGame->BtnStart, SIGNAL(clicked()), hwnet, SLOT(startGame()));
-		connect(ui.pageNetGame->restrictJoins, SIGNAL(triggered()), hwnet, SLOT(toggleRestrictJoins()));
-		connect(ui.pageNetGame->restrictTeamAdds, SIGNAL(triggered()), hwnet, SLOT(toggleRestrictTeamAdds()));
-		connect(ui.pageNetGame->pGameCFG->GameSchemes->model(),
-				SIGNAL(dataChanged(const QModelIndex &, const QModelIndex &)),
-				ui.pageNetGame->pGameCFG,
-				SLOT(resendSchemeData())
-				);
-	}
+    if (hwnet)
+    {
+        // disconnect connections first to ensure their inexistance and not to connect twice
+        ui.pageNetGame->BtnStart->disconnect(hwnet);
+        ui.pageNetGame->restrictJoins->disconnect(hwnet);
+        ui.pageNetGame->restrictTeamAdds->disconnect(hwnet);
+        connect(ui.pageNetGame->BtnStart, SIGNAL(clicked()), hwnet, SLOT(startGame()));
+        connect(ui.pageNetGame->restrictJoins, SIGNAL(triggered()), hwnet, SLOT(toggleRestrictJoins()));
+        connect(ui.pageNetGame->restrictTeamAdds, SIGNAL(triggered()), hwnet, SLOT(toggleRestrictTeamAdds()));
+        connect(ui.pageNetGame->pGameCFG->GameSchemes->model(),
+                SIGNAL(dataChanged(const QModelIndex &, const QModelIndex &)),
+                ui.pageNetGame->pGameCFG,
+                SLOT(resendSchemeData())
+                );
+    }
 }
 
 void HWForm::NetGameSlave()
 {
-	ui.pageNetGame->pGameCFG->setEnabled(false);
-	ui.pageNetGame->pNetTeamsWidget->setInteractivity(false);
+    ui.pageNetGame->pGameCFG->setEnabled(false);
+    ui.pageNetGame->pNetTeamsWidget->setInteractivity(false);
 
-	if (hwnet)
-	{
-		NetAmmoSchemeModel * netAmmo = new NetAmmoSchemeModel(hwnet);
-		connect(hwnet, SIGNAL(netSchemeConfig(QStringList &)), netAmmo, SLOT(setNetSchemeConfig(QStringList &)));
-		ui.pageNetGame->pGameCFG->GameSchemes->setModel(netAmmo);
+    if (hwnet)
+    {
+        NetAmmoSchemeModel * netAmmo = new NetAmmoSchemeModel(hwnet);
+        connect(hwnet, SIGNAL(netSchemeConfig(QStringList &)), netAmmo, SLOT(setNetSchemeConfig(QStringList &)));
+        ui.pageNetGame->pGameCFG->GameSchemes->setModel(netAmmo);
 
-		ui.pageNetGame->pGameCFG->GameSchemes->view()->disconnect(hwnet);
-		connect(hwnet, SIGNAL(netSchemeConfig(QStringList &)),
-				this, SLOT(selectFirstNetScheme()));
-	}
+        ui.pageNetGame->pGameCFG->GameSchemes->view()->disconnect(hwnet);
+        connect(hwnet, SIGNAL(netSchemeConfig(QStringList &)),
+                this, SLOT(selectFirstNetScheme()));
+    }
 
-	ui.pageNetGame->setMasterMode(false);
+    ui.pageNetGame->setMasterMode(false);
 }
 
 void HWForm::selectFirstNetScheme()
 {
-	ui.pageNetGame->pGameCFG->GameSchemes->setCurrentIndex(0);
+    ui.pageNetGame->pGameCFG->GameSchemes->setCurrentIndex(0);
 }
 
 void HWForm::NetLeftRoom()
 {
-	if (ui.Pages->currentIndex() == ID_PAGE_NETGAME)
-		GoBack();
-	else
-		qWarning("Left room while not in room");
+    if (ui.Pages->currentIndex() == ID_PAGE_NETGAME)
+        GoBack();
+    else
+        qWarning("Left room while not in room");
 }
 
 void HWForm::resizeEvent(QResizeEvent * event)
 {
-	int w = event->size().width();
-	int h = event->size().height();
+    int w = event->size().width();
+    int h = event->size().height();
     if (wBackground) {
         wBackground->setFixedSize(w, h);
         wBackground->move(0, 0);
--- a/QTfrontend/hwform.h	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/hwform.h	Sat Mar 06 10:59:20 2010 +0000
@@ -48,118 +48,118 @@
 
 class HWForm : public QMainWindow
 {
-	Q_OBJECT
+    Q_OBJECT
 
 public:
-	HWForm(QWidget *parent = 0);
-	Ui_HWForm ui;
-	SDLInteraction sdli;
-	GameUIConfig * config;
+    HWForm(QWidget *parent = 0);
+    Ui_HWForm ui;
+    SDLInteraction sdli;
+    GameUIConfig * config;
     QSettings * gameSettings; // Same file GameUIConfig points to but without the baggage.  Needs sync() calls if you want to get GameUIConfig changes though
-	void updateXfire();
+    void updateXfire();
 
 private slots:
-	void GoToMain();
-	void GoToSinglePlayer();
-	void GoToSetup();
-	void GoToMultiplayer();
-	void GoToSaves();
-	void GoToDemos();
-	void GoToNet();
-	void GoToNetType();
-	void GoToInfo();
-	void GoToTraining();
-	void GoToSelectWeapon();
-	void GoToSelectWeaponSet(const QString & name);
-	void GoToSelectNewWeapon();
-	void GoToNetServer();
-	void GoToSchemes();
-	void GoToAdmin();
-	void GoToPage(quint8 id);
-	void GoBack();
-	void btnExitPressed();
-	void btnExitClicked();
-	void IntermediateSetup();
-	void NewTeam();
-	void EditTeam();
-	void RandomNames();
-	void RandomName(const int &i);
-	void TeamSave();
-	void TeamDiscard();
-	void SimpleGame();
-	void PlayDemo();
-	void StartTraining();
-	void NetConnect();
-	void NetConnectServer(const QString & host, quint16 port);
-	void NetConnectOfficialServer();
-	void NetStartServer();
-	void NetDisconnect();
-	void NetConnected();
-	void NetGameEnter();
-	void AddNetTeam(const HWTeam& team);
-	void StartMPGame();
-	void GameStateChanged(GameState gameState);
-	void ForcedDisconnect();
-	void ShowErrorMessage(const QString &);
-	void GetRecord(bool isDemo, const QByteArray & record);
-	void CreateNetGame();
-	void UpdateWeapons();
-	void onFrontendFullscreen(bool value);
-	void Music(bool checked);
+    void GoToMain();
+    void GoToSinglePlayer();
+    void GoToSetup();
+    void GoToMultiplayer();
+    void GoToSaves();
+    void GoToDemos();
+    void GoToNet();
+    void GoToNetType();
+    void GoToInfo();
+    void GoToTraining();
+    void GoToSelectWeapon();
+    void GoToSelectWeaponSet(const QString & name);
+    void GoToSelectNewWeapon();
+    void GoToNetServer();
+    void GoToSchemes();
+    void GoToAdmin();
+    void GoToPage(quint8 id);
+    void GoBack();
+    void btnExitPressed();
+    void btnExitClicked();
+    void IntermediateSetup();
+    void NewTeam();
+    void EditTeam();
+    void RandomNames();
+    void RandomName(const int &i);
+    void TeamSave();
+    void TeamDiscard();
+    void SimpleGame();
+    void PlayDemo();
+    void StartTraining();
+    void NetConnect();
+    void NetConnectServer(const QString & host, quint16 port);
+    void NetConnectOfficialServer();
+    void NetStartServer();
+    void NetDisconnect();
+    void NetConnected();
+    void NetGameEnter();
+    void AddNetTeam(const HWTeam& team);
+    void StartMPGame();
+    void GameStateChanged(GameState gameState);
+    void ForcedDisconnect();
+    void ShowErrorMessage(const QString &);
+    void GetRecord(bool isDemo, const QByteArray & record);
+    void CreateNetGame();
+    void UpdateWeapons();
+    void onFrontendFullscreen(bool value);
+    void Music(bool checked);
 
-	void NetGameChangeStatus(bool isMaster);
-	void NetGameMaster();
-	void NetGameSlave();
+    void NetGameChangeStatus(bool isMaster);
+    void NetGameMaster();
+    void NetGameSlave();
 
-	void AsyncNetServerStart();
-	void NetLeftRoom();
-	void selectFirstNetScheme();
+    void AsyncNetServerStart();
+    void NetLeftRoom();
+    void selectFirstNetScheme();
 
 private:
-	void _NetConnect(const QString & hostName, quint16 port, const QString & nick);
-	void UpdateTeamsLists(const QStringList* editable_teams=0);
-	void CreateGame(GameCFGWidget * gamecfg, TeamSelWidget* pTeamSelWidget, QString ammo);
-	void closeEvent(QCloseEvent *event);
-	void CustomizePalettes();
-	void resizeEvent(QResizeEvent * event);
+    void _NetConnect(const QString & hostName, quint16 port, const QString & nick);
+    void UpdateTeamsLists(const QStringList* editable_teams=0);
+    void CreateGame(GameCFGWidget * gamecfg, TeamSelWidget* pTeamSelWidget, QString ammo);
+    void closeEvent(QCloseEvent *event);
+    void CustomizePalettes();
+    void resizeEvent(QResizeEvent * event);
 
-	enum PageIDs {
-		ID_PAGE_SETUP_TEAM      =  0,
-		ID_PAGE_SETUP           =  1,
-		ID_PAGE_MULTIPLAYER     =  2,
-		ID_PAGE_DEMOS           =  3,
-		ID_PAGE_NET             =  4,
-		ID_PAGE_NETGAME         =  5,
-		ID_PAGE_INFO            =  6,
-		ID_PAGE_MAIN            =  7,
-		ID_PAGE_GAMESTATS       =  8,
-		ID_PAGE_SINGLEPLAYER    =  9,
-		ID_PAGE_TRAINING        = 10,
-		ID_PAGE_SELECTWEAPON    = 11,
-		ID_PAGE_NETSERVER       = 12,
-		ID_PAGE_INGAME          = 13,
-		ID_PAGE_ROOMSLIST       = 14,
-		ID_PAGE_CONNECTING      = 15,
-		ID_PAGE_SCHEME          = 16,
-		ID_PAGE_ADMIN           = 17,
-		ID_PAGE_NETTYPE         = 18
-		};
-	HWGame * game;
-	HWNetServer* pnetserver;
-	HWNetRegisterServer* pRegisterServer;
-	HWTeam * editedTeam;
-	HWNewNet * hwnet;
-	HWNamegen * namegen;
-	AmmoSchemeModel * ammoSchemeModel;
-	QStack<quint8> PagesStack;
-	QTime eggTimer;
-	BGWidget * wBackground;
+    enum PageIDs {
+        ID_PAGE_SETUP_TEAM      =  0,
+        ID_PAGE_SETUP           =  1,
+        ID_PAGE_MULTIPLAYER     =  2,
+        ID_PAGE_DEMOS           =  3,
+        ID_PAGE_NET             =  4,
+        ID_PAGE_NETGAME         =  5,
+        ID_PAGE_INFO            =  6,
+        ID_PAGE_MAIN            =  7,
+        ID_PAGE_GAMESTATS       =  8,
+        ID_PAGE_SINGLEPLAYER    =  9,
+        ID_PAGE_TRAINING        = 10,
+        ID_PAGE_SELECTWEAPON    = 11,
+        ID_PAGE_NETSERVER       = 12,
+        ID_PAGE_INGAME          = 13,
+        ID_PAGE_ROOMSLIST       = 14,
+        ID_PAGE_CONNECTING      = 15,
+        ID_PAGE_SCHEME          = 16,
+        ID_PAGE_ADMIN           = 17,
+        ID_PAGE_NETTYPE         = 18
+        };
+    HWGame * game;
+    HWNetServer* pnetserver;
+    HWNetRegisterServer* pRegisterServer;
+    HWTeam * editedTeam;
+    HWNewNet * hwnet;
+    HWNamegen * namegen;
+    AmmoSchemeModel * ammoSchemeModel;
+    QStack<quint8> PagesStack;
+    QTime eggTimer;
+    BGWidget * wBackground;
         
 #ifdef __APPLE__
         InstallController * panel;
 #endif
         
-	void OnPageShown(quint8 id, quint8 lastid=0);
+    void OnPageShown(quint8 id, quint8 lastid=0);
 };
 
 #endif
--- a/QTfrontend/hwmap.cpp	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/hwmap.cpp	Sat Mar 06 10:59:20 2010 +0000
@@ -29,35 +29,35 @@
 
 void HWMap::getImage(std::string seed, int filter)
 {
-	m_seed = seed;
-	templateFilter = filter;
-	Start();
+    m_seed = seed;
+    templateFilter = filter;
+    Start();
 }
 
 QStringList HWMap::setArguments()
 {
-	QStringList arguments;
-	arguments << cfgdir->absolutePath();
-	arguments << QString("%1").arg(ipc_port);
-	arguments << "landpreview";
-	return arguments;
+    QStringList arguments;
+    arguments << cfgdir->absolutePath();
+    arguments << QString("%1").arg(ipc_port);
+    arguments << "landpreview";
+    return arguments;
 }
 
 void HWMap::onClientDisconnect()
 {
-	if (readbuffer.size() == 128 * 32 + 1)
-	{
-		quint8 *buf = (quint8*) readbuffer.constData();
-		QImage im(buf, 256, 128, QImage::Format_Mono);
-		im.setNumColors(2);
-		emit HHLimitReceived(buf[128 * 32]);
-		emit ImageReceived(im);
-	}
+    if (readbuffer.size() == 128 * 32 + 1)
+    {
+        quint8 *buf = (quint8*) readbuffer.constData();
+        QImage im(buf, 256, 128, QImage::Format_Mono);
+        im.setNumColors(2);
+        emit HHLimitReceived(buf[128 * 32]);
+        emit ImageReceived(im);
+    }
 }
 
 void HWMap::SendToClientFirst()
 {
-	SendIPC(QString("eseed %1").arg(m_seed.c_str()).toLatin1());
-	SendIPC(QString("e$template_filter %1").arg(templateFilter).toLatin1());
-	SendIPC("!");
+    SendIPC(QString("eseed %1").arg(m_seed.c_str()).toLatin1());
+    SendIPC(QString("e$template_filter %1").arg(templateFilter).toLatin1());
+    SendIPC("!");
 }
--- a/QTfrontend/igbox.cpp	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/igbox.cpp	Sat Mar 06 10:59:20 2010 +0000
@@ -27,50 +27,50 @@
 {
 // Has issues with border-radius on children
 //    setAttribute(Qt::WA_PaintOnScreen, true);
-	titleLeftPadding = 82;
+    titleLeftPadding = 82;
     contentTopPadding = 22;
 }
 
 void IconedGroupBox::setIcon(const QIcon & icon)
 {
-	if (this->icon.isNull())
-		setStyleSheet(QString(
-			"IconedGroupBox{"
-				"margin-top: 46px;"
-				"margin-left: 12px;"
+    if (this->icon.isNull())
+        setStyleSheet(QString(
+            "IconedGroupBox{"
+                "margin-top: 46px;"
+                "margin-left: 12px;"
                 "padding: %1px 2px 5px 2px;"
-				"}"
-			"IconedGroupBox::title{"
-				"subcontrol-origin: margin;"
-				"subcontrol-position: top left;"
-				"padding-left: %2px;"
-				"padding-top: 25px;"
-				"text-align: left;"
-				"}"
-				).arg(contentTopPadding).arg(titleLeftPadding)
-		);
+                "}"
+            "IconedGroupBox::title{"
+                "subcontrol-origin: margin;"
+                "subcontrol-position: top left;"
+                "padding-left: %2px;"
+                "padding-top: 25px;"
+                "text-align: left;"
+                "}"
+                ).arg(contentTopPadding).arg(titleLeftPadding)
+        );
 
-	this->icon = icon;
-	repaint();
+    this->icon = icon;
+    repaint();
 }
 
 void IconedGroupBox::paintEvent(QPaintEvent * event)
 {
-	QStylePainter painter(this);
+    QStylePainter painter(this);
 
-	QStyleOptionGroupBox option;
-	initStyleOption(&option);
-	painter.drawComplexControl(QStyle::CC_GroupBox, option);
+    QStyleOptionGroupBox option;
+    initStyleOption(&option);
+    painter.drawComplexControl(QStyle::CC_GroupBox, option);
 
-	icon.paint(&painter, QRect(QPoint(0, 0), icon.actualSize(size())));
+    icon.paint(&painter, QRect(QPoint(0, 0), icon.actualSize(size())));
 }
 
 void IconedGroupBox::setTitleTextPadding(int px)
 {
-	titleLeftPadding = px;
+    titleLeftPadding = px;
 }
 
 void IconedGroupBox::setContentTopPadding(int px)
 {
-	contentTopPadding = px;
+    contentTopPadding = px;
 }
--- a/QTfrontend/igbox.h	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/igbox.h	Sat Mar 06 10:59:20 2010 +0000
@@ -24,21 +24,21 @@
 
 class IconedGroupBox : public QGroupBox
 {
-	Q_OBJECT
+    Q_OBJECT
 
 public:
-	IconedGroupBox(QWidget * parent = 0);
+    IconedGroupBox(QWidget * parent = 0);
 
-	void setIcon(const QIcon & icon);
-	void setTitleTextPadding(int px);
-	void setContentTopPadding(int px);
+    void setIcon(const QIcon & icon);
+    void setTitleTextPadding(int px);
+    void setContentTopPadding(int px);
 protected:
-	virtual void paintEvent(QPaintEvent * event);
+    virtual void paintEvent(QPaintEvent * event);
 
 private:
-	QIcon icon;
-	int titleLeftPadding;
-	int contentTopPadding;
+    QIcon icon;
+    int titleLeftPadding;
+    int contentTopPadding;
 };
 
 #endif // _IGBOX_H
--- a/QTfrontend/input_ip.cpp	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/input_ip.cpp	Sat Mar 06 10:59:20 2010 +0000
@@ -26,43 +26,43 @@
 
 HWHostPortDialog::HWHostPortDialog(QWidget* parent) : QDialog(parent)
 {
-	QGridLayout * layout = new QGridLayout(this);
+    QGridLayout * layout = new QGridLayout(this);
 
-	QLabel * lbHost = new QLabel(this);
-	lbHost->setText(QLabel::tr("Host:"));
-	layout->addWidget(lbHost, 0, 0);
+    QLabel * lbHost = new QLabel(this);
+    lbHost->setText(QLabel::tr("Host:"));
+    layout->addWidget(lbHost, 0, 0);
 
-	QLabel * lbPort = new QLabel(this);
-	lbPort->setText(QLabel::tr("Port:"));
-	layout->addWidget(lbPort, 1, 0);
+    QLabel * lbPort = new QLabel(this);
+    lbPort->setText(QLabel::tr("Port:"));
+    layout->addWidget(lbPort, 1, 0);
 
-	leHost = new QLineEdit(this);
-	layout->addWidget(leHost, 0, 1, 1, 2);
+    leHost = new QLineEdit(this);
+    layout->addWidget(leHost, 0, 1, 1, 2);
 
-	sbPort = new QSpinBox(this);
-	sbPort->setMinimum(0);
-	sbPort->setMaximum(65535);
-	layout->addWidget(sbPort, 1, 1, 1, 2);
+    sbPort = new QSpinBox(this);
+    sbPort->setMinimum(0);
+    sbPort->setMaximum(65535);
+    layout->addWidget(sbPort, 1, 1, 1, 2);
 
-	pbDefault = new QPushButton(this);
-	pbDefault->setText(QPushButton::tr("default"));
-	layout->addWidget(pbDefault, 1, 3);
+    pbDefault = new QPushButton(this);
+    pbDefault->setText(QPushButton::tr("default"));
+    layout->addWidget(pbDefault, 1, 3);
 
-	pbOK = new QPushButton(this);
-	pbOK->setText(QPushButton::tr("OK"));
-	pbOK->setDefault(true);
-	layout->addWidget(pbOK, 3, 1);
+    pbOK = new QPushButton(this);
+    pbOK->setText(QPushButton::tr("OK"));
+    pbOK->setDefault(true);
+    layout->addWidget(pbOK, 3, 1);
 
-	pbCancel = new QPushButton(this);
-	pbCancel->setText(QPushButton::tr("Cancel"));
-	layout->addWidget(pbCancel, 3, 2);
+    pbCancel = new QPushButton(this);
+    pbCancel->setText(QPushButton::tr("Cancel"));
+    layout->addWidget(pbCancel, 3, 2);
 
-	connect(pbOK, SIGNAL(clicked()), this, SLOT(accept()));
-	connect(pbCancel, SIGNAL(clicked()), this, SLOT(reject()));
-	connect(pbDefault, SIGNAL(clicked()), this, SLOT(setDefaultPort()));
+    connect(pbOK, SIGNAL(clicked()), this, SLOT(accept()));
+    connect(pbCancel, SIGNAL(clicked()), this, SLOT(reject()));
+    connect(pbDefault, SIGNAL(clicked()), this, SLOT(setDefaultPort()));
 }
 
 void HWHostPortDialog::setDefaultPort()
 {
-	sbPort->setValue(46631);
+    sbPort->setValue(46631);
 }
--- a/QTfrontend/input_ip.h	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/input_ip.h	Sat Mar 06 10:59:20 2010 +0000
@@ -29,20 +29,20 @@
 
 class HWHostPortDialog : public QDialog
 {
-	Q_OBJECT
+    Q_OBJECT
 public:
-	HWHostPortDialog(QWidget* parent = 0);
+    HWHostPortDialog(QWidget* parent = 0);
 
-	QLineEdit* leHost;
-	QSpinBox* sbPort;
+    QLineEdit* leHost;
+    QSpinBox* sbPort;
 
 private:
-	QPushButton* pbOK;
-	QPushButton* pbCancel;
-	QPushButton * pbDefault;
+    QPushButton* pbOK;
+    QPushButton* pbCancel;
+    QPushButton * pbDefault;
 
 private slots:
-	void setDefaultPort();
+    void setDefaultPort();
 };
 
 
--- a/QTfrontend/main.cpp	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/main.cpp	Sat Mar 06 10:59:20 2010 +0000
@@ -30,17 +30,17 @@
 
 bool checkForDir(const QString & dir)
 {
-	QDir tmpdir;
-	if (!tmpdir.exists(dir))
-		if (!tmpdir.mkdir(dir))
-		{
-			QMessageBox::critical(0,
-					QObject::tr("Error"),
-					QObject::tr("Cannot create directory %1").arg(dir),
-					QObject::tr("OK"));
-			return false;
-		}
-	return true;
+    QDir tmpdir;
+    if (!tmpdir.exists(dir))
+        if (!tmpdir.mkdir(dir))
+        {
+            QMessageBox::critical(0,
+                    QObject::tr("Error"),
+                    QObject::tr("Cannot create directory %1").arg(dir),
+                    QObject::tr("OK"));
+            return false;
+        }
+    return true;
 }
 
 int main(int argc, char *argv[]) {        
@@ -76,103 +76,103 @@
         *cConfigDir = f.absoluteFilePath();
     }
 
-	app.setStyle(new QPlastiqueStyle);
+    app.setStyle(new QPlastiqueStyle);
 
-	QDateTime now = QDateTime::currentDateTime();
-	srand(now.toTime_t());
-	rand();
+    QDateTime now = QDateTime::currentDateTime();
+    srand(now.toTime_t());
+    rand();
 
-	Q_INIT_RESOURCE(hedgewars);
+    Q_INIT_RESOURCE(hedgewars);
 
-	qApp->setStyleSheet
-		(QString(
-			"HWForm,QDialog{"
-				"background-image: url(\":/res/Background.png\");"
-				"background-position: bottom center;"
-				"background-repeat: repeat-x;"
-				"background-color: #141250;"
-				"}"
+    qApp->setStyleSheet
+        (QString(
+            "HWForm,QDialog{"
+                "background-image: url(\":/res/Background.png\");"
+                "background-position: bottom center;"
+                "background-repeat: repeat-x;"
+                "background-color: #141250;"
+                "}"
 
-			"* {"
-				"color: #ffcc00;"
-				"selection-background-color: #ffcc00;"
-				"selection-color: #00351d;"
-			"}"
+            "* {"
+                "color: #ffcc00;"
+                "selection-background-color: #ffcc00;"
+                "selection-color: #00351d;"
+            "}"
 
-			"QLineEdit, QListWidget, QTableView, QTextBrowser, QSpinBox, QComboBox, "
+            "QLineEdit, QListWidget, QTableView, QTextBrowser, QSpinBox, QComboBox, "
             "QComboBox QAbstractItemView, QMenu::item {"
-				"background-color: rgba(13, 5, 68, 70%);"
-			"}"
+                "background-color: rgba(13, 5, 68, 70%);"
+            "}"
 
-			"QPushButton, QListWidget, QTableView, QLineEdit, QHeaderView, "
-			"QTextBrowser, QSpinBox, QToolBox, QComboBox, "
+            "QPushButton, QListWidget, QTableView, QLineEdit, QHeaderView, "
+            "QTextBrowser, QSpinBox, QToolBox, QComboBox, "
             "QComboBox QAbstractItemView, IconedGroupBox, "
-			".QGroupBox, GameCFGWidget, TeamSelWidget, SelWeaponWidget, "
+            ".QGroupBox, GameCFGWidget, TeamSelWidget, SelWeaponWidget, "
             "QTabWidget::pane, QTabBar::tab {"
-				"border: solid;"
-				"border-width: 3px;"
-				"border-color: #ffcc00;"
-			"}"
+                "border: solid;"
+                "border-width: 3px;"
+                "border-color: #ffcc00;"
+            "}"
 
-			"QPushButton:hover, QLineEdit:hover, QListWidget:hover, "
-			"QSpinBox:hover, QToolBox:hover, QComboBox:hover {"
-			    "border-color: yellow;"
-			"}"
+            "QPushButton:hover, QLineEdit:hover, QListWidget:hover, "
+            "QSpinBox:hover, QToolBox:hover, QComboBox:hover {"
+                "border-color: yellow;"
+            "}"
 
-			"QLineEdit, QListWidget,QTableView, QTextBrowser, "
-			"QSpinBox, QToolBox { "
-				"border-radius: 12px;"
-			"}"
+            "QLineEdit, QListWidget,QTableView, QTextBrowser, "
+            "QSpinBox, QToolBox { "
+                "border-radius: 12px;"
+            "}"
 
-			"QLineEdit, QLabel, QHeaderView, QListWidget, QTableView, "
-			"QSpinBox, QToolBox::tab, QComboBox, QComboBox QAbstractItemView, "
-			"IconedGroupBox, .QGroupBox, GameCFGWidget, TeamSelWidget, "
+            "QLineEdit, QLabel, QHeaderView, QListWidget, QTableView, "
+            "QSpinBox, QToolBox::tab, QComboBox, QComboBox QAbstractItemView, "
+            "IconedGroupBox, .QGroupBox, GameCFGWidget, TeamSelWidget, "
             "SelWeaponWidget, QCheckBox, QRadioButton {"
-				"font: bold 14px;"
-			"}"
+                "font: bold 14px;"
+            "}"
             "SelWeaponWidget QTabWidget::pane, SelWeaponWidget QTabBar::tab:selected {"
-				"background-position: bottom center;"
-				"background-repeat: repeat-x;"
-				"background-color: #000000;"
-			"}"
-			".QGroupBox,GameCFGWidget,TeamSelWidget,SelWeaponWidget {"
-				"background-position: bottom center;"
-				"background-repeat: repeat-x;"
-				"border-radius: 16px;"
-				"background-color: rgba(13, 5, 68, 70%);"
-				"padding: 6px;"
-			"}"
+                "background-position: bottom center;"
+                "background-repeat: repeat-x;"
+                "background-color: #000000;"
+            "}"
+            ".QGroupBox,GameCFGWidget,TeamSelWidget,SelWeaponWidget {"
+                "background-position: bottom center;"
+                "background-repeat: repeat-x;"
+                "border-radius: 16px;"
+                "background-color: rgba(13, 5, 68, 70%);"
+                "padding: 6px;"
+            "}"
 /*  Experimenting with PaintOnScreen and border-radius on IconedGroupBox children didn't work out well
-			"IconedGroupBox QComboBox, IconedGroupBox QPushButton, IconedGroupBox QLineEdit, "
+            "IconedGroupBox QComboBox, IconedGroupBox QPushButton, IconedGroupBox QLineEdit, "
             "IconedGroupBox QSpinBox {"
-				"border-radius: 0;"
-			"}"
-			"IconedGroupBox, IconedGroupBox *, QTabWidget::pane, QTabBar::tab:selected, QToolBox::tab QWidget{" */
-			"IconedGroupBox, QTabWidget::pane, QTabBar::tab:selected, QToolBox::tab QWidget{"
-				"background-color: #130f2c;"
-			"}"
+                "border-radius: 0;"
+            "}"
+            "IconedGroupBox, IconedGroupBox *, QTabWidget::pane, QTabBar::tab:selected, QToolBox::tab QWidget{" */
+            "IconedGroupBox, QTabWidget::pane, QTabBar::tab:selected, QToolBox::tab QWidget{"
+                "background-color: #130f2c;"
+            "}"
 
 
-			"QPushButton {"
-				"border-radius: 10px;"
-				"background-origin: margin;"
-				"background-position: top left;"
-				"background-color: rgba(18, 42, 5, 70%);"
-			"}"
+            "QPushButton {"
+                "border-radius: 10px;"
+                "background-origin: margin;"
+                "background-position: top left;"
+                "background-color: rgba(18, 42, 5, 70%);"
+            "}"
 
-			"QPushButton:pressed{"
-			    "border-color: white;"
-			"}"
+            "QPushButton:pressed{"
+                "border-color: white;"
+            "}"
 
-			"QHeaderView {"
-				"border-radius: 0;"
-				"border-width: 0;"
-				"border-bottom-width: 3px;"
-				"background-color: #00351d;"
-			"}"
-			"QTableView {"
-				"alternate-background-color: #2f213a;"
-			"}"
+            "QHeaderView {"
+                "border-radius: 0;"
+                "border-width: 0;"
+                "border-bottom-width: 3px;"
+                "background-color: #00351d;"
+            "}"
+            "QTableView {"
+                "alternate-background-color: #2f213a;"
+            "}"
 
             "QTabBar::tab {"
                  "border-bottom-width: 0;"
@@ -185,189 +185,189 @@
                  "color: #0d0544;"
                  "background-color: #ffcc00;"
             "}"
-			"QSpinBox::up-button{"
-				"background: transparent;"
-				"width: 16px;"
-				"height: 10px;"
-			"}"
+            "QSpinBox::up-button{"
+                "background: transparent;"
+                "width: 16px;"
+                "height: 10px;"
+            "}"
 
-			"QSpinBox::up-arrow {"
-				"image: url(\":/res/spin_up.png\");"
-			"}"
+            "QSpinBox::up-arrow {"
+                "image: url(\":/res/spin_up.png\");"
+            "}"
 
-			"QSpinBox::down-arrow {"
-				"image: url(\":/res/spin_down.png\");"
-			"}"
+            "QSpinBox::down-arrow {"
+                "image: url(\":/res/spin_down.png\");"
+            "}"
 
-			"QSpinBox::down-button {"
-				"background: transparent;"
-				"width: 16px;"
-				"height: 10px;"
-			"}"
+            "QSpinBox::down-button {"
+                "background: transparent;"
+                "width: 16px;"
+                "height: 10px;"
+            "}"
 
-			"QComboBox {"
-				"border-radius: 15px;"
-				"padding: 3px;"
-			"}"
-			"QComboBox:pressed{"
-				"border-color: white;"
-			"}"
-			"QComboBox::drop-down{"
-				"border: transparent;"
-				"width: 25px;"
-			"}"
-			"QComboBox::down-arrow {"
-				"image: url(\":/res/dropdown.png\");"
-			"}"
+            "QComboBox {"
+                "border-radius: 15px;"
+                "padding: 3px;"
+            "}"
+            "QComboBox:pressed{"
+                "border-color: white;"
+            "}"
+            "QComboBox::drop-down{"
+                "border: transparent;"
+                "width: 25px;"
+            "}"
+            "QComboBox::down-arrow {"
+                "image: url(\":/res/dropdown.png\");"
+            "}"
 
-			"VertScrArea {"
-				"background-position: bottom center;"
-				"background-repeat: repeat-x;"
-			"}"
+            "VertScrArea {"
+                "background-position: bottom center;"
+                "background-repeat: repeat-x;"
+            "}"
 
-			"IconedGroupBox {"
-				"border-radius: 16px;"
-				"padding: 2px;"
-			"}"
+            "IconedGroupBox {"
+                "border-radius: 16px;"
+                "padding: 2px;"
+            "}"
 
-			"QGroupBox::title{"
-				"subcontrol-origin: margin;"
-				"subcontrol-position: top left;"
-				"text-align: left;"
-				"}"
+            "QGroupBox::title{"
+                "subcontrol-origin: margin;"
+                "subcontrol-position: top left;"
+                "text-align: left;"
+                "}"
 
-			"QCheckBox::indicator:checked{"
-				"image: url(\":/res/checked.png\");"
-				"}"
-			"QCheckBox::indicator:unchecked{"
-				"image: url(\":/res/unchecked.png\");"
-				"}"
+            "QCheckBox::indicator:checked{"
+                "image: url(\":/res/checked.png\");"
+                "}"
+            "QCheckBox::indicator:unchecked{"
+                "image: url(\":/res/unchecked.png\");"
+                "}"
 
-			".QWidget{"
-				"background: transparent;"
-				"}"
+            ".QWidget{"
+                "background: transparent;"
+                "}"
 
-			"QTabWidget::pane {"
+            "QTabWidget::pane {"
                 "border-top-width: 2px;"
-			"}"
+            "}"
 
-			"QMenu{"
-				"background-color: #ffcc00;"
-				"margin: 3px;"
-			"}"
-			"QMenu::item {"
-				"background-color: #0d0544;"
-				"border: 1px solid transparent;"
-				"font: bold;"
-				"padding: 2px 25px 2px 20px;"
-			"}"
-			"QMenu::item:selected {"
-				"background-color: #2d2564;"
-			"}"
-			"QMenu::indicator {"
-				"width: 16px;"
-				"height: 16px;"
-			"}"
-			"QMenu::indicator:non-exclusive:checked{"
-				"image: url(\":/res/checked.png\");"
-			"}"
-			"QMenu::indicator:non-exclusive:unchecked{"
-				"image: url(\":/res/unchecked.png\");"
-			"}"
+            "QMenu{"
+                "background-color: #ffcc00;"
+                "margin: 3px;"
+            "}"
+            "QMenu::item {"
+                "background-color: #0d0544;"
+                "border: 1px solid transparent;"
+                "font: bold;"
+                "padding: 2px 25px 2px 20px;"
+            "}"
+            "QMenu::item:selected {"
+                "background-color: #2d2564;"
+            "}"
+            "QMenu::indicator {"
+                "width: 16px;"
+                "height: 16px;"
+            "}"
+            "QMenu::indicator:non-exclusive:checked{"
+                "image: url(\":/res/checked.png\");"
+            "}"
+            "QMenu::indicator:non-exclusive:unchecked{"
+                "image: url(\":/res/unchecked.png\");"
+            "}"
 
-			"QToolTip{"
-				"background-color: #0d0544;"
-			"}"
+            "QToolTip{"
+                "background-color: #0d0544;"
+            "}"
 
-			":disabled{"
-				"color: #a0a0a0;"
-			"}"
+            ":disabled{"
+                "color: #a0a0a0;"
+            "}"
             "SquareLabel, ItemNum {"
-				"background-color: #000000;"
-			"}"
-			)
-		);
+                "background-color: #000000;"
+            "}"
+            )
+        );
 
-	bindir->cd("bin"); // workaround over NSIS installer
+    bindir->cd("bin"); // workaround over NSIS installer
 
-	if(cConfigDir->length() == 0)
-		cfgdir->setPath(cfgdir->homePath());
-	else
-		cfgdir->setPath(*cConfigDir);
+    if(cConfigDir->length() == 0)
+        cfgdir->setPath(cfgdir->homePath());
+    else
+        cfgdir->setPath(*cConfigDir);
 
-	if(cConfigDir->length() == 0)
-	{
+    if(cConfigDir->length() == 0)
+    {
 #ifdef __APPLE__
-		if (checkForDir(cfgdir->absolutePath() + "/Library/Application Support/Hedgewars"))
-		{
-			checkForDir(cfgdir->absolutePath() + "/Library/Application Support/Hedgewars/Demos");
-			checkForDir(cfgdir->absolutePath() + "/Library/Application Support/Hedgewars/Saves");
-		}
-		cfgdir->cd("Library/Application Support/Hedgewars");
+        if (checkForDir(cfgdir->absolutePath() + "/Library/Application Support/Hedgewars"))
+        {
+            checkForDir(cfgdir->absolutePath() + "/Library/Application Support/Hedgewars/Demos");
+            checkForDir(cfgdir->absolutePath() + "/Library/Application Support/Hedgewars/Saves");
+        }
+        cfgdir->cd("Library/Application Support/Hedgewars");
 #else
-		if (checkForDir(cfgdir->absolutePath() + "/.hedgewars"))
-		{
-			checkForDir(cfgdir->absolutePath() + "/.hedgewars/Demos");
-			checkForDir(cfgdir->absolutePath() + "/.hedgewars/Saves");
-		}
-		cfgdir->cd(".hedgewars");
+        if (checkForDir(cfgdir->absolutePath() + "/.hedgewars"))
+        {
+            checkForDir(cfgdir->absolutePath() + "/.hedgewars/Demos");
+            checkForDir(cfgdir->absolutePath() + "/.hedgewars/Saves");
+        }
+        cfgdir->cd(".hedgewars");
 #endif
-	}
-	else
-	{
-		if (checkForDir(cfgdir->absolutePath()))
-		{
-			checkForDir(cfgdir->absolutePath() + "/Demos");
-			checkForDir(cfgdir->absolutePath() + "/Saves");
-		}
-	}
+    }
+    else
+    {
+        if (checkForDir(cfgdir->absolutePath()))
+        {
+            checkForDir(cfgdir->absolutePath() + "/Demos");
+            checkForDir(cfgdir->absolutePath() + "/Saves");
+        }
+    }
 
 
-	datadir->cd(bindir->absolutePath());
-	datadir->cd(*cDataDir);
-	if(!datadir->cd("hedgewars/Data")) {
-		QMessageBox::critical(0, QMessageBox::tr("Error"),
-			QMessageBox::tr("Failed to open data directory:\n%1\n"
-					"Please check your installation").
-					arg(datadir->absolutePath()+"/hedgewars/Data"));
-		return 1;
-	}
+    datadir->cd(bindir->absolutePath());
+    datadir->cd(*cDataDir);
+    if(!datadir->cd("hedgewars/Data")) {
+        QMessageBox::critical(0, QMessageBox::tr("Error"),
+            QMessageBox::tr("Failed to open data directory:\n%1\n"
+                    "Please check your installation").
+                    arg(datadir->absolutePath()+"/hedgewars/Data"));
+        return 1;
+    }
 
-	Themes = new QStringList();
-	QFile themesfile(datadir->absolutePath() + "/Themes/themes.cfg");
-	if (themesfile.open(QIODevice::ReadOnly)) {
-		QTextStream stream(&themesfile);
-		QString str;
-		while (!stream.atEnd())
-		{
-			Themes->append(stream.readLine());
-		}
-		themesfile.close();
-	} else {
-		QMessageBox::critical(0, "Error", "Cannot access themes.cfg", "OK");
-	}
+    Themes = new QStringList();
+    QFile themesfile(datadir->absolutePath() + "/Themes/themes.cfg");
+    if (themesfile.open(QIODevice::ReadOnly)) {
+        QTextStream stream(&themesfile);
+        QString str;
+        while (!stream.atEnd())
+        {
+            Themes->append(stream.readLine());
+        }
+        themesfile.close();
+    } else {
+        QMessageBox::critical(0, "Error", "Cannot access themes.cfg", "OK");
+    }
 
-	QDir tmpdir;
-	tmpdir.cd(datadir->absolutePath());
-	tmpdir.cd("Maps");
-	tmpdir.setFilter(QDir::Dirs | QDir::NoDotAndDotDot);
-	mapList = new QStringList(tmpdir.entryList(QStringList("*")));
+    QDir tmpdir;
+    tmpdir.cd(datadir->absolutePath());
+    tmpdir.cd("Maps");
+    tmpdir.setFilter(QDir::Dirs | QDir::NoDotAndDotDot);
+    mapList = new QStringList(tmpdir.entryList(QStringList("*")));
 
 
-	QTranslator Translator;
-	{
-		QSettings settings(cfgdir->absolutePath() + "/hedgewars.ini", QSettings::IniFormat);
-		QString cc = settings.value("misc/locale", "").toString();
-		if(!cc.compare(""))
-			cc = QLocale::system().name();
-		Translator.load(datadir->absolutePath() + "/Locale/hedgewars_" + cc);
-		app.installTranslator(&Translator);
-	}
+    QTranslator Translator;
+    {
+        QSettings settings(cfgdir->absolutePath() + "/hedgewars.ini", QSettings::IniFormat);
+        QString cc = settings.value("misc/locale", "").toString();
+        if(!cc.compare(""))
+            cc = QLocale::system().name();
+        Translator.load(datadir->absolutePath() + "/Locale/hedgewars_" + cc);
+        app.installTranslator(&Translator);
+    }
 
 
-	HWForm *Form = new HWForm();
+    HWForm *Form = new HWForm();
 
 
-	Form->show();
-	return app.exec();
+    Form->show();
+    return app.exec();
 }
--- a/QTfrontend/mapContainer.cpp	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/mapContainer.cpp	Sat Mar 06 10:59:20 2010 +0000
@@ -35,139 +35,139 @@
 #include "igbox.h"
 
 HWMapContainer::HWMapContainer(QWidget * parent) :
-	QWidget(parent),
-	mainLayout(this),
-	pMap(0)
+    QWidget(parent),
+    mainLayout(this),
+    pMap(0)
 {
-	hhSmall.load(":/res/hh_small.png");
-	hhLimit = 18;
+    hhSmall.load(":/res/hh_small.png");
+    hhLimit = 18;
     templateFilter = 0;
 
-	mainLayout.setContentsMargins(QApplication::style()->pixelMetric(QStyle::PM_LayoutLeftMargin),
-		1,
-		QApplication::style()->pixelMetric(QStyle::PM_LayoutRightMargin),
-		QApplication::style()->pixelMetric(QStyle::PM_LayoutBottomMargin));
+    mainLayout.setContentsMargins(QApplication::style()->pixelMetric(QStyle::PM_LayoutLeftMargin),
+        1,
+        QApplication::style()->pixelMetric(QStyle::PM_LayoutRightMargin),
+        QApplication::style()->pixelMetric(QStyle::PM_LayoutBottomMargin));
 
-	imageButt = new QPushButton(this);
-	imageButt->setObjectName("imageButt");
-	imageButt->setFixedSize(256 + 6, 128 + 6);
-	imageButt->setFlat(true);
-	imageButt->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);//QSizePolicy::Minimum, QSizePolicy::Minimum);
-	mainLayout.addWidget(imageButt, 0, 0, 1, 2);
-	connect(imageButt, SIGNAL(clicked()), this, SLOT(setRandomSeed()));
-	connect(imageButt, SIGNAL(clicked()), this, SLOT(setRandomTheme()));
+    imageButt = new QPushButton(this);
+    imageButt->setObjectName("imageButt");
+    imageButt->setFixedSize(256 + 6, 128 + 6);
+    imageButt->setFlat(true);
+    imageButt->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);//QSizePolicy::Minimum, QSizePolicy::Minimum);
+    mainLayout.addWidget(imageButt, 0, 0, 1, 2);
+    connect(imageButt, SIGNAL(clicked()), this, SLOT(setRandomSeed()));
+    connect(imageButt, SIGNAL(clicked()), this, SLOT(setRandomTheme()));
 
-	chooseMap = new QComboBox(this);
-	chooseMap->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
-	chooseMap->addItem(QComboBox::tr("generated map..."));
-	for (int i = 0; i < mapList->size(); ++i) {
-		QString map = (*mapList)[i];
-		QFile mapCfgFile(
-				QString("%1/Maps/%2/map.cfg")
-				.arg(datadir->absolutePath())
-				.arg(map));
+    chooseMap = new QComboBox(this);
+    chooseMap->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
+    chooseMap->addItem(QComboBox::tr("generated map..."));
+    for (int i = 0; i < mapList->size(); ++i) {
+        QString map = (*mapList)[i];
+        QFile mapCfgFile(
+                QString("%1/Maps/%2/map.cfg")
+                .arg(datadir->absolutePath())
+                .arg(map));
 
-		if (mapCfgFile.open(QFile::ReadOnly)) {
-			QString theme;
-			quint32 limit = 0;
-			QList<QVariant> mapInfo;
-			QTextStream input(&mapCfgFile);
-			input >> theme;
-			input >> limit;
-			mapInfo.push_back(theme);
-			if (limit)
-				mapInfo.push_back(limit);
-			else
-				mapInfo.push_back(18);
-			chooseMap->addItem(map, mapInfo);
-			mapCfgFile.close();
-		}
-	}
+        if (mapCfgFile.open(QFile::ReadOnly)) {
+            QString theme;
+            quint32 limit = 0;
+            QList<QVariant> mapInfo;
+            QTextStream input(&mapCfgFile);
+            input >> theme;
+            input >> limit;
+            mapInfo.push_back(theme);
+            if (limit)
+                mapInfo.push_back(limit);
+            else
+                mapInfo.push_back(18);
+            chooseMap->addItem(map, mapInfo);
+            mapCfgFile.close();
+        }
+    }
 
-	connect(chooseMap, SIGNAL(currentIndexChanged(int)), this, SLOT(mapChanged(int)));
-	mainLayout.addWidget(chooseMap, 1, 1);
+    connect(chooseMap, SIGNAL(currentIndexChanged(int)), this, SLOT(mapChanged(int)));
+    mainLayout.addWidget(chooseMap, 1, 1);
 
-	QLabel * lblMap = new QLabel(tr("Map"), this);
-	mainLayout.addWidget(lblMap, 1, 0);
+    QLabel * lblMap = new QLabel(tr("Map"), this);
+    mainLayout.addWidget(lblMap, 1, 0);
 
-	lblFilter = new QLabel(tr("Filter"), this);
-	mainLayout.addWidget(lblFilter, 2, 0);
+    lblFilter = new QLabel(tr("Filter"), this);
+    mainLayout.addWidget(lblFilter, 2, 0);
 
-	CB_TemplateFilter = new QComboBox(this);
+    CB_TemplateFilter = new QComboBox(this);
     CB_TemplateFilter->addItem(tr("All"), 0);
     CB_TemplateFilter->addItem(tr("Small"), 1);
     CB_TemplateFilter->addItem(tr("Medium"), 2);
     CB_TemplateFilter->addItem(tr("Large"), 3);
     CB_TemplateFilter->addItem(tr("Cavern"), 4);
     CB_TemplateFilter->addItem(tr("Wacky"), 5);
-	mainLayout.addWidget(CB_TemplateFilter, 2, 1);
+    mainLayout.addWidget(CB_TemplateFilter, 2, 1);
 
-	connect(CB_TemplateFilter, SIGNAL(currentIndexChanged(int)), this, SLOT(templateFilterChanged(int)));
+    connect(CB_TemplateFilter, SIGNAL(currentIndexChanged(int)), this, SLOT(templateFilterChanged(int)));
 
-	gbThemes = new IconedGroupBox(this);
-	gbThemes->setTitleTextPadding(60);
-	gbThemes->setContentTopPadding(6);
-	gbThemes->setTitle(tr("Themes"));
+    gbThemes = new IconedGroupBox(this);
+    gbThemes->setTitleTextPadding(60);
+    gbThemes->setContentTopPadding(6);
+    gbThemes->setTitle(tr("Themes"));
 
-	//gbThemes->setStyleSheet("padding: 0px"); // doesn't work - stylesheet is set with icon
-	mainLayout.addWidget(gbThemes, 0, 2, 3, 1);
+    //gbThemes->setStyleSheet("padding: 0px"); // doesn't work - stylesheet is set with icon
+    mainLayout.addWidget(gbThemes, 0, 2, 3, 1);
 
-	QVBoxLayout * gbTLayout = new QVBoxLayout(gbThemes);
-	gbTLayout->setContentsMargins(0, 0, 0 ,0);
-	gbTLayout->setSpacing(0);
-	lwThemes = new QListWidget(this);
-	lwThemes->setMinimumHeight(30);
-	lwThemes->setFixedWidth(120);
-	for (int i = 0; i < Themes->size(); ++i) {
-		QListWidgetItem * lwi = new QListWidgetItem();
-		lwi->setText(Themes->at(i));
-		lwi->setTextAlignment(Qt::AlignHCenter);
-		lwThemes->addItem(lwi);
-	}
-	connect(lwThemes, SIGNAL(currentRowChanged(int)), this, SLOT(themeSelected(int)));
+    QVBoxLayout * gbTLayout = new QVBoxLayout(gbThemes);
+    gbTLayout->setContentsMargins(0, 0, 0 ,0);
+    gbTLayout->setSpacing(0);
+    lwThemes = new QListWidget(this);
+    lwThemes->setMinimumHeight(30);
+    lwThemes->setFixedWidth(120);
+    for (int i = 0; i < Themes->size(); ++i) {
+        QListWidgetItem * lwi = new QListWidgetItem();
+        lwi->setText(Themes->at(i));
+        lwi->setTextAlignment(Qt::AlignHCenter);
+        lwThemes->addItem(lwi);
+    }
+    connect(lwThemes, SIGNAL(currentRowChanged(int)), this, SLOT(themeSelected(int)));
 
     // override default style to tighten up theme scroller
-	lwThemes->setStyleSheet(QString(
-		"QListWidget{"
-			"border: solid;"
-			"border-width: 0px;"
-			"border-radius: 0px;"
-			"border-color: transparent;"
-			"background-color: #0d0544;"
-			"color: #ffcc00;"
-			"font: bold 14px;"
-			"}"
-		)
-	);
+    lwThemes->setStyleSheet(QString(
+        "QListWidget{"
+            "border: solid;"
+            "border-width: 0px;"
+            "border-radius: 0px;"
+            "border-color: transparent;"
+            "background-color: #0d0544;"
+            "color: #ffcc00;"
+            "font: bold 14px;"
+            "}"
+        )
+    );
 
-	gbTLayout->addWidget(lwThemes);
-	lwThemes->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Minimum);
+    gbTLayout->addWidget(lwThemes);
+    lwThemes->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Minimum);
 
-	mainLayout.setSizeConstraint(QLayout::SetFixedSize);//SetMinimumSize
+    mainLayout.setSizeConstraint(QLayout::SetFixedSize);//SetMinimumSize
 
-	setRandomSeed();
-	setRandomTheme();
+    setRandomSeed();
+    setRandomTheme();
 }
 
 void HWMapContainer::setImage(const QImage newImage)
 {
-	QPixmap px(256, 128);
-	QPixmap pxres(256, 128);
-	QPainter p(&pxres);
+    QPixmap px(256, 128);
+    QPixmap pxres(256, 128);
+    QPainter p(&pxres);
 
-	px.fill(Qt::yellow);
-	QBitmap bm = QBitmap::fromImage(newImage);
-	px.setMask(bm);
+    px.fill(Qt::yellow);
+    QBitmap bm = QBitmap::fromImage(newImage);
+    px.setMask(bm);
 
-	QLinearGradient linearGrad(QPoint(128, 0), QPoint(128, 128));
-	linearGrad.setColorAt(1, QColor(0, 0, 192));
-	linearGrad.setColorAt(0, QColor(66, 115, 225));
-	p.fillRect(QRect(0, 0, 256, 128), linearGrad);
-	p.drawPixmap(QPoint(0, 0), px);
+    QLinearGradient linearGrad(QPoint(128, 0), QPoint(128, 128));
+    linearGrad.setColorAt(1, QColor(0, 0, 192));
+    linearGrad.setColorAt(0, QColor(66, 115, 225));
+    p.fillRect(QRect(0, 0, 256, 128), linearGrad);
+    p.drawPixmap(QPoint(0, 0), px);
 
     addInfoToPreview(pxres);
-	chooseMap->setCurrentIndex(0);
-	pMap = 0;
+    chooseMap->setCurrentIndex(0);
+    pMap = 0;
 }
 
 void HWMapContainer::setHHLimit(int newHHLimit)
@@ -177,31 +177,31 @@
 
 void HWMapContainer::mapChanged(int index)
 {
-	if(!index) {
-		changeImage();
-		gbThemes->show();
+    if(!index) {
+        changeImage();
+        gbThemes->show();
         lblFilter->show();
         CB_TemplateFilter->show();
-		emit mapChanged("+rnd+");
-		emit themeChanged(chooseMap->itemData(0).toList()[0].toString());
-	} else
-	{
-		loadMap(index);
-		gbThemes->hide();
+        emit mapChanged("+rnd+");
+        emit themeChanged(chooseMap->itemData(0).toList()[0].toString());
+    } else
+    {
+        loadMap(index);
+        gbThemes->hide();
         lblFilter->hide();
         CB_TemplateFilter->hide();
-		emit mapChanged(chooseMap->currentText());
-	}
+        emit mapChanged(chooseMap->currentText());
+    }
 }
 
 void HWMapContainer::loadMap(int index)
 {
-	QPixmap mapImage;
-	if(!mapImage.load(datadir->absolutePath() + "/Maps/" + chooseMap->currentText() + "/preview.png")) {
-		changeImage();
-		chooseMap->setCurrentIndex(0);
-		return;
-	}
+    QPixmap mapImage;
+    if(!mapImage.load(datadir->absolutePath() + "/Maps/" + chooseMap->currentText() + "/preview.png")) {
+        changeImage();
+        chooseMap->setCurrentIndex(0);
+        return;
+    }
 
     hhLimit = chooseMap->itemData(index).toList()[1].toInt();
     addInfoToPreview(mapImage);
@@ -210,73 +210,73 @@
 // Should this add text to identify map size?
 void HWMapContainer::addInfoToPreview(QPixmap image)
 {
-	QPixmap finalImage = QPixmap(image.size());
-	finalImage.fill(QColor(0, 0, 0, 0));
+    QPixmap finalImage = QPixmap(image.size());
+    finalImage.fill(QColor(0, 0, 0, 0));
 
-	QPainter p(&finalImage);
-	p.drawPixmap(image.rect(), image);
-	//p.setPen(QColor(0xf4,0x9e,0xe9));
-	p.setPen(QColor(0xff,0xcc,0x00));
-	p.setBrush(QColor(0, 0, 0));
-	p.drawRect(image.rect().width() - hhSmall.rect().width() - 28, 3, 40, 20);
-	p.setFont(QFont("MS Shell Dlg", 10));
-	p.drawText(image.rect().width() - hhSmall.rect().width() - 14 - (hhLimit > 9 ? 10 : 0), 18, QString::number(hhLimit));
-	p.drawPixmap(image.rect().width() - hhSmall.rect().width() - 5, 5, hhSmall.rect().width(), hhSmall.rect().height(), hhSmall);
+    QPainter p(&finalImage);
+    p.drawPixmap(image.rect(), image);
+    //p.setPen(QColor(0xf4,0x9e,0xe9));
+    p.setPen(QColor(0xff,0xcc,0x00));
+    p.setBrush(QColor(0, 0, 0));
+    p.drawRect(image.rect().width() - hhSmall.rect().width() - 28, 3, 40, 20);
+    p.setFont(QFont("MS Shell Dlg", 10));
+    p.drawText(image.rect().width() - hhSmall.rect().width() - 14 - (hhLimit > 9 ? 10 : 0), 18, QString::number(hhLimit));
+    p.drawPixmap(image.rect().width() - hhSmall.rect().width() - 5, 5, hhSmall.rect().width(), hhSmall.rect().height(), hhSmall);
 
-	imageButt->setIcon(finalImage);
-	imageButt->setIconSize(image.size());
+    imageButt->setIcon(finalImage);
+    imageButt->setIconSize(image.size());
 }
 
 void HWMapContainer::changeImage()
 {
-	if (pMap)
-	{
-		disconnect(pMap, 0, this, SLOT(setImage(const QImage)));
-		disconnect(pMap, 0, this, SLOT(setHHLimit(int)));
-		pMap = 0;
-	}
+    if (pMap)
+    {
+        disconnect(pMap, 0, this, SLOT(setImage(const QImage)));
+        disconnect(pMap, 0, this, SLOT(setHHLimit(int)));
+        pMap = 0;
+    }
 
-	pMap = new HWMap();
-	connect(pMap, SIGNAL(ImageReceived(const QImage)), this, SLOT(setImage(const QImage)));
-	connect(pMap, SIGNAL(HHLimitReceived(int)), this, SLOT(setHHLimit(int)));
-	pMap->getImage(m_seed.toStdString(), getTemplateFilter());
+    pMap = new HWMap();
+    connect(pMap, SIGNAL(ImageReceived(const QImage)), this, SLOT(setImage(const QImage)));
+    connect(pMap, SIGNAL(HHLimitReceived(int)), this, SLOT(setHHLimit(int)));
+    pMap->getImage(m_seed.toStdString(), getTemplateFilter());
 }
 
 void HWMapContainer::themeSelected(int currentRow)
 {
-	QString theme = Themes->at(currentRow);
-	QList<QVariant> mapInfo;
-	mapInfo.push_back(theme);
-	mapInfo.push_back(18);
-	chooseMap->setItemData(0, mapInfo);
-	gbThemes->setIcon(QIcon(QString("%1/Themes/%2/icon.png").arg(datadir->absolutePath()).arg(theme)));
-	emit themeChanged(theme);
+    QString theme = Themes->at(currentRow);
+    QList<QVariant> mapInfo;
+    mapInfo.push_back(theme);
+    mapInfo.push_back(18);
+    chooseMap->setItemData(0, mapInfo);
+    gbThemes->setIcon(QIcon(QString("%1/Themes/%2/icon.png").arg(datadir->absolutePath()).arg(theme)));
+    emit themeChanged(theme);
 }
 
 QString HWMapContainer::getCurrentSeed() const
 {
-	return m_seed;
+    return m_seed;
 }
 
 QString HWMapContainer::getCurrentMap() const
 {
-	if(!chooseMap->currentIndex()) return QString();
-	return chooseMap->currentText();
+    if(!chooseMap->currentIndex()) return QString();
+    return chooseMap->currentText();
 }
 
 QString HWMapContainer::getCurrentTheme() const
 {
-	return chooseMap->itemData(chooseMap->currentIndex()).toList()[0].toString();
+    return chooseMap->itemData(chooseMap->currentIndex()).toList()[0].toString();
 }
 
 int HWMapContainer::getCurrentHHLimit() const
 {
-	return hhLimit;
+    return hhLimit;
 }
 
 quint32 HWMapContainer::getTemplateFilter() const
 {
-	return CB_TemplateFilter->itemData(CB_TemplateFilter->currentIndex()).toInt();
+    return CB_TemplateFilter->itemData(CB_TemplateFilter->currentIndex()).toInt();
 }
 
 void HWMapContainer::resizeEvent ( QResizeEvent * event )
@@ -286,60 +286,60 @@
 
 void HWMapContainer::setSeed(const QString & seed)
 {
-	m_seed = seed;
-	changeImage();
+    m_seed = seed;
+    changeImage();
 }
 
 void HWMapContainer::setMap(const QString & map)
 {
-	if(map == "+rnd+")
-	{
-		changeImage();
-		return;
-	}
+    if(map == "+rnd+")
+    {
+        changeImage();
+        return;
+    }
 
-	int id = chooseMap->findText(map);
-	if(id > 0) {
-		if (pMap)
-		{
-			disconnect(pMap, 0, this, SLOT(setImage(const QImage)));
-			disconnect(pMap, 0, this, SLOT(setHHLimit(int)));
-			pMap = 0;
-		}
-		chooseMap->setCurrentIndex(id);
-		loadMap(id);
-	}
+    int id = chooseMap->findText(map);
+    if(id > 0) {
+        if (pMap)
+        {
+            disconnect(pMap, 0, this, SLOT(setImage(const QImage)));
+            disconnect(pMap, 0, this, SLOT(setHHLimit(int)));
+            pMap = 0;
+        }
+        chooseMap->setCurrentIndex(id);
+        loadMap(id);
+    }
 }
 
 void HWMapContainer::setTheme(const QString & theme)
 {
-	QList<QListWidgetItem *> items = lwThemes->findItems(theme, Qt::MatchExactly);
-	if(items.size())
-		lwThemes->setCurrentItem(items.at(0));
+    QList<QListWidgetItem *> items = lwThemes->findItems(theme, Qt::MatchExactly);
+    if(items.size())
+        lwThemes->setCurrentItem(items.at(0));
 }
 
 void HWMapContainer::setRandomSeed()
 {
-	m_seed = QUuid::createUuid().toString();
-	emit seedChanged(m_seed);
-	changeImage();
+    m_seed = QUuid::createUuid().toString();
+    emit seedChanged(m_seed);
+    changeImage();
 }
 
 void HWMapContainer::setRandomTheme()
 {
-	if(!Themes->size()) return;
-	quint32 themeNum = rand() % Themes->size();
-	lwThemes->setCurrentRow(themeNum);
+    if(!Themes->size()) return;
+    quint32 themeNum = rand() % Themes->size();
+    lwThemes->setCurrentRow(themeNum);
 }
 
 void HWMapContainer::setTemplateFilter(int filter)
 {
-	CB_TemplateFilter->setCurrentIndex(filter);
+    CB_TemplateFilter->setCurrentIndex(filter);
 }
 
 void HWMapContainer::templateFilterChanged(int filter)
 {
-	emit newTemplateFilter(filter);
-	changeImage();
+    emit newTemplateFilter(filter);
+    changeImage();
 }
 
--- a/QTfrontend/misc.h	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/misc.h	Sat Mar 06 10:59:20 2010 +0000
@@ -24,21 +24,21 @@
 
 class FreqSpinBox : public QSpinBox
 {
-	Q_OBJECT
+    Q_OBJECT
 
 public:
-	FreqSpinBox(QWidget* parent) : QSpinBox(parent)
-	{
+    FreqSpinBox(QWidget* parent) : QSpinBox(parent)
+    {
 
-	}
+    }
 
-	QString textFromValue(int value) const
-	{
-		if (!value)
-			return tr("Never");
-		else
-			return tr("Every %1 turn", "", value).arg(value);
-	}
+    QString textFromValue(int value) const
+    {
+        if (!value)
+            return tr("Never");
+        else
+            return tr("Every %1 turn", "", value).arg(value);
+    }
 };
 
 
--- a/QTfrontend/namegen.cpp	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/namegen.cpp	Sat Mar 06 10:59:20 2010 +0000
@@ -27,10 +27,10 @@
 
 
 HWNamegen::HWNamegen() :
-	TypesAvliable(false)
+    TypesAvliable(false)
 {
 
-	TypesLoad();
+    TypesLoad();
 }
 
 HWNamegen::~HWNamegen()
@@ -41,46 +41,46 @@
 
 void HWNamegen::TeamRandomName(HWTeam*& team, const int &i)
 {
-	RandomNameByHat(team,i);
+    RandomNameByHat(team,i);
 }
 
 void HWNamegen::TeamRandomNames(HWTeam*& team, const bool changeteamname)
 {
-	if ((TypesHatnames.size() > 0) && TypesAvliable){
+    if ((TypesHatnames.size() > 0) && TypesAvliable){
 
-		int kind = (rand()%(TypesHatnames.size()));
+        int kind = (rand()%(TypesHatnames.size()));
 
-		if (changeteamname){
-			if (TypesTeamnames[kind].size() > 0){
-				team->TeamName = TypesTeamnames[kind][rand()%(TypesTeamnames[kind].size())];
-			}
-			team->Grave = "Simple"; // Todo: make it semi-random
-			team->Fort = "Island"; // Todo: make it semi-random
-			team->Voicepack = "Default";
-		}
+        if (changeteamname){
+            if (TypesTeamnames[kind].size() > 0){
+                team->TeamName = TypesTeamnames[kind][rand()%(TypesTeamnames[kind].size())];
+            }
+            team->Grave = "Simple"; // Todo: make it semi-random
+            team->Fort = "Island"; // Todo: make it semi-random
+            team->Voicepack = "Default";
+        }
 
-		for(int i = 0; i < 8; i++)
-		{
-			if ((TypesHatnames[kind].size()) > 0){
-				team->HHHat[i] = TypesHatnames[kind][rand()%(TypesHatnames[kind].size())];
-			}
-			RandomNameByHat(team,i);
-		}
+        for(int i = 0; i < 8; i++)
+        {
+            if ((TypesHatnames[kind].size()) > 0){
+                team->HHHat[i] = TypesHatnames[kind][rand()%(TypesHatnames[kind].size())];
+            }
+            RandomNameByHat(team,i);
+        }
 
-	}
+    }
 
 }
 
 
 void HWNamegen::RandomNameByHat(HWTeam*& team, const int &i)
 {
-	QStringList Dictionaries;
-	HatCfgLoad(team->HHHat[i],Dictionaries);
+    QStringList Dictionaries;
+    HatCfgLoad(team->HHHat[i],Dictionaries);
 
-	QStringList Dictionary;
-	DictLoad(Dictionaries[rand()%(Dictionaries.size())],Dictionary);
+    QStringList Dictionary;
+    DictLoad(Dictionaries[rand()%(Dictionaries.size())],Dictionary);
 
-	team->HHName[i] = Dictionary[rand()%(Dictionary.size())];
+    team->HHName[i] = Dictionary[rand()%(Dictionary.size())];
 }
 
 void HWNamegen::DictLoad(const QString filename, QStringList &list)
--- a/QTfrontend/namegen.h	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/namegen.h	Sat Mar 06 10:59:20 2010 +0000
@@ -27,21 +27,21 @@
 class HWNamegen
 {
 public:
-	HWNamegen();
-	~HWNamegen();
+    HWNamegen();
+    ~HWNamegen();
 
-	void TeamRandomName(HWTeam*& team, const int &i);
-	void TeamRandomNames(HWTeam*& team, const bool changeteamname);
-	void RandomNameByHat(HWTeam*& team, const int &i);
+    void TeamRandomName(HWTeam*& team, const int &i);
+    void TeamRandomNames(HWTeam*& team, const bool changeteamname);
+    void RandomNameByHat(HWTeam*& team, const int &i);
 
 private:
 
-		QList<QStringList> TypesTeamnames;
-		QList<QStringList> TypesHatnames;
-		bool TypesAvliable;
-		void TypesLoad();
-		void DictLoad(const QString filename, QStringList &list);
-		void HatCfgLoad(const QString hatname, QStringList &list);
+        QList<QStringList> TypesTeamnames;
+        QList<QStringList> TypesHatnames;
+        bool TypesAvliable;
+        void TypesLoad();
+        void DictLoad(const QString filename, QStringList &list);
+        void HatCfgLoad(const QString hatname, QStringList &list);
 };
 
 
--- a/QTfrontend/netregister.h	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/netregister.h	Sat Mar 06 10:59:20 2010 +0000
@@ -23,13 +23,13 @@
 
 class HWNetRegisterServer : public QObject
 {
-	Q_OBJECT
+    Q_OBJECT
 
 public:
-	HWNetRegisterServer(QObject *parent, const QString & descr, quint16 port);
+    HWNetRegisterServer(QObject *parent, const QString & descr, quint16 port);
 
 public slots:
-	virtual void unregister();
+    virtual void unregister();
 };
 
 #endif // _NET_REGISTER_INCLUDED
--- a/QTfrontend/netserver.cpp	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/netserver.cpp	Sat Mar 06 10:59:20 2010 +0000
@@ -24,25 +24,25 @@
 
 HWNetServer::~HWNetServer()
 {
-	StopServer();
+    StopServer();
 }
 
 bool HWNetServer::StartServer(quint16 port)
 {
-	ds_port = port;
+    ds_port = port;
 
-	QStringList params;
-	params << QString("--port=%1").arg(port);
-	params << "--dedicated=False";
+    QStringList params;
+    params << QString("--port=%1").arg(port);
+    params << "--dedicated=False";
 
-	process.start(bindir->absolutePath() + "/hedgewars-server", params);
+    process.start(bindir->absolutePath() + "/hedgewars-server", params);
 
-	return process.waitForStarted(5000);
+    return process.waitForStarted(5000);
 }
 
 void HWNetServer::StopServer()
 {
-	process.close();
+    process.close();
 }
 
 
--- a/QTfrontend/netserver.h	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/netserver.h	Sat Mar 06 10:59:20 2010 +0000
@@ -24,18 +24,18 @@
 
 class HWNetServer : public QObject
 {
-	Q_OBJECT
+    Q_OBJECT
 
 public:
-	~HWNetServer();
-	bool StartServer(quint16 port);
-	void StopServer();
-	QString getRunningHostName() const;
-	quint16 getRunningPort() const;
+    ~HWNetServer();
+    bool StartServer(quint16 port);
+    void StopServer();
+    QString getRunningHostName() const;
+    quint16 getRunningPort() const;
 
 private:
-	quint16 ds_port;
-	QProcess process;
+    quint16 ds_port;
+    QProcess process;
 };
 
 #endif // _NETSERVER_INCLUDED
--- a/QTfrontend/netserverslist.cpp	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/netserverslist.cpp	Sat Mar 06 10:59:20 2010 +0000
@@ -35,34 +35,34 @@
 QVariant HWNetServersModel::headerData(int section,
             Qt::Orientation orientation, int role) const
 {
-	if (role != Qt::DisplayRole)
-		return QVariant();
+    if (role != Qt::DisplayRole)
+        return QVariant();
 
-	if (orientation == Qt::Horizontal)
-	{
-		switch (section)
-		{
-			case 0: return tr("Title");
-			case 1: return tr("IP");
-			case 2: return tr("Port");
-			default: return QVariant();
-		}
-	} else
-		return QString("%1").arg(section + 1);
+    if (orientation == Qt::Horizontal)
+    {
+        switch (section)
+        {
+            case 0: return tr("Title");
+            case 1: return tr("IP");
+            case 2: return tr("Port");
+            default: return QVariant();
+        }
+    } else
+        return QString("%1").arg(section + 1);
 }
 
 int HWNetServersModel::rowCount(const QModelIndex &parent) const
 {
-	if (parent.isValid())
-		return 0;
-	else
-		return games.size();
+    if (parent.isValid())
+        return 0;
+    else
+        return games.size();
 }
 
 int HWNetServersModel::columnCount(const QModelIndex & parent) const
 {
-	if (parent.isValid())
-		return 0;
-	else
-		return 3;
+    if (parent.isValid())
+        return 0;
+    else
+        return 3;
 }
--- a/QTfrontend/netserverslist.h	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/netserverslist.h	Sat Mar 06 10:59:20 2010 +0000
@@ -24,20 +24,20 @@
 
 class HWNetServersModel : public QAbstractTableModel
 {
-	Q_OBJECT
+    Q_OBJECT
 
 public:
-	HWNetServersModel(QObject *parent = 0);
+    HWNetServersModel(QObject *parent = 0);
 
-	QVariant headerData(int section, Qt::Orientation orientation, int role) const;
-	int rowCount(const QModelIndex & parent) const;
-	int columnCount(const QModelIndex & parent) const;
+    QVariant headerData(int section, Qt::Orientation orientation, int role) const;
+    int rowCount(const QModelIndex & parent) const;
+    int columnCount(const QModelIndex & parent) const;
 
 public slots:
-	virtual void updateList();
+    virtual void updateList();
 
 protected:
-	QList<QStringList> games;
+    QList<QStringList> games;
 };
 
 #endif // _NET_SERVERSLIST_INCLUDED
--- a/QTfrontend/netudpwidget.cpp	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/netudpwidget.cpp	Sat Mar 06 10:59:20 2010 +0000
@@ -24,48 +24,48 @@
 HWNetUdpModel::HWNetUdpModel(QObject* parent) :
   HWNetServersModel(parent)
 {
-	pUdpSocket = new QUdpSocket(this);
+    pUdpSocket = new QUdpSocket(this);
 
-	pUdpSocket->bind();
-	connect(pUdpSocket, SIGNAL(readyRead()), this, SLOT(onClientRead()));
+    pUdpSocket->bind();
+    connect(pUdpSocket, SIGNAL(readyRead()), this, SLOT(onClientRead()));
 }
 
 void HWNetUdpModel::updateList()
 {
-	games.clear();
+    games.clear();
 
-	reset();
+    reset();
 
-	pUdpSocket->writeDatagram("hedgewars client", QHostAddress::Broadcast, 46631);
+    pUdpSocket->writeDatagram("hedgewars client", QHostAddress::Broadcast, 46631);
 }
 
 void HWNetUdpModel::onClientRead()
 {
-	while (pUdpSocket->hasPendingDatagrams()) {
-		QByteArray datagram;
-		datagram.resize(pUdpSocket->pendingDatagramSize());
-		QHostAddress clientAddr;
-		quint16 clientPort;
+    while (pUdpSocket->hasPendingDatagrams()) {
+        QByteArray datagram;
+        datagram.resize(pUdpSocket->pendingDatagramSize());
+        QHostAddress clientAddr;
+        quint16 clientPort;
 
-		pUdpSocket->readDatagram(datagram.data(), datagram.size(), &clientAddr, &clientPort);
+        pUdpSocket->readDatagram(datagram.data(), datagram.size(), &clientAddr, &clientPort);
 
-		if(QString("%1").arg(datagram.data())==QString("hedgewars server")) {
-			QStringList sl;
-			sl << "-" << clientAddr.toString() << "46631";
-			games.append(sl);
-		}
-	}
+        if(QString("%1").arg(datagram.data())==QString("hedgewars server")) {
+            QStringList sl;
+            sl << "-" << clientAddr.toString() << "46631";
+            games.append(sl);
+        }
+    }
 
-	reset();
+    reset();
 }
 
 QVariant HWNetUdpModel::data(const QModelIndex &index,
                              int role) const
 {
-	if (!index.isValid() || index.row() < 0
-		|| index.row() >= games.size()
-		|| role != Qt::DisplayRole)
-	return QVariant();
+    if (!index.isValid() || index.row() < 0
+        || index.row() >= games.size()
+        || role != Qt::DisplayRole)
+    return QVariant();
 
-	return games[index.row()][index.column()];
+    return games[index.row()][index.column()];
 }
--- a/QTfrontend/netudpwidget.h	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/netudpwidget.h	Sat Mar 06 10:59:20 2010 +0000
@@ -29,18 +29,18 @@
   Q_OBJECT
 
 public:
-	HWNetUdpModel(QObject *parent = 0);
+    HWNetUdpModel(QObject *parent = 0);
 
-	QVariant data(const QModelIndex &index, int role) const;
+    QVariant data(const QModelIndex &index, int role) const;
 
 public slots:
-	void updateList();
+    void updateList();
 
 private slots:
-	void onClientRead();
+    void onClientRead();
 
 private:
-	QUdpSocket* pUdpSocket;
+    QUdpSocket* pUdpSocket;
 };
 
 #endif // _NET_UDPWIDGET_INCLUDED
--- a/QTfrontend/newnetclient.cpp	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/newnetclient.cpp	Sat Mar 06 10:59:20 2010 +0000
@@ -42,96 +42,96 @@
   netClientState(0)
 {
 // socket stuff
-	connect(&NetSocket, SIGNAL(readyRead()), this, SLOT(ClientRead()));
-	connect(&NetSocket, SIGNAL(connected()), this, SLOT(OnConnect()));
-	connect(&NetSocket, SIGNAL(disconnected()), this, SLOT(OnDisconnect()));
-	connect(&NetSocket, SIGNAL(error(QAbstractSocket::SocketError)), this,
-			SLOT(displayError(QAbstractSocket::SocketError)));
+    connect(&NetSocket, SIGNAL(readyRead()), this, SLOT(ClientRead()));
+    connect(&NetSocket, SIGNAL(connected()), this, SLOT(OnConnect()));
+    connect(&NetSocket, SIGNAL(disconnected()), this, SLOT(OnDisconnect()));
+    connect(&NetSocket, SIGNAL(error(QAbstractSocket::SocketError)), this,
+            SLOT(displayError(QAbstractSocket::SocketError)));
 
 // config stuff
-	connect(this, SIGNAL(paramChanged(const QString &, const QStringList &)), pGameCFGWidget, SLOT(setParam(const QString &, const QStringList &)));
-	connect(pGameCFGWidget, SIGNAL(paramChanged(const QString &, const QStringList &)), this, SLOT(onParamChanged(const QString &, const QStringList &)));
-	connect(this, SIGNAL(configAsked()), pGameCFGWidget, SLOT(fullNetConfig()));
+    connect(this, SIGNAL(paramChanged(const QString &, const QStringList &)), pGameCFGWidget, SLOT(setParam(const QString &, const QStringList &)));
+    connect(pGameCFGWidget, SIGNAL(paramChanged(const QString &, const QStringList &)), this, SLOT(onParamChanged(const QString &, const QStringList &)));
+    connect(this, SIGNAL(configAsked()), pGameCFGWidget, SLOT(fullNetConfig()));
 }
 
 HWNewNet::~HWNewNet()
 {
-	if (m_game_connected)
-	{
-		RawSendNet(QString("QUIT%1%2").arg(delimeter).arg("User quit"));
-		emit Disconnected();
-	}
-	NetSocket.flush();
+    if (m_game_connected)
+    {
+        RawSendNet(QString("QUIT%1%2").arg(delimeter).arg("User quit"));
+        emit Disconnected();
+    }
+    NetSocket.flush();
 }
 
 void HWNewNet::Connect(const QString & hostName, quint16 port, const QString & nick)
 {
-	mynick = nick.isEmpty() ? QLineEdit::tr("unnamed") : nick;
-	myhost = hostName + QString(":%1").arg(port);
-	NetSocket.connectToHost(hostName, port);
+    mynick = nick.isEmpty() ? QLineEdit::tr("unnamed") : nick;
+    myhost = hostName + QString(":%1").arg(port);
+    NetSocket.connectToHost(hostName, port);
 }
 
 void HWNewNet::Disconnect()
 {
-	if (m_game_connected)
-		RawSendNet(QString("QUIT%1%2").arg(delimeter).arg("User quit"));
-	m_game_connected = false;
+    if (m_game_connected)
+        RawSendNet(QString("QUIT%1%2").arg(delimeter).arg("User quit"));
+    m_game_connected = false;
 
-	NetSocket.disconnectFromHost();
+    NetSocket.disconnectFromHost();
 }
 
 void HWNewNet::CreateRoom(const QString & room)
 {
-	if(netClientState != 2)
-	{
-		qWarning("Illegal try to create room!");
-		return;
-	}
+    if(netClientState != 2)
+    {
+        qWarning("Illegal try to create room!");
+        return;
+    }
 
-	myroom = room;
+    myroom = room;
 
-	RawSendNet(QString("CREATE_ROOM%1%2").arg(delimeter).arg(room));
-	isChief = true;
+    RawSendNet(QString("CREATE_ROOM%1%2").arg(delimeter).arg(room));
+    isChief = true;
 }
 
 void HWNewNet::JoinRoom(const QString & room)
 {
-	if(netClientState != 2)
-	{
-		qWarning("Illegal try to join room!");
-		return;
-	}
+    if(netClientState != 2)
+    {
+        qWarning("Illegal try to join room!");
+        return;
+    }
 
-	myroom = room;
+    myroom = room;
 
-	RawSendNet(QString("JOIN_ROOM%1%2").arg(delimeter).arg(room));
-	isChief = false;
+    RawSendNet(QString("JOIN_ROOM%1%2").arg(delimeter).arg(room));
+    isChief = false;
 }
 
 void HWNewNet::AddTeam(const HWTeam & team)
 {
-	QString cmd = QString("ADD_TEAM") + delimeter +
-	     team.TeamName + delimeter +
-	     team.teamColor.name() + delimeter +
-	     team.Grave + delimeter +
-	     team.Fort + delimeter +
-	     team.Voicepack + delimeter +
-		 team.Flag + delimeter +
-	     QString::number(team.difficulty);
+    QString cmd = QString("ADD_TEAM") + delimeter +
+         team.TeamName + delimeter +
+         team.teamColor.name() + delimeter +
+         team.Grave + delimeter +
+         team.Fort + delimeter +
+         team.Voicepack + delimeter +
+         team.Flag + delimeter +
+         QString::number(team.difficulty);
 
-	for(int i = 0; i < 8; ++i)
-	{
-		cmd.append(delimeter);
-		cmd.append(team.HHName[i]);
-		cmd.append(delimeter);
-		cmd.append(team.HHHat[i]);
-	}
-	RawSendNet(cmd);
+    for(int i = 0; i < 8; ++i)
+    {
+        cmd.append(delimeter);
+        cmd.append(team.HHName[i]);
+        cmd.append(delimeter);
+        cmd.append(team.HHHat[i]);
+    }
+    RawSendNet(cmd);
 }
 
 void HWNewNet::RemoveTeam(const HWTeam & team)
 {
-	RawSendNet(QString("REMOVE_TEAM") + delimeter + team.TeamName);
+    RawSendNet(QString("REMOVE_TEAM") + delimeter + team.TeamName);
 }
 
 void HWNewNet::ToggleReady()
@@ -153,23 +153,23 @@
 
 void HWNewNet::RawSendNet(const QByteArray & buf)
 {
-//	qDebug() << "Client: " << QString(buf).split("\n");
-	NetSocket.write(buf);
-	NetSocket.write("\n\n", 2);
+//  qDebug() << "Client: " << QString(buf).split("\n");
+    NetSocket.write(buf);
+    NetSocket.write("\n\n", 2);
 }
 
 void HWNewNet::ClientRead()
 {
-	while (NetSocket.canReadLine()) {
-		QString s = QString::fromUtf8(NetSocket.readLine());
-		if (s.endsWith('\n')) s.chop(1);
+    while (NetSocket.canReadLine()) {
+        QString s = QString::fromUtf8(NetSocket.readLine());
+        if (s.endsWith('\n')) s.chop(1);
 
-		if (s.size() == 0) {
-			ParseCmd(cmdbuf);
-			cmdbuf.clear();
-		} else
-			cmdbuf << s;
-	}
+        if (s.size() == 0) {
+            ParseCmd(cmdbuf);
+            cmdbuf.clear();
+        } else
+            cmdbuf << s;
+    }
 }
 
 void HWNewNet::OnConnect()
@@ -178,284 +178,284 @@
 
 void HWNewNet::OnDisconnect()
 {
-	if(m_game_connected) emit Disconnected();
-	m_game_connected = false;
+    if(m_game_connected) emit Disconnected();
+    m_game_connected = false;
 }
 
 void HWNewNet::displayError(QAbstractSocket::SocketError socketError)
 {
-	emit Disconnected();
+    emit Disconnected();
 
-	switch (socketError) {
-		case QAbstractSocket::RemoteHostClosedError:
-			break;
-		case QAbstractSocket::HostNotFoundError:
-			emit showMessage(tr("The host was not found. Please check the host name and port settings."));
-			break;
-		case QAbstractSocket::ConnectionRefusedError:
-			emit showMessage(tr("Connection refused"));
-			break;
-		default:
-			emit showMessage(NetSocket.errorString());
-		}
+    switch (socketError) {
+        case QAbstractSocket::RemoteHostClosedError:
+            break;
+        case QAbstractSocket::HostNotFoundError:
+            emit showMessage(tr("The host was not found. Please check the host name and port settings."));
+            break;
+        case QAbstractSocket::ConnectionRefusedError:
+            emit showMessage(tr("Connection refused"));
+            break;
+        default:
+            emit showMessage(NetSocket.errorString());
+        }
 }
 
 void HWNewNet::ParseCmd(const QStringList & lst)
 {
-//	qDebug() << "Server: " << lst;
+//  qDebug() << "Server: " << lst;
 
-	if(!lst.size())
-	{
-		qWarning("Net client: Bad message");
-		return;
-	}
+    if(!lst.size())
+    {
+        qWarning("Net client: Bad message");
+        return;
+    }
 
-	if (lst[0] == "NICK")
-	{
-		mynick = lst[1];
-		return ;
-	}
+    if (lst[0] == "NICK")
+    {
+        mynick = lst[1];
+        return ;
+    }
 
-	if (lst[0] == "PROTO")
-		return ;
+    if (lst[0] == "PROTO")
+        return ;
 
-	if (lst[0] == "ERROR") {
-		if (lst.size() == 2)
-			emit showMessage("Error: " + lst[1]);
-		else
-			emit showMessage("Unknown error");
-		return;
-	}
+    if (lst[0] == "ERROR") {
+        if (lst.size() == 2)
+            emit showMessage("Error: " + lst[1]);
+        else
+            emit showMessage("Unknown error");
+        return;
+    }
 
-	if (lst[0] == "WARNING") {
-		if (lst.size() == 2)
-			emit showMessage("Warning: " + lst[1]);
-		else
-			emit showMessage("Unknown warning");
-		return;
-	}
+    if (lst[0] == "WARNING") {
+        if (lst.size() == 2)
+            emit showMessage("Warning: " + lst[1]);
+        else
+            emit showMessage("Unknown warning");
+        return;
+    }
 
-	if (lst[0] == "CONNECTED") {
-		RawSendNet(QString("NICK%1%2").arg(delimeter).arg(mynick));
-		RawSendNet(QString("PROTO%1%2").arg(delimeter).arg(*cProtoVer));
-		netClientState = 1;
-		m_game_connected = true;
-		emit adminAccess(false);
-		return;
-	}
+    if (lst[0] == "CONNECTED") {
+        RawSendNet(QString("NICK%1%2").arg(delimeter).arg(mynick));
+        RawSendNet(QString("PROTO%1%2").arg(delimeter).arg(*cProtoVer));
+        netClientState = 1;
+        m_game_connected = true;
+        emit adminAccess(false);
+        return;
+    }
 
-	if (lst[0] == "PING") {
-		if (lst.size() > 1)
-			RawSendNet(QString("PONG%1%2").arg(delimeter).arg(lst[1]));
-		else
-			RawSendNet(QString("PONG"));
-		return;
-	}
+    if (lst[0] == "PING") {
+        if (lst.size() > 1)
+            RawSendNet(QString("PONG%1%2").arg(delimeter).arg(lst[1]));
+        else
+            RawSendNet(QString("PONG"));
+        return;
+    }
 
-	if (lst[0] == "ROOMS") {
-		QStringList tmp = lst;
-		tmp.removeFirst();
-		emit roomsList(tmp);
-		return;
-	}
+    if (lst[0] == "ROOMS") {
+        QStringList tmp = lst;
+        tmp.removeFirst();
+        emit roomsList(tmp);
+        return;
+    }
 
-	if (lst[0] == "SERVER_MESSAGE") {
-		if(lst.size() < 2)
-		{
-			qWarning("Net: Empty SERVERMESSAGE message");
-			return;
-		}
-		emit serverMessage(lst[1]);
-		return;
-	}
+    if (lst[0] == "SERVER_MESSAGE") {
+        if(lst.size() < 2)
+        {
+            qWarning("Net: Empty SERVERMESSAGE message");
+            return;
+        }
+        emit serverMessage(lst[1]);
+        return;
+    }
 
-	if (lst[0] == "CHAT") {
-		if(lst.size() < 3)
-		{
-			qWarning("Net: Empty CHAT message");
-			return;
-		}
-		if (netClientState == 2)
-			emit chatStringLobby(HWProto::formatChatMsg(lst[1], lst[2]));
-		else
-			emit chatStringFromNet(HWProto::formatChatMsg(lst[1], lst[2]));
-		return;
-	}
+    if (lst[0] == "CHAT") {
+        if(lst.size() < 3)
+        {
+            qWarning("Net: Empty CHAT message");
+            return;
+        }
+        if (netClientState == 2)
+            emit chatStringLobby(HWProto::formatChatMsg(lst[1], lst[2]));
+        else
+            emit chatStringFromNet(HWProto::formatChatMsg(lst[1], lst[2]));
+        return;
+    }
 
-	if (lst[0] == "INFO") {
-		if(lst.size() < 5)
-		{
-			qWarning("Net: Malformed INFO message");
-			return;
-		}
-		QStringList tmp = lst;
-		tmp.removeFirst();
-		if (netClientState == 2)
-			emit chatStringLobby(tmp.join("\n").prepend('\x01'));
-		else
-			emit chatStringFromNet(tmp.join("\n").prepend('\x01'));
-		return;
-	}
+    if (lst[0] == "INFO") {
+        if(lst.size() < 5)
+        {
+            qWarning("Net: Malformed INFO message");
+            return;
+        }
+        QStringList tmp = lst;
+        tmp.removeFirst();
+        if (netClientState == 2)
+            emit chatStringLobby(tmp.join("\n").prepend('\x01'));
+        else
+            emit chatStringFromNet(tmp.join("\n").prepend('\x01'));
+        return;
+    }
 
-	if (lst[0] == "READY") {
-		if(lst.size() < 2)
-		{
-			qWarning("Net: Malformed READY message");
-			return;
-		}
-		for(int i = 1; i < lst.size(); ++i)
-		{
-			if (lst[i] == mynick)
-				emit setMyReadyStatus(true);
-			emit setReadyStatus(lst[i], true);
-		}
-		return;
-	}
+    if (lst[0] == "READY") {
+        if(lst.size() < 2)
+        {
+            qWarning("Net: Malformed READY message");
+            return;
+        }
+        for(int i = 1; i < lst.size(); ++i)
+        {
+            if (lst[i] == mynick)
+                emit setMyReadyStatus(true);
+            emit setReadyStatus(lst[i], true);
+        }
+        return;
+    }
 
-	if (lst[0] == "NOT_READY") {
-		if(lst.size() < 2)
-		{
-			qWarning("Net: Malformed NOT_READY message");
-			return;
-		}
-		for(int i = 1; i < lst.size(); ++i)
-		{
-			if (lst[i] == mynick)
-				emit setMyReadyStatus(false);
-			emit setReadyStatus(lst[i], false);
-		}
-		return;
-	}
+    if (lst[0] == "NOT_READY") {
+        if(lst.size() < 2)
+        {
+            qWarning("Net: Malformed NOT_READY message");
+            return;
+        }
+        for(int i = 1; i < lst.size(); ++i)
+        {
+            if (lst[i] == mynick)
+                emit setMyReadyStatus(false);
+            emit setReadyStatus(lst[i], false);
+        }
+        return;
+    }
 
-	if (lst[0] == "ADD_TEAM") {
-		if(lst.size() != 24)
-		{
-			qWarning("Net: Bad ADDTEAM message");
-			return;
-		}
-		QStringList tmp = lst;
-		tmp.removeFirst();
-		emit AddNetTeam(tmp);
-		return;
-	}
+    if (lst[0] == "ADD_TEAM") {
+        if(lst.size() != 24)
+        {
+            qWarning("Net: Bad ADDTEAM message");
+            return;
+        }
+        QStringList tmp = lst;
+        tmp.removeFirst();
+        emit AddNetTeam(tmp);
+        return;
+    }
 
-	if (lst[0] == "REMOVE_TEAM") {
-		if(lst.size() != 2)
-		{
-			qWarning("Net: Bad REMOVETEAM message");
-			return;
-		}
-		m_pTeamSelWidget->removeNetTeam(HWTeam(lst[1]));
-		return;
-	}
+    if (lst[0] == "REMOVE_TEAM") {
+        if(lst.size() != 2)
+        {
+            qWarning("Net: Bad REMOVETEAM message");
+            return;
+        }
+        m_pTeamSelWidget->removeNetTeam(HWTeam(lst[1]));
+        return;
+    }
 
-	if(lst[0] == "ROOMABANDONED") {
-		netClientState = 2;
-		emit showMessage(HWNewNet::tr("Room destroyed"));
-		emit LeftRoom();
-		return;
-	}
+    if(lst[0] == "ROOMABANDONED") {
+        netClientState = 2;
+        emit showMessage(HWNewNet::tr("Room destroyed"));
+        emit LeftRoom();
+        return;
+    }
 
-	if(lst[0] == "KICKED") {
-		netClientState = 2;
-		emit showMessage(HWNewNet::tr("You got kicked"));
-		emit LeftRoom();
-		return;
-	}
+    if(lst[0] == "KICKED") {
+        netClientState = 2;
+        emit showMessage(HWNewNet::tr("You got kicked"));
+        emit LeftRoom();
+        return;
+    }
 
-	if(lst[0] == "JOINED") {
-		if(lst.size() < 2)
-		{
-			qWarning("Net: Bad JOINED message");
-			return;
-		}
+    if(lst[0] == "JOINED") {
+        if(lst.size() < 2)
+        {
+            qWarning("Net: Bad JOINED message");
+            return;
+        }
 
-		for(int i = 1; i < lst.size(); ++i)
-		{
-			if (lst[i] == mynick)
-			{
-				netClientState = 3;
-				emit EnteredGame();
-				emit roomMaster(isChief);
-				if (isChief)
-					emit configAsked();
-			}
-			emit nickAdded(lst[i], isChief && (lst[i] != mynick));
+        for(int i = 1; i < lst.size(); ++i)
+        {
+            if (lst[i] == mynick)
+            {
+                netClientState = 3;
+                emit EnteredGame();
+                emit roomMaster(isChief);
+                if (isChief)
+                    emit configAsked();
+            }
+            emit nickAdded(lst[i], isChief && (lst[i] != mynick));
             emit chatStringFromNet(tr("%1 *** %2 has joined the room").arg('\x03').arg(lst[i]));
-		}
-		return;
-	}
+        }
+        return;
+    }
 
-	if(lst[0] == "LOBBY:JOINED") {
-		if(lst.size() < 2)
-		{
-			qWarning("Net: Bad JOINED message");
-			return;
-		}
+    if(lst[0] == "LOBBY:JOINED") {
+        if(lst.size() < 2)
+        {
+            qWarning("Net: Bad JOINED message");
+            return;
+        }
 
-		for(int i = 1; i < lst.size(); ++i)
-		{
-			if (lst[i] == mynick)
-			{
-				netClientState = 2;
-				RawSendNet(QString("LIST"));
-				emit Connected();
-			}
+        for(int i = 1; i < lst.size(); ++i)
+        {
+            if (lst[i] == mynick)
+            {
+                netClientState = 2;
+                RawSendNet(QString("LIST"));
+                emit Connected();
+            }
 
-			emit nickAddedLobby(lst[i], false);
-			emit chatStringLobby(tr("%1 *** %2 has joined").arg('\x03').arg(lst[i]));
-		}
-		return;
-	}
+            emit nickAddedLobby(lst[i], false);
+            emit chatStringLobby(tr("%1 *** %2 has joined").arg('\x03').arg(lst[i]));
+        }
+        return;
+    }
 
-	if(lst[0] == "LEFT") {
-		if(lst.size() < 2)
-		{
-			qWarning("Net: Bad LEFT message");
-			return;
-		}
-		emit nickRemoved(lst[1]);
-		if (lst.size() < 3)
-			emit chatStringFromNet(tr("%1 *** %2 has left").arg('\x03').arg(lst[1]));
-		else
-			emit chatStringFromNet(tr("%1 *** %2 has left (%3)").arg('\x03').arg(lst[1], lst[2]));
-		return;
-	}
+    if(lst[0] == "LEFT") {
+        if(lst.size() < 2)
+        {
+            qWarning("Net: Bad LEFT message");
+            return;
+        }
+        emit nickRemoved(lst[1]);
+        if (lst.size() < 3)
+            emit chatStringFromNet(tr("%1 *** %2 has left").arg('\x03').arg(lst[1]));
+        else
+            emit chatStringFromNet(tr("%1 *** %2 has left (%3)").arg('\x03').arg(lst[1], lst[2]));
+        return;
+    }
 
-	if(lst[0] == "ROOM") {
-		if(lst.size() < 2)
-		{
-			qWarning("Net: Bad ROOM message");
-			return;
-		}
-		RawSendNet(QString("LIST"));
-		return;
-	}
+    if(lst[0] == "ROOM") {
+        if(lst.size() < 2)
+        {
+            qWarning("Net: Bad ROOM message");
+            return;
+        }
+        RawSendNet(QString("LIST"));
+        return;
+    }
 
-	if(lst[0] == "LOBBY:LEFT") {
-		if(lst.size() < 2)
-		{
-			qWarning("Net: Bad LOBBY:LEFT message");
-			return;
-		}
-		emit nickRemovedLobby(lst[1]);
-		if (lst.size() < 3)
-			emit chatStringLobby(tr("%1 *** %2 has left").arg('\x03').arg(lst[1]));
-		else
-			emit chatStringLobby(tr("%1 *** %2 has left (%3)").arg('\x03').arg(lst[1], lst[2]));
-		return;
-	}
+    if(lst[0] == "LOBBY:LEFT") {
+        if(lst.size() < 2)
+        {
+            qWarning("Net: Bad LOBBY:LEFT message");
+            return;
+        }
+        emit nickRemovedLobby(lst[1]);
+        if (lst.size() < 3)
+            emit chatStringLobby(tr("%1 *** %2 has left").arg('\x03').arg(lst[1]));
+        else
+            emit chatStringLobby(tr("%1 *** %2 has left (%3)").arg('\x03').arg(lst[1], lst[2]));
+        return;
+    }
 
-	if (lst[0] == "RUN_GAME") {
-		netClientState = 5;
-		emit AskForRunGame();
-		return;
-	}
+    if (lst[0] == "RUN_GAME") {
+        netClientState = 5;
+        emit AskForRunGame();
+        return;
+    }
 
-	if (lst[0] == "ASKPASSWORD") {
+    if (lst[0] == "ASKPASSWORD") {
         int passLength = config->value("net/passwordlength", 0).toInt();
         QString hash = config->value("net/passwordhash", "").toString();
-		QString password = QInputDialog::getText(0, tr("Password"), tr("Your nickname %1 is\nregistered on Hedgewars.org\nPlease provide your password\nor pick another nickname:").arg(mynick), QLineEdit::Password, passLength==0?NULL:QString(passLength,'\0'));
+        QString password = QInputDialog::getText(0, tr("Password"), tr("Your nickname %1 is\nregistered on Hedgewars.org\nPlease provide your password\nor pick another nickname:").arg(mynick), QLineEdit::Password, passLength==0?NULL:QString(passLength,'\0'));
 
         if (!passLength || password!=QString(passLength, '\0')) {
             hash = QCryptographicHash::hash(password.toLatin1(), QCryptographicHash::Md5).toHex();
@@ -463,255 +463,255 @@
             config->setValue("net/passwordlength", password.size());
         }
 
-		RawSendNet(QString("PASSWORD%1%2").arg(delimeter).arg(hash));
-		return;
-	}
+        RawSendNet(QString("PASSWORD%1%2").arg(delimeter).arg(hash));
+        return;
+    }
 
-	if (lst[0] == "TEAM_ACCEPTED") {
-		if (lst.size() != 2)
-		{
-			qWarning("Net: Bad TEAM_ACCEPTED message");
-			return;
-		}
-		m_pTeamSelWidget->changeTeamStatus(lst[1]);
-		return;
-	}
+    if (lst[0] == "TEAM_ACCEPTED") {
+        if (lst.size() != 2)
+        {
+            qWarning("Net: Bad TEAM_ACCEPTED message");
+            return;
+        }
+        m_pTeamSelWidget->changeTeamStatus(lst[1]);
+        return;
+    }
 
 
-	if (lst[0] == "CFG") {
-		if(lst.size() < 3)
-		{
-			qWarning("Net: Bad CFG message");
-			return;
-		}
-		QStringList tmp = lst;
-		tmp.removeFirst();
-		tmp.removeFirst();
-		if (lst[1] == "SCHEME")
-			emit netSchemeConfig(tmp);
-		else
-			emit paramChanged(lst[1], tmp);
-		return;
-	}
+    if (lst[0] == "CFG") {
+        if(lst.size() < 3)
+        {
+            qWarning("Net: Bad CFG message");
+            return;
+        }
+        QStringList tmp = lst;
+        tmp.removeFirst();
+        tmp.removeFirst();
+        if (lst[1] == "SCHEME")
+            emit netSchemeConfig(tmp);
+        else
+            emit paramChanged(lst[1], tmp);
+        return;
+    }
 
-	if (lst[0] == "HH_NUM") {
-		if (lst.size() != 3)
-		{
-			qWarning("Net: Bad TEAM_ACCEPTED message");
-			return;
-		}
-		HWTeam tmptm(lst[1]);
-		tmptm.numHedgehogs = lst[2].toUInt();
-		emit hhnumChanged(tmptm);
-		return;
-	}
+    if (lst[0] == "HH_NUM") {
+        if (lst.size() != 3)
+        {
+            qWarning("Net: Bad TEAM_ACCEPTED message");
+            return;
+        }
+        HWTeam tmptm(lst[1]);
+        tmptm.numHedgehogs = lst[2].toUInt();
+        emit hhnumChanged(tmptm);
+        return;
+    }
 
-	if (lst[0] == "TEAM_COLOR") {
-		if (lst.size() != 3)
-		{
-			qWarning("Net: Bad TEAM_COLOR message");
-			return;
-		}
-		HWTeam tmptm(lst[1]);
-		tmptm.teamColor = QColor(lst[2]);
-		emit teamColorChanged(tmptm);
-		return;
-	}
+    if (lst[0] == "TEAM_COLOR") {
+        if (lst.size() != 3)
+        {
+            qWarning("Net: Bad TEAM_COLOR message");
+            return;
+        }
+        HWTeam tmptm(lst[1]);
+        tmptm.teamColor = QColor(lst[2]);
+        emit teamColorChanged(tmptm);
+        return;
+    }
 
-	if (lst[0] == "EM") {
-		if(lst.size() < 2)
-		{
-			qWarning("Net: Bad EM message");
-			return;
-		}
-		for(int i = 1; i < lst.size(); ++i)
-		{
-			QByteArray em = QByteArray::fromBase64(lst[i].toAscii());
-			emit FromNet(em);
-		}
-		return;
-	}
+    if (lst[0] == "EM") {
+        if(lst.size() < 2)
+        {
+            qWarning("Net: Bad EM message");
+            return;
+        }
+        for(int i = 1; i < lst.size(); ++i)
+        {
+            QByteArray em = QByteArray::fromBase64(lst[i].toAscii());
+            emit FromNet(em);
+        }
+        return;
+    }
 
-	if (lst[0] == "BYE") {
-		if (lst.size() < 2)
-		{
-			qWarning("Net: Bad BYE message");
-			return;
-		}
-		emit showMessage(HWNewNet::tr("Quit reason: ") + lst[1]);
-		return;
-	}
+    if (lst[0] == "BYE") {
+        if (lst.size() < 2)
+        {
+            qWarning("Net: Bad BYE message");
+            return;
+        }
+        emit showMessage(HWNewNet::tr("Quit reason: ") + lst[1]);
+        return;
+    }
 
 
-	if (lst[0] == "ADMIN_ACCESS") {
-		emit adminAccess(true);
-		return;
-	}
+    if (lst[0] == "ADMIN_ACCESS") {
+        emit adminAccess(true);
+        return;
+    }
 
-	if (lst[0] == "ROOM_CONTROL_ACCESS") {
-		if (lst.size() < 2)
-		{
-			qWarning("Net: Bad BYE message");
-			return;
-		}
-		bool b = lst[1] != "0";
-		m_pGameCFGWidget->setEnabled(b);
-		m_pTeamSelWidget->setInteractivity(b);
-		isChief = b;
-		emit roomMaster(isChief);
+    if (lst[0] == "ROOM_CONTROL_ACCESS") {
+        if (lst.size() < 2)
+        {
+            qWarning("Net: Bad BYE message");
+            return;
+        }
+        bool b = lst[1] != "0";
+        m_pGameCFGWidget->setEnabled(b);
+        m_pTeamSelWidget->setInteractivity(b);
+        isChief = b;
+        emit roomMaster(isChief);
 
-		return;
-	}
+        return;
+    }
 
-	qWarning() << "Net: Unknown message:" << lst;
+    qWarning() << "Net: Unknown message:" << lst;
 }
 
 void HWNewNet::onHedgehogsNumChanged(const HWTeam& team)
 {
-	if (isChief)
-	RawSendNet(QString("HH_NUM%1%2%1%3")
-			.arg(delimeter)
-			.arg(team.TeamName)
-			.arg(team.numHedgehogs));
+    if (isChief)
+    RawSendNet(QString("HH_NUM%1%2%1%3")
+            .arg(delimeter)
+            .arg(team.TeamName)
+            .arg(team.numHedgehogs));
 }
 
 void HWNewNet::onTeamColorChanged(const HWTeam& team)
 {
-	if (isChief)
-	RawSendNet(QString("TEAM_COLOR%1%2%1%3")
-			.arg(delimeter)
-			.arg(team.TeamName)
-			.arg(team.teamColor.name()));
+    if (isChief)
+    RawSendNet(QString("TEAM_COLOR%1%2%1%3")
+            .arg(delimeter)
+            .arg(team.TeamName)
+            .arg(team.teamColor.name()));
 }
 
 void HWNewNet::onParamChanged(const QString & param, const QStringList & value)
 {
-	if (isChief)
-		RawSendNet(
-				QString("CFG%1%2%1%3")
-					.arg(delimeter)
-					.arg(param)
-					.arg(value.join(QString(delimeter)))
-				);
+    if (isChief)
+        RawSendNet(
+                QString("CFG%1%2%1%3")
+                    .arg(delimeter)
+                    .arg(param)
+                    .arg(value.join(QString(delimeter)))
+                );
 }
 
 void HWNewNet::chatLineToNet(const QString& str)
 {
-	if(str != "") {
-		RawSendNet(QString("CHAT") + delimeter + str);
-		emit(chatStringFromMe(HWProto::formatChatMsg(mynick, str)));
-	}
+    if(str != "") {
+        RawSendNet(QString("CHAT") + delimeter + str);
+        emit(chatStringFromMe(HWProto::formatChatMsg(mynick, str)));
+    }
 }
 
 void HWNewNet::chatLineToLobby(const QString& str)
 {
-	if(str != "") {
-		RawSendNet(QString("CHAT") + delimeter + str);
-		emit(chatStringFromMeLobby(HWProto::formatChatMsg(mynick, str)));
-	}
+    if(str != "") {
+        RawSendNet(QString("CHAT") + delimeter + str);
+        emit(chatStringFromMeLobby(HWProto::formatChatMsg(mynick, str)));
+    }
 }
 
 void HWNewNet::SendTeamMessage(const QString& str)
 {
-	RawSendNet(QString("TEAMCHAT") + delimeter + str);
+    RawSendNet(QString("TEAMCHAT") + delimeter + str);
 }
 
 void HWNewNet::askRoomsList()
 {
-	if(netClientState != 2)
-	{
-		qWarning("Illegal try to get rooms list!");
-		return;
-	}
-	RawSendNet(QString("LIST"));
+    if(netClientState != 2)
+    {
+        qWarning("Illegal try to get rooms list!");
+        return;
+    }
+    RawSendNet(QString("LIST"));
 }
 
 int HWNewNet::getClientState()
 {
-	return netClientState;
+    return netClientState;
 }
 
 QString HWNewNet::getNick()
 {
-	return mynick;
+    return mynick;
 }
 
 QString HWNewNet::getRoom()
 {
-	return myroom;
+    return myroom;
 }
 
 QString HWNewNet::getHost()
 {
-	return myhost;
+    return myhost;
 }
 
 bool HWNewNet::isRoomChief()
 {
-	return isChief;
+    return isChief;
 }
 
 void HWNewNet::gameFinished()
 {
-	if (netClientState == 5) netClientState = 3;
-	RawSendNet(QString("ROUNDFINISHED"));
+    if (netClientState == 5) netClientState = 3;
+    RawSendNet(QString("ROUNDFINISHED"));
 }
 
 void HWNewNet::banPlayer(const QString & nick)
 {
-	RawSendNet(QString("BAN%1%2").arg(delimeter).arg(nick));
+    RawSendNet(QString("BAN%1%2").arg(delimeter).arg(nick));
 }
 
 void HWNewNet::kickPlayer(const QString & nick)
 {
-	RawSendNet(QString("KICK%1%2").arg(delimeter).arg(nick));
+    RawSendNet(QString("KICK%1%2").arg(delimeter).arg(nick));
 }
 
 void HWNewNet::infoPlayer(const QString & nick)
 {
-	RawSendNet(QString("INFO%1%2").arg(delimeter).arg(nick));
+    RawSendNet(QString("INFO%1%2").arg(delimeter).arg(nick));
 }
 
 void HWNewNet::followPlayer(const QString & nick)
 {
-	if (!isInRoom()) {
-		RawSendNet(QString("FOLLOW%1%2").arg(delimeter).arg(nick));
-		isChief = false;
-	}
+    if (!isInRoom()) {
+        RawSendNet(QString("FOLLOW%1%2").arg(delimeter).arg(nick));
+        isChief = false;
+    }
 }
 
 void HWNewNet::startGame()
 {
-	RawSendNet(QString("START_GAME"));
+    RawSendNet(QString("START_GAME"));
 }
 
 void HWNewNet::toggleRestrictJoins()
 {
-	RawSendNet(QString("TOGGLE_RESTRICT_JOINS"));
+    RawSendNet(QString("TOGGLE_RESTRICT_JOINS"));
 }
 
 void HWNewNet::toggleRestrictTeamAdds()
 {
-	RawSendNet(QString("TOGGLE_RESTRICT_TEAMS"));
+    RawSendNet(QString("TOGGLE_RESTRICT_TEAMS"));
 }
 
 void HWNewNet::clearAccountsCache()
 {
-	RawSendNet(QString("CLEAR_ACCOUNTS_CACHE"));
+    RawSendNet(QString("CLEAR_ACCOUNTS_CACHE"));
 }
 
 void HWNewNet::partRoom()
 {
-	netClientState = 2;
-	RawSendNet(QString("PART"));
+    netClientState = 2;
+    RawSendNet(QString("PART"));
 }
 
 bool HWNewNet::isInRoom()
 {
-	return netClientState > 2;
+    return netClientState > 2;
 }
 
 void HWNewNet::newServerMessage(const QString & msg)
 {
-	RawSendNet(QString("SET_SERVER_MESSAGE%1%2").arg(delimeter).arg(msg));
+    RawSendNet(QString("SET_SERVER_MESSAGE%1%2").arg(delimeter).arg(msg));
 }
--- a/QTfrontend/pages.cpp	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/pages.cpp	Sat Mar 06 10:59:20 2010 +0000
@@ -66,313 +66,313 @@
   AbstractPage(parent)
 {
     if(frontendEffects) setAttribute(Qt::WA_NoSystemBackground, true);
-	QGridLayout * pageLayout = new QGridLayout(this);
-	//pageLayout->setColumnStretch(0, 1);
-	//pageLayout->setColumnStretch(1, 2);
-	//pageLayout->setColumnStretch(2, 1);
+    QGridLayout * pageLayout = new QGridLayout(this);
+    //pageLayout->setColumnStretch(0, 1);
+    //pageLayout->setColumnStretch(1, 2);
+    //pageLayout->setColumnStretch(2, 1);
 
-	//QPushButton* btnLogo = addButton(":/res/HedgewarsTitle.png", pageLayout, 0, 0, 1, 4, true);
-	//pageLayout->setAlignment(btnLogo, Qt::AlignHCenter);
-	pageLayout->setRowStretch(0, 1);
-	pageLayout->setRowStretch(1, 1);
-	pageLayout->setRowStretch(2, 0);
-	pageLayout->setRowStretch(3, 1);
-	pageLayout->setRowStretch(4, 1);
+    //QPushButton* btnLogo = addButton(":/res/HedgewarsTitle.png", pageLayout, 0, 0, 1, 4, true);
+    //pageLayout->setAlignment(btnLogo, Qt::AlignHCenter);
+    pageLayout->setRowStretch(0, 1);
+    pageLayout->setRowStretch(1, 1);
+    pageLayout->setRowStretch(2, 0);
+    pageLayout->setRowStretch(3, 1);
+    pageLayout->setRowStretch(4, 1);
 
-	BtnSinglePlayer = addButton(":/res/LocalPlay.png", pageLayout, 2, 0, 1, 2, true);
-	BtnSinglePlayer->setToolTip(tr("Local Game (Play a game on a single computer)"));
-	pageLayout->setAlignment(BtnSinglePlayer, Qt::AlignHCenter);
+    BtnSinglePlayer = addButton(":/res/LocalPlay.png", pageLayout, 2, 0, 1, 2, true);
+    BtnSinglePlayer->setToolTip(tr("Local Game (Play a game on a single computer)"));
+    pageLayout->setAlignment(BtnSinglePlayer, Qt::AlignHCenter);
 
-	BtnNet = addButton(":/res/NetworkPlay.png", pageLayout, 2, 2, 1, 2, true);
-	BtnNet->setToolTip(tr("Network Game (Play a game across a network)"));
-	pageLayout->setAlignment(BtnNet, Qt::AlignHCenter);
+    BtnNet = addButton(":/res/NetworkPlay.png", pageLayout, 2, 2, 1, 2, true);
+    BtnNet->setToolTip(tr("Network Game (Play a game across a network)"));
+    pageLayout->setAlignment(BtnNet, Qt::AlignHCenter);
 
-	BtnSetup = addButton(":/res/Settings.png", pageLayout, 4, 3, true);
+    BtnSetup = addButton(":/res/Settings.png", pageLayout, 4, 3, true);
 
-	//BtnInfo = addButton(":/res/About.png", pageLayout, 3, 1, 1, 2, true);
-	BtnInfo = addButton(":/res/HedgewarsTitle.png", pageLayout, 0, 0, 1, 4, true);
-	BtnInfo->setStyleSheet("border: transparent;background: transparent;");
-	pageLayout->setAlignment(BtnInfo, Qt::AlignHCenter);
-	//pageLayout->setAlignment(BtnInfo, Qt::AlignHCenter);
+    //BtnInfo = addButton(":/res/About.png", pageLayout, 3, 1, 1, 2, true);
+    BtnInfo = addButton(":/res/HedgewarsTitle.png", pageLayout, 0, 0, 1, 4, true);
+    BtnInfo->setStyleSheet("border: transparent;background: transparent;");
+    pageLayout->setAlignment(BtnInfo, Qt::AlignHCenter);
+    //pageLayout->setAlignment(BtnInfo, Qt::AlignHCenter);
 
-	BtnExit = addButton(":/res/Exit.png", pageLayout, 4, 0, 1, 1, true);
+    BtnExit = addButton(":/res/Exit.png", pageLayout, 4, 0, 1, 1, true);
 }
 
 PageEditTeam::PageEditTeam(QWidget* parent, SDLInteraction * sdli) :
   AbstractPage(parent)
 {
     mySdli = sdli;
-	QGridLayout * pageLayout = new QGridLayout(this);
-	QTabWidget * tbw = new QTabWidget(this);
-	QWidget * page1 = new QWidget(this);
-	QWidget * page2 = new QWidget(this);
-	tbw->addTab(page1, tr("General"));
-	tbw->addTab(page2, tr("Advanced"));
-	pageLayout->addWidget(tbw, 0, 0, 1, 3);
-	BtnTeamDiscard = addButton(":/res/Exit.png", pageLayout, 1, 0, true);
-	BtnTeamSave = addButton(":/res/Save.png", pageLayout, 1, 2, true);;
-	BtnTeamSave->setStyleSheet("QPushButton{margin: 12px 0px 12px 0px;}");
+    QGridLayout * pageLayout = new QGridLayout(this);
+    QTabWidget * tbw = new QTabWidget(this);
+    QWidget * page1 = new QWidget(this);
+    QWidget * page2 = new QWidget(this);
+    tbw->addTab(page1, tr("General"));
+    tbw->addTab(page2, tr("Advanced"));
+    pageLayout->addWidget(tbw, 0, 0, 1, 3);
+    BtnTeamDiscard = addButton(":/res/Exit.png", pageLayout, 1, 0, true);
+    BtnTeamSave = addButton(":/res/Save.png", pageLayout, 1, 2, true);;
+    BtnTeamSave->setStyleSheet("QPushButton{margin: 12px 0px 12px 0px;}");
 
-	QHBoxLayout * page1Layout = new QHBoxLayout(page1);
-	page1Layout->setAlignment(Qt::AlignTop);
-	QGridLayout * page2Layout = new QGridLayout(page2);
+    QHBoxLayout * page1Layout = new QHBoxLayout(page1);
+    page1Layout->setAlignment(Qt::AlignTop);
+    QGridLayout * page2Layout = new QGridLayout(page2);
 
 // ====== Page 1 ======
-	QVBoxLayout * vbox1 = new QVBoxLayout();
-	QVBoxLayout * vbox2 = new QVBoxLayout();
-	page1Layout->addLayout(vbox1);
-	page1Layout->addLayout(vbox2);
+    QVBoxLayout * vbox1 = new QVBoxLayout();
+    QVBoxLayout * vbox2 = new QVBoxLayout();
+    page1Layout->addLayout(vbox1);
+    page1Layout->addLayout(vbox2);
 
-	GBoxHedgehogs = new QGroupBox(this);
-	GBoxHedgehogs->setTitle(QGroupBox::tr("Team Members"));
-	GBoxHedgehogs->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
-	QGridLayout * GBHLayout = new QGridLayout(GBoxHedgehogs);
+    GBoxHedgehogs = new QGroupBox(this);
+    GBoxHedgehogs->setTitle(QGroupBox::tr("Team Members"));
+    GBoxHedgehogs->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
+    QGridLayout * GBHLayout = new QGridLayout(GBoxHedgehogs);
 
-	signalMapper = new QSignalMapper(this);
+    signalMapper = new QSignalMapper(this);
 
-	HatsModel * hatsModel = new HatsModel(GBoxHedgehogs);
-	for(int i = 0; i < 8; i++)
-	{
-		HHHats[i] = new QComboBox(GBoxHedgehogs);
-		HHHats[i]->setModel(hatsModel);
-		HHHats[i]->setIconSize(QSize(32, 37));
-		//HHHats[i]->setSizeAdjustPolicy(QComboBox::AdjustToContents);
-		//HHHats[i]->setModelColumn(1);
-		//HHHats[i]->setMinimumWidth(132);
-		GBHLayout->addWidget(HHHats[i], i, 0);
+    HatsModel * hatsModel = new HatsModel(GBoxHedgehogs);
+    for(int i = 0; i < 8; i++)
+    {
+        HHHats[i] = new QComboBox(GBoxHedgehogs);
+        HHHats[i]->setModel(hatsModel);
+        HHHats[i]->setIconSize(QSize(32, 37));
+        //HHHats[i]->setSizeAdjustPolicy(QComboBox::AdjustToContents);
+        //HHHats[i]->setModelColumn(1);
+        //HHHats[i]->setMinimumWidth(132);
+        GBHLayout->addWidget(HHHats[i], i, 0);
 
-		HHNameEdit[i] = new QLineEdit(GBoxHedgehogs);
-		HHNameEdit[i]->setMaxLength(64);
-		HHNameEdit[i]->setMinimumWidth(120);
-		GBHLayout->addWidget(HHNameEdit[i], i, 1);
+        HHNameEdit[i] = new QLineEdit(GBoxHedgehogs);
+        HHNameEdit[i]->setMaxLength(64);
+        HHNameEdit[i]->setMinimumWidth(120);
+        GBHLayout->addWidget(HHNameEdit[i], i, 1);
 
-		randButton[i] = addButton(":/res/dice.png", GBHLayout, i, 3, true);
+        randButton[i] = addButton(":/res/dice.png", GBHLayout, i, 3, true);
 
-		connect(randButton[i], SIGNAL(clicked()), signalMapper, SLOT(map()));
-         	signalMapper->setMapping(randButton[i], i);
+        connect(randButton[i], SIGNAL(clicked()), signalMapper, SLOT(map()));
+            signalMapper->setMapping(randButton[i], i);
 
-	}
+    }
 
-	randTeamButton = addButton(QPushButton::tr("Random Team"), GBHLayout, 9, false);
+    randTeamButton = addButton(QPushButton::tr("Random Team"), GBHLayout, 9, false);
 
-	vbox1->addWidget(GBoxHedgehogs);
+    vbox1->addWidget(GBoxHedgehogs);
 
 
-	GBoxTeam = new QGroupBox(this);
-	GBoxTeam->setTitle(QGroupBox::tr("Team Settings"));
-	GBoxTeam->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
-	QGridLayout * GBTLayout = new QGridLayout(GBoxTeam);
-	QLabel * tmpLabel = new QLabel(GBoxTeam);
-	tmpLabel->setText(QLabel::tr("Name"));
-	GBTLayout->addWidget(tmpLabel, 0, 0);
-	tmpLabel = new QLabel(GBoxTeam);
-	tmpLabel->setText(QLabel::tr("Type"));
-	GBTLayout->addWidget(tmpLabel, 1, 0);
-	tmpLabel = new QLabel(GBoxTeam);
-	tmpLabel->setText(QLabel::tr("Grave"));
-	GBTLayout->addWidget(tmpLabel, 2, 0);
-	tmpLabel = new QLabel(GBoxTeam);
-	tmpLabel->setText(QLabel::tr("Flag"));
-	GBTLayout->addWidget(tmpLabel, 3, 0);
-	tmpLabel = new QLabel(GBoxTeam);
-	tmpLabel->setText(QLabel::tr("Voice"));
-	GBTLayout->addWidget(tmpLabel, 4, 0);
+    GBoxTeam = new QGroupBox(this);
+    GBoxTeam->setTitle(QGroupBox::tr("Team Settings"));
+    GBoxTeam->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
+    QGridLayout * GBTLayout = new QGridLayout(GBoxTeam);
+    QLabel * tmpLabel = new QLabel(GBoxTeam);
+    tmpLabel->setText(QLabel::tr("Name"));
+    GBTLayout->addWidget(tmpLabel, 0, 0);
+    tmpLabel = new QLabel(GBoxTeam);
+    tmpLabel->setText(QLabel::tr("Type"));
+    GBTLayout->addWidget(tmpLabel, 1, 0);
+    tmpLabel = new QLabel(GBoxTeam);
+    tmpLabel->setText(QLabel::tr("Grave"));
+    GBTLayout->addWidget(tmpLabel, 2, 0);
+    tmpLabel = new QLabel(GBoxTeam);
+    tmpLabel->setText(QLabel::tr("Flag"));
+    GBTLayout->addWidget(tmpLabel, 3, 0);
+    tmpLabel = new QLabel(GBoxTeam);
+    tmpLabel->setText(QLabel::tr("Voice"));
+    GBTLayout->addWidget(tmpLabel, 4, 0);
 
 
-	TeamNameEdit = new QLineEdit(GBoxTeam);
-	TeamNameEdit->setMaxLength(64);
-	GBTLayout->addWidget(TeamNameEdit, 0, 1);
-	vbox2->addWidget(GBoxTeam);
+    TeamNameEdit = new QLineEdit(GBoxTeam);
+    TeamNameEdit->setMaxLength(64);
+    GBTLayout->addWidget(TeamNameEdit, 0, 1);
+    vbox2->addWidget(GBoxTeam);
 
-	CBTeamLvl = new QComboBox(GBoxTeam);
-	CBTeamLvl->setIconSize(QSize(48, 48));
-	CBTeamLvl->addItem(QIcon(":/res/botlevels/0.png"), QComboBox::tr("Human"));
-	for(int i = 5; i > 0; i--)
-		CBTeamLvl->addItem(
-				QIcon(QString(":/res/botlevels/%1.png").arg(6 - i)),
-				QString("%1 %2").arg(QComboBox::tr("Level")).arg(i)
-				);
-	GBTLayout->addWidget(CBTeamLvl, 1, 1);
+    CBTeamLvl = new QComboBox(GBoxTeam);
+    CBTeamLvl->setIconSize(QSize(48, 48));
+    CBTeamLvl->addItem(QIcon(":/res/botlevels/0.png"), QComboBox::tr("Human"));
+    for(int i = 5; i > 0; i--)
+        CBTeamLvl->addItem(
+                QIcon(QString(":/res/botlevels/%1.png").arg(6 - i)),
+                QString("%1 %2").arg(QComboBox::tr("Level")).arg(i)
+                );
+    GBTLayout->addWidget(CBTeamLvl, 1, 1);
 
-	CBGrave = new QComboBox(GBoxTeam);
-	CBGrave->setMaxCount(65535);
-	CBGrave->setIconSize(QSize(32, 32));
-	GBTLayout->addWidget(CBGrave, 2, 1);
+    CBGrave = new QComboBox(GBoxTeam);
+    CBGrave->setMaxCount(65535);
+    CBGrave->setIconSize(QSize(32, 32));
+    GBTLayout->addWidget(CBGrave, 2, 1);
 
-	CBFlag = new QComboBox(GBoxTeam);
-	CBFlag->setMaxCount(65535);
-	CBFlag->setIconSize(QSize(22, 15));
-	GBTLayout->addWidget(CBFlag, 3, 1);
+    CBFlag = new QComboBox(GBoxTeam);
+    CBFlag->setMaxCount(65535);
+    CBFlag->setIconSize(QSize(22, 15));
+    GBTLayout->addWidget(CBFlag, 3, 1);
 
-	{
-		QHBoxLayout * hbox = new QHBoxLayout();
-		CBVoicepack = new QComboBox(GBoxTeam);
-		{
-			QDir tmpdir;
-			tmpdir.cd(datadir->absolutePath());
-			tmpdir.cd("Sounds/voices");
-			QStringList list = tmpdir.entryList(QDir::AllDirs | QDir::NoDotAndDotDot, QDir::Name);
-			CBVoicepack->addItems(list);
-		}
-		hbox->addWidget(CBVoicepack, 100);
-		BtnTestSound = addButton(":/res/PlaySound.png", hbox, 1, true);
-		hbox->setStretchFactor(BtnTestSound, 1);
-		connect(BtnTestSound, SIGNAL(clicked()), this, SLOT(testSound()));
-		GBTLayout->addLayout(hbox, 4, 1);
-	}
+    {
+        QHBoxLayout * hbox = new QHBoxLayout();
+        CBVoicepack = new QComboBox(GBoxTeam);
+        {
+            QDir tmpdir;
+            tmpdir.cd(datadir->absolutePath());
+            tmpdir.cd("Sounds/voices");
+            QStringList list = tmpdir.entryList(QDir::AllDirs | QDir::NoDotAndDotDot, QDir::Name);
+            CBVoicepack->addItems(list);
+        }
+        hbox->addWidget(CBVoicepack, 100);
+        BtnTestSound = addButton(":/res/PlaySound.png", hbox, 1, true);
+        hbox->setStretchFactor(BtnTestSound, 1);
+        connect(BtnTestSound, SIGNAL(clicked()), this, SLOT(testSound()));
+        GBTLayout->addLayout(hbox, 4, 1);
+    }
 
-	GBoxFort = new QGroupBox(this);
-	GBoxFort->setTitle(QGroupBox::tr("Fort"));
-	QGridLayout * GBFLayout = new QGridLayout(GBoxFort);
-	CBFort = new QComboBox(GBoxFort);
-	CBFort->setMaxCount(65535);
-	GBFLayout->addWidget(CBFort, 0, 0);
-	FortPreview = new SquareLabel(GBoxFort);
-	FortPreview->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
-	FortPreview->setMinimumSize(128, 128);
-	FortPreview->setPixmap(QPixmap());
+    GBoxFort = new QGroupBox(this);
+    GBoxFort->setTitle(QGroupBox::tr("Fort"));
+    QGridLayout * GBFLayout = new QGridLayout(GBoxFort);
+    CBFort = new QComboBox(GBoxFort);
+    CBFort->setMaxCount(65535);
+    GBFLayout->addWidget(CBFort, 0, 0);
+    FortPreview = new SquareLabel(GBoxFort);
+    FortPreview->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
+    FortPreview->setMinimumSize(128, 128);
+    FortPreview->setPixmap(QPixmap());
     // perhaps due to handling its own paintevents, SquareLabel doesn't play nice with the stars
     //FortPreview->setAttribute(Qt::WA_PaintOnScreen, true);
-	GBFLayout->addWidget(FortPreview, 1, 0);
-	vbox2->addWidget(GBoxFort);
+    GBFLayout->addWidget(FortPreview, 1, 0);
+    vbox2->addWidget(GBoxFort);
 
-	QDir tmpdir;
-	tmpdir.cd(datadir->absolutePath());
-	tmpdir.cd("Forts");
-	tmpdir.setFilter(QDir::Files);
+    QDir tmpdir;
+    tmpdir.cd(datadir->absolutePath());
+    tmpdir.cd("Forts");
+    tmpdir.setFilter(QDir::Files);
 
-	connect(CBFort, SIGNAL(currentIndexChanged(const QString &)), this, SLOT(CBFort_activated(const QString &)));
-	CBFort->addItems(tmpdir.entryList(QStringList("*L.png")).replaceInStrings(QRegExp("^(.*)L\\.png"), "\\1"));
+    connect(CBFort, SIGNAL(currentIndexChanged(const QString &)), this, SLOT(CBFort_activated(const QString &)));
+    CBFort->addItems(tmpdir.entryList(QStringList("*L.png")).replaceInStrings(QRegExp("^(.*)L\\.png"), "\\1"));
 
-	tmpdir.cd("../Graphics/Graves");
-	QStringList list = tmpdir.entryList(QStringList("*.png"));
-	for (QStringList::Iterator it = list.begin(); it != list.end(); ++it )
-	{
-		QPixmap pix(datadir->absolutePath() + "/Graphics/Graves/" + *it);
-		QIcon icon(pix.copy(0, 0, 32, 32));
-		CBGrave->addItem(icon, (*it).replace(QRegExp("^(.*)\\.png"), "\\1"));
-	}
+    tmpdir.cd("../Graphics/Graves");
+    QStringList list = tmpdir.entryList(QStringList("*.png"));
+    for (QStringList::Iterator it = list.begin(); it != list.end(); ++it )
+    {
+        QPixmap pix(datadir->absolutePath() + "/Graphics/Graves/" + *it);
+        QIcon icon(pix.copy(0, 0, 32, 32));
+        CBGrave->addItem(icon, (*it).replace(QRegExp("^(.*)\\.png"), "\\1"));
+    }
 
-	tmpdir.cd(datadir->absolutePath());
-	tmpdir.cd("Graphics/Flags");
-	list = tmpdir.entryList(QStringList("*.png"));
-	for (QStringList::Iterator it = list.begin(); it != list.end(); ++it )
-	{
-		QPixmap pix(datadir->absolutePath() + "/Graphics/Flags/" + *it);
-		QIcon icon(pix.copy(0, 0, 22, 15));
-		if(it->compare("cpu.png")) // skip cpu flag
-			CBFlag->addItem(icon, (*it).replace(QRegExp("^(.*)\\.png"), "\\1"));
-	}
+    tmpdir.cd(datadir->absolutePath());
+    tmpdir.cd("Graphics/Flags");
+    list = tmpdir.entryList(QStringList("*.png"));
+    for (QStringList::Iterator it = list.begin(); it != list.end(); ++it )
+    {
+        QPixmap pix(datadir->absolutePath() + "/Graphics/Flags/" + *it);
+        QIcon icon(pix.copy(0, 0, 22, 15));
+        if(it->compare("cpu.png")) // skip cpu flag
+            CBFlag->addItem(icon, (*it).replace(QRegExp("^(.*)\\.png"), "\\1"));
+    }
 
-	vbox1->addStretch();
-	vbox2->addStretch();
+    vbox1->addStretch();
+    vbox2->addStretch();
 
 // ====== Page 2 ======
-	GBoxBinds = new QGroupBox(this);
-	GBoxBinds->setTitle(QGroupBox::tr("Key binds"));
-	QGridLayout * GBBLayout = new QGridLayout(GBoxBinds);
-	BindsBox = new QToolBox(GBoxBinds);
-	BindsBox->setLineWidth(0);
-	GBBLayout->addWidget(BindsBox);
-	page2Layout->addWidget(GBoxBinds, 0, 0);
+    GBoxBinds = new QGroupBox(this);
+    GBoxBinds->setTitle(QGroupBox::tr("Key binds"));
+    QGridLayout * GBBLayout = new QGridLayout(GBoxBinds);
+    BindsBox = new QToolBox(GBoxBinds);
+    BindsBox->setLineWidth(0);
+    GBBLayout->addWidget(BindsBox);
+    page2Layout->addWidget(GBoxBinds, 0, 0);
 
-	quint16 i = 0;
-	quint16 num = 0;
-	QWidget * curW = NULL;
-	QGridLayout * pagelayout = NULL;
-	QLabel* l = NULL;
-	while (i < BINDS_NUMBER) {
-		if(cbinds[i].category != NULL)
-		{
-			if(curW != NULL)
-			{
-				l = new QLabel(curW);
-				l->setText("");
-				pagelayout->addWidget(l, num++, 0, 1, 2);
-			}
-			curW = new QWidget(this);
-			BindsBox->addItem(curW, QApplication::translate("binds (categories)", cbinds[i].category));
-			pagelayout = new QGridLayout(curW);
-			num = 0;
-		}
-		if(cbinds[i].description != NULL)
-		{
-			l = new QLabel(curW);
-			l->setText((num > 0 ? QString("\n") : QString("")) + QApplication::translate("binds (descriptions)", cbinds[i].description));
-			pagelayout->addWidget(l, num++, 0, 1, 2);
-		}
+    quint16 i = 0;
+    quint16 num = 0;
+    QWidget * curW = NULL;
+    QGridLayout * pagelayout = NULL;
+    QLabel* l = NULL;
+    while (i < BINDS_NUMBER) {
+        if(cbinds[i].category != NULL)
+        {
+            if(curW != NULL)
+            {
+                l = new QLabel(curW);
+                l->setText("");
+                pagelayout->addWidget(l, num++, 0, 1, 2);
+            }
+            curW = new QWidget(this);
+            BindsBox->addItem(curW, QApplication::translate("binds (categories)", cbinds[i].category));
+            pagelayout = new QGridLayout(curW);
+            num = 0;
+        }
+        if(cbinds[i].description != NULL)
+        {
+            l = new QLabel(curW);
+            l->setText((num > 0 ? QString("\n") : QString("")) + QApplication::translate("binds (descriptions)", cbinds[i].description));
+            pagelayout->addWidget(l, num++, 0, 1, 2);
+        }
 
-		l = new QLabel(curW);
-		l->setText(QApplication::translate("binds", cbinds[i].name));
-		l->setAlignment(Qt::AlignRight);
-		pagelayout->addWidget(l, num, 0);
-		CBBind[i] = new QComboBox(curW);
-		for(int j = 0; sdlkeys[j][1][0] != '\0'; j++)
-			CBBind[i]->addItem(QApplication::translate("binds (keys)", sdlkeys[j][1]).contains(": ") ? QApplication::translate("binds (keys)", sdlkeys[j][1]) : QApplication::translate("binds (keys)", "Keyboard") + QString(": ") + QApplication::translate("binds (keys)", sdlkeys[j][1]), sdlkeys[j][0]);
-		pagelayout->addWidget(CBBind[i++], num++, 1);
-	}
+        l = new QLabel(curW);
+        l->setText(QApplication::translate("binds", cbinds[i].name));
+        l->setAlignment(Qt::AlignRight);
+        pagelayout->addWidget(l, num, 0);
+        CBBind[i] = new QComboBox(curW);
+        for(int j = 0; sdlkeys[j][1][0] != '\0'; j++)
+            CBBind[i]->addItem(QApplication::translate("binds (keys)", sdlkeys[j][1]).contains(": ") ? QApplication::translate("binds (keys)", sdlkeys[j][1]) : QApplication::translate("binds (keys)", "Keyboard") + QString(": ") + QApplication::translate("binds (keys)", sdlkeys[j][1]), sdlkeys[j][0]);
+        pagelayout->addWidget(CBBind[i++], num++, 1);
+    }
 }
 
 void PageEditTeam::CBFort_activated(const QString & fortname)
 {
-	QPixmap pix(datadir->absolutePath() + "/Forts/" + fortname + "L.png");
-	FortPreview->setPixmap(pix);
+    QPixmap pix(datadir->absolutePath() + "/Forts/" + fortname + "L.png");
+    FortPreview->setPixmap(pix);
 }
 
 void PageEditTeam::testSound()
 {
-	Mix_Chunk *sound;
-	QDir tmpdir;
-	mySdli->SDLMusicInit();
-	
-	tmpdir.cd(datadir->absolutePath());
-	tmpdir.cd("Sounds/voices");
-	tmpdir.cd(CBVoicepack->currentText());
-	QStringList list = tmpdir.entryList(QStringList() << "Illgetyou.ogg" << "Incoming.ogg" << "Stupid.ogg" << "Coward.ogg" << "Firstblood.ogg", QDir::Files);
-	if (list.size()) {
-		sound = Mix_LoadWAV(QString(tmpdir.absolutePath() + "/" + list[rand() % list.size()]).toLocal8Bit().constData());
-		Mix_PlayChannel(-1, sound, 0);
-	}
+    Mix_Chunk *sound;
+    QDir tmpdir;
+    mySdli->SDLMusicInit();
+    
+    tmpdir.cd(datadir->absolutePath());
+    tmpdir.cd("Sounds/voices");
+    tmpdir.cd(CBVoicepack->currentText());
+    QStringList list = tmpdir.entryList(QStringList() << "Illgetyou.ogg" << "Incoming.ogg" << "Stupid.ogg" << "Coward.ogg" << "Firstblood.ogg", QDir::Files);
+    if (list.size()) {
+        sound = Mix_LoadWAV(QString(tmpdir.absolutePath() + "/" + list[rand() % list.size()]).toLocal8Bit().constData());
+        Mix_PlayChannel(-1, sound, 0);
+    }
 }
 
 PageMultiplayer::PageMultiplayer(QWidget* parent) :
   AbstractPage(parent)
 {
-	QGridLayout * pageLayout = new QGridLayout(this);
+    QGridLayout * pageLayout = new QGridLayout(this);
 
-	BtnBack = addButton(":/res/Exit.png", pageLayout, 2, 0, true);
+    BtnBack = addButton(":/res/Exit.png", pageLayout, 2, 0, true);
 
-	gameCFG = new GameCFGWidget(this);
-	pageLayout->addWidget(gameCFG, 0, 0, 1, 2);
+    gameCFG = new GameCFGWidget(this);
+    pageLayout->addWidget(gameCFG, 0, 0, 1, 2);
 
-	pageLayout->setRowStretch(1, 1);
+    pageLayout->setRowStretch(1, 1);
 
-	teamsSelect = new TeamSelWidget(this);
-	pageLayout->addWidget(teamsSelect, 0, 2, 2, 2);
+    teamsSelect = new TeamSelWidget(this);
+    pageLayout->addWidget(teamsSelect, 0, 2, 2, 2);
 
-	BtnStartMPGame = addButton(tr("Start"), pageLayout, 2, 3);
+    BtnStartMPGame = addButton(tr("Start"), pageLayout, 2, 3);
 }
 
 PageOptions::PageOptions(QWidget* parent) :
   AbstractPage(parent)
 {
-	QGridLayout * pageLayout = new QGridLayout(this);
-	pageLayout->setColumnStretch(0, 100);
-	pageLayout->setColumnStretch(1, 100);
-	pageLayout->setColumnStretch(2, 100);
-	pageLayout->setRowStretch(0, 0);
-	pageLayout->setRowStretch(1, 100);
-	pageLayout->setRowStretch(2, 0);
-	pageLayout->setContentsMargins(7, 7, 7, 0);
-	pageLayout->setSpacing(0);
+    QGridLayout * pageLayout = new QGridLayout(this);
+    pageLayout->setColumnStretch(0, 100);
+    pageLayout->setColumnStretch(1, 100);
+    pageLayout->setColumnStretch(2, 100);
+    pageLayout->setRowStretch(0, 0);
+    pageLayout->setRowStretch(1, 100);
+    pageLayout->setRowStretch(2, 0);
+    pageLayout->setContentsMargins(7, 7, 7, 0);
+    pageLayout->setSpacing(0);
 
 
-	QGroupBox * gbTwoBoxes = new QGroupBox(this);
-	pageLayout->addWidget(gbTwoBoxes, 0, 0, 1, 3);
-	QGridLayout * gbTBLayout = new QGridLayout(gbTwoBoxes);
-	gbTBLayout->setMargin(0);
-	gbTBLayout->setSpacing(0);
-	gbTBLayout->setAlignment(Qt::AlignTop | Qt::AlignLeft);
+    QGroupBox * gbTwoBoxes = new QGroupBox(this);
+    pageLayout->addWidget(gbTwoBoxes, 0, 0, 1, 3);
+    QGridLayout * gbTBLayout = new QGridLayout(gbTwoBoxes);
+    gbTBLayout->setMargin(0);
+    gbTBLayout->setSpacing(0);
+    gbTBLayout->setAlignment(Qt::AlignTop | Qt::AlignLeft);
         {
             teamsBox = new IconedGroupBox(this);
             //teamsBox->setContentTopPadding(0);
@@ -445,7 +445,7 @@
             tmpdir.cd("Locale");
             tmpdir.setFilter(QDir::Files);
             QStringList locs = tmpdir.entryList(QStringList("hedgewars_*.qm"));
-			CBLanguage->addItem(QComboBox::tr("(System default)"), QString(""));
+            CBLanguage->addItem(QComboBox::tr("(System default)"), QString(""));
             for(int i = 0; i < locs.count(); i++)
             {
                 QLocale loc(locs[i].replace(QRegExp("hedgewars_(.*)\\.qm"), "\\1"));
@@ -567,458 +567,458 @@
             hr->setFixedHeight(12);
             GBAlayout->addWidget(hr);
 
-	            QLabel *restartNote = new QLabel(this);
+                QLabel *restartNote = new QLabel(this);
             restartNote->setText(QString("* ") + QLabel::tr("Restart game to apply"));
             GBAlayout->addWidget(restartNote);
 
             gbTBLayout->addWidget(AGGroupBox, 0, 1, 3, 1);
         }
 
-	BtnSaveOptions = addButton(":/res/Save.png", pageLayout, 2, 2, true);
-	BtnSaveOptions->setStyleSheet("QPushButton{margin: 12px 0px 12px 0px;}");
+    BtnSaveOptions = addButton(":/res/Save.png", pageLayout, 2, 2, true);
+    BtnSaveOptions->setStyleSheet("QPushButton{margin: 12px 0px 12px 0px;}");
 
-	BtnBack = addButton(":/res/Exit.png", pageLayout, 2, 0, true);
+    BtnBack = addButton(":/res/Exit.png", pageLayout, 2, 0, true);
 }
 
 PageNet::PageNet(QWidget* parent) : AbstractPage(parent)
 {
-	QFont * font14 = new QFont("MS Shell Dlg", 14);
-	QGridLayout * pageLayout = new QGridLayout(this);
-	pageLayout->setColumnStretch(0, 1);
-	pageLayout->setColumnStretch(1, 1);
-	pageLayout->setColumnStretch(2, 1);
+    QFont * font14 = new QFont("MS Shell Dlg", 14);
+    QGridLayout * pageLayout = new QGridLayout(this);
+    pageLayout->setColumnStretch(0, 1);
+    pageLayout->setColumnStretch(1, 1);
+    pageLayout->setColumnStretch(2, 1);
 
-	BtnNetSvrStart = new QPushButton(this);
-	BtnNetSvrStart->setFont(*font14);
-	BtnNetSvrStart->setText(QPushButton::tr("Start server"));
-	BtnNetSvrStart->setVisible(haveServer);
-	pageLayout->addWidget(BtnNetSvrStart, 4, 2);
+    BtnNetSvrStart = new QPushButton(this);
+    BtnNetSvrStart->setFont(*font14);
+    BtnNetSvrStart->setText(QPushButton::tr("Start server"));
+    BtnNetSvrStart->setVisible(haveServer);
+    pageLayout->addWidget(BtnNetSvrStart, 4, 2);
 
-	BtnBack = addButton(":/res/Exit.png", pageLayout, 4, 0, true);
+    BtnBack = addButton(":/res/Exit.png", pageLayout, 4, 0, true);
 
-	ConnGroupBox = new QGroupBox(this);
-	ConnGroupBox->setTitle(QGroupBox::tr("Net game"));
-	pageLayout->addWidget(ConnGroupBox, 2, 0, 1, 3);
-	GBClayout = new QGridLayout(ConnGroupBox);
-	GBClayout->setColumnStretch(0, 1);
-	GBClayout->setColumnStretch(1, 1);
-	GBClayout->setColumnStretch(2, 1);
+    ConnGroupBox = new QGroupBox(this);
+    ConnGroupBox->setTitle(QGroupBox::tr("Net game"));
+    pageLayout->addWidget(ConnGroupBox, 2, 0, 1, 3);
+    GBClayout = new QGridLayout(ConnGroupBox);
+    GBClayout->setColumnStretch(0, 1);
+    GBClayout->setColumnStretch(1, 1);
+    GBClayout->setColumnStretch(2, 1);
 
-	BtnNetConnect = new QPushButton(ConnGroupBox);
-	BtnNetConnect->setFont(*font14);
-	BtnNetConnect->setText(QPushButton::tr("Connect"));
-	GBClayout->addWidget(BtnNetConnect, 2, 2);
+    BtnNetConnect = new QPushButton(ConnGroupBox);
+    BtnNetConnect->setFont(*font14);
+    BtnNetConnect->setText(QPushButton::tr("Connect"));
+    GBClayout->addWidget(BtnNetConnect, 2, 2);
 
-	tvServersList = new QTableView(ConnGroupBox);
-	tvServersList->setSelectionBehavior(QAbstractItemView::SelectRows);
-	GBClayout->addWidget(tvServersList, 1, 0, 1, 3);
+    tvServersList = new QTableView(ConnGroupBox);
+    tvServersList->setSelectionBehavior(QAbstractItemView::SelectRows);
+    GBClayout->addWidget(tvServersList, 1, 0, 1, 3);
 
-	BtnUpdateSList = new QPushButton(ConnGroupBox);
-	BtnUpdateSList->setFont(*font14);
-	BtnUpdateSList->setText(QPushButton::tr("Update"));
-	GBClayout->addWidget(BtnUpdateSList, 2, 0);
+    BtnUpdateSList = new QPushButton(ConnGroupBox);
+    BtnUpdateSList->setFont(*font14);
+    BtnUpdateSList->setText(QPushButton::tr("Update"));
+    GBClayout->addWidget(BtnUpdateSList, 2, 0);
 
-	BtnSpecifyServer = new QPushButton(ConnGroupBox);
-	BtnSpecifyServer->setFont(*font14);
-	BtnSpecifyServer->setText(QPushButton::tr("Specify"));
-	GBClayout->addWidget(BtnSpecifyServer, 2, 1);
+    BtnSpecifyServer = new QPushButton(ConnGroupBox);
+    BtnSpecifyServer->setFont(*font14);
+    BtnSpecifyServer->setText(QPushButton::tr("Specify"));
+    GBClayout->addWidget(BtnSpecifyServer, 2, 1);
 
-	connect(BtnNetConnect, SIGNAL(clicked()), this, SLOT(slotConnect()));
+    connect(BtnNetConnect, SIGNAL(clicked()), this, SLOT(slotConnect()));
 }
 
 void PageNet::updateServersList()
 {
-	tvServersList->setModel(new HWNetUdpModel(tvServersList));
+    tvServersList->setModel(new HWNetUdpModel(tvServersList));
 
-	tvServersList->horizontalHeader()->setResizeMode(0, QHeaderView::Stretch);
+    tvServersList->horizontalHeader()->setResizeMode(0, QHeaderView::Stretch);
 
-	static_cast<HWNetServersModel *>(tvServersList->model())->updateList();
+    static_cast<HWNetServersModel *>(tvServersList->model())->updateList();
 
-	connect(BtnUpdateSList, SIGNAL(clicked()), static_cast<HWNetServersModel *>(tvServersList->model()), SLOT(updateList()));
-	connect(tvServersList, SIGNAL(doubleClicked(const QModelIndex &)), this, SLOT(slotConnect()));
+    connect(BtnUpdateSList, SIGNAL(clicked()), static_cast<HWNetServersModel *>(tvServersList->model()), SLOT(updateList()));
+    connect(tvServersList, SIGNAL(doubleClicked(const QModelIndex &)), this, SLOT(slotConnect()));
 }
 
 void PageNet::slotConnect()
 {
-	HWNetServersModel * model = static_cast<HWNetServersModel *>(tvServersList->model());
-	QModelIndex mi = tvServersList->currentIndex();
-	if(!mi.isValid())
-	{
-		QMessageBox::information(this, tr("Error"), tr("Please select server from the list above"));
-		return;
-	}
-	QString host = model->index(mi.row(), 1).data().toString();
-	quint16 port = model->index(mi.row(), 2).data().toUInt();
+    HWNetServersModel * model = static_cast<HWNetServersModel *>(tvServersList->model());
+    QModelIndex mi = tvServersList->currentIndex();
+    if(!mi.isValid())
+    {
+        QMessageBox::information(this, tr("Error"), tr("Please select server from the list above"));
+        return;
+    }
+    QString host = model->index(mi.row(), 1).data().toString();
+    quint16 port = model->index(mi.row(), 2).data().toUInt();
 
-	emit connectClicked(host, port);
+    emit connectClicked(host, port);
 }
 
 PageNetServer::PageNetServer(QWidget* parent) : AbstractPage(parent)
 {
-	QFont * font14 = new QFont("MS Shell Dlg", 14);
-	QGridLayout * pageLayout = new QGridLayout(this);
-	pageLayout->setColumnStretch(0, 1);
-	pageLayout->setColumnStretch(1, 1);
-	pageLayout->setColumnStretch(2, 1);
+    QFont * font14 = new QFont("MS Shell Dlg", 14);
+    QGridLayout * pageLayout = new QGridLayout(this);
+    pageLayout->setColumnStretch(0, 1);
+    pageLayout->setColumnStretch(1, 1);
+    pageLayout->setColumnStretch(2, 1);
 
-	pageLayout->setRowStretch(0, 1);
-	pageLayout->setRowStretch(1, 0);
+    pageLayout->setRowStretch(0, 1);
+    pageLayout->setRowStretch(1, 0);
 
-	BtnBack =addButton(":/res/Exit.png", pageLayout, 1, 0, true);
+    BtnBack =addButton(":/res/Exit.png", pageLayout, 1, 0, true);
 
-	BtnStart = new QPushButton(this);
-	BtnStart->setFont(*font14);
-	BtnStart->setText(QPushButton::tr("Start"));
-	pageLayout->addWidget(BtnStart, 1, 2);
+    BtnStart = new QPushButton(this);
+    BtnStart->setFont(*font14);
+    BtnStart->setText(QPushButton::tr("Start"));
+    pageLayout->addWidget(BtnStart, 1, 2);
 
-	QWidget * wg = new QWidget(this);
-	pageLayout->addWidget(wg, 0, 0, 1, 3);
+    QWidget * wg = new QWidget(this);
+    pageLayout->addWidget(wg, 0, 0, 1, 3);
 
-	QGridLayout * wgLayout = new QGridLayout(wg);
-	wgLayout->setColumnStretch(0, 1);
-	wgLayout->setColumnStretch(1, 3);
-	wgLayout->setColumnStretch(2, 1);
+    QGridLayout * wgLayout = new QGridLayout(wg);
+    wgLayout->setColumnStretch(0, 1);
+    wgLayout->setColumnStretch(1, 3);
+    wgLayout->setColumnStretch(2, 1);
 
-	wgLayout->setRowStretch(0, 0);
-	wgLayout->setRowStretch(1, 1);
+    wgLayout->setRowStretch(0, 0);
+    wgLayout->setRowStretch(1, 1);
 
-	QGroupBox * gb = new QGroupBox(wg);
-	wgLayout->addWidget(gb, 0, 1);
+    QGroupBox * gb = new QGroupBox(wg);
+    wgLayout->addWidget(gb, 0, 1);
 
-	QGridLayout * gbLayout = new QGridLayout(gb);
+    QGridLayout * gbLayout = new QGridLayout(gb);
 
-	labelSD = new QLabel(gb);
-	labelSD->setText(QLabel::tr("Server name:"));
-	gbLayout->addWidget(labelSD, 0, 0);
+    labelSD = new QLabel(gb);
+    labelSD->setText(QLabel::tr("Server name:"));
+    gbLayout->addWidget(labelSD, 0, 0);
 
-	leServerDescr = new QLineEdit(gb);
-	gbLayout->addWidget(leServerDescr, 0, 1);
+    leServerDescr = new QLineEdit(gb);
+    gbLayout->addWidget(leServerDescr, 0, 1);
 
-	labelPort = new QLabel(gb);
-	labelPort->setText(QLabel::tr("Server port:"));
-	gbLayout->addWidget(labelPort, 1, 0);
+    labelPort = new QLabel(gb);
+    labelPort->setText(QLabel::tr("Server port:"));
+    gbLayout->addWidget(labelPort, 1, 0);
 
-	sbPort = new QSpinBox(gb);
-	sbPort->setMinimum(0);
-	sbPort->setMaximum(65535);
-	gbLayout->addWidget(sbPort, 1, 1);
+    sbPort = new QSpinBox(gb);
+    sbPort->setMinimum(0);
+    sbPort->setMaximum(65535);
+    gbLayout->addWidget(sbPort, 1, 1);
 
-	BtnDefault = new QPushButton(gb);
-	BtnDefault->setText(QPushButton::tr("default"));
-	gbLayout->addWidget(BtnDefault, 1, 2);
+    BtnDefault = new QPushButton(gb);
+    BtnDefault->setText(QPushButton::tr("default"));
+    gbLayout->addWidget(BtnDefault, 1, 2);
 
-	connect(BtnDefault, SIGNAL(clicked()), this, SLOT(setDefaultPort()));
+    connect(BtnDefault, SIGNAL(clicked()), this, SLOT(setDefaultPort()));
 }
 
 void PageNetServer::setDefaultPort()
 {
-	sbPort->setValue(46631);
+    sbPort->setValue(46631);
 }
 
 PageNetGame::PageNetGame(QWidget* parent, QSettings * gameSettings, SDLInteraction * sdli) : AbstractPage(parent)
 {
-	QGridLayout * pageLayout = new QGridLayout(this);
-	pageLayout->setSizeConstraint(QLayout::SetMinimumSize);
-	//pageLayout->setSpacing(1);
-	pageLayout->setColumnStretch(0, 50);
-	pageLayout->setColumnStretch(1, 50);
+    QGridLayout * pageLayout = new QGridLayout(this);
+    pageLayout->setSizeConstraint(QLayout::SetMinimumSize);
+    //pageLayout->setSpacing(1);
+    pageLayout->setColumnStretch(0, 50);
+    pageLayout->setColumnStretch(1, 50);
 
-	// chatwidget
-	pChatWidget = new HWChatWidget(this, gameSettings, sdli, true);
-	pChatWidget->setShowReady(true); // show status bulbs by default
-	pageLayout->addWidget(pChatWidget, 1, 0, 1, 2);
-	pageLayout->setRowStretch(1, 100);
+    // chatwidget
+    pChatWidget = new HWChatWidget(this, gameSettings, sdli, true);
+    pChatWidget->setShowReady(true); // show status bulbs by default
+    pageLayout->addWidget(pChatWidget, 1, 0, 1, 2);
+    pageLayout->setRowStretch(1, 100);
 
-	pGameCFG = new GameCFGWidget(this);
-	pageLayout->addWidget(pGameCFG, 0, 0);
+    pGameCFG = new GameCFGWidget(this);
+    pageLayout->addWidget(pGameCFG, 0, 0);
 
-	pNetTeamsWidget = new TeamSelWidget(this);
-	pNetTeamsWidget->setAcceptOuter(true);
-	pageLayout->addWidget(pNetTeamsWidget, 0, 1);
+    pNetTeamsWidget = new TeamSelWidget(this);
+    pNetTeamsWidget->setAcceptOuter(true);
+    pageLayout->addWidget(pNetTeamsWidget, 0, 1);
 
 
-	QHBoxLayout * bottomLayout = new QHBoxLayout;
-	pageLayout->addLayout(bottomLayout, 3, 0, 1, 2);
+    QHBoxLayout * bottomLayout = new QHBoxLayout;
+    pageLayout->addLayout(bottomLayout, 3, 0, 1, 2);
 
-	BtnBack = addButton(":/res/Exit.png", bottomLayout, 0, true);
+    BtnBack = addButton(":/res/Exit.png", bottomLayout, 0, true);
 
-	BtnGo = new QPushButton(this);
-	BtnGo->setToolTip(QPushButton::tr("Ready"));
-	BtnGo->setIcon(QIcon(":/res/lightbulb_off.png"));
-	BtnGo->setIconSize(QSize(25, 34));
-	BtnGo->setMinimumWidth(50);
-	BtnGo->setMinimumHeight(50);
-	bottomLayout->addWidget(BtnGo, 4);
+    BtnGo = new QPushButton(this);
+    BtnGo->setToolTip(QPushButton::tr("Ready"));
+    BtnGo->setIcon(QIcon(":/res/lightbulb_off.png"));
+    BtnGo->setIconSize(QSize(25, 34));
+    BtnGo->setMinimumWidth(50);
+    BtnGo->setMinimumHeight(50);
+    bottomLayout->addWidget(BtnGo, 4);
 
 
-	BtnMaster = addButton(tr("Control"), bottomLayout, 2);
-	QMenu * menu = new QMenu(BtnMaster);
-	restrictJoins = new QAction(QAction::tr("Restrict Joins"), menu);
-	restrictJoins->setCheckable(true);
-	restrictTeamAdds = new QAction(QAction::tr("Restrict Team Additions"), menu);
-	restrictTeamAdds->setCheckable(true);
-	//menu->addAction(startGame);
-	menu->addAction(restrictJoins);
-	menu->addAction(restrictTeamAdds);
+    BtnMaster = addButton(tr("Control"), bottomLayout, 2);
+    QMenu * menu = new QMenu(BtnMaster);
+    restrictJoins = new QAction(QAction::tr("Restrict Joins"), menu);
+    restrictJoins->setCheckable(true);
+    restrictTeamAdds = new QAction(QAction::tr("Restrict Team Additions"), menu);
+    restrictTeamAdds->setCheckable(true);
+    //menu->addAction(startGame);
+    menu->addAction(restrictJoins);
+    menu->addAction(restrictTeamAdds);
 
-	BtnMaster->setMenu(menu);
+    BtnMaster->setMenu(menu);
 
-	BtnStart = addButton(QAction::tr("Start"), bottomLayout, 3);
+    BtnStart = addButton(QAction::tr("Start"), bottomLayout, 3);
 
-	bottomLayout->insertStretch(1, 100);
+    bottomLayout->insertStretch(1, 100);
 }
 
 void PageNetGame::setReadyStatus(bool isReady)
 {
-	if(isReady)
-		BtnGo->setIcon(QIcon(":/res/lightbulb_on.png"));
-	else
-		BtnGo->setIcon(QIcon(":/res/lightbulb_off.png"));
+    if(isReady)
+        BtnGo->setIcon(QIcon(":/res/lightbulb_on.png"));
+    else
+        BtnGo->setIcon(QIcon(":/res/lightbulb_off.png"));
 }
 
 void PageNetGame::setMasterMode(bool isMaster)
 {
-	BtnMaster->setVisible(isMaster);
-	BtnStart->setVisible(isMaster);
+    BtnMaster->setVisible(isMaster);
+    BtnStart->setVisible(isMaster);
 }
 
 PageInfo::PageInfo(QWidget* parent) : AbstractPage(parent)
 {
-	QGridLayout * pageLayout = new QGridLayout(this);
-	pageLayout->setColumnStretch(0, 1);
-	pageLayout->setColumnStretch(1, 1);
-	pageLayout->setColumnStretch(2, 1);
+    QGridLayout * pageLayout = new QGridLayout(this);
+    pageLayout->setColumnStretch(0, 1);
+    pageLayout->setColumnStretch(1, 1);
+    pageLayout->setColumnStretch(2, 1);
 
-	BtnBack = addButton(":/res/Exit.png", pageLayout, 1, 0, true);
+    BtnBack = addButton(":/res/Exit.png", pageLayout, 1, 0, true);
 
-	about = new About(this);
-	pageLayout->addWidget(about, 0, 0, 1, 3);
+    about = new About(this);
+    pageLayout->addWidget(about, 0, 0, 1, 3);
 }
 
 PageSinglePlayer::PageSinglePlayer(QWidget* parent) : AbstractPage(parent)
 {
-	QVBoxLayout * vLayout = new QVBoxLayout(this);
-	QHBoxLayout * topLine = new QHBoxLayout();
-	QHBoxLayout * middleLine = new QHBoxLayout();
-	QHBoxLayout * bottomLine = new QHBoxLayout();
-	vLayout->addStretch();
-	vLayout->addLayout(topLine);
-	vLayout->addSpacing(30);
-	vLayout->addLayout(middleLine);
-	vLayout->addStretch();
-	vLayout->addLayout(bottomLine);
+    QVBoxLayout * vLayout = new QVBoxLayout(this);
+    QHBoxLayout * topLine = new QHBoxLayout();
+    QHBoxLayout * middleLine = new QHBoxLayout();
+    QHBoxLayout * bottomLine = new QHBoxLayout();
+    vLayout->addStretch();
+    vLayout->addLayout(topLine);
+    vLayout->addSpacing(30);
+    vLayout->addLayout(middleLine);
+    vLayout->addStretch();
+    vLayout->addLayout(bottomLine);
 
-	topLine->addStretch();
-	BtnSimpleGamePage = addButton(":/res/SimpleGame.png", topLine, 0, true);
-	BtnSimpleGamePage->setToolTip(tr("Simple Game (a quick game against the computer, settings are chosen for you)"));
-	topLine->addSpacing(60);
-	BtnMultiplayer = addButton(":/res/Multiplayer.png", topLine, 1, true);
-	BtnMultiplayer->setToolTip(tr("Multiplayer (play a hotseat game against your friends, or AI teams)"));
-	topLine->addStretch();
+    topLine->addStretch();
+    BtnSimpleGamePage = addButton(":/res/SimpleGame.png", topLine, 0, true);
+    BtnSimpleGamePage->setToolTip(tr("Simple Game (a quick game against the computer, settings are chosen for you)"));
+    topLine->addSpacing(60);
+    BtnMultiplayer = addButton(":/res/Multiplayer.png", topLine, 1, true);
+    BtnMultiplayer->setToolTip(tr("Multiplayer (play a hotseat game against your friends, or AI teams)"));
+    topLine->addStretch();
 
 
-	BtnTrainPage = addButton(":/res/Trainings.png", middleLine, 0, true);
-	BtnTrainPage->setToolTip(tr("Training Mode (Practice your skills in a range of training missions). IN DEVELOPMENT"));
+    BtnTrainPage = addButton(":/res/Trainings.png", middleLine, 0, true);
+    BtnTrainPage->setToolTip(tr("Training Mode (Practice your skills in a range of training missions). IN DEVELOPMENT"));
 
-	BtnBack = addButton(":/res/Exit.png", bottomLine, 0, true);
-	bottomLine->addStretch();
+    BtnBack = addButton(":/res/Exit.png", bottomLine, 0, true);
+    bottomLine->addStretch();
 
-	BtnDemos = addButton(":/res/Record.png", bottomLine, 1, true);
-	BtnDemos->setToolTip(tr("Demos (Watch recorded demos)"));
-	BtnLoad = addButton(":/res/Save.png", bottomLine, 2, true);
-	BtnLoad->setStyleSheet("QPushButton{margin: 12px 0px 12px 0px;}");
-	BtnLoad->setToolTip(tr("Load (Load a previously saved game)"));
+    BtnDemos = addButton(":/res/Record.png", bottomLine, 1, true);
+    BtnDemos->setToolTip(tr("Demos (Watch recorded demos)"));
+    BtnLoad = addButton(":/res/Save.png", bottomLine, 2, true);
+    BtnLoad->setStyleSheet("QPushButton{margin: 12px 0px 12px 0px;}");
+    BtnLoad->setToolTip(tr("Load (Load a previously saved game)"));
 }
 
 PageTraining::PageTraining(QWidget* parent) : AbstractPage(parent)
 {
-	QGridLayout * pageLayout = new QGridLayout(this);
-	pageLayout->setColumnStretch(0, 1);
-	pageLayout->setColumnStretch(1, 2);
-	pageLayout->setColumnStretch(2, 1);
+    QGridLayout * pageLayout = new QGridLayout(this);
+    pageLayout->setColumnStretch(0, 1);
+    pageLayout->setColumnStretch(1, 2);
+    pageLayout->setColumnStretch(2, 1);
 
-	CBSelect = new QComboBox(this);
+    CBSelect = new QComboBox(this);
 
-	QDir tmpdir;
-	tmpdir.cd(datadir->absolutePath());
-	tmpdir.cd("Missions");
-	tmpdir.setFilter(QDir::Files);
-	CBSelect->addItems(tmpdir.entryList(QStringList("*.hwt")).replaceInStrings(QRegExp("^(.*)\\.hwt"), "\\1"));
+    QDir tmpdir;
+    tmpdir.cd(datadir->absolutePath());
+    tmpdir.cd("Missions");
+    tmpdir.setFilter(QDir::Files);
+    CBSelect->addItems(tmpdir.entryList(QStringList("*.hwt")).replaceInStrings(QRegExp("^(.*)\\.hwt"), "\\1"));
 
-	pageLayout->addWidget(CBSelect, 1, 1);
-	
-	BtnStartTrain = new QPushButton(this);
-	BtnStartTrain->setFont(*font14);
-	BtnStartTrain->setText(QPushButton::tr("Go!"));
-	pageLayout->addWidget(BtnStartTrain, 1, 2);
+    pageLayout->addWidget(CBSelect, 1, 1);
+    
+    BtnStartTrain = new QPushButton(this);
+    BtnStartTrain->setFont(*font14);
+    BtnStartTrain->setText(QPushButton::tr("Go!"));
+    pageLayout->addWidget(BtnStartTrain, 1, 2);
 
-	BtnBack = addButton(":/res/Exit.png", pageLayout, 1, 0, true);
+    BtnBack = addButton(":/res/Exit.png", pageLayout, 1, 0, true);
 }
 
 PageSelectWeapon::PageSelectWeapon(QWidget* parent) :
   AbstractPage(parent)
 {
-	QGridLayout * pageLayout = new QGridLayout(this);
+    QGridLayout * pageLayout = new QGridLayout(this);
 
-	pWeapons = new SelWeaponWidget(cAmmoNumber, this);
-	pageLayout->addWidget(pWeapons, 0, 0, 1, 4);
+    pWeapons = new SelWeaponWidget(cAmmoNumber, this);
+    pageLayout->addWidget(pWeapons, 0, 0, 1, 4);
 
-	BtnBack = addButton(":/res/Exit.png", pageLayout, 1, 0, true);
-	BtnDefault = addButton(tr("Default"), pageLayout, 1, 1);
-	BtnDelete = addButton(tr("Delete"), pageLayout, 1, 2);
-	BtnSave = addButton(":/res/Save.png", pageLayout, 1, 3, true);
-	BtnSave->setStyleSheet("QPushButton{margin: 12px 0px 12px 0px;}");
+    BtnBack = addButton(":/res/Exit.png", pageLayout, 1, 0, true);
+    BtnDefault = addButton(tr("Default"), pageLayout, 1, 1);
+    BtnDelete = addButton(tr("Delete"), pageLayout, 1, 2);
+    BtnSave = addButton(":/res/Save.png", pageLayout, 1, 3, true);
+    BtnSave->setStyleSheet("QPushButton{margin: 12px 0px 12px 0px;}");
 
-	connect(BtnDefault, SIGNAL(clicked()), pWeapons, SLOT(setDefault()));
-	connect(BtnSave, SIGNAL(clicked()), pWeapons, SLOT(save()));
+    connect(BtnDefault, SIGNAL(clicked()), pWeapons, SLOT(setDefault()));
+    connect(BtnSave, SIGNAL(clicked()), pWeapons, SLOT(save()));
 }
 
 PageInGame::PageInGame(QWidget* parent) :
   AbstractPage(parent)
 {
-	QLabel * label = new QLabel(this);
-	label->setText("In game...");
+    QLabel * label = new QLabel(this);
+    label->setText("In game...");
 }
 
 PageRoomsList::PageRoomsList(QWidget* parent, QSettings * gameSettings, SDLInteraction * sdli) :
   AbstractPage(parent)
 {
-	QGridLayout * pageLayout = new QGridLayout(this);
+    QGridLayout * pageLayout = new QGridLayout(this);
 
-	QHBoxLayout * newRoomLayout = new QHBoxLayout();
-	QLabel * roomNameLabel = new QLabel(this);
-	roomNameLabel->setText(tr("Room Name:"));
-	roomName = new QLineEdit(this);
-	roomName->setMaxLength(60);
-	newRoomLayout->addWidget(roomNameLabel);
-	newRoomLayout->addWidget(roomName);
-	pageLayout->addLayout(newRoomLayout, 0, 0);
+    QHBoxLayout * newRoomLayout = new QHBoxLayout();
+    QLabel * roomNameLabel = new QLabel(this);
+    roomNameLabel->setText(tr("Room Name:"));
+    roomName = new QLineEdit(this);
+    roomName->setMaxLength(60);
+    newRoomLayout->addWidget(roomNameLabel);
+    newRoomLayout->addWidget(roomName);
+    pageLayout->addLayout(newRoomLayout, 0, 0);
 
-	roomsList = new QTableWidget(this);
-	roomsList->setSelectionBehavior(QAbstractItemView::SelectRows);
-	roomsList->verticalHeader()->setVisible(false);
-	roomsList->horizontalHeader()->setResizeMode(QHeaderView::Interactive);
-	roomsList->setAlternatingRowColors(true);
-	pageLayout->addWidget(roomsList, 1, 0, 3, 1);
-	pageLayout->setRowStretch(2, 100);
+    roomsList = new QTableWidget(this);
+    roomsList->setSelectionBehavior(QAbstractItemView::SelectRows);
+    roomsList->verticalHeader()->setVisible(false);
+    roomsList->horizontalHeader()->setResizeMode(QHeaderView::Interactive);
+    roomsList->setAlternatingRowColors(true);
+    pageLayout->addWidget(roomsList, 1, 0, 3, 1);
+    pageLayout->setRowStretch(2, 100);
 
-	chatWidget = new HWChatWidget(this, gameSettings, sdli, false);
-	pageLayout->addWidget(chatWidget, 4, 0, 1, 2);
-	pageLayout->setRowStretch(4, 350);
+    chatWidget = new HWChatWidget(this, gameSettings, sdli, false);
+    pageLayout->addWidget(chatWidget, 4, 0, 1, 2);
+    pageLayout->setRowStretch(4, 350);
 
-	BtnCreate = addButton(tr("Create"), pageLayout, 0, 1);
-	BtnJoin = addButton(tr("Join"), pageLayout, 1, 1);
-	BtnRefresh = addButton(tr("Refresh"), pageLayout, 3, 1);
+    BtnCreate = addButton(tr("Create"), pageLayout, 0, 1);
+    BtnJoin = addButton(tr("Join"), pageLayout, 1, 1);
+    BtnRefresh = addButton(tr("Refresh"), pageLayout, 3, 1);
 
-	BtnBack = addButton(":/res/Exit.png", pageLayout, 5, 0, true);
-	BtnAdmin = addButton(tr("Admin features"), pageLayout, 5, 1);
+    BtnBack = addButton(":/res/Exit.png", pageLayout, 5, 0, true);
+    BtnAdmin = addButton(tr("Admin features"), pageLayout, 5, 1);
 
-	connect(BtnCreate, SIGNAL(clicked()), this, SLOT(onCreateClick()));
-	connect(BtnJoin, SIGNAL(clicked()), this, SLOT(onJoinClick()));
-	connect(BtnRefresh, SIGNAL(clicked()), this, SLOT(onRefreshClick()));
-	connect(roomsList, SIGNAL(doubleClicked (const QModelIndex &)), this, SLOT(onJoinClick()));
+    connect(BtnCreate, SIGNAL(clicked()), this, SLOT(onCreateClick()));
+    connect(BtnJoin, SIGNAL(clicked()), this, SLOT(onJoinClick()));
+    connect(BtnRefresh, SIGNAL(clicked()), this, SLOT(onRefreshClick()));
+    connect(roomsList, SIGNAL(doubleClicked (const QModelIndex &)), this, SLOT(onJoinClick()));
 }
 
 void PageRoomsList::setAdmin(bool flag)
 {
-	BtnAdmin->setVisible(flag);
+    BtnAdmin->setVisible(flag);
 }
 
 void PageRoomsList::setRoomsList(const QStringList & list)
 {
-	roomsList->clear();
-	roomsList->setColumnCount(7);
-	roomsList->setHorizontalHeaderLabels(
-			QStringList() <<
-			QTableWidget::tr("Room Name") <<
-			QTableWidget::tr("C") <<
-			QTableWidget::tr("T") <<
-			QTableWidget::tr("Owner") <<
-			QTableWidget::tr("Map") <<
-			QTableWidget::tr("Rules") <<
-			QTableWidget::tr("Weapons")
-			);
+    roomsList->clear();
+    roomsList->setColumnCount(7);
+    roomsList->setHorizontalHeaderLabels(
+            QStringList() <<
+            QTableWidget::tr("Room Name") <<
+            QTableWidget::tr("C") <<
+            QTableWidget::tr("T") <<
+            QTableWidget::tr("Owner") <<
+            QTableWidget::tr("Map") <<
+            QTableWidget::tr("Rules") <<
+            QTableWidget::tr("Weapons")
+            );
 
-	// set minimum sizes
-//	roomsList->horizontalHeader()->resizeSection(0, 200);
-//	roomsList->horizontalHeader()->resizeSection(1, 50);
-//	roomsList->horizontalHeader()->resizeSection(2, 50);
-//	roomsList->horizontalHeader()->resizeSection(3, 100);
-//	roomsList->horizontalHeader()->resizeSection(4, 100);
-//	roomsList->horizontalHeader()->resizeSection(5, 100);
-//	roomsList->horizontalHeader()->resizeSection(6, 100);
+    // set minimum sizes
+//  roomsList->horizontalHeader()->resizeSection(0, 200);
+//  roomsList->horizontalHeader()->resizeSection(1, 50);
+//  roomsList->horizontalHeader()->resizeSection(2, 50);
+//  roomsList->horizontalHeader()->resizeSection(3, 100);
+//  roomsList->horizontalHeader()->resizeSection(4, 100);
+//  roomsList->horizontalHeader()->resizeSection(5, 100);
+//  roomsList->horizontalHeader()->resizeSection(6, 100);
 
-	// set resize modes
-//	roomsList->horizontalHeader()->setResizeMode(QHeaderView::Interactive);
+    // set resize modes
+//  roomsList->horizontalHeader()->setResizeMode(QHeaderView::Interactive);
 
-	if (list.size() % 8)
-		return;
+    if (list.size() % 8)
+        return;
 
-	roomsList->setRowCount(list.size() / 8);
-	for(int i = 0, r = 0; i < list.size(); i += 8, r++)
-	{
-		QTableWidgetItem * item;
-		item = new QTableWidgetItem(list[i + 1]); // room name
-		item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
-		
-		// pick appropriate room icon and tooltip (game in progress yes/no; later maybe locked rooms etc.)
-		if(list[i].compare("True"))
-		{
-			item->setIcon(QIcon(":/res/iconTime.png"));// game is in lobby
-			item->setToolTip(tr("This game is in lobby.\nYou may join and start playing once the game starts."));
-		}
-		else
-		{
-			item->setIcon(QIcon(":/res/iconDamage.png"));// game has started
-			item->setToolTip(tr("This game is in progress.\nYou may join and spectate now but you'll have to wait for the game to end to start playing."));
-		}
+    roomsList->setRowCount(list.size() / 8);
+    for(int i = 0, r = 0; i < list.size(); i += 8, r++)
+    {
+        QTableWidgetItem * item;
+        item = new QTableWidgetItem(list[i + 1]); // room name
+        item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
+        
+        // pick appropriate room icon and tooltip (game in progress yes/no; later maybe locked rooms etc.)
+        if(list[i].compare("True"))
+        {
+            item->setIcon(QIcon(":/res/iconTime.png"));// game is in lobby
+            item->setToolTip(tr("This game is in lobby.\nYou may join and start playing once the game starts."));
+        }
+        else
+        {
+            item->setIcon(QIcon(":/res/iconDamage.png"));// game has started
+            item->setToolTip(tr("This game is in progress.\nYou may join and spectate now but you'll have to wait for the game to end to start playing."));
+        }
 
-		roomsList->setItem(r, 0, item);
+        roomsList->setItem(r, 0, item);
 
-		item = new QTableWidgetItem(list[i + 2]); // number of clients
-		item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
-		item->setTextAlignment(Qt::AlignCenter);
-		item->setToolTip(tr("There are %1 clients connected to this room.", "", list[i + 2].toInt()).arg(list[i + 2]));
-		roomsList->setItem(r, 1, item);
+        item = new QTableWidgetItem(list[i + 2]); // number of clients
+        item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
+        item->setTextAlignment(Qt::AlignCenter);
+        item->setToolTip(tr("There are %1 clients connected to this room.", "", list[i + 2].toInt()).arg(list[i + 2]));
+        roomsList->setItem(r, 1, item);
 
-		item = new QTableWidgetItem(list[i + 3]); // number of teams
-		item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
-		item->setTextAlignment(Qt::AlignCenter);
-		item->setToolTip(tr("There are %1 teams participating in this room.", "", list[i + 3].toInt()).arg(list[i + 3]));
-		roomsList->setItem(r, 2, item);
+        item = new QTableWidgetItem(list[i + 3]); // number of teams
+        item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
+        item->setTextAlignment(Qt::AlignCenter);
+        item->setToolTip(tr("There are %1 teams participating in this room.", "", list[i + 3].toInt()).arg(list[i + 3]));
+        roomsList->setItem(r, 2, item);
 
-		item = new QTableWidgetItem(list[i + 4].left(15)); // name of host
-		item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
-		item->setToolTip(tr("%1 is the host. He may adjust settings and start the game.").arg(list[i + 4]));
-		roomsList->setItem(r, 3, item);
+        item = new QTableWidgetItem(list[i + 4].left(15)); // name of host
+        item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
+        item->setToolTip(tr("%1 is the host. He may adjust settings and start the game.").arg(list[i + 4]));
+        roomsList->setItem(r, 3, item);
 
-		if(list[i + 5].compare("+rnd+"))
-		{
-			item = new QTableWidgetItem(list[i + 5]); // selected map
-			
-			// check to see if we've got this map
-			// not perfect but a start
-			if(!mapList->contains(list[i + 5]))
-				item->setForeground(QBrush(QColor(255, 0, 0)));
-		}
-		else
-			item = new QTableWidgetItem(tr("Random Map")); // selected map (is randomized)
-		
-		item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
-		item->setToolTip(tr("Games may be played on precreated or randomized maps."));
-		roomsList->setItem(r, 4, item);
+        if(list[i + 5].compare("+rnd+"))
+        {
+            item = new QTableWidgetItem(list[i + 5]); // selected map
+            
+            // check to see if we've got this map
+            // not perfect but a start
+            if(!mapList->contains(list[i + 5]))
+                item->setForeground(QBrush(QColor(255, 0, 0)));
+        }
+        else
+            item = new QTableWidgetItem(tr("Random Map")); // selected map (is randomized)
+        
+        item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
+        item->setToolTip(tr("Games may be played on precreated or randomized maps."));
+        roomsList->setItem(r, 4, item);
 
-		item = new QTableWidgetItem(list[i + 6].left(20)); // selected game scheme
-		item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
-		item->setToolTip(tr("The Game Scheme defines general options and preferences like Round Time, Sudden Death or Vampirism."));
-		roomsList->setItem(r, 5, item);
+        item = new QTableWidgetItem(list[i + 6].left(20)); // selected game scheme
+        item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
+        item->setToolTip(tr("The Game Scheme defines general options and preferences like Round Time, Sudden Death or Vampirism."));
+        roomsList->setItem(r, 5, item);
 
-		item = new QTableWidgetItem(list[i + 7].left(20)); // selected weapon scheme
-		item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
-		item->setToolTip(tr("The Weapon Scheme defines available weapons and their ammunition count."));
-		roomsList->setItem(r, 6, item);
+        item = new QTableWidgetItem(list[i + 7].left(20)); // selected weapon scheme
+        item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable);
+        item->setToolTip(tr("The Weapon Scheme defines available weapons and their ammunition count."));
+        roomsList->setItem(r, 6, item);
 
-	}
+    }
    roomsList->horizontalHeader()->setResizeMode(0, QHeaderView::Stretch);
    roomsList->horizontalHeader()->setResizeMode(1, QHeaderView::ResizeToContents);
    roomsList->horizontalHeader()->setResizeMode(2, QHeaderView::ResizeToContents);
@@ -1027,429 +1027,429 @@
    roomsList->horizontalHeader()->setResizeMode(5, QHeaderView::ResizeToContents);
    roomsList->horizontalHeader()->setResizeMode(6, QHeaderView::ResizeToContents);
 
-//	roomsList->resizeColumnsToContents();
+//  roomsList->resizeColumnsToContents();
 }
 
 void PageRoomsList::onCreateClick()
 {
-	if (roomName->text().size())
-		emit askForCreateRoom(roomName->text());
-	else
-		QMessageBox::critical(this,
-				tr("Error"),
-				tr("Please enter room name"),
-				tr("OK"));
+    if (roomName->text().size())
+        emit askForCreateRoom(roomName->text());
+    else
+        QMessageBox::critical(this,
+                tr("Error"),
+                tr("Please enter room name"),
+                tr("OK"));
 }
 
 void PageRoomsList::onJoinClick()
 {
-	QTableWidgetItem * curritem = roomsList->item(roomsList->currentRow(), 0);
-	if (!curritem)
-	{
-		QMessageBox::critical(this,
-				tr("Error"),
-				tr("Please select room from the list"),
-				tr("OK"));
-		return ;
-	}
-	emit askForJoinRoom(curritem->data(Qt::DisplayRole).toString());
+    QTableWidgetItem * curritem = roomsList->item(roomsList->currentRow(), 0);
+    if (!curritem)
+    {
+        QMessageBox::critical(this,
+                tr("Error"),
+                tr("Please select room from the list"),
+                tr("OK"));
+        return ;
+    }
+    emit askForJoinRoom(curritem->data(Qt::DisplayRole).toString());
 }
 
 void PageRoomsList::onRefreshClick()
 {
-	emit askForRoomList();
+    emit askForRoomList();
 }
 
 
 PageConnecting::PageConnecting(QWidget* parent) :
-	AbstractPage(parent)
+    AbstractPage(parent)
 {
-	QGridLayout * pageLayout = new QGridLayout(this);
+    QGridLayout * pageLayout = new QGridLayout(this);
 
-	QLabel * lblConnecting = new QLabel(this);
-	lblConnecting->setText(tr("Connecting..."));
-	pageLayout->addWidget(lblConnecting);
+    QLabel * lblConnecting = new QLabel(this);
+    lblConnecting->setText(tr("Connecting..."));
+    pageLayout->addWidget(lblConnecting);
 }
 
 PageScheme::PageScheme(QWidget* parent) :
-	AbstractPage(parent)
+    AbstractPage(parent)
 {
-	QGridLayout * pageLayout = new QGridLayout(this);
-	QGroupBox * gb = new QGroupBox(this);
+    QGridLayout * pageLayout = new QGridLayout(this);
+    QGroupBox * gb = new QGroupBox(this);
 
-	QGridLayout * gl = new QGridLayout();
-	gb->setLayout(gl);
-	QSizePolicy sp;
-	sp.setVerticalPolicy(QSizePolicy::MinimumExpanding);
-	sp.setHorizontalPolicy(QSizePolicy::Expanding);
+    QGridLayout * gl = new QGridLayout();
+    gb->setLayout(gl);
+    QSizePolicy sp;
+    sp.setVerticalPolicy(QSizePolicy::MinimumExpanding);
+    sp.setHorizontalPolicy(QSizePolicy::Expanding);
 
-	pageLayout->addWidget(gb, 1,0,13,4);
+    pageLayout->addWidget(gb, 1,0,13,4);
 
-	gbGameModes = new QGroupBox(QGroupBox::tr("Game Modifiers"), gb);
-	gbBasicSettings = new QGroupBox(QGroupBox::tr("Basic Settings"), gb);
+    gbGameModes = new QGroupBox(QGroupBox::tr("Game Modifiers"), gb);
+    gbBasicSettings = new QGroupBox(QGroupBox::tr("Basic Settings"), gb);
 
-	gbGameModes->setStyleSheet(".QGroupBox {"
-			"background-color: #130f2c; background-image:url();"
-			"}");
-	gbBasicSettings->setStyleSheet(".QGroupBox {"
-			"background-color: #130f2c; background-image:url();"
-			"}");
+    gbGameModes->setStyleSheet(".QGroupBox {"
+            "background-color: #130f2c; background-image:url();"
+            "}");
+    gbBasicSettings->setStyleSheet(".QGroupBox {"
+            "background-color: #130f2c; background-image:url();"
+            "}");
 
-	gbGameModes->setSizePolicy(sp);
-	gbBasicSettings->setSizePolicy(sp);
-	gl->addWidget(gbGameModes,0,0,1,3,Qt::AlignTop);
-	gl->addWidget(gbBasicSettings,0,3,1,3,Qt::AlignTop);
+    gbGameModes->setSizePolicy(sp);
+    gbBasicSettings->setSizePolicy(sp);
+    gl->addWidget(gbGameModes,0,0,1,3,Qt::AlignTop);
+    gl->addWidget(gbBasicSettings,0,3,1,3,Qt::AlignTop);
 
-	QGridLayout * glGMLayout = new QGridLayout(gbGameModes);
-	QGridLayout * glBSLayout = new QGridLayout(gbBasicSettings);
-	gbGameModes->setLayout(glGMLayout);
-	gbBasicSettings->setLayout(glBSLayout);
-	// Left
+    QGridLayout * glGMLayout = new QGridLayout(gbGameModes);
+    QGridLayout * glBSLayout = new QGridLayout(gbBasicSettings);
+    gbGameModes->setLayout(glGMLayout);
+    gbBasicSettings->setLayout(glBSLayout);
+    // Left
 
-	TBW_mode_Forts = new ToggleButtonWidget(gbGameModes, ":/res/btnForts.png");
-	TBW_mode_Forts->setText(ToggleButtonWidget::tr("Fort Mode"));
+    TBW_mode_Forts = new ToggleButtonWidget(gbGameModes, ":/res/btnForts.png");
+    TBW_mode_Forts->setText(ToggleButtonWidget::tr("Fort Mode"));
     TBW_mode_Forts->setToolTip(tr("Defend your fort and destroy the opponents, two team colours max!"));
-	glGMLayout->addWidget(TBW_mode_Forts,0,0,1,1);
+    glGMLayout->addWidget(TBW_mode_Forts,0,0,1,1);
 
-	TBW_teamsDivide = new ToggleButtonWidget(gbGameModes, ":/res/btnTeamsDivide.png");
-	TBW_teamsDivide->setText(ToggleButtonWidget::tr("Divide Teams"));
+    TBW_teamsDivide = new ToggleButtonWidget(gbGameModes, ":/res/btnTeamsDivide.png");
+    TBW_teamsDivide->setText(ToggleButtonWidget::tr("Divide Teams"));
     TBW_teamsDivide->setToolTip(tr("Teams will start on opposite sides of the terrain, two team colours max!"));
-	glGMLayout->addWidget(TBW_teamsDivide,0,1,1,1);
+    glGMLayout->addWidget(TBW_teamsDivide,0,1,1,1);
 
-	TBW_solid = new ToggleButtonWidget(gbGameModes, ":/res/btnSolid.png");
-	TBW_solid->setText(ToggleButtonWidget::tr("Solid Land"));
+    TBW_solid = new ToggleButtonWidget(gbGameModes, ":/res/btnSolid.png");
+    TBW_solid->setText(ToggleButtonWidget::tr("Solid Land"));
     TBW_solid->setToolTip(tr("Land can not be destroyed!"));
-	glGMLayout->addWidget(TBW_solid,0,2,1,1);
+    glGMLayout->addWidget(TBW_solid,0,2,1,1);
 
-	TBW_border = new ToggleButtonWidget(gbGameModes, ":/res/btnBorder.png");
-	TBW_border->setText(ToggleButtonWidget::tr("Add Border"));
+    TBW_border = new ToggleButtonWidget(gbGameModes, ":/res/btnBorder.png");
+    TBW_border->setText(ToggleButtonWidget::tr("Add Border"));
     TBW_border->setToolTip(tr("Add an indestructable border around the terrain"));
-	glGMLayout->addWidget(TBW_border,0,3,1,1);
+    glGMLayout->addWidget(TBW_border,0,3,1,1);
 
-	TBW_lowGravity = new ToggleButtonWidget(gbGameModes, ":/res/btnLowGravity.png");
-	TBW_lowGravity->setText(ToggleButtonWidget::tr("Low Gravity"));
+    TBW_lowGravity = new ToggleButtonWidget(gbGameModes, ":/res/btnLowGravity.png");
+    TBW_lowGravity->setText(ToggleButtonWidget::tr("Low Gravity"));
     TBW_lowGravity->setToolTip(tr("Lower gravity"));
-	glGMLayout->addWidget(TBW_lowGravity,1,0,1,1);
+    glGMLayout->addWidget(TBW_lowGravity,1,0,1,1);
 
-	TBW_laserSight = new ToggleButtonWidget(gbGameModes, ":/res/btnLaserSight.png");
-	TBW_laserSight->setText(ToggleButtonWidget::tr("Laser Sight"));
+    TBW_laserSight = new ToggleButtonWidget(gbGameModes, ":/res/btnLaserSight.png");
+    TBW_laserSight->setText(ToggleButtonWidget::tr("Laser Sight"));
     TBW_laserSight->setToolTip(tr("Assisted aiming with laser sight"));
-	glGMLayout->addWidget(TBW_laserSight,1,1,1,1);
+    glGMLayout->addWidget(TBW_laserSight,1,1,1,1);
 
-	TBW_invulnerable = new ToggleButtonWidget(gbGameModes, ":/res/btnInvulnerable.png");
-	TBW_invulnerable->setText(ToggleButtonWidget::tr("Invulnerable"));
+    TBW_invulnerable = new ToggleButtonWidget(gbGameModes, ":/res/btnInvulnerable.png");
+    TBW_invulnerable->setText(ToggleButtonWidget::tr("Invulnerable"));
     TBW_invulnerable->setToolTip(tr("All hogs have a personal forcefield"));
-	glGMLayout->addWidget(TBW_invulnerable,1,2,1,1);
+    glGMLayout->addWidget(TBW_invulnerable,1,2,1,1);
 
-	TBW_mines = new ToggleButtonWidget(gbGameModes, ":/res/btnMines.png");
-	TBW_mines->setText(ToggleButtonWidget::tr("Add Mines"));
+    TBW_mines = new ToggleButtonWidget(gbGameModes, ":/res/btnMines.png");
+    TBW_mines->setText(ToggleButtonWidget::tr("Add Mines"));
     TBW_mines->setToolTip(tr("Enable random mines"));
-	glGMLayout->addWidget(TBW_mines,1,3,1,1);
+    glGMLayout->addWidget(TBW_mines,1,3,1,1);
 
-	TBW_vampiric = new ToggleButtonWidget(gbGameModes, ":/res/btnVampiric.png");
-	TBW_vampiric->setText(ToggleButtonWidget::tr("Vampirism"));
+    TBW_vampiric = new ToggleButtonWidget(gbGameModes, ":/res/btnVampiric.png");
+    TBW_vampiric->setText(ToggleButtonWidget::tr("Vampirism"));
     TBW_vampiric->setToolTip(tr("Gain 80% of the damage you do back in health"));
-	glGMLayout->addWidget(TBW_vampiric,2,0,1,1);
+    glGMLayout->addWidget(TBW_vampiric,2,0,1,1);
 
-	TBW_karma = new ToggleButtonWidget(gbGameModes, ":/res/btnKarma.png");
-	TBW_karma->setText(ToggleButtonWidget::tr("Karma"));
+    TBW_karma = new ToggleButtonWidget(gbGameModes, ":/res/btnKarma.png");
+    TBW_karma->setText(ToggleButtonWidget::tr("Karma"));
     TBW_karma->setToolTip(tr("Share your opponents pain, share their damage"));
-	glGMLayout->addWidget(TBW_karma,2,1,1,1);
+    glGMLayout->addWidget(TBW_karma,2,1,1,1);
 
-	TBW_artillery = new ToggleButtonWidget(gbGameModes, ":/res/btnArtillery.png");
-	TBW_artillery->setText(ToggleButtonWidget::tr("Artillery"));
+    TBW_artillery = new ToggleButtonWidget(gbGameModes, ":/res/btnArtillery.png");
+    TBW_artillery->setText(ToggleButtonWidget::tr("Artillery"));
     TBW_artillery->setToolTip(tr("Your hogs are unable to move, put your artillery skills to the test"));
-	glGMLayout->addWidget(TBW_artillery,2,2,1,1);
+    glGMLayout->addWidget(TBW_artillery,2,2,1,1);
 
-	TBW_randomorder = new ToggleButtonWidget(gbGameModes, ":/res/btnRandomOrder.png");
-	TBW_randomorder->setText(ToggleButtonWidget::tr("Random Order"));
+    TBW_randomorder = new ToggleButtonWidget(gbGameModes, ":/res/btnRandomOrder.png");
+    TBW_randomorder->setText(ToggleButtonWidget::tr("Random Order"));
     TBW_randomorder->setToolTip(tr("Order of play is random instead of in room order."));
-	glGMLayout->addWidget(TBW_randomorder,2,3,1,1);
+    glGMLayout->addWidget(TBW_randomorder,2,3,1,1);
 
-	TBW_king = new ToggleButtonWidget(gbGameModes, ":/res/btnKing.png");
-	TBW_king->setText(ToggleButtonWidget::tr("King"));
+    TBW_king = new ToggleButtonWidget(gbGameModes, ":/res/btnKing.png");
+    TBW_king->setText(ToggleButtonWidget::tr("King"));
     TBW_king->setToolTip(tr("Play with a King. If he dies, your side dies."));
-	glGMLayout->addWidget(TBW_king,3,0,1,1);
+    glGMLayout->addWidget(TBW_king,3,0,1,1);
 
-	TBW_placehog = new ToggleButtonWidget(gbGameModes, ":/res/btnPlaceHog.png");
-	TBW_placehog->setText(ToggleButtonWidget::tr("Place Hedgehogs"));
+    TBW_placehog = new ToggleButtonWidget(gbGameModes, ":/res/btnPlaceHog.png");
+    TBW_placehog->setText(ToggleButtonWidget::tr("Place Hedgehogs"));
     TBW_placehog->setToolTip(tr("Take turns placing your hedgehogs before the start of play."));
-	glGMLayout->addWidget(TBW_placehog,3,1,1,1);
+    glGMLayout->addWidget(TBW_placehog,3,1,1,1);
 
-	TBW_sharedammo = new ToggleButtonWidget(gbGameModes, ":/res/btnSharedAmmo.png");
-	TBW_sharedammo->setText(ToggleButtonWidget::tr("Clan Shares Ammo"));
+    TBW_sharedammo = new ToggleButtonWidget(gbGameModes, ":/res/btnSharedAmmo.png");
+    TBW_sharedammo->setText(ToggleButtonWidget::tr("Clan Shares Ammo"));
     TBW_sharedammo->setToolTip(tr("Ammo is shared between all teams that share a colour."));
-	glGMLayout->addWidget(TBW_sharedammo,3,2,1,1);
+    glGMLayout->addWidget(TBW_sharedammo,3,2,1,1);
 
-	TBW_disablegirders = new ToggleButtonWidget(gbGameModes, ":/res/btnDisableGirders.png");
-	TBW_disablegirders->setText(ToggleButtonWidget::tr("Disable Girders"));
+    TBW_disablegirders = new ToggleButtonWidget(gbGameModes, ":/res/btnDisableGirders.png");
+    TBW_disablegirders->setText(ToggleButtonWidget::tr("Disable Girders"));
     TBW_disablegirders->setToolTip(tr("Disable girders when generating random maps."));
-	glGMLayout->addWidget(TBW_disablegirders,3,3,1,1);
-	
-	// Right
-	QLabel * l;
+    glGMLayout->addWidget(TBW_disablegirders,3,3,1,1);
+    
+    // Right
+    QLabel * l;
 
-	l = new QLabel(gbBasicSettings);
-	l->setText(QLabel::tr("Damage Modifier"));
-	l->setWordWrap(true);
-	glBSLayout->addWidget(l,0,0,1,1);
-	l = new QLabel(gbBasicSettings);
-	l->setFixedSize(32,32);
-	l->setPixmap(QPixmap(":/res/iconDamage.png"));
-	glBSLayout->addWidget(l,0,1,1,1);
+    l = new QLabel(gbBasicSettings);
+    l->setText(QLabel::tr("Damage Modifier"));
+    l->setWordWrap(true);
+    glBSLayout->addWidget(l,0,0,1,1);
+    l = new QLabel(gbBasicSettings);
+    l->setFixedSize(32,32);
+    l->setPixmap(QPixmap(":/res/iconDamage.png"));
+    glBSLayout->addWidget(l,0,1,1,1);
 
-	SB_DamageModifier = new QSpinBox(gbBasicSettings);
-	SB_DamageModifier->setRange(10, 300);
-	SB_DamageModifier->setValue(100);
-	SB_DamageModifier->setSingleStep(25);
-	glBSLayout->addWidget(SB_DamageModifier,0,2,1,1);
+    SB_DamageModifier = new QSpinBox(gbBasicSettings);
+    SB_DamageModifier->setRange(10, 300);
+    SB_DamageModifier->setValue(100);
+    SB_DamageModifier->setSingleStep(25);
+    glBSLayout->addWidget(SB_DamageModifier,0,2,1,1);
 
-	l = new QLabel(gbBasicSettings);
-	l->setText(QLabel::tr("Turn Time"));
-	l->setWordWrap(true);
-	glBSLayout->addWidget(l,1,0,1,1);
-	l = new QLabel(gbBasicSettings);
-	l->setFixedSize(32,32);
-	l->setPixmap(QPixmap(":/res/iconTime.png"));
-	glBSLayout->addWidget(l,1,1,1,1);
+    l = new QLabel(gbBasicSettings);
+    l->setText(QLabel::tr("Turn Time"));
+    l->setWordWrap(true);
+    glBSLayout->addWidget(l,1,0,1,1);
+    l = new QLabel(gbBasicSettings);
+    l->setFixedSize(32,32);
+    l->setPixmap(QPixmap(":/res/iconTime.png"));
+    glBSLayout->addWidget(l,1,1,1,1);
 
-	SB_TurnTime = new QSpinBox(gbBasicSettings);
-	SB_TurnTime->setRange(1, 99);
-	SB_TurnTime->setValue(45);
-	SB_TurnTime->setSingleStep(15);
-	glBSLayout->addWidget(SB_TurnTime,1,2,1,1);
+    SB_TurnTime = new QSpinBox(gbBasicSettings);
+    SB_TurnTime->setRange(1, 99);
+    SB_TurnTime->setValue(45);
+    SB_TurnTime->setSingleStep(15);
+    glBSLayout->addWidget(SB_TurnTime,1,2,1,1);
 
-	l = new QLabel(gbBasicSettings);
-	l->setText(QLabel::tr("Initial Health"));
-	l->setWordWrap(true);
-	glBSLayout->addWidget(l,2,0,1,1);
-	l = new QLabel(gbBasicSettings);
-	l->setFixedSize(32,32);
-	l->setPixmap(QPixmap(":/res/iconHealth.png"));
-	glBSLayout->addWidget(l,2,1,1,1);
+    l = new QLabel(gbBasicSettings);
+    l->setText(QLabel::tr("Initial Health"));
+    l->setWordWrap(true);
+    glBSLayout->addWidget(l,2,0,1,1);
+    l = new QLabel(gbBasicSettings);
+    l->setFixedSize(32,32);
+    l->setPixmap(QPixmap(":/res/iconHealth.png"));
+    glBSLayout->addWidget(l,2,1,1,1);
 
-	SB_InitHealth = new QSpinBox(gbBasicSettings);
-	SB_InitHealth->setRange(50, 200);
-	SB_InitHealth->setValue(100);
-	SB_InitHealth->setSingleStep(25);
-	glBSLayout->addWidget(SB_InitHealth,2,2,1,1);
+    SB_InitHealth = new QSpinBox(gbBasicSettings);
+    SB_InitHealth->setRange(50, 200);
+    SB_InitHealth->setValue(100);
+    SB_InitHealth->setSingleStep(25);
+    glBSLayout->addWidget(SB_InitHealth,2,2,1,1);
 
-	l = new QLabel(gbBasicSettings);
-	l->setText(QLabel::tr("Sudden Death Timeout"));
-	l->setWordWrap(true);
-	glBSLayout->addWidget(l,3,0,1,1);
-	l = new QLabel(gbBasicSettings);
-	l->setFixedSize(32,32);
-	l->setPixmap(QPixmap(":/res/iconSuddenDeath.png"));
-	glBSLayout->addWidget(l,3,1,1,1);
+    l = new QLabel(gbBasicSettings);
+    l->setText(QLabel::tr("Sudden Death Timeout"));
+    l->setWordWrap(true);
+    glBSLayout->addWidget(l,3,0,1,1);
+    l = new QLabel(gbBasicSettings);
+    l->setFixedSize(32,32);
+    l->setPixmap(QPixmap(":/res/iconSuddenDeath.png"));
+    glBSLayout->addWidget(l,3,1,1,1);
 
-	SB_SuddenDeath = new QSpinBox(gbBasicSettings);
-	SB_SuddenDeath->setRange(0, 50);
-	SB_SuddenDeath->setValue(15);
-	SB_SuddenDeath->setSingleStep(3);
-	glBSLayout->addWidget(SB_SuddenDeath,3,2,1,1);
+    SB_SuddenDeath = new QSpinBox(gbBasicSettings);
+    SB_SuddenDeath->setRange(0, 50);
+    SB_SuddenDeath->setValue(15);
+    SB_SuddenDeath->setSingleStep(3);
+    glBSLayout->addWidget(SB_SuddenDeath,3,2,1,1);
 
-	l = new QLabel(gbBasicSettings);
-	l->setText(QLabel::tr("Crate Drops"));
-	l->setWordWrap(true);
-	glBSLayout->addWidget(l,4,0,1,1);
-	l = new QLabel(gbBasicSettings);
-	l->setFixedSize(32,32);
-	l->setPixmap(QPixmap(":/res/iconBox.png"));
-	glBSLayout->addWidget(l,4,1,1,1);
+    l = new QLabel(gbBasicSettings);
+    l->setText(QLabel::tr("Crate Drops"));
+    l->setWordWrap(true);
+    glBSLayout->addWidget(l,4,0,1,1);
+    l = new QLabel(gbBasicSettings);
+    l->setFixedSize(32,32);
+    l->setPixmap(QPixmap(":/res/iconBox.png"));
+    glBSLayout->addWidget(l,4,1,1,1);
 
-	SB_CaseProb = new FreqSpinBox(gbBasicSettings);
-	SB_CaseProb->setRange(0, 9);
-	SB_CaseProb->setValue(5);
-	glBSLayout->addWidget(SB_CaseProb,4,2,1,1);
+    SB_CaseProb = new FreqSpinBox(gbBasicSettings);
+    SB_CaseProb->setRange(0, 9);
+    SB_CaseProb->setValue(5);
+    glBSLayout->addWidget(SB_CaseProb,4,2,1,1);
 
-	l = new QLabel(gbBasicSettings);
-	l->setText(QLabel::tr("Mines Time"));
-	l->setWordWrap(true);
-	glBSLayout->addWidget(l,5,0,1,1);
-	l = new QLabel(gbBasicSettings);
-	l->setFixedSize(32,32);
-	l->setPixmap(QPixmap(":/res/iconTime.png")); // TODO: icon
-	glBSLayout->addWidget(l,5,1,1,1);
-	SB_MinesTime = new QSpinBox(gbBasicSettings);
-	SB_MinesTime->setRange(-1, 3);
-	SB_MinesTime->setValue(3);
-	SB_MinesTime->setSingleStep(1);
-	SB_MinesTime->setSpecialValueText(tr("Random"));
-	SB_MinesTime->setSuffix(" "+ tr("Seconds"));
-	glBSLayout->addWidget(SB_MinesTime,5,2,1,1);
+    l = new QLabel(gbBasicSettings);
+    l->setText(QLabel::tr("Mines Time"));
+    l->setWordWrap(true);
+    glBSLayout->addWidget(l,5,0,1,1);
+    l = new QLabel(gbBasicSettings);
+    l->setFixedSize(32,32);
+    l->setPixmap(QPixmap(":/res/iconTime.png")); // TODO: icon
+    glBSLayout->addWidget(l,5,1,1,1);
+    SB_MinesTime = new QSpinBox(gbBasicSettings);
+    SB_MinesTime->setRange(-1, 3);
+    SB_MinesTime->setValue(3);
+    SB_MinesTime->setSingleStep(1);
+    SB_MinesTime->setSpecialValueText(tr("Random"));
+    SB_MinesTime->setSuffix(" "+ tr("Seconds"));
+    glBSLayout->addWidget(SB_MinesTime,5,2,1,1);
 
-	l = new QLabel(gbBasicSettings);
-	l->setText(QLabel::tr("Mines"));
-	l->setWordWrap(true);
-	glBSLayout->addWidget(l,6,0,1,1);
-	l = new QLabel(gbBasicSettings);
-	l->setFixedSize(32,32);
-	l->setPixmap(QPixmap(":/res/iconMine.png")); // TODO: icon
-	glBSLayout->addWidget(l,6,1,1,1);
-	SB_Mines = new QSpinBox(gbBasicSettings);
-	SB_Mines->setRange(1, 80);
-	SB_Mines->setValue(1);
-	SB_Mines->setSingleStep(5);
-	glBSLayout->addWidget(SB_Mines,6,2,1,1);
+    l = new QLabel(gbBasicSettings);
+    l->setText(QLabel::tr("Mines"));
+    l->setWordWrap(true);
+    glBSLayout->addWidget(l,6,0,1,1);
+    l = new QLabel(gbBasicSettings);
+    l->setFixedSize(32,32);
+    l->setPixmap(QPixmap(":/res/iconMine.png")); // TODO: icon
+    glBSLayout->addWidget(l,6,1,1,1);
+    SB_Mines = new QSpinBox(gbBasicSettings);
+    SB_Mines->setRange(1, 80);
+    SB_Mines->setValue(1);
+    SB_Mines->setSingleStep(5);
+    glBSLayout->addWidget(SB_Mines,6,2,1,1);
 
-	l = new QLabel(gbBasicSettings);
-	l->setText(QLabel::tr("% Dud Mines"));
-	l->setWordWrap(true);
-	glBSLayout->addWidget(l,7,0,1,1);
-	l = new QLabel(gbBasicSettings);
-	l->setFixedSize(32,32);
-	l->setPixmap(QPixmap(":/res/iconMine.png"));
-	glBSLayout->addWidget(l,7,1,1,1);
-	SB_MineDuds = new QSpinBox(gbBasicSettings);
-	SB_MineDuds->setRange(0, 100);
-	SB_MineDuds->setValue(0);
-	SB_MineDuds->setSingleStep(5);
-	glBSLayout->addWidget(SB_MineDuds,7,2,1,1);
+    l = new QLabel(gbBasicSettings);
+    l->setText(QLabel::tr("% Dud Mines"));
+    l->setWordWrap(true);
+    glBSLayout->addWidget(l,7,0,1,1);
+    l = new QLabel(gbBasicSettings);
+    l->setFixedSize(32,32);
+    l->setPixmap(QPixmap(":/res/iconMine.png"));
+    glBSLayout->addWidget(l,7,1,1,1);
+    SB_MineDuds = new QSpinBox(gbBasicSettings);
+    SB_MineDuds->setRange(0, 100);
+    SB_MineDuds->setValue(0);
+    SB_MineDuds->setSingleStep(5);
+    glBSLayout->addWidget(SB_MineDuds,7,2,1,1);
 
 
-	l = new QLabel(gbBasicSettings);
-	l->setText(QLabel::tr("Explosives"));
-	l->setWordWrap(true);
-	glBSLayout->addWidget(l,8,0,1,1);
-	l = new QLabel(gbBasicSettings);
-	l->setFixedSize(32,32);
-	l->setPixmap(QPixmap(":/res/iconDamage.png"));
-	glBSLayout->addWidget(l,8,1,1,1);
-	SB_Explosives = new QSpinBox(gbBasicSettings);
-	SB_Explosives->setRange(0, 40);
-	SB_Explosives->setValue(0);
-	SB_Explosives->setSingleStep(1);
-	glBSLayout->addWidget(SB_Explosives,8,2,1,1);
+    l = new QLabel(gbBasicSettings);
+    l->setText(QLabel::tr("Explosives"));
+    l->setWordWrap(true);
+    glBSLayout->addWidget(l,8,0,1,1);
+    l = new QLabel(gbBasicSettings);
+    l->setFixedSize(32,32);
+    l->setPixmap(QPixmap(":/res/iconDamage.png"));
+    glBSLayout->addWidget(l,8,1,1,1);
+    SB_Explosives = new QSpinBox(gbBasicSettings);
+    SB_Explosives->setRange(0, 40);
+    SB_Explosives->setValue(0);
+    SB_Explosives->setSingleStep(1);
+    glBSLayout->addWidget(SB_Explosives,8,2,1,1);
 
 
-	l = new QLabel(gbBasicSettings);
-	l->setText(QLabel::tr("Scheme Name:"));
+    l = new QLabel(gbBasicSettings);
+    l->setText(QLabel::tr("Scheme Name:"));
 
-	LE_name = new QLineEdit(this);
+    LE_name = new QLineEdit(this);
 
-	gl->addWidget(LE_name,14,1,1,5);
-	gl->addWidget(l,14,0,1,1);
+    gl->addWidget(LE_name,14,1,1,5);
+    gl->addWidget(l,14,0,1,1);
 
-	mapper = new QDataWidgetMapper(this);
+    mapper = new QDataWidgetMapper(this);
 
-	BtnBack = addButton(":/res/Exit.png", pageLayout, 15, 0, true);
-	BtnNew = addButton(tr("New"), pageLayout, 15, 2);
-	BtnDelete = addButton(tr("Delete"), pageLayout, 15, 3);
+    BtnBack = addButton(":/res/Exit.png", pageLayout, 15, 0, true);
+    BtnNew = addButton(tr("New"), pageLayout, 15, 2);
+    BtnDelete = addButton(tr("Delete"), pageLayout, 15, 3);
 
-	selectScheme = new QComboBox(this);
-	pageLayout->addWidget(selectScheme, 15, 1);
+    selectScheme = new QComboBox(this);
+    pageLayout->addWidget(selectScheme, 15, 1);
 
-	connect(BtnNew, SIGNAL(clicked()), this, SLOT(newRow()));
-	connect(BtnDelete, SIGNAL(clicked()), this, SLOT(deleteRow()));
-	connect(selectScheme, SIGNAL(currentIndexChanged(int)), mapper, SLOT(setCurrentIndex(int)));
-	connect(selectScheme, SIGNAL(currentIndexChanged(int)), this, SLOT(schemeSelected(int)));
+    connect(BtnNew, SIGNAL(clicked()), this, SLOT(newRow()));
+    connect(BtnDelete, SIGNAL(clicked()), this, SLOT(deleteRow()));
+    connect(selectScheme, SIGNAL(currentIndexChanged(int)), mapper, SLOT(setCurrentIndex(int)));
+    connect(selectScheme, SIGNAL(currentIndexChanged(int)), this, SLOT(schemeSelected(int)));
 }
 
 void PageScheme::setModel(QAbstractItemModel * model)
 {
-	mapper->setModel(model);
-	selectScheme->setModel(model);
+    mapper->setModel(model);
+    selectScheme->setModel(model);
 
-	mapper->addMapping(LE_name, 0);
-	mapper->addMapping(TBW_mode_Forts->button(), 1);
-	mapper->addMapping(TBW_teamsDivide->button(), 2);
-	mapper->addMapping(TBW_solid->button(), 3);
-	mapper->addMapping(TBW_border->button(), 4);
-	mapper->addMapping(TBW_lowGravity->button(), 5);
-	mapper->addMapping(TBW_laserSight->button(), 6);
-	mapper->addMapping(TBW_invulnerable->button(), 7);
-	mapper->addMapping(TBW_mines->button(), 8);
-	mapper->addMapping(TBW_vampiric->button(), 9);
-	mapper->addMapping(TBW_karma->button(), 10);
-	mapper->addMapping(TBW_artillery->button(), 11);
-	mapper->addMapping(TBW_randomorder->button(), 12);
-	mapper->addMapping(TBW_king->button(), 13);
-	mapper->addMapping(TBW_placehog->button(), 14);
-	mapper->addMapping(TBW_sharedammo->button(), 15);
-	mapper->addMapping(TBW_disablegirders->button(), 16);
-	mapper->addMapping(SB_DamageModifier, 17);
-	mapper->addMapping(SB_TurnTime, 18);
-	mapper->addMapping(SB_InitHealth, 19);
-	mapper->addMapping(SB_SuddenDeath, 20);
-	mapper->addMapping(SB_CaseProb, 21);
-	mapper->addMapping(SB_MinesTime, 22);
-	mapper->addMapping(SB_Mines, 23);
-	mapper->addMapping(SB_MineDuds, 24);
-	mapper->addMapping(SB_Explosives, 25);
+    mapper->addMapping(LE_name, 0);
+    mapper->addMapping(TBW_mode_Forts->button(), 1);
+    mapper->addMapping(TBW_teamsDivide->button(), 2);
+    mapper->addMapping(TBW_solid->button(), 3);
+    mapper->addMapping(TBW_border->button(), 4);
+    mapper->addMapping(TBW_lowGravity->button(), 5);
+    mapper->addMapping(TBW_laserSight->button(), 6);
+    mapper->addMapping(TBW_invulnerable->button(), 7);
+    mapper->addMapping(TBW_mines->button(), 8);
+    mapper->addMapping(TBW_vampiric->button(), 9);
+    mapper->addMapping(TBW_karma->button(), 10);
+    mapper->addMapping(TBW_artillery->button(), 11);
+    mapper->addMapping(TBW_randomorder->button(), 12);
+    mapper->addMapping(TBW_king->button(), 13);
+    mapper->addMapping(TBW_placehog->button(), 14);
+    mapper->addMapping(TBW_sharedammo->button(), 15);
+    mapper->addMapping(TBW_disablegirders->button(), 16);
+    mapper->addMapping(SB_DamageModifier, 17);
+    mapper->addMapping(SB_TurnTime, 18);
+    mapper->addMapping(SB_InitHealth, 19);
+    mapper->addMapping(SB_SuddenDeath, 20);
+    mapper->addMapping(SB_CaseProb, 21);
+    mapper->addMapping(SB_MinesTime, 22);
+    mapper->addMapping(SB_Mines, 23);
+    mapper->addMapping(SB_MineDuds, 24);
+    mapper->addMapping(SB_Explosives, 25);
 
-	mapper->toFirst();
+    mapper->toFirst();
 }
 
 void PageScheme::newRow()
 {
-	QAbstractItemModel * model = mapper->model();
-	model->insertRow(model->rowCount());
-	selectScheme->setCurrentIndex(model->rowCount() - 1);
+    QAbstractItemModel * model = mapper->model();
+    model->insertRow(model->rowCount());
+    selectScheme->setCurrentIndex(model->rowCount() - 1);
 }
 
 void PageScheme::deleteRow()
 {
-	QAbstractItemModel * model = mapper->model();
-	model->removeRow(selectScheme->currentIndex());
+    QAbstractItemModel * model = mapper->model();
+    model->removeRow(selectScheme->currentIndex());
 }
 
 void PageScheme::schemeSelected(int n)
 {
-	gbGameModes->setEnabled(n >= 5); // FIXME: derive number from model
-	gbBasicSettings->setEnabled(n >= 5);
-	LE_name->setEnabled(n >= 5);
+    gbGameModes->setEnabled(n >= 5); // FIXME: derive number from model
+    gbBasicSettings->setEnabled(n >= 5);
+    LE_name->setEnabled(n >= 5);
 }
 
 /////////////////////////////////////////////////
 
 PageAdmin::PageAdmin(QWidget* parent) :
-	AbstractPage(parent)
+    AbstractPage(parent)
 {
-	QGridLayout * pageLayout = new QGridLayout(this);
+    QGridLayout * pageLayout = new QGridLayout(this);
 
-	QLabel * lblSM = new QLabel(this);
-	lblSM->setText(tr("Server message:"));
-	pageLayout->addWidget(lblSM, 0, 0);
+    QLabel * lblSM = new QLabel(this);
+    lblSM->setText(tr("Server message:"));
+    pageLayout->addWidget(lblSM, 0, 0);
 
-	leServerMessage = new QLineEdit(this);
-	pageLayout->addWidget(leServerMessage, 0, 1);
+    leServerMessage = new QLineEdit(this);
+    pageLayout->addWidget(leServerMessage, 0, 1);
 
-	pbSetSM = addButton(tr("Set message"), pageLayout, 0, 2);
-	pbClearAccountsCache = addButton(tr("Clear Accounts Cache"), pageLayout, 1, 0);
+    pbSetSM = addButton(tr("Set message"), pageLayout, 0, 2);
+    pbClearAccountsCache = addButton(tr("Clear Accounts Cache"), pageLayout, 1, 0);
 
-	BtnBack = addButton(":/res/Exit.png", pageLayout, 2, 0, true);
+    BtnBack = addButton(":/res/Exit.png", pageLayout, 2, 0, true);
 
-	connect(pbSetSM, SIGNAL(clicked()), this, SLOT(smChanged()));
+    connect(pbSetSM, SIGNAL(clicked()), this, SLOT(smChanged()));
 }
 
 void PageAdmin::smChanged()
 {
-	emit setServerMessage(leServerMessage->text());
+    emit setServerMessage(leServerMessage->text());
 }
 
 void PageAdmin::serverMessage(const QString & str)
 {
-	leServerMessage->setText(str);
+    leServerMessage->setText(str);
 }
 
 /////////////////////////////////////////////////
 
 PageNetType::PageNetType(QWidget* parent) : AbstractPage(parent)
 {
-	QGridLayout * pageLayout = new QGridLayout(this);
-	pageLayout->setRowStretch(0, 10);
-	pageLayout->setRowStretch(3, 10);
+    QGridLayout * pageLayout = new QGridLayout(this);
+    pageLayout->setRowStretch(0, 10);
+    pageLayout->setRowStretch(3, 10);
 
-	pageLayout->setColumnStretch(1, 10);
-	pageLayout->setColumnStretch(2, 20);
-	pageLayout->setColumnStretch(3, 10);
+    pageLayout->setColumnStretch(1, 10);
+    pageLayout->setColumnStretch(2, 20);
+    pageLayout->setColumnStretch(3, 10);
 
-	BtnLAN = addButton(tr("LAN game"), pageLayout, 1, 2);
-	BtnOfficialServer = addButton(tr("Official server"), pageLayout, 2, 2);
+    BtnLAN = addButton(tr("LAN game"), pageLayout, 1, 2);
+    BtnOfficialServer = addButton(tr("Official server"), pageLayout, 2, 2);
 
-	// hack: temporary deactivated - requires server modifications that aren't backward compatible (yet)
-	//BtnOfficialServer->setEnabled(false);
+    // hack: temporary deactivated - requires server modifications that aren't backward compatible (yet)
+    //BtnOfficialServer->setEnabled(false);
 
-	BtnBack = addButton(":/res/Exit.png", pageLayout, 4, 0, true);
+    BtnBack = addButton(":/res/Exit.png", pageLayout, 4, 0, true);
 }
--- a/QTfrontend/pages.h	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/pages.h	Sat Mar 06 10:59:20 2010 +0000
@@ -62,7 +62,7 @@
 
 class AbstractPage : public QWidget
 {
-	Q_OBJECT
+    Q_OBJECT
 
  public:
 
@@ -132,375 +132,375 @@
 
 class PageMain : public AbstractPage
 {
-	Q_OBJECT
+    Q_OBJECT
 
 public:
-	PageMain(QWidget* parent = 0);
+    PageMain(QWidget* parent = 0);
 
-	QPushButton *BtnSinglePlayer;
-	QPushButton *BtnNet;
-	QPushButton *BtnSetup;
-	QPushButton *BtnInfo;
-	QPushButton *BtnExit;
+    QPushButton *BtnSinglePlayer;
+    QPushButton *BtnNet;
+    QPushButton *BtnSetup;
+    QPushButton *BtnInfo;
+    QPushButton *BtnExit;
 };
 
 class PageEditTeam : public AbstractPage
 {
-	Q_OBJECT
+    Q_OBJECT
 
 public:
-	PageEditTeam(QWidget* parent, SDLInteraction * sdli);
-	QSignalMapper* signalMapper;
-	QGroupBox *GBoxHedgehogs;
-	QGroupBox *GBoxTeam;
-	QGroupBox *GBoxFort;
-	QComboBox *CBFort;
-	SquareLabel *FortPreview;
-	QComboBox *CBGrave;
-	QComboBox *CBFlag;
-	QComboBox *CBTeamLvl;
-	QComboBox *CBVoicepack;
-	QGroupBox *GBoxBinds;
-	QToolBox *BindsBox;
-	QPushButton *BtnTeamDiscard;
-	QPushButton *BtnTeamSave;
-	QPushButton * BtnTestSound;
-	QLineEdit * TeamNameEdit;
-	QLineEdit * HHNameEdit[8];
-	QComboBox * HHHats[8];
-	QPushButton * randButton[8];
-	QComboBox * CBBind[BINDS_NUMBER];
-	QPushButton * randTeamButton;
+    PageEditTeam(QWidget* parent, SDLInteraction * sdli);
+    QSignalMapper* signalMapper;
+    QGroupBox *GBoxHedgehogs;
+    QGroupBox *GBoxTeam;
+    QGroupBox *GBoxFort;
+    QComboBox *CBFort;
+    SquareLabel *FortPreview;
+    QComboBox *CBGrave;
+    QComboBox *CBFlag;
+    QComboBox *CBTeamLvl;
+    QComboBox *CBVoicepack;
+    QGroupBox *GBoxBinds;
+    QToolBox *BindsBox;
+    QPushButton *BtnTeamDiscard;
+    QPushButton *BtnTeamSave;
+    QPushButton * BtnTestSound;
+    QLineEdit * TeamNameEdit;
+    QLineEdit * HHNameEdit[8];
+    QComboBox * HHHats[8];
+    QPushButton * randButton[8];
+    QComboBox * CBBind[BINDS_NUMBER];
+    QPushButton * randTeamButton;
 
 private:
     SDLInteraction * mySdli;
 
 public slots:
-	void CBFort_activated(const QString & gravename);
+    void CBFort_activated(const QString & gravename);
 
 private slots:
-	void testSound();
+    void testSound();
 };
 
 class PageMultiplayer : public AbstractPage
 {
-	Q_OBJECT
+    Q_OBJECT
 
 public:
-	PageMultiplayer(QWidget* parent = 0);
+    PageMultiplayer(QWidget* parent = 0);
 
-	QPushButton *BtnBack;
-	GameCFGWidget *gameCFG;
-	TeamSelWidget *teamsSelect;
-	QPushButton *BtnStartMPGame;
+    QPushButton *BtnBack;
+    GameCFGWidget *gameCFG;
+    TeamSelWidget *teamsSelect;
+    QPushButton *BtnStartMPGame;
 };
 
 class PageOptions : public AbstractPage
 {
-	Q_OBJECT
+    Q_OBJECT
 
 public:
-	PageOptions(QWidget* parent = 0);
+    PageOptions(QWidget* parent = 0);
 
-	QPushButton *WeaponsButt;
-	QPushButton *WeaponEdit;
-	QComboBox *WeaponsName;
-	QCheckBox *WeaponTooltip;
-	QComboBox *CBLanguage;
+    QPushButton *WeaponsButt;
+    QPushButton *WeaponEdit;
+    QComboBox *WeaponsName;
+    QCheckBox *WeaponTooltip;
+    QComboBox *CBLanguage;
 
-	QPushButton *BtnBack;
-	IconedGroupBox *teamsBox;
-	QPushButton *BtnNewTeam;
-	QPushButton *BtnEditTeam;
-	QComboBox *CBTeamName;
-	IconedGroupBox *AGGroupBox;
-	QComboBox *CBResolution;
-	QCheckBox *CBEnableSound;
-	QCheckBox *CBEnableFrontendSound;
+    QPushButton *BtnBack;
+    IconedGroupBox *teamsBox;
+    QPushButton *BtnNewTeam;
+    QPushButton *BtnEditTeam;
+    QComboBox *CBTeamName;
+    IconedGroupBox *AGGroupBox;
+    QComboBox *CBResolution;
+    QCheckBox *CBEnableSound;
+    QCheckBox *CBEnableFrontendSound;
 #ifdef _WIN32
-	QCheckBox *CBHardwareSound;
+    QCheckBox *CBHardwareSound;
 #endif
-	QCheckBox *CBEnableMusic;
-	QCheckBox *CBEnableFrontendMusic;
-	QCheckBox *CBFullscreen;
-	QCheckBox *CBFrontendFullscreen;
-	QCheckBox *CBShowFPS;
-	QCheckBox *CBAltDamage;
-	QCheckBox *CBNameWithDate;
+    QCheckBox *CBEnableMusic;
+    QCheckBox *CBEnableFrontendMusic;
+    QCheckBox *CBFullscreen;
+    QCheckBox *CBFrontendFullscreen;
+    QCheckBox *CBShowFPS;
+    QCheckBox *CBAltDamage;
+    QCheckBox *CBNameWithDate;
 #ifdef __APPLE__
     QCheckBox *CBAutoUpdate;
 #endif
 
-	FPSEdit *fpsedit;
-	QPushButton *BtnSaveOptions;
-	QLabel *labelNN;
-	QSpinBox * volumeBox;
-	QLineEdit *editNetNick;
-	QCheckBox *CBReduceQuality;
-	QCheckBox *CBFrontendEffects;
+    FPSEdit *fpsedit;
+    QPushButton *BtnSaveOptions;
+    QLabel *labelNN;
+    QSpinBox * volumeBox;
+    QLineEdit *editNetNick;
+    QCheckBox *CBReduceQuality;
+    QCheckBox *CBFrontendEffects;
 };
 
 class PageNet : public AbstractPage
 {
-	Q_OBJECT
+    Q_OBJECT
 
 public:
-	PageNet(QWidget* parent = 0);
+    PageNet(QWidget* parent = 0);
 
-	QPushButton* BtnUpdateSList;
-	QTableView * tvServersList;
-	QPushButton * BtnBack;
-	QPushButton * BtnNetConnect;
-	QPushButton * BtnNetSvrStart;
-	QPushButton * BtnSpecifyServer;
+    QPushButton* BtnUpdateSList;
+    QTableView * tvServersList;
+    QPushButton * BtnBack;
+    QPushButton * BtnNetConnect;
+    QPushButton * BtnNetSvrStart;
+    QPushButton * BtnSpecifyServer;
 
 private:
-	QGroupBox * ConnGroupBox;
-	QGridLayout * GBClayout;
+    QGroupBox * ConnGroupBox;
+    QGridLayout * GBClayout;
 
 private slots:
-	void slotConnect();
+    void slotConnect();
 
 public slots:
-	void updateServersList();
+    void updateServersList();
 
 signals:
-	void connectClicked(const QString & host, quint16 port);
+    void connectClicked(const QString & host, quint16 port);
 };
 
 class PageNetServer : public AbstractPage
 {
-	Q_OBJECT
+    Q_OBJECT
 
 public:
-	PageNetServer(QWidget* parent = 0);
+    PageNetServer(QWidget* parent = 0);
 
-	QPushButton *BtnBack;
-	QPushButton *BtnStart;
-	QPushButton *BtnDefault;
-	QLabel *labelSD;
-	QLineEdit *leServerDescr;
-	QLabel *labelPort;
-	QSpinBox *sbPort;
+    QPushButton *BtnBack;
+    QPushButton *BtnStart;
+    QPushButton *BtnDefault;
+    QLabel *labelSD;
+    QLineEdit *leServerDescr;
+    QLabel *labelPort;
+    QSpinBox *sbPort;
 
 private slots:
-	void setDefaultPort();
+    void setDefaultPort();
 };
 
 class PageNetGame : public AbstractPage
 {
-	Q_OBJECT
+    Q_OBJECT
 
 public:
-	PageNetGame(QWidget* parent, QSettings * config, SDLInteraction * sdli);
+    PageNetGame(QWidget* parent, QSettings * config, SDLInteraction * sdli);
 
-	QPushButton *BtnBack;
-	QPushButton *BtnGo;
-	QPushButton *BtnMaster;
-	QPushButton *BtnStart;
+    QPushButton *BtnBack;
+    QPushButton *BtnGo;
+    QPushButton *BtnMaster;
+    QPushButton *BtnStart;
 
-	QAction * restrictJoins;
-	QAction * restrictTeamAdds;
+    QAction * restrictJoins;
+    QAction * restrictTeamAdds;
 
-	HWChatWidget* pChatWidget;
+    HWChatWidget* pChatWidget;
 
-	TeamSelWidget* pNetTeamsWidget;
-	GameCFGWidget* pGameCFG;
+    TeamSelWidget* pNetTeamsWidget;
+    GameCFGWidget* pGameCFG;
 
 public slots:
-	void setReadyStatus(bool isReady);
-	void setMasterMode(bool isMaster);
+    void setReadyStatus(bool isReady);
+    void setMasterMode(bool isMaster);
 };
 
 class PageInfo : public AbstractPage
 {
-	Q_OBJECT
+    Q_OBJECT
 
 public:
-	PageInfo(QWidget* parent = 0);
+    PageInfo(QWidget* parent = 0);
 
-	QPushButton *BtnBack;
-	About *about;
+    QPushButton *BtnBack;
+    About *about;
 };
 
 class PageSinglePlayer : public AbstractPage
 {
-	Q_OBJECT
+    Q_OBJECT
 
 public:
-	PageSinglePlayer(QWidget* parent = 0);
+    PageSinglePlayer(QWidget* parent = 0);
 
-	QPushButton *BtnSimpleGamePage;
-	QPushButton *BtnTrainPage;
-	QPushButton *BtnMultiplayer;
-	QPushButton *BtnLoad;
-	QPushButton *BtnDemos;
-	QPushButton *BtnBack;
-	GameCFGWidget *gameCFG;
+    QPushButton *BtnSimpleGamePage;
+    QPushButton *BtnTrainPage;
+    QPushButton *BtnMultiplayer;
+    QPushButton *BtnLoad;
+    QPushButton *BtnDemos;
+    QPushButton *BtnBack;
+    GameCFGWidget *gameCFG;
 };
 
 class PageTraining : public AbstractPage
 {
-	Q_OBJECT
+    Q_OBJECT
 
 public:
-	PageTraining(QWidget* parent = 0);
+    PageTraining(QWidget* parent = 0);
 
-	QPushButton *BtnStartTrain;
-	QPushButton *BtnBack;
-	QComboBox   *CBSelect;
+    QPushButton *BtnStartTrain;
+    QPushButton *BtnBack;
+    QComboBox   *CBSelect;
 };
 
 class PageSelectWeapon : public AbstractPage
 {
-	Q_OBJECT
+    Q_OBJECT
 
 public:
-	PageSelectWeapon(QWidget* parent = 0);
+    PageSelectWeapon(QWidget* parent = 0);
 
-	QPushButton *BtnSave;
-	QPushButton *BtnDefault;
-	QPushButton *BtnDelete;
-	QPushButton *BtnBack;
-	SelWeaponWidget* pWeapons;
+    QPushButton *BtnSave;
+    QPushButton *BtnDefault;
+    QPushButton *BtnDelete;
+    QPushButton *BtnBack;
+    SelWeaponWidget* pWeapons;
 };
 
 class PageInGame : public AbstractPage
 {
-	Q_OBJECT
+    Q_OBJECT
 
 public:
-	PageInGame(QWidget* parent = 0);
+    PageInGame(QWidget* parent = 0);
 };
 
 class PageRoomsList : public AbstractPage
 {
-	Q_OBJECT
+    Q_OBJECT
 
 public:
     PageRoomsList(QWidget* parent, QSettings * config, SDLInteraction * sdli);
 
-	QLineEdit * roomName;
-	QTableWidget * roomsList;
-	QPushButton * BtnBack;
-	QPushButton * BtnCreate;
-	QPushButton * BtnJoin;
-	QPushButton * BtnRefresh;
-	QPushButton * BtnAdmin;
-	HWChatWidget * chatWidget;
+    QLineEdit * roomName;
+    QTableWidget * roomsList;
+    QPushButton * BtnBack;
+    QPushButton * BtnCreate;
+    QPushButton * BtnJoin;
+    QPushButton * BtnRefresh;
+    QPushButton * BtnAdmin;
+    HWChatWidget * chatWidget;
 
 public slots:
-	void setRoomsList(const QStringList & list);
-	void setAdmin(bool);
+    void setRoomsList(const QStringList & list);
+    void setAdmin(bool);
 
 private slots:
-	void onCreateClick();
-	void onJoinClick();
-	void onRefreshClick();
+    void onCreateClick();
+    void onJoinClick();
+    void onRefreshClick();
 
 signals:
-	void askForCreateRoom(const QString &);
-	void askForJoinRoom(const QString &);
-	void askForRoomList();
+    void askForCreateRoom(const QString &);
+    void askForJoinRoom(const QString &);
+    void askForRoomList();
 };
 
 class PageConnecting : public AbstractPage
 {
-	Q_OBJECT
+    Q_OBJECT
 
 public:
-	PageConnecting(QWidget* parent = 0);
+    PageConnecting(QWidget* parent = 0);
 };
 
 class PageScheme : public AbstractPage
 {
-	Q_OBJECT
+    Q_OBJECT
 
 public:
-	PageScheme(QWidget* parent = 0);
+    PageScheme(QWidget* parent = 0);
 
-	QPushButton * BtnBack;
-	QPushButton * BtnNew;
-	QPushButton * BtnDelete;
-	QPushButton * BtnSave;
+    QPushButton * BtnBack;
+    QPushButton * BtnNew;
+    QPushButton * BtnDelete;
+    QPushButton * BtnSave;
 
-	void setModel(QAbstractItemModel * model);
+    void setModel(QAbstractItemModel * model);
 
 private:
-	QDataWidgetMapper * mapper;
-	ToggleButtonWidget * TBW_mode_Forts;
-	ToggleButtonWidget * TBW_teamsDivide;
-	ToggleButtonWidget * TBW_solid;
-	ToggleButtonWidget * TBW_border;
-	ToggleButtonWidget * TBW_lowGravity;
-	ToggleButtonWidget * TBW_laserSight;
-	ToggleButtonWidget * TBW_invulnerable;
-	ToggleButtonWidget * TBW_mines;
-	ToggleButtonWidget * TBW_vampiric;
-	ToggleButtonWidget * TBW_karma;
-	ToggleButtonWidget * TBW_artillery;
-	ToggleButtonWidget * TBW_randomorder;
-	ToggleButtonWidget * TBW_king;
-	ToggleButtonWidget * TBW_placehog;
-	ToggleButtonWidget * TBW_sharedammo;
-	ToggleButtonWidget * TBW_disablegirders;
+    QDataWidgetMapper * mapper;
+    ToggleButtonWidget * TBW_mode_Forts;
+    ToggleButtonWidget * TBW_teamsDivide;
+    ToggleButtonWidget * TBW_solid;
+    ToggleButtonWidget * TBW_border;
+    ToggleButtonWidget * TBW_lowGravity;
+    ToggleButtonWidget * TBW_laserSight;
+    ToggleButtonWidget * TBW_invulnerable;
+    ToggleButtonWidget * TBW_mines;
+    ToggleButtonWidget * TBW_vampiric;
+    ToggleButtonWidget * TBW_karma;
+    ToggleButtonWidget * TBW_artillery;
+    ToggleButtonWidget * TBW_randomorder;
+    ToggleButtonWidget * TBW_king;
+    ToggleButtonWidget * TBW_placehog;
+    ToggleButtonWidget * TBW_sharedammo;
+    ToggleButtonWidget * TBW_disablegirders;
 
-	QSpinBox * SB_DamageModifier;
-	QSpinBox * SB_TurnTime;
-	QSpinBox * SB_InitHealth;
-	QSpinBox * SB_SuddenDeath;
-	FreqSpinBox * SB_CaseProb;
-	QSpinBox * SB_MinesTime;
-	QSpinBox * SB_Mines;
-	QSpinBox * SB_MineDuds;
-	QSpinBox * SB_Explosives;
-	QLineEdit * LE_name;
-	QComboBox * selectScheme;
+    QSpinBox * SB_DamageModifier;
+    QSpinBox * SB_TurnTime;
+    QSpinBox * SB_InitHealth;
+    QSpinBox * SB_SuddenDeath;
+    FreqSpinBox * SB_CaseProb;
+    QSpinBox * SB_MinesTime;
+    QSpinBox * SB_Mines;
+    QSpinBox * SB_MineDuds;
+    QSpinBox * SB_Explosives;
+    QLineEdit * LE_name;
+    QComboBox * selectScheme;
 
-	QGroupBox * gbGameModes;
-	QGroupBox * gbBasicSettings;
+    QGroupBox * gbGameModes;
+    QGroupBox * gbBasicSettings;
 
 private slots:
-	void newRow();
-	void deleteRow();
-	void schemeSelected(int);
+    void newRow();
+    void deleteRow();
+    void schemeSelected(int);
 };
 
 class PageAdmin : public AbstractPage
 {
-	Q_OBJECT
+    Q_OBJECT
 
 public:
-	PageAdmin(QWidget* parent = 0);
+    PageAdmin(QWidget* parent = 0);
 
-	QPushButton * BtnBack;
-	QPushButton * pbClearAccountsCache;
+    QPushButton * BtnBack;
+    QPushButton * pbClearAccountsCache;
 
 private:
-	QLineEdit * leServerMessage;
-	QPushButton * pbSetSM;
+    QLineEdit * leServerMessage;
+    QPushButton * pbSetSM;
 
 private slots:
-	void smChanged();
+    void smChanged();
 
 public slots:
-	void serverMessage(const QString & str);
+    void serverMessage(const QString & str);
 
 signals:
-	void setServerMessage(const QString & str);
+    void setServerMessage(const QString & str);
 };
 
 
 class PageNetType : public AbstractPage
 {
-	Q_OBJECT
+    Q_OBJECT
 
 public:
-	PageNetType(QWidget* parent = 0);
+    PageNetType(QWidget* parent = 0);
 
-	QPushButton * BtnBack;
-	QPushButton * BtnLAN;
-	QPushButton * BtnOfficialServer;
+    QPushButton * BtnBack;
+    QPushButton * BtnLAN;
+    QPushButton * BtnOfficialServer;
 };
 
 #endif // PAGES_H
--- a/QTfrontend/playrecordpage.cpp	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/playrecordpage.cpp	Sat Mar 06 10:59:20 2010 +0000
@@ -30,123 +30,123 @@
 
 PagePlayDemo::PagePlayDemo(QWidget* parent) : AbstractPage(parent)
 {
-	QFont * font14 = new QFont("MS Shell Dlg", 14);
-	QGridLayout * pageLayout = new QGridLayout(this);
-	pageLayout->setColumnStretch(0, 1);
-	pageLayout->setColumnStretch(1, 2);
-	pageLayout->setColumnStretch(2, 1);
-	pageLayout->setRowStretch(2, 100);
+    QFont * font14 = new QFont("MS Shell Dlg", 14);
+    QGridLayout * pageLayout = new QGridLayout(this);
+    pageLayout->setColumnStretch(0, 1);
+    pageLayout->setColumnStretch(1, 2);
+    pageLayout->setColumnStretch(2, 1);
+    pageLayout->setRowStretch(2, 100);
 
-	BtnBack = addButton(":/res/Exit.png", pageLayout, 3, 0, true);
+    BtnBack = addButton(":/res/Exit.png", pageLayout, 3, 0, true);
 
-	BtnPlayDemo = new QPushButton(this);
-	BtnPlayDemo->setFont(*font14);
-	BtnPlayDemo->setText(QPushButton::tr("Play demo"));
-	pageLayout->addWidget(BtnPlayDemo, 3, 2);
+    BtnPlayDemo = new QPushButton(this);
+    BtnPlayDemo->setFont(*font14);
+    BtnPlayDemo->setText(QPushButton::tr("Play demo"));
+    pageLayout->addWidget(BtnPlayDemo, 3, 2);
 
-	BtnRenameRecord = new QPushButton(this);
-	BtnRenameRecord->setText(QPushButton::tr("Rename"));
-	pageLayout->addWidget(BtnRenameRecord, 0, 2);
+    BtnRenameRecord = new QPushButton(this);
+    BtnRenameRecord->setText(QPushButton::tr("Rename"));
+    pageLayout->addWidget(BtnRenameRecord, 0, 2);
 
-	BtnRemoveRecord = new QPushButton(this);
-	BtnRemoveRecord->setText(QPushButton::tr("Delete"));
-	pageLayout->addWidget(BtnRemoveRecord, 1, 2);
+    BtnRemoveRecord = new QPushButton(this);
+    BtnRemoveRecord->setText(QPushButton::tr("Delete"));
+    pageLayout->addWidget(BtnRemoveRecord, 1, 2);
 
-	DemosList = new QListWidget(this);
-	DemosList->setGeometry(QRect(170, 10, 311, 311));
-	pageLayout->addWidget(DemosList, 0, 1, 3, 1);
+    DemosList = new QListWidget(this);
+    DemosList->setGeometry(QRect(170, 10, 311, 311));
+    pageLayout->addWidget(DemosList, 0, 1, 3, 1);
 
-	connect(BtnRenameRecord, SIGNAL(clicked()), this, SLOT(renameRecord()));
-	connect(BtnRemoveRecord, SIGNAL(clicked()), this, SLOT(removeRecord()));
+    connect(BtnRenameRecord, SIGNAL(clicked()), this, SLOT(renameRecord()));
+    connect(BtnRemoveRecord, SIGNAL(clicked()), this, SLOT(removeRecord()));
 }
 
 void PagePlayDemo::FillFromDir(RecordType rectype)
 {
-	QDir dir;
-	QString extension;
+    QDir dir;
+    QString extension;
 
-	recType = rectype;
+    recType = rectype;
 
-	dir.cd(cfgdir->absolutePath());
-	if (rectype == RT_Demo)
-	{
-		dir.cd("Demos");
-		extension = "hwd";
-		BtnPlayDemo->setText(QPushButton::tr("Play demo"));
-	} else
-	{
-		dir.cd("Saves");
-		extension = "hws";
-		BtnPlayDemo->setText(QPushButton::tr("Load"));
-	}
-	dir.setFilter(QDir::Files);
+    dir.cd(cfgdir->absolutePath());
+    if (rectype == RT_Demo)
+    {
+        dir.cd("Demos");
+        extension = "hwd";
+        BtnPlayDemo->setText(QPushButton::tr("Play demo"));
+    } else
+    {
+        dir.cd("Saves");
+        extension = "hws";
+        BtnPlayDemo->setText(QPushButton::tr("Load"));
+    }
+    dir.setFilter(QDir::Files);
 
-	QStringList sl = dir.entryList(QStringList(QString("*.%2.%1").arg(extension, *cProtoVer)));
-	sl.replaceInStrings(QRegExp(QString("^(.*)\\.%2\\.%1$").arg(extension, *cProtoVer)), "\\1");
+    QStringList sl = dir.entryList(QStringList(QString("*.%2.%1").arg(extension, *cProtoVer)));
+    sl.replaceInStrings(QRegExp(QString("^(.*)\\.%2\\.%1$").arg(extension, *cProtoVer)), "\\1");
 
-	DemosList->clear();
-	DemosList->addItems(sl);
+    DemosList->clear();
+    DemosList->addItems(sl);
 
-	for (int i = 0; i < DemosList->count(); ++i)
-	{
-		DemosList->item(i)->setData(Qt::UserRole, dir.absoluteFilePath(QString("%1.%3.%2").arg(sl[i], extension, *cProtoVer)));
-		DemosList->item(i)->setIcon(recType == RT_Demo ? QIcon(":/res/file_demo.png") : QIcon(":/res/file_save.png"));
-	}
+    for (int i = 0; i < DemosList->count(); ++i)
+    {
+        DemosList->item(i)->setData(Qt::UserRole, dir.absoluteFilePath(QString("%1.%3.%2").arg(sl[i], extension, *cProtoVer)));
+        DemosList->item(i)->setIcon(recType == RT_Demo ? QIcon(":/res/file_demo.png") : QIcon(":/res/file_save.png"));
+    }
 }
 
 void PagePlayDemo::renameRecord()
 {
-	QListWidgetItem * curritem = DemosList->currentItem();
-	if (!curritem)
-	{
-		QMessageBox::critical(this,
-				tr("Error"),
-				tr("Please select record from the list"),
-				tr("OK"));
-		return ;
-	}
-	QFile rfile(curritem->data(Qt::UserRole).toString());
+    QListWidgetItem * curritem = DemosList->currentItem();
+    if (!curritem)
+    {
+        QMessageBox::critical(this,
+                tr("Error"),
+                tr("Please select record from the list"),
+                tr("OK"));
+        return ;
+    }
+    QFile rfile(curritem->data(Qt::UserRole).toString());
 
-	QFileInfo finfo(rfile);
+    QFileInfo finfo(rfile);
 
-	bool ok;
+    bool ok;
 
-	QString newname = QInputDialog::getText(this, tr("Rename dialog"), tr("Enter new file name:"), QLineEdit::Normal, finfo.completeBaseName().replace("." + *cProtoVer, ""), &ok);
+    QString newname = QInputDialog::getText(this, tr("Rename dialog"), tr("Enter new file name:"), QLineEdit::Normal, finfo.completeBaseName().replace("." + *cProtoVer, ""), &ok);
 
-	if(ok && newname.size())
-	{
-		QString newfullname = QString("%1/%2.%3.%4")
-		                              .arg(finfo.absolutePath())
-		                              .arg(newname)
-									  .arg(*cProtoVer)
-		                              .arg(finfo.suffix());
+    if(ok && newname.size())
+    {
+        QString newfullname = QString("%1/%2.%3.%4")
+                                      .arg(finfo.absolutePath())
+                                      .arg(newname)
+                                      .arg(*cProtoVer)
+                                      .arg(finfo.suffix());
 
-		ok = rfile.rename(newfullname);
-		if(!ok)
-			QMessageBox::critical(this, tr("Error"), tr("Cannot rename to") + newfullname);
-		else
-			FillFromDir(recType);
-	}
+        ok = rfile.rename(newfullname);
+        if(!ok)
+            QMessageBox::critical(this, tr("Error"), tr("Cannot rename to") + newfullname);
+        else
+            FillFromDir(recType);
+    }
 }
 
 void PagePlayDemo::removeRecord()
 {
-	QListWidgetItem * curritem = DemosList->currentItem();
-	if (!curritem)
-	{
-		QMessageBox::critical(this,
-				tr("Error"),
-				tr("Please select record from the list"),
-				tr("OK"));
-		return ;
-	}
-	QFile rfile(curritem->data(Qt::UserRole).toString());
+    QListWidgetItem * curritem = DemosList->currentItem();
+    if (!curritem)
+    {
+        QMessageBox::critical(this,
+                tr("Error"),
+                tr("Please select record from the list"),
+                tr("OK"));
+        return ;
+    }
+    QFile rfile(curritem->data(Qt::UserRole).toString());
 
-	bool ok;
+    bool ok;
 
-	ok = rfile.remove();
-	if(!ok)
-		QMessageBox::critical(this, tr("Error"), tr("Cannot delete file"));
-	else
-		FillFromDir(recType);
+    ok = rfile.remove();
+    if(!ok)
+        QMessageBox::critical(this, tr("Error"), tr("Cannot delete file"));
+    else
+        FillFromDir(recType);
 }
--- a/QTfrontend/playrecordpage.h	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/playrecordpage.h	Sat Mar 06 10:59:20 2010 +0000
@@ -28,30 +28,30 @@
 
 class PagePlayDemo : public AbstractPage
 {
-	Q_OBJECT
+    Q_OBJECT
 
 public:
-	enum RecordType {
-		RT_Demo,
-		RT_Save
-	};
+    enum RecordType {
+        RT_Demo,
+        RT_Save
+    };
 
-	PagePlayDemo(QWidget* parent = 0);
+    PagePlayDemo(QWidget* parent = 0);
 
-	void FillFromDir(RecordType rectype);
+    void FillFromDir(RecordType rectype);
 
-	QPushButton *BtnBack;
-	QPushButton *BtnPlayDemo;
-	QPushButton *BtnRenameRecord;
-	QPushButton *BtnRemoveRecord;
-	QListWidget *DemosList;
+    QPushButton *BtnBack;
+    QPushButton *BtnPlayDemo;
+    QPushButton *BtnRenameRecord;
+    QPushButton *BtnRemoveRecord;
+    QListWidget *DemosList;
 
 private:
-	RecordType recType;
+    RecordType recType;
 
 private slots:
-	void renameRecord();
-	void removeRecord();
+    void renameRecord();
+    void removeRecord();
 };
 
 
--- a/QTfrontend/predefteams.h	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/predefteams.h	Sat Mar 06 10:59:20 2010 +0000
@@ -25,90 +25,90 @@
 /*
 struct PredefinedTeam
 {
-	const char * TeamName;
-	const char * hh0name;
-	const char * hh1name;
-	const char * hh2name;
-	const char * hh3name;
-	const char * hh4name;
-	const char * hh5name;
-	const char * hh6name;
-	const char * hh7name;
-	const char * hh0hat;
-	const char * hh1hat;
-	const char * hh2hat;
-	const char * hh3hat;
-	const char * hh4hat;
-	const char * hh5hat;
-	const char * hh6hat;
-	const char * hh7hat;
-	QString Grave;
-	QString Fort;
+    const char * TeamName;
+    const char * hh0name;
+    const char * hh1name;
+    const char * hh2name;
+    const char * hh3name;
+    const char * hh4name;
+    const char * hh5name;
+    const char * hh6name;
+    const char * hh7name;
+    const char * hh0hat;
+    const char * hh1hat;
+    const char * hh2hat;
+    const char * hh3hat;
+    const char * hh4hat;
+    const char * hh5hat;
+    const char * hh6hat;
+    const char * hh7hat;
+    QString Grave;
+    QString Fort;
 };
 
 
 const PredefinedTeam pteams[PREDEFTEAMS_COUNT] =
 {
-	{
-		QT_TRANSLATE_NOOP("teams", "Hedgehogs"),
-		QT_TRANSLATE_NOOP("teams", "hedgehog 1"),
-		QT_TRANSLATE_NOOP("teams", "hedgehog 2"),
-		QT_TRANSLATE_NOOP("teams", "hedgehog 3"),
-		QT_TRANSLATE_NOOP("teams", "hedgehog 4"),
-		QT_TRANSLATE_NOOP("teams", "hedgehog 5"),
-		QT_TRANSLATE_NOOP("teams", "hedgehog 6"),
-		QT_TRANSLATE_NOOP("teams", "hedgehog 7"),
-		QT_TRANSLATE_NOOP("teams", "hedgehog 8"),
-		"NoHat",
-		"NoHat",
-		"NoHat",
-		"NoHat",
-		"NoHat",
-		"NoHat",
-		"NoHat",
-		"NoHat",
-		"Simple", "Island"
-	},
-	{
-		QT_TRANSLATE_NOOP("teams", "Goddess"),
-		QT_TRANSLATE_NOOP("teams", "Isis"),
-		QT_TRANSLATE_NOOP("teams", "Astarte"),
-		QT_TRANSLATE_NOOP("teams", "Diana"),
-		QT_TRANSLATE_NOOP("teams", "Aphrodite"),
-		QT_TRANSLATE_NOOP("teams", "Hecate"),
-		QT_TRANSLATE_NOOP("teams", "Demeter"),
-		QT_TRANSLATE_NOOP("teams", "Kali"),
-		QT_TRANSLATE_NOOP("teams", "Inanna"),
-		"NoHat",
-		"NoHat",
-		"NoHat",
-		"NoHat",
-		"NoHat",
-		"NoHat",
-		"NoHat",
-		"NoHat",
-		"Bone", "Island"
-	},
-	{
-		QT_TRANSLATE_NOOP("teams", "Fruits"),
-		QT_TRANSLATE_NOOP("teams", "Banana"),
-		QT_TRANSLATE_NOOP("teams", "Apple"),
-		QT_TRANSLATE_NOOP("teams", "Orange"),
-		QT_TRANSLATE_NOOP("teams", "Lemon"),
-		QT_TRANSLATE_NOOP("teams", "Pineapple"),
-		QT_TRANSLATE_NOOP("teams", "Mango"),
-		QT_TRANSLATE_NOOP("teams", "Peach"),
-		QT_TRANSLATE_NOOP("teams", "Plum"),
-		"banana",
-		"apple",
-		"orange",
-		"lemon",
-		"NoHat",
-		"NoHat",
-		"NoHat",
-		"NoHat",
-		"coffin", "Barrelhouse"
-	}
+    {
+        QT_TRANSLATE_NOOP("teams", "Hedgehogs"),
+        QT_TRANSLATE_NOOP("teams", "hedgehog 1"),
+        QT_TRANSLATE_NOOP("teams", "hedgehog 2"),
+        QT_TRANSLATE_NOOP("teams", "hedgehog 3"),
+        QT_TRANSLATE_NOOP("teams", "hedgehog 4"),
+        QT_TRANSLATE_NOOP("teams", "hedgehog 5"),
+        QT_TRANSLATE_NOOP("teams", "hedgehog 6"),
+        QT_TRANSLATE_NOOP("teams", "hedgehog 7"),
+        QT_TRANSLATE_NOOP("teams", "hedgehog 8"),
+        "NoHat",
+        "NoHat",
+        "NoHat",
+        "NoHat",
+        "NoHat",
+        "NoHat",
+        "NoHat",
+        "NoHat",
+        "Simple", "Island"
+    },
+    {
+        QT_TRANSLATE_NOOP("teams", "Goddess"),
+        QT_TRANSLATE_NOOP("teams", "Isis"),
+        QT_TRANSLATE_NOOP("teams", "Astarte"),
+        QT_TRANSLATE_NOOP("teams", "Diana"),
+        QT_TRANSLATE_NOOP("teams", "Aphrodite"),
+        QT_TRANSLATE_NOOP("teams", "Hecate"),
+        QT_TRANSLATE_NOOP("teams", "Demeter"),
+        QT_TRANSLATE_NOOP("teams", "Kali"),
+        QT_TRANSLATE_NOOP("teams", "Inanna"),
+        "NoHat",
+        "NoHat",
+        "NoHat",
+        "NoHat",
+        "NoHat",
+        "NoHat",
+        "NoHat",
+        "NoHat",
+        "Bone", "Island"
+    },
+    {
+        QT_TRANSLATE_NOOP("teams", "Fruits"),
+        QT_TRANSLATE_NOOP("teams", "Banana"),
+        QT_TRANSLATE_NOOP("teams", "Apple"),
+        QT_TRANSLATE_NOOP("teams", "Orange"),
+        QT_TRANSLATE_NOOP("teams", "Lemon"),
+        QT_TRANSLATE_NOOP("teams", "Pineapple"),
+        QT_TRANSLATE_NOOP("teams", "Mango"),
+        QT_TRANSLATE_NOOP("teams", "Peach"),
+        QT_TRANSLATE_NOOP("teams", "Plum"),
+        "banana",
+        "apple",
+        "orange",
+        "lemon",
+        "NoHat",
+        "NoHat",
+        "NoHat",
+        "NoHat",
+        "coffin", "Barrelhouse"
+    }
 };
 */
 #endif // PREDEFTEAMS_H
--- a/QTfrontend/proto.cpp	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/proto.cpp	Sat Mar 06 10:59:20 2010 +0000
@@ -25,25 +25,25 @@
 
 QByteArray & HWProto::addStringToBuffer(QByteArray & buf, const QString & string)
 {
-	QByteArray strmsg = string.toUtf8();
-	strmsg = strmsg.left(250);
-	quint8 sz = strmsg.size();
-	buf.append(QByteArray((char *)&sz, 1));
-	buf.append(strmsg);
-	return buf;
+    QByteArray strmsg = string.toUtf8();
+    strmsg = strmsg.left(250);
+    quint8 sz = strmsg.size();
+    buf.append(QByteArray((char *)&sz, 1));
+    buf.append(strmsg);
+    return buf;
 }
 
 QByteArray & HWProto::addStringListToBuffer(QByteArray & buf, const QStringList & strList)
 {
-	for (int i = 0; i < strList.size(); i++)
-		addStringToBuffer(buf, strList[i]);
-	return buf;
+    for (int i = 0; i < strList.size(); i++)
+        addStringToBuffer(buf, strList[i]);
+    return buf;
 }
 
 QString HWProto::formatChatMsg(const QString & nick, const QString & msg)
 {
-	if(msg.left(4) == "/me ")
-		return QString("\x02* %1 %2").arg(nick).arg(msg.mid(4));
-	else
-		return QString("\x01%1: %2").arg(nick).arg(msg);
+    if(msg.left(4) == "/me ")
+        return QString("\x02* %1 %2").arg(nick).arg(msg.mid(4));
+    else
+        return QString("\x01%1: %2").arg(nick).arg(msg);
 }
--- a/QTfrontend/proto.h	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/proto.h	Sat Mar 06 10:59:20 2010 +0000
@@ -26,13 +26,13 @@
 
 class HWProto : public QObject
 {
-	Q_OBJECT
+    Q_OBJECT
 
 public:
-	HWProto();
-	static QByteArray & addStringToBuffer(QByteArray & buf, const QString & string);
-	static QByteArray & addStringListToBuffer(QByteArray & buf, const QStringList & strList);
-	static QString formatChatMsg(const QString & nick, const QString & msg);
+    HWProto();
+    static QByteArray & addStringToBuffer(QByteArray & buf, const QString & string);
+    static QByteArray & addStringListToBuffer(QByteArray & buf, const QStringList & strList);
+    static QString formatChatMsg(const QString & nick, const QString & msg);
 };
 
 #endif // _PROTO_H
--- a/QTfrontend/sdlkeys.h	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/sdlkeys.h	Sat Mar 06 10:59:20 2010 +0000
@@ -17,163 +17,163 @@
  */
 
 char sdlkeys[1024][2][128] = {
-	{"mousel", QT_TRANSLATE_NOOP("binds (keys)", "Mouse: Left button")},
-	{"mousem", QT_TRANSLATE_NOOP("binds (keys)", "Mouse: Middle button")},
-	{"mouser", QT_TRANSLATE_NOOP("binds (keys)", "Mouse: Right button")},
-	{"wheelup", QT_TRANSLATE_NOOP("binds (keys)", "Mouse: Wheel up")},
-	{"wheeldown", QT_TRANSLATE_NOOP("binds (keys)", "Mouse: Wheel down")},
-	{"backspace", QT_TRANSLATE_NOOP("binds (keys)", "Backspace")},
-	{"tab", QT_TRANSLATE_NOOP("binds (keys)", "Tab")},
-	{"clear", QT_TRANSLATE_NOOP("binds (keys)", "Clear")},
-	{"return", QT_TRANSLATE_NOOP("binds (keys)", "Return")},
-	{"pause", QT_TRANSLATE_NOOP("binds (keys)", "Pause")},
-	{"escape", QT_TRANSLATE_NOOP("binds (keys)", "Escape")},
-	{"space", QT_TRANSLATE_NOOP("binds (keys)", "Space")},
-	{"!", "!"},
-	{"\"", "\""},
-	{"#", "#"},
-	{"$", "$"},
-	{"&", "&"},
-	{"'", "'"},
-	{"(", "("},
-	{")", ")"},
-	{"*", "*"},
-	{"+", "+"},
-	{", ", ", "},
-	{"-", "-"},
-	{".", "."},
-	{"/", "/"},
-	{"0", "0"},
-	{"1", "1"},
-	{"2", "2"},
-	{"3", "3"},
-	{"4", "4"},
-	{"5", "5"},
-	{"6", "6"},
-	{"7", "7"},
-	{"8", "8"},
-	{"9", "9"},
-	{":", ":"},
-	{";", ";"},
-	{"<", "<"},
-	{"=", "="},
-	{">", ">"},
-	{"?", "?"},
-	{"@", "@"},
-	{"[", "["},
-	{"\\", "\\"},
-	{"]", "]"},
-	{"^", "^"},
-	{"_", "_"},
-	{"`", "`"},
-	{"a", "A"},
-	{"b", "B"},
-	{"c", "C"},
-	{"d", "D"},
-	{"e", "E"},
-	{"f", "F"},
-	{"g", "G"},
-	{"h", "H"},
-	{"i", "I"},
-	{"j", "J"},
-	{"k", "K"},
-	{"l", "L"},
-	{"m", "M"},
-	{"n", "N"},
-	{"o", "O"},
-	{"p", "P"},
-	{"q", "Q"},
-	{"r", "R"},
-	{"s", "S"},
-	{"t", "T"},
-	{"u", "U"},
-	{"v", "V"},
-	{"w", "W"},
-	{"x", "X"},
-	{"y", "Y"},
-	{"z", "Z"},
-	{"delete", QT_TRANSLATE_NOOP("binds (keys)", "Delete")},
-	{"[0]", QT_TRANSLATE_NOOP("binds (keys)", "Numpad 0")},
-	{"[1]", QT_TRANSLATE_NOOP("binds (keys)", "Numpad 1")},
-	{"[2]", QT_TRANSLATE_NOOP("binds (keys)", "Numpad 2")},
-	{"[3]", QT_TRANSLATE_NOOP("binds (keys)", "Numpad 3")},
-	{"[4]", QT_TRANSLATE_NOOP("binds (keys)", "Numpad 4")},
-	{"[5]", QT_TRANSLATE_NOOP("binds (keys)", "Numpad 5")},
-	{"[6]", QT_TRANSLATE_NOOP("binds (keys)", "Numpad 6")},
-	{"[7]", QT_TRANSLATE_NOOP("binds (keys)", "Numpad 7")},
-	{"[8]", QT_TRANSLATE_NOOP("binds (keys)", "Numpad 8")},
-	{"[9]", QT_TRANSLATE_NOOP("binds (keys)", "Numpad 9")},
-	{"[.]", QT_TRANSLATE_NOOP("binds (keys)", "Numpad .")},
-	{"[/]", QT_TRANSLATE_NOOP("binds (keys)", "Numpad /")},
-	{"[*]", QT_TRANSLATE_NOOP("binds (keys)", "Numpad *")},
-	{"[-]", QT_TRANSLATE_NOOP("binds (keys)", "Numpad -")},
-	{"[+]", QT_TRANSLATE_NOOP("binds (keys)", "Numpad +")},
-	{"enter", QT_TRANSLATE_NOOP("binds (keys)", "Enter")},
-	{"equals", QT_TRANSLATE_NOOP("binds (keys)", "Equals")},
-	{"up", QT_TRANSLATE_NOOP("binds (keys)", "Up")},
-	{"down", QT_TRANSLATE_NOOP("binds (keys)", "Down")},
-	{"right", QT_TRANSLATE_NOOP("binds (keys)", "Right")},
-	{"left", QT_TRANSLATE_NOOP("binds (keys)", "Left")},
-	{"insert", QT_TRANSLATE_NOOP("binds (keys)", "Insert")},
-	{"home", QT_TRANSLATE_NOOP("binds (keys)", "Home")},
-	{"end", QT_TRANSLATE_NOOP("binds (keys)", "End")},
-	{"page up", QT_TRANSLATE_NOOP("binds (keys)", "Page up")},
-	{"page down", QT_TRANSLATE_NOOP("binds (keys)", "Page down")},
-	{"f1", "F1"},
-	{"f2", "F2"},
-	{"f3", "F3"},
-	{"f4", "F4"},
-	{"f5", "F5"},
-	{"f6", "F6"},
-	{"f7", "F7"},
-	{"f8", "F8"},
-	{"f9", "F9"},
-	{"f10", "F10"},
-	{"f11", "F11"},
-	{"f12", "F12"},
-	{"f13", "F13"},
-	{"f14", "F14"},
-	{"f15", "F15"},
-	{"numlock", QT_TRANSLATE_NOOP("binds (keys)", "Num lock")},
-	{"caps_lock", QT_TRANSLATE_NOOP("binds (keys)", "Caps lock")},
-	{"scroll_lock", QT_TRANSLATE_NOOP("binds (keys)", "Scroll lock")},
-	{"right_shift", QT_TRANSLATE_NOOP("binds (keys)", "Right shift")},
-	{"left_shift", QT_TRANSLATE_NOOP("binds (keys)", "Left shift")},
-	{"right_ctrl", QT_TRANSLATE_NOOP("binds (keys)", "Right ctrl")},
-	{"left_ctrl", QT_TRANSLATE_NOOP("binds (keys)", "Left ctrl")},
-	{"right_alt", QT_TRANSLATE_NOOP("binds (keys)", "Right alt")},
-	{"left_alt", QT_TRANSLATE_NOOP("binds (keys)", "Left alt")},
-	{"right_meta", QT_TRANSLATE_NOOP("binds (keys)", "Right meta")},
-	{"left_meta", QT_TRANSLATE_NOOP("binds (keys)", "Left meta")}
-	};
+    {"mousel", QT_TRANSLATE_NOOP("binds (keys)", "Mouse: Left button")},
+    {"mousem", QT_TRANSLATE_NOOP("binds (keys)", "Mouse: Middle button")},
+    {"mouser", QT_TRANSLATE_NOOP("binds (keys)", "Mouse: Right button")},
+    {"wheelup", QT_TRANSLATE_NOOP("binds (keys)", "Mouse: Wheel up")},
+    {"wheeldown", QT_TRANSLATE_NOOP("binds (keys)", "Mouse: Wheel down")},
+    {"backspace", QT_TRANSLATE_NOOP("binds (keys)", "Backspace")},
+    {"tab", QT_TRANSLATE_NOOP("binds (keys)", "Tab")},
+    {"clear", QT_TRANSLATE_NOOP("binds (keys)", "Clear")},
+    {"return", QT_TRANSLATE_NOOP("binds (keys)", "Return")},
+    {"pause", QT_TRANSLATE_NOOP("binds (keys)", "Pause")},
+    {"escape", QT_TRANSLATE_NOOP("binds (keys)", "Escape")},
+    {"space", QT_TRANSLATE_NOOP("binds (keys)", "Space")},
+    {"!", "!"},
+    {"\"", "\""},
+    {"#", "#"},
+    {"$", "$"},
+    {"&", "&"},
+    {"'", "'"},
+    {"(", "("},
+    {")", ")"},
+    {"*", "*"},
+    {"+", "+"},
+    {", ", ", "},
+    {"-", "-"},
+    {".", "."},
+    {"/", "/"},
+    {"0", "0"},
+    {"1", "1"},
+    {"2", "2"},
+    {"3", "3"},
+    {"4", "4"},
+    {"5", "5"},
+    {"6", "6"},
+    {"7", "7"},
+    {"8", "8"},
+    {"9", "9"},
+    {":", ":"},
+    {";", ";"},
+    {"<", "<"},
+    {"=", "="},
+    {">", ">"},
+    {"?", "?"},
+    {"@", "@"},
+    {"[", "["},
+    {"\\", "\\"},
+    {"]", "]"},
+    {"^", "^"},
+    {"_", "_"},
+    {"`", "`"},
+    {"a", "A"},
+    {"b", "B"},
+    {"c", "C"},
+    {"d", "D"},
+    {"e", "E"},
+    {"f", "F"},
+    {"g", "G"},
+    {"h", "H"},
+    {"i", "I"},
+    {"j", "J"},
+    {"k", "K"},
+    {"l", "L"},
+    {"m", "M"},
+    {"n", "N"},
+    {"o", "O"},
+    {"p", "P"},
+    {"q", "Q"},
+    {"r", "R"},
+    {"s", "S"},
+    {"t", "T"},
+    {"u", "U"},
+    {"v", "V"},
+    {"w", "W"},
+    {"x", "X"},
+    {"y", "Y"},
+    {"z", "Z"},
+    {"delete", QT_TRANSLATE_NOOP("binds (keys)", "Delete")},
+    {"[0]", QT_TRANSLATE_NOOP("binds (keys)", "Numpad 0")},
+    {"[1]", QT_TRANSLATE_NOOP("binds (keys)", "Numpad 1")},
+    {"[2]", QT_TRANSLATE_NOOP("binds (keys)", "Numpad 2")},
+    {"[3]", QT_TRANSLATE_NOOP("binds (keys)", "Numpad 3")},
+    {"[4]", QT_TRANSLATE_NOOP("binds (keys)", "Numpad 4")},
+    {"[5]", QT_TRANSLATE_NOOP("binds (keys)", "Numpad 5")},
+    {"[6]", QT_TRANSLATE_NOOP("binds (keys)", "Numpad 6")},
+    {"[7]", QT_TRANSLATE_NOOP("binds (keys)", "Numpad 7")},
+    {"[8]", QT_TRANSLATE_NOOP("binds (keys)", "Numpad 8")},
+    {"[9]", QT_TRANSLATE_NOOP("binds (keys)", "Numpad 9")},
+    {"[.]", QT_TRANSLATE_NOOP("binds (keys)", "Numpad .")},
+    {"[/]", QT_TRANSLATE_NOOP("binds (keys)", "Numpad /")},
+    {"[*]", QT_TRANSLATE_NOOP("binds (keys)", "Numpad *")},
+    {"[-]", QT_TRANSLATE_NOOP("binds (keys)", "Numpad -")},
+    {"[+]", QT_TRANSLATE_NOOP("binds (keys)", "Numpad +")},
+    {"enter", QT_TRANSLATE_NOOP("binds (keys)", "Enter")},
+    {"equals", QT_TRANSLATE_NOOP("binds (keys)", "Equals")},
+    {"up", QT_TRANSLATE_NOOP("binds (keys)", "Up")},
+    {"down", QT_TRANSLATE_NOOP("binds (keys)", "Down")},
+    {"right", QT_TRANSLATE_NOOP("binds (keys)", "Right")},
+    {"left", QT_TRANSLATE_NOOP("binds (keys)", "Left")},
+    {"insert", QT_TRANSLATE_NOOP("binds (keys)", "Insert")},
+    {"home", QT_TRANSLATE_NOOP("binds (keys)", "Home")},
+    {"end", QT_TRANSLATE_NOOP("binds (keys)", "End")},
+    {"page up", QT_TRANSLATE_NOOP("binds (keys)", "Page up")},
+    {"page down", QT_TRANSLATE_NOOP("binds (keys)", "Page down")},
+    {"f1", "F1"},
+    {"f2", "F2"},
+    {"f3", "F3"},
+    {"f4", "F4"},
+    {"f5", "F5"},
+    {"f6", "F6"},
+    {"f7", "F7"},
+    {"f8", "F8"},
+    {"f9", "F9"},
+    {"f10", "F10"},
+    {"f11", "F11"},
+    {"f12", "F12"},
+    {"f13", "F13"},
+    {"f14", "F14"},
+    {"f15", "F15"},
+    {"numlock", QT_TRANSLATE_NOOP("binds (keys)", "Num lock")},
+    {"caps_lock", QT_TRANSLATE_NOOP("binds (keys)", "Caps lock")},
+    {"scroll_lock", QT_TRANSLATE_NOOP("binds (keys)", "Scroll lock")},
+    {"right_shift", QT_TRANSLATE_NOOP("binds (keys)", "Right shift")},
+    {"left_shift", QT_TRANSLATE_NOOP("binds (keys)", "Left shift")},
+    {"right_ctrl", QT_TRANSLATE_NOOP("binds (keys)", "Right ctrl")},
+    {"left_ctrl", QT_TRANSLATE_NOOP("binds (keys)", "Left ctrl")},
+    {"right_alt", QT_TRANSLATE_NOOP("binds (keys)", "Right alt")},
+    {"left_alt", QT_TRANSLATE_NOOP("binds (keys)", "Left alt")},
+    {"right_meta", QT_TRANSLATE_NOOP("binds (keys)", "Right meta")},
+    {"left_meta", QT_TRANSLATE_NOOP("binds (keys)", "Left meta")}
+    };
 
 // button name definitions for Microsoft's XBox360 controller
 // don't modify button order!
 char xb360buttons[][128] = {
-	QT_TRANSLATE_NOOP("binds (keys)", "A button"),
-	QT_TRANSLATE_NOOP("binds (keys)", "B button"),
-	QT_TRANSLATE_NOOP("binds (keys)", "X button"),
-	QT_TRANSLATE_NOOP("binds (keys)", "Y button"),
-	QT_TRANSLATE_NOOP("binds (keys)", "LB button"),
-	QT_TRANSLATE_NOOP("binds (keys)", "RB button"),
-	QT_TRANSLATE_NOOP("binds (keys)", "Back button"),
-	QT_TRANSLATE_NOOP("binds (keys)", "Start button"),
-	QT_TRANSLATE_NOOP("binds (keys)", "Left stick"),
-	QT_TRANSLATE_NOOP("binds (keys)", "Right stick")
+    QT_TRANSLATE_NOOP("binds (keys)", "A button"),
+    QT_TRANSLATE_NOOP("binds (keys)", "B button"),
+    QT_TRANSLATE_NOOP("binds (keys)", "X button"),
+    QT_TRANSLATE_NOOP("binds (keys)", "Y button"),
+    QT_TRANSLATE_NOOP("binds (keys)", "LB button"),
+    QT_TRANSLATE_NOOP("binds (keys)", "RB button"),
+    QT_TRANSLATE_NOOP("binds (keys)", "Back button"),
+    QT_TRANSLATE_NOOP("binds (keys)", "Start button"),
+    QT_TRANSLATE_NOOP("binds (keys)", "Left stick"),
+    QT_TRANSLATE_NOOP("binds (keys)", "Right stick")
 };
 
 // axis name definitions for Microsoft's XBox360 controller
 // don't modify axis order!
 char xbox360axes[][128] = {
-	QT_TRANSLATE_NOOP("binds (keys)", "Left stick (Right)"),
-	QT_TRANSLATE_NOOP("binds (keys)", "Left stick (Left)"),
-	QT_TRANSLATE_NOOP("binds (keys)", "Left stick (Down)"),
-	QT_TRANSLATE_NOOP("binds (keys)", "Left stick (Up)"),
-	QT_TRANSLATE_NOOP("binds (keys)", "Left trigger"),
-	QT_TRANSLATE_NOOP("binds (keys)", "Right trigger"),
-	QT_TRANSLATE_NOOP("binds (keys)", "Right stick (Down)"),
-	QT_TRANSLATE_NOOP("binds (keys)", "Right stick (Up)"),
-	QT_TRANSLATE_NOOP("binds (keys)", "Right stick (Right)"),
-	QT_TRANSLATE_NOOP("binds (keys)", "Right stick (Left)"),
+    QT_TRANSLATE_NOOP("binds (keys)", "Left stick (Right)"),
+    QT_TRANSLATE_NOOP("binds (keys)", "Left stick (Left)"),
+    QT_TRANSLATE_NOOP("binds (keys)", "Left stick (Down)"),
+    QT_TRANSLATE_NOOP("binds (keys)", "Left stick (Up)"),
+    QT_TRANSLATE_NOOP("binds (keys)", "Left trigger"),
+    QT_TRANSLATE_NOOP("binds (keys)", "Right trigger"),
+    QT_TRANSLATE_NOOP("binds (keys)", "Right stick (Down)"),
+    QT_TRANSLATE_NOOP("binds (keys)", "Right stick (Up)"),
+    QT_TRANSLATE_NOOP("binds (keys)", "Right stick (Right)"),
+    QT_TRANSLATE_NOOP("binds (keys)", "Right stick (Left)"),
 };
 char xb360dpad[128] = QT_TRANSLATE_NOOP("binds (keys)", "DPad");
--- a/QTfrontend/selectWeapon.cpp	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/selectWeapon.cpp	Sat Mar 06 10:59:20 2010 +0000
@@ -33,214 +33,214 @@
 
 QImage getAmmoImage(int num)
 {
-	static QImage ammo(":Ammos.png");
+    static QImage ammo(":Ammos.png");
     int x = floor(num/(ammo.height()/32));
     int y = (num-((ammo.height()/32)*x))*32;
     x*=32;
-	return ammo.copy(x, y, 32, 32);
+    return ammo.copy(x, y, 32, 32);
 }
 
 SelWeaponItem::SelWeaponItem(bool allowInfinite, int iconNum, int wNum, QImage image, QWidget* parent) :
-	QWidget(parent)
+    QWidget(parent)
 {
-	QHBoxLayout* hbLayout = new QHBoxLayout(this);
-	hbLayout->setSpacing(1);
-	hbLayout->setMargin(1);
+    QHBoxLayout* hbLayout = new QHBoxLayout(this);
+    hbLayout->setSpacing(1);
+    hbLayout->setMargin(1);
 
-	QLabel* lbl = new QLabel(this);
-	lbl->setPixmap(QPixmap::fromImage(getAmmoImage(iconNum)));
-	lbl->setMaximumWidth(30);
-	lbl->setGeometry(0, 0, 30, 30);
-	hbLayout->addWidget(lbl);
+    QLabel* lbl = new QLabel(this);
+    lbl->setPixmap(QPixmap::fromImage(getAmmoImage(iconNum)));
+    lbl->setMaximumWidth(30);
+    lbl->setGeometry(0, 0, 30, 30);
+    hbLayout->addWidget(lbl);
 
-	item = new WeaponItem(image, this);
-	item->setItemsNum(wNum);
-	item->setInfinityState(allowInfinite);
-	hbLayout->addWidget(item);
+    item = new WeaponItem(image, this);
+    item->setItemsNum(wNum);
+    item->setInfinityState(allowInfinite);
+    hbLayout->addWidget(item);
 
-	hbLayout->setStretchFactor(lbl, 1);
-	hbLayout->setStretchFactor(item, 99);
-	hbLayout->setAlignment(lbl, Qt::AlignLeft | Qt::AlignVCenter);
-	hbLayout->setAlignment(item, Qt::AlignLeft | Qt::AlignVCenter);
+    hbLayout->setStretchFactor(lbl, 1);
+    hbLayout->setStretchFactor(item, 99);
+    hbLayout->setAlignment(lbl, Qt::AlignLeft | Qt::AlignVCenter);
+    hbLayout->setAlignment(item, Qt::AlignLeft | Qt::AlignVCenter);
 }
 
 void SelWeaponItem::setItemsNum(const unsigned char num)
 {
-	item->setItemsNum(num);
+    item->setItemsNum(num);
 }
 
 unsigned char SelWeaponItem::getItemsNum() const
 {
-	return item->getItemsNum();
+    return item->getItemsNum();
 }
 
 SelWeaponWidget::SelWeaponWidget(int numItems, QWidget* parent) :
   QFrame(parent),
   m_numItems(numItems)
 {
-	wconf = new QSettings(cfgdir->absolutePath() + "/weapons.ini", QSettings::IniFormat, this);
+    wconf = new QSettings(cfgdir->absolutePath() + "/weapons.ini", QSettings::IniFormat, this);
 
-	for(int i = 0; i < cDefaultAmmos.size(); ++i)
-		wconf->setValue(cDefaultAmmos[i].first, cDefaultAmmos[i].second);
+    for(int i = 0; i < cDefaultAmmos.size(); ++i)
+        wconf->setValue(cDefaultAmmos[i].first, cDefaultAmmos[i].second);
 
-	QStringList keys = wconf->allKeys();
-	for(int i = 0; i < keys.size(); i++)
-	{
-		if (wconf->value(keys[i]).toString().size() != cDefaultAmmoStore->size())
-			wconf->remove(keys[i]);
-	}
+    QStringList keys = wconf->allKeys();
+    for(int i = 0; i < keys.size(); i++)
+    {
+        if (wconf->value(keys[i]).toString().size() != cDefaultAmmoStore->size())
+            wconf->remove(keys[i]);
+    }
 
-	QString currentState = *cDefaultAmmoStore;
+    QString currentState = *cDefaultAmmoStore;
 
-	QTabWidget * tbw = new QTabWidget(this);
-	QWidget * page1 = new QWidget(this);
-	p1Layout = new QGridLayout(page1);
-	p1Layout->setSpacing(1);
-	p1Layout->setMargin(1);
-	QWidget * page2 = new QWidget(this);
-	p2Layout = new QGridLayout(page2);
-	p2Layout->setSpacing(1);
-	p2Layout->setMargin(1);
-	QWidget * page3 = new QWidget(this);
-	p3Layout = new QGridLayout(page3);
-	p3Layout->setSpacing(1);
-	p3Layout->setMargin(1);
-	QWidget * page4 = new QWidget(this);
-	p4Layout = new QGridLayout(page4);
-	p4Layout->setSpacing(1);
-	p4Layout->setMargin(1);
+    QTabWidget * tbw = new QTabWidget(this);
+    QWidget * page1 = new QWidget(this);
+    p1Layout = new QGridLayout(page1);
+    p1Layout->setSpacing(1);
+    p1Layout->setMargin(1);
+    QWidget * page2 = new QWidget(this);
+    p2Layout = new QGridLayout(page2);
+    p2Layout->setSpacing(1);
+    p2Layout->setMargin(1);
+    QWidget * page3 = new QWidget(this);
+    p3Layout = new QGridLayout(page3);
+    p3Layout->setSpacing(1);
+    p3Layout->setMargin(1);
+    QWidget * page4 = new QWidget(this);
+    p4Layout = new QGridLayout(page4);
+    p4Layout->setSpacing(1);
+    p4Layout->setMargin(1);
 
-	tbw->addTab(page1, tr("Weapon set"));
-	tbw->addTab(page2, tr("Probabilities"));
-	tbw->addTab(page4, tr("Ammo in boxes"));
-	tbw->addTab(page3, tr("Delays"));
+    tbw->addTab(page1, tr("Weapon set"));
+    tbw->addTab(page2, tr("Probabilities"));
+    tbw->addTab(page4, tr("Ammo in boxes"));
+    tbw->addTab(page3, tr("Delays"));
 
-	QGridLayout * pageLayout = new QGridLayout(this);
-	pageLayout->addWidget(tbw);
+    QGridLayout * pageLayout = new QGridLayout(this);
+    pageLayout->addWidget(tbw);
 
 
-	int j = -1;
-	int i = 0, k = 0;
-	for(; i < m_numItems; ++i) {
-		if (i == 6) continue;
-		if (k % 4 == 0) ++j;
-		SelWeaponItem * swi = new SelWeaponItem(true, i, currentState[i].digitValue(), QImage(":/res/ammopic.png"), this);
-		weaponItems[i].append(swi);
-		p1Layout->addWidget(swi, j, k % 4);
+    int j = -1;
+    int i = 0, k = 0;
+    for(; i < m_numItems; ++i) {
+        if (i == 6) continue;
+        if (k % 4 == 0) ++j;
+        SelWeaponItem * swi = new SelWeaponItem(true, i, currentState[i].digitValue(), QImage(":/res/ammopic.png"), this);
+        weaponItems[i].append(swi);
+        p1Layout->addWidget(swi, j, k % 4);
 
-		SelWeaponItem * pwi = new SelWeaponItem(false, i, currentState[numItems + i].digitValue(), QImage(":/res/ammopicbox.png"), this);
-		weaponItems[i].append(pwi);
-		p2Layout->addWidget(pwi, j, k % 4);
-		
-		SelWeaponItem * dwi = new SelWeaponItem(false, i, currentState[numItems*2 + i].digitValue(), QImage(":/res/ammopicdelay.png"), this);
-		weaponItems[i].append(dwi);
-		p3Layout->addWidget(dwi, j, k % 4);
-		
-		SelWeaponItem * awi = new SelWeaponItem(false, i, currentState[numItems*3 + i].digitValue(), QImage(":/res/ammopic.png"), this);
-		weaponItems[i].append(awi);
-		p4Layout->addWidget(awi, j, k % 4);
+        SelWeaponItem * pwi = new SelWeaponItem(false, i, currentState[numItems + i].digitValue(), QImage(":/res/ammopicbox.png"), this);
+        weaponItems[i].append(pwi);
+        p2Layout->addWidget(pwi, j, k % 4);
+        
+        SelWeaponItem * dwi = new SelWeaponItem(false, i, currentState[numItems*2 + i].digitValue(), QImage(":/res/ammopicdelay.png"), this);
+        weaponItems[i].append(dwi);
+        p3Layout->addWidget(dwi, j, k % 4);
+        
+        SelWeaponItem * awi = new SelWeaponItem(false, i, currentState[numItems*3 + i].digitValue(), QImage(":/res/ammopic.png"), this);
+        weaponItems[i].append(awi);
+        p4Layout->addWidget(awi, j, k % 4);
 
-		++k;
-	}
+        ++k;
+    }
 
-	//pLayout->setRowStretch(5, 100);
-	m_name = new QLineEdit(this);
-	pageLayout->addWidget(m_name, i, 0, 1, 5);
+    //pLayout->setRowStretch(5, 100);
+    m_name = new QLineEdit(this);
+    pageLayout->addWidget(m_name, i, 0, 1, 5);
 }
 
 void SelWeaponWidget::setWeapons(const QString& ammo)
 {
-	for(int i = 0; i < m_numItems; ++i) {
-		twi::iterator it = weaponItems.find(i);
-		if (it == weaponItems.end()) continue;
-		it.value()[0]->setItemsNum(ammo[i].digitValue());
-		it.value()[1]->setItemsNum(ammo[m_numItems + i].digitValue());
-		it.value()[2]->setItemsNum(ammo[m_numItems*2 + i].digitValue());
-		it.value()[3]->setItemsNum(ammo[m_numItems*3 + i].digitValue());
-	}
-	update();
+    for(int i = 0; i < m_numItems; ++i) {
+        twi::iterator it = weaponItems.find(i);
+        if (it == weaponItems.end()) continue;
+        it.value()[0]->setItemsNum(ammo[i].digitValue());
+        it.value()[1]->setItemsNum(ammo[m_numItems + i].digitValue());
+        it.value()[2]->setItemsNum(ammo[m_numItems*2 + i].digitValue());
+        it.value()[3]->setItemsNum(ammo[m_numItems*3 + i].digitValue());
+    }
+    update();
 }
 
 void SelWeaponWidget::setDefault()
 {
-	setWeapons(*cDefaultAmmoStore);
+    setWeapons(*cDefaultAmmoStore);
 }
 
 void SelWeaponWidget::save()
 {
-	if (m_name->text() == "Default") {
-		QMessageBox impossible(QMessageBox::Warning, QMessageBox::tr("Weapons"), QMessageBox::tr("Can not edit default weapon set"));
-		impossible.exec();
-		return;
-	}
+    if (m_name->text() == "Default") {
+        QMessageBox impossible(QMessageBox::Warning, QMessageBox::tr("Weapons"), QMessageBox::tr("Can not edit default weapon set"));
+        impossible.exec();
+        return;
+    }
 
-	if (m_name->text() == "") return;
+    if (m_name->text() == "") return;
 
-	QString state1;
-	QString state2;
-	QString state3;
-	QString state4;
+    QString state1;
+    QString state2;
+    QString state3;
+    QString state4;
 
-	for(int i = 0; i < m_numItems; ++i) {
-		twi::const_iterator it = weaponItems.find(i);
-		int num = it == weaponItems.end() ? 9 : it.value()[0]->getItemsNum(); // 9 is for 'skip turn'
-		state1.append(QString::number(num));
-		int prob = it == weaponItems.end() ? 0 : it.value()[1]->getItemsNum();
-		state2.append(QString::number(prob));
-		int del = it == weaponItems.end() ? 0 : it.value()[2]->getItemsNum();
-		state3.append(QString::number(del));
-		int am = it == weaponItems.end() ? 0 : it.value()[3]->getItemsNum();
-		state4.append(QString::number(am));
-	}
-	if (curWeaponsName != "") {
-		// remove old entry
-		wconf->remove(curWeaponsName);
-	}
-	wconf->setValue(m_name->text(), state1 + state2 + state3 + state4);
-	emit weaponsChanged();
+    for(int i = 0; i < m_numItems; ++i) {
+        twi::const_iterator it = weaponItems.find(i);
+        int num = it == weaponItems.end() ? 9 : it.value()[0]->getItemsNum(); // 9 is for 'skip turn'
+        state1.append(QString::number(num));
+        int prob = it == weaponItems.end() ? 0 : it.value()[1]->getItemsNum();
+        state2.append(QString::number(prob));
+        int del = it == weaponItems.end() ? 0 : it.value()[2]->getItemsNum();
+        state3.append(QString::number(del));
+        int am = it == weaponItems.end() ? 0 : it.value()[3]->getItemsNum();
+        state4.append(QString::number(am));
+    }
+    if (curWeaponsName != "") {
+        // remove old entry
+        wconf->remove(curWeaponsName);
+    }
+    wconf->setValue(m_name->text(), state1 + state2 + state3 + state4);
+    emit weaponsChanged();
 }
 
 int SelWeaponWidget::operator [] (unsigned int weaponIndex) const
 {
-	twi::const_iterator it = weaponItems.find(weaponIndex);
-	return it == weaponItems.end() ? 9 : it.value()[0]->getItemsNum();
+    twi::const_iterator it = weaponItems.find(weaponIndex);
+    return it == weaponItems.end() ? 9 : it.value()[0]->getItemsNum();
 }
 
 QString SelWeaponWidget::getWeaponsString(const QString& name) const
 {
-	return wconf->value(name).toString();
+    return wconf->value(name).toString();
 }
 
 void SelWeaponWidget::deleteWeaponsName()
 {
-	if (curWeaponsName == "") return;
+    if (curWeaponsName == "") return;
 
-	if (curWeaponsName == "Default") {
-		QMessageBox impossible(QMessageBox::Warning, QMessageBox::tr("Weapons"), QMessageBox::tr("Can not delete default weapon set"));
-		impossible.exec();
-		return;
-	}
+    if (curWeaponsName == "Default") {
+        QMessageBox impossible(QMessageBox::Warning, QMessageBox::tr("Weapons"), QMessageBox::tr("Can not delete default weapon set"));
+        impossible.exec();
+        return;
+    }
 
-	QMessageBox reallyDelete(QMessageBox::Question, QMessageBox::tr("Weapons"), QMessageBox::tr("Really delete this weapon set?"), QMessageBox::Ok | QMessageBox::Cancel);
+    QMessageBox reallyDelete(QMessageBox::Question, QMessageBox::tr("Weapons"), QMessageBox::tr("Really delete this weapon set?"), QMessageBox::Ok | QMessageBox::Cancel);
 
-	if (reallyDelete.exec() == QMessageBox::Ok) {
-		wconf->remove(curWeaponsName);
-		emit weaponsDeleted();
-	}
+    if (reallyDelete.exec() == QMessageBox::Ok) {
+        wconf->remove(curWeaponsName);
+        emit weaponsDeleted();
+    }
 }
 
 void SelWeaponWidget::setWeaponsName(const QString& name)
 {
-	if(name != "" && wconf->contains(name)) {
-		setWeapons(wconf->value(name).toString());
-	}
+    if(name != "" && wconf->contains(name)) {
+        setWeapons(wconf->value(name).toString());
+    }
 
-	curWeaponsName = name;
+    curWeaponsName = name;
 
-	m_name->setText(name);
+    m_name->setText(name);
 }
 
 QStringList SelWeaponWidget::getWeaponNames() const
 {
-	return wconf->allKeys();
+    return wconf->allKeys();
 }
--- a/QTfrontend/statsPage.cpp	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/statsPage.cpp	Sat Mar 06 10:59:20 2010 +0000
@@ -29,99 +29,99 @@
 
 void FitGraphicsView::resizeEvent(QResizeEvent * event)
 {
-	fitInView(sceneRect());
+    fitInView(sceneRect());
 }
 
 PageGameStats::PageGameStats(QWidget* parent) : AbstractPage(parent)
 {
-	QGridLayout * pageLayout = new QGridLayout(this);
-	pageLayout->setColumnStretch(0, 1);
-	pageLayout->setColumnStretch(1, 1);
-	pageLayout->setColumnStretch(2, 1);
+    QGridLayout * pageLayout = new QGridLayout(this);
+    pageLayout->setColumnStretch(0, 1);
+    pageLayout->setColumnStretch(1, 1);
+    pageLayout->setColumnStretch(2, 1);
 
-	BtnBack = addButton(":/res/Exit.png", pageLayout, 2, 0, true);
+    BtnBack = addButton(":/res/Exit.png", pageLayout, 2, 0, true);
 
-	labelGameStats = new QLabel(this);
-	labelGameStats->setTextFormat(Qt::RichText);
-	pageLayout->addWidget(labelGameStats, 0, 0, 1, 3);
+    labelGameStats = new QLabel(this);
+    labelGameStats->setTextFormat(Qt::RichText);
+    pageLayout->addWidget(labelGameStats, 0, 0, 1, 3);
 
-	graphic = new FitGraphicsView(this);
-	graphic->scale(1.0, -1.0);
-	graphic->setBackgroundBrush(QBrush(Qt::black));
-	pageLayout->addWidget(graphic, 1, 0, 1, 3);
+    graphic = new FitGraphicsView(this);
+    graphic->scale(1.0, -1.0);
+    graphic->setBackgroundBrush(QBrush(Qt::black));
+    pageLayout->addWidget(graphic, 1, 0, 1, 3);
 }
 
 void PageGameStats::AddStatText(const QString & msg)
 {
-	labelGameStats->setText(labelGameStats->text() + msg);
+    labelGameStats->setText(labelGameStats->text() + msg);
 }
 
 void PageGameStats::clear()
 {
-	labelGameStats->setText("");
-	healthPoints.clear();
+    labelGameStats->setText("");
+    healthPoints.clear();
 }
 
 void PageGameStats::renderStats()
 {
-	QGraphicsScene * scene = new QGraphicsScene();
+    QGraphicsScene * scene = new QGraphicsScene();
 
-	QMap<quint32, QVector<quint32> >::const_iterator i = healthPoints.constBegin();
-	while (i != healthPoints.constEnd())
-	{
-		quint32 c = i.key();
-		QColor clanColor = QColor(qRgb((c >> 16) & 255, (c >> 8) & 255, c & 255));
-		QVector<quint32> hps = i.value();
+    QMap<quint32, QVector<quint32> >::const_iterator i = healthPoints.constBegin();
+    while (i != healthPoints.constEnd())
+    {
+        quint32 c = i.key();
+        QColor clanColor = QColor(qRgb((c >> 16) & 255, (c >> 8) & 255, c & 255));
+        QVector<quint32> hps = i.value();
 
-		QPainterPath path;
-		if (hps.size())
-			path.moveTo(0, hps[0]);
+        QPainterPath path;
+        if (hps.size())
+            path.moveTo(0, hps[0]);
 
-		for(int t = 1; t < hps.size(); ++t)
-			path.lineTo(t, hps[t]);
+        for(int t = 1; t < hps.size(); ++t)
+            path.lineTo(t, hps[t]);
 
-		scene->addPath(path, QPen(c));
-		++i;
-	}
+        scene->addPath(path, QPen(c));
+        ++i;
+    }
 
-	graphic->setScene(scene);
-	graphic->fitInView(graphic->sceneRect());
+    graphic->setScene(scene);
+    graphic->fitInView(graphic->sceneRect());
 }
 
 void PageGameStats::GameStats(char type, const QString & info)
 {
-	switch(type) {
-		case 'r' : {
-			AddStatText(QString("<h1 align=\"center\">%1</h1>").arg(info));
-			break;
-		}
-		case 'D' : {
-			int i = info.indexOf(' ');
-			QString message = PageGameStats::tr("<p>The best shot award was won by <b>%1</b> with <b>%2</b> pts.</p>")
-					.arg(info.mid(i + 1), info.left(i));
-			AddStatText(message);
-			break;
-		}
-		case 'k' : {
-			int i = info.indexOf(' ');
-			int num = info.left(i).toInt();
-			QString message = PageGameStats::tr("<p>The best killer is <b>%1</b> with <b>%2</b> kills in a turn.</p>", "", num)
-					.arg(info.mid(i + 1), info.left(i));
-			AddStatText(message);
-			break;
-		}
-		case 'K' : {
-			int num = info.toInt();
-			QString message = PageGameStats::tr("<p>A total of <b>%1</b> hedgehog(s) were killed during this round.</p>", "", num).arg(num);
-			AddStatText(message);
-			break;
-		}
-		case 'H' : {
-			int i = info.indexOf(' ');
-			quint32 clan = info.left(i).toInt();
-			quint32 hp = info.mid(i + 1).toUInt();
-			healthPoints[clan].append(hp);
-			break;
-		}
-	}
+    switch(type) {
+        case 'r' : {
+            AddStatText(QString("<h1 align=\"center\">%1</h1>").arg(info));
+            break;
+        }
+        case 'D' : {
+            int i = info.indexOf(' ');
+            QString message = PageGameStats::tr("<p>The best shot award was won by <b>%1</b> with <b>%2</b> pts.</p>")
+                    .arg(info.mid(i + 1), info.left(i));
+            AddStatText(message);
+            break;
+        }
+        case 'k' : {
+            int i = info.indexOf(' ');
+            int num = info.left(i).toInt();
+            QString message = PageGameStats::tr("<p>The best killer is <b>%1</b> with <b>%2</b> kills in a turn.</p>", "", num)
+                    .arg(info.mid(i + 1), info.left(i));
+            AddStatText(message);
+            break;
+        }
+        case 'K' : {
+            int num = info.toInt();
+            QString message = PageGameStats::tr("<p>A total of <b>%1</b> hedgehog(s) were killed during this round.</p>", "", num).arg(num);
+            AddStatText(message);
+            break;
+        }
+        case 'H' : {
+            int i = info.indexOf(' ');
+            quint32 clan = info.left(i).toInt();
+            quint32 hp = info.mid(i + 1).toUInt();
+            healthPoints[clan].append(hp);
+            break;
+        }
+    }
 }
--- a/QTfrontend/statsPage.h	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/statsPage.h	Sat Mar 06 10:59:20 2010 +0000
@@ -26,35 +26,35 @@
 
 class FitGraphicsView : public QGraphicsView
 {
-	Q_OBJECT
+    Q_OBJECT
 
 public:
-	FitGraphicsView(QWidget* parent = 0);
+    FitGraphicsView(QWidget* parent = 0);
 
 protected:
-	void resizeEvent(QResizeEvent * event);
+    void resizeEvent(QResizeEvent * event);
 };
 
 class PageGameStats : public AbstractPage
 {
-	Q_OBJECT
+    Q_OBJECT
 
 public:
-	PageGameStats(QWidget* parent = 0);
+    PageGameStats(QWidget* parent = 0);
 
-	QPushButton *BtnBack;
-	QLabel *labelGameStats;
-	FitGraphicsView * graphic;
+    QPushButton *BtnBack;
+    QLabel *labelGameStats;
+    FitGraphicsView * graphic;
 
 public slots:
-	void GameStats(char type, const QString & info);
-	void clear();
-	void renderStats();
+    void GameStats(char type, const QString & info);
+    void clear();
+    void renderStats();
 
 private:
-	void AddStatText(const QString & msg);
+    void AddStatText(const QString & msg);
 
-	QMap<quint32, QVector<quint32> > healthPoints;
+    QMap<quint32, QVector<quint32> > healthPoints;
 };
 
 #endif // STATSPAGE_H
--- a/QTfrontend/tcpBase.cpp	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/tcpBase.cpp	Sat Mar 06 10:59:20 2010 +0000
@@ -41,8 +41,8 @@
     IPCServer->setMaxPendingConnections(1);
     if (!IPCServer->listen(QHostAddress::LocalHost)) {
       QMessageBox::critical(0, tr("Error"),
-			    tr("Unable to start the server: %1.")
-			    .arg(IPCServer->errorString()));
+                tr("Unable to start the server: %1.")
+                .arg(IPCServer->errorString()));
       exit(0); // FIXME - should be graceful exit here
     }
   }
@@ -97,8 +97,8 @@
 void TCPBase::StartProcessError(QProcess::ProcessError error)
 {
   QMessageBox::critical(0, tr("Error"),
-			tr("Unable to run engine: %1 (")
-			.arg(error) + bindir->absolutePath() + "/hwengine)");
+            tr("Unable to run engine: %1 (")
+            .arg(error) + bindir->absolutePath() + "/hwengine)");
 }
 
 void TCPBase::tcpServerReady()
@@ -135,27 +135,27 @@
 
 void TCPBase::SendIPC(const QByteArray & buf)
 {
-	if (buf.size() > MAXMSGCHARS) return;
-	quint8 len = buf.size();
-	RawSendIPC(QByteArray::fromRawData((char *)&len, 1) + buf);
+    if (buf.size() > MAXMSGCHARS) return;
+    quint8 len = buf.size();
+    RawSendIPC(QByteArray::fromRawData((char *)&len, 1) + buf);
 }
 
 void TCPBase::RawSendIPC(const QByteArray & buf)
 {
-	if (!IPCSocket)
-	{
-		toSendBuf += buf;
-	} else
-	{
-		if (toSendBuf.size() > 0)
-		{
-			IPCSocket->write(toSendBuf);
-			if(m_isDemoMode) demo.append(toSendBuf);
-			toSendBuf.clear();
-		}
-		if(!buf.isEmpty()) {
-		  IPCSocket->write(buf);
-		  if(m_isDemoMode) demo.append(buf);
-		}
-	}
+    if (!IPCSocket)
+    {
+        toSendBuf += buf;
+    } else
+    {
+        if (toSendBuf.size() > 0)
+        {
+            IPCSocket->write(toSendBuf);
+            if(m_isDemoMode) demo.append(toSendBuf);
+            toSendBuf.clear();
+        }
+        if(!buf.isEmpty()) {
+          IPCSocket->write(buf);
+          if(m_isDemoMode) demo.append(buf);
+        }
+    }
 }
--- a/QTfrontend/team.cpp	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/team.cpp	Sat Mar 06 10:59:20 2010 +0000
@@ -29,49 +29,49 @@
 #include "hats.h"
 
 HWTeam::HWTeam(const QString & teamname) :
-	difficulty(0),
-	numHedgehogs(4),
-	m_isNetTeam(false)
+    difficulty(0),
+    numHedgehogs(4),
+    m_isNetTeam(false)
 {
-	TeamName = teamname;
-	OldTeamName = TeamName;
-	for (int i = 0; i < 8; i++)
-	{
-		HHName[i].sprintf("hedgehog %d", i);
-		HHHat[i] = "NoHat";
-	}
-	Grave = "Statue";
-	Fort = "Plane";
-	Voicepack = "Default";
-	Flag = "hedgewars";
-	for(int i = 0; i < BINDS_NUMBER; i++)
-	{
-		binds[i].action = cbinds[i].action;
-		binds[i].strbind = cbinds[i].strbind;
-	}
+    TeamName = teamname;
+    OldTeamName = TeamName;
+    for (int i = 0; i < 8; i++)
+    {
+        HHName[i].sprintf("hedgehog %d", i);
+        HHHat[i] = "NoHat";
+    }
+    Grave = "Statue";
+    Fort = "Plane";
+    Voicepack = "Default";
+    Flag = "hedgewars";
+    for(int i = 0; i < BINDS_NUMBER; i++)
+    {
+        binds[i].action = cbinds[i].action;
+        binds[i].strbind = cbinds[i].strbind;
+    }
 }
 
 HWTeam::HWTeam(const QStringList& strLst) :
   numHedgehogs(4),
   m_isNetTeam(true)
 {
-	// net teams are configured from QStringList
-	if(strLst.size() != 23) throw HWTeamConstructException();
-	TeamName = strLst[0];
-	Grave = strLst[1];
-	Fort = strLst[2];
-	Voicepack = strLst[3];
-	Flag = strLst[4];
-	Owner = strLst[5];
-	difficulty = strLst[6].toUInt();
-	for(int i = 0; i < 8; i++)
-	{
-		HHName[i]=strLst[i * 2 + 7];
-		HHHat[i]=strLst[i * 2 + 8];
+    // net teams are configured from QStringList
+    if(strLst.size() != 23) throw HWTeamConstructException();
+    TeamName = strLst[0];
+    Grave = strLst[1];
+    Fort = strLst[2];
+    Voicepack = strLst[3];
+    Flag = strLst[4];
+    Owner = strLst[5];
+    difficulty = strLst[6].toUInt();
+    for(int i = 0; i < 8; i++)
+    {
+        HHName[i]=strLst[i * 2 + 7];
+        HHHat[i]=strLst[i * 2 + 8];
 // Somehow claymore managed an empty hat.  Until we figure out how, this should avoid a repeat
 // Checking net teams is probably pointless, but can't hurt.
         if (HHHat[i].length() == 0) HHHat[i] = "NoHat"; 
-	}
+    }
 }
 
 HWTeam::HWTeam() :
@@ -79,217 +79,217 @@
   numHedgehogs(4),
   m_isNetTeam(false)
 {
-	TeamName = QString("Team");
-	for (int i = 0; i < 8; i++)
-	{
-		HHName[i].sprintf("hedgehog %d", i);
-		HHHat[i] = "NoHat";
-	}
+    TeamName = QString("Team");
+    for (int i = 0; i < 8; i++)
+    {
+        HHName[i].sprintf("hedgehog %d", i);
+        HHHat[i] = "NoHat";
+    }
 
-	Grave = QString("Simple"); // default
-	Fort = QString("Island"); // default
-	Voicepack = "Default";
-	Flag = "hedgewars";
+    Grave = QString("Simple"); // default
+    Fort = QString("Island"); // default
+    Voicepack = "Default";
+    Flag = "hedgewars";
 
-	for(int i = 0; i < BINDS_NUMBER; i++)
-	{
-		binds[i].action = cbinds[i].action;
-		binds[i].strbind = cbinds[i].strbind;
-	}
+    for(int i = 0; i < BINDS_NUMBER; i++)
+    {
+        binds[i].action = cbinds[i].action;
+        binds[i].strbind = cbinds[i].strbind;
+    }
 }
 
 
 bool HWTeam::LoadFromFile()
 {
-	numHedgehogs=4;
-	QFile cfgfile(cfgdir->absolutePath() + "/" + TeamName + ".cfg");
-	if (!cfgfile.open(QIODevice::ReadOnly)) return false;
-	QTextStream stream(&cfgfile);
-	stream.setCodec("UTF-8");
-	QString str;
-	QString action;
+    numHedgehogs=4;
+    QFile cfgfile(cfgdir->absolutePath() + "/" + TeamName + ".cfg");
+    if (!cfgfile.open(QIODevice::ReadOnly)) return false;
+    QTextStream stream(&cfgfile);
+    stream.setCodec("UTF-8");
+    QString str;
+    QString action;
 
-	while (!stream.atEnd())
-	{
-		str = stream.readLine();
-		if (str.startsWith(";")) continue;
-		/*if (str.startsWith("name team "))
-		{
-			str.remove(0, 10);
-			TeamName = str;
-		} else*/
-		if (str.startsWith("name hh"))
-		{
-			str.remove(0, 7);
-			long i = str.left(1).toLong();
-			if ((i < 0) || (i > 7)) continue;
-			str.remove(0, 2);
-			HHName[i] = str;
-		} else
-		if (str.startsWith("hat"))
-		{
-			str.remove(0, 3);
-			long i = str.left(1).toLong();
-			if ((i < 0) || (i > 7)) continue;
-			str.remove(0, 2);
-			HHHat[i] = str;
+    while (!stream.atEnd())
+    {
+        str = stream.readLine();
+        if (str.startsWith(";")) continue;
+        /*if (str.startsWith("name team "))
+        {
+            str.remove(0, 10);
+            TeamName = str;
+        } else*/
+        if (str.startsWith("name hh"))
+        {
+            str.remove(0, 7);
+            long i = str.left(1).toLong();
+            if ((i < 0) || (i > 7)) continue;
+            str.remove(0, 2);
+            HHName[i] = str;
+        } else
+        if (str.startsWith("hat"))
+        {
+            str.remove(0, 3);
+            long i = str.left(1).toLong();
+            if ((i < 0) || (i > 7)) continue;
+            str.remove(0, 2);
+            HHHat[i] = str;
 // Somehow claymore managed an empty hat.  Until we figure out how, this should avoid a repeat
             if (HHHat[i].length() == 0) HHHat[i] = "NoHat"; 
-		} else
-		if (str.startsWith("grave "))
-		{
-			str.remove(0, 6);
-			Grave = str;
-		} else
-		if (str.startsWith("fort "))
-		{
-			str.remove(0, 5);
-			Fort = str;
-		} else
-		if (str.startsWith("flag "))
-		{
-			str.remove(0, 5);
-			Flag = str;
-		} else
-		if (str.startsWith("voicepack "))
-		{
-			str.remove(0, 10);
-			Voicepack = str;
-		} else
-		if (str.startsWith("bind "))
-		{
-			str.remove(0, 5);
-			action = str.section(' ', 1);
-			str = str.section(' ', 0, 0);
-			str.truncate(15);
-			for (int i = 0; i < BINDS_NUMBER; i++)
-				if (action == binds[i].action)
-				{
-					binds[i].strbind = str;
-					break;
-				}
-		} else
-		if (str.startsWith("difficulty "))
-		{
-		  str.remove(0, 11);
-		  difficulty=str.toUInt();
-		  if (difficulty>5) difficulty=0; // this shouldn't normally happen
-		}
-	}
-	cfgfile.close();
-	return true;
+        } else
+        if (str.startsWith("grave "))
+        {
+            str.remove(0, 6);
+            Grave = str;
+        } else
+        if (str.startsWith("fort "))
+        {
+            str.remove(0, 5);
+            Fort = str;
+        } else
+        if (str.startsWith("flag "))
+        {
+            str.remove(0, 5);
+            Flag = str;
+        } else
+        if (str.startsWith("voicepack "))
+        {
+            str.remove(0, 10);
+            Voicepack = str;
+        } else
+        if (str.startsWith("bind "))
+        {
+            str.remove(0, 5);
+            action = str.section(' ', 1);
+            str = str.section(' ', 0, 0);
+            str.truncate(15);
+            for (int i = 0; i < BINDS_NUMBER; i++)
+                if (action == binds[i].action)
+                {
+                    binds[i].strbind = str;
+                    break;
+                }
+        } else
+        if (str.startsWith("difficulty "))
+        {
+          str.remove(0, 11);
+          difficulty=str.toUInt();
+          if (difficulty>5) difficulty=0; // this shouldn't normally happen
+        }
+    }
+    cfgfile.close();
+    return true;
 }
 
 bool HWTeam::SaveToFile()
 {
-	if (OldTeamName != TeamName)
-	{
-		QFile cfgfile(cfgdir->absolutePath() + "/" + OldTeamName + ".cfg");
-		cfgfile.remove();
-		OldTeamName = TeamName;
-	}
-	QFile cfgfile(cfgdir->absolutePath() + "/" + TeamName + ".cfg");
-	if (!cfgfile.open(QIODevice::WriteOnly)) return false;
-	QTextStream stream(&cfgfile);
-	stream.setCodec("UTF-8");
-	stream << "; Generated by Hedgewars, do not modify" << endl;
-	stream << "name team " << TeamName << endl;
-	for (int i = 0; i < 8; i++)
-	{
-		stream << "name hh" << i << " " << HHName[i] << endl;
-		stream << "hat" << i << " " << HHHat[i] << endl;
-	}
-	stream << "grave " << Grave << endl;
-	stream << "fort " << Fort << endl;
-	stream << "voicepack " << Voicepack << endl;
-	stream << "flag " << Flag << endl;
-	for(int i = 0; i < BINDS_NUMBER; i++)
-	{
-		stream << "bind " << binds[i].strbind << " " << binds[i].action << endl;
-	}
-	stream << "difficulty " << difficulty << endl;
-	cfgfile.close();
-	return true;
+    if (OldTeamName != TeamName)
+    {
+        QFile cfgfile(cfgdir->absolutePath() + "/" + OldTeamName + ".cfg");
+        cfgfile.remove();
+        OldTeamName = TeamName;
+    }
+    QFile cfgfile(cfgdir->absolutePath() + "/" + TeamName + ".cfg");
+    if (!cfgfile.open(QIODevice::WriteOnly)) return false;
+    QTextStream stream(&cfgfile);
+    stream.setCodec("UTF-8");
+    stream << "; Generated by Hedgewars, do not modify" << endl;
+    stream << "name team " << TeamName << endl;
+    for (int i = 0; i < 8; i++)
+    {
+        stream << "name hh" << i << " " << HHName[i] << endl;
+        stream << "hat" << i << " " << HHHat[i] << endl;
+    }
+    stream << "grave " << Grave << endl;
+    stream << "fort " << Fort << endl;
+    stream << "voicepack " << Voicepack << endl;
+    stream << "flag " << Flag << endl;
+    for(int i = 0; i < BINDS_NUMBER; i++)
+    {
+        stream << "bind " << binds[i].strbind << " " << binds[i].action << endl;
+    }
+    stream << "difficulty " << difficulty << endl;
+    cfgfile.close();
+    return true;
 }
 
 void HWTeam::SetToPage(HWForm * hwform)
 {
-	hwform->ui.pageEditTeam->TeamNameEdit->setText(TeamName);
-	hwform->ui.pageEditTeam->CBTeamLvl->setCurrentIndex(difficulty);
-	for(int i = 0; i < 8; i++)
-	{
+    hwform->ui.pageEditTeam->TeamNameEdit->setText(TeamName);
+    hwform->ui.pageEditTeam->CBTeamLvl->setCurrentIndex(difficulty);
+    for(int i = 0; i < 8; i++)
+    {
          hwform->ui.pageEditTeam->HHNameEdit[i]->setText(HHName[i]);
          if (HHHat[i].startsWith("Reserved"))
             hwform->ui.pageEditTeam->HHHats[i]->setCurrentIndex(hwform->ui.pageEditTeam->HHHats[i]->findData("Reserved "+HHHat[i].remove(0,40), Qt::DisplayRole));
          else
-	        hwform->ui.pageEditTeam->HHHats[i]->setCurrentIndex(hwform->ui.pageEditTeam->HHHats[i]->findData(HHHat[i], Qt::DisplayRole));
-	}
-	hwform->ui.pageEditTeam->CBGrave->setCurrentIndex(hwform->ui.pageEditTeam->CBGrave->findText(Grave));
-	hwform->ui.pageEditTeam->CBFlag->setCurrentIndex(hwform->ui.pageEditTeam->CBFlag->findText(Flag));
+            hwform->ui.pageEditTeam->HHHats[i]->setCurrentIndex(hwform->ui.pageEditTeam->HHHats[i]->findData(HHHat[i], Qt::DisplayRole));
+    }
+    hwform->ui.pageEditTeam->CBGrave->setCurrentIndex(hwform->ui.pageEditTeam->CBGrave->findText(Grave));
+    hwform->ui.pageEditTeam->CBFlag->setCurrentIndex(hwform->ui.pageEditTeam->CBFlag->findText(Flag));
 
-	hwform->ui.pageEditTeam->CBFort->setCurrentIndex(hwform->ui.pageEditTeam->CBFort->findText(Fort));
-	hwform->ui.pageEditTeam->CBVoicepack->setCurrentIndex(hwform->ui.pageEditTeam->CBVoicepack->findText(Voicepack));
-	//hwform->ui.pageEditTeam->CBFort_activated(Fort);
+    hwform->ui.pageEditTeam->CBFort->setCurrentIndex(hwform->ui.pageEditTeam->CBFort->findText(Fort));
+    hwform->ui.pageEditTeam->CBVoicepack->setCurrentIndex(hwform->ui.pageEditTeam->CBVoicepack->findText(Voicepack));
+    //hwform->ui.pageEditTeam->CBFort_activated(Fort);
 
-	for(int i = 0; i < BINDS_NUMBER; i++)
-	{
-		hwform->ui.pageEditTeam->CBBind[i]->setCurrentIndex(hwform->ui.pageEditTeam->CBBind[i]->findData(binds[i].strbind));
-	}
+    for(int i = 0; i < BINDS_NUMBER; i++)
+    {
+        hwform->ui.pageEditTeam->CBBind[i]->setCurrentIndex(hwform->ui.pageEditTeam->CBBind[i]->findData(binds[i].strbind));
+    }
 }
 
 void HWTeam::GetFromPage(HWForm * hwform)
 {
-	TeamName  = hwform->ui.pageEditTeam->TeamNameEdit->text();
-	difficulty = hwform->ui.pageEditTeam->CBTeamLvl->currentIndex();
-	for(int i = 0; i < 8; i++)
-	{
-		HHName[i] = hwform->ui.pageEditTeam->HHNameEdit[i]->text();
+    TeamName  = hwform->ui.pageEditTeam->TeamNameEdit->text();
+    difficulty = hwform->ui.pageEditTeam->CBTeamLvl->currentIndex();
+    for(int i = 0; i < 8; i++)
+    {
+        HHName[i] = hwform->ui.pageEditTeam->HHNameEdit[i]->text();
         if (hwform->ui.pageEditTeam->HHHats[i]->currentText().startsWith("Reserved"))
-		    HHHat[i] = "Reserved"+playerHash+hwform->ui.pageEditTeam->HHHats[i]->currentText().remove(0,9);
+            HHHat[i] = "Reserved"+playerHash+hwform->ui.pageEditTeam->HHHats[i]->currentText().remove(0,9);
         else
-	        HHHat[i] = hwform->ui.pageEditTeam->HHHats[i]->currentText();
-	}
+            HHHat[i] = hwform->ui.pageEditTeam->HHHats[i]->currentText();
+    }
 
-	Grave = hwform->ui.pageEditTeam->CBGrave->currentText();
-	Fort = hwform->ui.pageEditTeam->CBFort->currentText();
-	Voicepack = hwform->ui.pageEditTeam->CBVoicepack->currentText();
-	Flag = hwform->ui.pageEditTeam->CBFlag->currentText();
-	for(int i = 0; i < BINDS_NUMBER; i++)
-	{
-		binds[i].strbind = hwform->ui.pageEditTeam->CBBind[i]->itemData(hwform->ui.pageEditTeam->CBBind[i]->currentIndex()).toString();
-	}
+    Grave = hwform->ui.pageEditTeam->CBGrave->currentText();
+    Fort = hwform->ui.pageEditTeam->CBFort->currentText();
+    Voicepack = hwform->ui.pageEditTeam->CBVoicepack->currentText();
+    Flag = hwform->ui.pageEditTeam->CBFlag->currentText();
+    for(int i = 0; i < BINDS_NUMBER; i++)
+    {
+        binds[i].strbind = hwform->ui.pageEditTeam->CBBind[i]->itemData(hwform->ui.pageEditTeam->CBBind[i]->currentIndex()).toString();
+    }
 }
 
 QStringList HWTeam::TeamGameConfig(quint32 InitHealth) const
 {
-	QStringList sl;
+    QStringList sl;
     if (m_isNetTeam)
     {
-	    sl.push_back(QString("eaddteam %3 %1 %2").arg(teamColor.rgb() & 0xffffff).arg(TeamName).arg(QString(QCryptographicHash::hash(Owner.toLatin1(), QCryptographicHash::Md5).toHex())));
-		sl.push_back("erdriven");
+        sl.push_back(QString("eaddteam %3 %1 %2").arg(teamColor.rgb() & 0xffffff).arg(TeamName).arg(QString(QCryptographicHash::hash(Owner.toLatin1(), QCryptographicHash::Md5).toHex())));
+        sl.push_back("erdriven");
     }
     else sl.push_back(QString("eaddteam %3 %1 %2").arg(teamColor.rgb() & 0xffffff).arg(TeamName).arg(playerHash));
 
-	sl.push_back(QString("egrave " + Grave));
-	sl.push_back(QString("efort " + Fort));
-	sl.push_back(QString("evoicepack " + Voicepack));
-	sl.push_back(QString("eflag " + Flag));
+    sl.push_back(QString("egrave " + Grave));
+    sl.push_back(QString("efort " + Fort));
+    sl.push_back(QString("evoicepack " + Voicepack));
+    sl.push_back(QString("eflag " + Flag));
 
-	if (!m_isNetTeam)
-		for(int i = 0; i < BINDS_NUMBER; i++)
-			if(!binds[i].strbind.isEmpty())
-				sl.push_back(QString("ebind " + binds[i].strbind + " " + binds[i].action));
+    if (!m_isNetTeam)
+        for(int i = 0; i < BINDS_NUMBER; i++)
+            if(!binds[i].strbind.isEmpty())
+                sl.push_back(QString("ebind " + binds[i].strbind + " " + binds[i].action));
 
-	for (int t = 0; t < numHedgehogs; t++)
-	{
-	  sl.push_back(QString("eaddhh %1 %2 %3")
-		       .arg(QString::number(difficulty),
-			    QString::number(InitHealth),
-			    HHName[t]));
-	  sl.push_back(QString("ehat %1")
-		       .arg(HHHat[t]));
-	}
-	return sl;
+    for (int t = 0; t < numHedgehogs; t++)
+    {
+      sl.push_back(QString("eaddhh %1 %2 %3")
+               .arg(QString::number(difficulty),
+                QString::number(InitHealth),
+                HHName[t]));
+      sl.push_back(QString("ehat %1")
+               .arg(HHHat[t]));
+    }
+    return sl;
 }
 
 bool HWTeam::isNetTeam() const
--- a/QTfrontend/team.h	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/team.h	Sat Mar 06 10:59:20 2010 +0000
@@ -33,38 +33,38 @@
 
 class HWTeam
 {
-	public:
-		HWTeam(const QString & teamname);
-		HWTeam(const QStringList& strLst);
-		HWTeam();
+    public:
+        HWTeam(const QString & teamname);
+        HWTeam(const QStringList& strLst);
+        HWTeam();
 
-		bool isNetTeam() const;
+        bool isNetTeam() const;
 
-		QString TeamName;
-		QString HHName[8];
-		QString HHHat[8];
-		QString Grave;
-		QString Fort;
-		QString Flag;
-		QString Voicepack;
-		QString Owner;
-		unsigned int difficulty;
-		BindAction binds[BINDS_NUMBER];
+        QString TeamName;
+        QString HHName[8];
+        QString HHHat[8];
+        QString Grave;
+        QString Fort;
+        QString Flag;
+        QString Voicepack;
+        QString Owner;
+        unsigned int difficulty;
+        BindAction binds[BINDS_NUMBER];
 
-		unsigned char numHedgehogs;
-		QColor teamColor;
+        unsigned char numHedgehogs;
+        QColor teamColor;
 
-		bool LoadFromFile();
-		bool SaveToFile();
-		void SetToPage(HWForm * hwform);
-		void GetFromPage(HWForm * hwform);
-		QStringList TeamGameConfig(quint32 InitHealth) const;
+        bool LoadFromFile();
+        bool SaveToFile();
+        void SetToPage(HWForm * hwform);
+        void GetFromPage(HWForm * hwform);
+        QStringList TeamGameConfig(quint32 InitHealth) const;
 
-		bool operator==(const HWTeam& t1) const;
-		bool operator<(const HWTeam& t1) const;
-	private:
-		bool m_isNetTeam;
-		QString OldTeamName;
+        bool operator==(const HWTeam& t1) const;
+        bool operator<(const HWTeam& t1) const;
+    private:
+        bool m_isNetTeam;
+        QString OldTeamName;
 
 };
 
--- a/QTfrontend/teamselect.cpp	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/teamselect.cpp	Sat Mar 06 10:59:20 2010 +0000
@@ -35,21 +35,21 @@
     framePlaying->addTeam(team, true);
     curPlayingTeams.push_back(team);
     connect(framePlaying->getTeamWidget(team), SIGNAL(teamStatusChanged(HWTeam)),
-		     this, SLOT(netTeamStatusChanged(const HWTeam&)));
+             this, SLOT(netTeamStatusChanged(const HWTeam&)));
     connect(framePlaying->getTeamWidget(team), SIGNAL(hhNmChanged(const HWTeam&)),
-			    this, SLOT(hhNumChanged(const HWTeam&)));
+                this, SLOT(hhNumChanged(const HWTeam&)));
     dynamic_cast<TeamShowWidget*>(framePlaying->getTeamWidget(team))->hhNumChanged();
     connect(framePlaying->getTeamWidget(team), SIGNAL(teamColorChanged(const HWTeam&)),
-			    this, SLOT(proxyTeamColorChanged(const HWTeam&)));
+                this, SLOT(proxyTeamColorChanged(const HWTeam&)));
   } else {
     frameDontPlaying->addTeam(team, false);
     curDontPlayingTeams.push_back(team);
     if(m_acceptOuter) {
       connect(frameDontPlaying->getTeamWidget(team), SIGNAL(teamStatusChanged(HWTeam)),
-	      this, SLOT(pre_changeTeamStatus(HWTeam)));
+          this, SLOT(pre_changeTeamStatus(HWTeam)));
     } else {
       connect(frameDontPlaying->getTeamWidget(team), SIGNAL(teamStatusChanged(HWTeam)),
-	      this, SLOT(changeTeamStatus(HWTeam)));
+          this, SLOT(changeTeamStatus(HWTeam)));
     }
   }
   emit setEnabledGameStart(curPlayingTeams.size()>1);
@@ -57,41 +57,41 @@
 
 void TeamSelWidget::setInteractivity(bool interactive)
 {
-	framePlaying->setInteractivity(interactive);
+    framePlaying->setInteractivity(interactive);
 }
 
 void TeamSelWidget::hhNumChanged(const HWTeam& team)
 {
-	QList<HWTeam>::iterator itPlay=std::find(curPlayingTeams.begin(), curPlayingTeams.end(), team);
-	if(itPlay==curPlayingTeams.end())
-	{
-		qWarning() << QString("hhNumChanged: team '%1' not found").arg(team.TeamName);
-		return;
-	}
-	itPlay->numHedgehogs=team.numHedgehogs;
-	emit hhogsNumChanged(team);
+    QList<HWTeam>::iterator itPlay=std::find(curPlayingTeams.begin(), curPlayingTeams.end(), team);
+    if(itPlay==curPlayingTeams.end())
+    {
+        qWarning() << QString("hhNumChanged: team '%1' not found").arg(team.TeamName);
+        return;
+    }
+    itPlay->numHedgehogs=team.numHedgehogs;
+    emit hhogsNumChanged(team);
 }
 
 void TeamSelWidget::proxyTeamColorChanged(const HWTeam& team)
 {
-	QList<HWTeam>::iterator itPlay=std::find(curPlayingTeams.begin(), curPlayingTeams.end(), team);
-	if(itPlay==curPlayingTeams.end())
-	{
-		qWarning() << QString("proxyTeamColorChanged: team '%1' not found").arg(team.TeamName);
-		return;
-	}
-	itPlay->teamColor=team.teamColor;
-	emit teamColorChanged(team);
+    QList<HWTeam>::iterator itPlay=std::find(curPlayingTeams.begin(), curPlayingTeams.end(), team);
+    if(itPlay==curPlayingTeams.end())
+    {
+        qWarning() << QString("proxyTeamColorChanged: team '%1' not found").arg(team.TeamName);
+        return;
+    }
+    itPlay->teamColor=team.teamColor;
+    emit teamColorChanged(team);
 }
 
 void TeamSelWidget::changeHHNum(const HWTeam& team)
 {
   QList<HWTeam>::iterator itPlay=std::find(curPlayingTeams.begin(), curPlayingTeams.end(), team);
-	if(itPlay==curPlayingTeams.end())
-	{
-		qWarning() << QString("changeHHNum: team '%1' not found").arg(team.TeamName);
-		return;
-	}
+    if(itPlay==curPlayingTeams.end())
+    {
+        qWarning() << QString("changeHHNum: team '%1' not found").arg(team.TeamName);
+        return;
+    }
   itPlay->numHedgehogs=team.numHedgehogs;
 
   framePlaying->setHHNum(team);
@@ -99,35 +99,35 @@
 
 void TeamSelWidget::changeTeamColor(const HWTeam& team)
 {
-	QList<HWTeam>::iterator itPlay=std::find(curPlayingTeams.begin(), curPlayingTeams.end(), team);
-	if(itPlay==curPlayingTeams.end())
-	{
-		qWarning() << QString("changeTeamColor: team '%1' not found").arg(team.TeamName);
-		return;
-	}
-	itPlay->teamColor=team.teamColor;
+    QList<HWTeam>::iterator itPlay=std::find(curPlayingTeams.begin(), curPlayingTeams.end(), team);
+    if(itPlay==curPlayingTeams.end())
+    {
+        qWarning() << QString("changeTeamColor: team '%1' not found").arg(team.TeamName);
+        return;
+    }
+    itPlay->teamColor=team.teamColor;
 
-	framePlaying->setTeamColor(team);
+    framePlaying->setTeamColor(team);
 }
 
 void TeamSelWidget::removeNetTeam(const HWTeam& team)
 {
-	//qDebug() << QString("removeNetTeam: removing team '%1'").arg(team.TeamName);
-	for(;;) {
-		QList<HWTeam>::iterator itPlay=std::find(curPlayingTeams.begin(), curPlayingTeams.end(), team);
-		if(itPlay==curPlayingTeams.end())
-		{
-			qWarning() << QString("removeNetTeam: team '%1' not found").arg(team.TeamName);
-			break;
-		}
-		if(itPlay->isNetTeam()) {
-			QObject::disconnect(framePlaying->getTeamWidget(*itPlay), SIGNAL(teamStatusChanged(HWTeam)));
-			framePlaying->removeTeam(team);
-			curPlayingTeams.erase(itPlay);
-			break;
-		}
-	}
-	emit setEnabledGameStart(curPlayingTeams.size()>1);
+    //qDebug() << QString("removeNetTeam: removing team '%1'").arg(team.TeamName);
+    for(;;) {
+        QList<HWTeam>::iterator itPlay=std::find(curPlayingTeams.begin(), curPlayingTeams.end(), team);
+        if(itPlay==curPlayingTeams.end())
+        {
+            qWarning() << QString("removeNetTeam: team '%1' not found").arg(team.TeamName);
+            break;
+        }
+        if(itPlay->isNetTeam()) {
+            QObject::disconnect(framePlaying->getTeamWidget(*itPlay), SIGNAL(teamStatusChanged(HWTeam)));
+            framePlaying->removeTeam(team);
+            curPlayingTeams.erase(itPlay);
+            break;
+        }
+    }
+    emit setEnabledGameStart(curPlayingTeams.size()>1);
 }
 
 void TeamSelWidget::netTeamStatusChanged(const HWTeam& team)
@@ -178,17 +178,17 @@
   pRemoveTeams->removeTeam(team);
   if(!team.isNetTeam() && m_acceptOuter && !willBePlaying) {
     connect(frameDontPlaying->getTeamWidget(team), SIGNAL(teamStatusChanged(HWTeam)),
-	    this, SLOT(pre_changeTeamStatus(HWTeam)));
+        this, SLOT(pre_changeTeamStatus(HWTeam)));
   } else {
     connect(pAddTeams->getTeamWidget(team), SIGNAL(teamStatusChanged(HWTeam)),
-	    this, SLOT(changeTeamStatus(HWTeam)));
+        this, SLOT(changeTeamStatus(HWTeam)));
   }
   if(willBePlaying) {
     connect(framePlaying->getTeamWidget(team), SIGNAL(hhNmChanged(const HWTeam&)),
-	    this, SLOT(hhNumChanged(const HWTeam&)));
+        this, SLOT(hhNumChanged(const HWTeam&)));
     dynamic_cast<TeamShowWidget*>(framePlaying->getTeamWidget(team))->hhNumChanged();
     connect(framePlaying->getTeamWidget(team), SIGNAL(teamColorChanged(const HWTeam&)),
-	    this, SLOT(proxyTeamColorChanged(const HWTeam&)));
+        this, SLOT(proxyTeamColorChanged(const HWTeam&)));
     emit teamColorChanged(((TeamShowWidget*)framePlaying->getTeamWidget(team))->getTeam());
   }
 
@@ -204,39 +204,39 @@
 
 void TeamSelWidget::addScrArea(FrameTeams* pfteams, QColor color, int fixedHeight)
 {
-	VertScrArea* area = new VertScrArea(color);
-	area->setWidget(pfteams);
-	mainLayout.addWidget(area, 30);
-	if (fixedHeight > 0)
-	{
-		area->setMinimumHeight(fixedHeight);
-		area->setMaximumHeight(fixedHeight);
-		area->setStyleSheet(
-				"FrameTeams{"
-					"border: solid;"
-					"border-width: 1px;"
-					"border-radius: 16px;"
-					"border-color: #ffcc00;"
-					"}"
-		);
-	}
+    VertScrArea* area = new VertScrArea(color);
+    area->setWidget(pfteams);
+    mainLayout.addWidget(area, 30);
+    if (fixedHeight > 0)
+    {
+        area->setMinimumHeight(fixedHeight);
+        area->setMaximumHeight(fixedHeight);
+        area->setStyleSheet(
+                "FrameTeams{"
+                    "border: solid;"
+                    "border-width: 1px;"
+                    "border-radius: 16px;"
+                    "border-color: #ffcc00;"
+                    "}"
+        );
+    }
 }
 
 TeamSelWidget::TeamSelWidget(QWidget* parent) :
   QGroupBox(parent), mainLayout(this), m_acceptOuter(false)
 {
-	setTitle(QGroupBox::tr("Playing teams"));
-	framePlaying = new FrameTeams();
-	frameDontPlaying = new FrameTeams();
+    setTitle(QGroupBox::tr("Playing teams"));
+    framePlaying = new FrameTeams();
+    frameDontPlaying = new FrameTeams();
 
-	QPalette p;
-	p.setColor(QPalette::Window, QColor(0x00, 0x00, 0x00));
-	addScrArea(framePlaying, p.color(QPalette::Window).light(105), 250);
-	addScrArea(frameDontPlaying, p.color(QPalette::Window).dark(105), 0);
-	QPushButton * btnSetup = new QPushButton(this);
-	btnSetup->setText(QPushButton::tr("Setup"));
-	connect(btnSetup, SIGNAL(clicked()), this, SIGNAL(SetupClicked()));
-	mainLayout.addWidget(btnSetup);
+    QPalette p;
+    p.setColor(QPalette::Window, QColor(0x00, 0x00, 0x00));
+    addScrArea(framePlaying, p.color(QPalette::Window).light(105), 250);
+    addScrArea(frameDontPlaying, p.color(QPalette::Window).dark(105), 0);
+    QPushButton * btnSetup = new QPushButton(this);
+    btnSetup->setText(QPushButton::tr("Setup"));
+    connect(btnSetup, SIGNAL(clicked()), this, SIGNAL(SetupClicked()));
+    mainLayout.addWidget(btnSetup);
 }
 
 void TeamSelWidget::setAcceptOuter(bool acceptOuter)
--- a/QTfrontend/teamselhelper.cpp	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/teamselhelper.cpp	Sat Mar 06 10:59:20 2010 +0000
@@ -35,62 +35,62 @@
   QWidget(parent), mainLayout(this), m_team(team), m_isPlaying(isPlaying), phhoger(0),
   colorButt(0)
 {
-	QPalette newPalette = palette();
-	newPalette.setColor(QPalette::Window, QColor(0x00, 0x00, 0x00));
-	setPalette(newPalette);
-	setAutoFillBackground(true);
+    QPalette newPalette = palette();
+    newPalette.setColor(QPalette::Window, QColor(0x00, 0x00, 0x00));
+    setPalette(newPalette);
+    setAutoFillBackground(true);
 
-	mainLayout.setSpacing(3);
-	mainLayout.setMargin(0);
-	this->setMaximumHeight(38);
-	this->setMinimumHeight(38);
-	QIcon difficultyIcon=team.isNetTeam() ?
-		QIcon(QString(":/res/botlevels/net%1.png").arg(m_team.difficulty))
-		: QIcon(QString(":/res/botlevels/%1.png").arg(m_team.difficulty));
+    mainLayout.setSpacing(3);
+    mainLayout.setMargin(0);
+    this->setMaximumHeight(38);
+    this->setMinimumHeight(38);
+    QIcon difficultyIcon=team.isNetTeam() ?
+        QIcon(QString(":/res/botlevels/net%1.png").arg(m_team.difficulty))
+        : QIcon(QString(":/res/botlevels/%1.png").arg(m_team.difficulty));
 
-	butt = new QPushButton(difficultyIcon, team.TeamName, this);
-	butt->setFlat(true);
-	butt->setToolTip(team.Owner);
-	mainLayout.addWidget(butt);
-	butt->setStyleSheet("QPushButton{"
-			"icon-size: 48px;"
-			"text-align: left;"
-			"background-color: #0d0544;"
-			"color: orange;"
-			"font: bold;"
-			"border-width: 2px;"
-			"margin: 6px 0px 6px 0px;"
-			"}");
+    butt = new QPushButton(difficultyIcon, team.TeamName, this);
+    butt->setFlat(true);
+    butt->setToolTip(team.Owner);
+    mainLayout.addWidget(butt);
+    butt->setStyleSheet("QPushButton{"
+            "icon-size: 48px;"
+            "text-align: left;"
+            "background-color: #0d0544;"
+            "color: orange;"
+            "font: bold;"
+            "border-width: 2px;"
+            "margin: 6px 0px 6px 0px;"
+            "}");
 
-	if(m_isPlaying) {
-		// team color
-		colorButt = new QPushButton(this);
-		colorButt->setMaximumWidth(26);
-		colorButt->setMinimumHeight(26);
-		colorButt->setGeometry(0, 0, 26, 26);
+    if(m_isPlaying) {
+        // team color
+        colorButt = new QPushButton(this);
+        colorButt->setMaximumWidth(26);
+        colorButt->setMinimumHeight(26);
+        colorButt->setGeometry(0, 0, 26, 26);
 
-		changeTeamColor();
-		connect(colorButt, SIGNAL(clicked()), this, SLOT(changeTeamColor()));
-		mainLayout.addWidget(colorButt);
+        changeTeamColor();
+        connect(colorButt, SIGNAL(clicked()), this, SLOT(changeTeamColor()));
+        mainLayout.addWidget(colorButt);
 
-		phhoger = new CHedgehogerWidget(QImage(":/res/hh25x25.png"), this);
-		connect(phhoger, SIGNAL(hedgehogsNumChanged()), this, SLOT(hhNumChanged()));
-		mainLayout.addWidget(phhoger);
-	} else {
-	}
+        phhoger = new CHedgehogerWidget(QImage(":/res/hh25x25.png"), this);
+        connect(phhoger, SIGNAL(hedgehogsNumChanged()), this, SLOT(hhNumChanged()));
+        mainLayout.addWidget(phhoger);
+    } else {
+    }
 
-	QObject::connect(butt, SIGNAL(clicked()), this, SLOT(activateTeam()));
-	//QObject::connect(bText, SIGNAL(clicked()), this, SLOT(activateTeam()));
+    QObject::connect(butt, SIGNAL(clicked()), this, SLOT(activateTeam()));
+    //QObject::connect(bText, SIGNAL(clicked()), this, SLOT(activateTeam()));
 }
 
 void TeamShowWidget::setInteractivity(bool interactive)
 {
-	if(m_team.isNetTeam()) {
-		butt->setEnabled(interactive);
-	}
+    if(m_team.isNetTeam()) {
+        butt->setEnabled(interactive);
+    }
 
-	colorButt->setEnabled(interactive);
-	phhoger->setEnabled(interactive);
+    colorButt->setEnabled(interactive);
+    phhoger->setEnabled(interactive);
 }
 
 void TeamShowWidget::setHHNum(unsigned int num)
@@ -120,30 +120,30 @@
 
 void TeamShowWidget::changeTeamColor(QColor color)
 {
-	FrameTeams* pOurFrameTeams=dynamic_cast<FrameTeams*>(parentWidget());
-	if(!color.isValid()) {
-		if(++pOurFrameTeams->currentColor==pOurFrameTeams->availableColors.end()) {
-			pOurFrameTeams->currentColor=pOurFrameTeams->availableColors.begin();
-		}
-		color=*pOurFrameTeams->currentColor;
-	} else {
-		// set according color iterator
-		pOurFrameTeams->currentColor=std::find(pOurFrameTeams->availableColors.begin(),
-				pOurFrameTeams->availableColors.end(), color);
-		if(pOurFrameTeams->currentColor==pOurFrameTeams->availableColors.end()) {
-			// error condition
-			pOurFrameTeams->currentColor=pOurFrameTeams->availableColors.begin();
-		}
-	}
+    FrameTeams* pOurFrameTeams=dynamic_cast<FrameTeams*>(parentWidget());
+    if(!color.isValid()) {
+        if(++pOurFrameTeams->currentColor==pOurFrameTeams->availableColors.end()) {
+            pOurFrameTeams->currentColor=pOurFrameTeams->availableColors.begin();
+        }
+        color=*pOurFrameTeams->currentColor;
+    } else {
+        // set according color iterator
+        pOurFrameTeams->currentColor=std::find(pOurFrameTeams->availableColors.begin(),
+                pOurFrameTeams->availableColors.end(), color);
+        if(pOurFrameTeams->currentColor==pOurFrameTeams->availableColors.end()) {
+            // error condition
+            pOurFrameTeams->currentColor=pOurFrameTeams->availableColors.begin();
+        }
+    }
 
-	colorButt->setStyleSheet(QString("QPushButton{"
-			"background-color: %1;"
-			"border-width: 1px;"
-			"border-radius: 2px;"
-			"}").arg(pOurFrameTeams->currentColor->name()));
+    colorButt->setStyleSheet(QString("QPushButton{"
+            "background-color: %1;"
+            "border-width: 1px;"
+            "border-radius: 2px;"
+            "}").arg(pOurFrameTeams->currentColor->name()));
 
-	m_team.teamColor=color;
-	emit teamColorChanged(m_team);
+    m_team.teamColor=color;
+    emit teamColorChanged(m_team);
 }
 
 HWTeam TeamShowWidget::getTeam() const
--- a/QTfrontend/togglebutton.cpp	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/togglebutton.cpp	Sat Mar 06 10:59:20 2010 +0000
@@ -20,60 +20,60 @@
 
 ToggleButtonWidget::ToggleButtonWidget(QWidget * parent, QString img)
 {
-	QVBoxLayout * l = new QVBoxLayout(this);
-	setLayout(l);
+    QVBoxLayout * l = new QVBoxLayout(this);
+    setLayout(l);
 
-	pbMain = new QPushButton(this);
-	pbMain->setCheckable(true);
+    pbMain = new QPushButton(this);
+    pbMain->setCheckable(true);
 
-	QPixmap pm(":/res/btnDisabled.png");
-	QPainter * painter = new QPainter();
+    QPixmap pm(":/res/btnDisabled.png");
+    QPainter * painter = new QPainter();
 
-	pmChecked.load(img);
-	pmDisabled.load(img);
+    pmChecked.load(img);
+    pmDisabled.load(img);
 
-	pbMain->setMaximumWidth(pmChecked.width() + 6);
+    pbMain->setMaximumWidth(pmChecked.width() + 6);
 
-	l->addWidget(pbMain);
+    l->addWidget(pbMain);
 
-	painter->begin(&pmDisabled);
-	painter->drawPixmap(pmDisabled.rect(), pm);
-	painter->end();
+    painter->begin(&pmDisabled);
+    painter->drawPixmap(pmDisabled.rect(), pm);
+    painter->end();
 
-	pbMain->setIconSize(pmDisabled.size());
-	pbMain->setIcon(pmDisabled);
+    pbMain->setIconSize(pmDisabled.size());
+    pbMain->setIcon(pmDisabled);
 
-	connect(pbMain, SIGNAL(toggled(bool)), this, SLOT(eventToggled(bool)));
+    connect(pbMain, SIGNAL(toggled(bool)), this, SLOT(eventToggled(bool)));
 
-	lbMain = new QLabel(this);
-	lbMain->setWordWrap(true);
-//	lbMain->setFixedHeight(32);
+    lbMain = new QLabel(this);
+    lbMain->setWordWrap(true);
+//  lbMain->setFixedHeight(32);
 
-	l->addWidget(lbMain);
+    l->addWidget(lbMain);
 }
 
 ToggleButtonWidget::~ToggleButtonWidget()
 {
-	delete pbMain;
-	delete lbMain;
+    delete pbMain;
+    delete lbMain;
 }
 
 bool ToggleButtonWidget::isChecked()
 {
-	return pbMain->isChecked();
+    return pbMain->isChecked();
 }
 
 void ToggleButtonWidget::setChecked(bool checked)
 {
-	pbMain->setChecked(checked);
+    pbMain->setChecked(checked);
 }
 
 void ToggleButtonWidget::setText(QString s)
 {
-	lbMain->setText(s);
+    lbMain->setText(s);
 }
 
 void ToggleButtonWidget::eventToggled(bool checked)
 {
-	if (checked) pbMain->setIcon(pmChecked); else pbMain->setIcon(pmDisabled);
+    if (checked) pbMain->setIcon(pmChecked); else pbMain->setIcon(pmDisabled);
 }
--- a/QTfrontend/togglebutton.h	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/togglebutton.h	Sat Mar 06 10:59:20 2010 +0000
@@ -27,24 +27,24 @@
 
 class ToggleButtonWidget : public QWidget
 {
-	Q_OBJECT
+    Q_OBJECT
 public:
-	ToggleButtonWidget(QWidget * parent, QString img);
-	~ToggleButtonWidget();
-	bool isChecked();
-	void setChecked(bool checked);
-	void setText(QString s);
-	QPushButton * button()
-	{
-		return pbMain;
-	}
+    ToggleButtonWidget(QWidget * parent, QString img);
+    ~ToggleButtonWidget();
+    bool isChecked();
+    void setChecked(bool checked);
+    void setText(QString s);
+    QPushButton * button()
+    {
+        return pbMain;
+    }
 private:
-	QLabel * lbMain;
-	QPushButton * pbMain;
-	QPixmap pmChecked;
-	QPixmap pmDisabled;
+    QLabel * lbMain;
+    QPushButton * pbMain;
+    QPixmap pmChecked;
+    QPixmap pmDisabled;
 private slots:
-	void eventToggled(bool checked);
+    void eventToggled(bool checked);
 };
 
 #endif // TOGGLEBUTTONWIDGET_H
--- a/QTfrontend/ui_hwform.cpp	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/ui_hwform.cpp	Sat Mar 06 10:59:20 2010 +0000
@@ -30,87 +30,87 @@
 
 void Ui_HWForm::setupUi(HWForm *HWForm)
 {
-	SetupFonts();
+    SetupFonts();
 
-	HWForm->setObjectName(QString::fromUtf8("HWForm"));
-	HWForm->resize(QSize(640, 480).expandedTo(HWForm->minimumSizeHint()));
-	HWForm->setMinimumSize(QSize(720, 450));
-	HWForm->setWindowTitle(QMainWindow::tr("Hedgewars %1").arg(*cVersionString));
-	centralWidget = new QWidget(HWForm);
-	centralWidget->setObjectName(QString::fromUtf8("centralWidget"));
+    HWForm->setObjectName(QString::fromUtf8("HWForm"));
+    HWForm->resize(QSize(640, 480).expandedTo(HWForm->minimumSizeHint()));
+    HWForm->setMinimumSize(QSize(720, 450));
+    HWForm->setWindowTitle(QMainWindow::tr("Hedgewars %1").arg(*cVersionString));
+    centralWidget = new QWidget(HWForm);
+    centralWidget->setObjectName(QString::fromUtf8("centralWidget"));
 
-	SetupPages(centralWidget, HWForm);
+    SetupPages(centralWidget, HWForm);
 
-	HWForm->setCentralWidget(centralWidget);
+    HWForm->setCentralWidget(centralWidget);
 
-	Pages->setCurrentIndex(0);
+    Pages->setCurrentIndex(0);
 
-	QMetaObject::connectSlotsByName(HWForm);
+    QMetaObject::connectSlotsByName(HWForm);
 }
 
 void Ui_HWForm::SetupFonts()
 {
-	font14 = new QFont("MS Shell Dlg", 14);
+    font14 = new QFont("MS Shell Dlg", 14);
 }
 
 void Ui_HWForm::SetupPages(QWidget *Parent, HWForm *HWForm)
 {
-	Pages = new QStackedLayout(Parent);
+    Pages = new QStackedLayout(Parent);
 
-	pageEditTeam = new PageEditTeam(Parent, &HWForm->sdli);
-	Pages->addWidget(pageEditTeam);
+    pageEditTeam = new PageEditTeam(Parent, &HWForm->sdli);
+    Pages->addWidget(pageEditTeam);
 
-	pageOptions = new PageOptions();
-	Pages->addWidget(pageOptions);
+    pageOptions = new PageOptions();
+    Pages->addWidget(pageOptions);
 
-	pageMultiplayer = new PageMultiplayer();
-	Pages->addWidget(pageMultiplayer);
+    pageMultiplayer = new PageMultiplayer();
+    Pages->addWidget(pageMultiplayer);
 
-	pagePlayDemo = new PagePlayDemo();
-	Pages->addWidget(pagePlayDemo);
+    pagePlayDemo = new PagePlayDemo();
+    Pages->addWidget(pagePlayDemo);
 
-	pageNet = new PageNet();
-	Pages->addWidget(pageNet);
+    pageNet = new PageNet();
+    Pages->addWidget(pageNet);
 
-	pageNetGame = new PageNetGame(Parent, HWForm->gameSettings, &HWForm->sdli);
-	Pages->addWidget(pageNetGame);
+    pageNetGame = new PageNetGame(Parent, HWForm->gameSettings, &HWForm->sdli);
+    Pages->addWidget(pageNetGame);
 
-	pageInfo = new PageInfo();
-	Pages->addWidget(pageInfo);
+    pageInfo = new PageInfo();
+    Pages->addWidget(pageInfo);
 
-	pageMain = new PageMain();
-	Pages->addWidget(pageMain);
+    pageMain = new PageMain();
+    Pages->addWidget(pageMain);
 
-	pageGameStats = new PageGameStats();
-	Pages->addWidget(pageGameStats);
+    pageGameStats = new PageGameStats();
+    Pages->addWidget(pageGameStats);
 
-	pageSinglePlayer = new PageSinglePlayer();
-	Pages->addWidget(pageSinglePlayer);
+    pageSinglePlayer = new PageSinglePlayer();
+    Pages->addWidget(pageSinglePlayer);
 
-	pageTraining = new PageTraining();
-	Pages->addWidget(pageTraining);
+    pageTraining = new PageTraining();
+    Pages->addWidget(pageTraining);
 
-	pageSelectWeapon = new PageSelectWeapon();
-	Pages->addWidget(pageSelectWeapon);
+    pageSelectWeapon = new PageSelectWeapon();
+    Pages->addWidget(pageSelectWeapon);
 
-	pageNetServer = new PageNetServer();
-	Pages->addWidget(pageNetServer);
+    pageNetServer = new PageNetServer();
+    Pages->addWidget(pageNetServer);
 
-	pageInGame = new PageInGame();
-	Pages->addWidget(pageInGame);
+    pageInGame = new PageInGame();
+    Pages->addWidget(pageInGame);
 
-	pageRoomsList = new PageRoomsList(Parent, HWForm->gameSettings, &HWForm->sdli);
-	Pages->addWidget(pageRoomsList);
+    pageRoomsList = new PageRoomsList(Parent, HWForm->gameSettings, &HWForm->sdli);
+    Pages->addWidget(pageRoomsList);
 
-	pageConnecting = new PageConnecting();
-	Pages->addWidget(pageConnecting);
+    pageConnecting = new PageConnecting();
+    Pages->addWidget(pageConnecting);
 
-	pageScheme = new PageScheme();
-	Pages->addWidget(pageScheme);
+    pageScheme = new PageScheme();
+    Pages->addWidget(pageScheme);
 
-	pageAdmin = new PageAdmin();
-	Pages->addWidget(pageAdmin);
+    pageAdmin = new PageAdmin();
+    Pages->addWidget(pageAdmin);
 
-	pageNetType = new PageNetType();
-	Pages->addWidget(pageNetType);
+    pageNetType = new PageNetType();
+    Pages->addWidget(pageNetType);
 }
--- a/QTfrontend/ui_hwform.h	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/ui_hwform.h	Sat Mar 06 10:59:20 2010 +0000
@@ -48,37 +48,37 @@
 class Ui_HWForm
 {
 public:
-	QWidget *centralWidget;
+    QWidget *centralWidget;
 
-	PageMain *pageMain;
-	PageEditTeam *pageEditTeam;
-	PageMultiplayer *pageMultiplayer;
-	PagePlayDemo *pagePlayDemo;
-	PageOptions *pageOptions;
-	PageNet *pageNet;
-	PageNetServer * pageNetServer;
-	PageNetChat *pageNetChat;
-	PageNetGame *pageNetGame;
-	PageInfo *pageInfo;
-	PageGameStats *pageGameStats;
-	PageSinglePlayer *pageSinglePlayer;
-	PageTraining *pageTraining;
-	PageSelectWeapon *pageSelectWeapon;
-	PageInGame *pageInGame;
-	PageRoomsList *pageRoomsList;
-	PageConnecting *pageConnecting;
-	PageScheme *pageScheme;
-	PageAdmin *pageAdmin;
-	PageNetType *pageNetType;
+    PageMain *pageMain;
+    PageEditTeam *pageEditTeam;
+    PageMultiplayer *pageMultiplayer;
+    PagePlayDemo *pagePlayDemo;
+    PageOptions *pageOptions;
+    PageNet *pageNet;
+    PageNetServer * pageNetServer;
+    PageNetChat *pageNetChat;
+    PageNetGame *pageNetGame;
+    PageInfo *pageInfo;
+    PageGameStats *pageGameStats;
+    PageSinglePlayer *pageSinglePlayer;
+    PageTraining *pageTraining;
+    PageSelectWeapon *pageSelectWeapon;
+    PageInGame *pageInGame;
+    PageRoomsList *pageRoomsList;
+    PageConnecting *pageConnecting;
+    PageScheme *pageScheme;
+    PageAdmin *pageAdmin;
+    PageNetType *pageNetType;
 
-	QStackedLayout *Pages;
-	QFont *font14;
+    QStackedLayout *Pages;
+    QFont *font14;
 
-	void setupUi(HWForm *HWForm);
-	void SetupFonts();
-	void SetupPages(QWidget *Parent, HWForm *HWForm);
-	void SetupPageNetChat(QWidget *Parent);
-	void SetupPageNetGame(QWidget *Parent);
+    void setupUi(HWForm *HWForm);
+    void SetupFonts();
+    void SetupPages(QWidget *Parent, HWForm *HWForm);
+    void SetupPageNetChat(QWidget *Parent);
+    void SetupPageNetGame(QWidget *Parent);
 };
 
 #endif // UI_HWFORM_H
--- a/QTfrontend/vertScrollArea.cpp	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/vertScrollArea.cpp	Sat Mar 06 10:59:20 2010 +0000
@@ -23,12 +23,12 @@
 VertScrArea::VertScrArea(QColor frameColor, QWidget * parent) :
   QScrollArea(parent)
 {
-	QPalette newPalette = palette();
-	newPalette.setColor(QPalette::Background, frameColor);
-	setPalette(newPalette);
+    QPalette newPalette = palette();
+    newPalette.setColor(QPalette::Background, frameColor);
+    setPalette(newPalette);
 }
 
 void VertScrArea::resizeEvent(QResizeEvent * event)
 {
-	widget()->resize(event->size().width(), widget()->sizeHint().height());
+    widget()->resize(event->size().width(), widget()->sizeHint().height());
 }
--- a/QTfrontend/vertScrollArea.h	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/vertScrollArea.h	Sat Mar 06 10:59:20 2010 +0000
@@ -23,13 +23,13 @@
 
 class VertScrArea : public QScrollArea
 {
-	Q_OBJECT
+    Q_OBJECT
 
 public:
-	VertScrArea(QColor frameColor, QWidget * parent = 0);
+    VertScrArea(QColor frameColor, QWidget * parent = 0);
 
 protected:
-	virtual void resizeEvent(QResizeEvent * event);
+    virtual void resizeEvent(QResizeEvent * event);
 };
 
 #endif // _VERT_SCROLL_AREA_INCLUDED
--- a/QTfrontend/xfire.cpp	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/xfire.cpp	Sat Mar 06 10:59:20 2010 +0000
@@ -30,53 +30,53 @@
 // xfire_init(): used to initialize all variables and set their default values
 void xfire_init(void)
 {
-	if(use_xfire)
-		return;
-	use_xfire = XfireIsLoaded() == 1;
-	
-	if(!use_xfire)
-		return;
-	
-	for(int i = 0; i < XFIRE_KEY_COUNT; i++)
-	{
-		keys[i] = new char[256];
-		values[i] = new char[256];
-		strcpy(keys[i], "");
-		strcpy(values[i], "");
-	}
-	
-	strcpy(keys[XFIRE_NICKNAME], "Nickname");
-	strcpy(keys[XFIRE_ROOM], "Room");
-	strcpy(keys[XFIRE_SERVER], "Server");
-	strcpy(keys[XFIRE_STATUS], "Status");
-	xfire_update();
+    if(use_xfire)
+        return;
+    use_xfire = XfireIsLoaded() == 1;
+    
+    if(!use_xfire)
+        return;
+    
+    for(int i = 0; i < XFIRE_KEY_COUNT; i++)
+    {
+        keys[i] = new char[256];
+        values[i] = new char[256];
+        strcpy(keys[i], "");
+        strcpy(values[i], "");
+    }
+    
+    strcpy(keys[XFIRE_NICKNAME], "Nickname");
+    strcpy(keys[XFIRE_ROOM], "Room");
+    strcpy(keys[XFIRE_SERVER], "Server");
+    strcpy(keys[XFIRE_STATUS], "Status");
+    xfire_update();
 }
 
 // xfire_free(): used to free up ressources used etc.
 void xfire_free(void)
 {
-	if(!use_xfire)
-		return;
-	
-	for(int i = 0; i < XFIRE_KEY_COUNT; i++)
-	{
-		delete [] keys[i];
-		delete [] values[i];
-	}
+    if(!use_xfire)
+        return;
+    
+    for(int i = 0; i < XFIRE_KEY_COUNT; i++)
+    {
+        delete [] keys[i];
+        delete [] values[i];
+    }
 }
 
 // xfire_setvalue(): set a specific value
 void xfire_setvalue(const XFIRE_KEYS status, const char *value)
 {
-	if(!use_xfire || strlen(value) > 255)
-		return;
-	strcpy(values[status], value);
+    if(!use_xfire || strlen(value) > 255)
+        return;
+    strcpy(values[status], value);
 }
 
 // xfire_update(): submits current values to the xfire app
 void xfire_update(void)
 {
-	if(!use_xfire)
-		return;
-	XfireSetCustomGameDataA(XFIRE_KEY_COUNT, (const char**)keys, (const char**)values);
+    if(!use_xfire)
+        return;
+    XfireSetCustomGameDataA(XFIRE_KEY_COUNT, (const char**)keys, (const char**)values);
 }
--- a/QTfrontend/xfire.h	Sat Mar 06 10:54:24 2010 +0000
+++ b/QTfrontend/xfire.h	Sat Mar 06 10:59:20 2010 +0000
@@ -27,11 +27,11 @@
 #ifdef USE_XFIRE
 enum XFIRE_KEYS
 {
-	XFIRE_STATUS = 0,
-	XFIRE_NICKNAME,
-	XFIRE_SERVER,
-	XFIRE_ROOM,
-	XFIRE_KEY_COUNT,
+    XFIRE_STATUS = 0,
+    XFIRE_NICKNAME,
+    XFIRE_SERVER,
+    XFIRE_ROOM,
+    XFIRE_KEY_COUNT,
 };
 
 void xfire_init(void);
--- a/gameServer/Actions.hs	Sat Mar 06 10:54:24 2010 +0000
+++ b/gameServer/Actions.hs	Sat Mar 06 10:59:20 2010 +0000
@@ -312,7 +312,7 @@
 
 
 processAction (clID, serverInfo, clients, rooms) (RemoveTeam teamName) = do
-    newRooms <-	if not $ gameinprogress room then
+    newRooms <- if not $ gameinprogress room then
             do
             processAction (clID, serverInfo, clients, rooms) $ AnswerOthersInRoom ["REMOVE_TEAM", teamName]
             return $
--- a/gameServer/ServerCore.hs	Sat Mar 06 10:54:24 2010 +0000
+++ b/gameServer/ServerCore.hs	Sat Mar 06 10:59:20 2010 +0000
@@ -60,7 +60,7 @@
                         PingAll : [StatsAction | even tick]
 
 
-    {-			let hadRooms = (not $ null rooms) && (null mrooms)
+    {-          let hadRooms = (not $ null rooms) && (null mrooms)
                     in unless ((not $ isDedicated serverInfo) && ((null clientsIn) || hadRooms)) $
                         mainLoop serverInfo acceptChan messagesChan clientsIn mrooms -}
 
--- a/gameServer/stresstest.hs	Sat Mar 06 10:54:24 2010 +0000
+++ b/gameServer/stresstest.hs	Sat Mar 06 10:59:20 2010 +0000
@@ -19,33 +19,33 @@
 session3 nick room = ["NICK", nick, "", "PROTO", "24", "", "LIST", "", "JOIN", room, "", "CHAT", "room 2", "", "QUIT", "bye-bye", ""]
 
 emulateSession sock s = do
-	mapM_ (\x -> hPutStrLn sock x >> hFlush sock >> randomRIO (50000::Int, 90000) >>= threadDelay) s
-	hFlush sock
-	threadDelay 225000
+    mapM_ (\x -> hPutStrLn sock x >> hFlush sock >> randomRIO (50000::Int, 90000) >>= threadDelay) s
+    hFlush sock
+    threadDelay 225000
 
 testing = Control.Exception.handle print $ do
-	putStrLn "Start"
-	sock <- connectTo "127.0.0.1" (PortNumber 46631)
+    putStrLn "Start"
+    sock <- connectTo "127.0.0.1" (PortNumber 46631)
 
-	num1 <- randomRIO (70000::Int, 70100)
-	num2 <- randomRIO (0::Int, 2)
-	num3 <- randomRIO (0::Int, 5)
-	let nick1 = show num1
-	let room1 = show num2
-	case num2 of 
-		0 -> emulateSession sock $ session1 nick1 room1
-		1 -> emulateSession sock $ session2 nick1 room1
-		2 -> emulateSession sock $ session3 nick1 room1
-	hClose sock
-	putStrLn "Finish"
+    num1 <- randomRIO (70000::Int, 70100)
+    num2 <- randomRIO (0::Int, 2)
+    num3 <- randomRIO (0::Int, 5)
+    let nick1 = show num1
+    let room1 = show num2
+    case num2 of 
+        0 -> emulateSession sock $ session1 nick1 room1
+        1 -> emulateSession sock $ session2 nick1 room1
+        2 -> emulateSession sock $ session3 nick1 room1
+    hClose sock
+    putStrLn "Finish"
 
 forks = forever $ do
-	delay <- randomRIO (10000::Int, 19000)
-	threadDelay delay
-	forkIO testing
+    delay <- randomRIO (10000::Int, 19000)
+    threadDelay delay
+    forkIO testing
 
 main = withSocketsDo $ do
 #if !defined(mingw32_HOST_OS)
-	installHandler sigPIPE Ignore Nothing;
+    installHandler sigPIPE Ignore Nothing;
 #endif
-	forks
+    forks
--- a/gameServer/stresstest2.hs	Sat Mar 06 10:54:24 2010 +0000
+++ b/gameServer/stresstest2.hs	Sat Mar 06 10:59:20 2010 +0000
@@ -15,21 +15,21 @@
 #endif
 
 testing = Control.Exception.handle print $ do
-	delay <- randomRIO (100::Int, 300)
-	threadDelay delay
-	sock <- connectTo "127.0.0.1" (PortNumber 46631)
-	hClose sock
+    delay <- randomRIO (100::Int, 300)
+    threadDelay delay
+    sock <- connectTo "127.0.0.1" (PortNumber 46631)
+    hClose sock
 
 forks i = do
-	delay <- randomRIO (50::Int, 190)
-	if i `mod` 10 == 0 then putStr (show i) else putStr "."
-	hFlush stdout
-	threadDelay delay
-	forkIO testing
-	forks (i + 1)
+    delay <- randomRIO (50::Int, 190)
+    if i `mod` 10 == 0 then putStr (show i) else putStr "."
+    hFlush stdout
+    threadDelay delay
+    forkIO testing
+    forks (i + 1)
 
 main = withSocketsDo $ do
 #if !defined(mingw32_HOST_OS)
-	installHandler sigPIPE Ignore Nothing;
+    installHandler sigPIPE Ignore Nothing;
 #endif
-	forks 1
+    forks 1
--- a/hedgewars/CCHandlers.inc	Sat Mar 06 10:54:24 2010 +0000
+++ b/hedgewars/CCHandlers.inc	Sat Mar 06 10:59:20 2010 +0000
@@ -670,13 +670,13 @@
     
 {$IFDEF SDL13}
     window:= SDL_CreateWindow('Hedgewars', 0, 0, cScreenWidth, cScreenHeight,
-        SDL_WINDOW_OPENGL or SDL_WINDOW_SHOWN 	 
-            {$IFDEF IPHONEOS} or SDL_WINDOW_BORDERLESS{$ENDIF}); 	 
-    SDL_CreateRenderer(window, -1, 0); 	 
-    PixelFormat:= nil; 	 
+        SDL_WINDOW_OPENGL or SDL_WINDOW_SHOWN    
+            {$IFDEF IPHONEOS} or SDL_WINDOW_BORDERLESS{$ENDIF});     
+    SDL_CreateRenderer(window, -1, 0);   
+    PixelFormat:= nil;   
         
-    SDL_SetRenderDrawColor(0, 0, 0, 255); 	 
-    SDL_RenderFill(nil); 	 
+    SDL_SetRenderDrawColor(0, 0, 0, 255);    
+    SDL_RenderFill(nil);     
     SDL_RenderPresent();
 {$ELSE}
     SDLPrimSurface:= SDL_SetVideoMode(cScreenWidth, cScreenHeight, cBits, flags);
--- a/hedgewars/GSHandlers.inc	Sat Mar 06 10:54:24 2010 +0000
+++ b/hedgewars/GSHandlers.inc	Sat Mar 06 10:59:20 2010 +0000
@@ -20,26 +20,26 @@
 var gi: PGear;
      d: LongInt;
 begin
-	gi:= GearsList;
-	while gi <> nil do
-		begin
-		d:= r - hwRound(Distance(gi^.X - x, gi^.Y - y));
-		if (d > 1) and (gi^.Kind = gtHedgehog) and not gi^.Invulnerable and (GetRandom(2) = 0) then
-			begin
-			if (CurrentHedgehog^.Gear = gi) then
-				PlaySound(sndOops, PHedgehog(gi^.Hedgehog)^.Team^.voicepack)
-			else
-				begin
-				if (gi^.State and gstMoving) = 0 then
-					gi^.State:= gi^.State or gstLoser;
-				if d > r div 2 then
-					PlaySound(sndNooo, PHedgehog(gi^.Hedgehog)^.Team^.voicepack)
-				else
-					PlaySound(sndUhOh, PHedgehog(gi^.Hedgehog)^.Team^.voicepack);
-				end;
-			end;
-		gi:= gi^.NextGear
-		end;
+    gi:= GearsList;
+    while gi <> nil do
+        begin
+        d:= r - hwRound(Distance(gi^.X - x, gi^.Y - y));
+        if (d > 1) and (gi^.Kind = gtHedgehog) and not gi^.Invulnerable and (GetRandom(2) = 0) then
+            begin
+            if (CurrentHedgehog^.Gear = gi) then
+                PlaySound(sndOops, PHedgehog(gi^.Hedgehog)^.Team^.voicepack)
+            else
+                begin
+                if (gi^.State and gstMoving) = 0 then
+                    gi^.State:= gi^.State or gstLoser;
+                if d > r div 2 then
+                    PlaySound(sndNooo, PHedgehog(gi^.Hedgehog)^.Team^.voicepack)
+                else
+                    PlaySound(sndUhOh, PHedgehog(gi^.Hedgehog)^.Team^.voicepack);
+                end;
+            end;
+        gi:= gi^.NextGear
+        end;
 end;
 ////////////////////////////////////////////////////////////////////////////////
 procedure doStepDrowningGear(Gear: PGear); forward;
@@ -68,50 +68,50 @@
         Gear^.State:= gstDrowning;
         Gear^.RenderTimer:= false;
         Gear^.doStep:= @doStepDrowningGear;
-		if Gear^.Kind = gtHedgehog then
-			begin
-			Gear^.State:= Gear^.State and (not gstHHDriven);
-			AddCaption(Format(GetEventString(eidDrowned), PHedgehog(Gear^.Hedgehog)^.Name), cWhiteColor, capgrpMessage);
-			end
+        if Gear^.Kind = gtHedgehog then
+            begin
+            Gear^.State:= Gear^.State and (not gstHHDriven);
+            AddCaption(Format(GetEventString(eidDrowned), PHedgehog(Gear^.Hedgehog)^.Name), cWhiteColor, capgrpMessage);
+            end
         end;
     PlaySound(sndSplash)
     end
     else
-	CheckGearDrowning:= false
+    CheckGearDrowning:= false
 end;
 
 procedure CheckCollision(Gear: PGear);
 begin
 if TestCollisionXwithGear(Gear, hwSign(Gear^.X)) or TestCollisionYwithGear(Gear, hwSign(Gear^.Y))
-	then Gear^.State:= Gear^.State or      gstCollision
-	else Gear^.State:= Gear^.State and not gstCollision
+    then Gear^.State:= Gear^.State or      gstCollision
+    else Gear^.State:= Gear^.State and not gstCollision
 end;
 
 procedure CheckHHDamage(Gear: PGear);
 var 
-	dmg: Longword;
-	i: LongInt;
-	particle: PVisualGear;
+    dmg: Longword;
+    i: LongInt;
+    particle: PVisualGear;
 begin
 if _0_4 < Gear^.dY then
-	begin
-	dmg:= ModifyDamage(1 + hwRound((hwAbs(Gear^.dY) - _0_4) * 70), Gear);
+    begin
+    dmg:= ModifyDamage(1 + hwRound((hwAbs(Gear^.dY) - _0_4) * 70), Gear);
     if dmg < 1 then exit;
 
-	for i:= min(12, (3 + dmg div 10)) downto 0 do begin
-		particle := AddVisualGear(hwRound(Gear^.X) - 5 + Random(10), hwRound(Gear^.Y) + 12, vgtDust);
+    for i:= min(12, (3 + dmg div 10)) downto 0 do begin
+        particle := AddVisualGear(hwRound(Gear^.X) - 5 + Random(10), hwRound(Gear^.Y) + 12, vgtDust);
         if particle <> nil then particle^.dX := particle^.dX + (Gear^.dX / 5);
-		end;
+        end;
 
     if(Gear^.Invulnerable) then exit;
 
-	if _0_6 < Gear^.dY then
-		PlaySound(sndOw4, PHedgehog(Gear^.Hedgehog)^.Team^.voicepack)
-	else
-		PlaySound(sndOw1, PHedgehog(Gear^.Hedgehog)^.Team^.voicepack);
+    if _0_6 < Gear^.dY then
+        PlaySound(sndOw4, PHedgehog(Gear^.Hedgehog)^.Team^.voicepack)
+    else
+        PlaySound(sndOw1, PHedgehog(Gear^.Hedgehog)^.Team^.voicepack);
 
     ApplyDamage(Gear, dmg);
-	end
+    end
 end;
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -121,9 +121,9 @@
 begin
 dAngle:= (hwAbs(Gear^.dX) + hwAbs(Gear^.dY)).QWordValue / $80000000;
 if not Gear^.dX.isNegative then
-	Gear^.DirAngle:= Gear^.DirAngle + dAngle
+    Gear^.DirAngle:= Gear^.DirAngle + dAngle
 else
-	Gear^.DirAngle:= Gear^.DirAngle - dAngle;
+    Gear^.DirAngle:= Gear^.DirAngle - dAngle;
 
 if Gear^.DirAngle < 0 then Gear^.DirAngle:= Gear^.DirAngle + 360
 else if 360 < Gear^.DirAngle then Gear^.DirAngle:= Gear^.DirAngle - 360
@@ -151,29 +151,29 @@
 Gear^.State:= Gear^.State and not gstCollision;
 
 if Gear^.dY.isNegative then
-	begin
-	isFalling:= true;
-	if TestCollisionYwithGear(Gear, -1) then
-		begin
-		Gear^.dX:=   Gear^.dX * Gear^.Friction;
-		Gear^.dY:= - Gear^.dY * Gear^.Elasticity;
-		Gear^.State:= Gear^.State or gstCollision
-		end
-	end else
-	if TestCollisionYwithGear(Gear, 1) then
-		begin
-		isFalling:= false;
-		Gear^.dX:=   Gear^.dX * Gear^.Friction;
-		Gear^.dY:= - Gear^.dY * Gear^.Elasticity;
-		Gear^.State:= Gear^.State or gstCollision
-		end else isFalling:= true;
+    begin
+    isFalling:= true;
+    if TestCollisionYwithGear(Gear, -1) then
+        begin
+        Gear^.dX:=   Gear^.dX * Gear^.Friction;
+        Gear^.dY:= - Gear^.dY * Gear^.Elasticity;
+        Gear^.State:= Gear^.State or gstCollision
+        end
+    end else
+    if TestCollisionYwithGear(Gear, 1) then
+        begin
+        isFalling:= false;
+        Gear^.dX:=   Gear^.dX * Gear^.Friction;
+        Gear^.dY:= - Gear^.dY * Gear^.Elasticity;
+        Gear^.State:= Gear^.State or gstCollision
+        end else isFalling:= true;
 
 if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then
-	begin
-	Gear^.dX:= - Gear^.dX * Gear^.Elasticity;
-	Gear^.dY:=   Gear^.dY * Gear^.Elasticity;
-	Gear^.State:= Gear^.State or gstCollision
-	end;
+    begin
+    Gear^.dX:= - Gear^.dX * Gear^.Elasticity;
+    Gear^.dY:=   Gear^.dY * Gear^.Elasticity;
+    Gear^.State:= Gear^.State or gstCollision
+    end;
 
 if isFalling then Gear^.dY:= Gear^.dY + cGravity;
 
@@ -181,10 +181,10 @@
 Gear^.Y:= Gear^.Y + Gear^.dY;
 CheckGearDrowning(Gear);
 if (hwSqr(Gear^.dX) + hwSqr(Gear^.dY) < _0_0002) and
-	(not isFalling) then
-	Gear^.State:= Gear^.State and not gstMoving
+    (not isFalling) then
+    Gear^.State:= Gear^.State and not gstMoving
 else
-	Gear^.State:= Gear^.State or      gstMoving
+    Gear^.State:= Gear^.State or      gstMoving
 end;
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -199,97 +199,97 @@
 
 dec(Gear^.Timer);
 if Gear^.Timer = 1000 then // might need adjustments
-	case Gear^.Kind of
-		gtAmmo_Bomb: makeHogsWorry(Gear^.X, Gear^.Y, 50);
-		gtClusterBomb: makeHogsWorry(Gear^.X, Gear^.Y, 20);
-		gtWatermelon: makeHogsWorry(Gear^.X, Gear^.Y, 75);
-		gtHellishBomb: makeHogsWorry(Gear^.X, Gear^.Y, 90);
-	end;
+    case Gear^.Kind of
+        gtAmmo_Bomb: makeHogsWorry(Gear^.X, Gear^.Y, 50);
+        gtClusterBomb: makeHogsWorry(Gear^.X, Gear^.Y, 20);
+        gtWatermelon: makeHogsWorry(Gear^.X, Gear^.Y, 75);
+        gtHellishBomb: makeHogsWorry(Gear^.X, Gear^.Y, 90);
+    end;
 if Gear^.Timer = 0 then
-	begin
-	case Gear^.Kind of
-		gtAmmo_Bomb: doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, EXPLAutoSound);
-		     gtBall: doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 40, EXPLAutoSound);
-		gtClusterBomb: begin
-				doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 20, EXPLAutoSound);
-				for i:= 0 to 4 do
-					begin
-					dX:= rndSign(GetRandom * _0_1);
-					dY:= (GetRandom - _3) * _0_08;
-					AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtCluster, 0, dX, dY, 25);
-					end
-				end;
-		gtWatermelon: begin
-				doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 75, EXPLAutoSound);
-				for i:= 0 to 5 do
-					begin
-					dX:= rndSign(GetRandom * _0_1);
-					dY:= (GetRandom - _1_5) * _0_3;
-					AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtMelonPiece, 0, dX, dY, 75)^.DirAngle:= i * 60;
-					end
-				end;
-		gtHellishBomb: begin
-				doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 90, EXPLAutoSound);
-				for i:= 0 to 127 do
-					begin
-					dX:= AngleCos(i * 16) * _0_5 * (GetRandom + _1);
-					dY:= AngleSin(i * 16) * _0_5 * (GetRandom + _1);
+    begin
+    case Gear^.Kind of
+        gtAmmo_Bomb: doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, EXPLAutoSound);
+             gtBall: doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 40, EXPLAutoSound);
+        gtClusterBomb: begin
+                doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 20, EXPLAutoSound);
+                for i:= 0 to 4 do
+                    begin
+                    dX:= rndSign(GetRandom * _0_1);
+                    dY:= (GetRandom - _3) * _0_08;
+                    AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtCluster, 0, dX, dY, 25);
+                    end
+                end;
+        gtWatermelon: begin
+                doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 75, EXPLAutoSound);
+                for i:= 0 to 5 do
+                    begin
+                    dX:= rndSign(GetRandom * _0_1);
+                    dY:= (GetRandom - _1_5) * _0_3;
+                    AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtMelonPiece, 0, dX, dY, 75)^.DirAngle:= i * 60;
+                    end
+                end;
+        gtHellishBomb: begin
+                doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 90, EXPLAutoSound);
+                for i:= 0 to 127 do
+                    begin
+                    dX:= AngleCos(i * 16) * _0_5 * (GetRandom + _1);
+                    dY:= AngleSin(i * 16) * _0_5 * (GetRandom + _1);
                     Fire:= AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtFlame, 0, dX, dY, 0);
                     if i mod 2 = 0 then Fire^.State:= Fire^.State or gsttmpFlag;
                     Fire:= AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtFlame, 0, dX, -dY, 0);
                     if i mod 2 <> 0 then Fire^.State:= Fire^.State or gsttmpFlag;
-					end
-				end;
-		end;
-	DeleteGear(Gear);
-	exit
-	end;
+                    end
+                end;
+        end;
+    DeleteGear(Gear);
+    exit
+    end;
 
 CalcRotationDirAngle(Gear);
 
 if Gear^.Kind = gtHellishBomb then
-	begin
-	if Gear^.Timer = 3000 then PlaySound(sndHellish);
+    begin
+    if Gear^.Timer = 3000 then PlaySound(sndHellish);
 
-	if (GameTicks and $3F) = 0 then
-		if (Gear^.State and gstCollision) = 0 then
-			AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtEvilTrace, 0, _0, _0, 0);
-	end;
+    if (GameTicks and $3F) = 0 then
+        if (Gear^.State and gstCollision) = 0 then
+            AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtEvilTrace, 0, _0, _0, 0);
+    end;
 
 if (Gear^.State and (gstCollision or gstMoving)) = (gstCollision or gstMoving) then
-	if (hwAbs(Gear^.dX) > _0_1) or
-	   (hwAbs(Gear^.dY) > _0_1) then
-		PlaySound(sndGrenadeImpact)
+    if (hwAbs(Gear^.dX) > _0_1) or
+       (hwAbs(Gear^.dY) > _0_1) then
+        PlaySound(sndGrenadeImpact)
 end;
 ////////////////////////////////////////////////////////////////////////////////
 procedure doStepMolotov(Gear: PGear);
 var i: LongInt;
     dX, dY: hwFloat;
-	Fire: PGear;
+    Fire: PGear;
 begin
-	AllInactive:= false;
-	
-	doStepFallingGear(Gear);
-	CalcRotationDirAngle(Gear);
+    AllInactive:= false;
+    
+    doStepFallingGear(Gear);
+    CalcRotationDirAngle(Gear);
 
-	if (Gear^.State and gstCollision) <> 0 then begin
-		PlaySound(sndMolotov);
-		//doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 5, EXPLAutoSound);
-		for i:= 0 to 20 do begin
-				dX:= AngleCos(i * 2) * ((_0_1*(i div 5))) * (GetRandom + _1);
-				dY:= AngleSin(i * 8) * _0_5 * (GetRandom + _1);
-				Fire:= AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtFlame, 0, dX, dY, 0);
-				Fire^.State:= Fire^.State or gsttmpFlag;
-				Fire:= AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtFlame, 0, dX, -dY, 0);
-				Fire^.State:= Fire^.State or gsttmpFlag;
-				Fire:= AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtFlame, 0, -dX, dY, 0);
-				Fire^.State:= Fire^.State or gsttmpFlag;
-				Fire:= AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtFlame, 0, -dX, -dY, 0);
-				Fire^.State:= Fire^.State or gsttmpFlag;
-		end;
-		DeleteGear(Gear);
-		exit
-	end;
+    if (Gear^.State and gstCollision) <> 0 then begin
+        PlaySound(sndMolotov);
+        //doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 5, EXPLAutoSound);
+        for i:= 0 to 20 do begin
+                dX:= AngleCos(i * 2) * ((_0_1*(i div 5))) * (GetRandom + _1);
+                dY:= AngleSin(i * 8) * _0_5 * (GetRandom + _1);
+                Fire:= AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtFlame, 0, dX, dY, 0);
+                Fire^.State:= Fire^.State or gsttmpFlag;
+                Fire:= AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtFlame, 0, dX, -dY, 0);
+                Fire^.State:= Fire^.State or gsttmpFlag;
+                Fire:= AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtFlame, 0, -dX, dY, 0);
+                Fire^.State:= Fire^.State or gsttmpFlag;
+                Fire:= AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtFlame, 0, -dX, -dY, 0);
+                Fire^.State:= Fire^.State or gsttmpFlag;
+        end;
+        DeleteGear(Gear);
+        exit
+    end;
 end;
 
 procedure doStepWatermelon(Gear: PGear);
@@ -303,17 +303,17 @@
 AllInactive:= false;
 doStepFallingGear(Gear);
 if (Gear^.State and gstCollision) <> 0 then
-	begin
-	doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), Gear^.Timer, EXPLAutoSound);
-	DeleteGear(Gear);
-	exit
-	end;
+    begin
+    doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), Gear^.Timer, EXPLAutoSound);
+    DeleteGear(Gear);
+    exit
+    end;
 
 if Gear^.Kind = gtMelonPiece then
-	CalcRotationDirAngle(Gear)
+    CalcRotationDirAngle(Gear)
 else
-	if (GameTicks and $1F) = 0 then
-		AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtSmokeTrace, 0, _0, _0, 0)
+    if (GameTicks and $1F) = 0 then
+        AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtSmokeTrace, 0, _0, _0, 0)
 end;
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -323,30 +323,30 @@
 Gear^.dX:= Gear^.dX + cWindSpeed;
 doStepFallingGear(Gear);
 if (Gear^.State and gstCollision) <> 0 then
-	begin
-	doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, EXPLAutoSound);
-	DeleteGear(Gear);
-	exit
-	end;
+    begin
+    doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, EXPLAutoSound);
+    DeleteGear(Gear);
+    exit
+    end;
 if (GameTicks and $3F) = 0 then
-	AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtSmokeTrace, 0, _0, _0, 0)
+    AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtSmokeTrace, 0, _0, _0, 0)
 end;
 
 ////////////////////////////////////////////////////////////////////////////////
 procedure doStepHealthTagWork(Gear: PGear);
 begin
 if Gear^.Kind = gtHealthTag then
-	AllInactive:= false;
+    AllInactive:= false;
 
 dec(Gear^.Timer);
 Gear^.Y:= Gear^.Y + Gear^.dY;
 
 if Gear^.Timer = 0 then
-	begin
-	if (Gear^.Kind = gtHealthTag) and (PHedgehog(Gear^.Hedgehog)^.Gear <> nil) then
-		PHedgehog(Gear^.Hedgehog)^.Gear^.Active:= true; // to let current hh die
-	DeleteGear(Gear)
-	end
+    begin
+    if (Gear^.Kind = gtHealthTag) and (PHedgehog(Gear^.Hedgehog)^.Gear <> nil) then
+        PHedgehog(Gear^.Hedgehog)^.Gear^.Active:= true; // to let current hh die
+    DeleteGear(Gear)
+    end
 end;
 
 procedure doStepHealthTagWorkUnderWater(Gear: PGear);
@@ -356,7 +356,7 @@
 Gear^.Y:= Gear^.Y - _0_08;
 
 if hwRound(Gear^.Y) < cWaterLine + 10 then
-	DeleteGear(Gear)
+    DeleteGear(Gear)
 end;
 
 procedure doStepHealthTag(Gear: PGear);
@@ -369,9 +369,9 @@
 Gear^.Tex:= RenderStringTex(s, PHedgehog(Gear^.Hedgehog)^.Team^.Clan^.Color, fnt16);
 
 if hwRound(Gear^.Y) < cWaterLine then
-	Gear^.doStep:= @doStepHealthTagWork
+    Gear^.doStep:= @doStepHealthTagWork
 else
-	Gear^.doStep:= @doStepHealthTagWorkUnderWater;
+    Gear^.doStep:= @doStepHealthTagWorkUnderWater;
 
 Gear^.Y:= Gear^.Y - int2hwFloat(Gear^.Tex^.h)
 end;
@@ -459,10 +459,10 @@
 AllInactive:= false;
 inc(Gear^.Timer);
 if Gear^.Timer > 75 then
-	begin
-	DeleteGear(Gear);
-	AfterAttack
-	end
+    begin
+    DeleteGear(Gear);
+    AfterAttack
+    end
 end;
 
 procedure doStepShotgunShot(Gear: PGear);
@@ -472,23 +472,23 @@
 AllInactive:= false;
 
 if ((Gear^.State and gstAnimation) = 0) then
-	begin
-	dec(Gear^.Timer);
-	if Gear^.Timer = 0 then
-		begin
-		PlaySound(sndShotgunFire);
-		shell:= AddVisualGear(hwRound(Gear^.x), hwRound(Gear^.y), vgtShell);
+    begin
+    dec(Gear^.Timer);
+    if Gear^.Timer = 0 then
+        begin
+        PlaySound(sndShotgunFire);
+        shell:= AddVisualGear(hwRound(Gear^.x), hwRound(Gear^.y), vgtShell);
         if shell <> nil then
         begin 
            shell^.dX:= gear^.dX / -4;
            shell^.dY:= gear^.dY / -4;
            shell^.Frame:= 0
         end;
-		Gear^.State:= Gear^.State or gstAnimation
-		end;
-	exit
-	end
-	else inc(Gear^.Timer);
+        Gear^.State:= Gear^.State or gstAnimation
+        end;
+    exit
+    end
+    else inc(Gear^.Timer);
 
 i:= 200;
 repeat
@@ -496,17 +496,17 @@
 Gear^.Y:= Gear^.Y + Gear^.dY;
 CheckCollision(Gear);
 if (Gear^.State and gstCollision) <> 0 then
-	begin
-	Gear^.X:= Gear^.X + Gear^.dX * 8;
-	Gear^.Y:= Gear^.Y + Gear^.dY * 8;
-	ShotgunShot(Gear);
-	Gear^.doStep:= @doStepShotIdle;
-	exit
-	end;
+    begin
+    Gear^.X:= Gear^.X + Gear^.dX * 8;
+    Gear^.Y:= Gear^.Y + Gear^.dY * 8;
+    ShotgunShot(Gear);
+    Gear^.doStep:= @doStepShotIdle;
+    exit
+    end;
 dec(i)
 until i = 0;
 if (hwRound(Gear^.X) and LAND_WIDTH_MASK <> 0) or (hwRound(Gear^.Y) and LAND_HEIGHT_MASK <> 0) then
-	Gear^.doStep:= @doStepShotIdle
+    Gear^.doStep:= @doStepShotIdle
 end;
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -541,13 +541,13 @@
    end;
 
 if (Gear^.Health <= 0)
-	or (hwRound(Gear^.X) and LAND_WIDTH_MASK <> 0)
-	or (hwRound(Gear^.Y) and LAND_HEIGHT_MASK <> 0) then
+    or (hwRound(Gear^.X) and LAND_WIDTH_MASK <> 0)
+    or (hwRound(Gear^.Y) and LAND_HEIGHT_MASK <> 0) then
     begin
     if (Gear^.Kind = gtSniperRifleShot) and ((GameFlags and gfLaserSight) = 0) then cLaserSighting:= false;
     if (Gear^.Ammo^.NumPerTurn <= CurrentHedgehog^.MultiShootAttacks) and
        ((GameFlags and gfArtillery) = 0) then cArtillery:= false;
-	Gear^.doStep:= @doStepShotIdle
+    Gear^.doStep:= @doStepShotIdle
     end;
 end;
 
@@ -600,8 +600,8 @@
     dec(TurnTimeLeft)
 else
     begin
-	DeleteGear(Gear);
-	AfterAttack
+    DeleteGear(Gear);
+    AfterAttack
     end;
 end;
 
@@ -645,48 +645,48 @@
 HHGear:= PHedgehog(Gear^.Hedgehog)^.Gear;
 dec(Gear^.Timer);
 if (Gear^.Timer = 0)or((Gear^.Message and gm_Destroy) <> 0)or((HHGear^.State and gstHHDriven) = 0) then
-	begin
-	StopSound(Gear^.SoundChannel);
-	DeleteGear(Gear);
-	AfterAttack;
-	exit
-	end;
+    begin
+    StopSound(Gear^.SoundChannel);
+    DeleteGear(Gear);
+    AfterAttack;
+    exit
+    end;
 
 if (Gear^.Timer mod 33) = 0 then
-	begin
-	HHGear^.State:= HHGear^.State or gstNoDamage;
-	doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y) + 7, 6, EXPLDontDraw);
-	HHGear^.State:= HHGear^.State and not gstNoDamage
-	end;
+    begin
+    HHGear^.State:= HHGear^.State or gstNoDamage;
+    doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y) + 7, 6, EXPLDontDraw);
+    HHGear^.State:= HHGear^.State and not gstNoDamage
+    end;
 
 if (Gear^.Timer mod 47) = 0 then
-	begin
-	i:= hwRound(Gear^.X) - Gear^.Radius - LongInt(GetRandom(2));
-	ei:= hwRound(Gear^.X) + Gear^.Radius + LongInt(GetRandom(2));
-	while i <= ei do
-		begin
-		DrawExplosion(i, hwRound(Gear^.Y) + 3, 3);
-		inc(i, 1)
-		end;
+    begin
+    i:= hwRound(Gear^.X) - Gear^.Radius - LongInt(GetRandom(2));
+    ei:= hwRound(Gear^.X) + Gear^.Radius + LongInt(GetRandom(2));
+    while i <= ei do
+        begin
+        DrawExplosion(i, hwRound(Gear^.Y) + 3, 3);
+        inc(i, 1)
+        end;
 
     if CheckLandValue(hwRound(Gear^.X + Gear^.dX + SignAs(_6,Gear^.dX)), hwRound(Gear^.Y + _1_9), COLOR_INDESTRUCTIBLE) then
         begin
         Gear^.X:= Gear^.X + Gear^.dX;
         Gear^.Y:= Gear^.Y + _1_9;
         end;
-	SetAllHHToActive;
-	end;
+    SetAllHHToActive;
+    end;
 if TestCollisionYwithGear(Gear, 1) then
-	begin
-	Gear^.dY:= _0;
-	SetLittle(HHGear^.dX);
-	HHGear^.dY:= _0;
-	end else
-	begin
-	Gear^.dY:= Gear^.dY + cGravity;
-	Gear^.Y:= Gear^.Y + Gear^.dY;
-	if hwRound(Gear^.Y) > cWaterLine then Gear^.Timer:= 1
-	end;
+    begin
+    Gear^.dY:= _0;
+    SetLittle(HHGear^.dX);
+    HHGear^.dY:= _0;
+    end else
+    begin
+    Gear^.dY:= Gear^.dY + cGravity;
+    Gear^.Y:= Gear^.Y + Gear^.dY;
+    if hwRound(Gear^.Y) > cWaterLine then Gear^.Timer:= 1
+    end;
 
 Gear^.X:= Gear^.X + HHGear^.dX;
 HHGear^.X:= Gear^.X;
@@ -731,8 +731,8 @@
 
 procedure doStepBlowTorchWork(Gear: PGear);
 var HHGear: PGear;
-	b: boolean;
-	prevX: LongInt;
+    b: boolean;
+    prevX: LongInt;
 begin
 AllInactive:= false;
 dec(Gear^.Timer);
@@ -743,31 +743,31 @@
 b:= false;
 
 if abs(LongInt(HHGear^.Angle) - BTPrevAngle) > 7  then
-	begin
-	Gear^.dX:= SignAs(AngleSin(HHGear^.Angle) * _0_5, HHGear^.dX);
-	Gear^.dY:= AngleCos(HHGear^.Angle) * ( - _0_5);
-	BTPrevAngle:= HHGear^.Angle;
-	b:= true
-	end;
+    begin
+    Gear^.dX:= SignAs(AngleSin(HHGear^.Angle) * _0_5, HHGear^.dX);
+    Gear^.dY:= AngleCos(HHGear^.Angle) * ( - _0_5);
+    BTPrevAngle:= HHGear^.Angle;
+    b:= true
+    end;
 
 if ((HHGear^.State and gstMoving) <> 0) then
-	begin
-	doStepHedgehogMoving(HHGear);
-	if (HHGear^.State and gstHHDriven) = 0 then Gear^.Timer:= 0
-	end;
+    begin
+    doStepHedgehogMoving(HHGear);
+    if (HHGear^.State and gstHHDriven) = 0 then Gear^.Timer:= 0
+    end;
 
 if Gear^.Timer mod cHHStepTicks = 0 then
-	begin
-	b:= true;
-	if Gear^.dX.isNegative then
-		HHGear^.Message:= (HHGear^.Message and (gm_Attack or gm_Up or gm_Down)) or gm_Left
-	else
-		HHGear^.Message:= (HHGear^.Message and (gm_Attack or gm_Up or gm_Down)) or gm_Right;
+    begin
+    b:= true;
+    if Gear^.dX.isNegative then
+        HHGear^.Message:= (HHGear^.Message and (gm_Attack or gm_Up or gm_Down)) or gm_Left
+    else
+        HHGear^.Message:= (HHGear^.Message and (gm_Attack or gm_Up or gm_Down)) or gm_Right;
 
-	if ((HHGear^.State and gstMoving) = 0) then
-		begin
-		HHGear^.State:= HHGear^.State and not gstAttacking;
-		prevX:= hwRound(HHGear^.X);
+    if ((HHGear^.State and gstMoving) = 0) then
+        begin
+        HHGear^.State:= HHGear^.State and not gstAttacking;
+        prevX:= hwRound(HHGear^.X);
 
 // why the call to HedgehogStep then a further increment of X?
         if (prevX = hwRound(HHGear^.X)) and
@@ -775,23 +775,23 @@
 
         if (prevX = hwRound(HHGear^.X)) and
            CheckLandValue(hwRound(HHGear^.X + SignAs(_6, HHGear^.dX)), hwRound(HHGear^.Y), COLOR_INDESTRUCTIBLE) then HHGear^.X:= HHGear^.X + SignAs(_1, HHGear^.dX);
-		HHGear^.State:= HHGear^.State or gstAttacking
-		end;
+        HHGear^.State:= HHGear^.State or gstAttacking
+        end;
 
-	inc(BTSteps);
-	if BTSteps = 7 then
-		begin
-		BTSteps:= 0;
+    inc(BTSteps);
+    if BTSteps = 7 then
+        begin
+        BTSteps:= 0;
         if CheckLandValue(hwRound(HHGear^.X + Gear^.dX * (cHHRadius + cBlowTorchC) + SignAs(_6,Gear^.dX)), hwRound(HHGear^.Y + Gear^.dY * (cHHRadius + cBlowTorchC)), COLOR_INDESTRUCTIBLE) then
             begin
-		    Gear^.X:= HHGear^.X + Gear^.dX * (cHHRadius + cBlowTorchC);
-		    Gear^.Y:= HHGear^.Y + Gear^.dY * (cHHRadius + cBlowTorchC);
+            Gear^.X:= HHGear^.X + Gear^.dX * (cHHRadius + cBlowTorchC);
+            Gear^.Y:= HHGear^.Y + Gear^.dY * (cHHRadius + cBlowTorchC);
             end;
-		HHGear^.State:= HHGear^.State or gstNoDamage;
-		AmmoShove(Gear, 2, 15);
-		HHGear^.State:= HHGear^.State and not gstNoDamage
-		end;
-	end;
+        HHGear^.State:= HHGear^.State or gstNoDamage;
+        AmmoShove(Gear, 2, 15);
+        HHGear^.State:= HHGear^.State and not gstNoDamage
+        end;
+    end;
 
 if b then
    DrawTunnel(HHGear^.X - Gear^.dX * cHHRadius, HHGear^.Y - _4 - Gear^.dY * cHHRadius + hwAbs(Gear^.dY) * 7,
@@ -799,12 +799,12 @@
               cHHRadius * 5, cHHRadius * 2 + 7);
 
 if (Gear^.Timer = 0) or ((HHGear^.Message and gm_Attack) <> 0) then
-	begin
-	HHGear^.Message:= 0;
-	HHGear^.State:= HHGear^.State and (not gstNotKickable);
-	DeleteGear(Gear);
-	AfterAttack
-	end
+    begin
+    HHGear^.Message:= 0;
+    HHGear^.State:= HHGear^.State and (not gstNotKickable);
+    DeleteGear(Gear);
+    AfterAttack
+    end
 end;
 
 procedure doStepBlowTorch(Gear: PGear);
@@ -827,13 +827,13 @@
 begin
 HHGear:= PHedgehog(Gear^.Hedgehog)^.Gear;
 if ((HHGear^.State and gstHHDriven) = 0)
-	or (CheckGearDrowning(HHGear))
-	or TestCollisionYwithGear(HHGear, 1) then
-	begin
-	DeleteGear(Gear);
-	isCursorVisible:= false;
-	exit
-	end;
+    or (CheckGearDrowning(HHGear))
+    or TestCollisionYwithGear(HHGear, 1) then
+    begin
+    DeleteGear(Gear);
+    isCursorVisible:= false;
+    exit
+    end;
 
 HedgehogChAngle(HHGear);
 
@@ -845,59 +845,59 @@
 HHGear^.dY:= HHGear^.dY + cGravity;
 
 if (Gear^.Message and gm_Attack) <> 0 then
-	begin
-	Gear^.X:= HHGear^.X;
-	Gear^.Y:= HHGear^.Y;
+    begin
+    Gear^.X:= HHGear^.X;
+    Gear^.Y:= HHGear^.Y;
 
-	ApplyAngleBounds(PHedgehog(Gear^.Hedgehog)^, amRope);
+    ApplyAngleBounds(PHedgehog(Gear^.Hedgehog)^, amRope);
 
-	Gear^.dX:= SignAs(AngleSin(HHGear^.Angle), HHGear^.dX);
-	Gear^.dY:= -AngleCos(HHGear^.Angle);
-	Gear^.Friction:= _450;
-	Gear^.Elasticity:= _0;
-	Gear^.State:= Gear^.State and not gsttmpflag;
-	Gear^.doStep:= @doStepRope
-	end
+    Gear^.dX:= SignAs(AngleSin(HHGear^.Angle), HHGear^.dX);
+    Gear^.dY:= -AngleCos(HHGear^.Angle);
+    Gear^.Friction:= _450;
+    Gear^.Elasticity:= _0;
+    Gear^.State:= Gear^.State and not gsttmpflag;
+    Gear^.doStep:= @doStepRope
+    end
 end;
 
 procedure doStepRopeWork(Gear: PGear);
 var HHGear: PGear;
-	len, tx, ty, nx, ny, ropeDx, ropeDy, mdX, mdY: hwFloat;
-	lx, ly: LongInt;
-	haveCollision,
-	haveDivided: boolean;
+    len, tx, ty, nx, ny, ropeDx, ropeDy, mdX, mdY: hwFloat;
+    lx, ly: LongInt;
+    haveCollision,
+    haveDivided: boolean;
 
-	procedure DeleteMe;
-	begin
-	with HHGear^ do
-		begin
-		Message:= Message and not gm_Attack;
-		State:= (State or gstMoving) and not gstWinner;
-		end;
-	DeleteGear(Gear)
-	end;
+    procedure DeleteMe;
+    begin
+    with HHGear^ do
+        begin
+        Message:= Message and not gm_Attack;
+        State:= (State or gstMoving) and not gstWinner;
+        end;
+    DeleteGear(Gear)
+    end;
 
-	procedure WaitCollision;
-	begin
-	with HHGear^ do
-		begin
-		Message:= Message and not gm_Attack;
-		State:= State or gstMoving;
-		end;
-	RopePoints.Count:= 0;
-	Gear^.Elasticity:= _0;
-	Gear^.doStep:= @doStepRopeAfterAttack
-	end;
+    procedure WaitCollision;
+    begin
+    with HHGear^ do
+        begin
+        Message:= Message and not gm_Attack;
+        State:= State or gstMoving;
+        end;
+    RopePoints.Count:= 0;
+    Gear^.Elasticity:= _0;
+    Gear^.doStep:= @doStepRopeAfterAttack
+    end;
 
 begin
 HHGear:= PHedgehog(Gear^.Hedgehog)^.Gear;
 
 if ((HHGear^.State and gstHHDriven) = 0)
-	or (CheckGearDrowning(HHGear)) then
-	begin
-	DeleteMe;
-	exit
-	end;
+    or (CheckGearDrowning(HHGear)) then
+    begin
+    DeleteMe;
+    exit
+    end;
 
 if (Gear^.Message and gm_Left  <> 0) then HHGear^.dX:= HHGear^.dX - _0_0002 else
 if (Gear^.Message and gm_Right <> 0) then HHGear^.dX:= HHGear^.dX + _0_0002;
@@ -917,135 +917,135 @@
 Gear^.dY:= mdY;
 
 /////
-	tx:= HHGear^.X;
-	ty:= HHGear^.Y;
+    tx:= HHGear^.X;
+    ty:= HHGear^.Y;
 
-	if ((Gear^.Message and gm_Down) <> 0) and (Gear^.Elasticity < Gear^.Friction) then
-		if not (TestCollisionXwithGear(HHGear, hwSign(ropeDx))
-				or TestCollisionYwithGear(HHGear, hwSign(ropeDy))) then
-					Gear^.Elasticity:= Gear^.Elasticity + _0_3;
+    if ((Gear^.Message and gm_Down) <> 0) and (Gear^.Elasticity < Gear^.Friction) then
+        if not (TestCollisionXwithGear(HHGear, hwSign(ropeDx))
+                or TestCollisionYwithGear(HHGear, hwSign(ropeDy))) then
+                    Gear^.Elasticity:= Gear^.Elasticity + _0_3;
 
-	if ((Gear^.Message and gm_Up) <> 0) and (Gear^.Elasticity > _30) then
-		if not (TestCollisionXwithGear(HHGear, -hwSign(ropeDx))
-				or TestCollisionYwithGear(HHGear, -hwSign(ropeDy))) then
-					Gear^.Elasticity:= Gear^.Elasticity - _0_3;
+    if ((Gear^.Message and gm_Up) <> 0) and (Gear^.Elasticity > _30) then
+        if not (TestCollisionXwithGear(HHGear, -hwSign(ropeDx))
+                or TestCollisionYwithGear(HHGear, -hwSign(ropeDy))) then
+                    Gear^.Elasticity:= Gear^.Elasticity - _0_3;
 
-	HHGear^.X:= Gear^.X + mdX * Gear^.Elasticity;
-	HHGear^.Y:= Gear^.Y + mdY * Gear^.Elasticity;
+    HHGear^.X:= Gear^.X + mdX * Gear^.Elasticity;
+    HHGear^.Y:= Gear^.Y + mdY * Gear^.Elasticity;
 
-	HHGear^.dX:= HHGear^.X - tx;
-	HHGear^.dY:= HHGear^.Y - ty;
+    HHGear^.dX:= HHGear^.X - tx;
+    HHGear^.dY:= HHGear^.Y - ty;
 ////
 
 
-	haveDivided:= false;
-	// check whether rope needs dividing
-	len:= _1 / Distance(ropeDx, ropeDy); // old rope pos
-	nx:= ropeDx * len;
-	ny:= ropeDy * len;
+    haveDivided:= false;
+    // check whether rope needs dividing
+    len:= _1 / Distance(ropeDx, ropeDy); // old rope pos
+    nx:= ropeDx * len;
+    ny:= ropeDy * len;
 
-	len:= Gear^.Elasticity - _0_3x70;
-	while len > _3 do
-			begin
-			lx:= hwRound(Gear^.X + mdX * len);
-			ly:= hwRound(Gear^.Y + mdY * len);
-			if ((ly and LAND_HEIGHT_MASK) = 0) and ((lx and LAND_WIDTH_MASK) = 0) and (Land[ly, lx] <> 0) then
-				begin
-				with RopePoints.ar[RopePoints.Count] do
-					begin
-					X:= Gear^.X;
-					Y:= Gear^.Y;
-					if RopePoints.Count = 0 then RopePoints.HookAngle:= DxDy2Angle(Gear^.dY, Gear^.dX);
-					b:= (nx * HHGear^.dY) > (ny * HHGear^.dX);
-					dLen:= len
-					end;
-				with RopePoints.rounded[RopePoints.Count] do
-					begin
-					X:= hwRound(Gear^.X);
-					Y:= hwRound(Gear^.Y);
-					end;
+    len:= Gear^.Elasticity - _0_3x70;
+    while len > _3 do
+            begin
+            lx:= hwRound(Gear^.X + mdX * len);
+            ly:= hwRound(Gear^.Y + mdY * len);
+            if ((ly and LAND_HEIGHT_MASK) = 0) and ((lx and LAND_WIDTH_MASK) = 0) and (Land[ly, lx] <> 0) then
+                begin
+                with RopePoints.ar[RopePoints.Count] do
+                    begin
+                    X:= Gear^.X;
+                    Y:= Gear^.Y;
+                    if RopePoints.Count = 0 then RopePoints.HookAngle:= DxDy2Angle(Gear^.dY, Gear^.dX);
+                    b:= (nx * HHGear^.dY) > (ny * HHGear^.dX);
+                    dLen:= len
+                    end;
+                with RopePoints.rounded[RopePoints.Count] do
+                    begin
+                    X:= hwRound(Gear^.X);
+                    Y:= hwRound(Gear^.Y);
+                    end;
 
-				Gear^.X:= Gear^.X + nx * len;
-				Gear^.Y:= Gear^.Y + ny * len;
-				inc(RopePoints.Count);
-				TryDo(RopePoints.Count <= MAXROPEPOINTS, 'Rope points overflow', true);
-				Gear^.Elasticity:= Gear^.Elasticity - len;
-				Gear^.Friction:= Gear^.Friction - len;
-				haveDivided:= true;
-				break
-				end;
-			len:= len - _0_3 // should be the same as increase step
-			end;
+                Gear^.X:= Gear^.X + nx * len;
+                Gear^.Y:= Gear^.Y + ny * len;
+                inc(RopePoints.Count);
+                TryDo(RopePoints.Count <= MAXROPEPOINTS, 'Rope points overflow', true);
+                Gear^.Elasticity:= Gear^.Elasticity - len;
+                Gear^.Friction:= Gear^.Friction - len;
+                haveDivided:= true;
+                break
+                end;
+            len:= len - _0_3 // should be the same as increase step
+            end;
 
 if not haveDivided then
-	if RopePoints.Count > 0 then // check whether the last dividing point could be removed
-		begin
-		tx:= RopePoints.ar[Pred(RopePoints.Count)].X;
-		ty:= RopePoints.ar[Pred(RopePoints.Count)].Y;
-		if RopePoints.ar[Pred(RopePoints.Count)].b xor ((tx - Gear^.X) * (ty - HHGear^.Y) > (tx - HHGear^.X) * (ty - Gear^.Y)) then
-			begin
-			dec(RopePoints.Count);
-			Gear^.X:= RopePoints.ar[RopePoints.Count].X;
-			Gear^.Y:= RopePoints.ar[RopePoints.Count].Y;
-			Gear^.Elasticity:= Gear^.Elasticity + RopePoints.ar[RopePoints.Count].dLen;
-			Gear^.Friction:= Gear^.Friction + RopePoints.ar[RopePoints.Count].dLen
-			end
-		end;
+    if RopePoints.Count > 0 then // check whether the last dividing point could be removed
+        begin
+        tx:= RopePoints.ar[Pred(RopePoints.Count)].X;
+        ty:= RopePoints.ar[Pred(RopePoints.Count)].Y;
+        if RopePoints.ar[Pred(RopePoints.Count)].b xor ((tx - Gear^.X) * (ty - HHGear^.Y) > (tx - HHGear^.X) * (ty - Gear^.Y)) then
+            begin
+            dec(RopePoints.Count);
+            Gear^.X:= RopePoints.ar[RopePoints.Count].X;
+            Gear^.Y:= RopePoints.ar[RopePoints.Count].Y;
+            Gear^.Elasticity:= Gear^.Elasticity + RopePoints.ar[RopePoints.Count].dLen;
+            Gear^.Friction:= Gear^.Friction + RopePoints.ar[RopePoints.Count].dLen
+            end
+        end;
 
 haveCollision:= false;
 if TestCollisionXwithGear(HHGear, hwSign(HHGear^.dX)) then
-	begin
-	HHGear^.dX:= -_0_6 * HHGear^.dX;
-	haveCollision:= true
-	end;
+    begin
+    HHGear^.dX:= -_0_6 * HHGear^.dX;
+    haveCollision:= true
+    end;
 if TestCollisionYwithGear(HHGear, hwSign(HHGear^.dY)) then
-	begin
-	HHGear^.dY:= -_0_6 * HHGear^.dY;
-	haveCollision:= true
-	end;
+    begin
+    HHGear^.dY:= -_0_6 * HHGear^.dY;
+    haveCollision:= true
+    end;
 
 if haveCollision
-	and (Gear^.Message and (gm_Left or gm_Right) <> 0)
-	and (Gear^.Message and (gm_Up or gm_Down) <> 0) then
-	begin
-	HHGear^.dX:= SignAs(hwAbs(HHGear^.dX) + _0_2, HHGear^.dX);
-	HHGear^.dY:= SignAs(hwAbs(HHGear^.dY) + _0_2, HHGear^.dY)
-	end;
+    and (Gear^.Message and (gm_Left or gm_Right) <> 0)
+    and (Gear^.Message and (gm_Up or gm_Down) <> 0) then
+    begin
+    HHGear^.dX:= SignAs(hwAbs(HHGear^.dX) + _0_2, HHGear^.dX);
+    HHGear^.dY:= SignAs(hwAbs(HHGear^.dY) + _0_2, HHGear^.dY)
+    end;
 
 len:= Distance(HHGear^.dX, HHGear^.dY);
 if len > _0_8 then
-	begin
-	len:= _0_8 / len;
-	HHGear^.dX:= HHGear^.dX * len;
-	HHGear^.dY:= HHGear^.dY * len;
-	end;
+    begin
+    len:= _0_8 / len;
+    HHGear^.dX:= HHGear^.dX * len;
+    HHGear^.dY:= HHGear^.dY * len;
+    end;
 
 if (Gear^.Message and gm_Attack) <> 0 then
-	if (Gear^.State and gsttmpFlag) <> 0 then
-		with PHedgehog(Gear^.Hedgehog)^ do
-			if Ammo^[CurSlot, CurAmmo].AmmoType <> amParachute then
-				WaitCollision
-			else
-				DeleteMe
-	else
+    if (Gear^.State and gsttmpFlag) <> 0 then
+        with PHedgehog(Gear^.Hedgehog)^ do
+            if Ammo^[CurSlot, CurAmmo].AmmoType <> amParachute then
+                WaitCollision
+            else
+                DeleteMe
+    else
 else
-	if (Gear^.State and gsttmpFlag) = 0 then
-		Gear^.State:= Gear^.State or gsttmpFlag;
+    if (Gear^.State and gsttmpFlag) = 0 then
+        Gear^.State:= Gear^.State or gsttmpFlag;
 end;
 
 procedure doStepRopeAttach(Gear: PGear);
 var HHGear: PGear;
-	tx, ty, tt: hwFloat;
+    tx, ty, tt: hwFloat;
 
-	procedure RemoveFromAmmo;
-	begin
-	if (Gear^.State and gstAttacked) = 0 then
-		begin
-		OnUsedAmmo(PHedgehog(HHGear^.Hedgehog)^);
-		Gear^.State:= Gear^.State or gstAttacked
-		end;
-	ApplyAmmoChanges(PHedgehog(HHGear^.Hedgehog)^)
-	end;
+    procedure RemoveFromAmmo;
+    begin
+    if (Gear^.State and gstAttacked) = 0 then
+        begin
+        OnUsedAmmo(PHedgehog(HHGear^.Hedgehog)^);
+        Gear^.State:= Gear^.State or gstAttacked
+        end;
+    ApplyAmmoChanges(PHedgehog(HHGear^.Hedgehog)^)
+    end;
 
 begin
 Gear^.X:= Gear^.X - Gear^.dX;
@@ -1056,77 +1056,77 @@
 DeleteCI(HHGear);
 
 if (HHGear^.State and gstMoving) <> 0 then
-	begin
-	if TestCollisionXwithGear(HHGear, hwSign(HHGear^.dX)) then SetLittle(HHGear^.dX);
-	if HHGear^.dY.isNegative and TestCollisionYwithGear(HHGear, -1) then HHGear^.dY:= _0;
+    begin
+    if TestCollisionXwithGear(HHGear, hwSign(HHGear^.dX)) then SetLittle(HHGear^.dX);
+    if HHGear^.dY.isNegative and TestCollisionYwithGear(HHGear, -1) then HHGear^.dY:= _0;
 
-	HHGear^.X:= HHGear^.X + HHGear^.dX;
-	Gear^.X:= Gear^.X + HHGear^.dX;
+    HHGear^.X:= HHGear^.X + HHGear^.dX;
+    Gear^.X:= Gear^.X + HHGear^.dX;
 
-	if TestCollisionYwithGear(HHGear, 1) then
-		begin
-		CheckHHDamage(HHGear);
-		HHGear^.dY:= _0;
-		//HHGear^.State:= HHGear^.State and not (gstHHJumping or gstHHHJump);
-		end else
-		begin
-		HHGear^.Y:= HHGear^.Y + HHGear^.dY;
-		Gear^.Y:= Gear^.Y + HHGear^.dY;
-		HHGear^.dY:= HHGear^.dY + cGravity;
-		end;
-		
-	tt:= Gear^.Elasticity;
-	tx:= _0;
-	ty:= _0;
-	while tt > _20 do
-		begin
-		if  TestCollisionXwithXYShift(Gear, tx, hwRound(ty), -hwSign(Gear^.dX))
-		or TestCollisionYwithXYShift(Gear, hwRound(tx), hwRound(ty), -hwSign(Gear^.dY)) then
-			begin
-			Gear^.X:= Gear^.X + tx;
-			Gear^.Y:= Gear^.Y + ty;
-			Gear^.Elasticity:= tt;
-			Gear^.doStep:= @doStepRopeWork;
-			with HHGear^ do State:= State and not (gstAttacking or gstHHJumping or gstHHHJump);
+    if TestCollisionYwithGear(HHGear, 1) then
+        begin
+        CheckHHDamage(HHGear);
+        HHGear^.dY:= _0;
+        //HHGear^.State:= HHGear^.State and not (gstHHJumping or gstHHHJump);
+        end else
+        begin
+        HHGear^.Y:= HHGear^.Y + HHGear^.dY;
+        Gear^.Y:= Gear^.Y + HHGear^.dY;
+        HHGear^.dY:= HHGear^.dY + cGravity;
+        end;
+        
+    tt:= Gear^.Elasticity;
+    tx:= _0;
+    ty:= _0;
+    while tt > _20 do
+        begin
+        if  TestCollisionXwithXYShift(Gear, tx, hwRound(ty), -hwSign(Gear^.dX))
+        or TestCollisionYwithXYShift(Gear, hwRound(tx), hwRound(ty), -hwSign(Gear^.dY)) then
+            begin
+            Gear^.X:= Gear^.X + tx;
+            Gear^.Y:= Gear^.Y + ty;
+            Gear^.Elasticity:= tt;
+            Gear^.doStep:= @doStepRopeWork;
+            with HHGear^ do State:= State and not (gstAttacking or gstHHJumping or gstHHHJump);
 
-			RemoveFromAmmo;
+            RemoveFromAmmo;
 
-			tt:= _0;
-			exit
-			end;
-		tx:= tx + Gear^.dX + Gear^.dX;
-		ty:= ty + Gear^.dY + Gear^.dY;
-		tt:= tt - _2;
-		end;
-	end;
+            tt:= _0;
+            exit
+            end;
+        tx:= tx + Gear^.dX + Gear^.dX;
+        ty:= ty + Gear^.dY + Gear^.dY;
+        tt:= tt - _2;
+        end;
+    end;
 
 CheckCollision(Gear);
 
 if (Gear^.State and gstCollision) <> 0 then
-	if Gear^.Elasticity < _10 then
-		Gear^.Elasticity:= _10000
-	else
-		begin
-		Gear^.doStep:= @doStepRopeWork;
-		with HHGear^ do State:= State and not (gstAttacking or gstHHJumping or gstHHHJump);
+    if Gear^.Elasticity < _10 then
+        Gear^.Elasticity:= _10000
+    else
+        begin
+        Gear^.doStep:= @doStepRopeWork;
+        with HHGear^ do State:= State and not (gstAttacking or gstHHJumping or gstHHHJump);
 
-		RemoveFromAmmo;
+        RemoveFromAmmo;
 
-		exit
-		end;
+        exit
+        end;
 
 if (Gear^.Elasticity > Gear^.Friction)
 or ((Gear^.Message and gm_Attack) = 0)
 or ((HHGear^.State and gstHHDriven) = 0)
 or (HHGear^.Damage > 0) then
-	begin
-	with PHedgehog(Gear^.Hedgehog)^.Gear^ do
-		begin
-		State:= State and not gstAttacking;
-		Message:= Message and not gm_Attack
-		end;
-	DeleteGear(Gear)
-	end
+    begin
+    with PHedgehog(Gear^.Hedgehog)^.Gear^ do
+        begin
+        State:= State and not gstAttacking;
+        Message:= Message and not gm_Attack
+        end;
+    DeleteGear(Gear)
+    end
 end;
 
 procedure doStepRope(Gear: PGear);
@@ -1141,10 +1141,10 @@
 begin
 inc(Gear^.Timer);
 if Gear^.Timer > 64 then
-	begin
-	Gear^.Timer:= 0;
-	dec(Gear^.State)
-	end;
+    begin
+    Gear^.Timer:= 0;
+    dec(Gear^.State)
+    end;
 Gear^.dX:= Gear^.dX + cWindSpeed;
 Gear^.X:= Gear^.X + Gear^.dX;
 if Gear^.State = 0 then DeleteGear(Gear)
@@ -1155,11 +1155,11 @@
 begin
 inc(Gear^.Timer);
 if Gear^.Timer > 75 then
-	begin
-	inc(Gear^.State);
-	Gear^.Timer:= 0;
-	if Gear^.State > 5 then DeleteGear(Gear)
-	end;
+    begin
+    inc(Gear^.State);
+    Gear^.Timer:= 0;
+    if Gear^.State > 5 then DeleteGear(Gear)
+    end;
 end;
 
 procedure doStepExplosion(Gear: PGear);
@@ -1175,50 +1175,50 @@
 procedure doStepMine(Gear: PGear);
 begin
 if (Gear^.State and gstMoving) <> 0 then
-	begin
-	DeleteCI(Gear);
-	doStepFallingGear(Gear);
-	if (Gear^.State and gstMoving) = 0 then
-		begin
-		AddGearCI(Gear);
-		Gear^.dX:= _0;
-		Gear^.dY:= _0
-		end;
-	CalcRotationDirAngle(Gear);
-	AllInactive:= false
-	end else
-	if ((GameTicks and $3F) = 25) then
-		doStepFallingGear(Gear);
+    begin
+    DeleteCI(Gear);
+    doStepFallingGear(Gear);
+    if (Gear^.State and gstMoving) = 0 then
+        begin
+        AddGearCI(Gear);
+        Gear^.dX:= _0;
+        Gear^.dY:= _0
+        end;
+    CalcRotationDirAngle(Gear);
+    AllInactive:= false
+    end else
+    if ((GameTicks and $3F) = 25) then
+        doStepFallingGear(Gear);
 
 if ((Gear^.State and gsttmpFlag) <> 0) and (Gear^.Health <> 0) then
-	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
-			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
+            begin
             if ((Gear^.State and gstWait) <> 0) or 
                (cMineDudPercent = 0) or
-		       (getRandom(100) > cMineDudPercent) then
+               (getRandom(100) > cMineDudPercent) then
                begin
-			   doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, EXPLAutoSound);
-			   DeleteGear(Gear)
+               doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, EXPLAutoSound);
+               DeleteGear(Gear)
                end
             else
                begin
-			   AddVisualGear(hwRound(Gear^.X) - 4  + Random(8), hwRound(Gear^.Y) - 4 - Random(4), vgtSmoke);
-		       PlaySound(sndVaporize);
+               AddVisualGear(hwRound(Gear^.X) - 4  + Random(8), hwRound(Gear^.Y) - 4 - Random(4), vgtSmoke);
+               PlaySound(sndVaporize);
                Gear^.Health:= 0;
                end;
-			exit
-			end;
-		dec(Gear^.Timer);
-		end else // gsttmpFlag = 0
-	if TurnTimeLeft = 0 then Gear^.State:= Gear^.State or gsttmpFlag;
+            exit
+            end;
+        dec(Gear^.Timer);
+        end else // gsttmpFlag = 0
+    if TurnTimeLeft = 0 then Gear^.State:= Gear^.State or gsttmpFlag;
 end;
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -1228,13 +1228,13 @@
 AllInactive:= false;
 if Gear^.Timer mod 166 = 0 then inc(Gear^.Tag);
 if Gear^.Timer = 1000 then // might need better timing
-	makeHogsWorry(Gear^.X, Gear^.Y, 75);
+    makeHogsWorry(Gear^.X, Gear^.Y, 75);
 if Gear^.Timer = 0 then
-	begin
-	doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 75, EXPLAutoSound);
-	DeleteGear(Gear);
-	exit
-	end;
+    begin
+    doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 75, EXPLAutoSound);
+    DeleteGear(Gear);
+    exit
+    end;
 dec(Gear^.Timer);
 end;
 
@@ -1247,7 +1247,7 @@
 *)
 procedure doStepRollingBarrel(Gear: PGear);
 var i: LongInt;
-	particle: PVisualGear;
+    particle: PVisualGear;
 begin
 Gear^.State:= Gear^.State or gstAnimation;
 if ((Gear^.dX.QWordValue <> 0) or (Gear^.dY.QWordValue <> 0))  then
@@ -1257,9 +1257,9 @@
     if not Gear^.dY.isNegative and (Gear^.dY > _0_03) and TestCollisionYwithGear(Gear, 1) then
         begin
         inc(Gear^.Damage, hwRound(Gear^.dY * _30));
-	    for i:= min(12, hwRound(Gear^.dY*_10)) downto 0 do 
+        for i:= min(12, hwRound(Gear^.dY*_10)) downto 0 do 
             begin
-		    particle:= AddVisualGear(hwRound(Gear^.X) - 5 + Random(10), hwRound(Gear^.Y) + 12, vgtDust);
+            particle:= AddVisualGear(hwRound(Gear^.X) - 5 + Random(10), hwRound(Gear^.Y) + 12, vgtDust);
             if particle <> nil then particle^.dX := particle^.dX + (Gear^.dX / 5)
             end
         end
@@ -1272,7 +1272,7 @@
     if Gear^.Damage <> 0 then PlaySound(sndGraveImpact);
     doStepFallingGear(Gear);
     CalcRotationDirAngle(Gear);
-	CheckGearDrowning(Gear)
+    CheckGearDrowning(Gear)
     end
 else AddGearCI(Gear);
 (*
@@ -1281,7 +1281,7 @@
     x:= hwRound(Gear^.X);
     y:= hwRound(Gear^.Y);
     if (((y+1) and LAND_HEIGHT_MASK) = 0) and ((x and LAND_WIDTH_MASK) = 0) then
-	    if (Land[y+1, x] = 0) then
+        if (Land[y+1, x] = 0) then
             begin
             if (((y+1) and LAND_HEIGHT_MASK) = 0) and (((x+Gear^.Radius-2) and LAND_WIDTH_MASK) = 0) and (Land[y+1, x+Gear^.Radius-2] = 0) then
                 Gear^.dX:= -_0_08
@@ -1307,25 +1307,25 @@
 
 procedure doStepCase(Gear: PGear);
 var i, x, y: LongInt;
-	k: TGearType;
-	exBoom: boolean;
-	dX, dY: HWFloat;
+    k: TGearType;
+    exBoom: boolean;
+    dX, dY: HWFloat;
 begin
 k:= Gear^.Kind;
 exBoom:= false;
 
 if (Gear^.Message and gm_Destroy) > 0 then
-	begin
-	DeleteGear(Gear);
-	FreeActionsList;
-	SetAllToActive; // something (hh, mine, etc...) could be on top of the case
-	with CurrentHedgehog^ do
-		if Gear <> nil then Gear^.Message:= Gear^.Message and not (gm_LJump or gm_HJump);
-	exit
-	end;
+    begin
+    DeleteGear(Gear);
+    FreeActionsList;
+    SetAllToActive; // something (hh, mine, etc...) could be on top of the case
+    with CurrentHedgehog^ do
+        if Gear <> nil then Gear^.Message:= Gear^.Message and not (gm_LJump or gm_HJump);
+    exit
+    end;
 
 if k = gtExplosives then
-	begin
+    begin
     //if V > _0_03 then Gear^.State:= Gear^.State or gstAnimation;
     if hwAbs(Gear^.dX) > _0_15 then Gear^.doStep:= @doStepRollingBarrel;
     
@@ -1334,60 +1334,60 @@
             AddVisualGear(hwRound(Gear^.X) - 16 + Random(32), hwRound(Gear^.Y) - 2, vgtSmoke)
         else
             AddVisualGear(hwRound(Gear^.X) - 16 + Random(32), hwRound(Gear^.Y) - 2, vgtSmokeWhite);
-	dec(Gear^.Health, Gear^.Damage);
-	Gear^.Damage:= 0;
-	if Gear^.Health <= 0 then
-		exBoom:= true;
-	end;
+    dec(Gear^.Health, Gear^.Damage);
+    Gear^.Damage:= 0;
+    if Gear^.Health <= 0 then
+        exBoom:= true;
+    end;
 
 if (Gear^.Damage > 0) or exBoom then
-	begin
-	x:= hwRound(Gear^.X);
-	y:= hwRound(Gear^.Y);
-	DeleteGear(Gear); // <-- delete gear!
+    begin
+    x:= hwRound(Gear^.X);
+    y:= hwRound(Gear^.Y);
+    DeleteGear(Gear); // <-- delete gear!
 
-	if k = gtCase then
-		begin
-		doMakeExplosion(x, y, 25, 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);
-		for i:= 0 to 31 do
-			begin
-			dX:= AngleCos(i * 64) * _0_5 * (getrandom + _1);
-			dY:= AngleSin(i * 64) * _0_5 * (getrandom + _1);
-			AddGear(x, y, gtFlame, 0, dX, dY, 0);
-			AddGear(x, y, gtFlame, 0, -dX, -dY, 0)^.State:= gsttmpFlag;
-			end
-		end;
-	exit
-	end;
+    if k = gtCase then
+        begin
+        doMakeExplosion(x, y, 25, 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);
+        for i:= 0 to 31 do
+            begin
+            dX:= AngleCos(i * 64) * _0_5 * (getrandom + _1);
+            dY:= AngleSin(i * 64) * _0_5 * (getrandom + _1);
+            AddGear(x, y, gtFlame, 0, dX, dY, 0);
+            AddGear(x, y, gtFlame, 0, -dX, -dY, 0)^.State:= gsttmpFlag;
+            end
+        end;
+    exit
+    end;
 
 if (Gear^.dY.QWordValue <> 0) or (not TestCollisionYwithGear(Gear, 1)) then
-	begin
-	AllInactive:= false;
+    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.isNegative) and TestCollisionYwithGear(Gear, -1) then Gear^.dY:= _0;
+    if (not Gear^.dY.isNegative) and TestCollisionYwithGear(Gear, 1) then
+        begin
         if (Gear^.dY > _0_02) and (k = gtExplosives) then
             inc(Gear^.Damage, hwRound(Gear^.dY * _30));
 
-		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(sndGraveImpact)
-		end;
-	//if Gear^.dY > - _0_001 then Gear^.dY:= _0
-	CheckGearDrowning(Gear);
-	end;
+        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(sndGraveImpact)
+        end;
+    //if Gear^.dY > - _0_001 then Gear^.dY:= _0
+    CheckGearDrowning(Gear);
+    end;
 
 if (Gear^.dY.QWordValue = 0) then AddGearCI(Gear)
        else if (Gear^.dY.QWordValue <> 0) then DeleteCI(Gear)
@@ -1398,36 +1398,36 @@
 procedure doStepTarget(Gear: PGear);
 begin
 if (Gear^.Timer = 0) and (Gear^.Tag = 0) then
-	PlaySound(sndWarp);
+    PlaySound(sndWarp);
 
 if (Gear^.Tag = 0) and (Gear^.Timer < 1000) then
-	inc(Gear^.Timer)
+    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
+    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
 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;
+    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;
 
 doStepCase(Gear)
 end;
@@ -1438,10 +1438,10 @@
 AllInactive:= false;
 dec(Gear^.Timer);
 if Gear^.Timer = 0 then
-	begin
-	DeleteGear(Gear);
-	AfterAttack
-	end
+    begin
+    DeleteGear(Gear);
+    AfterAttack
+    end
 end;
 
 procedure doStepShover(Gear: PGear);
@@ -1468,10 +1468,10 @@
 DeleteCI(HHGear);
 
 for i:= 0 to 3 do
-	begin
-	AmmoShove(Gear, 30, 25);
-	Gear^.X:= Gear^.X + Gear^.dX * 5
-	end;
+    begin
+    AmmoShove(Gear, 30, 25);
+    Gear^.X:= Gear^.X + Gear^.dX * 5
+    end;
 
 HHGear^.State:= HHGear^.State and not gstNoDamage;
 Gear^.Timer:= 250;
@@ -1485,26 +1485,26 @@
     if (Gear^.State and gsttmpFlag) = 0 then AllInactive:= false;
 
 if not TestCollisionYwithGear(Gear, 1) then
-	begin
+    begin
     AllInactive:= false;
-	if hwAbs(Gear^.dX) > _0_01 then
-		Gear^.dX:= Gear^.dX * _0_995;
-	 if (Gear^.State and gsttmpFlag) <> 0 then Gear^.dY:= Gear^.dY + _2*cGravity else
-	Gear^.dY:= Gear^.dY + cGravity;
-	if hwAbs(Gear^.dY) > _0_2 then Gear^.dY:= Gear^.dY * _0_995;
+    if hwAbs(Gear^.dX) > _0_01 then
+        Gear^.dX:= Gear^.dX * _0_995;
+     if (Gear^.State and gsttmpFlag) <> 0 then Gear^.dY:= Gear^.dY + _2*cGravity else
+    Gear^.dY:= Gear^.dY + cGravity;
+    if hwAbs(Gear^.dY) > _0_2 then Gear^.dY:= Gear^.dY * _0_995;
 
-	if (Gear^.State and gsttmpFlag) <> 0 then Gear^.X:= Gear^.X + Gear^.dX else
-	Gear^.X:= Gear^.X + Gear^.dX + cWindSpeed * 640;
-	Gear^.Y:= Gear^.Y + Gear^.dY;
+    if (Gear^.State and gsttmpFlag) <> 0 then Gear^.X:= Gear^.X + Gear^.dX else
+    Gear^.X:= Gear^.X + Gear^.dX + cWindSpeed * 640;
+    Gear^.Y:= Gear^.Y + Gear^.dY;
 
-	if (hwRound(Gear^.Y) > cWaterLine) then
-		begin
-		for i:= 0 to 3 do
-			AddVisualGear(hwRound(Gear^.X) - 16 + Random(32), hwRound(Gear^.Y) - 16 + Random(16), vgtSteam);
-		PlaySound(sndVaporize);
-		DeleteGear(Gear);
-		exit
-		end
+    if (hwRound(Gear^.Y) > cWaterLine) then
+        begin
+        for i:= 0 to 3 do
+            AddVisualGear(hwRound(Gear^.X) - 16 + Random(32), hwRound(Gear^.Y) - 16 + Random(16), vgtSteam);
+        PlaySound(sndVaporize);
+        DeleteGear(Gear);
+        exit
+        end
     end else begin
         if (Gear^.State and gsttmpFlag) <> 0 then 
             begin
@@ -1512,7 +1512,7 @@
             AmmoShove(Gear, 2, 30);
             Gear^.Radius:= 1
             end;
-	    if Gear^.Timer > 0 then
+        if Gear^.Timer > 0 then
             begin
             dec(Gear^.Timer);
             inc(Gear^.Damage)
@@ -1540,7 +1540,7 @@
                       AddVisualGear(hwRound(Gear^.X) - 3 + Random(6), hwRound(Gear^.Y) - 2, vgtSmoke);
                 end;
                 // This one is interesting.  I think I understand the purpose, but I wonder if a bit more fuzzy of kicking could be done with getrandom.
-        	    Gear^.Timer:= 100 - Gear^.Tag * 3;
+                Gear^.Timer:= 100 - Gear^.Tag * 3;
                 if (Gear^.Damage > 3000+Gear^.Tag*1500) then Gear^.Health:= 0
                 end
             end
@@ -1568,31 +1568,31 @@
 begin
 AllInactive:= false;
 if ((Gear^.Message and gm_Destroy) <> 0) then
-	begin
-	DeleteGear(Gear);
-	AfterAttack;
-	exit
-	end;
+    begin
+    DeleteGear(Gear);
+    AfterAttack;
+    exit
+    end;
 
 HHGear:= PHedgehog(Gear^.Hedgehog)^.Gear;
 if hwRound(HHGear^.Y) <= Gear^.Tag - 2 then
-	begin
-	Gear^.Tag:= hwRound(HHGear^.Y);
-	DrawTunnel(HHGear^.X - int2hwFloat(cHHRadius), HHGear^.Y - _1, _0_5, _0, cHHRadius * 4, 2);
-	HHGear^.State:= HHGear^.State or gstNoDamage;
-	Gear^.Y:= HHGear^.Y;
-	AmmoShove(Gear, 30, 40);
-	HHGear^.State:= HHGear^.State and not gstNoDamage
-	end;
+    begin
+    Gear^.Tag:= hwRound(HHGear^.Y);
+    DrawTunnel(HHGear^.X - int2hwFloat(cHHRadius), HHGear^.Y - _1, _0_5, _0, cHHRadius * 4, 2);
+    HHGear^.State:= HHGear^.State or gstNoDamage;
+    Gear^.Y:= HHGear^.Y;
+    AmmoShove(Gear, 30, 40);
+    HHGear^.State:= HHGear^.State and not gstNoDamage
+    end;
 
 HHGear^.dY:= HHGear^.dY + cGravity;
 if not (HHGear^.dY.isNegative) then
-	begin
-	HHGear^.State:= HHGear^.State or gstMoving;
-	DeleteGear(Gear);
-	AfterAttack;
-	exit
-	end;
+    begin
+    HHGear^.State:= HHGear^.State or gstMoving;
+    DeleteGear(Gear);
+    AfterAttack;
+    exit
+    end;
 
 if CheckLandValue(hwRound(HHGear^.X), hwRound(HHGear^.Y + HHGear^.dY + SignAs(_6,Gear^.dY)), COLOR_INDESTRUCTIBLE) then
    HHGear^.Y:= HHGear^.Y + HHGear^.dY
@@ -1628,24 +1628,24 @@
 inc(Gear^.Timer);
 
 if TestCollisionYwithGear(HHGear, 1)
-	or ((HHGear^.State and gstHHDriven) = 0)
-	or CheckGearDrowning(HHGear)
-	or ((Gear^.Message and gm_Attack) <> 0) then
-	begin
-	with HHGear^ do
-		begin
-		Message:= 0;
-		SetLittle(dX);
-		dY:= _0;
-		State:= State or gstMoving;
-		end;
-	DeleteGear(Gear);
-	isCursorVisible:= false;
-	exit
-	end;
+    or ((HHGear^.State and gstHHDriven) = 0)
+    or CheckGearDrowning(HHGear)
+    or ((Gear^.Message and gm_Attack) <> 0) then
+    begin
+    with HHGear^ do
+        begin
+        Message:= 0;
+        SetLittle(dX);
+        dY:= _0;
+        State:= State or gstMoving;
+        end;
+    DeleteGear(Gear);
+    isCursorVisible:= false;
+    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 gm_Left) <> 0 then HHGear^.X:= HHGear^.X - cMaxWindSpeed * 40
 else if (Gear^.Message and gm_Right) <> 0 then HHGear^.X:= HHGear^.X + cMaxWindSpeed * 40;
@@ -1684,19 +1684,19 @@
 Gear^.X:= Gear^.X + cAirPlaneSpeed * Gear^.Tag;
 
 if (Gear^.Health > 0)and(not (Gear^.X < Gear^.dX))and(Gear^.X < Gear^.dX + cAirPlaneSpeed) then
-	begin
-	dec(Gear^.Health);
-	case Gear^.State of
-			0: FollowGear:= AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtAirBomb, 0, cBombsSpeed * Gear^.Tag, _0, 0);
-			1: FollowGear:= AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtMine,    0, cBombsSpeed * Gear^.Tag, _0, 0);
-			2: for i:= -19 to 19 do
-				FollowGear:= AddGear(hwRound(Gear^.X) + i div 3, hwRound(Gear^.Y), gtFlame, 0, _0_001 * i, _0, 0);
-			end;
-	Gear^.dX:= Gear^.dX + int2hwFloat(30 * Gear^.Tag)
-	end;
+    begin
+    dec(Gear^.Health);
+    case Gear^.State of
+            0: FollowGear:= AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtAirBomb, 0, cBombsSpeed * Gear^.Tag, _0, 0);
+            1: FollowGear:= AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtMine,    0, cBombsSpeed * Gear^.Tag, _0, 0);
+            2: for i:= -19 to 19 do
+                FollowGear:= AddGear(hwRound(Gear^.X) + i div 3, hwRound(Gear^.Y), gtFlame, 0, _0_001 * i, _0, 0);
+            end;
+    Gear^.dX:= Gear^.dX + int2hwFloat(30 * Gear^.Tag)
+    end;
 
 if (GameTicks and $3F) = 0 then
-	AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtSmokeTrace, 0, _0, _0, 0);
+    AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtSmokeTrace, 0, _0, _0, 0);
 
 if (hwRound(Gear^.X) > (LAND_WIDTH+1024)) or (hwRound(Gear^.X) < -1024) then DeleteGear(Gear)
 end;
@@ -1706,21 +1706,21 @@
 AllInactive:= false;
 
 if Gear^.X.QWordValue = 0 then
-	begin
-	Gear^.Tag:=  1;
-	Gear^.X:= -_1024;
-	end
+    begin
+    Gear^.Tag:=  1;
+    Gear^.X:= -_1024;
+    end
 else
-	begin
-	Gear^.Tag:= -1;
-	Gear^.X:= int2hwFloat(LAND_WIDTH + 1024);
-	end;
+    begin
+    Gear^.Tag:= -1;
+    Gear^.X:= int2hwFloat(LAND_WIDTH + 1024);
+    end;
 
 Gear^.Y:= int2hwFloat(topY-300);
 Gear^.dX:= int2hwFloat(TargetPoint.X - 5 * Gear^.Tag * 15);
 
 if (int2hwFloat(TargetPoint.Y) - Gear^.Y > _0) and (Gear^.State <> 2) then
-	    Gear^.dX:= Gear^.dX - cBombsSpeed * hwSqrt((int2hwFloat(TargetPoint.Y) - Gear^.Y) * 2 / cGravity) * Gear^.Tag;
+        Gear^.dX:= Gear^.dX - cBombsSpeed * hwSqrt((int2hwFloat(TargetPoint.Y) - Gear^.Y) * 2 / cGravity) * Gear^.Tag;
 
 Gear^.Health:= 6;
 Gear^.doStep:= @doStepAirAttackWork;
@@ -1733,13 +1733,13 @@
 AllInactive:= false;
 doStepFallingGear(Gear);
 if (Gear^.State and gstCollision) <> 0 then
-	begin
-	doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 30, EXPLAutoSound);
-	DeleteGear(Gear);
-	exit
-	end;
+    begin
+    doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 30, EXPLAutoSound);
+    DeleteGear(Gear);
+    exit
+    end;
 if (GameTicks and $3F) = 0 then
-	AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtSmokeTrace, 0, _0, _0, 0)
+    AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtSmokeTrace, 0, _0, _0, 0)
 end;
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -1760,20 +1760,20 @@
    not TryPlaceOnLand(TargetPoint.X - SpritesData[sprAmGirder].Width div 2,
                       TargetPoint.Y - SpritesData[sprAmGirder].Height div 2,
                       sprAmGirder, Gear^.State, true) then
-	begin
+    begin
     PlaySound(sndDenied);
-	HHGear^.Message:= HHGear^.Message and not gm_Attack;
-	HHGear^.State:= HHGear^.State and not gstAttacking;
-	HHGear^.State:= HHGear^.State or gstHHChooseTarget;
-	isCursorVisible:= true;
-	DeleteGear(Gear)
-	end
+    HHGear^.Message:= HHGear^.Message and not gm_Attack;
+    HHGear^.State:= HHGear^.State and not gstAttacking;
+    HHGear^.State:= HHGear^.State or gstHHChooseTarget;
+    isCursorVisible:= true;
+    DeleteGear(Gear)
+    end
 else begin
     PlaySound(sndPlaced);
-	DeleteGear(Gear);
+    DeleteGear(Gear);
     OnUsedAmmo(PHedgehog(HHGear^.Hedgehog)^);
     ApplyAmmoChanges(PHedgehog(HHGear^.Hedgehog)^)
-	end;
+    end;
 
 HHGear^.State:= HHGear^.State and not (gstAttacking or gstAttacked);
 HHGear^.Message:= HHGear^.Message and not gm_Attack;
@@ -1789,23 +1789,23 @@
 HHGear^.Y:= HHGear^.Y + HHGear^.dY; // hedgehog falling to collect cases
 HHGear^.dY:= HHGear^.dY + cGravity;
 if TestCollisionYwithGear(HHGear, 1)
-	or CheckGearDrowning(HHGear) then
-	begin
-	DeleteGear(Gear);
-	AfterAttack
-	end
+    or CheckGearDrowning(HHGear) then
+    begin
+    DeleteGear(Gear);
+    AfterAttack
+    end
 end;
 
 procedure doStepTeleportAnim(Gear: PGear);
 begin
 inc(Gear^.Timer);
 if Gear^.Timer = 65 then
-	begin
-	Gear^.Timer:= 0;
-	inc(Gear^.Pos);
-	if Gear^.Pos = 11 then
-		Gear^.doStep:= @doStepTeleportAfter
-	end;
+    begin
+    Gear^.Timer:= 0;
+    inc(Gear^.Pos);
+    if Gear^.Pos = 11 then
+        Gear^.doStep:= @doStepTeleportAfter
+    end;
 end;
 
 procedure doStepTeleport(Gear: PGear);
@@ -1817,25 +1817,25 @@
 if not TryPlaceOnLand(TargetPoint.X - SpritesData[sprHHTelepMask].Width div 2,
                       TargetPoint.Y - SpritesData[sprHHTelepMask].Height div 2,
                       sprHHTelepMask, 0, false) then
-		begin
-		HHGear^.Message:= HHGear^.Message and not gm_Attack;
-		HHGear^.State:= HHGear^.State and not gstAttacking;
-		HHGear^.State:= HHGear^.State or gstHHChooseTarget;
-		DeleteGear(Gear);
-		isCursorVisible:= true;
-		PlaySound(sndDenied)
-		end
-	else begin
-		DeleteCI(HHGear);
-		SetAllHHToActive;
-		Gear^.doStep:= @doStepTeleportAnim;
-		Gear^.X:= HHGear^.X;
-		Gear^.Y:= HHGear^.Y;
-		HHGear^.X:= int2hwFloat(TargetPoint.X);
-		HHGear^.Y:= int2hwFloat(TargetPoint.Y);
-		HHGear^.State:= HHGear^.State or gstMoving;
-		playSound(sndWarp)
-		end;
+        begin
+        HHGear^.Message:= HHGear^.Message and not gm_Attack;
+        HHGear^.State:= HHGear^.State and not gstAttacking;
+        HHGear^.State:= HHGear^.State or gstHHChooseTarget;
+        DeleteGear(Gear);
+        isCursorVisible:= true;
+        PlaySound(sndDenied)
+        end
+    else begin
+        DeleteCI(HHGear);
+        SetAllHHToActive;
+        Gear^.doStep:= @doStepTeleportAnim;
+        Gear^.X:= HHGear^.X;
+        Gear^.Y:= HHGear^.Y;
+        HHGear^.X:= int2hwFloat(TargetPoint.X);
+        HHGear^.Y:= int2hwFloat(TargetPoint.Y);
+        HHGear^.State:= HHGear^.State or gstMoving;
+        playSound(sndWarp)
+        end;
 TargetPoint.X:= NoPointX;
 
 end;
@@ -1848,49 +1848,49 @@
 AllInactive:= false;
 
 if ((Gear^.Message and not gm_Switch) <> 0) or (TurnTimeLeft = 0) then
-	begin
-	HHGear:= PHedgehog(Gear^.Hedgehog)^.Gear;
-	Msg:= Gear^.Message and not gm_Switch;
-	DeleteGear(Gear);
-	OnUsedAmmo(PHedgehog(HHGear^.Hedgehog)^);
-	ApplyAmmoChanges(PHedgehog(HHGear^.Hedgehog)^);
+    begin
+    HHGear:= PHedgehog(Gear^.Hedgehog)^.Gear;
+    Msg:= Gear^.Message and not gm_Switch;
+    DeleteGear(Gear);
+    OnUsedAmmo(PHedgehog(HHGear^.Hedgehog)^);
+    ApplyAmmoChanges(PHedgehog(HHGear^.Hedgehog)^);
 
-	HHGear:= CurrentHedgehog^.Gear;
-	ApplyAmmoChanges(PHedgehog(HHGear^.Hedgehog)^);
-	HHGear^.Message:= Msg;
-	exit
-	end;
+    HHGear:= CurrentHedgehog^.Gear;
+    ApplyAmmoChanges(PHedgehog(HHGear^.Hedgehog)^);
+    HHGear^.Message:= Msg;
+    exit
+    end;
 
 if (Gear^.Message and gm_Switch) <> 0 then
-	begin
-	HHGear:= CurrentHedgehog^.Gear;
-	HHGear^.Message:= HHGear^.Message and not gm_Switch;
-	Gear^.Message:= Gear^.Message and not gm_Switch;
-	State:= HHGear^.State;
-	HHGear^.State:= 0;
-	HHGear^.Active:= false;
-	HHGear^.Z:= cHHZ;
-	RemoveGearFromList(HHGear);
-	InsertGearToList(HHGear);
+    begin
+    HHGear:= CurrentHedgehog^.Gear;
+    HHGear^.Message:= HHGear^.Message and not gm_Switch;
+    Gear^.Message:= Gear^.Message and not gm_Switch;
+    State:= HHGear^.State;
+    HHGear^.State:= 0;
+    HHGear^.Active:= false;
+    HHGear^.Z:= cHHZ;
+    RemoveGearFromList(HHGear);
+    InsertGearToList(HHGear);
 
-	PlaySound(sndSwitchHog);
-	
-	repeat
-		CurrentTeam^.CurrHedgehog:= Succ(CurrentTeam^.CurrHedgehog) mod (CurrentTeam^.HedgehogsNumber);
-	until (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear <> nil);
+    PlaySound(sndSwitchHog);
+    
+    repeat
+        CurrentTeam^.CurrHedgehog:= Succ(CurrentTeam^.CurrHedgehog) mod (CurrentTeam^.HedgehogsNumber);
+    until (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear <> nil);
 
-	CurrentHedgehog:= @CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog];
+    CurrentHedgehog:= @CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog];
 
-	HHGear:= CurrentHedgehog^.Gear;
-	HHGear^.State:= State;
-	HHGear^.Active:= true;
-	FollowGear:= HHGear;
-	HHGear^.Z:= cCurrHHZ;
-	RemoveGearFromList(HHGear);
-	InsertGearToList(HHGear);
-	Gear^.X:= HHGear^.X;
-	Gear^.Y:= HHGear^.Y
-	end;
+    HHGear:= CurrentHedgehog^.Gear;
+    HHGear^.State:= State;
+    HHGear^.Active:= true;
+    FollowGear:= HHGear;
+    HHGear^.Z:= cCurrHHZ;
+    RemoveGearFromList(HHGear);
+    InsertGearToList(HHGear);
+    Gear^.X:= HHGear^.X;
+    Gear^.Y:= HHGear^.Y
+    end;
 end;
 
 procedure doStepSwitcher(Gear: PGear);
@@ -1900,10 +1900,10 @@
 
 HHGear:= PHedgehog(Gear^.Hedgehog)^.Gear;
 with HHGear^ do
-	begin
-	State:= State and not gstAttacking;
-	Message:= Message and not gm_Attack
-	end
+    begin
+    State:= State and not gstAttacking;
+    Message:= Message and not gm_Attack
+    end
 end;
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -1918,24 +1918,24 @@
 
 doStepFallingGear(Gear);
 if (Gear^.State and gstCollision) <> 0 then
-	begin
-	doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 20, EXPLAutoSound);
+    begin
+    doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 20, EXPLAutoSound);
 
-	Gear^.dX.isNegative:= not dxn;
-	Gear^.dY.isNegative:= not dyn;
-	for i:= 0 to 4 do
-		begin
-		dX:= Gear^.dX + (GetRandom - _0_5) * _0_03;
-		dY:= Gear^.dY + (GetRandom - _0_5) * _0_03;
-		AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtCluster, 0, dX, dY, 25);
-		end;
+    Gear^.dX.isNegative:= not dxn;
+    Gear^.dY.isNegative:= not dyn;
+    for i:= 0 to 4 do
+        begin
+        dX:= Gear^.dX + (GetRandom - _0_5) * _0_03;
+        dY:= Gear^.dY + (GetRandom - _0_5) * _0_03;
+        AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtCluster, 0, dX, dY, 25);
+        end;
 
-	DeleteGear(Gear);
-	exit
-	end;
+    DeleteGear(Gear);
+    exit
+    end;
 
 if (GameTicks and $3F) = 0 then
-	AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtSmokeTrace, 0, _0, _0, 0)
+    AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtSmokeTrace, 0, _0, _0, 0)
 end;
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -1952,47 +1952,47 @@
 
 i:= 2;
 repeat
-	Gear^.X:= Gear^.X + HHGear^.dX;
-	Gear^.Y:= Gear^.Y + HHGear^.dY;
-	HHGear^.X:= Gear^.X;
-	HHGear^.Y:= Gear^.Y;
+    Gear^.X:= Gear^.X + HHGear^.dX;
+    Gear^.Y:= Gear^.Y + HHGear^.dY;
+    HHGear^.X:= Gear^.X;
+    HHGear^.Y:= Gear^.Y;
 
-	inc(Gear^.Damage, 2);
+    inc(Gear^.Damage, 2);
 
-//	if TestCollisionXwithGear(HHGear, hwSign(Gear^.dX))
-//		or TestCollisionYwithGear(HHGear, hwSign(Gear^.dY)) then inc(Gear^.Damage, 3);
+//  if TestCollisionXwithGear(HHGear, hwSign(Gear^.dX))
+//      or TestCollisionYwithGear(HHGear, hwSign(Gear^.dY)) then inc(Gear^.Damage, 3);
 
-	dec(i)
+    dec(i)
 until (i = 0) or (Gear^.Damage > Gear^.Health);
 
 inc(upd);
 if upd > 3 then
-	begin
-	if Gear^.Health < 1500 then Gear^.Pos:= 2;
+    begin
+    if Gear^.Health < 1500 then Gear^.Pos:= 2;
 
-	AmmoShove(Gear, 30, 40);
+    AmmoShove(Gear, 30, 40);
 
-	DrawTunnel(HHGear^.X - HHGear^.dX * 10,
-			HHGear^.Y - _2 - HHGear^.dY * 10 + hwAbs(HHGear^.dY) * 2,
-			HHGear^.dX,
-			HHGear^.dY,
-			20 + cHHRadius * 2,
-			cHHRadius * 2 + 6);
+    DrawTunnel(HHGear^.X - HHGear^.dX * 10,
+            HHGear^.Y - _2 - HHGear^.dY * 10 + hwAbs(HHGear^.dY) * 2,
+            HHGear^.dX,
+            HHGear^.dY,
+            20 + cHHRadius * 2,
+            cHHRadius * 2 + 6);
 
-	upd:= 0
-	end;
+    upd:= 0
+    end;
 
 if Gear^.Health < Gear^.Damage then
-	begin
-	doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 30, EXPLAutoSound);
-	AfterAttack;
-	DeleteGear(Gear);
-	DeleteGear(HHGear);
-	end else
-	begin
-	dec(Gear^.Health, Gear^.Damage);
-	Gear^.Damage:= 0
-	end
+    begin
+    doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 30, EXPLAutoSound);
+    AfterAttack;
+    DeleteGear(Gear);
+    DeleteGear(HHGear);
+    end else
+    begin
+    dec(Gear^.Health, Gear^.Damage);
+    Gear^.Damage:= 0
+    end
 end;
 
 procedure doStepKamikazeIdle(Gear: PGear);
@@ -2000,11 +2000,11 @@
 AllInactive:= false;
 dec(Gear^.Timer);
 if Gear^.Timer = 0 then
-	begin
-	Gear^.Pos:= 1;
-	PlaySound(sndKamikaze, PHedgehog(Gear^.Hedgehog)^.Team^.voicepack);
-	Gear^.doStep:= @doStepKamikazeWork
-	end
+    begin
+    Gear^.Pos:= 1;
+    PlaySound(sndKamikaze, PHedgehog(Gear^.Hedgehog)^.Team^.voicepack);
+    Gear^.doStep:= @doStepKamikazeWork
+    end
 end;
 
 procedure doStepKamikaze(Gear: PGear);
@@ -2029,7 +2029,7 @@
 const cakeh = 27;
       cakeDmg = 75;
 var CakePoints: array[0..Pred(cakeh)] of record x, y: hwFloat; end;
-	CakeI: Longword;
+    CakeI: Longword;
 
 procedure doStepCakeExpl(Gear: PGear);
 begin
@@ -2045,7 +2045,7 @@
 
 procedure doStepCakeDown(Gear: PGear);
 var gi: PGear;
-	dmg: LongInt;
+    dmg: LongInt;
 begin
 AllInactive:= false;
 
@@ -2054,39 +2054,39 @@
 Gear^.Tag:= 0;
 
 if Gear^.Pos = 0 then
-	begin
-	gi:= GearsList;
-	while gi <> nil do
-		begin
-		dmg:= cakeDmg * 2 - hwRound(Distance(gi^.X - Gear^.X, gi^.Y - Gear^.Y));
-		if (dmg > 1) and (gi^.Kind = gtHedgehog) then
+    begin
+    gi:= GearsList;
+    while gi <> nil do
+        begin
+        dmg:= cakeDmg * 2 - hwRound(Distance(gi^.X - Gear^.X, gi^.Y - Gear^.Y));
+        if (dmg > 1) and (gi^.Kind = gtHedgehog) then
             if (CurrentHedgehog^.Gear = gi) and (not gi^.Invulnerable) then
-			    gi^.State:= gi^.State or gstLoser
+                gi^.State:= gi^.State or gstLoser
             else
-			    gi^.State:= gi^.State or gstWinner;
-		gi:= gi^.NextGear
-		end;
-	Gear^.doStep:= @doStepCakeExpl;
-	PlaySound(sndCake)
-	end else dec(Gear^.Pos)
+                gi^.State:= gi^.State or gstWinner;
+        gi:= gi^.NextGear
+        end;
+    Gear^.doStep:= @doStepCakeExpl;
+    PlaySound(sndCake)
+    end else dec(Gear^.Pos)
 end;
 
 
 procedure doStepCakeWork(Gear: PGear);
 const dirs: array[0..3] of TPoint = ((x: 0; y: -1), (x: 1; y: 0),(x: 0; y: 1),(x: -1; y: 0));
 var xx, yy, xxn, yyn: LongInt;
-	da: LongInt;
-	tdx, tdy: hwFloat;
+    da: LongInt;
+    tdx, tdy: hwFloat;
 
-	procedure PrevAngle;
-	begin
-	Gear^.Angle:= (LongInt(Gear^.Angle) + 4 - dA) mod 4
-	end;
+    procedure PrevAngle;
+    begin
+    Gear^.Angle:= (LongInt(Gear^.Angle) + 4 - dA) mod 4
+    end;
 
-	procedure NextAngle;
-	begin
-	Gear^.Angle:= (LongInt(Gear^.Angle) + 4 + dA) mod 4
-	end;
+    procedure NextAngle;
+    begin
+    Gear^.Angle:= (LongInt(Gear^.Angle) + 4 + dA) mod 4
+    end;
 
 begin
 AllInactive:= false;
@@ -2101,49 +2101,49 @@
 yyn:= dirs[(LongInt(Gear^.Angle) + 4 + dA) mod 4].y;
 
 if (xx = 0) then
-	if TestCollisionYwithGear(Gear, yy) then
-		PrevAngle
-	else begin
-		Gear^.Tag:= 0;
-		Gear^.Y:= Gear^.Y + int2hwFloat(yy);
-		if not TestCollisionXwithGear(Gear, xxn) then
-			begin
-			Gear^.X:= Gear^.X + int2hwFloat(xxn);
-			NextAngle
-			end;
-		end;
+    if TestCollisionYwithGear(Gear, yy) then
+        PrevAngle
+    else begin
+        Gear^.Tag:= 0;
+        Gear^.Y:= Gear^.Y + int2hwFloat(yy);
+        if not TestCollisionXwithGear(Gear, xxn) then
+            begin
+            Gear^.X:= Gear^.X + int2hwFloat(xxn);
+            NextAngle
+            end;
+        end;
 
 if (yy = 0) then
-	if TestCollisionXwithGear(Gear, xx) then
-		PrevAngle
-	else begin
-		Gear^.Tag:= 0;
-		Gear^.X:= Gear^.X + int2hwFloat(xx);
-		if not TestCollisionYwithGear(Gear, yyn) then
-			begin
-			Gear^.Y:= Gear^.Y + int2hwFloat(yyn);
-			NextAngle
-			end;
-		end;
+    if TestCollisionXwithGear(Gear, xx) then
+        PrevAngle
+    else begin
+        Gear^.Tag:= 0;
+        Gear^.X:= Gear^.X + int2hwFloat(xx);
+        if not TestCollisionYwithGear(Gear, yyn) then
+            begin
+            Gear^.Y:= Gear^.Y + int2hwFloat(yyn);
+            NextAngle
+            end;
+        end;
 
 if Gear^.Tag = 0 then
-	begin
-	CakeI:= (CakeI + 1) mod cakeh;
-	tdx:= CakePoints[CakeI].x - Gear^.X;
-	tdy:= - CakePoints[CakeI].y + Gear^.Y;
-	CakePoints[CakeI].x:= Gear^.X;
-	CakePoints[CakeI].y:= Gear^.Y;
-	Gear^.DirAngle:= DxDy2Angle(tdx, tdy);
-	end;
+    begin
+    CakeI:= (CakeI + 1) mod cakeh;
+    tdx:= CakePoints[CakeI].x - Gear^.X;
+    tdy:= - CakePoints[CakeI].y + Gear^.Y;
+    CakePoints[CakeI].x:= Gear^.X;
+    CakePoints[CakeI].y:= Gear^.Y;
+    Gear^.DirAngle:= DxDy2Angle(tdx, tdy);
+    end;
 
 dec(Gear^.Health);
 Gear^.Timer:= Gear^.Health*10; // This is not seconds, but at least it is *some* feedback
 if (Gear^.Health = 0) or ((Gear^.Message and gm_Attack) <> 0) then
-	begin
-	FollowGear:= Gear;
+    begin
+    FollowGear:= Gear;
     Gear^.RenderTimer:= false;
-	Gear^.doStep:= @doStepCakeDown
-	end
+    Gear^.doStep:= @doStepCakeDown
+    end
 end;
 
 procedure doStepCakeUp(Gear: PGear);
@@ -2156,15 +2156,15 @@
 Gear^.Tag:= 0;
 
 if Gear^.Pos = 6 then
-	begin
-	for i:= 0 to Pred(cakeh) do
-		begin
-		CakePoints[i].x:= Gear^.X;
-		CakePoints[i].y:= Gear^.Y
-		end;
-	CakeI:= 0;
-	Gear^.doStep:= @doStepCakeWork
-	end else inc(Gear^.Pos)
+    begin
+    for i:= 0 to Pred(cakeh) do
+        begin
+        CakePoints[i].x:= Gear^.X;
+        CakePoints[i].y:= Gear^.Y
+        end;
+    CakeI:= 0;
+    Gear^.doStep:= @doStepCakeWork
+    end else inc(Gear^.Pos)
 end;
 
 procedure doStepCakeFall(Gear: PGear);
@@ -2173,12 +2173,12 @@
 
 Gear^.dY:= Gear^.dY + cGravity;
 if TestCollisionYwithGear(Gear, 1) then
-	Gear^.doStep:= @doStepCakeUp
+    Gear^.doStep:= @doStepCakeUp
 else
-	begin
-	Gear^.Y:= Gear^.Y + Gear^.dY;
-	if CheckGearDrowning(Gear) then AfterAttack
-	end
+    begin
+    Gear^.Y:= Gear^.Y + Gear^.dY;
+    if CheckGearDrowning(Gear) then AfterAttack
+    end
 end;
 
 procedure doStepCake(Gear: PGear);
@@ -2207,22 +2207,22 @@
 y:= hwRound(Gear^.Y);
 
 if ((y and LAND_HEIGHT_MASK) = 0) and ((x and LAND_WIDTH_MASK) = 0) then
-	if (Land[y, x] <> 0) then
-		begin
-		Gear^.dX.isNegative:= not Gear^.dX.isNegative;
-		Gear^.dY.isNegative:= not Gear^.dY.isNegative;
-		Gear^.dX:= Gear^.dX * _1_5;
-		Gear^.dY:= Gear^.dY * _1_5 - _0_3;
-		AmmoShove(Gear, 0, 40);
-		AfterAttack;
-		DeleteGear(Gear)
-		end
-	else
+    if (Land[y, x] <> 0) then
+        begin
+        Gear^.dX.isNegative:= not Gear^.dX.isNegative;
+        Gear^.dY.isNegative:= not Gear^.dY.isNegative;
+        Gear^.dX:= Gear^.dX * _1_5;
+        Gear^.dY:= Gear^.dY * _1_5 - _0_3;
+        AmmoShove(Gear, 0, 40);
+        AfterAttack;
+        DeleteGear(Gear)
+        end
+    else
 else
-	begin
-	AfterAttack;
-	DeleteGear(Gear)
-	end
+    begin
+    AfterAttack;
+    DeleteGear(Gear)
+    end
 end;
 
 procedure doStepSeductionWear(Gear: PGear);
@@ -2230,15 +2230,15 @@
 AllInactive:= false;
 inc(Gear^.Timer);
 if Gear^.Timer > 250 then
-	begin
-	Gear^.Timer:= 0;
-	inc(Gear^.Pos);
-	if Gear^.Pos = 5 then
-		PlaySound(sndYoohoo, PHedgehog(Gear^.Hedgehog)^.Team^.voicepack)
-	end;
+    begin
+    Gear^.Timer:= 0;
+    inc(Gear^.Pos);
+    if Gear^.Pos = 5 then
+        PlaySound(sndYoohoo, PHedgehog(Gear^.Hedgehog)^.Team^.voicepack)
+    end;
 
 if Gear^.Pos = 14 then
-	Gear^.doStep:= @doStepSeductionWork
+    Gear^.doStep:= @doStepSeductionWork
 end;
 
 procedure doStepSeduction(Gear: PGear);
@@ -2256,43 +2256,43 @@
 
 inc(Gear^.Timer);
 if Gear^.Timer = 17 then
-	Gear^.Timer:= 0
+    Gear^.Timer:= 0
 else
-	exit;
+    exit;
 
 if cWaterLine > 0 then
-	begin
-	dec(cWaterLine);
-	for i:= 0 to LAND_WIDTH - 1 do
-		Land[cWaterLine, i]:= 0;
-	SetAllToActive
-	end;
+    begin
+    dec(cWaterLine);
+    for i:= 0 to LAND_WIDTH - 1 do
+        Land[cWaterLine, i]:= 0;
+    SetAllToActive
+    end;
 
 inc(Gear^.Tag);
 if (Gear^.Tag = 47) or (cWaterLine = 0) then
-	DeleteGear(Gear)
+    DeleteGear(Gear)
 end;
 
 ////////////////////////////////////////////////////////////////////////////////
 procedure doStepDrillDrilling(Gear: PGear);
 var t: PGearArray;
-	ox, oy: hwFloat;
+    ox, oy: hwFloat;
 begin
 AllInactive:= false;
 
 if (Gear^.Timer > 0) and ((Gear^.Timer mod 10) = 0) then
-	begin
-	ox:= Gear^.X;
-	oy:= Gear^.Y;
-	Gear^.X:= Gear^.X + Gear^.dX;
-	Gear^.Y:= Gear^.Y + Gear^.dY;
-	DrawTunnel(oX, oY, Gear^.dX, Gear^.dY, 2, 6);
+    begin
+    ox:= Gear^.X;
+    oy:= Gear^.Y;
+    Gear^.X:= Gear^.X + Gear^.dX;
+    Gear^.Y:= Gear^.Y + Gear^.dY;
+    DrawTunnel(oX, oY, Gear^.dX, Gear^.dY, 2, 6);
     if(CheckGearDrowning(Gear)) then
         begin
         StopSound(Gear^.SoundChannel);
-	    exit
+        exit
         end
-	end;
+    end;
 
 t:= CheckGearsCollision(Gear); //fixes drill not exploding when touching HH bug
 if (Gear^.Timer = 0)
@@ -2300,20 +2300,20 @@
 or (not TestCollisionYWithGear(Gear, hwSign(Gear^.dY))
 and not TestCollisionXWithGear(Gear, hwSign(Gear^.dX)))
 or (Land[hwRound(Gear^.Y), hwRound(Gear^.X)] = COLOR_INDESTRUCTIBLE) then
-	begin //out of time or exited ground
+    begin //out of time or exited ground
     StopSound(Gear^.SoundChannel);
-	doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, EXPLAutoSound);
-	DeleteGear(Gear);
-	exit
-	end;
+    doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, EXPLAutoSound);
+    DeleteGear(Gear);
+    exit
+    end;
 
 dec(Gear^.Timer);
 end;
 
 procedure doStepDrill(Gear: PGear);
 var t: PGearArray;
-	oldDx, oldDy: hwFloat;
-	t2: hwFloat;
+    oldDx, oldDy: hwFloat;
+    t2: hwFloat;
 begin
 AllInactive:= false;
 
@@ -2324,56 +2324,56 @@
 doStepFallingGear(Gear);
 
 if (GameTicks and $3F) = 0 then
-	AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtSmokeTrace, 0, _0, _0, 0);
+    AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtSmokeTrace, 0, _0, _0, 0);
 
 if ((Gear^.State and gstCollision) <> 0) then begin //hit
-	Gear^.dX:= oldDx;
-	Gear^.dY:= oldDy;
+    Gear^.dX:= oldDx;
+    Gear^.dY:= oldDy;
 
-	t:= CheckGearsCollision(Gear);
-	if (t^.Count = 0) then begin //hit the ground not the HH
-		t2 := _0_5 / Distance(Gear^.dX, Gear^.dY);
-		Gear^.dX:= Gear^.dX * t2;
-		Gear^.dY:= Gear^.dY * t2;
-	end else begin //explode right on contact with HH
-		doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, EXPLAutoSound);
-		DeleteGear(Gear);
-		exit;
-		end;
+    t:= CheckGearsCollision(Gear);
+    if (t^.Count = 0) then begin //hit the ground not the HH
+        t2 := _0_5 / Distance(Gear^.dX, Gear^.dY);
+        Gear^.dX:= Gear^.dX * t2;
+        Gear^.dY:= Gear^.dY * t2;
+    end else begin //explode right on contact with HH
+        doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 50, EXPLAutoSound);
+        DeleteGear(Gear);
+        exit;
+        end;
 
     Gear^.SoundChannel:= LoopSound(sndPickhammer);
-	Gear^.doStep:= @doStepDrillDrilling;
-	dec(Gear^.Timer)
-	end
+    Gear^.doStep:= @doStepDrillDrilling;
+    dec(Gear^.Timer)
+    end
 end;
 
 ////////////////////////////////////////////////////////////////////////////////
 procedure doStepBallgunWork(Gear: PGear);
 var HHGear: PGear;
-	rx, ry: hwFloat;
+    rx, ry: hwFloat;
 begin
-	AllInactive:= false;
-	dec(Gear^.Timer);
-	HHGear:= PHedgehog(Gear^.Hedgehog)^.Gear;
-	HedgehogChAngle(HHGear);
-	if (Gear^.Timer mod 100) = 0 then
-		begin
-		rx:= rndSign(getRandom * _0_1);
-		ry:= rndSign(getRandom * _0_1);
+    AllInactive:= false;
+    dec(Gear^.Timer);
+    HHGear:= PHedgehog(Gear^.Hedgehog)^.Gear;
+    HedgehogChAngle(HHGear);
+    if (Gear^.Timer mod 100) = 0 then
+        begin
+        rx:= rndSign(getRandom * _0_1);
+        ry:= rndSign(getRandom * _0_1);
 
-		AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtBall, 0,
-				SignAs(AngleSin(HHGear^.Angle) * _0_8, HHGear^.dX) + rx,
-				AngleCos(HHGear^.Angle) * ( - _0_8) + ry,
-				0);
+        AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtBall, 0,
+                SignAs(AngleSin(HHGear^.Angle) * _0_8, HHGear^.dX) + rx,
+                AngleCos(HHGear^.Angle) * ( - _0_8) + ry,
+                0);
 
-		PlaySound(sndGun);
-		end;
+        PlaySound(sndGun);
+        end;
 
-	if (Gear^.Timer = 0) or (HHGear^.Damage <> 0) then
-		begin
-		DeleteGear(Gear);
-		AfterAttack
-		end
+    if (Gear^.Timer = 0) or (HHGear^.Damage <> 0) then
+        begin
+        DeleteGear(Gear);
+        AfterAttack
+        end
 end;
 
 procedure doStepBallgun(Gear: PGear);
@@ -2389,11 +2389,11 @@
 procedure doStepRCPlaneWork(Gear: PGear);
 const cAngleSpeed = 3;
 var HHGear: PGear;
-	i: LongInt;
-	dX, dY: hwFloat;
-	fChanged: boolean;
-	trueAngle: Longword;
-	t: PGear;
+    i: LongInt;
+    dX, dY: hwFloat;
+    fChanged: boolean;
+    trueAngle: Longword;
+    t: PGear;
 begin
 AllInactive:= false;
 
@@ -2406,123 +2406,123 @@
 
 fChanged:= false;
 if ((HHGear^.State and gstHHDriven) = 0) or (Gear^.Timer = 0) then
-	begin
-	fChanged:= true;
-	if Gear^.Angle > 2048 then dec(Gear^.Angle) else
-		if Gear^.Angle < 2048 then inc(Gear^.Angle) else fChanged:= false
-	end
+    begin
+    fChanged:= true;
+    if Gear^.Angle > 2048 then dec(Gear^.Angle) else
+        if Gear^.Angle < 2048 then inc(Gear^.Angle) else fChanged:= false
+    end
 else
-	begin
-	if ((Gear^.Message and gm_Left) <> 0) then
-		begin
-		fChanged:= true;
-		Gear^.Angle:= (Gear^.Angle + (4096 - cAngleSpeed)) mod 4096
-		end;
+    begin
+    if ((Gear^.Message and gm_Left) <> 0) then
+        begin
+        fChanged:= true;
+        Gear^.Angle:= (Gear^.Angle + (4096 - cAngleSpeed)) mod 4096
+        end;
 
-	if ((Gear^.Message and gm_Right) <> 0) then
-		begin
-		fChanged:= true;
-		Gear^.Angle:= (Gear^.Angle + cAngleSpeed) mod 4096
-		end
-	end;
+    if ((Gear^.Message and gm_Right) <> 0) then
+        begin
+        fChanged:= true;
+        Gear^.Angle:= (Gear^.Angle + cAngleSpeed) mod 4096
+        end
+    end;
 
 if fChanged then
-	begin
-	Gear^.dX.isNegative:= (Gear^.Angle > 2048);
-	if Gear^.dX.isNegative then
-		trueAngle:= 4096 - Gear^.Angle
-	else
-		trueAngle:= Gear^.Angle;
+    begin
+    Gear^.dX.isNegative:= (Gear^.Angle > 2048);
+    if Gear^.dX.isNegative then
+        trueAngle:= 4096 - Gear^.Angle
+    else
+        trueAngle:= Gear^.Angle;
 
-	Gear^.dX:= SignAs(AngleSin(trueAngle), Gear^.dX) * _0_25;
-	Gear^.dY:= AngleCos(trueAngle) * -_0_25;
-	end;
+    Gear^.dX:= SignAs(AngleSin(trueAngle), Gear^.dX) * _0_25;
+    Gear^.dY:= AngleCos(trueAngle) * -_0_25;
+    end;
 
 Gear^.X:= Gear^.X + Gear^.dX;
 Gear^.Y:= Gear^.Y + Gear^.dY;
 
 if (TrainingFlags and tfRCPlane) = 0 then
-	begin
-	if (GameTicks and $FF) = 0 then
-		if Gear^.Timer < 3500 then
-			AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtEvilTrace, 0, _0, _0, 0)
-		else
-			AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtSmokeTrace, 0, _0, _0, 0);
+    begin
+    if (GameTicks and $FF) = 0 then
+        if Gear^.Timer < 3500 then
+            AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtEvilTrace, 0, _0, _0, 0)
+        else
+            AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtSmokeTrace, 0, _0, _0, 0);
 
-	if ((HHGear^.Message and gm_Attack) <> 0) and (Gear^.Health <> 0) then
-		begin
-		HHGear^.Message := HHGear^.Message and not gm_Attack;
-		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 gm_Attack) <> 0) and (Gear^.Health <> 0) then
+        begin
+        HHGear^.Message := HHGear^.Message and not gm_Attack;
+        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 gm_LJump) <> 0)
-		and ((Gear^.State and gsttmpFlag) = 0) then
-		begin
-		Gear^.State:= Gear^.State or gsttmpFlag;
-		PauseMusic;
-		playSound(sndRideOfTheValkyries);
-		end;
+    if ((HHGear^.Message and gm_LJump) <> 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
+    // pickup bonuses
+    t:= CheckGearNear(Gear, gtCase, 36, 36);
+    if t <> nil then
+        PickUp(HHGear, t);
+    end
 else
-	begin
-	if (GameTicks and $FF) = 0 then
-		AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtSmokeTrace, 0, _0, _0, 0);
+    begin
+    if (GameTicks and $FF) = 0 then
+        AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtSmokeTrace, 0, _0, _0, 0);
 
-	// 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;
+    // 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)
-	end;
-		
+    if (TurnTimeLeft > 0) then 
+        dec(TurnTimeLeft)
+    end;
+        
 CheckCollision(Gear);
 
 if ((Gear^.State and gstCollision) <> 0) or (((TrainingFlags and tfRCPlane) <> 0) and (TurnTimeLeft = 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;
+    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
-		begin
-		doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 25, EXPLAutoSound);
-		for i:= 0 to 32 do
-			begin
-			dX:= AngleCos(i * 64) * _0_5 * (GetRandom + _1);
-			dY:= AngleSin(i * 64) * _0_5 * (GetRandom + _1);
-			AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtFlame, 0, dX, dY, 0);
-			AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtFlame, 0, dX, -dY, 0);
-			end;
-		DeleteGear(Gear)
-		end;
+    if ((Gear^.State and gstCollision) <> 0) or (((TrainingFlags and tfRCPlane) <> 0) and (TurnTimeLeft = 0)) then
+        begin
+        doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 25, EXPLAutoSound);
+        for i:= 0 to 32 do
+            begin
+            dX:= AngleCos(i * 64) * _0_5 * (GetRandom + _1);
+            dY:= AngleSin(i * 64) * _0_5 * (GetRandom + _1);
+            AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtFlame, 0, dX, dY, 0);
+            AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtFlame, 0, dX, -dY, 0);
+            end;
+        DeleteGear(Gear)
+        end;
 
-	AfterAttack;
-	CurAmmoGear:= nil;
-	TurnTimeLeft:= 14 * 125;
-	
-	if (TrainingFlags and tfRCPlane) <> 0 then
-		TurnTimeLeft:= 0; // HACK: RCPlane training allows unlimited plane starts in last 2 seconds
+    AfterAttack;
+    CurAmmoGear:= nil;
+    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
+    HHGear^.Message:= 0;
+    ParseCommand('/taunt '#1, true)
+    end
 end;
 
 procedure doStepRCPlane(Gear: PGear);
@@ -2599,24 +2599,24 @@
 
 if  (Gear^.Health = 0)
     or (HHGear^.Damage <> 0)
-	or CheckGearDrowning(HHGear)
+    or CheckGearDrowning(HHGear)
     or (TurnTimeLeft = 0)
     // allow brief ground touches - to be fair on this, might need another counter
     or (((GameTicks and $1FF) = 0) and (not HHGear^.dY.isNegative) and TestCollisionYwithGear(HHGear, 1))
-	or ((Gear^.Message and gm_Attack) <> 0) then
-	begin
-	with HHGear^ do
-		begin
-		Message:= 0;
+    or ((Gear^.Message and gm_Attack) <> 0) then
+    begin
+    with HHGear^ do
+        begin
+        Message:= 0;
         Active:= true;
-		State:= State or gstMoving
-		end;
-	DeleteGear(Gear);
-	isCursorVisible:= false;
+        State:= State or gstMoving
+        end;
+    DeleteGear(Gear);
+    isCursorVisible:= false;
 //    if Gear^.Tex <> nil then FreeTexture(Gear^.Tex);
 //    Gear^.Tex:= RenderStringTex(trmsg[sidFuel] + ': ' + inttostr(round(Gear^.Health / 20)) + '%', cWhiteColor, fntSmall)
     //AddCaption(trmsg[sidFuel]+': '+inttostr(round(Gear^.Health/20))+'%', cWhiteColor, capgrpAmmostate);
-	end
+    end
 end;
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -2630,13 +2630,13 @@
 OnUsedAmmo(PHedgehog(HHGear^.Hedgehog)^);
 ApplyAmmoChanges(PHedgehog(HHGear^.Hedgehog)^);
 with HHGear^ do
-	begin
-	State:= State and not gstAttacking;
-	Message:= Message and not (gm_Attack or gm_Up or gm_Precise or gm_Left or gm_Right);
+    begin
+    State:= State and not gstAttacking;
+    Message:= Message and not (gm_Attack or gm_Up or gm_Precise or gm_Left or gm_Right);
     if (dY < _0_1) and (dY > -_0_1) then
         begin
         Gear^.State:= Gear^.State or gsttmpFlag;
         dY:= dY - _0_2
         end
-	end
+    end
 end;
--- a/hedgewars/HHHandlers.inc	Sat Mar 06 10:54:24 2010 +0000
+++ b/hedgewars/HHHandlers.inc	Sat Mar 06 10:59:20 2010 +0000
@@ -23,42 +23,42 @@
 slot:= Gear^.MsgParam;
 
 with PHedgehog(Gear^.Hedgehog)^ do
-	begin
-	Gear^.Message:= Gear^.Message and not gm_Slot;
+    begin
+    Gear^.Message:= Gear^.Message and not gm_Slot;
 
-	if ((Gear^.State and (gstAttacking or gstAttacked)) <> 0)
-		or (MultiShootAttacks > 0)
-		or ((Gear^.State and gstHHDriven) = 0) then exit;
+    if ((Gear^.State and (gstAttacking or gstAttacked)) <> 0)
+        or (MultiShootAttacks > 0)
+        or ((Gear^.State and gstHHDriven) = 0) then exit;
 
-	Gear^.Message:= Gear^.Message and not (gm_LJump or gm_HJump);
+    Gear^.Message:= Gear^.Message and not (gm_LJump or gm_HJump);
 
-	if CurSlot = slot then
-		begin
-		i:= 0;
-		repeat
-		inc(CurAmmo);
-		if (CurAmmo > cMaxSlotAmmoIndex) then
-			begin
-			CurAmmo:= 0;
-			inc(i);
-			TryDo(i < 2, 'Engine bug: no ammo in current slot', true)
-			end;
-		until (Ammo^[slot, CurAmmo].Count > 0) and (Team^.Clan^.TurnNumber > Ammoz[Ammo^[slot, CurAmmo].AmmoType].SkipTurns)
-		end else
-		begin
-		i:= 0;
-		// check whether there is ammo in slot
-		while (i <= cMaxSlotAmmoIndex)
-		  and ((Ammo^[slot, i].Count = 0)
-		       or (Team^.Clan^.TurnNumber <= Ammoz[Ammo^[slot, i].AmmoType].SkipTurns)) do inc(i);
+    if CurSlot = slot then
+        begin
+        i:= 0;
+        repeat
+        inc(CurAmmo);
+        if (CurAmmo > cMaxSlotAmmoIndex) then
+            begin
+            CurAmmo:= 0;
+            inc(i);
+            TryDo(i < 2, 'Engine bug: no ammo in current slot', true)
+            end;
+        until (Ammo^[slot, CurAmmo].Count > 0) and (Team^.Clan^.TurnNumber > Ammoz[Ammo^[slot, CurAmmo].AmmoType].SkipTurns)
+        end else
+        begin
+        i:= 0;
+        // check whether there is ammo in slot
+        while (i <= cMaxSlotAmmoIndex)
+          and ((Ammo^[slot, i].Count = 0)
+               or (Team^.Clan^.TurnNumber <= Ammoz[Ammo^[slot, i].AmmoType].SkipTurns)) do inc(i);
 
-		if i <= cMaxSlotAmmoIndex then
-			begin
-			CurSlot:= slot;
-			CurAmmo:= i
-			end
-		end
-	end
+        if i <= cMaxSlotAmmoIndex then
+            begin
+            CurSlot:= slot;
+            CurAmmo:= i
+            end
+        end
+    end
 end;
 
 procedure HHSetWeapon(Gear: PGear);
@@ -76,11 +76,11 @@
 Gear^.Message:= Gear^.Message and not gm_Weapon;
 
 with PHedgehog(Gear^.Hedgehog)^ do
-	while (Ammo^[CurSlot, CurAmmo].AmmoType <> weap) and (t >= 0) do
-		begin
-		ChangeAmmo(Gear);
-		dec(t)
-		end;
+    while (Ammo^[CurSlot, CurAmmo].AmmoType <> weap) and (t >= 0) do
+        begin
+        ChangeAmmo(Gear);
+        dec(t)
+        end;
 
 ApplyAmmoChanges(PHedgehog(Gear^.Hedgehog)^)
 end;
@@ -89,12 +89,12 @@
 begin
 Gear^.Message:= Gear^.Message and not gm_Timer;
 with PHedgehog(Gear^.Hedgehog)^ do
-	if (Ammo^[CurSlot, CurAmmo].Propz and ammoprop_Timerable) <> 0 then
-		begin
-		Ammo^[CurSlot, CurAmmo].Timer:= 1000 * Gear^.MsgParam;
-		with CurrentTeam^ do
-			ApplyAmmoChanges(Hedgehogs[CurrHedgehog]);
-		end;
+    if (Ammo^[CurSlot, CurAmmo].Propz and ammoprop_Timerable) <> 0 then
+        begin
+        Ammo^[CurSlot, CurAmmo].Timer:= 1000 * Gear^.MsgParam;
+        with CurrentTeam^ do
+            ApplyAmmoChanges(Hedgehogs[CurrHedgehog]);
+        end;
 end;
 
 
@@ -165,9 +165,9 @@
                                  PlaySound(sndWhipCrack)
                                  end;
                   amBaseballBat: begin
-								 CurAmmoGear:= AddGear(hwRound(X) + hwSign(dX) * 10, hwRound(Y), gtShover, gsttmpFlag, xx * _0_5, yy * _0_5, 0);
-								 PlaySound(sndBaseballBat)
-								 end;
+                                 CurAmmoGear:= AddGear(hwRound(X) + hwSign(dX) * 10, hwRound(Y), gtShover, gsttmpFlag, xx * _0_5, yy * _0_5, 0);
+                                 PlaySound(sndBaseballBat)
+                                 end;
                     amParachute: CurAmmoGear:= AddGear(hwRound(X), hwRound(Y), gtParachute, 0, _0, _0, 0);
                     amAirAttack: AddGear(Ammo^[CurSlot, CurAmmo].Pos, 0, gtAirAttack, 0, _0, _0, 0);
                    amMineStrike: AddGear(Ammo^[CurSlot, CurAmmo].Pos, 0, gtAirAttack, 1, _0, _0, 0);
@@ -176,9 +176,9 @@
                      amTeleport: CurAmmoGear:= AddGear(0, 0, gtTeleport, 0, _0, _0, 0);
                        amSwitch: CurAmmoGear:= AddGear(hwRound(X), hwRound(Y), gtSwitcher, 0, _0, _0, 0);
                        amMortar: begin
-				playSound(sndMortar);
-				FollowGear:= AddGear(hwRound(X), hwRound(Y), gtMortar,  0, xx*cMaxPower/cPowerDivisor, yy*cMaxPower/cPowerDivisor, 0);
-				 end;
+                playSound(sndMortar);
+                FollowGear:= AddGear(hwRound(X), hwRound(Y), gtMortar,  0, xx*cMaxPower/cPowerDivisor, yy*cMaxPower/cPowerDivisor, 0);
+                 end;
                       amRCPlane: begin
                                  CurAmmoGear:= AddGear(hwRound(X), hwRound(Y), gtRCPlane,  0, xx * cMaxPower / cPowerDivisor / 4, yy * cMaxPower / cPowerDivisor / 4, 0);
                                  CurAmmoGear^.SoundChannel:= LoopSound(sndRCPlane, nil)
@@ -237,38 +237,38 @@
 var s: shortstring;
 begin
 with CurrentHedgehog^.Gear^,
-		CurrentHedgehog^ do
-	begin
-	State:= State and not gstAttacking;
-	if ((Ammo^[CurSlot, CurAmmo].Propz) and ammoprop_Utility) = 0 then
-		begin
-		Inc(MultiShootAttacks);
-		
-		if (Ammo^[CurSlot, CurAmmo].NumPerTurn >= MultiShootAttacks) then
-			begin
-			s:= inttostr(Ammo^[CurSlot, CurAmmo].NumPerTurn + 1 - MultiShootAttacks);
-			AddCaption(format(trmsg[sidRemaining], s), cWhiteColor, capgrpAmmostate);
-			end;
-		
-		if (Ammo^[CurSlot, CurAmmo].NumPerTurn >= MultiShootAttacks) or
-			((GameFlags and gfMultiWeapon) <> 0) then
-			begin
-			isInMultiShoot:= true
-			end
-		else
-			begin
-			TurnTimeLeft:= Ammoz[Ammo^[CurSlot, CurAmmo].AmmoType].TimeAfterTurn;
-			State:= State or gstAttacked;
-			OnUsedAmmo(CurrentHedgehog^);
-			end;
-		end
-	else
-		begin
-		OnUsedAmmo(CurrentHedgehog^);
-		ApplyAmmoChanges(CurrentHedgehog^);
-		end;
-	AttackBar:= 0;
-	end
+        CurrentHedgehog^ do
+    begin
+    State:= State and not gstAttacking;
+    if ((Ammo^[CurSlot, CurAmmo].Propz) and ammoprop_Utility) = 0 then
+        begin
+        Inc(MultiShootAttacks);
+        
+        if (Ammo^[CurSlot, CurAmmo].NumPerTurn >= MultiShootAttacks) then
+            begin
+            s:= inttostr(Ammo^[CurSlot, CurAmmo].NumPerTurn + 1 - MultiShootAttacks);
+            AddCaption(format(trmsg[sidRemaining], s), cWhiteColor, capgrpAmmostate);
+            end;
+        
+        if (Ammo^[CurSlot, CurAmmo].NumPerTurn >= MultiShootAttacks) or
+            ((GameFlags and gfMultiWeapon) <> 0) then
+            begin
+            isInMultiShoot:= true
+            end
+        else
+            begin
+            TurnTimeLeft:= Ammoz[Ammo^[CurSlot, CurAmmo].AmmoType].TimeAfterTurn;
+            State:= State or gstAttacked;
+            OnUsedAmmo(CurrentHedgehog^);
+            end;
+        end
+    else
+        begin
+        OnUsedAmmo(CurrentHedgehog^);
+        ApplyAmmoChanges(CurrentHedgehog^);
+        end;
+    AttackBar:= 0;
+    end
 end;
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -278,35 +278,35 @@
 begin
 if PHedgehog(Gear^.Hedgehog)^.Unplaced then exit;
 if Gear^.Timer > 1 then
-	begin
-	AllInactive:= false;
-	dec(Gear^.Timer);
-	if (Gear^.Timer mod frametime) = 0 then inc(Gear^.Pos)
-	end else
+    begin
+    AllInactive:= false;
+    dec(Gear^.Timer);
+    if (Gear^.Timer mod frametime) = 0 then inc(Gear^.Pos)
+    end else
 if Gear^.Timer = 1 then
-	begin
-	Gear^.State:= Gear^.State or gstNoDamage;
-	doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 30, EXPLAutoSound);
-	AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtGrave, 0, _0, _0, 0)^.Hedgehog:= Gear^.Hedgehog;
-	DeleteGear(Gear);
-	SetAllToActive
-	end else // Gear^.Timer = 0
-	begin
-	AllInactive:= false;
-	Gear^.Z:= cCurrHHZ;
-	RemoveGearFromList(Gear);
-	InsertGearToList(Gear);
-	PlaySound(sndByeBye, PHedgehog(Gear^.Hedgehog)^.Team^.voicepack);
-	Gear^.Pos:= 0;
-	Gear^.Timer:= timertime
-	end
+    begin
+    Gear^.State:= Gear^.State or gstNoDamage;
+    doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 30, EXPLAutoSound);
+    AddGear(hwRound(Gear^.X), hwRound(Gear^.Y), gtGrave, 0, _0, _0, 0)^.Hedgehog:= Gear^.Hedgehog;
+    DeleteGear(Gear);
+    SetAllToActive
+    end else // Gear^.Timer = 0
+    begin
+    AllInactive:= false;
+    Gear^.Z:= cCurrHHZ;
+    RemoveGearFromList(Gear);
+    InsertGearToList(Gear);
+    PlaySound(sndByeBye, PHedgehog(Gear^.Hedgehog)^.Team^.voicepack);
+    Gear^.Pos:= 0;
+    Gear^.Timer:= timertime
+    end
 end;
 
 ////////////////////////////////////////////////////////////////////////////////
 procedure PickUp(HH, Gear: PGear);
 var s: shortstring;
     a: TAmmoType;
-	i: Integer;
+    i: Integer;
 begin
 Gear^.Message:= gm_Destroy;
 PlaySound(sndShotgunReload);
@@ -334,12 +334,12 @@
                     RenderHealth(PHedgehog(HH^.Hedgehog)^);
                     RecountTeamHealth(PHedgehog(HH^.Hedgehog)^.Team);
 
-					i:= 0;
-					while i < Gear^.Health do
-						begin
-						AddVisualGear(hwRound(HH^.X), hwRound(HH^.Y), vgtHealth);
-						inc(i, 5);
-						end;
+                    i:= 0;
+                    while i < Gear^.Health do
+                        begin
+                        AddVisualGear(hwRound(HH^.X), hwRound(HH^.Y), vgtHealth);
+                        inc(i, 5);
+                        end;
                     end;
      end
 end;
@@ -365,14 +365,14 @@
           exit
           end;
 
-	if ((Gear^.Message and gm_Animate) <> 0) then
-		begin
-		Gear^.Message:= 0;
-		Gear^.State:= Gear^.State or gstAnimation;
-		Gear^.Tag:= Gear^.MsgParam;
-		Gear^.Timer:= 0;
-		Gear^.Pos:= 0
-		end;
+    if ((Gear^.Message and gm_Animate) <> 0) then
+        begin
+        Gear^.Message:= 0;
+        Gear^.State:= Gear^.State or gstAnimation;
+        Gear^.Tag:= Gear^.MsgParam;
+        Gear^.Timer:= 0;
+        Gear^.Pos:= 0
+        end;
 
    if ((Gear^.Message and gm_LJump ) <> 0) then
       begin
@@ -482,13 +482,13 @@
 var da: LongWord;
 begin
 with PHedgehog(Gear^.Hedgehog)^ do
-	if (Ammo^[CurSlot, CurAmmo].AmmoType = amRope)
-	and ((Gear^.State and (gstMoving or gstHHJumping)) = gstMoving) then da:= 2 else da:= 1;
+    if (Ammo^[CurSlot, CurAmmo].AmmoType = amRope)
+    and ((Gear^.State and (gstMoving or gstHHJumping)) = gstMoving) then da:= 2 else da:= 1;
 
 if (((Gear^.Message and gm_Precise) = 0) or ((GameTicks mod 5) = 1)) then
-	if ((Gear^.Message and gm_Up) <> 0) and (Gear^.Angle >= CurMinAngle + da) then dec(Gear^.Angle, da)
-	else
-	if ((Gear^.Message and gm_Down) <> 0) and (Gear^.Angle + da <= CurMaxAngle) then inc(Gear^.Angle, da)
+    if ((Gear^.Message and gm_Up) <> 0) and (Gear^.Angle >= CurMinAngle + da) then dec(Gear^.Angle, da)
+    else
+    if ((Gear^.Message and gm_Down) <> 0) and (Gear^.Angle + da <= CurMaxAngle) then inc(Gear^.Angle, da)
 end;
 
 procedure doStepHedgehog(Gear: PGear); forward;
@@ -583,22 +583,22 @@
 if (hwAbs(Gear^.dY) > _0) and (Gear^.FlightTime > 0) then
     begin
     inc(Gear^.FlightTime, 1);
-	if Gear^.FlightTime = 2000 then
-		begin
-		AddCaption(GetEventString(eidHomerun), cWhiteColor, capgrpMessage);
-		PlaySound(sndHomerun)
-		end;
-	end
+    if Gear^.FlightTime = 2000 then
+        begin
+        AddCaption(GetEventString(eidHomerun), cWhiteColor, capgrpMessage);
+        PlaySound(sndHomerun)
+        end;
+    end
 else
     begin
     Gear^.FlightTime:= 0;
-	end;
+    end;
 
 end;
 
 procedure doStepHedgehogDriven(Gear: PGear);
 var t: PGear;
-	wasJumping: boolean;
+    wasJumping: boolean;
 begin
 if not isInMultiShoot then
    AllInactive:= false
@@ -606,72 +606,72 @@
    Gear^.Message:= 0;
 
 if (TurnTimeLeft = 0) or (Gear^.Damage > 0) then
-	begin
-	TurnTimeLeft:= 0;
-	isCursorVisible:= false;
-	Gear^.State:= Gear^.State and not (gstHHDriven or gstAnimation or gstAttacking);
-	AttackBar:= 0;
-	if Gear^.Damage > 0 then
-		Gear^.State:= Gear^.State and not (gstHHJumping or gstHHHJump);
-	exit
-	end;
+    begin
+    TurnTimeLeft:= 0;
+    isCursorVisible:= false;
+    Gear^.State:= Gear^.State and not (gstHHDriven or gstAnimation or gstAttacking);
+    AttackBar:= 0;
+    if Gear^.Damage > 0 then
+        Gear^.State:= Gear^.State and not (gstHHJumping or gstHHHJump);
+    exit
+    end;
 
 if (Gear^.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, PHedgehog(Gear^.Hedgehog)^.Team^.voicepack);
-	inc(Gear^.Timer);
-	if Gear^.Timer = Wavez[TWave(Gear^.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
-		end;
-	exit
-	end;
+    begin
+    Gear^.Message:= 0;
+    if (Gear^.Pos = Wavez[TWave(Gear^.Tag)].VoiceDelay) and (Gear^.Timer = 0) then PlaySound(Wavez[TWave(Gear^.Tag)].Voice, PHedgehog(Gear^.Hedgehog)^.Team^.voicepack);
+    inc(Gear^.Timer);
+    if Gear^.Timer = Wavez[TWave(Gear^.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
+        end;
+    exit
+    end;
 
 if ((Gear^.State and gstMoving) <> 0)
     or (StepTicks = cHHStepTicks)
-	or (CurAmmoGear <> nil) then // we are moving
-	begin
-	with PHedgehog(Gear^.Hedgehog)^ do
-		if (CurAmmoGear = nil)
-		and (Gear^.dY > _0_39)
-		and (Ammo^[CurSlot, CurAmmo].AmmoType = amParachute) then Gear^.Message:= Gear^.Message or gm_Attack;
-	// check for case with ammo
-	t:= CheckGearNear(Gear, gtCase, 36, 36);
-	if t <> nil then
-		PickUp(Gear, t)
-	end;
+    or (CurAmmoGear <> nil) then // we are moving
+    begin
+    with PHedgehog(Gear^.Hedgehog)^ do
+        if (CurAmmoGear = nil)
+        and (Gear^.dY > _0_39)
+        and (Ammo^[CurSlot, CurAmmo].AmmoType = amParachute) then Gear^.Message:= Gear^.Message or gm_Attack;
+    // check for case with ammo
+    t:= CheckGearNear(Gear, gtCase, 36, 36);
+    if t <> nil then
+        PickUp(Gear, t)
+    end;
 
 if (CurAmmoGear = nil) then
-	if (((Gear^.Message and gm_Attack) <> 0)
-		or ((Gear^.State and gstAttacking) <> 0)) then
-		Attack(Gear) // should be before others to avoid desync with '/put' msg and changing weapon msgs
-	else
+    if (((Gear^.Message and gm_Attack) <> 0)
+        or ((Gear^.State and gstAttacking) <> 0)) then
+        Attack(Gear) // should be before others to avoid desync with '/put' msg and changing weapon msgs
+    else
 else with PHedgehog(Gear^.Hedgehog)^ do
-	 if ((CurAmmoGear^.Ammo^.Propz and ammoprop_AltAttack) <> 0)
-		and ((Gear^.Message and gm_LJump) <> 0)
-		and (((Ammo^[CurSlot, CurAmmo].Propz) and ammoprop_AltUse) <> 0) then
-		begin
-		Gear^.Message:= Gear^.Message and not gm_LJump;
-		Attack(Gear)
-		end;
+     if ((CurAmmoGear^.Ammo^.Propz and ammoprop_AltAttack) <> 0)
+        and ((Gear^.Message and gm_LJump) <> 0)
+        and (((Ammo^[CurSlot, CurAmmo].Propz) and ammoprop_AltUse) <> 0) then
+        begin
+        Gear^.Message:= Gear^.Message and not gm_LJump;
+        Attack(Gear)
+        end;
 
 if (CurAmmoGear = nil)
-	or ((CurAmmoGear^.Ammo^.Propz and ammoprop_AltAttack) <> 0) then
-	begin
-	if ((Gear^.Message and gm_Slot) <> 0) then
-		begin
-		ChangeAmmo(Gear);
-		ApplyAmmoChanges(PHedgehog(Gear^.Hedgehog)^)
-		end;
+    or ((CurAmmoGear^.Ammo^.Propz and ammoprop_AltAttack) <> 0) then
+    begin
+    if ((Gear^.Message and gm_Slot) <> 0) then
+        begin
+        ChangeAmmo(Gear);
+        ApplyAmmoChanges(PHedgehog(Gear^.Hedgehog)^)
+        end;
 
-	if ((Gear^.Message and gm_Weapon) <> 0) then HHSetWeapon(Gear);
+    if ((Gear^.Message and gm_Weapon) <> 0) then HHSetWeapon(Gear);
 
-	if ((Gear^.Message and gm_Timer) <> 0) then HHSetTimer(Gear);
-	end;
+    if ((Gear^.Message and gm_Timer) <> 0) then HHSetTimer(Gear);
+    end;
 
 if CurAmmoGear <> nil then
    begin
@@ -683,43 +683,43 @@
    HedgehogChAngle(Gear);
 
 if (Gear^.State and gstMoving) <> 0 then
-	begin
-	wasJumping:= ((Gear^.State and gstHHJumping) <> 0);
+    begin
+    wasJumping:= ((Gear^.State and gstHHJumping) <> 0);
 
-	if ((Gear^.Message and gm_HJump) <> 0) and
-		wasJumping and
-		((Gear^.State and gstHHHJump) = 0) then
-		if (not (hwAbs(Gear^.dX) > cLittle)) and (Gear^.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);
-			PlaySound(sndJump2, PHedgehog(Gear^.Hedgehog)^.Team^.voicepack)
-			end;
+    if ((Gear^.Message and gm_HJump) <> 0) and
+        wasJumping and
+        ((Gear^.State and gstHHHJump) = 0) then
+        if (not (hwAbs(Gear^.dX) > cLittle)) and (Gear^.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);
+            PlaySound(sndJump2, PHedgehog(Gear^.Hedgehog)^.Team^.voicepack)
+            end;
 
-	Gear^.Message:= Gear^.Message and not (gm_LJump or gm_HJump);
+    Gear^.Message:= Gear^.Message and not (gm_LJump or gm_HJump);
 
-	if (not cArtillery) and wasJumping and
-		TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then SetLittle(Gear^.dX);
+    if (not cArtillery) and wasJumping and
+        TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then SetLittle(Gear^.dX);
 
-	doStepHedgehogMoving(Gear);
+    doStepHedgehogMoving(Gear);
 
-	if ((Gear^.State and (gstMoving or gstDrowning)) = 0) then
-		begin
-		AddGearCI(Gear);
-		if wasJumping then
-			StepTicks:= 410
-		else
-			StepTicks:= 95
-		end;
-	exit
-	end;
+    if ((Gear^.State and (gstMoving or gstDrowning)) = 0) then
+        begin
+        AddGearCI(Gear);
+        if wasJumping then
+            StepTicks:= 410
+        else
+            StepTicks:= 95
+        end;
+    exit
+    end;
 
-	if not isInMultiShoot then
-		begin
-		if StepTicks > 0 then dec(StepTicks);
-		if (StepTicks = 0) then HedgehogStep(Gear)
-		end
+    if not isInMultiShoot then
+        begin
+        if StepTicks > 0 then dec(StepTicks);
+        if (StepTicks = 0) then HedgehogStep(Gear)
+        end
 end;
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -731,44 +731,44 @@
 doStepHedgehogMoving(Gear);
 
 if (Gear^.State and (gstMoving or gstDrowning)) <> 0 then
-	begin
-	if Gear^.Damage > 0 then CalcRotationDirAngle(Gear);
-	AllInactive:= false;
-	exit
-	end;
+    begin
+    if Gear^.Damage > 0 then CalcRotationDirAngle(Gear);
+    AllInactive:= false;
+    exit
+    end;
 
 if (Gear^.Health = 0) then
-	begin
-	if PrvInactive then
-		begin
-		Gear^.Timer:= 0;
-		Gear^.State:= Gear^.State or gstHHDeath;
-		Gear^.doStep:= @doStepHedgehogDead;
-		FollowGear:= Gear;
-		PrvInactive:= false;
-		AllInactive:= false;
+    begin
+    if PrvInactive then
+        begin
+        Gear^.Timer:= 0;
+        Gear^.State:= Gear^.State or gstHHDeath;
+        Gear^.doStep:= @doStepHedgehogDead;
+        FollowGear:= Gear;
+        PrvInactive:= false;
+        AllInactive:= false;
 
-		// Death message
-		AddCaption(Format(GetEventString(eidDied), PHedgehog(Gear^.Hedgehog)^.Name), cWhiteColor, capgrpMessage);
-		end;
-	exit
-	end;
+        // Death message
+        AddCaption(Format(GetEventString(eidDied), PHedgehog(Gear^.Hedgehog)^.Name), cWhiteColor, capgrpMessage);
+        end;
+    exit
+    end;
 
 if ((Gear^.State and gstWait) = 0) and
-	(prevState <> Gear^.State) then
-	begin
-	Gear^.State:= gstWait;
-	Gear^.Timer:= 150
-	end else
-	begin
-	if Gear^.Timer = 0 then
-		begin
-		Gear^.State:= 0;
-		Gear^.Active:= false;
-		AddGearCI(Gear);
-		exit
-		end else dec(Gear^.Timer)
-	end;
+    (prevState <> Gear^.State) then
+    begin
+    Gear^.State:= gstWait;
+    Gear^.Timer:= 150
+    end else
+    begin
+    if Gear^.Timer = 0 then
+        begin
+        Gear^.State:= 0;
+        Gear^.Active:= false;
+        AddGearCI(Gear);
+        exit
+        end else dec(Gear^.Timer)
+    end;
 
 AllInactive:= false
 end;
@@ -777,17 +777,17 @@
 procedure doStepHedgehog(Gear: PGear);
 begin
 if (Gear^.Message and gm_Destroy) <> 0 then
-	begin
-	DeleteGear(Gear);
-	exit
-	end;
+    begin
+    DeleteGear(Gear);
+    exit
+    end;
 
 if (Gear^.State and gstHHDriven) = 0 then
-	doStepHedgehogFree(Gear)
+    doStepHedgehogFree(Gear)
 else
-	begin
-	with PHedgehog(Gear^.Hedgehog)^ do
-		if Team^.hasGone then TeamGoneEffect(Team^);
-	doStepHedgehogDriven(Gear)
-	end;
+    begin
+    with PHedgehog(Gear^.Hedgehog)^ do
+        if Team^.hasGone then TeamGoneEffect(Team^);
+    doStepHedgehogDriven(Gear)
+    end;
 end;
--- a/hedgewars/LuaPas.pas	Sat Mar 06 10:54:24 2010 +0000
+++ b/hedgewars/LuaPas.pas	Sat Mar 06 10:59:20 2010 +0000
@@ -90,7 +90,7 @@
 */
 #include <io.h>
 #include <stdio.h>
-#define lua_stdin_is_tty()	_isatty(_fileno(stdin))
+#define lua_stdin_is_tty()  _isatty(_fileno(stdin))
 *)
 const
   lua_stdin_is_tty = TRUE;
@@ -165,7 +165,7 @@
   LUA_TSTRING        = 4;
   LUA_TTABLE         = 5;
   LUA_TFUNCTION      = 6;
-  LUA_TUSERDATA	     = 7;
+  LUA_TUSERDATA      = 7;
   LUA_TTHREAD        = 8;
 
   (* minimum Lua stack available to a C function *)
@@ -360,7 +360,7 @@
   LUA_GCRESTART    = 1;
   LUA_GCCOLLECT    = 2;
   LUA_GCCOUNT      = 3;
-  LUA_GCCOUNTB	   = 4;
+  LUA_GCCOUNTB     = 4;
   LUA_GCSTEP       = 5;
   LUA_GCSETPAUSE   = 6;
   LUA_GCSETSTEPMUL = 7;
--- a/hedgewars/PascalExports.pas	Sat Mar 06 10:54:24 2010 +0000
+++ b/hedgewars/PascalExports.pas	Sat Mar 06 10:59:20 2010 +0000
@@ -51,88 +51,88 @@
 {$IFDEF HWLIBRARY}
 procedure HW_versionInfo(netProto: PShortInt; versionStr: PString); cdecl; export;
 begin
-	if netProto <> nil then netProto^:= cNetProtoVersion;
-	if versionStr <> nil then versionStr^:= shortstring(cVersionString);
+    if netProto <> nil then netProto^:= cNetProtoVersion;
+    if versionStr <> nil then versionStr^:= shortstring(cVersionString);
 end;
 
 procedure HW_click; cdecl; export;
 begin
-	leftClick:= true;
+    leftClick:= true;
 end;
 
 procedure HW_zoomIn; cdecl; export;
 begin
-	wheelUp:= true;
+    wheelUp:= true;
 end;
 
 procedure HW_zoomOut; cdecl; export;
 begin
-	wheelDown:= true;
+    wheelDown:= true;
 end;
 
 procedure HW_zoomReset; cdecl; export;
 begin
-	middleClick:= true;
+    middleClick:= true;
 end;
 
 procedure HW_ammoMenu; cdecl; export;
 begin
-	rightClick:= true;
+    rightClick:= true;
 end;
 
 procedure HW_allKeysUp; cdecl; export;
 begin
-	// set all keys to released
-	init_uKeys();
+    // set all keys to released
+    init_uKeys();
 end;
 
 procedure HW_walkLeft; cdecl; export;
 begin
-	leftKey:= true;
+    leftKey:= true;
 end;
 
 procedure HW_walkRight; cdecl; export;
 begin
-	rightKey:= true;
+    rightKey:= true;
 end;
 
 procedure HW_aimUp; cdecl; export;
 begin
-	upKey:= true;
+    upKey:= true;
 end;
 
 procedure HW_aimDown; cdecl; export;
 begin
-	downKey:= true;
+    downKey:= true;
 end;
 
 procedure HW_shoot; cdecl; export;
 begin
-	spaceKey:= true;
+    spaceKey:= true;
 end;
 
 procedure HW_chat; cdecl; export;
 begin
-	chatAction:= true;
+    chatAction:= true;
 end;
 
 procedure HW_tab; cdecl; export;
 begin
-	switchAction:= true;
+    switchAction:= true;
 end;
 
 procedure HW_pause; cdecl; export;
 begin
-	pauseAction:= true;
+    pauseAction:= true;
 end;
 
 procedure HW_whereIsHog; cdecl; export;
 //var Xcoord, Ycoord: LongInt;
 begin
-	//Xcoord:= Gear^.dX + WorldDx;
-	WriteLnToConsole('HW - hog is at x: ' + ' y:');
+    //Xcoord:= Gear^.dX + WorldDx;
+    WriteLnToConsole('HW - hog is at x: ' + ' y:');
 
-	exit
+    exit
 end;
 {$ENDIF}
 
--- a/hedgewars/SDLh.pas	Sat Mar 06 10:54:24 2010 +0000
+++ b/hedgewars/SDLh.pas	Sat Mar 06 10:59:20 2010 +0000
@@ -57,24 +57,24 @@
 (*  SDL  *)
 const
 {$IFDEF WIN32}
-	SDLLibName = 'SDL.dll';
-	SDL_TTFLibName = 'SDL_ttf.dll';
-	SDL_MixerLibName = 'SDL_mixer.dll';
-	SDL_ImageLibName = 'SDL_image.dll';
-	SDL_NetLibName = 'SDL_net.dll';
+    SDLLibName = 'SDL.dll';
+    SDL_TTFLibName = 'SDL_ttf.dll';
+    SDL_MixerLibName = 'SDL_mixer.dll';
+    SDL_ImageLibName = 'SDL_image.dll';
+    SDL_NetLibName = 'SDL_net.dll';
 {$ELSE}
   {$IFDEF DARWIN}
-	SDLLibName = 'SDL';
-	SDL_TTFLibName = 'SDL_ttf';
-	SDL_MixerLibName = 'SDL_mixer';
-	SDL_ImageLibName = 'SDL_image';
-	SDL_NetLibName = 'SDL_net';
+    SDLLibName = 'SDL';
+    SDL_TTFLibName = 'SDL_ttf';
+    SDL_MixerLibName = 'SDL_mixer';
+    SDL_ImageLibName = 'SDL_image';
+    SDL_NetLibName = 'SDL_net';
   {$ELSE}
-	SDLLibName = 'libSDL.so';
-	SDL_TTFLibName = 'libSDL_ttf.so';
-	SDL_MixerLibName = 'libSDL_mixer.so';
-	SDL_ImageLibName = 'libSDL_image.so';
-	SDL_NetLibName = 'libSDL_net.so';
+    SDLLibName = 'libSDL.so';
+    SDL_TTFLibName = 'libSDL_ttf.so';
+    SDL_MixerLibName = 'libSDL_mixer.so';
+    SDL_ImageLibName = 'libSDL_image.so';
+    SDL_NetLibName = 'libSDL_net.so';
   {$ENDIF}
 {$ENDIF}
 
@@ -82,97 +82,97 @@
 /////////////////////  CONSTANT DEFINITIONS /////////////////////
 /////////////////////////////////////////////////////////////////
 
-	SDL_SWSURFACE     = $00000000;
-	SDL_HWSURFACE     = $00000001;
-	SDL_SRCALPHA      = $00010000;
-	
-	SDL_INIT_TIMER    = $00000001;
-	SDL_INIT_AUDIO    = $00000010;
-	SDL_INIT_VIDEO    = $00000020;
-	SDL_INIT_JOYSTICK = $00000200;
+    SDL_SWSURFACE     = $00000000;
+    SDL_HWSURFACE     = $00000001;
+    SDL_SRCALPHA      = $00010000;
+    
+    SDL_INIT_TIMER    = $00000001;
+    SDL_INIT_AUDIO    = $00000010;
+    SDL_INIT_VIDEO    = $00000020;
+    SDL_INIT_JOYSTICK = $00000200;
 {$IFDEF SDL13}
-	SDL_INIT_HAPTIC   = $00001000;
+    SDL_INIT_HAPTIC   = $00001000;
 {$ELSE}
-	SDL_INIT_CDROM	  = $00000100;
+    SDL_INIT_CDROM    = $00000100;
 {$ENDIF}
-	SDL_INIT_NOPARACHUTE = $00100000;
-	SDL_INIT_EVENTTHREAD = $01000000;
-	SDL_INIT_EVERYTHING  = $0000FFFF;
+    SDL_INIT_NOPARACHUTE = $00100000;
+    SDL_INIT_EVENTTHREAD = $01000000;
+    SDL_INIT_EVERYTHING  = $0000FFFF;
 
-	SDL_APPINPUTFOCUS    = 2;
-	SDL_BUTTON_WHEELUP   = 4;
-	SDL_BUTTON_WHEELDOWN = 5;
-		
+    SDL_APPINPUTFOCUS    = 2;
+    SDL_BUTTON_WHEELUP   = 4;
+    SDL_BUTTON_WHEELDOWN = 5;
+        
 {*begin SDL_Event binding*}
-	SDL_NOEVENT = 0;
-	SDL_KEYDOWN = 2;
-	SDL_KEYUP = 3;
+    SDL_NOEVENT = 0;
+    SDL_KEYDOWN = 2;
+    SDL_KEYUP = 3;
 {$IFDEF SDL13}
         SDL_WINDOWEVENT = 1;
         SDL_TEXTINPUT = 4;
         SDL_TEXTEDITING = 5;
-	SDL_MOUSEMOTION  = 6;
+    SDL_MOUSEMOTION  = 6;
         SDL_MOUSEBUTTONDOWN = 7;
-	SDL_MOUSEBUTTONUP   = 8;
+    SDL_MOUSEBUTTONUP   = 8;
         SDL_MOUSEWHEEL = 9;
-	SDL_JOYAXISMOTION = 10;
-	SDL_JOYBALLMOTION = 11;
-	SDL_JOYHATMOTION = 12;
-	SDL_JOYBUTTONDOWN = 13;
-	SDL_JOYBUTTONUP = 14;
-	SDL_QUITEV = 15;
+    SDL_JOYAXISMOTION = 10;
+    SDL_JOYBALLMOTION = 11;
+    SDL_JOYHATMOTION = 12;
+    SDL_JOYBUTTONDOWN = 13;
+    SDL_JOYBUTTONUP = 14;
+    SDL_QUITEV = 15;
 {$ELSE}
         SDL_ACTIVEEVENT = 1;
-	SDL_MOUSEMOTION  = 4;
-       	SDL_MOUSEBUTTONDOWN = 5;
-	SDL_MOUSEBUTTONUP   = 6;
-	SDL_JOYAXISMOTION = 7;
-	SDL_JOYBALLMOTION = 8;
-	SDL_JOYHATMOTION = 9;
-	SDL_JOYBUTTONDOWN = 10;
-	SDL_JOYBUTTONUP = 11;
-	SDL_QUITEV = 12;
-	SDL_VIDEORESIZE = 16; // TODO: outdated? no longer in SDL 1.3?
+    SDL_MOUSEMOTION  = 4;
+        SDL_MOUSEBUTTONDOWN = 5;
+    SDL_MOUSEBUTTONUP   = 6;
+    SDL_JOYAXISMOTION = 7;
+    SDL_JOYBALLMOTION = 8;
+    SDL_JOYHATMOTION = 9;
+    SDL_JOYBUTTONDOWN = 10;
+    SDL_JOYBUTTONUP = 11;
+    SDL_QUITEV = 12;
+    SDL_VIDEORESIZE = 16; // TODO: outdated? no longer in SDL 1.3?
 {$ENDIF}
 {*end SDL_Event binding*}
-		
+        
 {$IFDEF SDL13}
-	SDL_ASYNCBLIT   = $08000000;
-	SDL_ANYFORMAT   = $10000000;
-	SDL_HWPALETTE   = $00200000;
-	SDL_DOUBLEBUF   = $00400000;
-	SDL_FULLSCREEN  = $00800000;
-	SDL_HWACCEL     = $08000000;
-	SDL_SRCCOLORKEY = $00020000;
-	SDL_RLEACCEL    = $08000000;
-	SDL_NOFRAME     = $02000000;
-	SDL_OPENGL      = $04000000;
-	SDL_RESIZABLE   = $01000000;
+    SDL_ASYNCBLIT   = $08000000;
+    SDL_ANYFORMAT   = $10000000;
+    SDL_HWPALETTE   = $00200000;
+    SDL_DOUBLEBUF   = $00400000;
+    SDL_FULLSCREEN  = $00800000;
+    SDL_HWACCEL     = $08000000;
+    SDL_SRCCOLORKEY = $00020000;
+    SDL_RLEACCEL    = $08000000;
+    SDL_NOFRAME     = $02000000;
+    SDL_OPENGL      = $04000000;
+    SDL_RESIZABLE   = $01000000;
 {$ELSE}
-	SDL_ASYNCBLIT   = $00000004;
-	SDL_ANYFORMAT   = $00100000;
-	SDL_HWPALETTE   = $20000000;
-	SDL_DOUBLEBUF   = $40000000;
-	SDL_FULLSCREEN  = $80000000;
-	SDL_HWACCEL     = $00000100;
-	SDL_SRCCOLORKEY = $00001000;
-	SDL_RLEACCEL    = $00004000;
-	SDL_NOFRAME     = $00000020;
-	SDL_OPENGL      = $00000002;
-	SDL_RESIZABLE   = $00000010;
+    SDL_ASYNCBLIT   = $00000004;
+    SDL_ANYFORMAT   = $00100000;
+    SDL_HWPALETTE   = $20000000;
+    SDL_DOUBLEBUF   = $40000000;
+    SDL_FULLSCREEN  = $80000000;
+    SDL_HWACCEL     = $00000100;
+    SDL_SRCCOLORKEY = $00001000;
+    SDL_RLEACCEL    = $00004000;
+    SDL_NOFRAME     = $00000020;
+    SDL_OPENGL      = $00000002;
+    SDL_RESIZABLE   = $00000010;
 {$ENDIF}
 
 
 {$IFDEF ENDIAN_LITTLE}
-	RMask = $000000FF;
-	GMask = $0000FF00;
-	BMask = $00FF0000;
-	AMask = $FF000000;
+    RMask = $000000FF;
+    GMask = $0000FF00;
+    BMask = $00FF0000;
+    AMask = $FF000000;
 {$ELSE}
-	RMask = $FF000000;
-	GMask = $00FF0000;
-	BMask = $0000FF00;
-	AMask = $000000FF;
+    RMask = $FF000000;
+    GMask = $00FF0000;
+    BMask = $0000FF00;
+    AMask = $000000FF;
 {$ENDIF}
 
 {$IFDEF SDL13}
@@ -190,391 +190,391 @@
     SDL_WINDOW_FOREIGN = $00000800;            //*< window not created by SDL */
 {$ENDIF}
 
-	{* SDL_mixer *}
-	MIX_MAX_VOLUME = 128;
-	MIX_INIT_FLAC = $00000001;
-	MIX_INIT_MOD  = $00000002;
-	MIX_INIT_MP3  = $00000004;
-	MIX_INIT_OGG  = $00000008;
-	
-	{* SDL_TTF *}
-	TTF_STYLE_NORMAL = 0;
-	TTF_STYLE_BOLD   = 1;
-	TTF_STYLE_ITALIC = 2;
+    {* SDL_mixer *}
+    MIX_MAX_VOLUME = 128;
+    MIX_INIT_FLAC = $00000001;
+    MIX_INIT_MOD  = $00000002;
+    MIX_INIT_MP3  = $00000004;
+    MIX_INIT_OGG  = $00000008;
+    
+    {* SDL_TTF *}
+    TTF_STYLE_NORMAL = 0;
+    TTF_STYLE_BOLD   = 1;
+    TTF_STYLE_ITALIC = 2;
 
-	{* SDL Joystick *}
-	SDL_HAT_CENTERED  = $00;
-	SDL_HAT_UP        = $01;
-	SDL_HAT_RIGHT     = $02;
-	SDL_HAT_DOWN      = $04;
-	SDL_HAT_LEFT      = $08;
-	SDL_HAT_RIGHTUP   = SDL_HAT_RIGHT or SDL_HAT_UP;
-	SDL_HAT_RIGHTDOWN = SDL_HAT_RIGHT or SDL_HAT_DOWN;
-	SDL_HAT_LEFTUP    = SDL_HAT_LEFT or SDL_HAT_UP;
-	SDL_HAT_LEFTDOWN  = SDL_HAT_LEFT or SDL_HAT_DOWN;
+    {* SDL Joystick *}
+    SDL_HAT_CENTERED  = $00;
+    SDL_HAT_UP        = $01;
+    SDL_HAT_RIGHT     = $02;
+    SDL_HAT_DOWN      = $04;
+    SDL_HAT_LEFT      = $08;
+    SDL_HAT_RIGHTUP   = SDL_HAT_RIGHT or SDL_HAT_UP;
+    SDL_HAT_RIGHTDOWN = SDL_HAT_RIGHT or SDL_HAT_DOWN;
+    SDL_HAT_LEFTUP    = SDL_HAT_LEFT or SDL_HAT_UP;
+    SDL_HAT_LEFTDOWN  = SDL_HAT_LEFT or SDL_HAT_DOWN;
 
-	{* SDL_image *}
-	IMG_INIT_JPG = $00000001;
-	IMG_INIT_PNG = $00000002;
-	IMG_INIT_TIF = $00000004;
+    {* SDL_image *}
+    IMG_INIT_JPG = $00000001;
+    IMG_INIT_PNG = $00000002;
+    IMG_INIT_TIF = $00000004;
 
 /////////////////////////////////////////////////////////////////
 ///////////////////////  TYPE DEFINITIONS ///////////////////////
 /////////////////////////////////////////////////////////////////
 
 type 
-	PSDL_Rect = ^TSDL_Rect;
-	TSDL_Rect = record
+    PSDL_Rect = ^TSDL_Rect;
+    TSDL_Rect = record
 {$IFDEF SDL13}
-		x, y, w, h: LongInt;
+        x, y, w, h: LongInt;
 {$ELSE}
-		x, y: SmallInt;
-		w, h: Word;
+        x, y: SmallInt;
+        w, h: Word;
 {$ENDIF}
-		end;
+        end;
 
-	TPoint = record
-		X: LongInt;
-		Y: LongInt;
-		end;
+    TPoint = record
+        X: LongInt;
+        Y: LongInt;
+        end;
 
-	PSDL_PixelFormat = ^TSDL_PixelFormat;
-	TSDL_PixelFormat = record
-		palette: Pointer;
-		BitsPerPixel : Byte;
-		BytesPerPixel: Byte;
-		Rloss : Byte;
-		Gloss : Byte;
-		Bloss : Byte;
-		Aloss : Byte;
-		Rshift: Byte;
-		Gshift: Byte;
-		Bshift: Byte;
-		Ashift: Byte;
-		RMask : Longword;
-		GMask : Longword;
-		BMask : Longword;
-		AMask : Longword;
-		colorkey: Longword;
-		alpha : Byte;
-		end;
+    PSDL_PixelFormat = ^TSDL_PixelFormat;
+    TSDL_PixelFormat = record
+        palette: Pointer;
+        BitsPerPixel : Byte;
+        BytesPerPixel: Byte;
+        Rloss : Byte;
+        Gloss : Byte;
+        Bloss : Byte;
+        Aloss : Byte;
+        Rshift: Byte;
+        Gshift: Byte;
+        Bshift: Byte;
+        Ashift: Byte;
+        RMask : Longword;
+        GMask : Longword;
+        BMask : Longword;
+        AMask : Longword;
+        colorkey: Longword;
+        alpha : Byte;
+        end;
 
 
-	PSDL_Surface = ^TSDL_Surface;
-	TSDL_Surface = record
-		flags : Longword;
-		format: PSDL_PixelFormat;
-		w, h  : LongInt;
-		pitch : Word;
-		pixels: Pointer;
-		offset: LongInt;
-		end;
+    PSDL_Surface = ^TSDL_Surface;
+    TSDL_Surface = record
+        flags : Longword;
+        format: PSDL_PixelFormat;
+        w, h  : LongInt;
+        pitch : Word;
+        pixels: Pointer;
+        offset: LongInt;
+        end;
 
 
-	PSDL_Color = ^TSDL_Color;
-	TSDL_Color = record
-		case byte of
-			0: (	r: Byte;
-				g: Byte;
-				b: Byte;
-				unused: Byte;
-			   );
-			1: (	value: Longword);
-		end;
+    PSDL_Color = ^TSDL_Color;
+    TSDL_Color = record
+        case byte of
+            0: (    r: Byte;
+                g: Byte;
+                b: Byte;
+                unused: Byte;
+               );
+            1: (    value: Longword);
+        end;
 
 
-	PSDL_RWops = ^TSDL_RWops;
-	TSeek  = function( context: PSDL_RWops; offset: LongInt; whence: LongInt ): LongInt; cdecl;
-	TRead  = function( context: PSDL_RWops; Ptr: Pointer; size: LongInt; maxnum : LongInt ): LongInt;  cdecl;
-	TWrite = function( context: PSDL_RWops; Ptr: Pointer; size: LongInt; num: LongInt ): LongInt; cdecl;
-	TClose = function( context: PSDL_RWops ): LongInt; cdecl;
+    PSDL_RWops = ^TSDL_RWops;
+    TSeek  = function( context: PSDL_RWops; offset: LongInt; whence: LongInt ): LongInt; cdecl;
+    TRead  = function( context: PSDL_RWops; Ptr: Pointer; size: LongInt; maxnum : LongInt ): LongInt;  cdecl;
+    TWrite = function( context: PSDL_RWops; Ptr: Pointer; size: LongInt; num: LongInt ): LongInt; cdecl;
+    TClose = function( context: PSDL_RWops ): LongInt; cdecl;
 
-	TStdio = record
-		autoclose: LongInt;
-		fp: pointer;
-		end;
+    TStdio = record
+        autoclose: LongInt;
+        fp: pointer;
+        end;
 
-	TMem = record
-		base: PByte;
-		here: PByte;
-		stop: PByte;
-		end;
+    TMem = record
+        base: PByte;
+        here: PByte;
+        stop: PByte;
+        end;
 
-	TUnknown = record
-		data1: Pointer;
-		end;
+    TUnknown = record
+        data1: Pointer;
+        end;
 
-	TSDL_RWops = record
-		seek: TSeek;
-		read: TRead;
-		write: TWrite;
-		close: TClose;
-		type_: Longword;
-		case Byte of
-			0: (stdio: TStdio);
-			1: (mem: TMem);
-			2: (unknown: TUnknown);
-			end;
+    TSDL_RWops = record
+        seek: TSeek;
+        read: TRead;
+        write: TWrite;
+        close: TClose;
+        type_: Longword;
+        case Byte of
+            0: (stdio: TStdio);
+            1: (mem: TMem);
+            2: (unknown: TUnknown);
+            end;
 
-	TSDL_KeySym = record
-		scancode: Byte;
-		sym: Longword;
-		modifier: Longword;
-		unicode: Word;
-		end;
+    TSDL_KeySym = record
+        scancode: Byte;
+        sym: Longword;
+        modifier: Longword;
+        unicode: Word;
+        end;
 
 
 {* SDL_Event type definition *}
 
 {$IFDEF SDL13}
-	PSDL_Window = pointer;	
-	PSDL_Texture = pointer;
-	
-	TSDL_WindowEvent = record
-		type_: byte;
-		gain: byte;
-		state: byte;
-		windowID: LongInt;
-		data1, data2: LongInt;
-		end;
+    PSDL_Window = pointer;  
+    PSDL_Texture = pointer;
+    
+    TSDL_WindowEvent = record
+        type_: byte;
+        gain: byte;
+        state: byte;
+        windowID: LongInt;
+        data1, data2: LongInt;
+        end;
 
 // implement SDL_TextEditingEvent + SDL_TextInputEvent for sdl13
 {$ELSE}
-	//these two are present in sdl1.3 but only for backward compatibility
-	TSDL_ActiveEvent = record
-		type_: byte;
-		gain: byte;
-		state: byte;
-		end;
+    //these two are present in sdl1.3 but only for backward compatibility
+    TSDL_ActiveEvent = record
+        type_: byte;
+        gain: byte;
+        state: byte;
+        end;
 
-	TSDL_ResizeEvent = record
-		type_: Byte;
-		w, h: LongInt;
-		end;
+    TSDL_ResizeEvent = record
+        type_: Byte;
+        w, h: LongInt;
+        end;
 {$ENDIF}
 
-	TSDL_MouseMotionEvent = record
-		type_: byte;
-		which: byte;
-		state: byte;
+    TSDL_MouseMotionEvent = record
+        type_: byte;
+        which: byte;
+        state: byte;
 {$IFDEF SDL13}
-		windowID: LongInt;
-		x, y, xrel, yrel : LongInt;
-		pressure, pressure_max, pressure_min,
-		rotation, tilt, cursor: LongInt; 
+        windowID: LongInt;
+        x, y, xrel, yrel : LongInt;
+        pressure, pressure_max, pressure_min,
+        rotation, tilt, cursor: LongInt; 
 {$ELSE}
-		x, y, xrel, yrel : word;
+        x, y, xrel, yrel : word;
 {$ENDIF}
-		end;
+        end;
 
-	TSDL_KeyboardEvent = record
-		type_: Byte;
+    TSDL_KeyboardEvent = record
+        type_: Byte;
 {$IFDEF SDL13}
-		windowID: LongInt;
+        windowID: LongInt;
 {$ENDIF}
-		which: Byte;
-		state: Byte;
-		keysym: TSDL_KeySym;
-		end;
+        which: Byte;
+        state: Byte;
+        keysym: TSDL_KeySym;
+        end;
 
-	TSDL_MouseButtonEvent = record
-		_type,
-		which,
-		button,
-		state: byte;
+    TSDL_MouseButtonEvent = record
+        _type,
+        which,
+        button,
+        state: byte;
 {$IFDEF SDL13}
-		windowID: LongInt;
-		x, y: LongInt;
+        windowID: LongInt;
+        x, y: LongInt;
 {$ELSE}
-		x, y: word;
+        x, y: word;
 {$ENDIF}
-		end;
+        end;
 
 {$IFDEF SDL13}
-	TSDL_MouseWheelEvent = record
-		type_: Byte;
-		windowID: LongInt;
-		which: Byte;
-		x, y: LongInt;
-		end;
+    TSDL_MouseWheelEvent = record
+        type_: Byte;
+        windowID: LongInt;
+        which: Byte;
+        x, y: LongInt;
+        end;
 {$ENDIF}
 
-	TSDL_JoyAxisEvent = record
-		type_: Byte;
-		which: Byte;
-		axis: Byte;
+    TSDL_JoyAxisEvent = record
+        type_: Byte;
+        which: Byte;
+        axis: Byte;
 {$IFDEF SDL13}
-		value: LongInt;
+        value: LongInt;
 {$ELSE}
-		value: word;
-{$ENDIF}	
-		end;
-			
-	TSDL_JoyBallEvent = record
-		type_: Byte;
-		which: Byte;
-		ball: Byte;
+        value: word;
+{$ENDIF}    
+        end;
+            
+    TSDL_JoyBallEvent = record
+        type_: Byte;
+        which: Byte;
+        ball: Byte;
 {$IFDEF SDL13}
-		xrel, yrel: LongInt;
+        xrel, yrel: LongInt;
 {$ELSE}
-		xrel, yrel: word;
+        xrel, yrel: word;
 {$ENDIF}
-		end;
+        end;
 
-	TSDL_JoyHatEvent = record
-		type_: Byte;
-		which: Byte;
-		hat: Byte;
-		value: Byte;
-		end;
-	
-	TSDL_JoyButtonEvent = record
-		type_: Byte;
-		which: Byte;
-		button: Byte;
-		state: Byte;
-		end;
+    TSDL_JoyHatEvent = record
+        type_: Byte;
+        which: Byte;
+        hat: Byte;
+        value: Byte;
+        end;
+    
+    TSDL_JoyButtonEvent = record
+        type_: Byte;
+        which: Byte;
+        button: Byte;
+        state: Byte;
+        end;
 
-	TSDL_QuitEvent = record
+    TSDL_QuitEvent = record
                 type_: Byte;
                 end;
 
-	PSDL_Event = ^TSDL_Event;
-	TSDL_Event = record
-		case Byte of
-			SDL_NOEVENT: (type_: byte);
+    PSDL_Event = ^TSDL_Event;
+    TSDL_Event = record
+        case Byte of
+            SDL_NOEVENT: (type_: byte);
 {$IFDEF SDL13}
-			SDL_WINDOWEVENT: (active: TSDL_WindowEvent);
-			SDL_KEYDOWN,
-			SDL_KEYUP: (key: TSDL_KeyboardEvent);
-			SDL_TEXTEDITING,
-			SDL_TEXTINPUT: (txtin: byte);
-			SDL_MOUSEMOTION: (motion: TSDL_MouseMotionEvent);
-			SDL_MOUSEBUTTONDOWN,
-			SDL_MOUSEBUTTONUP: (button: TSDL_MouseButtonEvent);
-			SDL_MOUSEWHEEL: (wheel: TSDL_MouseWheelEvent);
-			SDL_JOYAXISMOTION: (jaxis: TSDL_JoyAxisEvent);
-			SDL_JOYHATMOTION: (jhat: TSDL_JoyHatEvent);
-			SDL_JOYBALLMOTION: (jball: TSDL_JoyBallEvent);
-			SDL_JOYBUTTONDOWN,
-			SDL_JOYBUTTONUP: (jbutton: TSDL_JoyButtonEvent);
-			SDL_QUITEV: (quit: TSDL_QuitEvent);
+            SDL_WINDOWEVENT: (active: TSDL_WindowEvent);
+            SDL_KEYDOWN,
+            SDL_KEYUP: (key: TSDL_KeyboardEvent);
+            SDL_TEXTEDITING,
+            SDL_TEXTINPUT: (txtin: byte);
+            SDL_MOUSEMOTION: (motion: TSDL_MouseMotionEvent);
+            SDL_MOUSEBUTTONDOWN,
+            SDL_MOUSEBUTTONUP: (button: TSDL_MouseButtonEvent);
+            SDL_MOUSEWHEEL: (wheel: TSDL_MouseWheelEvent);
+            SDL_JOYAXISMOTION: (jaxis: TSDL_JoyAxisEvent);
+            SDL_JOYHATMOTION: (jhat: TSDL_JoyHatEvent);
+            SDL_JOYBALLMOTION: (jball: TSDL_JoyBallEvent);
+            SDL_JOYBUTTONDOWN,
+            SDL_JOYBUTTONUP: (jbutton: TSDL_JoyButtonEvent);
+            SDL_QUITEV: (quit: TSDL_QuitEvent);
 {$ELSE}
-			SDL_ACTIVEEVENT: (active: TSDL_ActiveEvent);
-			SDL_KEYDOWN,
-			SDL_KEYUP: (key: TSDL_KeyboardEvent);
-			SDL_MOUSEMOTION: (motion: TSDL_MouseMotionEvent);
-			SDL_MOUSEBUTTONDOWN,
-			SDL_MOUSEBUTTONUP: (button: TSDL_MouseButtonEvent);
-			SDL_JOYAXISMOTION: (jaxis: TSDL_JoyAxisEvent);
-			SDL_JOYHATMOTION: (jhat: TSDL_JoyHatEvent);
-			SDL_JOYBALLMOTION: (jball: TSDL_JoyBallEvent);
-			SDL_JOYBUTTONDOWN,
-			SDL_JOYBUTTONUP: (jbutton: TSDL_JoyButtonEvent);
-			SDL_QUITEV: (quit: TSDL_QuitEvent);
-			//SDL_SYSWMEVENT,SDL_EVENT_RESERVEDA,SDL_EVENT_RESERVEDB
-			//SDL_VIDEORESIZE: (resize: TSDL_ResizeEvent);
+            SDL_ACTIVEEVENT: (active: TSDL_ActiveEvent);
+            SDL_KEYDOWN,
+            SDL_KEYUP: (key: TSDL_KeyboardEvent);
+            SDL_MOUSEMOTION: (motion: TSDL_MouseMotionEvent);
+            SDL_MOUSEBUTTONDOWN,
+            SDL_MOUSEBUTTONUP: (button: TSDL_MouseButtonEvent);
+            SDL_JOYAXISMOTION: (jaxis: TSDL_JoyAxisEvent);
+            SDL_JOYHATMOTION: (jhat: TSDL_JoyHatEvent);
+            SDL_JOYBALLMOTION: (jball: TSDL_JoyBallEvent);
+            SDL_JOYBUTTONDOWN,
+            SDL_JOYBUTTONUP: (jbutton: TSDL_JoyButtonEvent);
+            SDL_QUITEV: (quit: TSDL_QuitEvent);
+            //SDL_SYSWMEVENT,SDL_EVENT_RESERVEDA,SDL_EVENT_RESERVEDB
+            //SDL_VIDEORESIZE: (resize: TSDL_ResizeEvent);
 {$ENDIF}
-		end;
+        end;
 
-	PByteArray = ^TByteArray;
-	TByteArray = array[0..65535] of Byte;
-	PLongWordArray = ^TLongWordArray;
-	TLongWordArray = array[0..16383] of LongWord;
+    PByteArray = ^TByteArray;
+    TByteArray = array[0..65535] of Byte;
+    PLongWordArray = ^TLongWordArray;
+    TLongWordArray = array[0..16383] of LongWord;
 
-	PSDL_Thread = Pointer;
-	PSDL_mutex = Pointer;
+    PSDL_Thread = Pointer;
+    PSDL_mutex = Pointer;
 
-	TSDL_GLattr = (
-		SDL_GL_RED_SIZE,
-		SDL_GL_GREEN_SIZE,
-		SDL_GL_BLUE_SIZE,
-		SDL_GL_ALPHA_SIZE,
-		SDL_GL_BUFFER_SIZE,
-		SDL_GL_DOUBLEBUFFER,
-		SDL_GL_DEPTH_SIZE,
-		SDL_GL_STENCIL_SIZE,
-		SDL_GL_ACCUM_RED_SIZE,
-		SDL_GL_ACCUM_GREEN_SIZE,
-		SDL_GL_ACCUM_BLUE_SIZE,
-		SDL_GL_ACCUM_ALPHA_SIZE,
-		SDL_GL_STEREO,
-		SDL_GL_MULTISAMPLEBUFFERS,
-		SDL_GL_MULTISAMPLESAMPLES,
-		SDL_GL_ACCELERATED_VISUAL,
+    TSDL_GLattr = (
+        SDL_GL_RED_SIZE,
+        SDL_GL_GREEN_SIZE,
+        SDL_GL_BLUE_SIZE,
+        SDL_GL_ALPHA_SIZE,
+        SDL_GL_BUFFER_SIZE,
+        SDL_GL_DOUBLEBUFFER,
+        SDL_GL_DEPTH_SIZE,
+        SDL_GL_STENCIL_SIZE,
+        SDL_GL_ACCUM_RED_SIZE,
+        SDL_GL_ACCUM_GREEN_SIZE,
+        SDL_GL_ACCUM_BLUE_SIZE,
+        SDL_GL_ACCUM_ALPHA_SIZE,
+        SDL_GL_STEREO,
+        SDL_GL_MULTISAMPLEBUFFERS,
+        SDL_GL_MULTISAMPLESAMPLES,
+        SDL_GL_ACCELERATED_VISUAL,
 {$IFDEF SDL13}
-		SDL_GL_RETAINED_BACKING,
-		SDL_GL_CONTEXT_MAJOR_VERSION,
-		SDL_GL_CONTEXT_MINOR_VERSION
+        SDL_GL_RETAINED_BACKING,
+        SDL_GL_CONTEXT_MAJOR_VERSION,
+        SDL_GL_CONTEXT_MINOR_VERSION
 {$ELSE}
-		SDL_GL_SWAP_CONTROL
+        SDL_GL_SWAP_CONTROL
 {$ENDIF}
-		);
+        );
 
 {$IFDEF SDL13}
-	TSDL_ArrayByteOrder = (  // array component order, low byte -> high byte 
-		SDL_ARRAYORDER_NONE,
-		SDL_ARRAYORDER_RGB,
-		SDL_ARRAYORDER_RGBA,
-		SDL_ARRAYORDER_ARGB,
-		SDL_ARRAYORDER_BGR,
-		SDL_ARRAYORDER_BGRA,
-		SDL_ARRAYORDER_ABGR
-		);
+    TSDL_ArrayByteOrder = (  // array component order, low byte -> high byte 
+        SDL_ARRAYORDER_NONE,
+        SDL_ARRAYORDER_RGB,
+        SDL_ARRAYORDER_RGBA,
+        SDL_ARRAYORDER_ARGB,
+        SDL_ARRAYORDER_BGR,
+        SDL_ARRAYORDER_BGRA,
+        SDL_ARRAYORDER_ABGR
+        );
 {$ENDIF}
 
 // Joystick/Controller support
-	PSDL_Joystick = ^TSDL_Joystick;
-	TSDL_Joystick = record
-			end;
+    PSDL_Joystick = ^TSDL_Joystick;
+    TSDL_Joystick = record
+            end;
 
-	{* SDL_TTF *}
-	PTTF_Font = ^TTTF_font;
-	TTTF_Font = record
-		    end;
+    {* SDL_TTF *}
+    PTTF_Font = ^TTTF_font;
+    TTTF_Font = record
+            end;
 
-	{* SDL_mixer *}
-	PMixChunk = ^TMixChunk;
-	TMixChunk = record
-		allocated: Longword;
-		abuf     : PByte;
-		alen     : Longword;
-		volume   : PByte;
-		end;
-	TMusic = (MUS_CMD, MUS_WAV, MUS_MOD, MUS_MID, MUS_OGG, MUS_MP3);
-	TMix_Fading = (MIX_NO_FADING, MIX_FADING_OUT, MIX_FADING_IN);
+    {* SDL_mixer *}
+    PMixChunk = ^TMixChunk;
+    TMixChunk = record
+        allocated: Longword;
+        abuf     : PByte;
+        alen     : Longword;
+        volume   : PByte;
+        end;
+    TMusic = (MUS_CMD, MUS_WAV, MUS_MOD, MUS_MID, MUS_OGG, MUS_MP3);
+    TMix_Fading = (MIX_NO_FADING, MIX_FADING_OUT, MIX_FADING_IN);
 
-	TMidiSong = record
+    TMidiSong = record
                samples : LongInt;
                events  : pointer;
                end;
 
-	TMusicUnion = record
-		case Byte of
-		     0: ( midi : TMidiSong );
-		     1: ( ogg  : pointer);
-		     end;
+    TMusicUnion = record
+        case Byte of
+             0: ( midi : TMidiSong );
+             1: ( ogg  : pointer);
+             end;
 
-	PMixMusic = ^TMixMusic;
-	TMixMusic = record
+    PMixMusic = ^TMixMusic;
+    TMixMusic = record
                  end;
 
-	{* SDL_net *}
-	TIPAddress = record
+    {* SDL_net *}
+    TIPAddress = record
                   host: Longword;
                   port: Word;
                   end;
 
-	PTCPSocket = ^TTCPSocket;
-	TTCPSocket = record
+    PTCPSocket = ^TTCPSocket;
+    TTCPSocket = record
                   ready: LongInt;
                   channel: LongInt;
                   remoteAddress: TIPaddress;
                   localAddress: TIPaddress;
                   sflag: LongInt;
                   end;
-	PSDLNet_SocketSet = ^TSDLNet_SocketSet;
-	TSDLNet_SocketSet = record
+    PSDLNet_SocketSet = ^TSDLNet_SocketSet;
+    TSDLNet_SocketSet = record
                          numsockets,
                          maxsockets: LongInt;
                          sockets: PTCPSocket;
@@ -627,8 +627,8 @@
 function  SDL_SaveBMP_RW(surface: PSDL_Surface; dst: PSDL_RWops; freedst: LongInt): LongInt; cdecl; external SDLLibName;
 
 {$IFDEF SDL13}
-function  SDL_CreateWindow(title: PChar; x,y,w,h, flags: LongInt): PSDL_Window; cdecl; external SDLLibName; 	 
-function  SDL_CreateRenderer(window: PSDL_Window; index, flags: LongInt): LongInt; cdecl; external SDLLibName; 	 
+function  SDL_CreateWindow(title: PChar; x,y,w,h, flags: LongInt): PSDL_Window; cdecl; external SDLLibName;      
+function  SDL_CreateRenderer(window: PSDL_Window; index, flags: LongInt): LongInt; cdecl; external SDLLibName;   
 function  SDL_SetRenderDrawColor(r,g,b,a: byte): LongInt; cdecl; external SDLLibName;
 
 function  SDL_RenderFill(rect: PSDL_Rect): LongInt;
@@ -758,32 +758,32 @@
 
 function SDL_MustLock(Surface: PSDL_Surface): Boolean;
 begin
-	SDL_MustLock:= ( surface^.offset <> 0 ) or (( surface^.flags and (SDL_HWSURFACE or SDL_ASYNCBLIT or SDL_RLEACCEL)) <> 0)
+    SDL_MustLock:= ( surface^.offset <> 0 ) or (( surface^.flags and (SDL_HWSURFACE or SDL_ASYNCBLIT or SDL_RLEACCEL)) <> 0)
 end;
 
 procedure SDLNet_Write16(value: Word; buf: pointer);
 begin
-	PByteArray(buf)^[1]:= value;
-	PByteArray(buf)^[0]:= value shr 8
+    PByteArray(buf)^[1]:= value;
+    PByteArray(buf)^[0]:= value shr 8
 end;
 
 procedure SDLNet_Write32(value: LongWord; buf: pointer);
 begin
-	PByteArray(buf)^[3]:= value;
-	PByteArray(buf)^[2]:= value shr  8;
-	PByteArray(buf)^[1]:= value shr 16;
-	PByteArray(buf)^[0]:= value shr 24
+    PByteArray(buf)^[3]:= value;
+    PByteArray(buf)^[2]:= value shr  8;
+    PByteArray(buf)^[1]:= value shr 16;
+    PByteArray(buf)^[0]:= value shr 24
 end;
 
 function SDLNet_Read16(buf: pointer): Word;
 begin
-	SDLNet_Read16:= PByteArray(buf)^[1] or
+    SDLNet_Read16:= PByteArray(buf)^[1] or
                  (PByteArray(buf)^[0] shl 8)
 end;
 
 function SDLNet_Read32(buf: pointer): LongWord;
 begin
-	SDLNet_Read32:=  PByteArray(buf)^[3] or
+    SDLNet_Read32:=  PByteArray(buf)^[3] or
                   (PByteArray(buf)^[2] shl  8) or
                   (PByteArray(buf)^[1] shl 16) or
                   (PByteArray(buf)^[0] shl 24)
@@ -793,9 +793,9 @@
 function SDL_RenderFill(rect: PSDL_Rect): LongInt;
 var res: LongInt;
 begin
-	if (rect <> nil) then res:= SDL_RenderFillRect(rect)
-	else res:= SDL_RenderClear();
-	exit(res);
+    if (rect <> nil) then res:= SDL_RenderFillRect(rect)
+    else res:= SDL_RenderClear();
+    exit(res);
 end;
 {$ENDIF}
 
--- a/hedgewars/hwengine.pas	Sat Mar 06 10:54:24 2010 +0000
+++ b/hedgewars/hwengine.pas	Sat Mar 06 10:59:20 2010 +0000
@@ -28,7 +28,7 @@
 {$ELSE}
 program hwengine;
 {$ENDIF}
-uses	SDLh in 'SDLh.pas',
+uses    SDLh in 'SDLh.pas',
     uConsts in 'uConsts.pas',
     uGame in 'uGame.pas',
     uMisc in 'uMisc.pas',
@@ -229,7 +229,7 @@
 {$ELSE}
 procedure Game;cdecl; export;
 {$ENDIF}
-var	p: TPathType;
+var p: TPathType;
     s: shortstring;
 begin
 {$IFDEF HWLIBRARY}
@@ -321,7 +321,7 @@
 begin
     init_uConsts();
     init_uMisc();
-    init_uConsole();	// MUST happen after uMisc
+    init_uConsole();    // MUST happen after uMisc
     
     init_uAI();
     //uAIActions does not need initialization
@@ -341,7 +341,7 @@
     //uLandTemplates does not need initialization
     //uLandTexture does not need initialization
     //uLocale does not need initialization
-    init_uRandom();	
+    init_uRandom(); 
     //uSHA does not need initialization
     init_uSound();
     init_uStats();
@@ -356,21 +356,21 @@
 procedure freeEverything;
 begin
     free_uWorld();
-    free_uVisualGears();	//stub
-    free_uTriggers();	//stub
+    free_uVisualGears();    //stub
+    free_uTriggers();   //stub
     free_uTeams();
     free_uStore();
-    free_uStats();		//stub
-    free_uSound();		//stub
+    free_uStats();      //stub
+    free_uSound();      //stub
     //uSHA does not need to be freed
-    free_uRandom();		//stub
+    free_uRandom();     //stub
     //uLocale does not need to be freed
     //uLandTemplates does not need to be freed
     //uLandTexture does not need to be freed
     //uLandObjects does not need to be freed
     //uLandGraphics does not need to be freed
     free_uLand();
-    free_uKeys();		//stub
+    free_uKeys();       //stub
     free_uIO();
     free_uGears();
     //uGame does not need to be freed
@@ -378,14 +378,14 @@
     free_uCollisions();
     free_uChat();
     free_uAmmos();
-    free_uAIMisc();		//stub
+    free_uAIMisc();     //stub
     //uAIAmmoTests does not need to be freed
     //uAIActions does not need to be freed
-    free_uAI();		//stub
+    free_uAI();     //stub
 
     free_uConsole();
     free_uMisc();
-    free_uConsts();		//stub
+    free_uConsts();     //stub
     free_uScript();
 end;
 
@@ -485,7 +485,7 @@
             PathPrefix:= ParamStr(1);
             recordFileName:= ParamStr(2);
 
-            if ParamStr(3) = '--set-video'	then
+            if ParamStr(3) = '--set-video'  then
             begin
                 val(ParamStr(4), cScreenWidth);
                 val(ParamStr(5), cScreenHeight);
--- a/hedgewars/uAI.pas	Sat Mar 06 10:54:24 2010 +0000
+++ b/hedgewars/uAI.pas	Sat Mar 06 10:59:20 2010 +0000
@@ -347,7 +347,7 @@
 
 procedure init_uAI;
 begin
-	hasThread:= 0;
+    hasThread:= 0;
 end;
 
 procedure free_uAI;
--- a/hedgewars/uAIAmmoTests.pas	Sat Mar 06 10:54:24 2010 +0000
+++ b/hedgewars/uAIAmmoTests.pas	Sat Mar 06 10:59:20 2010 +0000
@@ -24,11 +24,11 @@
 const amtest_OnTurn = $00000001;
 
 type TAttackParams = record
-			Time: Longword;
-			Angle, Power: LongInt;
-			ExplX, ExplY, ExplR: LongInt;
-			AttackPutX, AttackPutY: LongInt;
-			end;
+            Time: Longword;
+            Angle, Power: LongInt;
+            ExplX, ExplY, ExplR: LongInt;
+            AttackPutX, AttackPutY: LongInt;
+            end;
 
 function TestBazooka(Me: PGear; Targ: TPoint; Level: LongInt; var ap: TAttackParams): LongInt;
 function TestGrenade(Me: PGear; Targ: TPoint; Level: LongInt; var ap: TAttackParams): LongInt;
@@ -40,55 +40,55 @@
 function TestAirAttack(Me: PGear; Targ: TPoint; Level: LongInt; var ap: TAttackParams): LongInt;
 
 type TAmmoTestProc = function (Me: PGear; Targ: TPoint; Level: LongInt; var ap: TAttackParams): LongInt;
-	TAmmoTest = record
-			proc: TAmmoTestProc;
-			flags: Longword;
-			end;
+    TAmmoTest = record
+            proc: TAmmoTestProc;
+            flags: Longword;
+            end;
 
 const AmmoTests: array[TAmmoType] of TAmmoTest =
-			(
-			(proc: nil;              flags: 0), // amNothing
-			(proc: @TestGrenade;     flags: 0), // amGrenade
-			(proc: nil;              flags: 0), // amClusterBomb
-			(proc: @TestBazooka;     flags: 0), // amBazooka
-			(proc: nil;              flags: 0), // amUFO
-			(proc: @TestShotgun;     flags: 0), // amShotgun
-			(proc: nil;              flags: 0), // amPickHammer
-			(proc: nil;              flags: 0), // amSkip
-			(proc: nil;              flags: 0), // amRope
-			(proc: nil;              flags: 0), // amMine
-			(proc: @TestDesertEagle; flags: 0), // amDEagle
-			(proc: nil;              flags: 0), // amDynamite
-			(proc: @TestFirePunch;   flags: 0), // amFirePunch
-			(proc: nil;              flags: 0), // amWhip
-			(proc: @TestBaseballBat; flags: 0), // amBaseballBat
-			(proc: nil;              flags: 0), // amParachute
-			(proc: @TestAirAttack;   flags: amtest_OnTurn), // amAirAttack
-			(proc: nil;              flags: 0), // amMineStrike
-			(proc: nil;              flags: 0), // amBlowTorch
-			(proc: nil;              flags: 0), // amGirder
-			(proc: nil;              flags: amtest_OnTurn), // amTeleport
-			(proc: nil;              flags: 0), // amSwitch
-			(proc: @TestMortar;      flags: 0), // amMortar
-			(proc: nil;              flags: 0), // amKamikaze
-			(proc: nil;              flags: 0), // amCake
-			(proc: nil;              flags: 0), // amSeduction
-			(proc: nil;              flags: 0), // amBanana
-			(proc: nil;              flags: 0), // amHellishBomb
-			(proc: nil;              flags: 0), // amNapalm
-			(proc: nil;              flags: 0), // amDrill
-			(proc: nil;              flags: 0), // amBallgun
-			(proc: nil;              flags: 0), // amRCPlane
-			(proc: nil;              flags: 0), // amLowGravity
-			(proc: nil;              flags: 0), // amExtraDamage
-			(proc: nil;              flags: 0), // amInvulnerable
-			(proc: nil;              flags: 0), // amExtraTime
-			(proc: nil;              flags: 0), // amLaserSight
-			(proc: nil;              flags: 0), // amVampiric
-			(proc: nil;              flags: 0), // amSniperRifle
-			(proc: nil;              flags: 0),  // amJetpack
-			(proc: nil;              flags: 0)  // amMolotov
-			);
+            (
+            (proc: nil;              flags: 0), // amNothing
+            (proc: @TestGrenade;     flags: 0), // amGrenade
+            (proc: nil;              flags: 0), // amClusterBomb
+            (proc: @TestBazooka;     flags: 0), // amBazooka
+            (proc: nil;              flags: 0), // amUFO
+            (proc: @TestShotgun;     flags: 0), // amShotgun
+            (proc: nil;              flags: 0), // amPickHammer
+            (proc: nil;              flags: 0), // amSkip
+            (proc: nil;              flags: 0), // amRope
+            (proc: nil;              flags: 0), // amMine
+            (proc: @TestDesertEagle; flags: 0), // amDEagle
+            (proc: nil;              flags: 0), // amDynamite
+            (proc: @TestFirePunch;   flags: 0), // amFirePunch
+            (proc: nil;              flags: 0), // amWhip
+            (proc: @TestBaseballBat; flags: 0), // amBaseballBat
+            (proc: nil;              flags: 0), // amParachute
+            (proc: @TestAirAttack;   flags: amtest_OnTurn), // amAirAttack
+            (proc: nil;              flags: 0), // amMineStrike
+            (proc: nil;              flags: 0), // amBlowTorch
+            (proc: nil;              flags: 0), // amGirder
+            (proc: nil;              flags: amtest_OnTurn), // amTeleport
+            (proc: nil;              flags: 0), // amSwitch
+            (proc: @TestMortar;      flags: 0), // amMortar
+            (proc: nil;              flags: 0), // amKamikaze
+            (proc: nil;              flags: 0), // amCake
+            (proc: nil;              flags: 0), // amSeduction
+            (proc: nil;              flags: 0), // amBanana
+            (proc: nil;              flags: 0), // amHellishBomb
+            (proc: nil;              flags: 0), // amNapalm
+            (proc: nil;              flags: 0), // amDrill
+            (proc: nil;              flags: 0), // amBallgun
+            (proc: nil;              flags: 0), // amRCPlane
+            (proc: nil;              flags: 0), // amLowGravity
+            (proc: nil;              flags: 0), // amExtraDamage
+            (proc: nil;              flags: 0), // amInvulnerable
+            (proc: nil;              flags: 0), // amExtraTime
+            (proc: nil;              flags: 0), // amLaserSight
+            (proc: nil;              flags: 0), // amVampiric
+            (proc: nil;              flags: 0), // amSniperRifle
+            (proc: nil;              flags: 0),  // amJetpack
+            (proc: nil;              flags: 0)  // amMolotov
+            );
 
 const BadTurn = Low(LongInt) div 4;
 
@@ -216,56 +216,56 @@
     Score, EX, EY, valueResult: LongInt;
     TestTime: Longword;
 
-	function CheckTrace: LongInt;
-	var x, y, dY: hwFloat;
-		value: LongInt;
-	begin
-		x:= Me^.X;
-		y:= Me^.Y;
-		dY:= -Vy;
+    function CheckTrace: LongInt;
+    var x, y, dY: hwFloat;
+        value: LongInt;
+    begin
+        x:= Me^.X;
+        y:= Me^.Y;
+        dY:= -Vy;
 
-		repeat
-			x:= x + Vx;
-			y:= y + dY;
-			dY:= dY + cGravity;
-			EX:= hwRound(x);
-			EY:= hwRound(y);
-		until TestCollExcludingMe(Me, EX, EY, 5) or (EY > 1000);
+        repeat
+            x:= x + Vx;
+            y:= y + dY;
+            dY:= dY + cGravity;
+            EX:= hwRound(x);
+            EY:= hwRound(y);
+        until TestCollExcludingMe(Me, EX, EY, 5) or (EY > 1000);
 
-		if (EY < 1000) and not dY.isNegative then
-			begin
-			value:= RateExplosion(Me, EX, EY, 91);
-			if (value = 0) then
-				if (dY > _0_15) then
-					value:= - abs(Targ.Y - EY) div 32
-				else
-					value:= BadTurn
-			else if (value < 0) then value:= BadTurn
-			end
-		else
-			value:= BadTurn;
+        if (EY < 1000) and not dY.isNegative then
+            begin
+            value:= RateExplosion(Me, EX, EY, 91);
+            if (value = 0) then
+                if (dY > _0_15) then
+                    value:= - abs(Targ.Y - EY) div 32
+                else
+                    value:= BadTurn
+            else if (value < 0) then value:= BadTurn
+            end
+        else
+            value:= BadTurn;
 
-		CheckTrace:= value;
-	end;
+        CheckTrace:= value;
+    end;
 
-	function Solve: LongWord;
-	var A, B, D, T: hwFloat;
-		C: LongInt;
-	begin
-		A:= hwSqr(cGravity) * _0_25;
-		B:= - cGravity * (Targ.Y - hwRound(Me^.Y)) - _1;
-		C:= sqr(Targ.Y - hwRound(Me^.Y)) + sqr(Targ.X - hwRound(Me^.X));
-		D:= hwSqr(B) - (A * C * 4);
-		if D.isNegative = false then
-			begin
-			D:= ( - B + hwSqrt(D)) * _0_5 / A;
-			if D.isNegative = false then
-				T:= hwSqrt(D)
-			else
-				T:= _0;
-			Solve:= hwRound(T)
-			end else Solve:= 0
-	end;
+    function Solve: LongWord;
+    var A, B, D, T: hwFloat;
+        C: LongInt;
+    begin
+        A:= hwSqr(cGravity) * _0_25;
+        B:= - cGravity * (Targ.Y - hwRound(Me^.Y)) - _1;
+        C:= sqr(Targ.Y - hwRound(Me^.Y)) + sqr(Targ.X - hwRound(Me^.X));
+        D:= hwSqr(B) - (A * C * 4);
+        if D.isNegative = false then
+            begin
+            D:= ( - B + hwSqrt(D)) * _0_5 / A;
+            if D.isNegative = false then
+                T:= hwSqrt(D)
+            else
+                T:= _0;
+            Solve:= hwRound(T)
+            end else Solve:= 0
+    end;
 
 begin
 valueResult:= BadTurn;
@@ -277,19 +277,19 @@
 
 if TestTime = 0 then exit(BadTurn);
 
-	Vx:= (int2hwFloat(Targ.X) - Me^.X) / int2hwFloat(TestTime);
-	Vy:= cGravity * (TestTime div 2) - (int2hwFloat(Targ.Y) - Me^.Y) / int2hwFloat(TestTime);
+    Vx:= (int2hwFloat(Targ.X) - Me^.X) / int2hwFloat(TestTime);
+    Vy:= cGravity * (TestTime div 2) - (int2hwFloat(Targ.Y) - Me^.Y) / int2hwFloat(TestTime);
 
-	Score:= CheckTrace;
-	if valueResult < Score then
-		begin
-		ap.Angle:= DxDy2AttackAngle(Vx, Vy) + AIrndSign(random(Level));
-		ap.Power:= 1;
-		ap.ExplR:= 100;
-		ap.ExplX:= EX;
-		ap.ExplY:= EY;
-		valueResult:= Score
-		end;
+    Score:= CheckTrace;
+    if valueResult < Score then
+        begin
+        ap.Angle:= DxDy2AttackAngle(Vx, Vy) + AIrndSign(random(Level));
+        ap.Power:= 1;
+        ap.ExplR:= 100;
+        ap.ExplX:= EX;
+        ap.ExplY:= EY;
+        valueResult:= Score
+        end;
 
 TestMortar:= valueResult;
 end;
@@ -385,23 +385,23 @@
 ap.Angle:= 0;
 if (Abs(hwRound(Me^.X) - Targ.X) > 25)
 or (Abs(hwRound(Me^.Y) - 50 - Targ.Y) > 50) then
-	begin
-	if TestColl(hwRound(Me^.Y), hwRound(Me^.Y) - 16, 6)
-	and (RateShove(Me, hwRound(Me^.X) + 10 * hwSign(Me^.dX), hwRound(Me^.Y) - 40, 30, 30) = 0) then
-		valueResult:= Succ(BadTurn)
-	else
-		valueResult:= BadTurn;
-	exit(valueResult)
-	end;
+    begin
+    if TestColl(hwRound(Me^.Y), hwRound(Me^.Y) - 16, 6)
+    and (RateShove(Me, hwRound(Me^.X) + 10 * hwSign(Me^.dX), hwRound(Me^.Y) - 40, 30, 30) = 0) then
+        valueResult:= Succ(BadTurn)
+    else
+        valueResult:= BadTurn;
+    exit(valueResult)
+    end;
 
 valueResult:= 0;
 for i:= 0 to 4 do
-	valueResult:= valueResult + RateShove(Me, hwRound(Me^.X) + 10 * hwSign(int2hwFloat(Targ.X) - Me^.X),
+    valueResult:= valueResult + RateShove(Me, hwRound(Me^.X) + 10 * hwSign(int2hwFloat(Targ.X) - Me^.X),
                                     hwRound(Me^.Y) - 20 * i - 5, 10, 30);
 if valueResult <= 0 then
-	valueResult:= BadTurn
+    valueResult:= BadTurn
 else
-	inc(valueResult);
+    inc(valueResult);
 
 TestFirePunch:= valueResult;
 end;
--- a/hedgewars/uAIMisc.pas	Sat Mar 06 10:54:24 2010 +0000
+++ b/hedgewars/uAIMisc.pas	Sat Mar 06 10:59:20 2010 +0000
@@ -85,30 +85,30 @@
 f:= 0;
 e:= 0;
 for t:= 0 to Pred(TeamsCount) do
-	with TeamsArray[t]^ do
-		if not hasGone then
-			begin
-			for i:= 0 to cMaxHHIndex do
-				if (Hedgehogs[i].Gear <> nil)
-				and (Hedgehogs[i].Gear <> ThinkingHH) then
-					begin
-					with Targets.ar[Targets.Count], Hedgehogs[i] do
-						begin
-						Point.X:= hwRound(Gear^.X);
-						Point.Y:= hwRound(Gear^.Y);
-						if Clan <> CurrentTeam^.Clan then
-							begin
-							Score:=  Gear^.Health;
-							inc(e)
-							end else
-							begin
-							Score:= -Gear^.Health;
-							inc(f)
-							end
-						end;
-					inc(Targets.Count)
-					end;
-			end;
+    with TeamsArray[t]^ do
+        if not hasGone then
+            begin
+            for i:= 0 to cMaxHHIndex do
+                if (Hedgehogs[i].Gear <> nil)
+                and (Hedgehogs[i].Gear <> ThinkingHH) then
+                    begin
+                    with Targets.ar[Targets.Count], Hedgehogs[i] do
+                        begin
+                        Point.X:= hwRound(Gear^.X);
+                        Point.Y:= hwRound(Gear^.Y);
+                        if Clan <> CurrentTeam^.Clan then
+                            begin
+                            Score:=  Gear^.Health;
+                            inc(e)
+                            end else
+                            begin
+                            Score:= -Gear^.Health;
+                            inc(f)
+                            end
+                        end;
+                    inc(Targets.Count)
+                    end;
+            end;
 
 if e > f then friendlyfactor:= 300 + (e - f) * 30
 else friendlyfactor:= max(30, 300 - f * 80 div e)
@@ -133,27 +133,27 @@
 MyClan:= PHedgehog(ThinkingHH^.Hedgehog)^.Team^.Clan;
 Gear:= GearsList;
 while Gear <> nil do
-	begin
-	case Gear^.Kind of
-		gtCase: AddBonus(hwRound(Gear^.X), hwRound(Gear^.Y), 33, 25);
-		gtMine: if (Gear^.State and gstAttacking) = 0 then
-				AddBonus(hwRound(Gear^.X), hwRound(Gear^.Y), 50, -50)
-			else
-				AddBonus(hwRound(Gear^.X), hwRound(Gear^.Y), 100, -50); // mine is on
-		gtDynamite: AddBonus(hwRound(Gear^.X), hwRound(Gear^.Y), 150, -75);
-		gtHedgehog: begin
-					if Gear^.Damage >= Gear^.Health then
-						AddBonus(hwRound(Gear^.X), hwRound(Gear^.Y), 60, -25)
-					else
-						if isAfterAttack and (ThinkingHH^.Hedgehog <> Gear^.Hedgehog) then
-							if (MyClan = PHedgehog(Gear^.Hedgehog)^.Team^.Clan) then
-								AddBonus(hwRound(Gear^.X), hwRound(Gear^.Y), 150, -3) // hedgehog-friend
-							else
-								AddBonus(hwRound(Gear^.X), hwRound(Gear^.Y), 100, 3)
-					end;
-		end;
-	Gear:= Gear^.NextGear
-	end;
+    begin
+    case Gear^.Kind of
+        gtCase: AddBonus(hwRound(Gear^.X), hwRound(Gear^.Y), 33, 25);
+        gtMine: if (Gear^.State and gstAttacking) = 0 then
+                AddBonus(hwRound(Gear^.X), hwRound(Gear^.Y), 50, -50)
+            else
+                AddBonus(hwRound(Gear^.X), hwRound(Gear^.Y), 100, -50); // mine is on
+        gtDynamite: AddBonus(hwRound(Gear^.X), hwRound(Gear^.Y), 150, -75);
+        gtHedgehog: begin
+                    if Gear^.Damage >= Gear^.Health then
+                        AddBonus(hwRound(Gear^.X), hwRound(Gear^.Y), 60, -25)
+                    else
+                        if isAfterAttack and (ThinkingHH^.Hedgehog <> Gear^.Hedgehog) then
+                            if (MyClan = PHedgehog(Gear^.Hedgehog)^.Team^.Clan) then
+                                AddBonus(hwRound(Gear^.X), hwRound(Gear^.Y), 150, -3) // hedgehog-friend
+                            else
+                                AddBonus(hwRound(Gear^.X), hwRound(Gear^.Y), 100, 3)
+                    end;
+        end;
+    Gear:= Gear^.NextGear
+    end;
 if isAfterAttack and (KnownExplosion.Radius > 0) then
    with KnownExplosion do
         AddBonus(X, Y, Radius + 10, -Radius);
@@ -172,13 +172,13 @@
 begin
 rate:= 0;
 for i:= 0 to Pred(bonuses.Count) do
-	with bonuses.ar[i] do
-		begin
-		r:= hwRound(Distance(Gear^.X - int2hwFloat(X), Gear^.Y - int2hwFloat(Y)));
-		if r < Radius then
-			inc(rate, Score * (Radius - r))
-		end;
-	RatePlace:= rate;
+    with bonuses.ar[i] do
+        begin
+        r:= hwRound(Distance(Gear^.X - int2hwFloat(X), Gear^.Y - int2hwFloat(Y)));
+        if r < Radius then
+            inc(rate, Score * (Radius - r))
+        end;
+    RatePlace:= rate;
 end;
 
 // Wrapper to test various approaches.  If it works reasonably, will just replace.
@@ -467,10 +467,10 @@
 
 procedure init_uAIMisc;
 begin
-	friendlyfactor:= 300;
-	KnownExplosion.X:= 0;
-	KnownExplosion.Y:= 0;
-	KnownExplosion.Radius:= 0;
+    friendlyfactor:= 300;
+    KnownExplosion.X:= 0;
+    KnownExplosion.Y:= 0;
+    KnownExplosion.Radius:= 0;
 end;
 
 procedure free_uAIMisc;
--- a/hedgewars/uAmmos.pas	Sat Mar 06 10:54:24 2010 +0000
+++ b/hedgewars/uAmmos.pas	Sat Mar 06 10:59:20 2010 +0000
@@ -108,7 +108,7 @@
         Ammoz[a].Probability:= probability[byte(s[ord(a) + ord(High(TAmmoType))]) - byte('0')];
         Ammoz[a].SkipTurns:= (byte(s[ord(a) + ord(High(TAmmoType)) + ord(High(TAmmoType))]) - byte('0'));
         Ammoz[a].NumberInCase:= (byte(s[ord(a) + ord(High(TAmmoType)) + ord(High(TAmmoType)) + ord(High(TAmmoType))]) - byte('0'));
-		if (TrainingFlags and tfIgnoreDelays) <> 0 then Ammoz[a].SkipTurns:= 0;
+        if (TrainingFlags and tfIgnoreDelays) <> 0 then Ammoz[a].SkipTurns:= 0;
         cnt:= byte(s[ord(a)]) - byte('0');
         // avoid things we already have infinite number
         if cnt = 9 then
@@ -206,19 +206,19 @@
 procedure OnUsedAmmo(var Hedgehog: THedgehog);
 begin
 with Hedgehog do
-	begin
-	MultiShootAttacks:= 0;
-	with Ammo^[CurSlot, CurAmmo] do
-		if Count <> AMMO_INFINITE then
-			begin
-			dec(Count);
-			if Count = 0 then
-				begin
-				PackAmmo(Ammo, CurSlot);
-				SwitchNotHeldAmmo(Hedgehog)
-				end
-			end
-	end
+    begin
+    MultiShootAttacks:= 0;
+    with Ammo^[CurSlot, CurAmmo] do
+        if Count <> AMMO_INFINITE then
+            begin
+            dec(Count);
+            if Count = 0 then
+                begin
+                PackAmmo(Ammo, CurSlot);
+                SwitchNotHeldAmmo(Hedgehog)
+                end
+            end
+    end
 end;
 
 function  HHHasAmmo(var Hedgehog: THedgehog; Ammo: TAmmoType): boolean;
@@ -239,45 +239,45 @@
 procedure ApplyAngleBounds(var Hedgehog: THedgehog; AmmoType: TAmmoType);
 begin
 with Hedgehog do
-	begin
-	CurMinAngle:= Ammoz[AmmoType].minAngle;
-	if Ammoz[AmmoType].maxAngle <> 0 then
-		CurMaxAngle:= Ammoz[AmmoType].maxAngle
-	else
-		CurMaxAngle:= cMaxAngle;
+    begin
+    CurMinAngle:= Ammoz[AmmoType].minAngle;
+    if Ammoz[AmmoType].maxAngle <> 0 then
+        CurMaxAngle:= Ammoz[AmmoType].maxAngle
+    else
+        CurMaxAngle:= cMaxAngle;
 
-	with Hedgehog.Gear^ do
-		begin
-		if Angle < CurMinAngle then Angle:= CurMinAngle;
-		if Angle > CurMaxAngle then Angle:= CurMaxAngle;
-		end
-	end
+    with Hedgehog.Gear^ do
+        begin
+        if Angle < CurMinAngle then Angle:= CurMinAngle;
+        if Angle > CurMaxAngle then Angle:= CurMaxAngle;
+        end
+    end
 end;
 
 procedure SwitchToFirstLegalAmmo(var Hedgehog: THedgehog);
 begin
 with Hedgehog do
-	begin
-	CurAmmo:= 0;
-	CurSlot:= 0;
-	while (CurSlot <= cMaxSlotIndex) and
-		((Ammo^[CurSlot, CurAmmo].Count = 0) or
-		(Ammoz[Ammo^[CurSlot, CurAmmo].AmmoType].SkipTurns - CurrentTeam^.Clan^.TurnNumber >= 0))
-		do
-		begin
-		while (CurAmmo <= cMaxSlotAmmoIndex) and
-			((Ammo^[CurSlot, CurAmmo].Count = 0) or
-			(Ammoz[Ammo^[CurSlot, CurAmmo].AmmoType].SkipTurns - CurrentTeam^.Clan^.TurnNumber >= 0))
-			do inc(CurAmmo);
+    begin
+    CurAmmo:= 0;
+    CurSlot:= 0;
+    while (CurSlot <= cMaxSlotIndex) and
+        ((Ammo^[CurSlot, CurAmmo].Count = 0) or
+        (Ammoz[Ammo^[CurSlot, CurAmmo].AmmoType].SkipTurns - CurrentTeam^.Clan^.TurnNumber >= 0))
+        do
+        begin
+        while (CurAmmo <= cMaxSlotAmmoIndex) and
+            ((Ammo^[CurSlot, CurAmmo].Count = 0) or
+            (Ammoz[Ammo^[CurSlot, CurAmmo].AmmoType].SkipTurns - CurrentTeam^.Clan^.TurnNumber >= 0))
+            do inc(CurAmmo);
 
-		if (CurAmmo > cMaxSlotAmmoIndex) then
-			begin
-			CurAmmo:= 0;
-			inc(CurSlot)
-			end
-		end;
-	TryDo(CurSlot <= cMaxSlotIndex, 'Ammo slot index overflow', true)
-	end
+        if (CurAmmo > cMaxSlotAmmoIndex) then
+            begin
+            CurAmmo:= 0;
+            inc(CurSlot)
+            end
+        end;
+    TryDo(CurSlot <= cMaxSlotIndex, 'Ammo slot index overflow', true)
+    end
 end;
 
 procedure ApplyAmmoChanges(var Hedgehog: THedgehog);
@@ -286,44 +286,44 @@
 TargetPoint.X:= NoPointX;
 
 with Hedgehog do
-	begin
+    begin
 
-	if (Ammo^[CurSlot, CurAmmo].Count = 0) then
-		SwitchToFirstLegalAmmo(Hedgehog);
+    if (Ammo^[CurSlot, CurAmmo].Count = 0) then
+        SwitchToFirstLegalAmmo(Hedgehog);
 
         //bad things could happen here in case CurSlot is overflowing
-	ApplyAngleBounds(Hedgehog, Ammo^[CurSlot, CurAmmo].AmmoType);
+    ApplyAngleBounds(Hedgehog, Ammo^[CurSlot, CurAmmo].AmmoType);
 
-	with Ammo^[CurSlot, CurAmmo] do
-		begin
+    with Ammo^[CurSlot, CurAmmo] 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);
+            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;
-		if (Propz and ammoprop_NeedTarget) <> 0
-			then begin
-			Gear^.State:= Gear^.State or      gstHHChooseTarget;
-			isCursorVisible:= true
-			end else begin
-			Gear^.State:= Gear^.State and not gstHHChooseTarget;
-			isCursorVisible:= false
-			end;
-		ShowCrosshair:= (Propz and ammoprop_NoCrosshair) = 0
-		end
-	end
+        if (Propz and ammoprop_NeedTarget) <> 0
+            then begin
+            Gear^.State:= Gear^.State or      gstHHChooseTarget;
+            isCursorVisible:= true
+            end else begin
+            Gear^.State:= Gear^.State and not gstHHChooseTarget;
+            isCursorVisible:= false
+            end;
+        ShowCrosshair:= (Propz and ammoprop_NoCrosshair) = 0
+        end
+    end
 end;
 
 procedure SwitchNotHeldAmmo(var Hedgehog: THedgehog);
 begin
 with Hedgehog do
-	if ((Ammo^[CurSlot, CurAmmo].Propz and ammoprop_DontHold) <> 0) or
-		(Ammoz[Ammo^[CurSlot, CurAmmo].AmmoType].SkipTurns - CurrentTeam^.Clan^.TurnNumber >= 0) then
-		SwitchToFirstLegalAmmo(Hedgehog);
+    if ((Ammo^[CurSlot, CurAmmo].Propz and ammoprop_DontHold) <> 0) or
+        (Ammoz[Ammo^[CurSlot, CurAmmo].AmmoType].SkipTurns - CurrentTeam^.Clan^.TurnNumber >= 0) then
+        SwitchToFirstLegalAmmo(Hedgehog);
 end;
 
 procedure SetWeapon(weap: TAmmoType);
@@ -333,52 +333,52 @@
 
 procedure DisableSomeWeapons;
 var i, slot, a: Longword;
-	t: TAmmoType;
+    t: TAmmoType;
 begin
 for i:= 0 to Pred(StoreCnt) do
-	for slot:= 0 to cMaxSlotIndex do
-		begin
-		for a:= 0 to cMaxSlotAmmoIndex do
-			with StoresList[i]^[slot, a] do
-				if (Propz and ammoprop_NotBorder) <> 0 then Count:= 0;
+    for slot:= 0 to cMaxSlotIndex do
+        begin
+        for a:= 0 to cMaxSlotAmmoIndex do
+            with StoresList[i]^[slot, a] do
+                if (Propz and ammoprop_NotBorder) <> 0 then Count:= 0;
 
-		PackAmmo(StoresList[i], slot)
-		end;
+        PackAmmo(StoresList[i], slot)
+        end;
 
 for t:= Low(TAmmoType) to High(TAmmoType) do
-	if (Ammoz[t].Ammo.Propz and ammoprop_NotBorder) <> 0 then Ammoz[t].Probability:= 0
+    if (Ammoz[t].Ammo.Propz and ammoprop_NotBorder) <> 0 then Ammoz[t].Probability:= 0
 end;
 
 // Restore indefinitely disabled weapons and initial weapon counts.  Only used for hog placement right now
 procedure ResetWeapons;
 var i, slot, a: Longword;
-	t: TAmmoType;
+    t: TAmmoType;
 begin
 for i:= 0 to Pred(StoreCnt) do
-	for slot:= 0 to cMaxSlotIndex do
-		begin
-		for a:= 0 to cMaxSlotAmmoIndex do
-			with StoresList[i]^[slot, a] do
+    for slot:= 0 to cMaxSlotIndex do
+        begin
+        for a:= 0 to cMaxSlotAmmoIndex do
+            with StoresList[i]^[slot, a] do
                 Count:= InitialCount;
 
-		PackAmmo(StoresList[i], slot)
-		end;
+        PackAmmo(StoresList[i], slot)
+        end;
 for t:= Low(TAmmoType) to High(TAmmoType) do
-	if Ammoz[t].SkipTurns >= 10000 then dec(Ammoz[t].SkipTurns,10000);
+    if Ammoz[t].SkipTurns >= 10000 then dec(Ammoz[t].SkipTurns,10000);
 end;
 
 procedure init_uAmmos;
 begin
-	shoppa:= false;
-	StoreCnt:= 0
+    shoppa:= false;
+    StoreCnt:= 0
 end;
 
 procedure free_uAmmos;
 var i: LongWord;
 begin
-	if StoreCnt > 0 then
-		for i:= 0 to Pred(StoreCnt) do Dispose(StoresList[i]);
-	StoreCnt:= 0
+    if StoreCnt > 0 then
+        for i:= 0 to Pred(StoreCnt) do Dispose(StoresList[i]);
+    StoreCnt:= 0
 end;
 
 end.
--- a/hedgewars/uChat.pas	Sat Mar 06 10:54:24 2010 +0000
+++ b/hedgewars/uChat.pas	Sat Mar 06 10:59:20 2010 +0000
@@ -38,11 +38,11 @@
 const MaxStrIndex = 27;
 
 type TChatLine = record
-		Tex: PTexture;
-		Time: Longword;
-		Width: LongInt;
-		s: shortstring;
-		end;
+        Tex: PTexture;
+        Time: Longword;
+        Width: LongInt;
+        s: shortstring;
+        end;
 
 var Strs: array[0 .. MaxStrIndex] of TChatLine;
     lastStr: LongWord;
@@ -51,37 +51,37 @@
     InputStrL: array[0..260] of char; // for full str + 4-byte utf-8 char
 
 const colors: array[#1..#4] of TSDL_Color = (
-	(r:$FF; g:$FF; b:$FF; unused:$FF), // chat message [White]
-	(r:$FF; g:$00; b:$FF; unused:$FF), // action message [Purple]
-	(r:$90; g:$FF; b:$90; unused:$FF), // join/leave message [Lime]
-	(r:$FF; g:$FF; b:$A0; unused:$FF)  // team message [Light Yellow]
-	);
+    (r:$FF; g:$FF; b:$FF; unused:$FF), // chat message [White]
+    (r:$FF; g:$00; b:$FF; unused:$FF), // action message [Purple]
+    (r:$90; g:$FF; b:$90; unused:$FF), // join/leave message [Lime]
+    (r:$FF; g:$FF; b:$A0; unused:$FF)  // team message [Light Yellow]
+    );
 
 procedure SetLine(var cl: TChatLine; str: shortstring; isInput: boolean);
 var strSurface, resSurface: PSDL_Surface;
-	w, h: LongInt;
-	color: TSDL_Color;
+    w, h: LongInt;
+    color: TSDL_Color;
     font: THWFont;
 begin
 if cl.Tex <> nil then
-	FreeTexture(cl.Tex);
+    FreeTexture(cl.Tex);
 
 
 cl.s:= str;
 
 if isInput then
 begin
-	// [Light Blue]
-	color.r:= $00;
-	color.g:= $FF;
-	color.b:= $FF;
-	color.unused:= $FF;
-	str:= UserNick + '> ' + str + '_'
+    // [Light Blue]
+    color.r:= $00;
+    color.g:= $FF;
+    color.b:= $FF;
+    color.unused:= $FF;
+    str:= UserNick + '> ' + str + '_'
 end
 else
 begin
-	color:= colors[str[1]];
-	delete(str, 1, 1)
+    color:= colors[str[1]];
+    delete(str, 1, 1)
 end;
 
 font:= CheckCJKFont(str, fnt16);
@@ -111,7 +111,7 @@
 
 procedure DrawChat;
 var i, t, cnt: Longword;
-	r: TSDL_Rect;
+    r: TSDL_Rect;
 begin
 cnt:= 0;
 t:= 0;
@@ -122,33 +122,33 @@
 r.h:= 16;
 
 if (GameState = gsChat)
-	and (InputStr.Tex <> nil) then
-	begin
-	r.w:= InputStr.Width;
-	DrawFillRect(r);
-	DrawTexture(8 - cScreenWidth div 2, visibleCount * 16 + 10, InputStr.Tex);
-	end;
+    and (InputStr.Tex <> nil) then
+    begin
+    r.w:= InputStr.Width;
+    DrawFillRect(r);
+    DrawTexture(8 - cScreenWidth div 2, visibleCount * 16 + 10, InputStr.Tex);
+    end;
 
 dec(r.y, 16);
 
 while
-	(
-			((t < 7) and (Strs[i].Time > RealTicks))
-		or
-			((t < MaxStrIndex) and showAll)
-	)
-	and
-		(Strs[i].Tex <> nil) do
-	begin
-	r.w:= Strs[i].Width;
-	DrawFillRect(r);
-	DrawTexture(8 - cScreenWidth div 2, (visibleCount - t) * 16 - 6, Strs[i].Tex);
-	dec(r.y, 16);
+    (
+            ((t < 7) and (Strs[i].Time > RealTicks))
+        or
+            ((t < MaxStrIndex) and showAll)
+    )
+    and
+        (Strs[i].Tex <> nil) do
+    begin
+    r.w:= Strs[i].Width;
+    DrawFillRect(r);
+    DrawTexture(8 - cScreenWidth div 2, (visibleCount - t) * 16 - 6, Strs[i].Tex);
+    dec(r.y, 16);
 
-	if i = 0 then i:= MaxStrIndex else dec(i);
-	inc(cnt);
-	inc(t)
-	end;
+    if i = 0 then i:= MaxStrIndex else dec(i);
+    inc(cnt);
+    inc(t)
+    end;
 
 visibleCount:= cnt;
 end;
@@ -216,23 +216,23 @@
     exit
     end;
 if (s[1] = '/') and (copy(s, 1, 4) <> '/me ') then
-	begin
-	if CurrentTeam^.ExtDriven then exit;
+    begin
+    if CurrentTeam^.ExtDriven then exit;
 
-	for i:= Low(TWave) to High(TWave) do
-		if (s = Wavez[i].cmd) then
-			begin
-			ParseCommand('/taunt ' + char(i), true);
-			exit
-			end;
-	if (s = '/newgrave') then
+    for i:= Low(TWave) to High(TWave) do
+        if (s = Wavez[i].cmd) then
+            begin
+            ParseCommand('/taunt ' + char(i), true);
+            exit
+            end;
+    if (s = '/newgrave') then
         begin
-	    ParseCommand('/newgrave', true);
+        ParseCommand('/newgrave', true);
         exit
         end;
     end
-	else
-		ParseCommand('/say ' + s, true);
+    else
+        ParseCommand('/say ' + s, true);
 end;
 
 procedure KeyPressChat(Key: Longword);
@@ -242,46 +242,46 @@
 begin
 
 if Key <> 0 then
-	case Key of
-		{Backspace}
-		8, 127: if Length(InputStr.s) > 0 then
-				begin
-				InputStr.s[0]:= InputStrL[byte(InputStr.s[0])];
-				SetLine(InputStr, InputStr.s, true)
-				end;
-		{Esc}
-		27: SetLine(InputStr, '', true);
-		{Return}
-		3, 13, 271: begin
-			if Length(InputStr.s) > 0 then
-				begin
-				AcceptChatString(InputStr.s);
-				SetLine(InputStr, '', false)
-				end;
-			FreezeEnterKey;
-			GameState:= gsGame
-			end;
-	else
-	if (Key < $80) then btw:= 1
-	else if (Key < $800) then btw:= 2
-	else if (Key < $10000) then btw:= 3
-	else btw:= 4;
+    case Key of
+        {Backspace}
+        8, 127: if Length(InputStr.s) > 0 then
+                begin
+                InputStr.s[0]:= InputStrL[byte(InputStr.s[0])];
+                SetLine(InputStr, InputStr.s, true)
+                end;
+        {Esc}
+        27: SetLine(InputStr, '', true);
+        {Return}
+        3, 13, 271: begin
+            if Length(InputStr.s) > 0 then
+                begin
+                AcceptChatString(InputStr.s);
+                SetLine(InputStr, '', false)
+                end;
+            FreezeEnterKey;
+            GameState:= gsGame
+            end;
+    else
+    if (Key < $80) then btw:= 1
+    else if (Key < $800) then btw:= 2
+    else if (Key < $10000) then btw:= 3
+    else btw:= 4;
 
-	utf8:= '';
+    utf8:= '';
 
-	for i:= btw downto 2 do
-		begin
-		utf8:= char((Key or $80) and $BF) + utf8;
-		Key:= Key shr 6
-		end;
+    for i:= btw downto 2 do
+        begin
+        utf8:= char((Key or $80) and $BF) + utf8;
+        Key:= Key shr 6
+        end;
 
-	utf8:= char(Key or firstByteMark[btw]) + utf8;
+    utf8:= char(Key or firstByteMark[btw]) + utf8;
 
-	if byte(InputStr.s[0]) + btw > 240 then exit;
+    if byte(InputStr.s[0]) + btw > 240 then exit;
 
-	InputStrL[byte(InputStr.s[0]) + btw]:= InputStr.s[0];
-	SetLine(InputStr, InputStr.s + utf8, true)
-	end
+    InputStrL[byte(InputStr.s[0]) + btw]:= InputStr.s[0];
+    SetLine(InputStr, InputStr.s + utf8, true)
+    end
 end;
 
 procedure init_uChat;
--- a/hedgewars/uCollisions.pas	Sat Mar 06 10:54:24 2010 +0000
+++ b/hedgewars/uCollisions.pas	Sat Mar 06 10:59:20 2010 +0000
@@ -25,10 +25,10 @@
 const cMaxGearArrayInd = 255;
 
 type PGearArray = ^TGearArray;
-	TGearArray = record
-			ar: array[0..cMaxGearArrayInd] of PGear;
-			Count: Longword
-			end;
+    TGearArray = record
+            ar: array[0..cMaxGearArrayInd] of PGear;
+            Count: Longword
+            end;
 
 procedure init_uCollisions;
 procedure free_uCollisions;
@@ -53,9 +53,9 @@
 uses uMisc, uConsts, uLand, uLandGraphics, uConsole;
 
 type TCollisionEntry = record
-			X, Y, Radius: LongInt;
-			cGear: PGear;
-			end;
+            X, Y, Radius: LongInt;
+            cGear: PGear;
+            end;
 
 const MAXRECTSINDEX = 511;
 var Count: Longword;
@@ -67,13 +67,13 @@
 if Gear^.CollisionIndex >= 0 then exit;
 TryDo(Count <= MAXRECTSINDEX, 'Collision rects array overflow', true);
 with cinfos[Count] do
-	begin
-	X:= hwRound(Gear^.X);
-	Y:= hwRound(Gear^.Y);
-	Radius:= Gear^.Radius;
-	ChangeRoundInLand(X, Y, Radius - 1, true);
-	cGear:= Gear
-	end;
+    begin
+    X:= hwRound(Gear^.X);
+    Y:= hwRound(Gear^.Y);
+    Radius:= Gear^.Radius;
+    ChangeRoundInLand(X, Y, Radius - 1, true);
+    cGear:= Gear
+    end;
 Gear^.CollisionIndex:= Count;
 inc(Count)
 end;
@@ -81,19 +81,19 @@
 procedure DeleteCI(Gear: PGear);
 begin
 if Gear^.CollisionIndex >= 0 then
-	begin
-	with cinfos[Gear^.CollisionIndex] do
-		ChangeRoundInLand(X, Y, Radius - 1, false);
-	cinfos[Gear^.CollisionIndex]:= cinfos[Pred(Count)];
-	cinfos[Gear^.CollisionIndex].cGear^.CollisionIndex:= Gear^.CollisionIndex;
-	Gear^.CollisionIndex:= -1;
-	dec(Count)
-	end;
+    begin
+    with cinfos[Gear^.CollisionIndex] do
+        ChangeRoundInLand(X, Y, Radius - 1, false);
+    cinfos[Gear^.CollisionIndex]:= cinfos[Pred(Count)];
+    cinfos[Gear^.CollisionIndex].cGear^.CollisionIndex:= Gear^.CollisionIndex;
+    Gear^.CollisionIndex:= -1;
+    dec(Count)
+    end;
 end;
 
 function CheckGearsCollision(Gear: PGear): PGearArray;
 var mx, my: LongInt;
-	i: Longword;
+    i: Longword;
 begin
 CheckGearsCollision:= @ga;
 ga.Count:= 0;
@@ -102,18 +102,18 @@
 my:= hwRound(Gear^.Y);
 
 for i:= 0 to Pred(Count) do
-	with cinfos[i] do
-		if (Gear <> cGear) and
-			(sqr(mx - x) + sqr(my - y) <= sqr(Radius + Gear^.Radius)) then
-				begin
-				ga.ar[ga.Count]:= cinfos[i].cGear;
-				inc(ga.Count)
-				end
+    with cinfos[i] do
+        if (Gear <> cGear) and
+            (sqr(mx - x) + sqr(my - y) <= sqr(Radius + Gear^.Radius)) then
+                begin
+                ga.ar[ga.Count]:= cinfos[i].cGear;
+                inc(ga.Count)
+                end
 end;
 
 function TestCollisionXwithGear(Gear: PGear; Dir: LongInt): boolean;
 var x, y, i: LongInt;
-	TestWord: LongWord;
+    TestWord: LongWord;
 begin
 if Gear^.IntersectGear <> nil then
    with Gear^ do
@@ -314,7 +314,7 @@
 
 procedure init_uCollisions;
 begin
-	Count:= 0;
+    Count:= 0;
 end;
 
 procedure free_uCollisions;
--- a/hedgewars/uConsole.pas	Sat Mar 06 10:54:24 2010 +0000
+++ b/hedgewars/uConsole.pas	Sat Mar 06 10:59:20 2010 +0000
@@ -102,33 +102,33 @@
 var Len: LongInt;
     done: boolean;
 begin
-	{$IFDEF DEBUGFILE}AddFileLog('Console write: ' + s);{$ENDIF}
-	Write(s);
-	done:= false;
-	
-	while not done do
-	begin
-		Len:= cLineWidth - Length(ConsoleLines[CurrLine].s);
-		SetLine(ConsoleLines[CurrLine], ConsoleLines[CurrLine].s + copy(s, 1, Len));
-		Delete(s, 1, Len);
-		if byte(ConsoleLines[CurrLine].s[0]) = cLineWidth then
-		begin
-			inc(CurrLine);
-			if CurrLine = cLinesCount then CurrLine:= 0;
-			PByte(@ConsoleLines[CurrLine].s)^:= 0
-		end;
-		done:= (Length(s) = 0);
-	end;
+    {$IFDEF DEBUGFILE}AddFileLog('Console write: ' + s);{$ENDIF}
+    Write(s);
+    done:= false;
+    
+    while not done do
+    begin
+        Len:= cLineWidth - Length(ConsoleLines[CurrLine].s);
+        SetLine(ConsoleLines[CurrLine], ConsoleLines[CurrLine].s + copy(s, 1, Len));
+        Delete(s, 1, Len);
+        if byte(ConsoleLines[CurrLine].s[0]) = cLineWidth then
+        begin
+            inc(CurrLine);
+            if CurrLine = cLinesCount then CurrLine:= 0;
+            PByte(@ConsoleLines[CurrLine].s)^:= 0
+        end;
+        done:= (Length(s) = 0);
+    end;
 end;
 
 procedure WriteLnToConsole(s: shortstring);
 begin
-	WriteToConsole(s);
-	WriteLn;
-	inc(CurrLine);
-	if CurrLine = cLinesCount then
-		CurrLine:= 0;
-	PByte(@ConsoleLines[CurrLine].s)^:= 0
+    WriteToConsole(s);
+    WriteLn;
+    inc(CurrLine);
+    if CurrLine = cLinesCount then
+        CurrLine:= 0;
+    PByte(@ConsoleLines[CurrLine].s)^:= 0
 end;
 
 procedure ParseCommand(CmdStr: shortstring; TrustedSource: boolean);
@@ -188,7 +188,7 @@
 
 function GetLastConsoleLine: shortstring;
 var valueStr: shortstring;
-	i: LongWord;
+    i: LongWord;
 begin
 i:= (CurrLine + cLinesCount - 2) mod cLinesCount;
 valueStr:= ConsoleLines[i].s;
@@ -214,105 +214,105 @@
 procedure init_uConsole;
 var i: LongInt;
 begin
-	CurrLine:= 0;
-	Variables:= nil;
-	isDeveloperMode:= true;
-	
-	// initConsole
-	cLineWidth:= cScreenWidth div 10;
-	if cLineWidth > 255 then
-		cLineWidth:= 255;
-	for i:= 0 to Pred(cLinesCount) do 
-		PByte(@ConsoleLines[i])^:= 0;
-	
-	RegisterVariable('proto'   , vtCommand, @chCheckProto   , true );
-	RegisterVariable('spectate', vtBoolean, @fastUntilLag   , false);
-	RegisterVariable('capture' , vtCommand, @chCapture      , true );
-	RegisterVariable('rotmask' , vtCommand, @chRotateMask   , true );
-	RegisterVariable('addteam' , vtCommand, @chAddTeam      , false);
-	RegisterVariable('addtrig' , vtCommand, @chAddTrigger   , false);
-	RegisterVariable('rdriven' , vtCommand, @chTeamLocal    , false);
-	RegisterVariable('map'     , vtCommand, @chSetMap       , false);
-	RegisterVariable('theme'   , vtCommand, @chSetTheme     , false);
-	RegisterVariable('seed'    , vtCommand, @chSetSeed      , false);
-	RegisterVariable('template_filter', vtLongInt, @cTemplateFilter, false);
-	RegisterVariable('delay'   , vtLongInt, @cInactDelay    , false);
-	RegisterVariable('casefreq', vtLongInt, @cCaseFactor    , false);
-	RegisterVariable('sd_turns', vtLongInt, @cSuddenDTurns  , false);
-	RegisterVariable('damagepct',vtLongInt, @cDamagePercent , false);
-	RegisterVariable('minedudpct',vtLongInt,@cMineDudPercent, false);
-	RegisterVariable('landadds', vtLongInt, @cLandAdditions , 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);
-	RegisterVariable('voicepack',vtCommand, @chVoicepack    , false);
-	RegisterVariable('grave'   , vtCommand, @chGrave        , false);
-	RegisterVariable('bind'    , vtCommand, @chBind         , true );
-	RegisterVariable('addhh'   , vtCommand, @chAddHH        , false);
-	RegisterVariable('hat'     , vtCommand, @chSetHat       , false);
-	RegisterVariable('hhcoords', vtCommand, @chSetHHCoords  , false);
-	RegisterVariable('ammstore', vtCommand, @chAddAmmoStore , false);
-	RegisterVariable('quit'    , vtCommand, @chQuit         , true );
-	RegisterVariable('confirm' , vtCommand, @chConfirm      , true );
-	RegisterVariable('+speedup', vtCommand, @chSpeedup_p    , true );
-	RegisterVariable('-speedup', vtCommand, @chSpeedup_m    , true );
-	RegisterVariable('zoomin'  , vtCommand, @chZoomIn       , true );
-	RegisterVariable('zoomout' , vtCommand, @chZoomOut      , true );
-	RegisterVariable('zoomreset',vtCommand, @chZoomReset    , true );
-	RegisterVariable('skip'    , vtCommand, @chSkip         , false);
-	RegisterVariable('history' , vtCommand, @chHistory      , true );
-	RegisterVariable('chat'    , vtCommand, @chChat         , true );
-	RegisterVariable('newgrave', vtCommand, @chNewGrave     , false);
-	RegisterVariable('say'     , vtCommand, @chSay          , true );
-	RegisterVariable('hogsay'  , vtCommand, @chHogSay       , true );
-	RegisterVariable('team'    , vtCommand, @chTeamSay      , true );
-	RegisterVariable('ammomenu', vtCommand, @chAmmoMenu     , true);
-	RegisterVariable('+precise', vtCommand, @chPrecise_p    , false);
-	RegisterVariable('-precise', vtCommand, @chPrecise_m    , false);
-	RegisterVariable('+left'   , vtCommand, @chLeft_p       , false);
-	RegisterVariable('-left'   , vtCommand, @chLeft_m       , false);
-	RegisterVariable('+right'  , vtCommand, @chRight_p      , false);
-	RegisterVariable('-right'  , vtCommand, @chRight_m      , false);
-	RegisterVariable('+up'     , vtCommand, @chUp_p         , false);
-	RegisterVariable('-up'     , vtCommand, @chUp_m         , false);
-	RegisterVariable('+down'   , vtCommand, @chDown_p       , false);
-	RegisterVariable('-down'   , vtCommand, @chDown_m       , false);
-	RegisterVariable('+attack' , vtCommand, @chAttack_p     , false);
-	RegisterVariable('-attack' , vtCommand, @chAttack_m     , false);
-	RegisterVariable('switch'  , vtCommand, @chSwitch       , false);
-	RegisterVariable('nextturn', vtCommand, @chNextTurn     , false);
-	RegisterVariable('timer'   , vtCommand, @chTimer        , false);
-	RegisterVariable('taunt'   , vtCommand, @chTaunt        , false);
-	RegisterVariable('setweap' , vtCommand, @chSetWeapon    , false);
-	RegisterVariable('slot'    , vtCommand, @chSlot         , false);
-	RegisterVariable('put'     , vtCommand, @chPut          , false);
-	RegisterVariable('ljump'   , vtCommand, @chLJump        , false);
-	RegisterVariable('hjump'   , vtCommand, @chHJump        , false);
-	RegisterVariable('fullscr' , vtCommand, @chFullScr      , true );
-	RegisterVariable('+volup'  , vtCommand, @chVol_p        , true );
-	RegisterVariable('-volup'  , vtCommand, @chVol_m        , true );
-	RegisterVariable('+voldown', vtCommand, @chVol_m        , true );
-	RegisterVariable('-voldown', vtCommand, @chVol_p        , true );
-	RegisterVariable('findhh'  , vtCommand, @chFindhh       , true );
-	RegisterVariable('pause'   , vtCommand, @chPause        , true );
-	RegisterVariable('+cur_u'  , vtCommand, @chCurU_p       , true );
-	RegisterVariable('-cur_u'  , vtCommand, @chCurU_m       , true );
-	RegisterVariable('+cur_d'  , vtCommand, @chCurD_p       , true );
-	RegisterVariable('-cur_d'  , vtCommand, @chCurD_m       , true );
-	RegisterVariable('+cur_l'  , vtCommand, @chCurL_p       , true );
-	RegisterVariable('-cur_l'  , vtCommand, @chCurL_m       , true );
-	RegisterVariable('+cur_r'  , vtCommand, @chCurR_p       , true );
-	RegisterVariable('-cur_r'  , vtCommand, @chCurR_m       , true );
-	RegisterVariable('flag'    , vtCommand, @chFlag         , false);
-	RegisterVariable('script'  , vtCommand, @chScript       , false);
+    CurrLine:= 0;
+    Variables:= nil;
+    isDeveloperMode:= true;
+    
+    // initConsole
+    cLineWidth:= cScreenWidth div 10;
+    if cLineWidth > 255 then
+        cLineWidth:= 255;
+    for i:= 0 to Pred(cLinesCount) do 
+        PByte(@ConsoleLines[i])^:= 0;
+    
+    RegisterVariable('proto'   , vtCommand, @chCheckProto   , true );
+    RegisterVariable('spectate', vtBoolean, @fastUntilLag   , false);
+    RegisterVariable('capture' , vtCommand, @chCapture      , true );
+    RegisterVariable('rotmask' , vtCommand, @chRotateMask   , true );
+    RegisterVariable('addteam' , vtCommand, @chAddTeam      , false);
+    RegisterVariable('addtrig' , vtCommand, @chAddTrigger   , false);
+    RegisterVariable('rdriven' , vtCommand, @chTeamLocal    , false);
+    RegisterVariable('map'     , vtCommand, @chSetMap       , false);
+    RegisterVariable('theme'   , vtCommand, @chSetTheme     , false);
+    RegisterVariable('seed'    , vtCommand, @chSetSeed      , false);
+    RegisterVariable('template_filter', vtLongInt, @cTemplateFilter, false);
+    RegisterVariable('delay'   , vtLongInt, @cInactDelay    , false);
+    RegisterVariable('casefreq', vtLongInt, @cCaseFactor    , false);
+    RegisterVariable('sd_turns', vtLongInt, @cSuddenDTurns  , false);
+    RegisterVariable('damagepct',vtLongInt, @cDamagePercent , false);
+    RegisterVariable('minedudpct',vtLongInt,@cMineDudPercent, false);
+    RegisterVariable('landadds', vtLongInt, @cLandAdditions , 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);
+    RegisterVariable('voicepack',vtCommand, @chVoicepack    , false);
+    RegisterVariable('grave'   , vtCommand, @chGrave        , false);
+    RegisterVariable('bind'    , vtCommand, @chBind         , true );
+    RegisterVariable('addhh'   , vtCommand, @chAddHH        , false);
+    RegisterVariable('hat'     , vtCommand, @chSetHat       , false);
+    RegisterVariable('hhcoords', vtCommand, @chSetHHCoords  , false);
+    RegisterVariable('ammstore', vtCommand, @chAddAmmoStore , false);
+    RegisterVariable('quit'    , vtCommand, @chQuit         , true );
+    RegisterVariable('confirm' , vtCommand, @chConfirm      , true );
+    RegisterVariable('+speedup', vtCommand, @chSpeedup_p    , true );
+    RegisterVariable('-speedup', vtCommand, @chSpeedup_m    , true );
+    RegisterVariable('zoomin'  , vtCommand, @chZoomIn       , true );
+    RegisterVariable('zoomout' , vtCommand, @chZoomOut      , true );
+    RegisterVariable('zoomreset',vtCommand, @chZoomReset    , true );
+    RegisterVariable('skip'    , vtCommand, @chSkip         , false);
+    RegisterVariable('history' , vtCommand, @chHistory      , true );
+    RegisterVariable('chat'    , vtCommand, @chChat         , true );
+    RegisterVariable('newgrave', vtCommand, @chNewGrave     , false);
+    RegisterVariable('say'     , vtCommand, @chSay          , true );
+    RegisterVariable('hogsay'  , vtCommand, @chHogSay       , true );
+    RegisterVariable('team'    , vtCommand, @chTeamSay      , true );
+    RegisterVariable('ammomenu', vtCommand, @chAmmoMenu     , true);
+    RegisterVariable('+precise', vtCommand, @chPrecise_p    , false);
+    RegisterVariable('-precise', vtCommand, @chPrecise_m    , false);
+    RegisterVariable('+left'   , vtCommand, @chLeft_p       , false);
+    RegisterVariable('-left'   , vtCommand, @chLeft_m       , false);
+    RegisterVariable('+right'  , vtCommand, @chRight_p      , false);
+    RegisterVariable('-right'  , vtCommand, @chRight_m      , false);
+    RegisterVariable('+up'     , vtCommand, @chUp_p         , false);
+    RegisterVariable('-up'     , vtCommand, @chUp_m         , false);
+    RegisterVariable('+down'   , vtCommand, @chDown_p       , false);
+    RegisterVariable('-down'   , vtCommand, @chDown_m       , false);
+    RegisterVariable('+attack' , vtCommand, @chAttack_p     , false);
+    RegisterVariable('-attack' , vtCommand, @chAttack_m     , false);
+    RegisterVariable('switch'  , vtCommand, @chSwitch       , false);
+    RegisterVariable('nextturn', vtCommand, @chNextTurn     , false);
+    RegisterVariable('timer'   , vtCommand, @chTimer        , false);
+    RegisterVariable('taunt'   , vtCommand, @chTaunt        , false);
+    RegisterVariable('setweap' , vtCommand, @chSetWeapon    , false);
+    RegisterVariable('slot'    , vtCommand, @chSlot         , false);
+    RegisterVariable('put'     , vtCommand, @chPut          , false);
+    RegisterVariable('ljump'   , vtCommand, @chLJump        , false);
+    RegisterVariable('hjump'   , vtCommand, @chHJump        , false);
+    RegisterVariable('fullscr' , vtCommand, @chFullScr      , true );
+    RegisterVariable('+volup'  , vtCommand, @chVol_p        , true );
+    RegisterVariable('-volup'  , vtCommand, @chVol_m        , true );
+    RegisterVariable('+voldown', vtCommand, @chVol_m        , true );
+    RegisterVariable('-voldown', vtCommand, @chVol_p        , true );
+    RegisterVariable('findhh'  , vtCommand, @chFindhh       , true );
+    RegisterVariable('pause'   , vtCommand, @chPause        , true );
+    RegisterVariable('+cur_u'  , vtCommand, @chCurU_p       , true );
+    RegisterVariable('-cur_u'  , vtCommand, @chCurU_m       , true );
+    RegisterVariable('+cur_d'  , vtCommand, @chCurD_p       , true );
+    RegisterVariable('-cur_d'  , vtCommand, @chCurD_m       , true );
+    RegisterVariable('+cur_l'  , vtCommand, @chCurL_p       , true );
+    RegisterVariable('-cur_l'  , vtCommand, @chCurL_m       , true );
+    RegisterVariable('+cur_r'  , vtCommand, @chCurR_p       , true );
+    RegisterVariable('-cur_r'  , vtCommand, @chCurR_m       , true );
+    RegisterVariable('flag'    , vtCommand, @chFlag         , false);
+    RegisterVariable('script'  , vtCommand, @chScript       , false);
 end;
 
 procedure free_uConsole;
 begin
-	FreeVariablesList();
+    FreeVariablesList();
 end;
 
 end.
--- a/hedgewars/uConsts.pas	Sat Mar 06 10:54:24 2010 +0000
+++ b/hedgewars/uConsts.pas	Sat Mar 06 10:59:20 2010 +0000
@@ -21,11 +21,11 @@
 unit uConsts;
 interface
 
-uses	SDLh, uFloat, uLocale,
+uses    SDLh, uFloat, uLocale,
 {$IFDEF GLES11}
-	gles11;
+    gles11;
 {$ELSE}
-	GL;
+    GL;
 {$ENDIF}
 
 
@@ -35,354 +35,354 @@
 // in freepascal you may actually use var for the same purpose
 
 type
-	HwColor4f = record
-		r, g, b, a: byte
-		end;
-		
-	TGameState = (gsLandGen, gsStart, gsGame, gsChat, gsConfirm, gsExit);
+    HwColor4f = record
+        r, g, b, a: byte
+        end;
+        
+    TGameState = (gsLandGen, gsStart, gsGame, gsChat, gsConfirm, gsExit);
 
-	TGameType = (gmtLocal, gmtDemo, gmtNet, gmtSave, gmtLandPreview, gmtSyntax);
+    TGameType = (gmtLocal, gmtDemo, gmtNet, gmtSave, gmtLandPreview, gmtSyntax);
 
-	TPathType = (ptNone, ptData, ptGraphics, ptThemes, ptCurrTheme, ptTeams, ptMaps,
-			ptMapCurrent, ptDemos, ptSounds, ptGraves, ptFonts, ptForts,
-			ptLocale, ptAmmoMenu, ptHedgehog, ptVoices, ptHats, ptFlags);
+    TPathType = (ptNone, ptData, ptGraphics, ptThemes, ptCurrTheme, ptTeams, ptMaps,
+            ptMapCurrent, ptDemos, ptSounds, ptGraves, ptFonts, ptForts,
+            ptLocale, ptAmmoMenu, ptHedgehog, ptVoices, ptHats, ptFlags);
 
-	TSprite = (sprWater, sprCloud, sprBomb, sprBigDigit, sprFrame,
-			sprLag, sprArrow, sprGrenade, sprTargetP, sprUFO,
-			sprSmokeTrace, sprRopeHook, sprExplosion50, sprMineOff,
-			sprMineOn, sprMineDead, sprCase, sprFAid, sprDynamite, sprPower,
-			sprClusterBomb, sprClusterParticle, sprFlame, sprHorizont,
-			sprHorizontL, sprHorizontR, sprSky, sprSkyL,
-			sprSkyR, sprAMBorders, sprAMSlot, sprAMSlotName, sprAMAmmos,
-			sprAMSlotKeys, sprAMSelection, sprFinger, sprAirBomb,
-			sprAirplane, sprAmAirplane, sprAmGirder, sprHHTelepMask,
-			sprSwitch, sprParachute, sprTarget, sprRopeNode,
-			sprQuestion, sprPowerBar, sprWindBar, sprWindL, sprWindR,
-			sprFlake, sprHandRope, sprHandBazooka, sprHandShotgun,
-			sprHandDEagle, sprHandAirAttack, sprHandBaseball, sprPHammer,
-			sprHandBlowTorch, sprBlowTorch, sprTeleport, sprHHDeath,
-			sprShotgun, sprDEagle, sprHHIdle, sprMortar, sprTurnsLeft,
-			sprKamikaze, sprWhip, sprKowtow, sprSad, sprWave,
-			sprHurrah, sprLemonade, sprShrug, sprJuggle, sprExplPart, sprExplPart2,
-			sprCakeWalk, sprCakeDown, sprAMAmmosBW, sprWatermelon,
-			sprEvilTrace, sprHellishBomb, sprSeduction, sprDress,
-			sprCensored, sprDrill, sprHandDrill, sprHandBallgun, sprBalls,
-			sprPlane, sprHandPlane, sprUtility, sprInvulnerable, sprVampiric, sprGirder,
-			sprSpeechCorner, sprSpeechEdge, sprSpeechTail,
-			sprThoughtCorner, sprThoughtEdge, sprThoughtTail,
-			sprShoutCorner, sprShoutEdge, sprShoutTail,
-			sprSniperRifle, sprBubbles, sprJetpack, sprHealth, sprHandMolotov, sprMolotov,
-			sprSmoke, sprSmokeWhite, sprShell, sprDust, sprExplosives, sprExplosivesRoll, sprAmTeleport);
+    TSprite = (sprWater, sprCloud, sprBomb, sprBigDigit, sprFrame,
+            sprLag, sprArrow, sprGrenade, sprTargetP, sprUFO,
+            sprSmokeTrace, sprRopeHook, sprExplosion50, sprMineOff,
+            sprMineOn, sprMineDead, sprCase, sprFAid, sprDynamite, sprPower,
+            sprClusterBomb, sprClusterParticle, sprFlame, sprHorizont,
+            sprHorizontL, sprHorizontR, sprSky, sprSkyL,
+            sprSkyR, sprAMBorders, sprAMSlot, sprAMSlotName, sprAMAmmos,
+            sprAMSlotKeys, sprAMSelection, sprFinger, sprAirBomb,
+            sprAirplane, sprAmAirplane, sprAmGirder, sprHHTelepMask,
+            sprSwitch, sprParachute, sprTarget, sprRopeNode,
+            sprQuestion, sprPowerBar, sprWindBar, sprWindL, sprWindR,
+            sprFlake, sprHandRope, sprHandBazooka, sprHandShotgun,
+            sprHandDEagle, sprHandAirAttack, sprHandBaseball, sprPHammer,
+            sprHandBlowTorch, sprBlowTorch, sprTeleport, sprHHDeath,
+            sprShotgun, sprDEagle, sprHHIdle, sprMortar, sprTurnsLeft,
+            sprKamikaze, sprWhip, sprKowtow, sprSad, sprWave,
+            sprHurrah, sprLemonade, sprShrug, sprJuggle, sprExplPart, sprExplPart2,
+            sprCakeWalk, sprCakeDown, sprAMAmmosBW, sprWatermelon,
+            sprEvilTrace, sprHellishBomb, sprSeduction, sprDress,
+            sprCensored, sprDrill, sprHandDrill, sprHandBallgun, sprBalls,
+            sprPlane, sprHandPlane, sprUtility, sprInvulnerable, sprVampiric, sprGirder,
+            sprSpeechCorner, sprSpeechEdge, sprSpeechTail,
+            sprThoughtCorner, sprThoughtEdge, sprThoughtTail,
+            sprShoutCorner, sprShoutEdge, sprShoutTail,
+            sprSniperRifle, sprBubbles, sprJetpack, sprHealth, sprHandMolotov, sprMolotov,
+            sprSmoke, sprSmokeWhite, sprShell, sprDust, sprExplosives, sprExplosivesRoll, sprAmTeleport);
 
-	TGearType = (gtAmmo_Bomb, gtHedgehog, gtAmmo_Grenade, gtHealthTag, // 3
-			gtGrave, gtUFO, gtShotgunShot, gtPickHammer, gtRope, // 8
-			gtSmokeTrace, gtExplosion, gtMine, gtCase, gtDEagleShot, gtDynamite, // 14
-			gtClusterBomb, gtCluster, gtShover, gtFlame, // 18
-			gtFirePunch, gtATStartGame, gtATSmoothWindCh, gtATFinishGame, // 24
-			gtParachute, gtAirAttack, gtAirBomb, gtBlowTorch, gtGirder, // 27
-			gtTeleport, gtSwitcher, gtTarget, gtMortar, // 31
-			gtWhip, gtKamikaze, gtCake, gtSeduction, gtWatermelon, gtMelonPiece, // 37
-			gtHellishBomb, gtEvilTrace, gtWaterUp, gtDrill, gtBallGun, gtBall,gtRCPlane,
-			gtSniperRifleShot, gtJetpack, gtMolotov, gtExplosives);
+    TGearType = (gtAmmo_Bomb, gtHedgehog, gtAmmo_Grenade, gtHealthTag, // 3
+            gtGrave, gtUFO, gtShotgunShot, gtPickHammer, gtRope, // 8
+            gtSmokeTrace, gtExplosion, gtMine, gtCase, gtDEagleShot, gtDynamite, // 14
+            gtClusterBomb, gtCluster, gtShover, gtFlame, // 18
+            gtFirePunch, gtATStartGame, gtATSmoothWindCh, gtATFinishGame, // 24
+            gtParachute, gtAirAttack, gtAirBomb, gtBlowTorch, gtGirder, // 27
+            gtTeleport, gtSwitcher, gtTarget, gtMortar, // 31
+            gtWhip, gtKamikaze, gtCake, gtSeduction, gtWatermelon, gtMelonPiece, // 37
+            gtHellishBomb, gtEvilTrace, gtWaterUp, gtDrill, gtBallGun, gtBall,gtRCPlane,
+            gtSniperRifleShot, gtJetpack, gtMolotov, gtExplosives);
 
-	TVisualGearType = (vgtFlake, vgtCloud, vgtExplPart, vgtExplPart2, vgtFire,
-			vgtSmallDamageTag, vgtTeamHealthSorter, vgtSpeechBubble, vgtBubble,
-			vgtSteam, vgtSmoke, vgtSmokeWhite, vgtHealth, vgtShell, vgtDust);
+    TVisualGearType = (vgtFlake, vgtCloud, vgtExplPart, vgtExplPart2, vgtFire,
+            vgtSmallDamageTag, vgtTeamHealthSorter, vgtSpeechBubble, vgtBubble,
+            vgtSteam, vgtSmoke, vgtSmokeWhite, vgtHealth, vgtShell, vgtDust);
 
-	TGearsType = set of TGearType;
+    TGearsType = set of TGearType;
 
-	TSound = (sndNone,
-			sndGrenadeImpact, sndExplosion, sndThrowPowerUp, sndThrowRelease,
-			sndSplash, sndShotgunReload, sndShotgunFire, sndGraveImpact,
-			sndMineTick, sndPickhammer, sndGun, sndUFO, sndJump1, sndJump2,
-			sndJump3, sndYesSir, sndLaugh, sndIllGetYou, sndIncoming,
-			sndMissed, sndStupid, sndFirstBlood, sndBoring, sndByeBye,
-			sndSameTeam, sndNutter, sndReinforce, sndTraitor, sndRegret,
-			sndEnemyDown, sndCoward, sndHurry, sndWatchIt, sndKamikaze,
-			sndCake, sndOw1, sndOw4, sndFirePunch1, sndFirePunch2,
-			sndFirePunch3, sndFirePunch4, sndFirePunch5, sndFirePunch6,
-			sndMelon, sndHellish, sndYoohoo, sndRCPlane, sndWhipCrack,
-			sndRideOfTheValkyries, sndDenied, sndPlaced, sndBaseballBat,
-			sndVaporize, sndWarp, sndSuddenDeath, sndMortar, sndShutter,
-			sndHomerun, sndMolotov, sndCover, sndUhOh, sndOops,
-			sndNooo, sndHello, sndRopeShot, sndRopeAttach, sndRopeRelease,
-			sndSwitchHog, sndVictory, sndSniperReload, sndSteps, sndLowGravity);
+    TSound = (sndNone,
+            sndGrenadeImpact, sndExplosion, sndThrowPowerUp, sndThrowRelease,
+            sndSplash, sndShotgunReload, sndShotgunFire, sndGraveImpact,
+            sndMineTick, sndPickhammer, sndGun, sndUFO, sndJump1, sndJump2,
+            sndJump3, sndYesSir, sndLaugh, sndIllGetYou, sndIncoming,
+            sndMissed, sndStupid, sndFirstBlood, sndBoring, sndByeBye,
+            sndSameTeam, sndNutter, sndReinforce, sndTraitor, sndRegret,
+            sndEnemyDown, sndCoward, sndHurry, sndWatchIt, sndKamikaze,
+            sndCake, sndOw1, sndOw4, sndFirePunch1, sndFirePunch2,
+            sndFirePunch3, sndFirePunch4, sndFirePunch5, sndFirePunch6,
+            sndMelon, sndHellish, sndYoohoo, sndRCPlane, sndWhipCrack,
+            sndRideOfTheValkyries, sndDenied, sndPlaced, sndBaseballBat,
+            sndVaporize, sndWarp, sndSuddenDeath, sndMortar, sndShutter,
+            sndHomerun, sndMolotov, sndCover, sndUhOh, sndOops,
+            sndNooo, sndHello, sndRopeShot, sndRopeAttach, sndRopeRelease,
+            sndSwitchHog, sndVictory, sndSniperReload, sndSteps, sndLowGravity);
 
-	TAmmoType  = (amNothing, amGrenade, amClusterBomb, amBazooka, amUFO, amShotgun, amPickHammer,
-			amSkip, amRope, amMine, amDEagle, amDynamite, amFirePunch, amWhip,
-			amBaseballBat, amParachute, amAirAttack, amMineStrike, amBlowTorch,
-			amGirder, amTeleport, amSwitch, amMortar, amKamikaze, amCake,
-			amSeduction, amWatermelon, amHellishBomb, amNapalm, amDrill, amBallgun,
-			amRCPlane, amLowGravity, amExtraDamage, amInvulnerable, amExtraTime,
-			amLaserSight, amVampiric, amSniperRifle, amJetpack, amMolotov);
+    TAmmoType  = (amNothing, amGrenade, amClusterBomb, amBazooka, amUFO, amShotgun, amPickHammer,
+            amSkip, amRope, amMine, amDEagle, amDynamite, amFirePunch, amWhip,
+            amBaseballBat, amParachute, amAirAttack, amMineStrike, amBlowTorch,
+            amGirder, amTeleport, amSwitch, amMortar, amKamikaze, amCake,
+            amSeduction, amWatermelon, amHellishBomb, amNapalm, amDrill, amBallgun,
+            amRCPlane, amLowGravity, amExtraDamage, amInvulnerable, amExtraTime,
+            amLaserSight, amVampiric, amSniperRifle, amJetpack, amMolotov);
 
-	THWFont = (fnt16, fntBig, fntSmall, CJKfnt16, CJKfntBig, CJKfntSmall);
+    THWFont = (fnt16, fntBig, fntSmall, CJKfnt16, CJKfntBig, CJKfntSmall);
 
-	TCapGroup = (capgrpGameState, capgrpAmmoinfo, capgrpVolume,
-			capgrpMessage, capgrpAmmostate);
+    TCapGroup = (capgrpGameState, capgrpAmmoinfo, capgrpVolume,
+            capgrpMessage, capgrpAmmostate);
 
-	TStatInfoType = (siGameResult, siMaxStepDamage, siMaxStepKills, siKilledHHs,
-			siClanHealth);
+    TStatInfoType = (siGameResult, siMaxStepDamage, siMaxStepKills, siKilledHHs,
+            siClanHealth);
 
-	TWave = (waveRollup, waveSad, waveWave, waveHurrah, waveLemonade, waveShrug, waveJuggle);
+    TWave = (waveRollup, waveSad, waveWave, waveHurrah, waveLemonade, waveShrug, waveJuggle);
 
-	THHFont = record
-			Handle: PTTF_Font;
-			Height: LongInt;
-			style: LongInt;
-			Name: string[21];
-			end;
+    THHFont = record
+            Handle: PTTF_Font;
+            Height: LongInt;
+            style: LongInt;
+            Name: string[21];
+            end;
 
-	PAmmo = ^TAmmo;
-	TAmmo = record
-			Propz: LongWord;
-			Count: LongWord;
+    PAmmo = ^TAmmo;
+    TAmmo = record
+            Propz: LongWord;
+            Count: LongWord;
 (* Using for place hedgehogs mode, but for any other situation where the initial count would be needed I guess.
 For example, say, a mode where the weaponset is reset each turn, or on sudden death *)
-			InitialCount: LongWord; 
-			NumPerTurn: LongWord;
-			Timer: LongWord;
-			Pos: LongWord;
-			AmmoType: TAmmoType;
-			AttackVoice: TSound;
-			end;
+            InitialCount: LongWord; 
+            NumPerTurn: LongWord;
+            Timer: LongWord;
+            Pos: LongWord;
+            AmmoType: TAmmoType;
+            AttackVoice: TSound;
+            end;
 
-	TVertex2f = record
-		X, Y: GLfloat;
-		end;
+    TVertex2f = record
+        X, Y: GLfloat;
+        end;
 
-	TVertex2i = record
-		X, Y: GLint;
-		end;
+    TVertex2i = record
+        X, Y: GLint;
+        end;
 
-	PTexture = ^TTexture;
-	TTexture = record
-			id: GLuint;
-			w, h: LongInt;
-			rx, ry: GLfloat;
-			vb, tb: array [0..3] of TVertex2f;
+    PTexture = ^TTexture;
+    TTexture = record
+            id: GLuint;
+            w, h: LongInt;
+            rx, ry: GLfloat;
+            vb, tb: array [0..3] of TVertex2f;
             PrevTexture, NextTexture: PTexture;
-			end;
+            end;
 
 const
-	// message constants
-	errmsgCreateSurface   = 'Error creating SDL surface';
-	errmsgTransparentSet  = 'Error setting transparent color';
-	errmsgUnknownCommand  = 'Unknown command';
-	errmsgUnknownVariable = 'Unknown variable';
-	errmsgIncorrectUse    = 'Incorrect use';
-	errmsgShouldntRun     = 'This program shouldn''t be run manually';
-	errmsgWrongNumber     = 'Wrong parameters number';
-	errmsgSlotsOverflow   = 'CurSlot overflowed';
+    // message constants
+    errmsgCreateSurface   = 'Error creating SDL surface';
+    errmsgTransparentSet  = 'Error setting transparent color';
+    errmsgUnknownCommand  = 'Unknown command';
+    errmsgUnknownVariable = 'Unknown variable';
+    errmsgIncorrectUse    = 'Incorrect use';
+    errmsgShouldntRun     = 'This program shouldn''t be run manually';
+    errmsgWrongNumber     = 'Wrong parameters number';
+    errmsgSlotsOverflow   = 'CurSlot overflowed';
 
-	msgLoading           = 'Loading ';
-	msgOK                = 'ok';
-	msgFailed            = 'failed';
-	msgFailedSize        = 'failed due to size';
-	msgGettingConfig     = 'Getting game config...';
+    msgLoading           = 'Loading ';
+    msgOK                = 'ok';
+    msgFailed            = 'failed';
+    msgFailedSize        = 'failed due to size';
+    msgGettingConfig     = 'Getting game config...';
 
-	// color constants
-	cWhiteColorChannels	: TSDL_Color = (r:$FF; g:$FF; b:$FF; unused:$FF);
-	cNearBlackColorChannels	: TSDL_Color = (r:$00; g:$00; b:$10; unused:$FF);
+    // color constants
+    cWhiteColorChannels : TSDL_Color = (r:$FF; g:$FF; b:$FF; unused:$FF);
+    cNearBlackColorChannels : TSDL_Color = (r:$00; g:$00; b:$10; unused:$FF);
 
-	cWhiteColor		      : Longword = $FFFFFFFF;
-	cYellowColor		  : Longword = $FFFFFF00;
-	cNearBlackColor       : Longword = $FF000010;
-	cExplosionBorderColor : LongWord = $FF808080;
+    cWhiteColor           : Longword = $FFFFFFFF;
+    cYellowColor          : Longword = $FFFFFF00;
+    cNearBlackColor       : Longword = $FF000010;
+    cExplosionBorderColor : LongWord = $FF808080;
 
 {$WARNINGS OFF}
-	cAirPlaneSpeed: hwFloat = (isNegative: false; QWordValue:   3006477107); // 1.4
-	cBombsSpeed   : hwFloat = (isNegative: false; QWordValue:    429496729);
+    cAirPlaneSpeed: hwFloat = (isNegative: false; QWordValue:   3006477107); // 1.4
+    cBombsSpeed   : hwFloat = (isNegative: false; QWordValue:    429496729);
 {$WARNINGS ON}
 
-	// image flags (for LoadImage())
-	ifNone        = $00000000;	// nothing special
-	ifAlpha       = $00000001;	// use alpha channel (unused right now?)
-	ifCritical    = $00000002;	// image is critical for gameplay (exit game if unable to load)
-	ifTransparent = $00000004;	// image uses transparent pixels (color keying)
-	ifIgnoreCaps  = $00000008;	// ignore hardware capabilities when loading (i.e. image will not be drawn using OpenGL)
-	ifLowRes      = $00000010;	// try loading a low resolution image when it is critical
+    // image flags (for LoadImage())
+    ifNone        = $00000000;  // nothing special
+    ifAlpha       = $00000001;  // use alpha channel (unused right now?)
+    ifCritical    = $00000002;  // image is critical for gameplay (exit game if unable to load)
+    ifTransparent = $00000004;  // image uses transparent pixels (color keying)
+    ifIgnoreCaps  = $00000008;  // ignore hardware capabilities when loading (i.e. image will not be drawn using OpenGL)
+    ifLowRes      = $00000010;  // try loading a low resolution image when it is critical
 
-	{*  REFERENCE
+    {*  REFERENCE
       4096 -> $FFFFF000
       2048 -> $FFFFF800
       1024 -> $FFFFFC00
        512 -> $FFFFFE00  *}
 
 {$IFDEF LOWRES}
-	// default for iphone pre 3gs
-	LAND_WIDTH  = 2048;
-	LAND_HEIGHT = 1024;
-	LAND_WIDTH_MASK  = $FFFFF800;
-	LAND_HEIGHT_MASK = $FFFFFC00;
+    // default for iphone pre 3gs
+    LAND_WIDTH  = 2048;
+    LAND_HEIGHT = 1024;
+    LAND_WIDTH_MASK  = $FFFFF800;
+    LAND_HEIGHT_MASK = $FFFFFC00;
 {$ELSE}
-	LAND_WIDTH  = 4096;
-	LAND_HEIGHT = 2048;
-	LAND_WIDTH_MASK  = $FFFFF000;
-	LAND_HEIGHT_MASK = $FFFFF800;
+    LAND_WIDTH  = 4096;
+    LAND_HEIGHT = 2048;
+    LAND_WIDTH_MASK  = $FFFFF000;
+    LAND_HEIGHT_MASK = $FFFFF800;
 {$ENDIF}
 
-	COLOR_LAND           = $FFFF;  // white
-	COLOR_INDESTRUCTIBLE = $88FF;  // red
-	COLOR_OBJECT         = $44FF;  // no idea
+    COLOR_LAND           = $FFFF;  // white
+    COLOR_INDESTRUCTIBLE = $88FF;  // red
+    COLOR_OBJECT         = $44FF;  // no idea
 
-	cMaxPower     = 1500;
-	cMaxAngle     = 2048;
-	cPowerDivisor = 1500;
+    cMaxPower     = 1500;
+    cMaxAngle     = 2048;
+    cPowerDivisor = 1500;
 
-	MAXNAMELEN = 192;
-	
-	// some opengl headers do not have these macros
-	GL_BGR		 = $80E0;
-	GL_BGRA		 = $80E1;
-	GL_CLAMP_TO_EDGE = $812F;
+    MAXNAMELEN = 192;
+    
+    // some opengl headers do not have these macros
+    GL_BGR       = $80E0;
+    GL_BGRA      = $80E1;
+    GL_CLAMP_TO_EDGE = $812F;
 
-	cSendCursorPosTime	: LongWord = 50;
-	cVisibleWater		: LongInt = 128;
-	cCursorEdgesDist	: LongInt = 100;
-	cTeamHealthWidth	: LongInt = 128;
-	cWaterOpacity		: byte = $80;
+    cSendCursorPosTime  : LongWord = 50;
+    cVisibleWater       : LongInt = 128;
+    cCursorEdgesDist    : LongInt = 100;
+    cTeamHealthWidth    : LongInt = 128;
+    cWaterOpacity       : byte = $80;
 
-	cifRandomize = $00000001;
-	cifTheme     = $00000002;
-	cifMap       = $00000002; // either theme or map (or map+theme)
-	cifAllInited = cifRandomize or cifTheme or cifMap;
+    cifRandomize = $00000001;
+    cifTheme     = $00000002;
+    cifMap       = $00000002; // either theme or map (or map+theme)
+    cifAllInited = cifRandomize or cifTheme or cifMap;
 
-	cTransparentColor: Longword = $00000000;
+    cTransparentColor: Longword = $00000000;
 
-	cMaxTeams        = 6;
-	cMaxHHIndex      = 7;
-	cMaxHHs          = 48;
-	cMaxSpawnPoints  = 1024;
+    cMaxTeams        = 6;
+    cMaxHHIndex      = 7;
+    cMaxHHs          = 48;
+    cMaxSpawnPoints  = 1024;
 
-	cMaxEdgePoints = 16384;
+    cMaxEdgePoints = 16384;
 
-	cHHRadius = 9;
-	cHHStepTicks = 29;
+    cHHRadius = 9;
+    cHHStepTicks = 29;
 
-	cUsualZ = 500;
-	cSmokeZ = 499;
-	cHHZ = 1000;
-	cCurrHHZ = Succ(cHHZ);
-	cOnHHZ = 2000;
+    cUsualZ = 500;
+    cSmokeZ = 499;
+    cHHZ = 1000;
+    cCurrHHZ = Succ(cHHZ);
+    cOnHHZ = 2000;
 
-	cBarrelHealth = 60;
-	cShotgunRadius = 22;
-	cBlowTorchC    = 6;
+    cBarrelHealth = 60;
+    cShotgunRadius = 22;
+    cBlowTorchC    = 6;
 
-	cKeyMaxIndex = 1023;
+    cKeyMaxIndex = 1023;
 
 {$IFDEF IPHONEOS}
-	cMaxCaptions = 3;
+    cMaxCaptions = 3;
 {$ELSE}
-	cMaxCaptions = 4;
+    cMaxCaptions = 4;
 {$ENDIF}
 
-	cSendEmptyPacketTime = 1000;
+    cSendEmptyPacketTime = 1000;
 
-	// from uTriggers
-	trigTurns = $80000001;
+    // from uTriggers
+    trigTurns = $80000001;
 
-	// Training Flags
-	tfNone          = $00000000;
-	tfTimeTrial     = $00000001;
-	tfRCPlane       = $00000002;
-	tfSpawnTargets  = $00000004;
-	tfIgnoreDelays  = $00000008;
-	tfTargetRespawn = $00000010;
-	
-	gfAny            = $FFFFFFFF;
-	gfForts          = $00000001;
-	gfMultiWeapon    = $00000002;
-	gfSolidLand      = $00000004;
-	gfBorder         = $00000008;
-	gfDivideTeams    = $00000010;
-	gfLowGravity     = $00000020;
-	gfLaserSight     = $00000040;
-	gfInvulnerable   = $00000080;
-	gfMines          = $00000100;
-	gfVampiric       = $00000200;
-	gfKarma          = $00000400;
-	gfArtillery      = $00000800;
-	gfOneClanMode    = $00001000;
-	gfRandomOrder    = $00002000;
-	gfKing           = $00004000;
-	gfPlaceHog       = $00008000;
-	gfSharedAmmo     = $00010000;
-	gfDisableGirders = $00020000;
-	gfExplosives     = $00040000;
-	// NOTE: When adding new game flags, ask yourself
-	// if a "game start notice" would be useful. If so,
-	// add one in uWorld.pas - look for "AddGoal".
+    // Training Flags
+    tfNone          = $00000000;
+    tfTimeTrial     = $00000001;
+    tfRCPlane       = $00000002;
+    tfSpawnTargets  = $00000004;
+    tfIgnoreDelays  = $00000008;
+    tfTargetRespawn = $00000010;
+    
+    gfAny            = $FFFFFFFF;
+    gfForts          = $00000001;
+    gfMultiWeapon    = $00000002;
+    gfSolidLand      = $00000004;
+    gfBorder         = $00000008;
+    gfDivideTeams    = $00000010;
+    gfLowGravity     = $00000020;
+    gfLaserSight     = $00000040;
+    gfInvulnerable   = $00000080;
+    gfMines          = $00000100;
+    gfVampiric       = $00000200;
+    gfKarma          = $00000400;
+    gfArtillery      = $00000800;
+    gfOneClanMode    = $00001000;
+    gfRandomOrder    = $00002000;
+    gfKing           = $00004000;
+    gfPlaceHog       = $00008000;
+    gfSharedAmmo     = $00010000;
+    gfDisableGirders = $00020000;
+    gfExplosives     = $00040000;
+    // NOTE: When adding new game flags, ask yourself
+    // if a "game start notice" would be useful. If so,
+    // add one in uWorld.pas - look for "AddGoal".
 
-	gstDrowning       = $00000001;
-	gstHHDriven       = $00000002;
-	gstMoving         = $00000004;
-	gstAttacked       = $00000008;
-	gstAttacking      = $00000010;
-	gstCollision      = $00000020;
-	gstHHChooseTarget = $00000040;
-	gstHHJumping      = $00000100;
-	gsttmpFlag        = $00000200;
-	gstHHThinking     = $00000800;
-	gstNoDamage       = $00001000;
-	gstHHHJump        = $00002000;
-	gstAnimation      = $00004000;
-	gstHHDeath        = $00008000;
-	gstWinner         = $00010000;  // this, along with gstLoser, is good for indicating hedgies know they screwed up
-	gstWait           = $00020000;
-	gstNotKickable    = $00040000;
-	gstLoser          = $00080000;
+    gstDrowning       = $00000001;
+    gstHHDriven       = $00000002;
+    gstMoving         = $00000004;
+    gstAttacked       = $00000008;
+    gstAttacking      = $00000010;
+    gstCollision      = $00000020;
+    gstHHChooseTarget = $00000040;
+    gstHHJumping      = $00000100;
+    gsttmpFlag        = $00000200;
+    gstHHThinking     = $00000800;
+    gstNoDamage       = $00001000;
+    gstHHHJump        = $00002000;
+    gstAnimation      = $00004000;
+    gstHHDeath        = $00008000;
+    gstWinner         = $00010000;  // this, along with gstLoser, is good for indicating hedgies know they screwed up
+    gstWait           = $00020000;
+    gstNotKickable    = $00040000;
+    gstLoser          = $00080000;
 
-	gm_Left   = $00000001;
-	gm_Right  = $00000002;
-	gm_Up     = $00000004;
-	gm_Down   = $00000008;
-	gm_Switch = $00000010;
-	gm_Attack = $00000020;
-	gm_LJump  = $00000040;
-	gm_HJump  = $00000080;
-	gm_Destroy= $00000100;
-	gm_Slot   = $00000200; // with param
-	gm_Weapon = $00000400; // with param
-	gm_Timer  = $00000800; // with param
-	gm_Animate= $00001000; // with param
-	gm_Precise= $00002000;
-	gmAllStoppable = gm_Left or gm_Right or gm_Up or gm_Down or gm_Attack or gm_Precise;
+    gm_Left   = $00000001;
+    gm_Right  = $00000002;
+    gm_Up     = $00000004;
+    gm_Down   = $00000008;
+    gm_Switch = $00000010;
+    gm_Attack = $00000020;
+    gm_LJump  = $00000040;
+    gm_HJump  = $00000080;
+    gm_Destroy= $00000100;
+    gm_Slot   = $00000200; // with param
+    gm_Weapon = $00000400; // with param
+    gm_Timer  = $00000800; // with param
+    gm_Animate= $00001000; // with param
+    gm_Precise= $00002000;
+    gmAllStoppable = gm_Left or gm_Right or gm_Up or gm_Down or gm_Attack or gm_Precise;
 
-	cMaxSlotIndex       = 8;
-	cMaxSlotAmmoIndex   = 5;
+    cMaxSlotIndex       = 8;
+    cMaxSlotAmmoIndex   = 5;
 
-	ammoprop_Timerable    = $00000001;
-	ammoprop_Power        = $00000002;
-	ammoprop_NeedTarget   = $00000004;
-	ammoprop_ForwMsgs     = $00000008;
-	ammoprop_AttackInMove = $00000010;
-	ammoprop_NoCrosshair  = $00000040;
-	ammoprop_AttackingPut = $00000080;
-	ammoprop_DontHold     = $00000100;
-	ammoprop_AltAttack    = $00000200;
-	ammoprop_AltUse       = $00000400;
-	ammoprop_NotBorder    = $00000800;
-	ammoprop_Utility      = $00001000;
-	ammoprop_NoRoundEndHint=$10000000;
-	
-	AMMO_INFINITE = 100;
+    ammoprop_Timerable    = $00000001;
+    ammoprop_Power        = $00000002;
+    ammoprop_NeedTarget   = $00000004;
+    ammoprop_ForwMsgs     = $00000008;
+    ammoprop_AttackInMove = $00000010;
+    ammoprop_NoCrosshair  = $00000040;
+    ammoprop_AttackingPut = $00000080;
+    ammoprop_DontHold     = $00000100;
+    ammoprop_AltAttack    = $00000200;
+    ammoprop_AltUse       = $00000400;
+    ammoprop_NotBorder    = $00000800;
+    ammoprop_Utility      = $00001000;
+    ammoprop_NoRoundEndHint=$10000000;
+    
+    AMMO_INFINITE = 100;
 
-	EXPLAllDamageInRadius = $00000001;
-	EXPLAutoSound         = $00000002;
-	EXPLNoDamage          = $00000004;
-	EXPLDoNotTouchHH      = $00000008;
-	EXPLDontDraw          = $00000010;
+    EXPLAllDamageInRadius = $00000001;
+    EXPLAutoSound         = $00000002;
+    EXPLNoDamage          = $00000004;
+    EXPLDoNotTouchHH      = $00000008;
+    EXPLDontDraw          = $00000010;
 
-	posCaseAmmo    = $00000001;
-	posCaseHealth  = $00000002;
-	posCaseUtility = $00000004;
+    posCaseAmmo    = $00000001;
+    posCaseHealth  = $00000002;
+    posCaseUtility = $00000004;
 
-	NoPointX = Low(LongInt);
-	cTargetPointRef	: TPoint = (X: NoPointX; Y: 0);
+    NoPointX = Low(LongInt);
+    cTargetPointRef : TPoint = (X: NoPointX; Y: 0);
 
-	// hog tag mask
+    // hog tag mask
     // hog tag mask
     htNone        = $00;
     htTeamName    = $01;
@@ -403,1301 +403,1301 @@
     cTagsMasks : array[0..15] of byte = (7, 0, 0, 0, 15, 6, 4, 5, 0, 0, 0, 0, 0, 14, 12, 13);
     cTagsMasksNoHealth: array[0..15] of byte = (3, 2, 11, 1, 0, 0, 0, 0, 0, 10, 0, 9, 0, 0, 0, 0);
 
-	Fontz: array[THWFont] of THHFont = (
-			(Handle: nil;
-			Height: 12;
-			style: TTF_STYLE_NORMAL;
-			Name: 'DejaVuSans-Bold.ttf'),
-			(Handle: nil;
-			Height: 24;
-			style: TTF_STYLE_NORMAL;
-			Name: 'DejaVuSans-Bold.ttf'),
-			(Handle: nil;
-			Height: 10;
-			style: TTF_STYLE_NORMAL;
-			Name: 'DejaVuSans-Bold.ttf'),
-			(Handle: nil;
-			Height: 12;
-			style: TTF_STYLE_NORMAL;
-			Name: 'wqy-zenhei.ttc'),
-			(Handle: nil;
-			Height: 24;
-			style: TTF_STYLE_NORMAL;
-			Name: 'wqy-zenhei.ttc'),
-			(Handle: nil;
-			Height: 10;
-			style: TTF_STYLE_NORMAL;
-			Name: 'wqy-zenhei.ttc')
-			);
+    Fontz: array[THWFont] of THHFont = (
+            (Handle: nil;
+            Height: 12;
+            style: TTF_STYLE_NORMAL;
+            Name: 'DejaVuSans-Bold.ttf'),
+            (Handle: nil;
+            Height: 24;
+            style: TTF_STYLE_NORMAL;
+            Name: 'DejaVuSans-Bold.ttf'),
+            (Handle: nil;
+            Height: 10;
+            style: TTF_STYLE_NORMAL;
+            Name: 'DejaVuSans-Bold.ttf'),
+            (Handle: nil;
+            Height: 12;
+            style: TTF_STYLE_NORMAL;
+            Name: 'wqy-zenhei.ttc'),
+            (Handle: nil;
+            Height: 24;
+            style: TTF_STYLE_NORMAL;
+            Name: 'wqy-zenhei.ttc'),
+            (Handle: nil;
+            Height: 10;
+            style: TTF_STYLE_NORMAL;
+            Name: 'wqy-zenhei.ttc')
+            );
 
-	SpritesData: array[TSprite] of record
-			FileName: String[14];
-			Path, AltPath: TPathType;
-			Texture: PTexture;
-			Surface: PSDL_Surface;
-			Width, Height, imageWidth, imageHeight: LongInt;
-			saveSurf: boolean;
-			end = (
-			(FileName:  'BlueWater'; Path: ptCurrTheme;AltPath: ptGraphics; Texture: nil; Surface: nil;
-			Width:   0; Height:  0; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprWater
-			(FileName:     'Clouds'; Path: ptCurrTheme;AltPath: ptGraphics; Texture: nil; Surface: nil;
-			Width: 256; Height:128; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprCloud
-			(FileName:       'Bomb'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:   8; Height:  8; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprBomb
-			(FileName:  'BigDigits'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprBigDigit
-			(FileName:      'Frame'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:   4; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprFrame
-			(FileName:        'Lag'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  65; Height: 65; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprLag
-			(FileName:      'Arrow'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprCursor
-			(FileName:    'Grenade'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprGrenade
-			(FileName:    'Targetp'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprTargetP
-			(FileName:        'UFO'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprUFO
-			(FileName: 'SmokeTrace'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprSmokeTrace
-			(FileName:   'RopeHook'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprRopeHook
-			(FileName:     'Expl50'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprExplosion50
-			(FileName:    'MineOff'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:   8; Height:  8; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprMineOff
-			(FileName:     'MineOn'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:   8; Height:  8; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprMineOn
-			(FileName:     'MineDead'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:   8; Height:  8; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprMineDead
-			(FileName:       'Case'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  48; Height: 48; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprCase
-			(FileName:   'FirstAid'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  48; Height: 48; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprFAid
-			(FileName:   'dynamite'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprDynamite
-			(FileName:      'Power'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprPower
-			(FileName:     'ClBomb'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprClusterBomb
-			(FileName: 'ClParticle'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprClusterParticle
-			(FileName:      'Flame'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprFlame
-			(FileName:   'horizont'; Path: ptCurrTheme;AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:   0; Height:  0; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprHorizont
-			(FileName:  'horizontL'; Path: ptCurrTheme;AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:   0; Height:  0; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprHorizont
-			(FileName:  'horizontR'; Path: ptCurrTheme;AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:   0; Height:  0; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprHorizont
-			(FileName:        'Sky'; Path: ptCurrTheme;AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:   0; Height:  0; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprSky
-			(FileName:       'SkyL'; Path: ptCurrTheme;AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:   0; Height:  0; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprSky
-			(FileName:       'SkyR'; Path: ptCurrTheme;AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:   0; Height:  0; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprSky
-			(FileName:  'BrdrLines'; Path: ptAmmoMenu; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width: 202; Height:  1; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprAMBorders
-			(FileName:       'Slot'; Path: ptAmmoMenu; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width: 202; Height: 33; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprAMSlot
-			(FileName:   'AmmoName'; Path: ptAmmoMenu; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width: 202; Height: 33; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprAMSlotName
-			(FileName:      'Ammos'; Path: ptAmmoMenu; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: true),// sprAMAmmos
-			(FileName:   'SlotKeys'; Path: ptAmmoMenu; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprAMSlotKeys
-			(FileName:  'Selection'; Path: ptAmmoMenu; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprAMSelection
-			(FileName:     'Finger'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  32; Height: 48; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprFinger
-			(FileName:    'AirBomb'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprAirBomb
-			(FileName:   'Airplane'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width: 254; Height: 101; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprAirplane
-			(FileName: 'amAirplane'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  64; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprAmAirplane
-			(FileName:   'amGirder'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width: 160; Height:160; imageWidth: 0; imageHeight: 0; saveSurf:  true),// sprAmGirder
-			(FileName:     'hhMask'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf:  true),// sprHHTelepMask
-			(FileName:     'Switch'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprSwitch
-			(FileName:  'Parachute'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  48; Height: 48; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprParachute
-			(FileName:     'Target'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprTarget
-			(FileName:   'RopeNode'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:   6; Height:  6; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprRopeNode
-			(FileName:   'thinking'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprQuestion
-			(FileName:   'PowerBar'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width: 256; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprPowerBar
-			(FileName:    'WindBar'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width: 151; Height: 17; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprWindBar
-			(FileName:      'WindL'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  80; Height: 13; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprWindL
-			(FileName:      'WindR'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  80; Height: 13; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprWindR
-			(FileName:      'Flake'; Path:ptCurrTheme; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprFlake
-			(FileName:     'amRope'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprHandRope
-			(FileName:  'amBazooka'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprHandBazooka
-			(FileName:  'amShotgun'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprHandShotgun
-			(FileName:   'amDEagle'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprHandDEagle
-			(FileName:'amAirAttack'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprHandAirAttack
-			(FileName: 'amBaseball'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprHandBaseball
-			(FileName:     'Hammer'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  32; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprPHammer
-			(FileName: 'amBTorch_i'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprHandBlowTorch
-			(FileName: 'amBTorch_w'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprBlowTorch
-			(FileName:   'Teleport'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  64; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprTeleport
-			(FileName:    'HHDeath'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  32; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprHHDeath
-			(FileName:'amShotgun_w'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprShotgun
-			(FileName: 'amDEagle_w'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprDEagle
-			(FileName:       'Idle'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprHHIdle
-			(FileName:     'Mortar'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprMortar
-			(FileName:  'TurnsLeft'; Path: ptAmmoMenu; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprTurnsLeft
-			(FileName: 'amKamikaze'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width: 256; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprKamikaze
-			(FileName:     'amWhip'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width: 128; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprWhip
-			(FileName:     'Kowtow'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprKowtow
-			(FileName:        'Sad'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprSad
-			(FileName:       'Wave'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  64; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprWave
-			(FileName:     'Hurrah'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprHurrah
-			(FileName:'ILoveLemonade';Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width: 128; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprLemonade
-			(FileName:      'Shrug'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width: 32;  Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprShrug
-			(FileName:     'Juggle'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width: 32;  Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprJuggle
-			(FileName:   'ExplPart'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprExplPart
-			(FileName:  'ExplPart2'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprExplPart2
-			(FileName:  'Cake_walk'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprCakeWalk
-			(FileName:  'Cake_down'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprCakeDown
-			(FileName:   'Ammos_bw'; Path: ptAmmoMenu; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprAMAmmosBW
-			(FileName: 'Watermelon'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprWatermelon
-			(FileName:  'EvilTrace'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprEvilTrace
-			(FileName:'HellishBomb'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprHellishBomb
-			(FileName:  'Seduction'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprSeduction
-			(FileName:    'HHDress'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprDress
-			(FileName:   'Censored'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  64; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprCensored
-			(FileName:      'Drill'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprDrill
-			(FileName:    'amDrill'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprHandDrill
-			(FileName:  'amBallgun'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprHandBallgun
-			(FileName:      'Balls'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  32; Height: 20; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprBalls
-			(FileName:    'RCPlane'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprPlane
-			(FileName:  'amRCPlane'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false), // sprHandPlane
-			(FileName:    'Utility'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  48; Height: 48; imageWidth: 0; imageHeight: 0; saveSurf: false), // sprUtility
-			(FileName:'Invulnerable';Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  48; Height: 48; imageWidth: 0; imageHeight: 0; saveSurf: false), // sprInvulnerable
-			(FileName:   'Vampiric'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  48; Height: 48; imageWidth: 0; imageHeight: 0; saveSurf: false), // sprVampiric
-			(FileName:   'amGirder'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width: 512; Height:512; imageWidth: 0; imageHeight: 0; saveSurf: false), // sprGirder
-			(FileName:'SpeechCorner';Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  12; Height: 9; imageWidth: 0; imageHeight: 0; saveSurf:  true), // sprSpeechCorner
-			(FileName: 'SpeechEdge'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  25; Height: 9; imageWidth: 0; imageHeight: 0; saveSurf:  true), // sprSpeechEdge
-			(FileName: 'SpeechTail'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  25; Height: 26; imageWidth: 0; imageHeight: 0; saveSurf: true), // sprSpeechTail
-			(FileName:'ThoughtCorner';Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  49; Height: 37; imageWidth: 0; imageHeight: 0; saveSurf: true), // sprThoughtCorner
-			(FileName:'ThoughtEdge'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  23; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: true), // sprThoughtEdge
-			(FileName:'ThoughtTail'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  45; Height: 65; imageWidth: 0; imageHeight: 0; saveSurf: true), // sprThoughtTail
-			(FileName:'ShoutCorner'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  34; Height: 23; imageWidth: 0; imageHeight: 0; saveSurf: true), // sprShoutCorner
-			(FileName:  'ShoutEdge'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  30; Height: 20; imageWidth: 0; imageHeight: 0; saveSurf: true), // sprShoutEdge
-			(FileName:  'ShoutTail'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  30; Height: 37; imageWidth: 0; imageHeight: 0; saveSurf: true), // sprShoutTail
-			(FileName:'amSniperRifle';Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width: 128; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false), // sprSniperRifle
-			(FileName:    'Bubbles'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false), // sprBubbles
-			(FileName:  'amJetpack'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false), // sprJetpack
-			(FileName:  'Health'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false), // sprHealth
-			(FileName:  'amMolotov'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 
-			Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false), //sprHandMolotov
-			(FileName:  'Molotov'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false), // sprMolotov
-			(FileName: 'Smoke'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  22; Height: 22; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprSmoke
-			(FileName: 'SmokeWhite'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  22; Height: 22; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprSmokeWhite
-			(FileName: 'Shells'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  8; Height: 8; imageWidth: 0; imageHeight: 0; saveSurf: false), // sprShell
-			(FileName: 'Dust'; Path: ptCurrTheme; AltPath: ptGraphics; Texture: nil; Surface: nil;
-			Width:  22; Height: 22; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprDust
-			(FileName: 'Explosives'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  48; Height: 48; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprExplosives
-			(FileName: 'ExplosivesRoll'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  48; Height: 48; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprExplosivesRoll
-			(FileName: 'amTeleport'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
-			Width:  64; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false) // sprAmTeleport
-			);
+    SpritesData: array[TSprite] of record
+            FileName: String[14];
+            Path, AltPath: TPathType;
+            Texture: PTexture;
+            Surface: PSDL_Surface;
+            Width, Height, imageWidth, imageHeight: LongInt;
+            saveSurf: boolean;
+            end = (
+            (FileName:  'BlueWater'; Path: ptCurrTheme;AltPath: ptGraphics; Texture: nil; Surface: nil;
+            Width:   0; Height:  0; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprWater
+            (FileName:     'Clouds'; Path: ptCurrTheme;AltPath: ptGraphics; Texture: nil; Surface: nil;
+            Width: 256; Height:128; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprCloud
+            (FileName:       'Bomb'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:   8; Height:  8; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprBomb
+            (FileName:  'BigDigits'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprBigDigit
+            (FileName:      'Frame'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:   4; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprFrame
+            (FileName:        'Lag'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  65; Height: 65; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprLag
+            (FileName:      'Arrow'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprCursor
+            (FileName:    'Grenade'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprGrenade
+            (FileName:    'Targetp'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprTargetP
+            (FileName:        'UFO'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprUFO
+            (FileName: 'SmokeTrace'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprSmokeTrace
+            (FileName:   'RopeHook'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprRopeHook
+            (FileName:     'Expl50'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprExplosion50
+            (FileName:    'MineOff'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:   8; Height:  8; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprMineOff
+            (FileName:     'MineOn'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:   8; Height:  8; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprMineOn
+            (FileName:     'MineDead'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:   8; Height:  8; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprMineDead
+            (FileName:       'Case'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  48; Height: 48; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprCase
+            (FileName:   'FirstAid'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  48; Height: 48; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprFAid
+            (FileName:   'dynamite'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprDynamite
+            (FileName:      'Power'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprPower
+            (FileName:     'ClBomb'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprClusterBomb
+            (FileName: 'ClParticle'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprClusterParticle
+            (FileName:      'Flame'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprFlame
+            (FileName:   'horizont'; Path: ptCurrTheme;AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:   0; Height:  0; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprHorizont
+            (FileName:  'horizontL'; Path: ptCurrTheme;AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:   0; Height:  0; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprHorizont
+            (FileName:  'horizontR'; Path: ptCurrTheme;AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:   0; Height:  0; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprHorizont
+            (FileName:        'Sky'; Path: ptCurrTheme;AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:   0; Height:  0; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprSky
+            (FileName:       'SkyL'; Path: ptCurrTheme;AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:   0; Height:  0; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprSky
+            (FileName:       'SkyR'; Path: ptCurrTheme;AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:   0; Height:  0; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprSky
+            (FileName:  'BrdrLines'; Path: ptAmmoMenu; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width: 202; Height:  1; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprAMBorders
+            (FileName:       'Slot'; Path: ptAmmoMenu; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width: 202; Height: 33; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprAMSlot
+            (FileName:   'AmmoName'; Path: ptAmmoMenu; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width: 202; Height: 33; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprAMSlotName
+            (FileName:      'Ammos'; Path: ptAmmoMenu; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: true),// sprAMAmmos
+            (FileName:   'SlotKeys'; Path: ptAmmoMenu; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprAMSlotKeys
+            (FileName:  'Selection'; Path: ptAmmoMenu; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprAMSelection
+            (FileName:     'Finger'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  32; Height: 48; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprFinger
+            (FileName:    'AirBomb'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprAirBomb
+            (FileName:   'Airplane'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width: 254; Height: 101; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprAirplane
+            (FileName: 'amAirplane'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  64; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprAmAirplane
+            (FileName:   'amGirder'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width: 160; Height:160; imageWidth: 0; imageHeight: 0; saveSurf:  true),// sprAmGirder
+            (FileName:     'hhMask'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf:  true),// sprHHTelepMask
+            (FileName:     'Switch'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprSwitch
+            (FileName:  'Parachute'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  48; Height: 48; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprParachute
+            (FileName:     'Target'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprTarget
+            (FileName:   'RopeNode'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:   6; Height:  6; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprRopeNode
+            (FileName:   'thinking'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprQuestion
+            (FileName:   'PowerBar'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width: 256; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprPowerBar
+            (FileName:    'WindBar'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width: 151; Height: 17; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprWindBar
+            (FileName:      'WindL'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  80; Height: 13; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprWindL
+            (FileName:      'WindR'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  80; Height: 13; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprWindR
+            (FileName:      'Flake'; Path:ptCurrTheme; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprFlake
+            (FileName:     'amRope'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprHandRope
+            (FileName:  'amBazooka'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprHandBazooka
+            (FileName:  'amShotgun'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprHandShotgun
+            (FileName:   'amDEagle'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprHandDEagle
+            (FileName:'amAirAttack'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprHandAirAttack
+            (FileName: 'amBaseball'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprHandBaseball
+            (FileName:     'Hammer'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  32; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprPHammer
+            (FileName: 'amBTorch_i'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprHandBlowTorch
+            (FileName: 'amBTorch_w'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprBlowTorch
+            (FileName:   'Teleport'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  64; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprTeleport
+            (FileName:    'HHDeath'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  32; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprHHDeath
+            (FileName:'amShotgun_w'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprShotgun
+            (FileName: 'amDEagle_w'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprDEagle
+            (FileName:       'Idle'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprHHIdle
+            (FileName:     'Mortar'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprMortar
+            (FileName:  'TurnsLeft'; Path: ptAmmoMenu; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprTurnsLeft
+            (FileName: 'amKamikaze'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width: 256; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprKamikaze
+            (FileName:     'amWhip'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width: 128; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprWhip
+            (FileName:     'Kowtow'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprKowtow
+            (FileName:        'Sad'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprSad
+            (FileName:       'Wave'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  64; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprWave
+            (FileName:     'Hurrah'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprHurrah
+            (FileName:'ILoveLemonade';Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width: 128; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprLemonade
+            (FileName:      'Shrug'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width: 32;  Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprShrug
+            (FileName:     'Juggle'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width: 32;  Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprJuggle
+            (FileName:   'ExplPart'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprExplPart
+            (FileName:  'ExplPart2'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprExplPart2
+            (FileName:  'Cake_walk'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprCakeWalk
+            (FileName:  'Cake_down'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprCakeDown
+            (FileName:   'Ammos_bw'; Path: ptAmmoMenu; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprAMAmmosBW
+            (FileName: 'Watermelon'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprWatermelon
+            (FileName:  'EvilTrace'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprEvilTrace
+            (FileName:'HellishBomb'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprHellishBomb
+            (FileName:  'Seduction'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprSeduction
+            (FileName:    'HHDress'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprDress
+            (FileName:   'Censored'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  64; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprCensored
+            (FileName:      'Drill'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprDrill
+            (FileName:    'amDrill'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprHandDrill
+            (FileName:  'amBallgun'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprHandBallgun
+            (FileName:      'Balls'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  32; Height: 20; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprBalls
+            (FileName:    'RCPlane'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprPlane
+            (FileName:  'amRCPlane'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false), // sprHandPlane
+            (FileName:    'Utility'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  48; Height: 48; imageWidth: 0; imageHeight: 0; saveSurf: false), // sprUtility
+            (FileName:'Invulnerable';Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  48; Height: 48; imageWidth: 0; imageHeight: 0; saveSurf: false), // sprInvulnerable
+            (FileName:   'Vampiric'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  48; Height: 48; imageWidth: 0; imageHeight: 0; saveSurf: false), // sprVampiric
+            (FileName:   'amGirder'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width: 512; Height:512; imageWidth: 0; imageHeight: 0; saveSurf: false), // sprGirder
+            (FileName:'SpeechCorner';Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  12; Height: 9; imageWidth: 0; imageHeight: 0; saveSurf:  true), // sprSpeechCorner
+            (FileName: 'SpeechEdge'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  25; Height: 9; imageWidth: 0; imageHeight: 0; saveSurf:  true), // sprSpeechEdge
+            (FileName: 'SpeechTail'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  25; Height: 26; imageWidth: 0; imageHeight: 0; saveSurf: true), // sprSpeechTail
+            (FileName:'ThoughtCorner';Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  49; Height: 37; imageWidth: 0; imageHeight: 0; saveSurf: true), // sprThoughtCorner
+            (FileName:'ThoughtEdge'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  23; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: true), // sprThoughtEdge
+            (FileName:'ThoughtTail'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  45; Height: 65; imageWidth: 0; imageHeight: 0; saveSurf: true), // sprThoughtTail
+            (FileName:'ShoutCorner'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  34; Height: 23; imageWidth: 0; imageHeight: 0; saveSurf: true), // sprShoutCorner
+            (FileName:  'ShoutEdge'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  30; Height: 20; imageWidth: 0; imageHeight: 0; saveSurf: true), // sprShoutEdge
+            (FileName:  'ShoutTail'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  30; Height: 37; imageWidth: 0; imageHeight: 0; saveSurf: true), // sprShoutTail
+            (FileName:'amSniperRifle';Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width: 128; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false), // sprSniperRifle
+            (FileName:    'Bubbles'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false), // sprBubbles
+            (FileName:  'amJetpack'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width: 64; Height: 64; imageWidth: 0; imageHeight: 0; saveSurf: false), // sprJetpack
+            (FileName:  'Health'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false), // sprHealth
+            (FileName:  'amMolotov'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; 
+            Width: 32; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false), //sprHandMolotov
+            (FileName:  'Molotov'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width: 16; Height: 16; imageWidth: 0; imageHeight: 0; saveSurf: false), // sprMolotov
+            (FileName: 'Smoke'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  22; Height: 22; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprSmoke
+            (FileName: 'SmokeWhite'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  22; Height: 22; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprSmokeWhite
+            (FileName: 'Shells'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  8; Height: 8; imageWidth: 0; imageHeight: 0; saveSurf: false), // sprShell
+            (FileName: 'Dust'; Path: ptCurrTheme; AltPath: ptGraphics; Texture: nil; Surface: nil;
+            Width:  22; Height: 22; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprDust
+            (FileName: 'Explosives'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  48; Height: 48; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprExplosives
+            (FileName: 'ExplosivesRoll'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  48; Height: 48; imageWidth: 0; imageHeight: 0; saveSurf: false),// sprExplosivesRoll
+            (FileName: 'amTeleport'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil;
+            Width:  64; Height: 32; imageWidth: 0; imageHeight: 0; saveSurf: false) // sprAmTeleport
+            );
 
-	Wavez: array [TWave] of record
-			Sprite: TSprite;
-			FramesCount: Longword;
-			Interval: Longword;
-			cmd: String[20];
-			Voice: TSound;
-			VoiceDelay: LongWord;
-			end = (
-			(Sprite:   sprKowtow; FramesCount: 12; Interval: 125; cmd: '/rollup'; Voice: sndNone; VoiceDelay: 0),
-			(Sprite:      sprSad; FramesCount: 14; Interval: 125; cmd: '/sad'; Voice: sndNone; VoiceDelay: 0),
-			(Sprite:     sprWave; FramesCount: 16; Interval: 125; cmd: '/wave'; Voice: sndHello; VoiceDelay: 5),
-			(Sprite:   sprHurrah; FramesCount: 14; Interval: 125; cmd: '/hurrah'; Voice: sndNone; VoiceDelay: 0),
-			(Sprite: sprLemonade; FramesCount: 24; Interval: 125; cmd: '/ilovelotsoflemonade'; Voice: sndNone; VoiceDelay: 0),
-			(Sprite:    sprShrug; FramesCount: 24; Interval: 125; cmd: '/shrug'; Voice: sndNone; VoiceDelay: 0),
-			(Sprite:   sprJuggle; FramesCount: 49; Interval:  38; cmd: '/juggle'; Voice: sndNone; VoiceDelay: 0)
-			);
+    Wavez: array [TWave] of record
+            Sprite: TSprite;
+            FramesCount: Longword;
+            Interval: Longword;
+            cmd: String[20];
+            Voice: TSound;
+            VoiceDelay: LongWord;
+            end = (
+            (Sprite:   sprKowtow; FramesCount: 12; Interval: 125; cmd: '/rollup'; Voice: sndNone; VoiceDelay: 0),
+            (Sprite:      sprSad; FramesCount: 14; Interval: 125; cmd: '/sad'; Voice: sndNone; VoiceDelay: 0),
+            (Sprite:     sprWave; FramesCount: 16; Interval: 125; cmd: '/wave'; Voice: sndHello; VoiceDelay: 5),
+            (Sprite:   sprHurrah; FramesCount: 14; Interval: 125; cmd: '/hurrah'; Voice: sndNone; VoiceDelay: 0),
+            (Sprite: sprLemonade; FramesCount: 24; Interval: 125; cmd: '/ilovelotsoflemonade'; Voice: sndNone; VoiceDelay: 0),
+            (Sprite:    sprShrug; FramesCount: 24; Interval: 125; cmd: '/shrug'; Voice: sndNone; VoiceDelay: 0),
+            (Sprite:   sprJuggle; FramesCount: 49; Interval:  38; cmd: '/juggle'; Voice: sndNone; VoiceDelay: 0)
+            );
 
-	Soundz: array[TSound] of record
-			FileName: String[25];
-			Path    : TPathType;
-			end = (
-			(FileName:                         ''; Path: ptNone  ),// sndNone
-			(FileName:        'grenadeimpact.ogg'; Path: ptSounds),// sndGrenadeImpact
-			(FileName:            'explosion.ogg'; Path: ptSounds),// sndExplosion
-			(FileName:         'throwpowerup.ogg'; Path: ptSounds),// sndThrowPowerUp
-			(FileName:         'throwrelease.ogg'; Path: ptSounds),// sndThrowRelease
-			(FileName:               'splash.ogg'; Path: ptSounds),// sndSplash
-			(FileName:        'shotgunreload.ogg'; Path: ptSounds),// sndShotgunReload
-			(FileName:          'shotgunfire.ogg'; Path: ptSounds),// sndShotgunFire
-			(FileName:          'graveimpact.ogg'; Path: ptSounds),// sndGraveImpact
-			(FileName:             'minetick.ogg'; Path: ptSounds),// sndMineTicks
-			(FileName:           'pickhammer.ogg'; Path: ptSounds),// sndPickhammer
-			(FileName:                  'gun.ogg'; Path: ptSounds),// sndGun
-			(FileName:                  'ufo.ogg'; Path: ptSounds),// sndUFO
-			(FileName:                'Jump1.ogg'; Path: ptVoices),// sndJump1
-			(FileName:                'Jump2.ogg'; Path: ptVoices),// sndJump2
-			(FileName:                'Jump3.ogg'; Path: ptVoices),// sndJump3
-			(FileName:               'Yessir.ogg'; Path: ptVoices),// sndYesSir
-			(FileName:                'Laugh.ogg'; Path: ptVoices),// sndLaugh
-			(FileName:            'Illgetyou.ogg'; Path: ptVoices),// sndIllGetYou
-			(FileName:             'Incoming.ogg'; Path: ptVoices),// sndIncoming
-			(FileName:               'Missed.ogg'; Path: ptVoices),// sndMissed
-			(FileName:               'Stupid.ogg'; Path: ptVoices),// sndStupid
-			(FileName:           'Firstblood.ogg'; Path: ptVoices),// sndFirstBlood
-			(FileName:               'Boring.ogg'; Path: ptVoices),// sndBoring
-			(FileName:               'Byebye.ogg'; Path: ptVoices),// sndByeBye
-			(FileName:             'Sameteam.ogg'; Path: ptVoices),// sndSameTeam
-			(FileName:               'Nutter.ogg'; Path: ptVoices),// sndNutter
-			(FileName:       'Reinforcements.ogg'; Path: ptVoices),// sndReinforce
-			(FileName:              'Traitor.ogg'; Path: ptVoices),// sndTraitor
-			(FileName:      'Youllregretthat.ogg'; Path: ptVoices),// sndRegret
-			(FileName:            'Enemydown.ogg'; Path: ptVoices),// sndEnemyDown
-			(FileName:               'Coward.ogg'; Path: ptVoices),// sndCoward
-			(FileName:                'Hurry.ogg'; Path: ptVoices),// sndHurry
-			(FileName:              'Watchit.ogg'; Path: ptVoices),// sndWatchIt
-			(FileName:             'Kamikaze.ogg'; Path: ptVoices),// sndKamikaze
-			(FileName:                'cake2.ogg'; Path: ptSounds),// sndCake
-			(FileName:                  'Ow1.ogg'; Path: ptVoices),// sndOw1
-			(FileName:                  'Ow4.ogg'; Path: ptVoices),// sndOw4
-			(FileName:           'Firepunch1.ogg'; Path: ptVoices),// sndFirepunch1
-			(FileName:           'Firepunch2.ogg'; Path: ptVoices),// sndFirepunch2
-			(FileName:           'Firepunch3.ogg'; Path: ptVoices),// sndFirepunch3
-			(FileName:           'Firepunch4.ogg'; Path: ptVoices),// sndFirepunch4
-			(FileName:           'Firepunch5.ogg'; Path: ptVoices),// sndFirepunch5
-			(FileName:           'Firepunch6.ogg'; Path: ptVoices),// sndFirepunch6
-			(FileName:                'Melon.ogg'; Path: ptSounds),// sndMelon
-			(FileName:              'Hellish.ogg'; Path: ptSounds),// sndHellish
-			(FileName:               'Yoohoo.ogg'; Path: ptSounds),// sndYoohoo
-			(FileName:              'rcplane.ogg'; Path: ptSounds),// sndRCPlane
-			(FileName:            'whipcrack.ogg'; Path: ptSounds),// sndWhipCrack
-			(FileName:'ride_of_the_valkyries.ogg'; Path: ptSounds),// sndRideOfTheValkyries
-			(FileName:               'denied.ogg'; Path: ptSounds),// sndDenied
-			(FileName:               'placed.ogg'; Path: ptSounds),// sndPlaced
-			(FileName:          'baseballbat.ogg'; Path: ptSounds),// sndBaseballBat
-			(FileName:                'steam.ogg'; Path: ptSounds),// sndVaporize
-			(FileName:                 'warp.ogg'; Path: ptSounds),// sndWarp
-			(FileName:          'suddendeath.ogg'; Path: ptSounds),// sndSuddenDeath
-			(FileName:               'mortar.ogg'; Path: ptSounds),// sndMortar
-			(FileName:         'shutterclick.ogg'; Path: ptSounds),// sndShutter
-			(FileName:              'homerun.ogg'; Path: ptSounds),// sndHomerun
-			(FileName:              'molotov.ogg'; Path: ptSounds),// sndMolotov
-			(FileName:            'Takecover.ogg'; Path: ptVoices),// sndCover
-			(FileName:                'Uh-oh.ogg'; Path: ptVoices),// sndUhOh
-			(FileName:                 'Oops.ogg'; Path: ptVoices),// sndOops
-			(FileName:                 'Nooo.ogg'; Path: ptVoices),// sndNooo
-			(FileName:                'Hello.ogg'; Path: ptVoices),// sndHello
-			(FileName:                         ''; Path: ptSounds),// sndRopeShot
-			(FileName:                         ''; Path: ptSounds),// sndRopeAttach
-			(FileName:                         ''; Path: ptSounds),// sndRopeRelease
-			(FileName:            'switchhog.ogg'; Path: ptSounds),// sndSwitchHog
-			(FileName:              'victory.ogg'; Path: ptVoices),// sndVictory
-			(FileName:         'sniperreload.ogg'; Path: ptSounds),// sndSniperReload
-			(FileName:                'steps.ogg'; Path: ptSounds),// sndSteps
-			(FileName:           'lowgravity.ogg'; Path: ptSounds) // sndLowGravity
-			);
+    Soundz: array[TSound] of record
+            FileName: String[25];
+            Path    : TPathType;
+            end = (
+            (FileName:                         ''; Path: ptNone  ),// sndNone
+            (FileName:        'grenadeimpact.ogg'; Path: ptSounds),// sndGrenadeImpact
+            (FileName:            'explosion.ogg'; Path: ptSounds),// sndExplosion
+            (FileName:         'throwpowerup.ogg'; Path: ptSounds),// sndThrowPowerUp
+            (FileName:         'throwrelease.ogg'; Path: ptSounds),// sndThrowRelease
+            (FileName:               'splash.ogg'; Path: ptSounds),// sndSplash
+            (FileName:        'shotgunreload.ogg'; Path: ptSounds),// sndShotgunReload
+            (FileName:          'shotgunfire.ogg'; Path: ptSounds),// sndShotgunFire
+            (FileName:          'graveimpact.ogg'; Path: ptSounds),// sndGraveImpact
+            (FileName:             'minetick.ogg'; Path: ptSounds),// sndMineTicks
+            (FileName:           'pickhammer.ogg'; Path: ptSounds),// sndPickhammer
+            (FileName:                  'gun.ogg'; Path: ptSounds),// sndGun
+            (FileName:                  'ufo.ogg'; Path: ptSounds),// sndUFO
+            (FileName:                'Jump1.ogg'; Path: ptVoices),// sndJump1
+            (FileName:                'Jump2.ogg'; Path: ptVoices),// sndJump2
+            (FileName:                'Jump3.ogg'; Path: ptVoices),// sndJump3
+            (FileName:               'Yessir.ogg'; Path: ptVoices),// sndYesSir
+            (FileName:                'Laugh.ogg'; Path: ptVoices),// sndLaugh
+            (FileName:            'Illgetyou.ogg'; Path: ptVoices),// sndIllGetYou
+            (FileName:             'Incoming.ogg'; Path: ptVoices),// sndIncoming
+            (FileName:               'Missed.ogg'; Path: ptVoices),// sndMissed
+            (FileName:               'Stupid.ogg'; Path: ptVoices),// sndStupid
+            (FileName:           'Firstblood.ogg'; Path: ptVoices),// sndFirstBlood
+            (FileName:               'Boring.ogg'; Path: ptVoices),// sndBoring
+            (FileName:               'Byebye.ogg'; Path: ptVoices),// sndByeBye
+            (FileName:             'Sameteam.ogg'; Path: ptVoices),// sndSameTeam
+            (FileName:               'Nutter.ogg'; Path: ptVoices),// sndNutter
+            (FileName:       'Reinforcements.ogg'; Path: ptVoices),// sndReinforce
+            (FileName:              'Traitor.ogg'; Path: ptVoices),// sndTraitor
+            (FileName:      'Youllregretthat.ogg'; Path: ptVoices),// sndRegret
+            (FileName:            'Enemydown.ogg'; Path: ptVoices),// sndEnemyDown
+            (FileName:               'Coward.ogg'; Path: ptVoices),// sndCoward
+            (FileName:                'Hurry.ogg'; Path: ptVoices),// sndHurry
+            (FileName:              'Watchit.ogg'; Path: ptVoices),// sndWatchIt
+            (FileName:             'Kamikaze.ogg'; Path: ptVoices),// sndKamikaze
+            (FileName:                'cake2.ogg'; Path: ptSounds),// sndCake
+            (FileName:                  'Ow1.ogg'; Path: ptVoices),// sndOw1
+            (FileName:                  'Ow4.ogg'; Path: ptVoices),// sndOw4
+            (FileName:           'Firepunch1.ogg'; Path: ptVoices),// sndFirepunch1
+            (FileName:           'Firepunch2.ogg'; Path: ptVoices),// sndFirepunch2
+            (FileName:           'Firepunch3.ogg'; Path: ptVoices),// sndFirepunch3
+            (FileName:           'Firepunch4.ogg'; Path: ptVoices),// sndFirepunch4
+            (FileName:           'Firepunch5.ogg'; Path: ptVoices),// sndFirepunch5
+            (FileName:           'Firepunch6.ogg'; Path: ptVoices),// sndFirepunch6
+            (FileName:                'Melon.ogg'; Path: ptSounds),// sndMelon
+            (FileName:              'Hellish.ogg'; Path: ptSounds),// sndHellish
+            (FileName:               'Yoohoo.ogg'; Path: ptSounds),// sndYoohoo
+            (FileName:              'rcplane.ogg'; Path: ptSounds),// sndRCPlane
+            (FileName:            'whipcrack.ogg'; Path: ptSounds),// sndWhipCrack
+            (FileName:'ride_of_the_valkyries.ogg'; Path: ptSounds),// sndRideOfTheValkyries
+            (FileName:               'denied.ogg'; Path: ptSounds),// sndDenied
+            (FileName:               'placed.ogg'; Path: ptSounds),// sndPlaced
+            (FileName:          'baseballbat.ogg'; Path: ptSounds),// sndBaseballBat
+            (FileName:                'steam.ogg'; Path: ptSounds),// sndVaporize
+            (FileName:                 'warp.ogg'; Path: ptSounds),// sndWarp
+            (FileName:          'suddendeath.ogg'; Path: ptSounds),// sndSuddenDeath
+            (FileName:               'mortar.ogg'; Path: ptSounds),// sndMortar
+            (FileName:         'shutterclick.ogg'; Path: ptSounds),// sndShutter
+            (FileName:              'homerun.ogg'; Path: ptSounds),// sndHomerun
+            (FileName:              'molotov.ogg'; Path: ptSounds),// sndMolotov
+            (FileName:            'Takecover.ogg'; Path: ptVoices),// sndCover
+            (FileName:                'Uh-oh.ogg'; Path: ptVoices),// sndUhOh
+            (FileName:                 'Oops.ogg'; Path: ptVoices),// sndOops
+            (FileName:                 'Nooo.ogg'; Path: ptVoices),// sndNooo
+            (FileName:                'Hello.ogg'; Path: ptVoices),// sndHello
+            (FileName:                         ''; Path: ptSounds),// sndRopeShot
+            (FileName:                         ''; Path: ptSounds),// sndRopeAttach
+            (FileName:                         ''; Path: ptSounds),// sndRopeRelease
+            (FileName:            'switchhog.ogg'; Path: ptSounds),// sndSwitchHog
+            (FileName:              'victory.ogg'; Path: ptVoices),// sndVictory
+            (FileName:         'sniperreload.ogg'; Path: ptSounds),// sndSniperReload
+            (FileName:                'steps.ogg'; Path: ptSounds),// sndSteps
+            (FileName:           'lowgravity.ogg'; Path: ptSounds) // sndLowGravity
+            );
 
-	Ammoz: array [TAmmoType] of record
-			NameId: TAmmoStrId;
-			NameTex: PTexture;
-			Probability, NumberInCase: Longword;
-			Ammo: TAmmo;
-			Slot: 0..cMaxSlotIndex;
-			TimeAfterTurn: Longword;
-			minAngle, maxAngle: Longword;
-			isDamaging: boolean;
-			SkipTurns: Longword;
-			PosCount: Longword;
-			PosSprite: TSprite;
-			end = (
-			(NameId: sidNothing;
-			NameTex: nil;
-			Probability: 0;
-			NumberInCase: 0;
-			Ammo: (Propz: ammoprop_NoCrosshair or ammoprop_DontHold or ammoprop_Utility;
-				Count: AMMO_INFINITE;
-				InitialCount: AMMO_INFINITE;
-				NumPerTurn: 0;
-				Timer: 0;
-				Pos: 0;
-				AmmoType: amNothing;
-				AttackVoice: sndNone);
-			Slot: 0;
-			TimeAfterTurn: 0;
-			minAngle: 0;
-			maxAngle: 0;
-			isDamaging: false;
-			SkipTurns: 9999;
-			PosCount: 1;
-			PosSprite: sprWater),
-			(NameId: sidGrenade;
-			NameTex: nil;
-			Probability: 0;
-			NumberInCase: 1;
-			Ammo: (Propz: ammoprop_Timerable or ammoprop_Power or ammoprop_AltUse;
-				Count: AMMO_INFINITE;
-				InitialCount: AMMO_INFINITE;
-				NumPerTurn: 0;
-				Timer: 3000;
-				Pos: 0;
-				AmmoType: amGrenade;
-				AttackVoice: sndCover);
-			Slot: 1;
-			TimeAfterTurn: 3000;
-			minAngle: 0;
-			maxAngle: 0;
-			isDamaging: true;
-			SkipTurns: 0;
-			PosCount: 1;
-			PosSprite: sprWater),
-			(NameId: sidClusterBomb;
-			NameTex: nil;
-			Probability: 100;
-			NumberInCase: 3;
-			Ammo: (Propz: ammoprop_Timerable or ammoprop_Power or ammoprop_AltUse;
-				Count: 5;
-				InitialCount: 5;
-				NumPerTurn: 0;
-				Timer: 3000;
-				Pos: 0;
-				AmmoType: amClusterBomb;
-				AttackVoice: sndCover);
-			Slot: 1;
-			TimeAfterTurn: 3000;
-			minAngle: 0;
-			maxAngle: 0;
-			isDamaging: true;
-			SkipTurns: 0;
-			PosCount: 1;
-			PosSprite: sprWater),
-			(NameId: sidBazooka;
-			NameTex: nil;
-			Probability: 0;
-			NumberInCase: 1;
-			Ammo: (Propz: ammoprop_Power or ammoprop_AltUse;
-				Count: AMMO_INFINITE;
-				InitialCount: AMMO_INFINITE;
-				NumPerTurn: 0;
-				Timer: 0;
-				Pos: 0;
-				AmmoType: amBazooka;
-				AttackVoice: sndNone);
-			Slot: 0;
-			TimeAfterTurn: 3000;
-			minAngle: 0;
-			maxAngle: 0;
-			isDamaging: true;
-			SkipTurns: 0;
-			PosCount: 1;
-			PosSprite: sprWater),
-			(NameId: sidUFO;
-			NameTex: nil;
-			Probability: 100;
-			NumberInCase: 1;
-			Ammo: (Propz: ammoprop_Power or	ammoprop_NeedTarget or ammoprop_DontHold;
-				Count: 2;
-				InitialCount: 2;
-				NumPerTurn: 0;
-				Timer: 0;
-				Pos: 0;
-				AmmoType: amUFO;
-				AttackVoice: sndNone);
-			Slot: 0;
-			TimeAfterTurn: 3000;
-			minAngle: 0;
-			maxAngle: 0;
-			isDamaging: true;
-			SkipTurns: 0;
-			PosCount: 1;
-			PosSprite: sprWater),
-			(NameId: sidShotgun;
-			NameTex: nil;
-			Probability: 0;
-			NumberInCase: 1;
-			Ammo: (Propz: ammoprop_ForwMsgs;
-				Count: AMMO_INFINITE;
-				InitialCount: AMMO_INFINITE;
-				NumPerTurn: 1;
-				Timer: 0;
-				Pos: 0;
-				AmmoType: amShotgun;
-				AttackVoice: sndNone);
-			Slot: 2;
-			TimeAfterTurn: 3000;
-			minAngle: 0;
-			maxAngle: 0;
-			isDamaging: true;
-			SkipTurns: 0;
-			PosCount: 1;
-			PosSprite: sprWater),
-			(NameId: sidPickHammer;
-			NameTex: nil;
-			Probability: 0;
-			NumberInCase: 1;
-			Ammo: (Propz: ammoprop_ForwMsgs or ammoprop_AttackInMove or ammoprop_NoCrosshair or ammoprop_DontHold;
-				Count: 2;
-				InitialCount: 2;
-				NumPerTurn: 0;
-				Timer: 0;
-				Pos: 0;
-				AmmoType: amPickHammer;
-				AttackVoice: sndNone);
-			Slot: 6;
-			TimeAfterTurn: 0;
-			minAngle: 0;
-			maxAngle: 0;
-			isDamaging: false;
-			SkipTurns: 0;
-			PosCount: 1;
-			PosSprite: sprWater),
-			(NameId: sidSkip;
-			NameTex: nil;
-			Probability: 0;
-			NumberInCase: 1;
-			Ammo: (Propz: ammoprop_NoCrosshair or ammoprop_DontHold;
-				Count: AMMO_INFINITE;
-				InitialCount: AMMO_INFINITE;
-				NumPerTurn: 0;
-				Timer: 0;
-				Pos: 0;
-				AmmoType: amSkip;
-				AttackVoice: sndNone);
-			Slot: 8;
-			TimeAfterTurn: 0;
-			minAngle: 0;
-			maxAngle: 0;
-			isDamaging: false;
-			SkipTurns: 0;
-			PosCount: 1;
-			PosSprite: sprWater),
-			(NameId: sidRope;
-			NameTex: nil;
-			Probability: 100;
-			NumberInCase: 3;
-			Ammo: (Propz: ammoprop_NoRoundEndHint or
-						  ammoprop_ForwMsgs or
-							ammoprop_AttackInMove or
-							ammoprop_AltAttack;
-					Count: 5;
-					InitialCount: 5;
-					NumPerTurn: 0;
-					Timer: 0;
-					Pos: 0;
-					AmmoType: amRope;
-					AttackVoice: sndNone);
-			Slot: 7;
-			TimeAfterTurn: 0;
-			minAngle: 0;
-			maxAngle: cMaxAngle div 2;
-			isDamaging: false;
-			SkipTurns: 0;
-			PosCount: 1;
-			PosSprite: sprWater),
-			(NameId: sidMine;
-			NameTex: nil;
-			Probability: 100;
-			NumberInCase: 1;
-			Ammo: (Propz: ammoprop_NoCrosshair or ammoprop_AttackInMove or ammoprop_DontHold or ammoprop_AltUse;
-				Count: 2;
-				InitialCount: 2;
-				NumPerTurn: 0;
-				Timer: 0;
-				Pos: 0;
-				AmmoType: amMine;
-				AttackVoice: sndLaugh);
-			Slot: 4;
-			TimeAfterTurn: 5000;
-			minAngle: 0;
-			maxAngle: 0;
-			isDamaging: true;
-			SkipTurns: 0;
-			PosCount: 1;
-			PosSprite: sprWater),
-			(NameId: sidDEagle;
-			NameTex: nil;
-			Probability: 20;
-			NumberInCase: 2;
-			Ammo: (Propz: 0;
-				Count: 3;
-				InitialCount: 3;
-				NumPerTurn: 3;
-				Timer: 0;
-				Pos: 0;
-				AmmoType: amDEagle;
-				AttackVoice: sndNone);
-			Slot: 2;
-			TimeAfterTurn: 3000;
-			minAngle: 0;
-			maxAngle: 0;
-			isDamaging: true;
-			SkipTurns: 0;
-			PosCount: 1;
-			PosSprite: sprWater),
-			(NameId: sidDynamite;
-			NameTex: nil;
-			Probability: 100;
-			NumberInCase: 1;
-			Ammo: (Propz: ammoprop_NoCrosshair or ammoprop_AttackInMove or ammoprop_DontHold or ammoprop_AltUse;
-				Count: 1;
-				InitialCount: 1;
-				NumPerTurn: 0;
-				Timer: 0;
-				Pos: 0;
-				AmmoType: amDynamite;
-				AttackVoice: sndLaugh);
-			Slot: 4;
-			TimeAfterTurn: 5000;
-			minAngle: 0;
-			maxAngle: 0;
-			isDamaging: true;
-			SkipTurns: 0;
-			PosCount: 1;
-			PosSprite: sprWater),
-			(NameId: sidFirePunch;
-			NameTex: nil;
-			Probability: 0;
-			NumberInCase: 1;
-			Ammo: (Propz: ammoprop_NoCrosshair or ammoprop_ForwMsgs or ammoprop_AttackInMove;
-				Count: AMMO_INFINITE;
-				InitialCount: AMMO_INFINITE;
-				NumPerTurn: 0;
-				Timer: 0;
-				Pos: 0;
-				AmmoType: amFirePunch;
-				AttackVoice: sndNone);
-			Slot: 3;
-			TimeAfterTurn: 3000;
-			MinAngle: 0;
-			maxAngle: 0;
-			isDamaging: true;
-			SkipTurns: 0;
-			PosCount: 1;
-			PosSprite: sprWater),
-			(NameId: sidWhip;
-			NameTex: nil;
-			Probability: 0;
-			NumberInCase: 1;
-			Ammo: (Propz: ammoprop_NoCrosshair;
-				Count: AMMO_INFINITE;
-				InitialCount: AMMO_INFINITE;
-				NumPerTurn: 0;
-				Timer: 0;
-				Pos: 0;
-				AmmoType: amWhip;
-				AttackVoice: sndNone);
-			Slot: 3;
-			TimeAfterTurn: 3000;
-			MinAngle: 0;
-			maxAngle: 0;
-			isDamaging: true;
-			SkipTurns: 0;
-			PosCount: 1;
-			PosSprite: sprWater),
-			(NameId: sidBaseballBat;
-			NameTex: nil;
-			Probability: 100;
-			NumberInCase: 1;
-			Ammo: (Propz: ammoprop_DontHold;
-				Count: 1;
-				InitialCount: 1;
-				NumPerTurn: 0;
-				Timer: 0;
-				Pos: 0;
-				AmmoType: amBaseballBat;
-				AttackVoice: sndNone);
-			Slot: 3;
-			TimeAfterTurn: 5000;
-			minAngle: 0;
-			maxAngle: cMaxAngle div 2;
-			isDamaging: true;
-			SkipTurns: 2;
-			PosCount: 1;
-			PosSprite: sprWater),
-			(NameId: sidParachute;
-			NameTex: nil;
-			Probability: 100;
-			NumberInCase: 1;
-			Ammo: (Propz: ammoprop_NoRoundEndHint or
-						  ammoprop_ForwMsgs or
-							ammoprop_AttackInMove or
-							ammoprop_NoCrosshair or
-							ammoprop_DontHold or
-							ammoprop_AltAttack;
-				Count: 2;
-				InitialCount: 2;
-				NumPerTurn: 0;
-				Timer: 0;
-				Pos: 0;
-				AmmoType: amParachute;
-				AttackVoice: sndNone);
-			Slot: 7;
-			TimeAfterTurn: 0;
-			minAngle: 0;
-			maxAngle: 0;
-			isDamaging: false;
-			SkipTurns: 0;
-			PosCount: 1;
-			PosSprite: sprWater),
-			(NameId: sidAirAttack;
-			NameTex: nil;
-			Probability: 100;
-			NumberInCase: 1;
-			Ammo: (Propz: ammoprop_NoCrosshair or
-							ammoprop_NeedTarget or
-							ammoprop_AttackingPut or
-							ammoprop_DontHold or
-							ammoprop_NotBorder;
-				Count: 1;
-				InitialCount: 1;
-				NumPerTurn: 0;
-				Timer: 0;
-				Pos: 0;
-				AmmoType: amAirAttack;
-				AttackVoice: sndIncoming);
-			Slot: 5;
-			TimeAfterTurn: 0;
-			minAngle: 0;
-			maxAngle: 0;
-			isDamaging: true;
-			SkipTurns: 5;
-			PosCount: 2;
-			PosSprite: sprAmAirplane),
-			(NameId: sidMineStrike;
-			NameTex: nil;
-			Probability: 200;
-			NumberInCase: 1;
-			Ammo: (Propz: ammoprop_NoCrosshair or
-							ammoprop_NeedTarget or
-							ammoprop_AttackingPut or
-							ammoprop_DontHold or
-							ammoprop_NotBorder;
-				Count: 1;
-				InitialCount: 1;
-				NumPerTurn: 0;
-				Timer: 0;
-				Pos: 0;
-				AmmoType: amMineStrike;
-				AttackVoice: sndNone);
-			Slot: 5;
-			TimeAfterTurn: 0;
-			minAngle: 0;
-			maxAngle: 0;
-			isDamaging: true;
-			SkipTurns: 5;
-			PosCount: 2;
-			PosSprite: sprAmAirplane),
-			(NameId: sidBlowTorch;
-			NameTex: nil;
-			Probability: 100;
-			NumberInCase: 2;
-			Ammo: (Propz: ammoprop_ForwMsgs;
-				Count: 1;
-				InitialCount: 1;
-				NumPerTurn: 0;
-				Timer: 0;
-				Pos: 0;
-				AmmoType: amBlowTorch;
-				AttackVoice: sndNone);
-			Slot: 6;
-			TimeAfterTurn: 3000;
-			minAngle: 768;
-			maxAngle: 1280;
-			isDamaging: false;
-			SkipTurns: 0;
-			PosCount: 1;
-			PosSprite: sprWater),
-			(NameId: sidGirder;
-			NameTex: nil;
-			Probability: 150;
-			NumberInCase: 3;
-			Ammo: (Propz: ammoprop_NoRoundEndHint or
-						  ammoprop_NoCrosshair or
-							ammoprop_NeedTarget or
-							ammoprop_AttackingPut;
-					Count: 1;
-				    InitialCount: 1;
-					NumPerTurn: 0;
-					Timer: 0;
-					Pos: 0;
-					AmmoType: amGirder;
-					AttackVoice: sndNone);
-			Slot: 6;
-			TimeAfterTurn: 3000;
-			minAngle: 0;
-			maxAngle: 0;
-			isDamaging: false;
-			SkipTurns: 0;
-			PosCount: 8;
-			PosSprite: sprAmGirder),
-			(NameId: sidTeleport;
-			NameTex: nil;
-			Probability: 200;
-			NumberInCase: 1;
-			Ammo: (Propz: ammoprop_ForwMsgs or
-							ammoprop_NoCrosshair or
-							ammoprop_NeedTarget or
-							ammoprop_AttackingPut or
-							ammoprop_DontHold;
-				Count: 2;
-				InitialCount: 2;
-				NumPerTurn: 0;
-				Timer: 0;
-				Pos: 0;
-				AmmoType: amTeleport;
-				AttackVoice: sndNone);
-			Slot: 7;
-			TimeAfterTurn: 0;
-			minAngle: 0;
-			maxAngle: 0;
-			isDamaging: false;
-			SkipTurns: 0;
-			PosCount: 2;
-			PosSprite: sprAmTeleport),
-			(NameId: sidSwitch;
-			NameTex: nil;
-			Probability: 100;
-			NumberInCase: 1;
-			Ammo: (Propz: ammoprop_NoRoundEndHint or
-						  ammoprop_ForwMsgs or
-							ammoprop_NoCrosshair or
-							ammoprop_DontHold;
-					Count: 3;
-				    InitialCount: 3;
-					NumPerTurn: 0;
-					Timer: 0;
-					Pos: 0;
-					AmmoType: amSwitch;
-					AttackVoice: sndNone);
-			Slot: 8;
-			TimeAfterTurn: 0;
-			minAngle: 0;
-			maxAngle: 0;
-			isDamaging: false;
-			SkipTurns: 0;
-			PosCount: 1;
-			PosSprite: sprWater),
-			(NameId: sidMortar;
-			NameTex: nil;
-			Probability: 100;
-			NumberInCase: 4;
-			Ammo: (Propz: 0;
-				Count: 4;
-				InitialCount: 4;
-				NumPerTurn: 0;
-				Timer: 0;
-				Pos: 0;
-				AmmoType: amMortar;
-				AttackVoice: sndNone);
-			Slot: 1;
-			TimeAfterTurn: 3000;
-			minAngle: 0;
-			maxAngle: 0;
-			isDamaging: true;
-			SkipTurns: 0;
-			PosCount: 1;
-			PosSprite: sprWater),
-			(NameId: sidKamikaze;
-			NameTex: nil;
-			Probability: 100;
-			NumberInCase: 1;
-			Ammo: (Propz: ammoprop_ForwMsgs or ammoprop_DontHold or ammoprop_AttackInMove;
-				Count: 1;
-				InitialCount: 1;
-				NumPerTurn: 0;
-				Timer: 0;
-				Pos: 0;
-				AmmoType: amKamikaze;
-				AttackVoice: sndNone);
-			Slot: 3;
-			TimeAfterTurn: 0;
-			minAngle: 0;
-			maxAngle: 0;
-			isDamaging: true;
-			SkipTurns: 0;
-			PosCount: 1;
-			PosSprite: sprWater),
-			(NameId: sidCake;
-			NameTex: nil;
-			Probability: 100;
-			NumberInCase: 1;
-			Ammo: (Propz: ammoprop_ForwMsgs or ammoprop_NoCrosshair or ammoprop_DontHold;
-				Count: 1;
-				InitialCount: 1;
-				NumPerTurn: 0;
-				Timer: 0;
-				Pos: 0;
-				AmmoType: amCake;
-				AttackVoice: sndLaugh);
-			Slot: 4;
-			TimeAfterTurn: 0;
-			minAngle: 0;
-			maxAngle: 0;
-			isDamaging: true;
-			SkipTurns: 4;
-			PosCount: 1;
-			PosSprite: sprWater),
-			(NameId: sidSeduction;
-			NameTex: nil;
-			Probability: 100;
-			NumberInCase: 1;
-			Ammo: (Propz: ammoprop_ForwMsgs or ammoprop_DontHold;
-				Count: 1;
+    Ammoz: array [TAmmoType] of record
+            NameId: TAmmoStrId;
+            NameTex: PTexture;
+            Probability, NumberInCase: Longword;
+            Ammo: TAmmo;
+            Slot: 0..cMaxSlotIndex;
+            TimeAfterTurn: Longword;
+            minAngle, maxAngle: Longword;
+            isDamaging: boolean;
+            SkipTurns: Longword;
+            PosCount: Longword;
+            PosSprite: TSprite;
+            end = (
+            (NameId: sidNothing;
+            NameTex: nil;
+            Probability: 0;
+            NumberInCase: 0;
+            Ammo: (Propz: ammoprop_NoCrosshair or ammoprop_DontHold or ammoprop_Utility;
+                Count: AMMO_INFINITE;
+                InitialCount: AMMO_INFINITE;
+                NumPerTurn: 0;
+                Timer: 0;
+                Pos: 0;
+                AmmoType: amNothing;
+                AttackVoice: sndNone);
+            Slot: 0;
+            TimeAfterTurn: 0;
+            minAngle: 0;
+            maxAngle: 0;
+            isDamaging: false;
+            SkipTurns: 9999;
+            PosCount: 1;
+            PosSprite: sprWater),
+            (NameId: sidGrenade;
+            NameTex: nil;
+            Probability: 0;
+            NumberInCase: 1;
+            Ammo: (Propz: ammoprop_Timerable or ammoprop_Power or ammoprop_AltUse;
+                Count: AMMO_INFINITE;
+                InitialCount: AMMO_INFINITE;
+                NumPerTurn: 0;
+                Timer: 3000;
+                Pos: 0;
+                AmmoType: amGrenade;
+                AttackVoice: sndCover);
+            Slot: 1;
+            TimeAfterTurn: 3000;
+            minAngle: 0;
+            maxAngle: 0;
+            isDamaging: true;
+            SkipTurns: 0;
+            PosCount: 1;
+            PosSprite: sprWater),
+            (NameId: sidClusterBomb;
+            NameTex: nil;
+            Probability: 100;
+            NumberInCase: 3;
+            Ammo: (Propz: ammoprop_Timerable or ammoprop_Power or ammoprop_AltUse;
+                Count: 5;
+                InitialCount: 5;
+                NumPerTurn: 0;
+                Timer: 3000;
+                Pos: 0;
+                AmmoType: amClusterBomb;
+                AttackVoice: sndCover);
+            Slot: 1;
+            TimeAfterTurn: 3000;
+            minAngle: 0;
+            maxAngle: 0;
+            isDamaging: true;
+            SkipTurns: 0;
+            PosCount: 1;
+            PosSprite: sprWater),
+            (NameId: sidBazooka;
+            NameTex: nil;
+            Probability: 0;
+            NumberInCase: 1;
+            Ammo: (Propz: ammoprop_Power or ammoprop_AltUse;
+                Count: AMMO_INFINITE;
+                InitialCount: AMMO_INFINITE;
+                NumPerTurn: 0;
+                Timer: 0;
+                Pos: 0;
+                AmmoType: amBazooka;
+                AttackVoice: sndNone);
+            Slot: 0;
+            TimeAfterTurn: 3000;
+            minAngle: 0;
+            maxAngle: 0;
+            isDamaging: true;
+            SkipTurns: 0;
+            PosCount: 1;
+            PosSprite: sprWater),
+            (NameId: sidUFO;
+            NameTex: nil;
+            Probability: 100;
+            NumberInCase: 1;
+            Ammo: (Propz: ammoprop_Power or ammoprop_NeedTarget or ammoprop_DontHold;
+                Count: 2;
+                InitialCount: 2;
+                NumPerTurn: 0;
+                Timer: 0;
+                Pos: 0;
+                AmmoType: amUFO;
+                AttackVoice: sndNone);
+            Slot: 0;
+            TimeAfterTurn: 3000;
+            minAngle: 0;
+            maxAngle: 0;
+            isDamaging: true;
+            SkipTurns: 0;
+            PosCount: 1;
+            PosSprite: sprWater),
+            (NameId: sidShotgun;
+            NameTex: nil;
+            Probability: 0;
+            NumberInCase: 1;
+            Ammo: (Propz: ammoprop_ForwMsgs;
+                Count: AMMO_INFINITE;
+                InitialCount: AMMO_INFINITE;
+                NumPerTurn: 1;
+                Timer: 0;
+                Pos: 0;
+                AmmoType: amShotgun;
+                AttackVoice: sndNone);
+            Slot: 2;
+            TimeAfterTurn: 3000;
+            minAngle: 0;
+            maxAngle: 0;
+            isDamaging: true;
+            SkipTurns: 0;
+            PosCount: 1;
+            PosSprite: sprWater),
+            (NameId: sidPickHammer;
+            NameTex: nil;
+            Probability: 0;
+            NumberInCase: 1;
+            Ammo: (Propz: ammoprop_ForwMsgs or ammoprop_AttackInMove or ammoprop_NoCrosshair or ammoprop_DontHold;
+                Count: 2;
+                InitialCount: 2;
+                NumPerTurn: 0;
+                Timer: 0;
+                Pos: 0;
+                AmmoType: amPickHammer;
+                AttackVoice: sndNone);
+            Slot: 6;
+            TimeAfterTurn: 0;
+            minAngle: 0;
+            maxAngle: 0;
+            isDamaging: false;
+            SkipTurns: 0;
+            PosCount: 1;
+            PosSprite: sprWater),
+            (NameId: sidSkip;
+            NameTex: nil;
+            Probability: 0;
+            NumberInCase: 1;
+            Ammo: (Propz: ammoprop_NoCrosshair or ammoprop_DontHold;
+                Count: AMMO_INFINITE;
+                InitialCount: AMMO_INFINITE;
+                NumPerTurn: 0;
+                Timer: 0;
+                Pos: 0;
+                AmmoType: amSkip;
+                AttackVoice: sndNone);
+            Slot: 8;
+            TimeAfterTurn: 0;
+            minAngle: 0;
+            maxAngle: 0;
+            isDamaging: false;
+            SkipTurns: 0;
+            PosCount: 1;
+            PosSprite: sprWater),
+            (NameId: sidRope;
+            NameTex: nil;
+            Probability: 100;
+            NumberInCase: 3;
+            Ammo: (Propz: ammoprop_NoRoundEndHint or
+                          ammoprop_ForwMsgs or
+                            ammoprop_AttackInMove or
+                            ammoprop_AltAttack;
+                    Count: 5;
+                    InitialCount: 5;
+                    NumPerTurn: 0;
+                    Timer: 0;
+                    Pos: 0;
+                    AmmoType: amRope;
+                    AttackVoice: sndNone);
+            Slot: 7;
+            TimeAfterTurn: 0;
+            minAngle: 0;
+            maxAngle: cMaxAngle div 2;
+            isDamaging: false;
+            SkipTurns: 0;
+            PosCount: 1;
+            PosSprite: sprWater),
+            (NameId: sidMine;
+            NameTex: nil;
+            Probability: 100;
+            NumberInCase: 1;
+            Ammo: (Propz: ammoprop_NoCrosshair or ammoprop_AttackInMove or ammoprop_DontHold or ammoprop_AltUse;
+                Count: 2;
+                InitialCount: 2;
+                NumPerTurn: 0;
+                Timer: 0;
+                Pos: 0;
+                AmmoType: amMine;
+                AttackVoice: sndLaugh);
+            Slot: 4;
+            TimeAfterTurn: 5000;
+            minAngle: 0;
+            maxAngle: 0;
+            isDamaging: true;
+            SkipTurns: 0;
+            PosCount: 1;
+            PosSprite: sprWater),
+            (NameId: sidDEagle;
+            NameTex: nil;
+            Probability: 20;
+            NumberInCase: 2;
+            Ammo: (Propz: 0;
+                Count: 3;
+                InitialCount: 3;
+                NumPerTurn: 3;
+                Timer: 0;
+                Pos: 0;
+                AmmoType: amDEagle;
+                AttackVoice: sndNone);
+            Slot: 2;
+            TimeAfterTurn: 3000;
+            minAngle: 0;
+            maxAngle: 0;
+            isDamaging: true;
+            SkipTurns: 0;
+            PosCount: 1;
+            PosSprite: sprWater),
+            (NameId: sidDynamite;
+            NameTex: nil;
+            Probability: 100;
+            NumberInCase: 1;
+            Ammo: (Propz: ammoprop_NoCrosshair or ammoprop_AttackInMove or ammoprop_DontHold or ammoprop_AltUse;
+                Count: 1;
+                InitialCount: 1;
+                NumPerTurn: 0;
+                Timer: 0;
+                Pos: 0;
+                AmmoType: amDynamite;
+                AttackVoice: sndLaugh);
+            Slot: 4;
+            TimeAfterTurn: 5000;
+            minAngle: 0;
+            maxAngle: 0;
+            isDamaging: true;
+            SkipTurns: 0;
+            PosCount: 1;
+            PosSprite: sprWater),
+            (NameId: sidFirePunch;
+            NameTex: nil;
+            Probability: 0;
+            NumberInCase: 1;
+            Ammo: (Propz: ammoprop_NoCrosshair or ammoprop_ForwMsgs or ammoprop_AttackInMove;
+                Count: AMMO_INFINITE;
+                InitialCount: AMMO_INFINITE;
+                NumPerTurn: 0;
+                Timer: 0;
+                Pos: 0;
+                AmmoType: amFirePunch;
+                AttackVoice: sndNone);
+            Slot: 3;
+            TimeAfterTurn: 3000;
+            MinAngle: 0;
+            maxAngle: 0;
+            isDamaging: true;
+            SkipTurns: 0;
+            PosCount: 1;
+            PosSprite: sprWater),
+            (NameId: sidWhip;
+            NameTex: nil;
+            Probability: 0;
+            NumberInCase: 1;
+            Ammo: (Propz: ammoprop_NoCrosshair;
+                Count: AMMO_INFINITE;
+                InitialCount: AMMO_INFINITE;
+                NumPerTurn: 0;
+                Timer: 0;
+                Pos: 0;
+                AmmoType: amWhip;
+                AttackVoice: sndNone);
+            Slot: 3;
+            TimeAfterTurn: 3000;
+            MinAngle: 0;
+            maxAngle: 0;
+            isDamaging: true;
+            SkipTurns: 0;
+            PosCount: 1;
+            PosSprite: sprWater),
+            (NameId: sidBaseballBat;
+            NameTex: nil;
+            Probability: 100;
+            NumberInCase: 1;
+            Ammo: (Propz: ammoprop_DontHold;
+                Count: 1;
+                InitialCount: 1;
+                NumPerTurn: 0;
+                Timer: 0;
+                Pos: 0;
+                AmmoType: amBaseballBat;
+                AttackVoice: sndNone);
+            Slot: 3;
+            TimeAfterTurn: 5000;
+            minAngle: 0;
+            maxAngle: cMaxAngle div 2;
+            isDamaging: true;
+            SkipTurns: 2;
+            PosCount: 1;
+            PosSprite: sprWater),
+            (NameId: sidParachute;
+            NameTex: nil;
+            Probability: 100;
+            NumberInCase: 1;
+            Ammo: (Propz: ammoprop_NoRoundEndHint or
+                          ammoprop_ForwMsgs or
+                            ammoprop_AttackInMove or
+                            ammoprop_NoCrosshair or
+                            ammoprop_DontHold or
+                            ammoprop_AltAttack;
+                Count: 2;
+                InitialCount: 2;
+                NumPerTurn: 0;
+                Timer: 0;
+                Pos: 0;
+                AmmoType: amParachute;
+                AttackVoice: sndNone);
+            Slot: 7;
+            TimeAfterTurn: 0;
+            minAngle: 0;
+            maxAngle: 0;
+            isDamaging: false;
+            SkipTurns: 0;
+            PosCount: 1;
+            PosSprite: sprWater),
+            (NameId: sidAirAttack;
+            NameTex: nil;
+            Probability: 100;
+            NumberInCase: 1;
+            Ammo: (Propz: ammoprop_NoCrosshair or
+                            ammoprop_NeedTarget or
+                            ammoprop_AttackingPut or
+                            ammoprop_DontHold or
+                            ammoprop_NotBorder;
+                Count: 1;
+                InitialCount: 1;
+                NumPerTurn: 0;
+                Timer: 0;
+                Pos: 0;
+                AmmoType: amAirAttack;
+                AttackVoice: sndIncoming);
+            Slot: 5;
+            TimeAfterTurn: 0;
+            minAngle: 0;
+            maxAngle: 0;
+            isDamaging: true;
+            SkipTurns: 5;
+            PosCount: 2;
+            PosSprite: sprAmAirplane),
+            (NameId: sidMineStrike;
+            NameTex: nil;
+            Probability: 200;
+            NumberInCase: 1;
+            Ammo: (Propz: ammoprop_NoCrosshair or
+                            ammoprop_NeedTarget or
+                            ammoprop_AttackingPut or
+                            ammoprop_DontHold or
+                            ammoprop_NotBorder;
+                Count: 1;
+                InitialCount: 1;
+                NumPerTurn: 0;
+                Timer: 0;
+                Pos: 0;
+                AmmoType: amMineStrike;
+                AttackVoice: sndNone);
+            Slot: 5;
+            TimeAfterTurn: 0;
+            minAngle: 0;
+            maxAngle: 0;
+            isDamaging: true;
+            SkipTurns: 5;
+            PosCount: 2;
+            PosSprite: sprAmAirplane),
+            (NameId: sidBlowTorch;
+            NameTex: nil;
+            Probability: 100;
+            NumberInCase: 2;
+            Ammo: (Propz: ammoprop_ForwMsgs;
+                Count: 1;
                 InitialCount: 1;
-				NumPerTurn: 0;
-				Timer: 0;
-				Pos: 0;
-				AmmoType: amSeduction;
-				AttackVoice: sndNone);
-			Slot: 2;
-			TimeAfterTurn: 0;
-			minAngle: 0;
-			maxAngle: 0;
-			isDamaging: false;
-			SkipTurns: 0;
-			PosCount: 1;
-			PosSprite: sprWater),
-			(NameId: sidWatermelon;
-			NameTex: nil;
-			Probability: 400;
-			NumberInCase: 1;
-			Ammo: (Propz: ammoprop_Timerable or ammoprop_Power or ammoprop_AltUse;
-				Count: 0;
-                InitialCount: 0;
-				NumPerTurn: 0;
-				Timer: 3000;
-				Pos: 0;
-				AmmoType: amWatermelon;
-				AttackVoice: sndMelon);
-			Slot: 1;
-			TimeAfterTurn: 3000;
-			minAngle: 0;
-			maxAngle: 0;
-			isDamaging: true;
-			SkipTurns: 0;
-			PosCount: 1;
-			PosSprite: sprWater),
-			(NameId: sidHellishBomb;
-			NameTex: nil;
-			Probability: 400;
-			NumberInCase: 1;
-			Ammo: (Propz:  ammoprop_Power or ammoprop_AltUse;
-				Count: 0;
-                InitialCount: 0;
-				NumPerTurn: 0;
-				Timer: 5000;
-				Pos: 0;
-				AmmoType: amHellishBomb;
-				AttackVoice: sndNone);
-			Slot: 4;
-			TimeAfterTurn: 3000;
-			minAngle: 0;
-			maxAngle: 0;
-			isDamaging: true;
-			SkipTurns: 0;
-			PosCount: 1;
-			PosSprite: sprWater),
-			(NameId: sidNapalm;
-			NameTex: nil;
-			Probability: 100;
-			NumberInCase: 1;
-			Ammo: (Propz: ammoprop_NoCrosshair or
-							ammoprop_NeedTarget or
-							ammoprop_AttackingPut or
-							ammoprop_DontHold or
-							ammoprop_NotBorder;
-				Count: 1;
-                InitialCount: 1;
-				NumPerTurn: 0;
-				Timer: 0;
-				Pos: 0;
-				AmmoType: amNapalm;
-				AttackVoice: sndNone);
-			Slot: 5;
-			TimeAfterTurn: 0;
-			minAngle: 0;
-			maxAngle: 0;
-			isDamaging: true;
-			SkipTurns: 7;
-			PosCount: 2;
-			PosSprite: sprAmAirplane),
-			(NameId: sidDrill;
-			NameTex: nil;
-			Probability: 300;
-			NumberInCase: 1;
-			Ammo: (Propz: ammoprop_Power or ammoprop_AltUse;
-				Count: AMMO_INFINITE;
-                InitialCount: AMMO_INFINITE;
-				NumPerTurn: 0;
-				Timer: 0;
-				Pos: 0;
-				AmmoType: amDrill;
-				AttackVoice: sndNone);
-			Slot: 0;
-			TimeAfterTurn: 3000;
-			minAngle: 0;
-			maxAngle: 0;
-			isDamaging: true;
-			SkipTurns: 0;
-			PosCount: 1;
-			PosSprite: sprDrill),
-			(NameId: sidBallgun;
-			NameTex: nil;
-			Probability: 400;
-			NumberInCase: 1;
-			Ammo: (Propz:  ammoprop_ForwMsgs or ammoprop_DontHold;
-				Count: AMMO_INFINITE;
-                InitialCount: AMMO_INFINITE;
-				NumPerTurn: 0;
-				Timer: 5001;
-				Pos: 0;
-				AmmoType: amBallgun;
-				AttackVoice: sndNone);
-			Slot: 2;
-			TimeAfterTurn: 0;
-			minAngle: 0;
-			maxAngle: 0;
-			isDamaging: true;
-			SkipTurns: 0;
-			PosCount: 1;
-			PosSprite: sprWater),
-			(NameId: sidRCPlane;
-			NameTex: nil;
-			Probability: 200;
-			NumberInCase: 1;
-			Ammo: (Propz: ammoprop_ForwMsgs{ or
-							ammoprop_DontHold or
-							ammoprop_AltAttack};
-				Count: 1;
-                InitialCount: 1;
-				NumPerTurn: 0;
-				Timer: 0;
-				Pos: 0;
-				AmmoType: amRCPlane;
-				AttackVoice: sndNone);
-			Slot: 6;
-			TimeAfterTurn: 0;
-			minAngle: 0;
-			maxAngle: 0;
-			isDamaging: true;
-			SkipTurns: 4;
-			PosCount: 1;
-			PosSprite: sprWater),
-			(NameId: sidLowGravity;
-			NameTex: nil;
-			Probability: 20;
-			NumberInCase: 1;
-			Ammo: (Propz: ammoprop_NoRoundEndHint or
-						  ammoprop_NoCrosshair or
-						  ammoprop_DontHold or
-						  ammoprop_AltUse or
-                          ammoprop_Utility;
-					Count: 1;
-                    InitialCount: 1;
-					NumPerTurn: 0;
-					Timer: 0;
-					Pos: 0;
-					AmmoType: amLowGravity;
-					AttackVoice: sndNone);
-			Slot: 8;
-			TimeAfterTurn: 0;
-			minAngle: 0;
-			maxAngle: 0;
-			isDamaging: false;
-			SkipTurns: 0;
-			PosCount: 1;
-			PosSprite: sprWater),
-			(NameId: sidExtraDamage;
-			NameTex: nil;
-			Probability: 15;
-			NumberInCase: 1;
-			Ammo: (Propz: ammoprop_NoRoundEndHint or
-						  ammoprop_NoCrosshair or
-						  ammoprop_DontHold or
-						  ammoprop_AltUse or
-                          ammoprop_Utility;
-					Count: 1;
+                NumPerTurn: 0;
+                Timer: 0;
+                Pos: 0;
+                AmmoType: amBlowTorch;
+                AttackVoice: sndNone);
+            Slot: 6;
+            TimeAfterTurn: 3000;
+            minAngle: 768;
+            maxAngle: 1280;
+            isDamaging: false;
+            SkipTurns: 0;
+            PosCount: 1;
+            PosSprite: sprWater),
+            (NameId: sidGirder;
+            NameTex: nil;
+            Probability: 150;
+            NumberInCase: 3;
+            Ammo: (Propz: ammoprop_NoRoundEndHint or
+                          ammoprop_NoCrosshair or
+                            ammoprop_NeedTarget or
+                            ammoprop_AttackingPut;
+                    Count: 1;
                     InitialCount: 1;
-					NumPerTurn: 0;
-					Timer: 0;
-					Pos: 0;
-					AmmoType: amExtraDamage;
-					AttackVoice: sndNone);
-			Slot: 8;
-			TimeAfterTurn: 0;
-			minAngle: 0;
-			maxAngle: 0;
-			isDamaging: false;
-			SkipTurns: 0;
-			PosCount: 1;
-			PosSprite: sprWater),
-			(NameId: sidInvulnerable;
-			NameTex: nil;
-			Probability: 20;
-			NumberInCase: 1;
-			Ammo: (Propz: ammoprop_NoRoundEndHint or
-						  ammoprop_NoCrosshair or
-						  ammoprop_DontHold or
-						  ammoprop_AltUse or
+                    NumPerTurn: 0;
+                    Timer: 0;
+                    Pos: 0;
+                    AmmoType: amGirder;
+                    AttackVoice: sndNone);
+            Slot: 6;
+            TimeAfterTurn: 3000;
+            minAngle: 0;
+            maxAngle: 0;
+            isDamaging: false;
+            SkipTurns: 0;
+            PosCount: 8;
+            PosSprite: sprAmGirder),
+            (NameId: sidTeleport;
+            NameTex: nil;
+            Probability: 200;
+            NumberInCase: 1;
+            Ammo: (Propz: ammoprop_ForwMsgs or
+                            ammoprop_NoCrosshair or
+                            ammoprop_NeedTarget or
+                            ammoprop_AttackingPut or
+                            ammoprop_DontHold;
+                Count: 2;
+                InitialCount: 2;
+                NumPerTurn: 0;
+                Timer: 0;
+                Pos: 0;
+                AmmoType: amTeleport;
+                AttackVoice: sndNone);
+            Slot: 7;
+            TimeAfterTurn: 0;
+            minAngle: 0;
+            maxAngle: 0;
+            isDamaging: false;
+            SkipTurns: 0;
+            PosCount: 2;
+            PosSprite: sprAmTeleport),
+            (NameId: sidSwitch;
+            NameTex: nil;
+            Probability: 100;
+            NumberInCase: 1;
+            Ammo: (Propz: ammoprop_NoRoundEndHint or
+                          ammoprop_ForwMsgs or
+                            ammoprop_NoCrosshair or
+                            ammoprop_DontHold;
+                    Count: 3;
+                    InitialCount: 3;
+                    NumPerTurn: 0;
+                    Timer: 0;
+                    Pos: 0;
+                    AmmoType: amSwitch;
+                    AttackVoice: sndNone);
+            Slot: 8;
+            TimeAfterTurn: 0;
+            minAngle: 0;
+            maxAngle: 0;
+            isDamaging: false;
+            SkipTurns: 0;
+            PosCount: 1;
+            PosSprite: sprWater),
+            (NameId: sidMortar;
+            NameTex: nil;
+            Probability: 100;
+            NumberInCase: 4;
+            Ammo: (Propz: 0;
+                Count: 4;
+                InitialCount: 4;
+                NumPerTurn: 0;
+                Timer: 0;
+                Pos: 0;
+                AmmoType: amMortar;
+                AttackVoice: sndNone);
+            Slot: 1;
+            TimeAfterTurn: 3000;
+            minAngle: 0;
+            maxAngle: 0;
+            isDamaging: true;
+            SkipTurns: 0;
+            PosCount: 1;
+            PosSprite: sprWater),
+            (NameId: sidKamikaze;
+            NameTex: nil;
+            Probability: 100;
+            NumberInCase: 1;
+            Ammo: (Propz: ammoprop_ForwMsgs or ammoprop_DontHold or ammoprop_AttackInMove;
+                Count: 1;
+                InitialCount: 1;
+                NumPerTurn: 0;
+                Timer: 0;
+                Pos: 0;
+                AmmoType: amKamikaze;
+                AttackVoice: sndNone);
+            Slot: 3;
+            TimeAfterTurn: 0;
+            minAngle: 0;
+            maxAngle: 0;
+            isDamaging: true;
+            SkipTurns: 0;
+            PosCount: 1;
+            PosSprite: sprWater),
+            (NameId: sidCake;
+            NameTex: nil;
+            Probability: 100;
+            NumberInCase: 1;
+            Ammo: (Propz: ammoprop_ForwMsgs or ammoprop_NoCrosshair or ammoprop_DontHold;
+                Count: 1;
+                InitialCount: 1;
+                NumPerTurn: 0;
+                Timer: 0;
+                Pos: 0;
+                AmmoType: amCake;
+                AttackVoice: sndLaugh);
+            Slot: 4;
+            TimeAfterTurn: 0;
+            minAngle: 0;
+            maxAngle: 0;
+            isDamaging: true;
+            SkipTurns: 4;
+            PosCount: 1;
+            PosSprite: sprWater),
+            (NameId: sidSeduction;
+            NameTex: nil;
+            Probability: 100;
+            NumberInCase: 1;
+            Ammo: (Propz: ammoprop_ForwMsgs or ammoprop_DontHold;
+                Count: 1;
+                InitialCount: 1;
+                NumPerTurn: 0;
+                Timer: 0;
+                Pos: 0;
+                AmmoType: amSeduction;
+                AttackVoice: sndNone);
+            Slot: 2;
+            TimeAfterTurn: 0;
+            minAngle: 0;
+            maxAngle: 0;
+            isDamaging: false;
+            SkipTurns: 0;
+            PosCount: 1;
+            PosSprite: sprWater),
+            (NameId: sidWatermelon;
+            NameTex: nil;
+            Probability: 400;
+            NumberInCase: 1;
+            Ammo: (Propz: ammoprop_Timerable or ammoprop_Power or ammoprop_AltUse;
+                Count: 0;
+                InitialCount: 0;
+                NumPerTurn: 0;
+                Timer: 3000;
+                Pos: 0;
+                AmmoType: amWatermelon;
+                AttackVoice: sndMelon);
+            Slot: 1;
+            TimeAfterTurn: 3000;
+            minAngle: 0;
+            maxAngle: 0;
+            isDamaging: true;
+            SkipTurns: 0;
+            PosCount: 1;
+            PosSprite: sprWater),
+            (NameId: sidHellishBomb;
+            NameTex: nil;
+            Probability: 400;
+            NumberInCase: 1;
+            Ammo: (Propz:  ammoprop_Power or ammoprop_AltUse;
+                Count: 0;
+                InitialCount: 0;
+                NumPerTurn: 0;
+                Timer: 5000;
+                Pos: 0;
+                AmmoType: amHellishBomb;
+                AttackVoice: sndNone);
+            Slot: 4;
+            TimeAfterTurn: 3000;
+            minAngle: 0;
+            maxAngle: 0;
+            isDamaging: true;
+            SkipTurns: 0;
+            PosCount: 1;
+            PosSprite: sprWater),
+            (NameId: sidNapalm;
+            NameTex: nil;
+            Probability: 100;
+            NumberInCase: 1;
+            Ammo: (Propz: ammoprop_NoCrosshair or
+                            ammoprop_NeedTarget or
+                            ammoprop_AttackingPut or
+                            ammoprop_DontHold or
+                            ammoprop_NotBorder;
+                Count: 1;
+                InitialCount: 1;
+                NumPerTurn: 0;
+                Timer: 0;
+                Pos: 0;
+                AmmoType: amNapalm;
+                AttackVoice: sndNone);
+            Slot: 5;
+            TimeAfterTurn: 0;
+            minAngle: 0;
+            maxAngle: 0;
+            isDamaging: true;
+            SkipTurns: 7;
+            PosCount: 2;
+            PosSprite: sprAmAirplane),
+            (NameId: sidDrill;
+            NameTex: nil;
+            Probability: 300;
+            NumberInCase: 1;
+            Ammo: (Propz: ammoprop_Power or ammoprop_AltUse;
+                Count: AMMO_INFINITE;
+                InitialCount: AMMO_INFINITE;
+                NumPerTurn: 0;
+                Timer: 0;
+                Pos: 0;
+                AmmoType: amDrill;
+                AttackVoice: sndNone);
+            Slot: 0;
+            TimeAfterTurn: 3000;
+            minAngle: 0;
+            maxAngle: 0;
+            isDamaging: true;
+            SkipTurns: 0;
+            PosCount: 1;
+            PosSprite: sprDrill),
+            (NameId: sidBallgun;
+            NameTex: nil;
+            Probability: 400;
+            NumberInCase: 1;
+            Ammo: (Propz:  ammoprop_ForwMsgs or ammoprop_DontHold;
+                Count: AMMO_INFINITE;
+                InitialCount: AMMO_INFINITE;
+                NumPerTurn: 0;
+                Timer: 5001;
+                Pos: 0;
+                AmmoType: amBallgun;
+                AttackVoice: sndNone);
+            Slot: 2;
+            TimeAfterTurn: 0;
+            minAngle: 0;
+            maxAngle: 0;
+            isDamaging: true;
+            SkipTurns: 0;
+            PosCount: 1;
+            PosSprite: sprWater),
+            (NameId: sidRCPlane;
+            NameTex: nil;
+            Probability: 200;
+            NumberInCase: 1;
+            Ammo: (Propz: ammoprop_ForwMsgs{ or
+                            ammoprop_DontHold or
+                            ammoprop_AltAttack};
+                Count: 1;
+                InitialCount: 1;
+                NumPerTurn: 0;
+                Timer: 0;
+                Pos: 0;
+                AmmoType: amRCPlane;
+                AttackVoice: sndNone);
+            Slot: 6;
+            TimeAfterTurn: 0;
+            minAngle: 0;
+            maxAngle: 0;
+            isDamaging: true;
+            SkipTurns: 4;
+            PosCount: 1;
+            PosSprite: sprWater),
+            (NameId: sidLowGravity;
+            NameTex: nil;
+            Probability: 20;
+            NumberInCase: 1;
+            Ammo: (Propz: ammoprop_NoRoundEndHint or
+                          ammoprop_NoCrosshair or
+                          ammoprop_DontHold or
+                          ammoprop_AltUse or
                           ammoprop_Utility;
-					Count: 1;
-                    InitialCount: 1;
-					NumPerTurn: 0;
-					Timer: 0;
-					Pos: 0;
-					AmmoType: amInvulnerable;
-					AttackVoice: sndNone);
-			Slot: 8;
-			TimeAfterTurn: 0;
-			minAngle: 0;
-			maxAngle: 0;
-			isDamaging: false;
-			SkipTurns: 0;
-			PosCount: 1;
-			PosSprite: sprWater),
-			(NameId: sidExtraTime;
-			NameTex: nil;
-			Probability: 30;
-			NumberInCase: 1;
-			Ammo: (Propz: ammoprop_NoRoundEndHint or
-						  ammoprop_NoCrosshair or
-						  ammoprop_DontHold or
-						  ammoprop_AltUse or
-                          ammoprop_Utility;
-					Count: 1;
-					InitialCount: 1;
-					NumPerTurn: 0;
-					Timer: 0;
-					Pos: 0;
-					AmmoType: amExtraTime;
-					AttackVoice: sndNone);
-			Slot: 7;
-			TimeAfterTurn: 0;
-			minAngle: 0;
-			maxAngle: 0;
-			isDamaging: false;
-			SkipTurns: 0;
-			PosCount: 1;
-			PosSprite: sprWater),
-			(NameId: sidLaserSight;
-			NameTex: nil;
-			Probability: 15;
-			NumberInCase: 1;
-			Ammo: (Propz: ammoprop_NoRoundEndHint or
-						  ammoprop_NoCrosshair or
-						  ammoprop_DontHold or
-						  ammoprop_AltUse or
-                          ammoprop_Utility;
-					Count: 1;
+                    Count: 1;
                     InitialCount: 1;
-					NumPerTurn: 0;
-					Timer: 0;
-					Pos: 0;
-					AmmoType: amLaserSight;
-					AttackVoice: sndNone);
-			Slot: 7;
-			TimeAfterTurn: 0;
-			minAngle: 0;
-			maxAngle: 0;
-			isDamaging: false;
-			SkipTurns: 0;
-			PosCount: 1;
-			PosSprite: sprWater),
-			(NameId: sidVampiric;
-			NameTex: nil;
-			Probability: 15;
-			NumberInCase: 1;
-			Ammo: (Propz: ammoprop_NoRoundEndHint or
-						  ammoprop_NoCrosshair or
-						  ammoprop_DontHold or
-						  ammoprop_AltUse or
+                    NumPerTurn: 0;
+                    Timer: 0;
+                    Pos: 0;
+                    AmmoType: amLowGravity;
+                    AttackVoice: sndNone);
+            Slot: 8;
+            TimeAfterTurn: 0;
+            minAngle: 0;
+            maxAngle: 0;
+            isDamaging: false;
+            SkipTurns: 0;
+            PosCount: 1;
+            PosSprite: sprWater),
+            (NameId: sidExtraDamage;
+            NameTex: nil;
+            Probability: 15;
+            NumberInCase: 1;
+            Ammo: (Propz: ammoprop_NoRoundEndHint or
+                          ammoprop_NoCrosshair or
+                          ammoprop_DontHold or
+                          ammoprop_AltUse or
+                          ammoprop_Utility;
+                    Count: 1;
+                    InitialCount: 1;
+                    NumPerTurn: 0;
+                    Timer: 0;
+                    Pos: 0;
+                    AmmoType: amExtraDamage;
+                    AttackVoice: sndNone);
+            Slot: 8;
+            TimeAfterTurn: 0;
+            minAngle: 0;
+            maxAngle: 0;
+            isDamaging: false;
+            SkipTurns: 0;
+            PosCount: 1;
+            PosSprite: sprWater),
+            (NameId: sidInvulnerable;
+            NameTex: nil;
+            Probability: 20;
+            NumberInCase: 1;
+            Ammo: (Propz: ammoprop_NoRoundEndHint or
+                          ammoprop_NoCrosshair or
+                          ammoprop_DontHold or
+                          ammoprop_AltUse or
+                          ammoprop_Utility;
+                    Count: 1;
+                    InitialCount: 1;
+                    NumPerTurn: 0;
+                    Timer: 0;
+                    Pos: 0;
+                    AmmoType: amInvulnerable;
+                    AttackVoice: sndNone);
+            Slot: 8;
+            TimeAfterTurn: 0;
+            minAngle: 0;
+            maxAngle: 0;
+            isDamaging: false;
+            SkipTurns: 0;
+            PosCount: 1;
+            PosSprite: sprWater),
+            (NameId: sidExtraTime;
+            NameTex: nil;
+            Probability: 30;
+            NumberInCase: 1;
+            Ammo: (Propz: ammoprop_NoRoundEndHint or
+                          ammoprop_NoCrosshair or
+                          ammoprop_DontHold or
+                          ammoprop_AltUse or
                           ammoprop_Utility;
-					Count: 1;
+                    Count: 1;
+                    InitialCount: 1;
+                    NumPerTurn: 0;
+                    Timer: 0;
+                    Pos: 0;
+                    AmmoType: amExtraTime;
+                    AttackVoice: sndNone);
+            Slot: 7;
+            TimeAfterTurn: 0;
+            minAngle: 0;
+            maxAngle: 0;
+            isDamaging: false;
+            SkipTurns: 0;
+            PosCount: 1;
+            PosSprite: sprWater),
+            (NameId: sidLaserSight;
+            NameTex: nil;
+            Probability: 15;
+            NumberInCase: 1;
+            Ammo: (Propz: ammoprop_NoRoundEndHint or
+                          ammoprop_NoCrosshair or
+                          ammoprop_DontHold or
+                          ammoprop_AltUse or
+                          ammoprop_Utility;
+                    Count: 1;
                     InitialCount: 1;
-					NumPerTurn: 0;
-					Timer: 0;
-					Pos: 0;
-					AmmoType: amVampiric;
-					AttackVoice: sndNone);
-			Slot: 6;
-			TimeAfterTurn: 0;
-			minAngle: 0;
-			maxAngle: 0;
-			isDamaging: false;
-			SkipTurns: 0;
-			PosCount: 1;
-			PosSprite: sprWater),
-			(NameId: sidSniperRifle;
-			NameTex: nil;
-			Probability: 20;
-			NumberInCase: 2;
-			Ammo: (Propz: 0;
-				Count: 2;
+                    NumPerTurn: 0;
+                    Timer: 0;
+                    Pos: 0;
+                    AmmoType: amLaserSight;
+                    AttackVoice: sndNone);
+            Slot: 7;
+            TimeAfterTurn: 0;
+            minAngle: 0;
+            maxAngle: 0;
+            isDamaging: false;
+            SkipTurns: 0;
+            PosCount: 1;
+            PosSprite: sprWater),
+            (NameId: sidVampiric;
+            NameTex: nil;
+            Probability: 15;
+            NumberInCase: 1;
+            Ammo: (Propz: ammoprop_NoRoundEndHint or
+                          ammoprop_NoCrosshair or
+                          ammoprop_DontHold or
+                          ammoprop_AltUse or
+                          ammoprop_Utility;
+                    Count: 1;
+                    InitialCount: 1;
+                    NumPerTurn: 0;
+                    Timer: 0;
+                    Pos: 0;
+                    AmmoType: amVampiric;
+                    AttackVoice: sndNone);
+            Slot: 6;
+            TimeAfterTurn: 0;
+            minAngle: 0;
+            maxAngle: 0;
+            isDamaging: false;
+            SkipTurns: 0;
+            PosCount: 1;
+            PosSprite: sprWater),
+            (NameId: sidSniperRifle;
+            NameTex: nil;
+            Probability: 20;
+            NumberInCase: 2;
+            Ammo: (Propz: 0;
+                Count: 2;
                 InitialCount: 2;
-				NumPerTurn: 1;
-				Timer: 0;
-				Pos: 0;
-				AmmoType: amSniperRifle;
-				AttackVoice: sndNone);
-			Slot: 2;
-			TimeAfterTurn: 3000;
-			minAngle: 0;
-			maxAngle: 0;
-			isDamaging: true;
-			SkipTurns: 0;
-			PosCount: 1;
-			PosSprite: sprWater),
-			(NameId: sidJetpack;
-			NameTex: nil;
-			Probability: 20;
-			NumberInCase: 1;
-			Ammo: (Propz: ammoprop_NoRoundEndHint or
-						  ammoprop_ForwMsgs or
-							ammoprop_AttackInMove or
-							ammoprop_NoCrosshair or
-							ammoprop_DontHold or
-							ammoprop_AltAttack;
-				Count: 1;
+                NumPerTurn: 1;
+                Timer: 0;
+                Pos: 0;
+                AmmoType: amSniperRifle;
+                AttackVoice: sndNone);
+            Slot: 2;
+            TimeAfterTurn: 3000;
+            minAngle: 0;
+            maxAngle: 0;
+            isDamaging: true;
+            SkipTurns: 0;
+            PosCount: 1;
+            PosSprite: sprWater),
+            (NameId: sidJetpack;
+            NameTex: nil;
+            Probability: 20;
+            NumberInCase: 1;
+            Ammo: (Propz: ammoprop_NoRoundEndHint or
+                          ammoprop_ForwMsgs or
+                            ammoprop_AttackInMove or
+                            ammoprop_NoCrosshair or
+                            ammoprop_DontHold or
+                            ammoprop_AltAttack;
+                Count: 1;
                 InitialCount: 1;
-				NumPerTurn: 1;
-				Timer: 0;
-				Pos: 0;
-				AmmoType: amJetpack;
-				AttackVoice: sndNone);
-			Slot: 3;
-			TimeAfterTurn: 3000;
-			minAngle: 0;
-			maxAngle: 0;
-			isDamaging: false;
-			SkipTurns: 0;
-			PosCount: 1;
-			PosSprite: sprWater),
-			(NameId: sidMolotov;
-			NameTex: nil;
-			Probability: 0;
-			NumberInCase: 1;
-			Ammo: (Propz: ammoprop_Power or ammoprop_AltUse;
-				Count: AMMO_INFINITE;
+                NumPerTurn: 1;
+                Timer: 0;
+                Pos: 0;
+                AmmoType: amJetpack;
+                AttackVoice: sndNone);
+            Slot: 3;
+            TimeAfterTurn: 3000;
+            minAngle: 0;
+            maxAngle: 0;
+            isDamaging: false;
+            SkipTurns: 0;
+            PosCount: 1;
+            PosSprite: sprWater),
+            (NameId: sidMolotov;
+            NameTex: nil;
+            Probability: 0;
+            NumberInCase: 1;
+            Ammo: (Propz: ammoprop_Power or ammoprop_AltUse;
+                Count: AMMO_INFINITE;
                 InitialCount: AMMO_INFINITE;
-				NumPerTurn: 0;
-				Timer: 3000;
-				Pos: 0;
-				AmmoType: amMolotov;
-				AttackVoice: sndNone);
-			Slot: 1;
-			TimeAfterTurn: 3000;
-			minAngle: 0;
-			maxAngle: 0;
-			isDamaging: true;
-			SkipTurns: 0;
-			PosCount: 1;
-			PosSprite: sprWater)
-			);
+                NumPerTurn: 0;
+                Timer: 3000;
+                Pos: 0;
+                AmmoType: amMolotov;
+                AttackVoice: sndNone);
+            Slot: 1;
+            TimeAfterTurn: 3000;
+            minAngle: 0;
+            maxAngle: 0;
+            isDamaging: true;
+            SkipTurns: 0;
+            PosCount: 1;
+            PosSprite: sprWater)
+            );
 
 
-	conversionFormat: TSDL_PixelFormat = (
-		palette: nil;
-		BitsPerPixel : 32;
-		BytesPerPixel: 4;
-		Rloss : 0;
-		Gloss : 0;
-		Bloss : 0;
-		Aloss : 0;
+    conversionFormat: TSDL_PixelFormat = (
+        palette: nil;
+        BitsPerPixel : 32;
+        BytesPerPixel: 4;
+        Rloss : 0;
+        Gloss : 0;
+        Bloss : 0;
+        Aloss : 0;
 {$IFDEF ENDIAN_LITTLE}
-		Rshift: 0;
-		Gshift: 8;
-		Bshift: 16;
-		Ashift: 24;
+        Rshift: 0;
+        Gshift: 8;
+        Bshift: 16;
+        Ashift: 24;
 {$ELSE}
-		Rshift: 24;
-		Gshift: 16;
-		Bshift: 8;
-		Ashift: 0;
+        Rshift: 24;
+        Gshift: 16;
+        Bshift: 8;
+        Ashift: 0;
 {$ENDIF}
-		RMask : RMask;
-		GMask : GMask;
-		BMask : BMask;
-		AMask : AMask;
-		colorkey: 0;
-		alpha : 255
-	);
-			
+        RMask : RMask;
+        GMask : GMask;
+        BMask : BMask;
+        AMask : AMask;
+        colorkey: 0;
+        alpha : 255
+    );
+            
 
 procedure init_uConsts;
 procedure free_uConsts;
@@ -1706,29 +1706,29 @@
 
 procedure init_uConsts;
 var cPathz: array[TPathType] of shortstring = (
-		'',                              // ptNone
-		'',                              // ptData
-		'Graphics',                      // ptGraphics
-		'Themes',                        // ptThemes
-		'Themes/avematan',               // ptCurrTheme
-		'Teams',                         // ptTeams
-		'Maps',                          // ptMaps
-		'',                              // ptMapCurrent
-		'Demos',                         // ptDemos
-		'Sounds',                        // ptSounds
-		'Graphics/Graves',               // ptGraves
-		'Fonts',                         // ptFonts
-		'Forts',                         // ptForts
-		'Locale',                        // ptLocale
-		'Graphics/AmmoMenu',             // ptAmmoMenu
-		'Graphics/Hedgehog',             // ptHedgehog
-		'Sounds/voices',                 // ptVoices
-		'Graphics/Hats',                 // ptHats
-		'Graphics/Flags'                 // ptFlags
-	);
+        '',                              // ptNone
+        '',                              // ptData
+        'Graphics',                      // ptGraphics
+        'Themes',                        // ptThemes
+        'Themes/avematan',               // ptCurrTheme
+        'Teams',                         // ptTeams
+        'Maps',                          // ptMaps
+        '',                              // ptMapCurrent
+        'Demos',                         // ptDemos
+        'Sounds',                        // ptSounds
+        'Graphics/Graves',               // ptGraves
+        'Fonts',                         // ptFonts
+        'Forts',                         // ptForts
+        'Locale',                        // ptLocale
+        'Graphics/AmmoMenu',             // ptAmmoMenu
+        'Graphics/Hedgehog',             // ptHedgehog
+        'Sounds/voices',                 // ptVoices
+        'Graphics/Hats',                 // ptHats
+        'Graphics/Flags'                 // ptFlags
+    );
 begin
-	PathPrefix := './';
-	Pathz:= cPathz;
+    PathPrefix := './';
+    Pathz:= cPathz;
 end;
 
 procedure free_uConsts;
--- a/hedgewars/uFloat.pas	Sat Mar 06 10:54:24 2010 +0000
+++ b/hedgewars/uFloat.pas	Sat Mar 06 10:59:20 2010 +0000
@@ -291,9 +291,9 @@
 begin
 hwSqr.isNegative:= false;
 hwSqr.QWordValue:=
-	  ((QWord(t.Round) * t.Round) shl 32)
-	+ QWord(t.Round) * t.Frac * 2
-	+ ((QWord(t.Frac) * t.Frac) shr 32);
+      ((QWord(t.Round) * t.Round) shl 32)
+    + QWord(t.Round) * t.Frac * 2
+    + ((QWord(t.Frac) * t.Frac) shr 32);
 end;
 
 function hwSqrt(const t: hwFloat): hwFloat;
--- a/hedgewars/uGame.pas	Sat Mar 06 10:54:24 2010 +0000
+++ b/hedgewars/uGame.pas	Sat Mar 06 10:59:20 2010 +0000
@@ -34,11 +34,11 @@
 begin
 if isPaused then exit;
 if (not CurrentTeam^.ExtDriven) then
-	begin
-	NetGetNextCmd; // its for the case of receiving "/say" message
-	isInLag:= false;
-	SendKeepAliveMessage(Lag)
-	end;
+    begin
+    NetGetNextCmd; // its for the case of receiving "/say" message
+    isInLag:= false;
+    SendKeepAliveMessage(Lag)
+    end;
 if Lag > 100 then Lag:= 100
 else if (GameType = gmtSave) or (fastUntilLag and (GameType = gmtNet)) then Lag:= 2500;
 if (GameType = gmtDemo) and isSpeed then Lag:= Lag * 10;
--- a/hedgewars/uGears.pas	Sat Mar 06 10:54:24 2010 +0000
+++ b/hedgewars/uGears.pas	Sat Mar 06 10:59:20 2010 +0000
@@ -24,41 +24,41 @@
 
     
 type
-	PGear = ^TGear;
-	TGearStepProcedure = procedure (Gear: PGear);
-	TGear = record
-			NextGear, PrevGear: PGear;
-			Active: Boolean;
-			Invulnerable: Boolean;
-			RenderTimer: Boolean;
-			Ammo : PAmmo;
-			State : Longword;
-			X : hwFloat;
-			Y : hwFloat;
-			dX: hwFloat;
-			dY: hwFloat;
-			Kind: TGearType;
-			Pos: Longword;
-			doStep: TGearStepProcedure;
-			Radius: LongInt;
-			Angle, Power : Longword;
-			DirAngle: real;
-			Timer : LongWord;
-			Elasticity: hwFloat;
-			Friction  : hwFloat;
-			Message, MsgParam : Longword;
-			Hedgehog: pointer;
-			Health, Damage, Karma: LongInt;
-			CollisionIndex: LongInt;
-			Tag: LongInt;
-			Tex: PTexture;
-			Z: Longword;
-			IntersectGear: PGear;
-			TriggerId: Longword;
-			FlightTime: Longword;
-			uid: Longword;
-			SoundChannel: LongInt
-		end;
+    PGear = ^TGear;
+    TGearStepProcedure = procedure (Gear: PGear);
+    TGear = record
+            NextGear, PrevGear: PGear;
+            Active: Boolean;
+            Invulnerable: Boolean;
+            RenderTimer: Boolean;
+            Ammo : PAmmo;
+            State : Longword;
+            X : hwFloat;
+            Y : hwFloat;
+            dX: hwFloat;
+            dY: hwFloat;
+            Kind: TGearType;
+            Pos: Longword;
+            doStep: TGearStepProcedure;
+            Radius: LongInt;
+            Angle, Power : Longword;
+            DirAngle: real;
+            Timer : LongWord;
+            Elasticity: hwFloat;
+            Friction  : hwFloat;
+            Message, MsgParam : Longword;
+            Hedgehog: pointer;
+            Health, Damage, Karma: LongInt;
+            CollisionIndex: LongInt;
+            Tag: LongInt;
+            Tex: PTexture;
+            Z: Longword;
+            IntersectGear: PGear;
+            TriggerId: Longword;
+            FlightTime: Longword;
+            uid: Longword;
+            SoundChannel: LongInt
+        end;
 
 var AllInactive: boolean;
     PrvInactive: boolean;
@@ -94,11 +94,11 @@
 
 implementation
 uses uWorld, uMisc, uStore, uConsole, uSound, uTeams, uRandom, uCollisions, uLand, uIO, uLandGraphics,
-	uAIMisc, uLocale, uAI, uAmmos, uTriggers, uStats, uVisualGears, uScript, 
+    uAIMisc, uLocale, uAI, uAmmos, uTriggers, uStats, uVisualGears, uScript, 
 {$IFDEF GLES11}
-	gles11;
+    gles11;
 {$ELSE}
-	GL;
+    GL;
 {$ENDIF}
 
 const MAXROPEPOINTS = 384;
@@ -133,89 +133,89 @@
 {$INCLUDE "HHHandlers.inc"}
 
 const doStepHandlers: array[TGearType] of TGearStepProcedure = (
-			@doStepBomb,
-			@doStepHedgehog,
-			@doStepGrenade,
-			@doStepHealthTag,
-			@doStepGrave,
-			@doStepUFO,
-			@doStepShotgunShot,
-			@doStepPickHammer,
-			@doStepRope,
-			@doStepSmokeTrace,
-			@doStepExplosion,
-			@doStepMine,
-			@doStepCase,
-			@doStepDEagleShot,
-			@doStepDynamite,
-			@doStepBomb,
-			@doStepCluster,
-			@doStepShover,
-			@doStepFlame,
-			@doStepFirePunch,
-			@doStepActionTimer,
-			@doStepActionTimer,
-			@doStepActionTimer,
-			@doStepParachute,
-			@doStepAirAttack,
-			@doStepAirBomb,
-			@doStepBlowTorch,
-			@doStepGirder,
-			@doStepTeleport,
-			@doStepSwitcher,
-			@doStepTarget,
-			@doStepMortar,
-			@doStepWhip,
-			@doStepKamikaze,
-			@doStepCake,
-			@doStepSeduction,
-			@doStepWatermelon,
-			@doStepCluster,
-			@doStepBomb,
-			@doStepSmokeTrace,
-			@doStepWaterUp,
-			@doStepDrill,
-			@doStepBallgun,
-			@doStepBomb,
-			@doStepRCPlane,
-			@doStepSniperRifleShot,
-			@doStepJetpack,
-			@doStepMolotov,
-			@doStepCase
-			);
+            @doStepBomb,
+            @doStepHedgehog,
+            @doStepGrenade,
+            @doStepHealthTag,
+            @doStepGrave,
+            @doStepUFO,
+            @doStepShotgunShot,
+            @doStepPickHammer,
+            @doStepRope,
+            @doStepSmokeTrace,
+            @doStepExplosion,
+            @doStepMine,
+            @doStepCase,
+            @doStepDEagleShot,
+            @doStepDynamite,
+            @doStepBomb,
+            @doStepCluster,
+            @doStepShover,
+            @doStepFlame,
+            @doStepFirePunch,
+            @doStepActionTimer,
+            @doStepActionTimer,
+            @doStepActionTimer,
+            @doStepParachute,
+            @doStepAirAttack,
+            @doStepAirBomb,
+            @doStepBlowTorch,
+            @doStepGirder,
+            @doStepTeleport,
+            @doStepSwitcher,
+            @doStepTarget,
+            @doStepMortar,
+            @doStepWhip,
+            @doStepKamikaze,
+            @doStepCake,
+            @doStepSeduction,
+            @doStepWatermelon,
+            @doStepCluster,
+            @doStepBomb,
+            @doStepSmokeTrace,
+            @doStepWaterUp,
+            @doStepDrill,
+            @doStepBallgun,
+            @doStepBomb,
+            @doStepRCPlane,
+            @doStepSniperRifleShot,
+            @doStepJetpack,
+            @doStepMolotov,
+            @doStepCase
+            );
 
 procedure InsertGearToList(Gear: PGear);
 var tmp, ptmp: PGear;
 begin
 if GearsList = nil then
-	GearsList:= Gear
-	else begin
-	tmp:= GearsList;
-	ptmp:= GearsList;
-	while (tmp <> nil) and (tmp^.Z <= Gear^.Z) do
-		begin
-		ptmp:= tmp;
-		tmp:= tmp^.NextGear
-		end;
+    GearsList:= Gear
+    else begin
+    tmp:= GearsList;
+    ptmp:= GearsList;
+    while (tmp <> nil) and (tmp^.Z <= Gear^.Z) do
+        begin
+        ptmp:= tmp;
+        tmp:= tmp^.NextGear
+        end;
 
-	if ptmp <> nil then
-		begin
-		Gear^.NextGear:= ptmp^.NextGear;
-		Gear^.PrevGear:= ptmp;
-		if ptmp^.NextGear <> nil then ptmp^.NextGear^.PrevGear:= Gear;
-		ptmp^.NextGear:= Gear
-		end
-	else GearsList:= Gear
-	end
+    if ptmp <> nil then
+        begin
+        Gear^.NextGear:= ptmp^.NextGear;
+        Gear^.PrevGear:= ptmp;
+        if ptmp^.NextGear <> nil then ptmp^.NextGear^.PrevGear:= Gear;
+        ptmp^.NextGear:= Gear
+        end
+    else GearsList:= Gear
+    end
 end;
 
 procedure RemoveGearFromList(Gear: PGear);
 begin
 if Gear^.NextGear <> nil then Gear^.NextGear^.PrevGear:= Gear^.PrevGear;
 if Gear^.PrevGear <> nil then
-	Gear^.PrevGear^.NextGear:= Gear^.NextGear
+    Gear^.PrevGear^.NextGear:= Gear^.NextGear
 else
-	GearsList:= Gear^.NextGear
+    GearsList:= Gear^.NextGear
 end;
 
 function AddGear(X, Y: LongInt; Kind: TGearType; State: Longword; dX, dY: hwFloat; Timer: LongWord): PGear;
@@ -245,10 +245,10 @@
 gear^.SoundChannel:= -1;
 
 if CurrentTeam <> nil then
-	begin
-	gear^.Hedgehog:= CurrentHedgehog;
-	gear^.IntersectGear:= CurrentHedgehog^.Gear
-	end;
+    begin
+    gear^.Hedgehog:= CurrentHedgehog;
+    gear^.IntersectGear:= CurrentHedgehog^.Gear
+    end;
 
 case Kind of
    gtAmmo_Bomb,
@@ -359,10 +359,10 @@
                 gear^.Radius:= 1;
                 gear^.Health:= 5;
                 if (gear^.dY.QWordValue = 0) and (gear^.dX.QWordValue = 0) then
-                	begin
-                	gear^.dY:= (getrandom - _0_8) * _0_03;
-                	gear^.dX:= (getrandom - _0_5) * _0_4
-                	end
+                    begin
+                    gear^.dY:= (getrandom - _0_8) * _0_03;
+                    gear^.dX:= (getrandom - _0_5) * _0_4
+                    end
                 end;
    gtFirePunch: begin
                 gear^.Radius:= 15;
@@ -381,7 +381,7 @@
       gtTarget: begin
                 gear^.Radius:= 10;
                 gear^.Elasticity:= _0_3;
-				gear^.Timer:= 0
+                gear^.Timer:= 0
                 end;
       gtMortar: begin
                 gear^.Radius:= 4;
@@ -441,7 +441,7 @@
 
 procedure DeleteGear(Gear: PGear);
 var team: PTeam;
-	t,i: Longword;
+    t,i: Longword;
     k: boolean;
 begin
 
@@ -450,34 +450,34 @@
 DeleteCI(Gear);
 
 if Gear^.Tex <> nil then
-	begin
-	FreeTexture(Gear^.Tex);
-	Gear^.Tex:= nil
-	end;
+    begin
+    FreeTexture(Gear^.Tex);
+    Gear^.Tex:= nil
+    end;
 
 if Gear^.Kind = gtHedgehog then
-	if (CurAmmoGear <> nil) and (CurrentHedgehog^.Gear = Gear) then
-		begin
-		Gear^.Message:= gm_Destroy;
-		CurAmmoGear^.Message:= gm_Destroy;
-		exit
-		end
-	else
-		begin
-		if (hwRound(Gear^.Y) >= cWaterLine) then
-			begin
-			t:= max(Gear^.Damage, Gear^.Health);
-			Gear^.Damage:= t;
+    if (CurAmmoGear <> nil) and (CurrentHedgehog^.Gear = Gear) then
+        begin
+        Gear^.Message:= gm_Destroy;
+        CurAmmoGear^.Message:= gm_Destroy;
+        exit
+        end
+    else
+        begin
+        if (hwRound(Gear^.Y) >= cWaterLine) then
+            begin
+            t:= max(Gear^.Damage, Gear^.Health);
+            Gear^.Damage:= t;
             if cWaterOpacity < $FF then
-			    AddGear(hwRound(Gear^.X), min(hwRound(Gear^.Y),cWaterLine+cVisibleWater+32), gtHealthTag, t, _0, _0, 0)^.Hedgehog:= Gear^.Hedgehog;
-			uStats.HedgehogDamaged(Gear)
-			end;
+                AddGear(hwRound(Gear^.X), min(hwRound(Gear^.Y),cWaterLine+cVisibleWater+32), gtHealthTag, t, _0, _0, 0)^.Hedgehog:= Gear^.Hedgehog;
+            uStats.HedgehogDamaged(Gear)
+            end;
 
-		team:= PHedgehog(Gear^.Hedgehog)^.Team;
-		if CurrentHedgehog^.Gear = Gear then
-			FreeActionsList; // to avoid ThinkThread on drawned gear
+        team:= PHedgehog(Gear^.Hedgehog)^.Team;
+        if CurrentHedgehog^.Gear = Gear then
+            FreeActionsList; // to avoid ThinkThread on drawned gear
 
-		PHedgehog(Gear^.Hedgehog)^.Gear:= nil;
+        PHedgehog(Gear^.Hedgehog)^.Gear:= nil;
         if PHedgehog(Gear^.Hedgehog)^.King then
             begin
             // are there any other kings left? Just doing nil check.  Presumably a mortally wounded king will get reaped soon enough
@@ -488,9 +488,9 @@
                 for i:= 0 to Pred(team^.Clan^.TeamsNumber) do
                     TeamGoneEffect(team^.Clan^.Teams[i]^)
             end;
-		inc(KilledHHs);
-		RecountTeamHealth(team)
-		end;
+        inc(KilledHHs);
+        RecountTeamHealth(team)
+        end;
 {$IFDEF DEBUGFILE}
 with Gear^ do AddFileLog('Delete: #' + inttostr(uid) + ' (' + inttostr(hwRound(x)) + ',' + inttostr(hwRound(y)) + '), d(' + floattostr(dX) + ',' + floattostr(dY) + ') type = ' + inttostr(ord(Kind)));
 {$ENDIF}
@@ -509,20 +509,20 @@
 CheckNoDamage:= true;
 Gear:= GearsList;
 while Gear <> nil do
-	begin
-	if Gear^.Kind = gtHedgehog then
-		begin
-		if (not isInMultiShoot) then inc(Gear^.Damage, Gear^.Karma);
-		if (Gear^.Damage <> 0) and
-		(not Gear^.Invulnerable) then
-			begin
-			CheckNoDamage:= false;
-			uStats.HedgehogDamaged(Gear);
-			dmg:= Gear^.Damage;
-			if Gear^.Health < dmg then
-				Gear^.Health:= 0
-			else
-				dec(Gear^.Health, dmg);
+    begin
+    if Gear^.Kind = gtHedgehog then
+        begin
+        if (not isInMultiShoot) then inc(Gear^.Damage, Gear^.Karma);
+        if (Gear^.Damage <> 0) and
+        (not Gear^.Invulnerable) then
+            begin
+            CheckNoDamage:= false;
+            uStats.HedgehogDamaged(Gear);
+            dmg:= Gear^.Damage;
+            if Gear^.Health < dmg then
+                Gear^.Health:= 0
+            else
+                dec(Gear^.Health, dmg);
 
             if (PHedgehog(Gear^.Hedgehog)^.Team = CurrentTeam) and
                (Gear^.Damage <> Gear^.Karma) and
@@ -530,18 +530,18 @@
                 not SuddenDeathDmg then
                 Gear^.State:= Gear^.State or gstLoser;
 
-			AddGear(hwRound(Gear^.X), hwRound(Gear^.Y) - cHHRadius - 12,
-					gtHealthTag, dmg, _0, _0, 0)^.Hedgehog:= Gear^.Hedgehog;
+            AddGear(hwRound(Gear^.X), hwRound(Gear^.Y) - cHHRadius - 12,
+                    gtHealthTag, dmg, _0, _0, 0)^.Hedgehog:= Gear^.Hedgehog;
 
-			RenderHealth(PHedgehog(Gear^.Hedgehog)^);
-			RecountTeamHealth(PHedgehog(Gear^.Hedgehog)^.Team);
+            RenderHealth(PHedgehog(Gear^.Hedgehog)^);
+            RecountTeamHealth(PHedgehog(Gear^.Hedgehog)^.Team);
 
-			end;
-		if (not isInMultiShoot) then Gear^.Karma:= 0;
-		Gear^.Damage:= 0
-		end;
-	Gear:= Gear^.NextGear
-	end;
+            end;
+        if (not isInMultiShoot) then Gear^.Karma:= 0;
+        Gear^.Damage:= 0
+        end;
+    Gear:= Gear^.NextGear
+    end;
 SuddenDeathDmg:= false;
 end;
 
@@ -554,14 +554,14 @@
 Gear:= GearsList;
 
 while Gear <> nil do
-	begin
-	if Gear^.Kind = gtHedgehog then
+    begin
+    if Gear^.Kind = gtHedgehog then
         begin
-		inc(Gear^.Damage, min(cHealthDecrease, max(0,Gear^.Health - 1 - Gear^.Damage)));
+        inc(Gear^.Damage, min(cHealthDecrease, max(0,Gear^.Health - 1 - Gear^.Damage)));
         if PHedgehog(Gear^.Hedgehog)^.King then
             begin
             flag:= false;
-		    team:= PHedgehog(Gear^.Hedgehog)^.Team;
+            team:= PHedgehog(Gear^.Hedgehog)^.Team;
             for i:= 0 to Pred(team^.HedgehogsNumber) do
                 if (team^.Hedgehogs[i].Gear <> nil) and 
                    (not team^.Hedgehogs[i].King) and 
@@ -570,15 +570,15 @@
             end
         end;
 
-	Gear:= Gear^.NextGear
-	end;
+    Gear:= Gear^.NextGear
+    end;
 end;
 
 procedure ProcessGears;
 const delay: LongWord = 0;
-	step: (stDelay, stChDmg, stSweep, stTurnReact,
-			stAfterDelay, stChWin, stWater, stChWin2, stHealth,
-			stSpawn, stNTurn) = stDelay;
+    step: (stDelay, stChDmg, stSweep, stTurnReact,
+            stAfterDelay, stChWin, stWater, stChWin2, stHealth,
+            stSpawn, stNTurn) = stDelay;
 
 var Gear, t: PGear;
 begin
@@ -586,26 +586,26 @@
 AllInactive:= true;
 
 if (StepSoundTimer > 0) and (StepSoundChannel < 0) then
-	begin
-	WriteLnToConsole('playsteps ...');
-	StepSoundChannel:= LoopSound(sndSteps)
-	end
+    begin
+    WriteLnToConsole('playsteps ...');
+    StepSoundChannel:= LoopSound(sndSteps)
+    end
 else if (StepSoundTimer = 0) and (StepSoundChannel > -1) then
-	begin
-	WriteLnToConsole('stopsteps ...');
-	StopSound(StepSoundChannel);
-	StepSoundChannel:= -1;
-	end;
+    begin
+    WriteLnToConsole('stopsteps ...');
+    StopSound(StepSoundChannel);
+    StepSoundChannel:= -1;
+    end;
 
 if StepSoundTimer > 0 then
-	dec(StepSoundTimer, 1);
+    dec(StepSoundTimer, 1);
 
 t:= GearsList;
 while t <> nil do
-	begin
-	Gear:= t;
-	t:= Gear^.NextGear;
-	if Gear^.Active then
+    begin
+    Gear:= t;
+    t:= Gear^.NextGear;
+    if Gear^.Active then
         begin
         if Gear^.RenderTimer and (Gear^.Timer > 500) and ((Gear^.Timer mod 1000) = 0) then
             begin
@@ -614,134 +614,134 @@
             end;
         Gear^.doStep(Gear);
         end
-	end;
+    end;
 
 if AllInactive then
 case step of
-	stDelay: begin
-		if delay = 0 then
-			delay:= cInactDelay
-		else
-			dec(delay);
+    stDelay: begin
+        if delay = 0 then
+            delay:= cInactDelay
+        else
+            dec(delay);
 
-		if delay = 0 then
-			inc(step)
-		end;
-	stChDmg: if CheckNoDamage then inc(step) else step:= stDelay;
-	stSweep: if SweepDirty then
-				begin
-				SetAllToActive;
-				step:= stChDmg
-				end else inc(step);
-	stTurnReact: begin
-		if (not bBetweenTurns) and (not isInMultiShoot) then
-			begin
-			uStats.TurnReaction;
-			inc(step)
-		end else
-			inc(step, 2);
-		end;
-	stAfterDelay: begin
-		if delay = 0 then
-			delay:= cInactDelay
-		else
-			dec(delay);
+        if delay = 0 then
+            inc(step)
+        end;
+    stChDmg: if CheckNoDamage then inc(step) else step:= stDelay;
+    stSweep: if SweepDirty then
+                begin
+                SetAllToActive;
+                step:= stChDmg
+                end else inc(step);
+    stTurnReact: begin
+        if (not bBetweenTurns) and (not isInMultiShoot) then
+            begin
+            uStats.TurnReaction;
+            inc(step)
+        end else
+            inc(step, 2);
+        end;
+    stAfterDelay: begin
+        if delay = 0 then
+            delay:= cInactDelay
+        else
+            dec(delay);
 
-		if delay = 0 then
-		inc(step)
-		end;
-	stChWin: begin
-			CheckForWin;
-			inc(step)
-			end;
-	stWater: if (not bBetweenTurns) and (not isInMultiShoot) then
-				begin
-				if TotalRounds = cSuddenDTurns + 2 then bWaterRising:= true;
+        if delay = 0 then
+        inc(step)
+        end;
+    stChWin: begin
+            CheckForWin;
+            inc(step)
+            end;
+    stWater: if (not bBetweenTurns) and (not isInMultiShoot) then
+                begin
+                if TotalRounds = cSuddenDTurns + 2 then bWaterRising:= true;
 
-				if bWaterRising then
-				AddGear(0, 0, gtWaterUp, 0, _0, _0, 0);
+                if bWaterRising then
+                AddGear(0, 0, gtWaterUp, 0, _0, _0, 0);
 
-				inc(step)
-				end else inc(step);
-	stChWin2: begin
-			CheckForWin;
-			inc(step)
-			end;
-	stHealth: begin
-			if (TotalRounds = cSuddenDTurns) and (cHealthDecrease = 0) then
-				begin
-				cHealthDecrease:= 5;
-				AddCaption(trmsg[sidSuddenDeath], cWhiteColor, capgrpGameState);
-				playSound(sndSuddenDeath)
-				end;
+                inc(step)
+                end else inc(step);
+    stChWin2: begin
+            CheckForWin;
+            inc(step)
+            end;
+    stHealth: begin
+            if (TotalRounds = cSuddenDTurns) and (cHealthDecrease = 0) then
+                begin
+                cHealthDecrease:= 5;
+                AddCaption(trmsg[sidSuddenDeath], cWhiteColor, capgrpGameState);
+                playSound(sndSuddenDeath)
+                end;
 
-			if bBetweenTurns
-				or isInMultiShoot
-				or (TotalRounds = 0) then inc(step)
-			else begin
-				bBetweenTurns:= true;
-				HealthMachine;
+            if bBetweenTurns
+                or isInMultiShoot
+                or (TotalRounds = 0) then inc(step)
+            else begin
+                bBetweenTurns:= true;
+                HealthMachine;
                 if cHealthDecrease > 0 then SuddenDeathDmg:= true;
-				step:= stChDmg
-				end
-			end;
-	stSpawn: begin
-			if not isInMultiShoot then SpawnBoxOfSmth;
-			inc(step)
-			end;
-	stNTurn: begin
-			if isInMultiShoot then
-				isInMultiShoot:= false
-			else begin
-				// delayed till after 0.9.12
-				// reset to default zoom
-				//ZoomValue:= ZoomDefault;
-				with CurrentHedgehog^ do
-					if (Gear <> nil) 
+                step:= stChDmg
+                end
+            end;
+    stSpawn: begin
+            if not isInMultiShoot then SpawnBoxOfSmth;
+            inc(step)
+            end;
+    stNTurn: begin
+            if isInMultiShoot then
+                isInMultiShoot:= false
+            else begin
+                // delayed till after 0.9.12
+                // reset to default zoom
+                //ZoomValue:= ZoomDefault;
+                with CurrentHedgehog^ do
+                    if (Gear <> nil) 
                         and ((Gear^.State and gstAttacked) = 0)
-						and (MultiShootAttacks > 0) then OnUsedAmmo(CurrentHedgehog^);
-				
-				ResetUtilities;
+                        and (MultiShootAttacks > 0) then OnUsedAmmo(CurrentHedgehog^);
+                
+                ResetUtilities;
 
-				FreeActionsList; // could send -left, -right and similar commands, so should be called before /nextturn
+                FreeActionsList; // could send -left, -right and similar commands, so should be called before /nextturn
 
-				ParseCommand('/nextturn', true);
-				SwitchHedgehog;
+                ParseCommand('/nextturn', true);
+                SwitchHedgehog;
 
-				AfterSwitchHedgehog;
-				bBetweenTurns:= false
-				end;
-			step:= Low(step)
-			end;
-	end;
+                AfterSwitchHedgehog;
+                bBetweenTurns:= false
+                end;
+            step:= Low(step)
+            end;
+    end;
 
 if TurnTimeLeft > 0 then
-		if CurrentHedgehog^.Gear <> nil then
-			if ((CurrentHedgehog^.Gear^.State and gstAttacking) = 0)
-				and not isInMultiShoot then
-				begin
-				if (TurnTimeLeft = 5000)
+        if CurrentHedgehog^.Gear <> nil then
+            if ((CurrentHedgehog^.Gear^.State and gstAttacking) = 0)
+                and not isInMultiShoot then
+                begin
+                if (TurnTimeLeft = 5000)
                     and (not PlacingHogs)
-					and (CurrentHedgehog^.Gear <> nil)
-					and ((CurrentHedgehog^.Gear^.State and gstAttacked) = 0) then
-						PlaySound(sndHurry, CurrentTeam^.voicepack);
-				dec(TurnTimeLeft)
-				end;
+                    and (CurrentHedgehog^.Gear <> nil)
+                    and ((CurrentHedgehog^.Gear^.State and gstAttacked) = 0) then
+                        PlaySound(sndHurry, CurrentTeam^.voicepack);
+                dec(TurnTimeLeft)
+                end;
 
 if skipFlag then
-	begin
-	TurnTimeLeft:= 0;
-	skipFlag:= false
-	end;
+    begin
+    TurnTimeLeft:= 0;
+    skipFlag:= false
+    end;
 
 if ((GameTicks and $FFFF) = $FFFF) then
-	begin
-	if (not CurrentTeam^.ExtDriven) then
-		SendIPCTimeInc;
+    begin
+    if (not CurrentTeam^.ExtDriven) then
+        SendIPCTimeInc;
 
-	if (not CurrentTeam^.ExtDriven) or CurrentTeam^.hasGone then
-		inc(hiTicks) // we do not recieve a message for this
-	end;
+    if (not CurrentTeam^.ExtDriven) or CurrentTeam^.hasGone then
+        inc(hiTicks) // we do not recieve a message for this
+    end;
 
 inc(GameTicks)
 end;
@@ -788,11 +788,11 @@
 procedure ApplyDamage(Gear: PGear; Damage: Longword);
 var s: shortstring;
     vampDmg, tmpDmg, i: Longword;
-	vg: PVisualGear;
+    vg: PVisualGear;
 begin
-	if (Gear^.Kind = gtHedgehog) and (Damage>=1) then
+    if (Gear^.Kind = gtHedgehog) and (Damage>=1) then
     begin
-	AddDamageTag(hwRound(Gear^.X), hwRound(Gear^.Y), Damage, PHedgehog(Gear^.Hedgehog)^.Team^.Clan^.Color);
+    AddDamageTag(hwRound(Gear^.X), hwRound(Gear^.Y), Damage, PHedgehog(Gear^.Hedgehog)^.Team^.Clan^.Color);
     tmpDmg:= min(Damage, max(0,Gear^.Health-Gear^.Damage));
     if (Gear <> CurrentHedgehog^.Gear) and (CurrentHedgehog^.Gear <> nil) and (tmpDmg >= 1) then
         begin
@@ -809,13 +809,13 @@
                 AddCaption(s, CurrentHedgehog^.Team^.Clan^.Color, capgrpAmmoinfo);
                 RenderHealth(CurrentHedgehog^);
                 RecountTeamHealth(CurrentHedgehog^.Team);
-				i:= 0;
-				while i < vampDmg do
-					begin
-					vg:= AddVisualGear(hwRound(CurrentHedgehog^.Gear^.X), hwRound(CurrentHedgehog^.Gear^.Y), vgtHealth);
-					if vg <> nil then vg^.Frame:= 10;
-					inc(i, 5);
-					end;
+                i:= 0;
+                while i < vampDmg do
+                    begin
+                    vg:= AddVisualGear(hwRound(CurrentHedgehog^.Gear^.X), hwRound(CurrentHedgehog^.Gear^.Y), vgtHealth);
+                    if vg <> nil then vg^.Frame:= 10;
+                    inc(i, 5);
+                    end;
                 end
             end;
         if ((GameFlags and gfKarma) <> 0) and
@@ -829,7 +829,7 @@
            end;
         end;
     end;
-	inc(Gear^.Damage, Damage);
+    inc(Gear^.Damage, Damage);
 end;
 
 procedure SetAllToActive;
@@ -838,10 +838,10 @@
 AllInactive:= false;
 t:= GearsList;
 while t <> nil do
-	begin
-	t^.Active:= true;
-	t:= t^.NextGear
-	end
+    begin
+    t^.Active:= true;
+    t:= t^.NextGear
+    end
 end;
 
 procedure SetAllHHToActive;
@@ -850,40 +850,40 @@
 AllInactive:= false;
 t:= GearsList;
 while t <> nil do
-	begin
-	if t^.Kind = gtHedgehog then t^.Active:= true;
-	t:= t^.NextGear
-	end
+    begin
+    if t^.Kind = gtHedgehog then t^.Active:= true;
+    t:= t^.NextGear
+    end
 end;
 
 procedure DrawAltWeapon(Gear: PGear; sx, sy: LongInt);
 begin
 with PHedgehog(Gear^.Hedgehog)^ do
-	begin
-	if not (((Ammoz[Ammo^[CurSlot, CurAmmo].AmmoType].Ammo.Propz and ammoprop_AltUse) <> 0) and ((Gear^.State and gstAttacked) = 0)) then
-		exit;
-	DrawTexture(round(sx + 16), round(sy + 16), ropeIconTex);
-	DrawTextureF(SpritesData[sprAMAmmos].Texture, 0.75, round(sx + 30), round(sy + 30), ord(Ammo^[CurSlot, CurAmmo].AmmoType) - 1, 1, 32, 32);
-	end;
+    begin
+    if not (((Ammoz[Ammo^[CurSlot, CurAmmo].AmmoType].Ammo.Propz and ammoprop_AltUse) <> 0) and ((Gear^.State and gstAttacked) = 0)) then
+        exit;
+    DrawTexture(round(sx + 16), round(sy + 16), ropeIconTex);
+    DrawTextureF(SpritesData[sprAMAmmos].Texture, 0.75, round(sx + 30), round(sy + 30), ord(Ammo^[CurSlot, CurAmmo].AmmoType) - 1, 1, 32, 32);
+    end;
 end;
 
 procedure DrawHH(Gear: PGear);
 var i, t: LongInt;
-	amt: TAmmoType;
-	hx, hy, cx, cy, tx, ty, sx, sy, m: LongInt;  // hedgehog, crosshair, temp, sprite, direction
-	lx, ly, dx, dy, ax, ay, aAngle, dAngle, hAngle: real;  // laser, change
-	defaultPos, HatVisible: boolean;
-	VertexBuffer: array [0..1] of TVertex2f;
+    amt: TAmmoType;
+    hx, hy, cx, cy, tx, ty, sx, sy, m: LongInt;  // hedgehog, crosshair, temp, sprite, direction
+    lx, ly, dx, dy, ax, ay, aAngle, dAngle, hAngle: real;  // laser, change
+    defaultPos, HatVisible: boolean;
+    VertexBuffer: array [0..1] of TVertex2f;
 begin
 
 if PHedgehog(Gear^.Hedgehog)^.Unplaced then exit;
 m:= 1;
 if ((Gear^.State and gstHHHJump) <> 0) and not cArtillery then m:= -1;
 if (Gear^.State and gstHHDeath) <> 0 then
-	begin
-	DrawSprite(sprHHDeath, hwRound(Gear^.X) - 16 + WorldDx, hwRound(Gear^.Y) - 26 + WorldDy, Gear^.Pos);
-	exit
-	end;
+    begin
+    DrawSprite(sprHHDeath, hwRound(Gear^.X) - 16 + WorldDx, hwRound(Gear^.Y) - 26 + WorldDy, Gear^.Pos);
+    exit
+    end;
 
 defaultPos:= true;
 HatVisible:= false;
@@ -892,142 +892,142 @@
 sy:= hwRound(Gear^.Y) - 3 + WorldDy;
 if ((Gear^.State and gstWinner) <> 0) and
    ((CurAmmoGear = nil) or (CurAmmoGear^.Kind <> gtPickHammer)) then
-	begin
-	DrawHedgehog(sx, sy,
-			hwSign(Gear^.dX),
-			2,
-			0,
-			0);
-	defaultPos:= false
-	end;
+    begin
+    DrawHedgehog(sx, sy,
+            hwSign(Gear^.dX),
+            2,
+            0,
+            0);
+    defaultPos:= false
+    end;
 if (Gear^.State and gstDrowning) <> 0 then
-	begin
-	DrawHedgehog(sx, sy,
-			hwSign(Gear^.dX),
-			1,
-			7,
-			0);
-	defaultPos:= false
-	end else
+    begin
+    DrawHedgehog(sx, sy,
+            hwSign(Gear^.dX),
+            1,
+            7,
+            0);
+    defaultPos:= false
+    end else
 if (Gear^.State and gstLoser) <> 0 then // for now using the jackhammer for its kind of bemused "oops" look
-	begin
-	DrawHedgehog(sx, sy,
-			hwSign(Gear^.dX),
-			2,
-			3,
-			0);
-	defaultPos:= false
-	end else
+    begin
+    DrawHedgehog(sx, sy,
+            hwSign(Gear^.dX),
+            2,
+            3,
+            0);
+    defaultPos:= false
+    end else
 
 if (Gear^.State and gstHHDriven) <> 0 then
-	begin
-	if ((Gear^.State and gstHHThinking) = 0) and
+    begin
+    if ((Gear^.State and gstHHThinking) = 0) and
        ShowCrosshair and
        ((Gear^.State and (gstAttacked or gstAnimation)) = 0) then
-		begin
+        begin
 (* These calculations are a little complex for a few reasons:
    1: I need to draw the laser from weapon origin to nearest land
    2: I need to start the beam outside the hedgie for attractiveness.
    3: I need to extend the beam beyond land.
    This routine perhaps should be pushed into uStore or somesuch instead of continuuing the increase in size of this function.
 *)
-		dx:= hwSign(Gear^.dX) * m * Sin(Gear^.Angle * pi / cMaxAngle);
-		dy:= - Cos(Gear^.Angle * pi / cMaxAngle);
-		if cLaserSighting then
-			begin
-			lx:= hwRound(Gear^.X);
-			ly:= hwRound(Gear^.Y);
-			lx:= lx + dx * 16;
-			ly:= ly + dy * 16;
+        dx:= hwSign(Gear^.dX) * m * Sin(Gear^.Angle * pi / cMaxAngle);
+        dy:= - Cos(Gear^.Angle * pi / cMaxAngle);
+        if cLaserSighting then
+            begin
+            lx:= hwRound(Gear^.X);
+            ly:= hwRound(Gear^.Y);
+            lx:= lx + dx * 16;
+            ly:= ly + dy * 16;
 
-			ax:= dx * 4;
-			ay:= dy * 4;
+            ax:= dx * 4;
+            ay:= dy * 4;
 
-			tx:= round(lx);
-			ty:= round(ly);
-			hx:= tx;
-			hy:= ty;
-			while ((ty and LAND_HEIGHT_MASK) = 0) and
-				((tx and LAND_WIDTH_MASK) = 0) and
-				(Land[ty, tx] = 0) do
-				begin
-				lx:= lx + ax;
-				ly:= ly + ay;
-				tx:= round(lx);
-				ty:= round(ly)
-				end;
-			// reached edge of land. assume infinite beam. Extend it way out past camera
-			if ((ty and LAND_HEIGHT_MASK) <> 0) or ((tx and LAND_WIDTH_MASK) <> 0) then
-				begin
-				tx:= round(lx + ax * (LAND_WIDTH div 4));
-				ty:= round(ly + ay * (LAND_WIDTH div 4));
-				end;
+            tx:= round(lx);
+            ty:= round(ly);
+            hx:= tx;
+            hy:= ty;
+            while ((ty and LAND_HEIGHT_MASK) = 0) and
+                ((tx and LAND_WIDTH_MASK) = 0) and
+                (Land[ty, tx] = 0) do
+                begin
+                lx:= lx + ax;
+                ly:= ly + ay;
+                tx:= round(lx);
+                ty:= round(ly)
+                end;
+            // reached edge of land. assume infinite beam. Extend it way out past camera
+            if ((ty and LAND_HEIGHT_MASK) <> 0) or ((tx and LAND_WIDTH_MASK) <> 0) then
+                begin
+                tx:= round(lx + ax * (LAND_WIDTH div 4));
+                ty:= round(ly + ay * (LAND_WIDTH div 4));
+                end;
 
-			//if (abs(lx-tx)>8) or (abs(ly-ty)>8) then
-				begin
-				glDisable(GL_TEXTURE_2D);
-				glEnable(GL_LINE_SMOOTH);
+            //if (abs(lx-tx)>8) or (abs(ly-ty)>8) then
+                begin
+                glDisable(GL_TEXTURE_2D);
+                glEnable(GL_LINE_SMOOTH);
 
-				glLineWidth(1.0);
+                glLineWidth(1.0);
 
-				glColor4ub($FF, $00, $00, $C0);
-				VertexBuffer[0].X:= hx + WorldDx;
-				VertexBuffer[0].Y:= hy + WorldDy;
-				VertexBuffer[1].X:= tx + WorldDx;
-				VertexBuffer[1].Y:= ty + WorldDy;
+                glColor4ub($FF, $00, $00, $C0);
+                VertexBuffer[0].X:= hx + WorldDx;
+                VertexBuffer[0].Y:= hy + WorldDy;
+                VertexBuffer[1].X:= tx + WorldDx;
+                VertexBuffer[1].Y:= ty + WorldDy;
 
-				glEnableClientState(GL_VERTEX_ARRAY);
-				glVertexPointer(2, GL_FLOAT, 0, @VertexBuffer[0]);
-				glDrawArrays(GL_LINES, 0, Length(VertexBuffer));
-				glColor4f(1, 1, 1, 1);
-				glEnable(GL_TEXTURE_2D);
-				glDisable(GL_LINE_SMOOTH);
-				end;
-			end;
-		// draw crosshair
-		cx:= Round(hwRound(Gear^.X) + dx * 80);
-		cy:= Round(hwRound(Gear^.Y) + dy * 80);
-		DrawRotatedTex(PHedgehog(Gear^.Hedgehog)^.Team^.CrosshairTex,
-				12, 12, cx + WorldDx, cy + WorldDy, 0,
-				hwSign(Gear^.dX) * (Gear^.Angle * 180.0) / cMaxAngle);
-		end;
-	hx:= hwRound(Gear^.X) + 1 + 8 * hwSign(Gear^.dX) + WorldDx;
-	hy:= hwRound(Gear^.Y) - 2 + WorldDy;
-	aangle:= Gear^.Angle * 180 / cMaxAngle - 90;
+                glEnableClientState(GL_VERTEX_ARRAY);
+                glVertexPointer(2, GL_FLOAT, 0, @VertexBuffer[0]);
+                glDrawArrays(GL_LINES, 0, Length(VertexBuffer));
+                glColor4f(1, 1, 1, 1);
+                glEnable(GL_TEXTURE_2D);
+                glDisable(GL_LINE_SMOOTH);
+                end;
+            end;
+        // draw crosshair
+        cx:= Round(hwRound(Gear^.X) + dx * 80);
+        cy:= Round(hwRound(Gear^.Y) + dy * 80);
+        DrawRotatedTex(PHedgehog(Gear^.Hedgehog)^.Team^.CrosshairTex,
+                12, 12, cx + WorldDx, cy + WorldDy, 0,
+                hwSign(Gear^.dX) * (Gear^.Angle * 180.0) / cMaxAngle);
+        end;
+    hx:= hwRound(Gear^.X) + 1 + 8 * hwSign(Gear^.dX) + WorldDx;
+    hy:= hwRound(Gear^.Y) - 2 + WorldDy;
+    aangle:= Gear^.Angle * 180 / cMaxAngle - 90;
 
-	if CurAmmoGear <> nil then
-	begin
-		case CurAmmoGear^.Kind of
-			gtShotgunShot: begin
-					if (CurAmmoGear^.State and gstAnimation <> 0) then
-						DrawRotated(sprShotgun, hx, hy, hwSign(Gear^.dX), aangle)
-					else
-						DrawRotated(sprHandShotgun, hx, hy, hwSign(Gear^.dX), aangle);
-				end;
-			gtDEagleShot: DrawRotated(sprDEagle, hx, hy, hwSign(Gear^.dX), aangle);
-			gtSniperRifleShot: begin
-					if (CurAmmoGear^.State and gstAnimation <> 0) then
-			            DrawRotatedF(sprSniperRifle, hx, hy, 1, hwSign(Gear^.dX), aangle)
-					else
-			            DrawRotatedF(sprSniperRifle, hx, hy, 0, hwSign(Gear^.dX), aangle)
-				end;
-			gtBallgun: DrawRotated(sprHandBallgun, hx, hy, hwSign(Gear^.dX), aangle);
-			gtRCPlane: begin
-				DrawRotated(sprHandPlane, hx, hy, hwSign(Gear^.dX), 0);
-				defaultPos:= false
-				end;
-			gtRope: begin
-				if Gear^.X < CurAmmoGear^.X then
-					begin
-					dAngle:= 0;
-					hAngle:= 180;
-					i:= 1
-					end else
-					begin
-					dAngle:= 180;
-					hAngle:= 0;
-					i:= -1
-					end;
+    if CurAmmoGear <> nil then
+    begin
+        case CurAmmoGear^.Kind of
+            gtShotgunShot: begin
+                    if (CurAmmoGear^.State and gstAnimation <> 0) then
+                        DrawRotated(sprShotgun, hx, hy, hwSign(Gear^.dX), aangle)
+                    else
+                        DrawRotated(sprHandShotgun, hx, hy, hwSign(Gear^.dX), aangle);
+                end;
+            gtDEagleShot: DrawRotated(sprDEagle, hx, hy, hwSign(Gear^.dX), aangle);
+            gtSniperRifleShot: begin
+                    if (CurAmmoGear^.State and gstAnimation <> 0) then
+                        DrawRotatedF(sprSniperRifle, hx, hy, 1, hwSign(Gear^.dX), aangle)
+                    else
+                        DrawRotatedF(sprSniperRifle, hx, hy, 0, hwSign(Gear^.dX), aangle)
+                end;
+            gtBallgun: DrawRotated(sprHandBallgun, hx, hy, hwSign(Gear^.dX), aangle);
+            gtRCPlane: begin
+                DrawRotated(sprHandPlane, hx, hy, hwSign(Gear^.dX), 0);
+                defaultPos:= false
+                end;
+            gtRope: begin
+                if Gear^.X < CurAmmoGear^.X then
+                    begin
+                    dAngle:= 0;
+                    hAngle:= 180;
+                    i:= 1
+                    end else
+                    begin
+                    dAngle:= 180;
+                    hAngle:= 0;
+                    i:= -1
+                    end;
                 sx:= hwRound(Gear^.X) + WorldDx;
                 sy:= hwRound(Gear^.Y) + WorldDy;
                if ((Gear^.State and gstWinner) = 0) then
@@ -1042,16 +1042,16 @@
                            DrawRotatedTextureF(HatTex, 1.0, -1.0, -6.0, sx, sy, 0, i, 32, 32,
                                i*DxDy2Angle(CurAmmoGear^.dY, CurAmmoGear^.dX) + hAngle);
                    end;
-				DrawAltWeapon(Gear, sx, sy);
-				defaultPos:= false
-				end;
-			gtBlowTorch: begin
-				DrawRotated(sprBlowTorch, hx, hy, hwSign(Gear^.dX), aangle);
-				DrawHedgehog(sx, sy,
-						hwSign(Gear^.dX),
-						3,
-						PHedgehog(Gear^.Hedgehog)^.visStepPos div 2,
-						0);
+                DrawAltWeapon(Gear, sx, sy);
+                defaultPos:= false
+                end;
+            gtBlowTorch: begin
+                DrawRotated(sprBlowTorch, hx, hy, hwSign(Gear^.dX), aangle);
+                DrawHedgehog(sx, sy,
+                        hwSign(Gear^.dX),
+                        3,
+                        PHedgehog(Gear^.Hedgehog)^.visStepPos div 2,
+                        0);
                 with PHedgehog(Gear^.Hedgehog)^ do
                     if (HatTex <> nil) then
                        DrawTextureF(HatTex,
@@ -1062,137 +1062,137 @@
                            hwSign(Gear^.dX),
                            32,
                            32);
-				defaultPos:= false
-				end;
-			gtShover: DrawRotated(sprHandBaseball, hx, hy, hwSign(Gear^.dX), aangle + 180);
-			gtFirePunch: begin
-				DrawHedgehog(sx, sy,
-						hwSign(Gear^.dX),
-						1,
-						4,
-						0);
-				defaultPos:= false
-				end;
-			gtPickHammer: begin
+                defaultPos:= false
+                end;
+            gtShover: DrawRotated(sprHandBaseball, hx, hy, hwSign(Gear^.dX), aangle + 180);
+            gtFirePunch: begin
+                DrawHedgehog(sx, sy,
+                        hwSign(Gear^.dX),
+                        1,
+                        4,
+                        0);
+                defaultPos:= false
+                end;
+            gtPickHammer: begin
                 defaultPos:= false;
                 dec(sy,20);
                 end;
-			gtTeleport: defaultPos:= false;
-			gtWhip: begin
-				DrawRotatedF(sprWhip,
-						sx,
-						sy,
-						1,
-						hwSign(Gear^.dX),
-						0);
-				defaultPos:= false
-				end;
-			gtKamikaze: begin
-				if CurAmmoGear^.Pos = 0 then
-					DrawHedgehog(sx, sy,
-							hwSign(Gear^.dX),
-							1,
-							6,
-							0)
-				else
-					DrawRotatedF(sprKamikaze,
-							hwRound(Gear^.X) + WorldDx,
-							hwRound(Gear^.Y) + WorldDy,
-							CurAmmoGear^.Pos - 1,
-							hwSign(Gear^.dX),
-							aangle);
-				defaultPos:= false
-				end;
-			gtSeduction: begin
-				if CurAmmoGear^.Pos >= 6 then
-					DrawHedgehog(sx, sy,
-							hwSign(Gear^.dX),
-							2,
-							2,
-							0)
-				else
-					begin
-					DrawRotatedF(sprDress,
-							hwRound(Gear^.X) + WorldDx,
-							hwRound(Gear^.Y) + WorldDy,
-							CurAmmoGear^.Pos,
-							hwSign(Gear^.dX),
-							0);
-					DrawSprite(sprCensored, hwRound(Gear^.X) - 32 + WorldDx, hwRound(Gear^.Y) - 20 + WorldDy, 0)
-					end;
-				defaultPos:= false
-				end;
-		end;
+            gtTeleport: defaultPos:= false;
+            gtWhip: begin
+                DrawRotatedF(sprWhip,
+                        sx,
+                        sy,
+                        1,
+                        hwSign(Gear^.dX),
+                        0);
+                defaultPos:= false
+                end;
+            gtKamikaze: begin
+                if CurAmmoGear^.Pos = 0 then
+                    DrawHedgehog(sx, sy,
+                            hwSign(Gear^.dX),
+                            1,
+                            6,
+                            0)
+                else
+                    DrawRotatedF(sprKamikaze,
+                            hwRound(Gear^.X) + WorldDx,
+                            hwRound(Gear^.Y) + WorldDy,
+                            CurAmmoGear^.Pos - 1,
+                            hwSign(Gear^.dX),
+                            aangle);
+                defaultPos:= false
+                end;
+            gtSeduction: begin
+                if CurAmmoGear^.Pos >= 6 then
+                    DrawHedgehog(sx, sy,
+                            hwSign(Gear^.dX),
+                            2,
+                            2,
+                            0)
+                else
+                    begin
+                    DrawRotatedF(sprDress,
+                            hwRound(Gear^.X) + WorldDx,
+                            hwRound(Gear^.Y) + WorldDy,
+                            CurAmmoGear^.Pos,
+                            hwSign(Gear^.dX),
+                            0);
+                    DrawSprite(sprCensored, hwRound(Gear^.X) - 32 + WorldDx, hwRound(Gear^.Y) - 20 + WorldDy, 0)
+                    end;
+                defaultPos:= false
+                end;
+        end;
 
-		case CurAmmoGear^.Kind of
-			gtShotgunShot,
-			gtDEagleShot,
-			gtSniperRifleShot,
-			gtShover: begin
-				DrawHedgehog(sx, sy,
-						hwSign(Gear^.dX),
-						0,
-						4,
-						0);
-				defaultPos:= false;
-				HatVisible:= true
-			end
-		end
-	end else
+        case CurAmmoGear^.Kind of
+            gtShotgunShot,
+            gtDEagleShot,
+            gtSniperRifleShot,
+            gtShover: begin
+                DrawHedgehog(sx, sy,
+                        hwSign(Gear^.dX),
+                        0,
+                        4,
+                        0);
+                defaultPos:= false;
+                HatVisible:= true
+            end
+        end
+    end else
 
-	if ((Gear^.State and gstHHJumping) <> 0) then
-	begin
+    if ((Gear^.State and gstHHJumping) <> 0) then
+    begin
     DrawHedgehog(sx, sy,
         hwSign(Gear^.dX)*m,
         1,
         1,
         0);
-	HatVisible:= true;
-	defaultPos:= false
-	end else
+    HatVisible:= true;
+    defaultPos:= false
+    end else
 
-	if (Gear^.Message and (gm_Left or gm_Right) <> 0) and (not isCursorVisible) then
-		begin
-		DrawHedgehog(sx, sy,
-			hwSign(Gear^.dX),
-			0,
-			PHedgehog(Gear^.Hedgehog)^.visStepPos div 2,
-			0);
-		defaultPos:= false;
-		HatVisible:= true
-		end
-	else
+    if (Gear^.Message and (gm_Left or gm_Right) <> 0) and (not isCursorVisible) then
+        begin
+        DrawHedgehog(sx, sy,
+            hwSign(Gear^.dX),
+            0,
+            PHedgehog(Gear^.Hedgehog)^.visStepPos div 2,
+            0);
+        defaultPos:= false;
+        HatVisible:= true
+        end
+    else
 
-	if ((Gear^.State and gstAnimation) <> 0) then
-		begin
-		DrawRotatedF(Wavez[TWave(Gear^.Tag)].Sprite,
-				sx,
-				sy,
-				Gear^.Pos,
-				hwSign(Gear^.dX),
-				0.0);
-		defaultPos:= false
-		end
-	else
-	if ((Gear^.State and gstAttacked) = 0) then
-	begin
-		amt:= CurrentHedgehog^.Ammo^[CurrentHedgehog^.CurSlot, CurrentHedgehog^.CurAmmo].AmmoType;
-		case amt of
-			amBazooka,
-			amMortar: DrawRotated(sprHandBazooka, hx, hy, hwSign(Gear^.dX), aangle);
-			amMolotov: DrawRotated(sprHandMolotov, hx, hy, hwSign(Gear^.dX), aangle);
-			amBallgun: DrawRotated(sprHandBallgun, hx, hy, hwSign(Gear^.dX), aangle);
-			amDrill: DrawRotated(sprHandDrill, hx, hy, hwSign(Gear^.dX), aangle);
-			amRope: DrawRotated(sprHandRope, hx, hy, hwSign(Gear^.dX), aangle);
-			amShotgun: DrawRotated(sprHandShotgun, hx, hy, hwSign(Gear^.dX), aangle);
-			amDEagle: DrawRotated(sprHandDEagle, hx, hy, hwSign(Gear^.dX), aangle);
-			amSniperRifle: DrawRotatedF(sprSniperRifle, hx, hy, 0, hwSign(Gear^.dX), aangle);
-			amBlowTorch: DrawRotated(sprHandBlowTorch, hx, hy, hwSign(Gear^.dX), aangle);
-			amRCPlane: begin
-				DrawRotated(sprHandPlane, hx, hy, hwSign(Gear^.dX), 0);
-				defaultPos:= false
-				end;
-			amGirder: begin
+    if ((Gear^.State and gstAnimation) <> 0) then
+        begin
+        DrawRotatedF(Wavez[TWave(Gear^.Tag)].Sprite,
+                sx,
+                sy,
+                Gear^.Pos,
+                hwSign(Gear^.dX),
+                0.0);
+        defaultPos:= false
+        end
+    else
+    if ((Gear^.State and gstAttacked) = 0) then
+    begin
+        amt:= CurrentHedgehog^.Ammo^[CurrentHedgehog^.CurSlot, CurrentHedgehog^.CurAmmo].AmmoType;
+        case amt of
+            amBazooka,
+            amMortar: DrawRotated(sprHandBazooka, hx, hy, hwSign(Gear^.dX), aangle);
+            amMolotov: DrawRotated(sprHandMolotov, hx, hy, hwSign(Gear^.dX), aangle);
+            amBallgun: DrawRotated(sprHandBallgun, hx, hy, hwSign(Gear^.dX), aangle);
+            amDrill: DrawRotated(sprHandDrill, hx, hy, hwSign(Gear^.dX), aangle);
+            amRope: DrawRotated(sprHandRope, hx, hy, hwSign(Gear^.dX), aangle);
+            amShotgun: DrawRotated(sprHandShotgun, hx, hy, hwSign(Gear^.dX), aangle);
+            amDEagle: DrawRotated(sprHandDEagle, hx, hy, hwSign(Gear^.dX), aangle);
+            amSniperRifle: DrawRotatedF(sprSniperRifle, hx, hy, 0, hwSign(Gear^.dX), aangle);
+            amBlowTorch: DrawRotated(sprHandBlowTorch, hx, hy, hwSign(Gear^.dX), aangle);
+            amRCPlane: begin
+                DrawRotated(sprHandPlane, hx, hy, hwSign(Gear^.dX), 0);
+                defaultPos:= false
+                end;
+            amGirder: begin
                 DrawSpriteClipped(sprGirder,
                                   sx-256,
                                   sy-256,
@@ -1201,124 +1201,124 @@
                                   cWaterLine+WorldDy,
                                   LongInt(leftX)+WorldDx);
                 end;
-		end;
+        end;
 
-		case amt of
-			amAirAttack,
-			amMineStrike: DrawRotated(sprHandAirAttack, sx, hwRound(Gear^.Y) + WorldDy, hwSign(Gear^.dX), 0);
-			amPickHammer: DrawHedgehog(sx, sy,
-						hwSign(Gear^.dX),
-						1,
-						2,
-						0);
-			amTeleport: DrawRotatedF(sprTeleport, sx, sy, 0, hwSign(Gear^.dX), 0);
-			amKamikaze: DrawHedgehog(sx, sy,
-						hwSign(Gear^.dX),
-						1,
-						5,
-						0);
-			amWhip: DrawRotatedF(sprWhip,
-						sx,
-						sy,
-						0,
-						hwSign(Gear^.dX),
-						0);
-		else
-			DrawHedgehog(sx, sy,
-				hwSign(Gear^.dX),
-				0,
-				4,
-				0);
+        case amt of
+            amAirAttack,
+            amMineStrike: DrawRotated(sprHandAirAttack, sx, hwRound(Gear^.Y) + WorldDy, hwSign(Gear^.dX), 0);
+            amPickHammer: DrawHedgehog(sx, sy,
+                        hwSign(Gear^.dX),
+                        1,
+                        2,
+                        0);
+            amTeleport: DrawRotatedF(sprTeleport, sx, sy, 0, hwSign(Gear^.dX), 0);
+            amKamikaze: DrawHedgehog(sx, sy,
+                        hwSign(Gear^.dX),
+                        1,
+                        5,
+                        0);
+            amWhip: DrawRotatedF(sprWhip,
+                        sx,
+                        sy,
+                        0,
+                        hwSign(Gear^.dX),
+                        0);
+        else
+            DrawHedgehog(sx, sy,
+                hwSign(Gear^.dX),
+                0,
+                4,
+                0);
 
-			HatVisible:= true;
-			with PHedgehog(Gear^.Hedgehog)^ do
-				if (HatTex <> nil)
-				and (HatVisibility > 0) then
-					DrawTextureF(HatTex,
-						HatVisibility,
-						sx,
-						hwRound(Gear^.Y) - 8 + WorldDy,
-						0,
-						hwSign(Gear^.dX),
-						32,
-						32);
-		end;
+            HatVisible:= true;
+            with PHedgehog(Gear^.Hedgehog)^ do
+                if (HatTex <> nil)
+                and (HatVisibility > 0) then
+                    DrawTextureF(HatTex,
+                        HatVisibility,
+                        sx,
+                        hwRound(Gear^.Y) - 8 + WorldDy,
+                        0,
+                        hwSign(Gear^.dX),
+                        32,
+                        32);
+        end;
 
-		case amt of
-			amBaseballBat: DrawRotated(sprHandBaseball,
-					hwRound(Gear^.X) + 1 - 4 * hwSign(Gear^.dX) + WorldDx,
-					hwRound(Gear^.Y) + 6 + WorldDy, hwSign(Gear^.dX), aangle);
-		end;
+        case amt of
+            amBaseballBat: DrawRotated(sprHandBaseball,
+                    hwRound(Gear^.X) + 1 - 4 * hwSign(Gear^.dX) + WorldDx,
+                    hwRound(Gear^.Y) + 6 + WorldDy, hwSign(Gear^.dX), aangle);
+        end;
 
-		defaultPos:= false
-	end;
+        defaultPos:= false
+    end;
 
 end else // not gstHHDriven
-	begin
-	if (Gear^.Damage > 0)
-	and (hwSqr(Gear^.dX) + hwSqr(Gear^.dY) > _0_003) then
-		begin
-		DrawHedgehog(sx, sy,
-			hwSign(Gear^.dX),
-			2,
-			1,
-			Gear^.DirAngle);
-		defaultPos:= false
-		end else
+    begin
+    if (Gear^.Damage > 0)
+    and (hwSqr(Gear^.dX) + hwSqr(Gear^.dY) > _0_003) then
+        begin
+        DrawHedgehog(sx, sy,
+            hwSign(Gear^.dX),
+            2,
+            1,
+            Gear^.DirAngle);
+        defaultPos:= false
+        end else
 
-	if ((Gear^.State and gstHHJumping) <> 0) then
-		begin
-		DrawHedgehog(sx, sy,
-			hwSign(Gear^.dX)*m,
-			1,
-			1,
-			0);
-		defaultPos:= false
-		end;
-	end;
+    if ((Gear^.State and gstHHJumping) <> 0) then
+        begin
+        DrawHedgehog(sx, sy,
+            hwSign(Gear^.dX)*m,
+            1,
+            1,
+            0);
+        defaultPos:= false
+        end;
+    end;
 
 with PHedgehog(Gear^.Hedgehog)^ do
-	begin
-	if defaultPos then
-		begin
-		DrawRotatedF(sprHHIdle,
-			sx,
-			sy,
-			(RealTicks div 128 + Gear^.Pos) mod 19,
-			hwSign(Gear^.dX),
-			0);
-		HatVisible:= true;
-		end;
+    begin
+    if defaultPos then
+        begin
+        DrawRotatedF(sprHHIdle,
+            sx,
+            sy,
+            (RealTicks div 128 + Gear^.Pos) mod 19,
+            hwSign(Gear^.dX),
+            0);
+        HatVisible:= true;
+        end;
 
-	if HatVisible then
-		if HatVisibility < 1.0 then
-			HatVisibility:= HatVisibility + 0.2
-		else
-	else
-		if HatVisibility > 0.0 then
-			HatVisibility:= HatVisibility - 0.2;
+    if HatVisible then
+        if HatVisibility < 1.0 then
+            HatVisibility:= HatVisibility + 0.2
+        else
+    else
+        if HatVisibility > 0.0 then
+            HatVisibility:= HatVisibility - 0.2;
 
-	if (HatTex <> nil)
-	and (HatVisibility > 0) then
-		if DefaultPos then
-			DrawTextureF(HatTex,
-				HatVisibility,
-				sx,
-				hwRound(Gear^.Y) - 8 + WorldDy,
-				(RealTicks div 128 + Gear^.Pos) mod 19,
-				hwSign(Gear^.dX),
-				32,
-				32)
-		else
-			DrawTextureF(HatTex,
-				HatVisibility,
-				sx,
-				hwRound(Gear^.Y) - 8 + WorldDy,
-				0,
-				hwSign(Gear^.dX)*m,
-				32,
-				32);
-	end;
+    if (HatTex <> nil)
+    and (HatVisibility > 0) then
+        if DefaultPos then
+            DrawTextureF(HatTex,
+                HatVisibility,
+                sx,
+                hwRound(Gear^.Y) - 8 + WorldDy,
+                (RealTicks div 128 + Gear^.Pos) mod 19,
+                hwSign(Gear^.dX),
+                32,
+                32)
+        else
+            DrawTextureF(HatTex,
+                HatVisibility,
+                sx,
+                hwRound(Gear^.Y) - 8 + WorldDy,
+                0,
+                hwSign(Gear^.dX)*m,
+                32,
+                32);
+    end;
 if (Gear^.State and gstHHDriven) <> 0 then
     begin
 (*    if (CurAmmoGear = nil) then
@@ -1332,60 +1332,60 @@
         begin
         case CurAmmoGear^.Kind of
             gtJetpack: begin
-	                   DrawSprite(sprJetpack, sx-32, sy-32, 0);
-	                   if (CurAmmoGear^.MsgParam and gm_Up) <> 0 then DrawSprite(sprJetpack, sx-32, sy-32, 1);
-	                   if (CurAmmoGear^.MsgParam and gm_Left) <> 0 then DrawSprite(sprJetpack, sx-32, sy-32, 2);
-	                   if (CurAmmoGear^.MsgParam and gm_Right) <> 0 then DrawSprite(sprJetpack, sx-32, sy-32, 3);
+                       DrawSprite(sprJetpack, sx-32, sy-32, 0);
+                       if (CurAmmoGear^.MsgParam and gm_Up) <> 0 then DrawSprite(sprJetpack, sx-32, sy-32, 1);
+                       if (CurAmmoGear^.MsgParam and gm_Left) <> 0 then DrawSprite(sprJetpack, sx-32, sy-32, 2);
+                       if (CurAmmoGear^.MsgParam and gm_Right) <> 0 then DrawSprite(sprJetpack, sx-32, sy-32, 3);
                        if CurAmmoGear^.Tex <> nil then DrawCentered(sx, sy - 40, CurAmmoGear^.Tex);
-					   DrawAltWeapon(Gear, sx, sy)
+                       DrawAltWeapon(Gear, sx, sy)
                        end;
             end;
         end
     end;
 
 with PHedgehog(Gear^.Hedgehog)^ do
-	begin
-	if ((Gear^.State and not gstWinner) = 0)
-		or (bShowFinger and ((Gear^.State and gstHHDriven) <> 0)) then
-		begin
-		t:= hwRound(Gear^.Y) - cHHRadius - 12 + WorldDy;
-		if (cTagsMask and htTransparent) <> 0 then
-			glColor4f(1, 1, 1, 0.5);
-		if ((cTagsMask and htHealth) <> 0) then
-			begin
-			dec(t, HealthTagTex^.h + 2);
-			DrawCentered(hwRound(Gear^.X) + WorldDx, t, HealthTagTex)
-			end;
-		if (cTagsMask and htName) <> 0 then
-			begin
-			dec(t, NameTagTex^.h + 2);
-			DrawCentered(hwRound(Gear^.X) + WorldDx, t, NameTagTex)
-			end;
-		if (cTagsMask and htTeamName) <> 0 then
-			begin
-			dec(t, Team^.NameTagTex^.h + 2);
-			DrawCentered(hwRound(Gear^.X) + WorldDx, t, Team^.NameTagTex)
-			end;
-		if (cTagsMask and htTransparent) <> 0 then
-			glColor4f(1, 1, 1, 1)
-		end;
-	if (Gear^.State and gstHHDriven) <> 0 then // Current hedgehog
-		begin
-		if bShowFinger and ((Gear^.State and gstHHDriven) <> 0) then
-			DrawSprite(sprFinger, hwRound(Gear^.X) - 16 + WorldDx, hwRound(Gear^.Y) - 64 + WorldDy,
-						GameTicks div 32 mod 16);
+    begin
+    if ((Gear^.State and not gstWinner) = 0)
+        or (bShowFinger and ((Gear^.State and gstHHDriven) <> 0)) then
+        begin
+        t:= hwRound(Gear^.Y) - cHHRadius - 12 + WorldDy;
+        if (cTagsMask and htTransparent) <> 0 then
+            glColor4f(1, 1, 1, 0.5);
+        if ((cTagsMask and htHealth) <> 0) then
+            begin
+            dec(t, HealthTagTex^.h + 2);
+            DrawCentered(hwRound(Gear^.X) + WorldDx, t, HealthTagTex)
+            end;
+        if (cTagsMask and htName) <> 0 then
+            begin
+            dec(t, NameTagTex^.h + 2);
+            DrawCentered(hwRound(Gear^.X) + WorldDx, t, NameTagTex)
+            end;
+        if (cTagsMask and htTeamName) <> 0 then
+            begin
+            dec(t, Team^.NameTagTex^.h + 2);
+            DrawCentered(hwRound(Gear^.X) + WorldDx, t, Team^.NameTagTex)
+            end;
+        if (cTagsMask and htTransparent) <> 0 then
+            glColor4f(1, 1, 1, 1)
+        end;
+    if (Gear^.State and gstHHDriven) <> 0 then // Current hedgehog
+        begin
+        if bShowFinger and ((Gear^.State and gstHHDriven) <> 0) then
+            DrawSprite(sprFinger, hwRound(Gear^.X) - 16 + WorldDx, hwRound(Gear^.Y) - 64 + WorldDy,
+                        GameTicks div 32 mod 16);
 
-		if (Gear^.State and gstDrowning) = 0 then
-			if (Gear^.State and gstHHThinking) <> 0 then
-				DrawSprite(sprQuestion, hwRound(Gear^.X) - 10 + WorldDx, hwRound(Gear^.Y) - cHHRadius - 34 + WorldDy, 0)
-		end
-	end;
+        if (Gear^.State and gstDrowning) = 0 then
+            if (Gear^.State and gstHHThinking) <> 0 then
+                DrawSprite(sprQuestion, hwRound(Gear^.X) - 10 + WorldDx, hwRound(Gear^.Y) - cHHRadius - 34 + WorldDy, 0)
+        end
+    end;
 
 if Gear^.Invulnerable then
     begin
     glColor4f(1, 1, 1, 0.25 + abs(1 - ((RealTicks div 2) mod 1500) / 750));
-	DrawSprite(sprInvulnerable, sx - 24, sy - 24, 0);
-	glColor4f(1, 1, 1, 1);
+    DrawSprite(sprInvulnerable, sx - 24, sy - 24, 0);
+    glColor4f(1, 1, 1, 1);
     end;
 if cVampiric and
    (CurrentHedgehog^.Gear <> nil) and
@@ -1393,141 +1393,141 @@
     begin
     glColor4f(1, 1, 1, 0.25 + abs(1 - (RealTicks mod 1500) / 750));
     DrawSprite(sprVampiric, sx - 24, sy - 24, 0);
-	glColor4f(1, 1, 1, 1);
+    glColor4f(1, 1, 1, 1);
     end;
 end;
 
 procedure DrawRopeLinesRQ(Gear: PGear);
 begin
 with RopePoints do
-	begin
-	rounded[Count].X:= hwRound(Gear^.X);
-	rounded[Count].Y:= hwRound(Gear^.Y);
-	rounded[Count + 1].X:= hwRound(PHedgehog(Gear^.Hedgehog)^.Gear^.X);
-	rounded[Count + 1].Y:= hwRound(PHedgehog(Gear^.Hedgehog)^.Gear^.Y);
-	end;
+    begin
+    rounded[Count].X:= hwRound(Gear^.X);
+    rounded[Count].Y:= hwRound(Gear^.Y);
+    rounded[Count + 1].X:= hwRound(PHedgehog(Gear^.Hedgehog)^.Gear^.X);
+    rounded[Count + 1].Y:= hwRound(PHedgehog(Gear^.Hedgehog)^.Gear^.Y);
+    end;
 
 if (RopePoints.Count > 0) or (Gear^.Elasticity.QWordValue > 0) then
-	begin
-	glDisable(GL_TEXTURE_2D);
-	//glEnable(GL_LINE_SMOOTH);
+    begin
+    glDisable(GL_TEXTURE_2D);
+    //glEnable(GL_LINE_SMOOTH);
 
-	glPushMatrix;
+    glPushMatrix;
 
-	glTranslatef(WorldDx, WorldDy, 0);
+    glTranslatef(WorldDx, WorldDy, 0);
 
-	glLineWidth(4.0);
+    glLineWidth(4.0);
 
-	glColor4f(0.8, 0.8, 0.8, 1);
+    glColor4f(0.8, 0.8, 0.8, 1);
 
-	glEnableClientState(GL_VERTEX_ARRAY);
-	glVertexPointer(2, GL_FLOAT, 0, @RopePoints.rounded[0]);
-	glDrawArrays(GL_LINE_STRIP, 0, RopePoints.Count + 2);
-	glColor4f(1, 1, 1, 1);
+    glEnableClientState(GL_VERTEX_ARRAY);
+    glVertexPointer(2, GL_FLOAT, 0, @RopePoints.rounded[0]);
+    glDrawArrays(GL_LINE_STRIP, 0, RopePoints.Count + 2);
+    glColor4f(1, 1, 1, 1);
 
-	glPopMatrix;
+    glPopMatrix;
 
-	glEnable(GL_TEXTURE_2D);
-	//glDisable(GL_LINE_SMOOTH)
-	end
+    glEnable(GL_TEXTURE_2D);
+    //glDisable(GL_LINE_SMOOTH)
+    end
 end;
 
 procedure DrawRope(Gear: PGear);
 var roplen: LongInt;
-	i: Longword;
+    i: Longword;
 
-	procedure DrawRopeLine(X1, Y1, X2, Y2: LongInt);
-	var  eX, eY, dX, dY: LongInt;
-		i, sX, sY, x, y, d: LongInt;
-		b: boolean;
-	begin
-	if (X1 = X2) and (Y1 = Y2) then
-	begin
-	//OutError('WARNING: zero length rope line!', false);
-	exit
-	end;
-	eX:= 0;
-	eY:= 0;
-	dX:= X2 - X1;
-	dY:= Y2 - Y1;
+    procedure DrawRopeLine(X1, Y1, X2, Y2: LongInt);
+    var  eX, eY, dX, dY: LongInt;
+        i, sX, sY, x, y, d: LongInt;
+        b: boolean;
+    begin
+    if (X1 = X2) and (Y1 = Y2) then
+    begin
+    //OutError('WARNING: zero length rope line!', false);
+    exit
+    end;
+    eX:= 0;
+    eY:= 0;
+    dX:= X2 - X1;
+    dY:= Y2 - Y1;
 
-	if (dX > 0) then sX:= 1
-	else
-	if (dX < 0) then
-		begin
-		sX:= -1;
-		dX:= -dX
-		end else sX:= dX;
+    if (dX > 0) then sX:= 1
+    else
+    if (dX < 0) then
+        begin
+        sX:= -1;
+        dX:= -dX
+        end else sX:= dX;
 
-	if (dY > 0) then sY:= 1
-	else
-	if (dY < 0) then
-		begin
-		sY:= -1;
-		dY:= -dY
-		end else sY:= dY;
+    if (dY > 0) then sY:= 1
+    else
+    if (dY < 0) then
+        begin
+        sY:= -1;
+        dY:= -dY
+        end else sY:= dY;
 
-		if (dX > dY) then d:= dX
-					else d:= dY;
+        if (dX > dY) then d:= dX
+                    else d:= dY;
 
-		x:= X1;
-		y:= Y1;
+        x:= X1;
+        y:= Y1;
 
-		for i:= 0 to d do
-			begin
-			inc(eX, dX);
-			inc(eY, dY);
-			b:= false;
-			if (eX > d) then
-				begin
-				dec(eX, d);
-				inc(x, sX);
-				b:= true
-				end;
-			if (eY > d) then
-				begin
-				dec(eY, d);
-				inc(y, sY);
-				b:= true
-				end;
-			if b then
-				begin
-				inc(roplen);
-				if (roplen mod 4) = 0 then DrawSprite(sprRopeNode, x - 2, y - 2, 0)
-				end
-		end
-	end;
+        for i:= 0 to d do
+            begin
+            inc(eX, dX);
+            inc(eY, dY);
+            b:= false;
+            if (eX > d) then
+                begin
+                dec(eX, d);
+                inc(x, sX);
+                b:= true
+                end;
+            if (eY > d) then
+                begin
+                dec(eY, d);
+                inc(y, sY);
+                b:= true
+                end;
+            if b then
+                begin
+                inc(roplen);
+                if (roplen mod 4) = 0 then DrawSprite(sprRopeNode, x - 2, y - 2, 0)
+                end
+        end
+    end;
 begin
-	if cReducedQuality then
-		DrawRopeLinesRQ(Gear)
-	else
-		begin
-		roplen:= 0;
-		if RopePoints.Count > 0 then
-			begin
-			i:= 0;
-			while i < Pred(RopePoints.Count) do
-					begin
-					DrawRopeLine(hwRound(RopePoints.ar[i].X) + WorldDx, hwRound(RopePoints.ar[i].Y) + WorldDy,
-								hwRound(RopePoints.ar[Succ(i)].X) + WorldDx, hwRound(RopePoints.ar[Succ(i)].Y) + WorldDy);
-					inc(i)
-					end;
-			DrawRopeLine(hwRound(RopePoints.ar[i].X) + WorldDx, hwRound(RopePoints.ar[i].Y) + WorldDy,
-						hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy);
-			DrawRopeLine(hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy,
-						hwRound(PHedgehog(Gear^.Hedgehog)^.Gear^.X) + WorldDx, hwRound(PHedgehog(Gear^.Hedgehog)^.Gear^.Y) + WorldDy);
-			end else
-			if Gear^.Elasticity.QWordValue > 0 then
-			DrawRopeLine(hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy,
-						hwRound(PHedgehog(Gear^.Hedgehog)^.Gear^.X) + WorldDx, hwRound(PHedgehog(Gear^.Hedgehog)^.Gear^.Y) + WorldDy);
-		end;
+    if cReducedQuality then
+        DrawRopeLinesRQ(Gear)
+    else
+        begin
+        roplen:= 0;
+        if RopePoints.Count > 0 then
+            begin
+            i:= 0;
+            while i < Pred(RopePoints.Count) do
+                    begin
+                    DrawRopeLine(hwRound(RopePoints.ar[i].X) + WorldDx, hwRound(RopePoints.ar[i].Y) + WorldDy,
+                                hwRound(RopePoints.ar[Succ(i)].X) + WorldDx, hwRound(RopePoints.ar[Succ(i)].Y) + WorldDy);
+                    inc(i)
+                    end;
+            DrawRopeLine(hwRound(RopePoints.ar[i].X) + WorldDx, hwRound(RopePoints.ar[i].Y) + WorldDy,
+                        hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy);
+            DrawRopeLine(hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy,
+                        hwRound(PHedgehog(Gear^.Hedgehog)^.Gear^.X) + WorldDx, hwRound(PHedgehog(Gear^.Hedgehog)^.Gear^.Y) + WorldDy);
+            end else
+            if Gear^.Elasticity.QWordValue > 0 then
+            DrawRopeLine(hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy,
+                        hwRound(PHedgehog(Gear^.Hedgehog)^.Gear^.X) + WorldDx, hwRound(PHedgehog(Gear^.Hedgehog)^.Gear^.Y) + WorldDy);
+        end;
 
 
 if RopePoints.Count > 0 then
-	DrawRotated(sprRopeHook, hwRound(RopePoints.ar[0].X) + WorldDx, hwRound(RopePoints.ar[0].Y) + WorldDy, 1, RopePoints.HookAngle)
-	else
-	if Gear^.Elasticity.QWordValue > 0 then
-		DrawRotated(sprRopeHook, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, 0, DxDy2Angle(Gear^.dY, Gear^.dX));
+    DrawRotated(sprRopeHook, hwRound(RopePoints.ar[0].X) + WorldDx, hwRound(RopePoints.ar[0].Y) + WorldDy, 1, RopePoints.HookAngle)
+    else
+    if Gear^.Elasticity.QWordValue > 0 then
+        DrawRotated(sprRopeHook, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, 0, DxDy2Angle(Gear^.dY, Gear^.dX));
 end;
 
 procedure DrawGears;
@@ -1536,10 +1536,10 @@
 begin
 Gear:= GearsList;
 while Gear<>nil do
-	begin
-	case Gear^.Kind of
+    begin
+    case Gear^.Kind of
        gtAmmo_Bomb: DrawRotated(sprBomb, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, 0, Gear^.DirAngle);
-	gtMolotov: DrawRotated(sprMolotov, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, 0, Gear^.DirAngle);
+    gtMolotov: DrawRotated(sprMolotov, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, 0, Gear^.DirAngle);
 
        gtRCPlane: begin
                   if (Gear^.Tag = -1) then
@@ -1547,7 +1547,7 @@
                   else
                      DrawRotated(sprPlane, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy,0,DxDy2Angle(Gear^.dY, Gear^.dX));
                   if ((TrainingFlags and tfRCPlane) <> 0) and (TrainingTargetGear <> nil) and ((Gear^.State and gstDrowning) = 0) then
-					 DrawRotatedf(sprFinger, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, GameTicks div 32 mod 16, 0, DxDy2Angle(Gear^.X - TrainingTargetGear^.X, TrainingTargetGear^.Y - Gear^.Y));
+                     DrawRotatedf(sprFinger, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, GameTicks div 32 mod 16, 0, DxDy2Angle(Gear^.X - TrainingTargetGear^.X, TrainingTargetGear^.Y - Gear^.Y));
                   end;
        gtBall: DrawRotatedf(sprBalls, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, Gear^.Tag,0, DxDy2Angle(Gear^.dY, Gear^.dX));
 
@@ -1602,9 +1602,9 @@
          gtCluster: DrawSprite(sprClusterParticle, hwRound(Gear^.X) - 8 + WorldDx, hwRound(Gear^.Y) - 8 + WorldDy, 0);
            gtFlame: DrawTextureF(SpritesData[sprFlame].Texture, 2 / (Gear^.Tag mod 3 + 2), hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, (GameTicks div 128 + LongWord(Gear^.Tag)) mod 8, 1, 16, 16);
        gtParachute: begin
-					DrawSprite(sprParachute, hwRound(Gear^.X) - 24 + WorldDx, hwRound(Gear^.Y) - 48 + WorldDy, 0);
-					DrawAltWeapon(Gear, hwRound(Gear^.X) + 1 + WorldDx, hwRound(Gear^.Y) - 3 + WorldDy)
-					end;
+                    DrawSprite(sprParachute, hwRound(Gear^.X) - 24 + WorldDx, hwRound(Gear^.Y) - 48 + WorldDy, 0);
+                    DrawAltWeapon(Gear, hwRound(Gear^.X) + 1 + WorldDx, hwRound(Gear^.Y) - 3 + WorldDy)
+                    end;
        gtAirAttack: if Gear^.Tag > 0 then DrawSprite(sprAirplane, hwRound(Gear^.X) - SpritesData[sprAirplane].Width div 2 + WorldDx, hwRound(Gear^.Y) - SpritesData[sprAirplane].Height div 2 + WorldDy, 0)
                                      else DrawSprite(sprAirplane, hwRound(Gear^.X) - SpritesData[sprAirplane].Width div 2 + WorldDx, hwRound(Gear^.Y) - SpritesData[sprAirplane].Height div 2 + WorldDy, 1);
          gtAirBomb: DrawRotated(sprAirBomb, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, 0, DxDy2Angle(Gear^.dY, Gear^.dX));
@@ -1615,10 +1615,10 @@
                     end;
         gtSwitcher: DrawSprite(sprSwitch, hwRound(Gear^.X) - 16 + WorldDx, hwRound(Gear^.Y) - 56 + WorldDy, (GameTicks shr 6) mod 12);
           gtTarget: begin
-					glColor4f(1, 1, 1, Gear^.Timer / 1000);
-					DrawSprite(sprTarget, hwRound(Gear^.X) - 16 + WorldDx, hwRound(Gear^.Y) - 16 + WorldDy, 0);
-					glColor4f(1, 1, 1, 1);
-					end;
+                    glColor4f(1, 1, 1, Gear^.Timer / 1000);
+                    DrawSprite(sprTarget, hwRound(Gear^.X) - 16 + WorldDx, hwRound(Gear^.Y) - 16 + WorldDy, 0);
+                    glColor4f(1, 1, 1, 1);
+                    end;
           gtMortar: DrawRotated(sprMortar, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, 0, DxDy2Angle(Gear^.dY, Gear^.dX));
           gtCake: if Gear^.Pos = 6 then
                      DrawRotatedf(sprCakeWalk, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, (GameTicks div 40) mod 6, hwSign(Gear^.dX), Gear^.DirAngle * hwSign(Gear^.dX) + 90)
@@ -1638,46 +1638,46 @@
 procedure FreeGearsList;
 var t, tt: PGear;
 begin
-	tt:= GearsList;
-	GearsList:= nil;
-	while tt <> nil do
-	begin
-		t:= tt;
-		tt:= tt^.NextGear;
-		Dispose(t)
-	end;
+    tt:= GearsList;
+    GearsList:= nil;
+    while tt <> nil do
+    begin
+        t:= tt;
+        tt:= tt^.NextGear;
+        Dispose(t)
+    end;
 end;
 
 procedure AddMiscGears;
 var i: LongInt;
-	Gear: PGear;
+    Gear: PGear;
 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;
+    begin
+    TrainingTargetGear:= AddGear(0, 0, gtTarget, 0, _0, _0, 0);
+    FindPlace(TrainingTargetGear, false, 0, LAND_WIDTH);
+    end;
 
 if ((GameFlags and gfForts) = 0) then
-	begin
-	// TODO: exclude each other or allow both, mines and explosives, on same map?
-	if ((GameFlags and gfMines) <> 0) then
-		for i:= 0 to Pred(cLandAdditions) do
-			begin
-			Gear:= AddGear(0, 0, gtMine, 0, _0, _0, 0);
-			Gear^.TriggerId:= i + 1;
-			FindPlace(Gear, false, 0, LAND_WIDTH);
-			end;
+    begin
+    // TODO: exclude each other or allow both, mines and explosives, on same map?
+    if ((GameFlags and gfMines) <> 0) then
+        for i:= 0 to Pred(cLandAdditions) do
+            begin
+            Gear:= AddGear(0, 0, gtMine, 0, _0, _0, 0);
+            Gear^.TriggerId:= i + 1;
+            FindPlace(Gear, false, 0, LAND_WIDTH);
+            end;
 //  No game flag for this for now
-//	if ((GameFlags and gfExplosives) <> 0) then
-		for i:= 0 to Pred(cExplosives) do
-			begin
-			Gear:= AddGear(0, 0, gtExplosives, 0, _0, _0, 0);
-			FindPlace(Gear, false, 0, LAND_WIDTH);
-			end;
-	end;
+//  if ((GameFlags and gfExplosives) <> 0) then
+        for i:= 0 to Pred(cExplosives) do
+            begin
+            Gear:= AddGear(0, 0, gtExplosives, 0, _0, _0, 0);
+            FindPlace(Gear, false, 0, LAND_WIDTH);
+            end;
+    end;
 
 if (GameFlags and gfLowGravity) <> 0 then
     cGravity:= cMaxWindSpeed / 2;
@@ -1710,56 +1710,56 @@
 if (Mask and EXPLAutoSound) <> 0 then PlaySound(sndExplosion);
 
 if (Mask and EXPLAllDamageInRadius) = 0 then
-	dmgRadius:= Radius shl 1
+    dmgRadius:= Radius shl 1
 else
-	dmgRadius:= Radius;
+    dmgRadius:= Radius;
 
 Gear:= GearsList;
 while Gear <> nil do
-	begin
-	dmg:= dmgRadius  + cHHRadius div 2 - hwRound(Distance(Gear^.X - int2hwFloat(X), Gear^.Y - int2hwFloat(Y)));
-	if (dmg > 1) and
-		((Gear^.State and gstNoDamage) = 0) then
-		begin
-		dmg:= ModifyDamage(min(dmg div 2, Radius), Gear);
-		case Gear^.Kind of
-			gtHedgehog,
-				gtMine,
-				gtCase,
-				gtTarget,
-				gtFlame,
-				gtExplosives: begin
-						//{$IFDEF DEBUGFILE}AddFileLog('Damage: ' + inttostr(dmg));{$ENDIF}
-						if (Mask and EXPLNoDamage) = 0 then
-							begin
-							if not Gear^.Invulnerable then
+    begin
+    dmg:= dmgRadius  + cHHRadius div 2 - hwRound(Distance(Gear^.X - int2hwFloat(X), Gear^.Y - int2hwFloat(Y)));
+    if (dmg > 1) and
+        ((Gear^.State and gstNoDamage) = 0) then
+        begin
+        dmg:= ModifyDamage(min(dmg div 2, Radius), Gear);
+        case Gear^.Kind of
+            gtHedgehog,
+                gtMine,
+                gtCase,
+                gtTarget,
+                gtFlame,
+                gtExplosives: begin
+                        //{$IFDEF DEBUGFILE}AddFileLog('Damage: ' + inttostr(dmg));{$ENDIF}
+                        if (Mask and EXPLNoDamage) = 0 then
+                            begin
+                            if not Gear^.Invulnerable then
                                 ApplyDamage(Gear, dmg)
                             else
                                 Gear^.State:= Gear^.State or gstWinner;
-							end;
-						if ((Mask and EXPLDoNotTouchHH) = 0) or (Gear^.Kind <> gtHedgehog) then
-							begin
-							DeleteCI(Gear);
-							Gear^.dX:= Gear^.dX + SignAs(_0_005 * dmg + cHHKick, Gear^.X - int2hwFloat(X));
-							Gear^.dY:= Gear^.dY + SignAs(_0_005 * dmg + cHHKick, Gear^.Y - int2hwFloat(Y));
-							Gear^.State:= (Gear^.State or gstMoving) and (not gstLoser);
-							if not Gear^.Invulnerable then
-								Gear^.State:= (Gear^.State or gstMoving) and (not gstWinner);
-							Gear^.Active:= true;
-							FollowGear:= Gear
-							end;
-						end;
-				gtGrave: begin
-						Gear^.dY:= - _0_004 * dmg;
-						Gear^.Active:= true;
-						end;
-			end;
-		end;
-	Gear:= Gear^.NextGear
-	end;
+                            end;
+                        if ((Mask and EXPLDoNotTouchHH) = 0) or (Gear^.Kind <> gtHedgehog) then
+                            begin
+                            DeleteCI(Gear);
+                            Gear^.dX:= Gear^.dX + SignAs(_0_005 * dmg + cHHKick, Gear^.X - int2hwFloat(X));
+                            Gear^.dY:= Gear^.dY + SignAs(_0_005 * dmg + cHHKick, Gear^.Y - int2hwFloat(Y));
+                            Gear^.State:= (Gear^.State or gstMoving) and (not gstLoser);
+                            if not Gear^.Invulnerable then
+                                Gear^.State:= (Gear^.State or gstMoving) and (not gstWinner);
+                            Gear^.Active:= true;
+                            FollowGear:= Gear
+                            end;
+                        end;
+                gtGrave: begin
+                        Gear^.dY:= - _0_004 * dmg;
+                        Gear^.Active:= true;
+                        end;
+            end;
+        end;
+    Gear:= Gear^.NextGear
+    end;
 
 if (Mask and EXPLDontDraw) = 0 then
-	if (GameFlags and gfSolidLand) = 0 then DrawExplosion(X, Y, Radius);
+    if (GameFlags and gfSolidLand) = 0 then DrawExplosion(X, Y, Radius);
 
 uAIMisc.AwareOfExplosion(0, 0, 0)
 end;
@@ -1771,34 +1771,34 @@
 Gear^.Radius:= cShotgunRadius;
 t:= GearsList;
 while t <> nil do
-	begin
-	dmg:= ModifyDamage(min(Gear^.Radius + t^.Radius - hwRound(Distance(Gear^.X - t^.X, Gear^.Y - t^.Y)), 25), t);
-	if dmg > 0 then
-	case t^.Kind of
-		gtHedgehog,
-			gtMine,
-			gtCase,
-			gtTarget,
-			gtExplosives: begin
+    begin
+    dmg:= ModifyDamage(min(Gear^.Radius + t^.Radius - hwRound(Distance(Gear^.X - t^.X, Gear^.Y - t^.Y)), 25), t);
+    if dmg > 0 then
+    case t^.Kind of
+        gtHedgehog,
+            gtMine,
+            gtCase,
+            gtTarget,
+            gtExplosives: begin
                     if (not t^.Invulnerable) then
                         ApplyDamage(t, dmg)
                     else
                         Gear^.State:= Gear^.State or gstWinner;
 
-					DeleteCI(t);
-					t^.dX:= t^.dX + Gear^.dX * dmg * _0_01 + SignAs(cHHKick, Gear^.dX);
-					t^.dY:= t^.dY + Gear^.dY * dmg * _0_01;
-					t^.State:= t^.State or gstMoving;
-					t^.Active:= true;
-					FollowGear:= t
-					end;
-			gtGrave: begin
-					t^.dY:= - _0_1;
-					t^.Active:= true
-					end;
-		end;
-	t:= t^.NextGear
-	end;
+                    DeleteCI(t);
+                    t^.dX:= t^.dX + Gear^.dX * dmg * _0_01 + SignAs(cHHKick, Gear^.dX);
+                    t^.dY:= t^.dY + Gear^.dY * dmg * _0_01;
+                    t^.State:= t^.State or gstMoving;
+                    t^.Active:= true;
+                    FollowGear:= t
+                    end;
+            gtGrave: begin
+                    t^.dY:= - _0_1;
+                    t^.Active:= true
+                    end;
+        end;
+    t:= t^.NextGear
+    end;
 if (GameFlags and gfSolidLand) = 0 then DrawExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), cShotgunRadius)
 end;
 
@@ -1812,28 +1812,28 @@
 
 if (Ammo^.Kind = gtFlame) and (i > 0) then Ammo^.Health:= 0;
 while i > 0 do
-	begin
-	dec(i);
-	Gear:= t^.ar[i];
+    begin
+    dec(i);
+    Gear:= t^.ar[i];
     tmpDmg:= ModifyDamage(Damage, Gear);
-	if (Gear^.State and gstNoDamage) = 0 then
-		begin
-		if (Gear^.Kind = gtHedgehog) and (Ammo^.State and gsttmpFlag <> 0) and (Ammo^.Kind = gtShover) then Gear^.FlightTime:= 1;
-		
-		case Gear^.Kind of
-			gtHedgehog,
-			gtMine,
-			gtTarget,
-			gtCase,
-			gtExplosives: begin
-					if (Ammo^.Kind = gtDrill) then begin Ammo^.Timer:= 0; exit; end;
+    if (Gear^.State and gstNoDamage) = 0 then
+        begin
+        if (Gear^.Kind = gtHedgehog) and (Ammo^.State and gsttmpFlag <> 0) and (Ammo^.Kind = gtShover) then Gear^.FlightTime:= 1;
+        
+        case Gear^.Kind of
+            gtHedgehog,
+            gtMine,
+            gtTarget,
+            gtCase,
+            gtExplosives: begin
+                    if (Ammo^.Kind = gtDrill) then begin Ammo^.Timer:= 0; exit; end;
                     if (not Gear^.Invulnerable) then
                         ApplyDamage(Gear, tmpDmg)
                     else
                         Gear^.State:= Gear^.State or gstWinner;
                     if (Gear^.Kind = gtExplosives) and (Ammo^.Kind = gtBlowtorch) then ApplyDamage(Gear, tmpDmg * 100); // crank up damage for explosives + blowtorch
 
-					DeleteCI(Gear);
+                    DeleteCI(Gear);
                     if (Gear^.Kind = gtHedgehog) and PHedgehog(Gear^.Hedgehog)^.King then
                         begin
                         Gear^.dX:= Ammo^.dX * Power * _0_005;
@@ -1845,88 +1845,88 @@
                         Gear^.dY:= Ammo^.dY * Power * _0_01
                         end;
 
-					Gear^.Active:= true;
-					Gear^.State:= Gear^.State or gstMoving;
+                    Gear^.Active:= true;
+                    Gear^.State:= Gear^.State or gstMoving;
 
-					if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then
-						begin
-						if not (TestCollisionXwithXYShift(Gear, _0, -3, hwSign(Gear^.dX))
-							or TestCollisionYwithGear(Gear, -1)) then Gear^.Y:= Gear^.Y - _1;
-						if not (TestCollisionXwithXYShift(Gear, _0, -2, hwSign(Gear^.dX))
-							or TestCollisionYwithGear(Gear, -1)) then Gear^.Y:= Gear^.Y - _1;
-						if not (TestCollisionXwithXYShift(Gear, _0, -1, hwSign(Gear^.dX))
-							or TestCollisionYwithGear(Gear, -1)) then Gear^.Y:= Gear^.Y - _1;
-						end;
-					
+                    if TestCollisionXwithGear(Gear, hwSign(Gear^.dX)) then
+                        begin
+                        if not (TestCollisionXwithXYShift(Gear, _0, -3, hwSign(Gear^.dX))
+                            or TestCollisionYwithGear(Gear, -1)) then Gear^.Y:= Gear^.Y - _1;
+                        if not (TestCollisionXwithXYShift(Gear, _0, -2, hwSign(Gear^.dX))
+                            or TestCollisionYwithGear(Gear, -1)) then Gear^.Y:= Gear^.Y - _1;
+                        if not (TestCollisionXwithXYShift(Gear, _0, -1, hwSign(Gear^.dX))
+                            or TestCollisionYwithGear(Gear, -1)) then Gear^.Y:= Gear^.Y - _1;
+                        end;
+                    
                     if (Ammo^.Kind <> gtFlame) or ((Ammo^.State and gsttmpFlag) = 0) then FollowGear:= Gear
-					end;
-		end
-		end;
-	end;
+                    end;
+        end
+        end;
+    end;
 if i <> 0 then SetAllToActive
 end;
 
 procedure AssignHHCoords;
 var i, t, p, j: LongInt;
-	ar: array[0..Pred(cMaxHHs)] of PHedgehog;
-	Count: Longword;
+    ar: array[0..Pred(cMaxHHs)] of PHedgehog;
+    Count: Longword;
 begin
 if (GameFlags and gfPlaceHog) <> 0 then PlacingHogs:= true;
 if (GameFlags and (gfForts or gfDivideTeams)) <> 0 then
-	begin
-	t:= 0;
-	TryDo(ClansCount = 2, 'More or less than 2 clans on map in divided teams mode!', true);
-	for p:= 0 to 1 do
-		begin
-		with ClansArray[p]^ do
-			for j:= 0 to Pred(TeamsNumber) do
-				with Teams[j]^ do
-					for i:= 0 to cMaxHHIndex do
-						with Hedgehogs[i] do
-							if (Gear <> nil) and (Gear^.X.QWordValue = 0) then
-								begin
+    begin
+    t:= 0;
+    TryDo(ClansCount = 2, 'More or less than 2 clans on map in divided teams mode!', true);
+    for p:= 0 to 1 do
+        begin
+        with ClansArray[p]^ do
+            for j:= 0 to Pred(TeamsNumber) do
+                with Teams[j]^ do
+                    for i:= 0 to cMaxHHIndex do
+                        with Hedgehogs[i] do
+                            if (Gear <> nil) and (Gear^.X.QWordValue = 0) then
+                                begin
                                 if PlacingHogs then Unplaced:= true
                                 else FindPlace(Gear, false, t, t + LAND_WIDTH div 2);// could make Gear == nil;
-								if Gear <> nil then
-									begin
-									Gear^.Pos:= GetRandom(49);
-									Gear^.dX.isNegative:= p = 1;
-									end
-								end;
-		t:= LAND_WIDTH div 2
-		end
-	end else // mix hedgehogs
-	begin
-	Count:= 0;
-	for p:= 0 to Pred(TeamsCount) do
-		with TeamsArray[p]^ do
-		begin
-		for i:= 0 to cMaxHHIndex do
-			with Hedgehogs[i] do
-				if (Gear <> nil) and (Gear^.X.QWordValue = 0) then
-					begin
-					ar[Count]:= @Hedgehogs[i];
-					inc(Count)
-					end;
-		end;
+                                if Gear <> nil then
+                                    begin
+                                    Gear^.Pos:= GetRandom(49);
+                                    Gear^.dX.isNegative:= p = 1;
+                                    end
+                                end;
+        t:= LAND_WIDTH div 2
+        end
+    end else // mix hedgehogs
+    begin
+    Count:= 0;
+    for p:= 0 to Pred(TeamsCount) do
+        with TeamsArray[p]^ do
+        begin
+        for i:= 0 to cMaxHHIndex do
+            with Hedgehogs[i] do
+                if (Gear <> nil) and (Gear^.X.QWordValue = 0) then
+                    begin
+                    ar[Count]:= @Hedgehogs[i];
+                    inc(Count)
+                    end;
+        end;
     // unC0Rr, while it is true user can watch value on map screen, IMO this (and check above) should be enforced in UI
     // - is there a good place to put values for the different widgets to check?  Right now they are kind of disconnected.
     //it would be nice if divide teams, forts mode and hh per map could all be checked by the team widget, or maybe disable start button
-	TryDo(Count <= MaxHedgehogs, 'Too many hedgehogs for this map! (max # is ' + inttostr(MaxHedgehogs) + ')', true);
-	while (Count > 0) do
-		begin
-		i:= GetRandom(Count);
+    TryDo(Count <= MaxHedgehogs, 'Too many hedgehogs for this map! (max # is ' + inttostr(MaxHedgehogs) + ')', true);
+    while (Count > 0) do
+        begin
+        i:= GetRandom(Count);
         if PlacingHogs then ar[i]^.Unplaced:= true
         else FindPlace(ar[i]^.Gear, false, 0, LAND_WIDTH);
-		if ar[i]^.Gear <> nil then
-			begin
-			ar[i]^.Gear^.dX.isNegative:= hwRound(ar[i]^.Gear^.X) > LAND_WIDTH div 2;
-			ar[i]^.Gear^.Pos:= GetRandom(19)
-			end;
-		ar[i]:= ar[Count - 1];
-		dec(Count)
-		end
-	end
+        if ar[i]^.Gear <> nil then
+            begin
+            ar[i]^.Gear^.dX.isNegative:= hwRound(ar[i]^.Gear^.X) > LAND_WIDTH div 2;
+            ar[i]^.Gear^.Pos:= GetRandom(19)
+            end;
+        ar[i]:= ar[Count - 1];
+        dec(Count)
+        end
+    end
 end;
 
 function CheckGearNear(Gear: PGear; Kind: TGearType; rX, rY: LongInt): PGear;
@@ -1937,12 +1937,12 @@
 rY:= sqr(rY);
 
 while t <> nil do
-	begin
-	if (t <> Gear) and (t^.Kind = Kind) then
-		if not((hwSqr(Gear^.X - t^.X) / rX + hwSqr(Gear^.Y - t^.Y) / rY) > _1) then
-		exit(t);
-	t:= t^.NextGear
-	end;
+    begin
+    if (t <> Gear) and (t^.Kind = Kind) then
+        if not((hwSqr(Gear^.X - t^.X) / rX + hwSqr(Gear^.Y - t^.Y) / rY) > _1) then
+        exit(t);
+    t:= t^.NextGear
+    end;
 
 CheckGearNear:= nil
 end;
@@ -1952,19 +1952,19 @@
 begin
 t:= GearsList;
 while t <> nil do
-	begin
-	if (t^.Kind = gtHedgehog) and (t^.Y < Ammo^.Y) then
-		if not (hwSqr(Ammo^.X - t^.X) + hwSqr(Ammo^.Y - t^.Y - int2hwFloat(cHHRadius)) * 2 > _2) then
-			begin
+    begin
+    if (t^.Kind = gtHedgehog) and (t^.Y < Ammo^.Y) then
+        if not (hwSqr(Ammo^.X - t^.X) + hwSqr(Ammo^.Y - t^.Y - int2hwFloat(cHHRadius)) * 2 > _2) then
+            begin
             ApplyDamage(t, 5);
-			t^.dX:= t^.dX + (t^.X - Ammo^.X) * _0_02;
-			t^.dY:= - _0_25;
-			t^.Active:= true;
-			DeleteCI(t);
-			FollowGear:= t
-			end;
-	t:= t^.NextGear
-	end;
+            t^.dX:= t^.dX + (t^.X - Ammo^.X) * _0_02;
+            t^.dY:= - _0_25;
+            t^.Active:= true;
+            DeleteCI(t);
+            FollowGear:= t
+            end;
+    t:= t^.NextGear
+    end;
 end;}
 
 function CheckGearsNear(mX, mY: LongInt; Kind: TGearsType; rX, rY: LongInt): PGear;
@@ -1974,12 +1974,12 @@
 rX:= sqr(rX);
 rY:= sqr(rY);
 while t <> nil do
-	begin
-	if t^.Kind in Kind then
-		if not (hwSqr(int2hwFloat(mX) - t^.X) / rX + hwSqr(int2hwFloat(mY) - t^.Y) / rY > _1) then
-			exit(t);
-	t:= t^.NextGear
-	end;
+    begin
+    if t^.Kind in Kind then
+        if not (hwSqr(int2hwFloat(mX) - t^.X) / rX + hwSqr(int2hwFloat(mY) - t^.Y) / rY > _1) then
+            exit(t);
+    t:= t^.NextGear
+    end;
 CheckGearsNear:= nil
 end;
 
@@ -1990,10 +1990,10 @@
 
 t:= GearsList;
 while t <> nil do
-	begin
-	if t^.Kind = Kind then inc(count);
-	t:= t^.NextGear
-	end;
+    begin
+    if t^.Kind = Kind then inc(count);
+    t:= t^.NextGear
+    end;
 CountGears:= count;
 end;
 
@@ -2015,14 +2015,14 @@
 
 // avoid health crates if all hogs are invulnerable
 if (t < 13) and ((GameFlags and gfInvulnerable) <> 0) then t:= t * 13 div 20 + 7;
-	
+    
 //case getrandom(20) of
 case t of
      0..6: begin
         FollowGear:= AddGear(0, 0, gtCase, 0, _0, _0, 0);
         FollowGear^.Health:= 25;
         FollowGear^.Pos:= posCaseHealth;
-		AddCaption(GetEventString(eidNewHealthPack), cWhiteColor, capgrpGameState);
+        AddCaption(GetEventString(eidNewHealthPack), cWhiteColor, capgrpGameState);
         end;
      7..13: begin
         t:= 0;
@@ -2044,7 +2044,7 @@
               end;
             FollowGear^.Pos:= posCaseAmmo;
             FollowGear^.State:= Longword(i);
-			AddCaption(GetEventString(eidNewAmmoPack), cWhiteColor, capgrpGameState);
+            AddCaption(GetEventString(eidNewAmmoPack), cWhiteColor, capgrpGameState);
             end
         end;
      14..19: begin
@@ -2067,112 +2067,112 @@
               end;
             FollowGear^.Pos:= posCaseUtility;
             FollowGear^.State:= Longword(i);
-			AddCaption(GetEventString(eidNewUtilityPack), cWhiteColor, capgrpGameState);
+            AddCaption(GetEventString(eidNewUtilityPack), cWhiteColor, capgrpGameState);
             end
         end;
      end;
 // handles case of no ammo or utility crates - considered also placing booleans in uAmmos and altering probabilities
 if (FollowGear <> nil) then
-	begin
-	FindPlace(FollowGear, true, 0, LAND_WIDTH);
+    begin
+    FindPlace(FollowGear, true, 0, LAND_WIDTH);
 
-	if (FollowGear <> nil) then
-		PlaySound(sndReinforce, CurrentTeam^.voicepack)
-	end
+    if (FollowGear <> nil) then
+        PlaySound(sndReinforce, CurrentTeam^.voicepack)
+    end
 end;
 
 procedure FindPlace(var Gear: PGear; withFall: boolean; Left, Right: LongInt);
 
-	function CountNonZeroz(x, y, r, c: LongInt): LongInt;
-	var i: LongInt;
-		count: LongInt = 0;
-	begin
-	if (y and LAND_HEIGHT_MASK) = 0 then
-		for i:= max(x - r, 0) to min(x + r, LAND_WIDTH - 4) do
-			if Land[y, i] <> 0 then
+    function CountNonZeroz(x, y, r, c: LongInt): LongInt;
+    var i: LongInt;
+        count: LongInt = 0;
+    begin
+    if (y and LAND_HEIGHT_MASK) = 0 then
+        for i:= max(x - r, 0) to min(x + r, LAND_WIDTH - 4) do
+            if Land[y, i] <> 0 then
                begin
                inc(count);
                if count = c then exit(count)
                end;
-	CountNonZeroz:= count;
-	end;
+    CountNonZeroz:= count;
+    end;
 
 var x: LongInt;
-	y, sy: LongInt;
-	ar: array[0..511] of TPoint;
-	ar2: array[0..1023] of TPoint;
-	cnt, cnt2: Longword;
-	delta: LongInt;
+    y, sy: LongInt;
+    ar: array[0..511] of TPoint;
+    ar2: array[0..1023] of TPoint;
+    cnt, cnt2: Longword;
+    delta: LongInt;
 begin
 delta:= 250;
 cnt2:= 0;
 repeat
-	x:= Left + LongInt(GetRandom(Delta));
-	repeat
-		inc(x, Delta);
-		cnt:= 0;
+    x:= Left + LongInt(GetRandom(Delta));
+    repeat
+        inc(x, Delta);
+        cnt:= 0;
         if topY > 1024 then
-		    y:= 1024-Gear^.Radius * 2
+            y:= 1024-Gear^.Radius * 2
         else
-		    y:= topY-Gear^.Radius * 2;
-		while y < LAND_HEIGHT do
-			begin
-			repeat
-				inc(y, 2);
-			until (y >= LAND_HEIGHT) or (CountNonZeroz(x, y, Gear^.Radius - 1, 1) = 0);
+            y:= topY-Gear^.Radius * 2;
+        while y < LAND_HEIGHT do
+            begin
+            repeat
+                inc(y, 2);
+            until (y >= LAND_HEIGHT) or (CountNonZeroz(x, y, Gear^.Radius - 1, 1) = 0);
 
-			sy:= y;
+            sy:= y;
 
-			repeat
-				inc(y);
-			until (y >= LAND_HEIGHT) or (CountNonZeroz(x, y, Gear^.Radius - 1, 1) <> 0);
+            repeat
+                inc(y);
+            until (y >= LAND_HEIGHT) or (CountNonZeroz(x, y, Gear^.Radius - 1, 1) <> 0);
             
             if (y - sy > Gear^.Radius * 2) and
                (((Gear^.Kind = gtExplosives)
-			       and (y < LAND_HEIGHT-1)
-			       and (CheckGearsNear(x, y - Gear^.Radius, [gtFlame, gtHedgehog, gtMine, gtCase, gtExplosives], 60, 60) = nil)
+                   and (y < LAND_HEIGHT-1)
+                   and (CheckGearsNear(x, y - Gear^.Radius, [gtFlame, gtHedgehog, gtMine, gtCase, gtExplosives], 60, 60) = nil)
                    and (CountNonZeroz(x, y+1, Gear^.Radius - 1, Gear^.Radius+1) > Gear^.Radius)) 
                or
                  ((Gear^.Kind <> gtExplosives)
-			       and (y < LAND_HEIGHT)
-				   and (CheckGearsNear(x, y - Gear^.Radius, [gtFlame, gtHedgehog, gtMine, gtCase, gtExplosives], 110, 110) = nil))) then
-				begin
-				ar[cnt].X:= x;
-				if withFall then ar[cnt].Y:= sy + Gear^.Radius
-							else ar[cnt].Y:= y - Gear^.Radius;
-				inc(cnt)
-				end;
+                   and (y < LAND_HEIGHT)
+                   and (CheckGearsNear(x, y - Gear^.Radius, [gtFlame, gtHedgehog, gtMine, gtCase, gtExplosives], 110, 110) = nil))) then
+                begin
+                ar[cnt].X:= x;
+                if withFall then ar[cnt].Y:= sy + Gear^.Radius
+                            else ar[cnt].Y:= y - Gear^.Radius;
+                inc(cnt)
+                end;
 
-			inc(y, 45)
-			end;
+            inc(y, 45)
+            end;
 
-		if cnt > 0 then
-			with ar[GetRandom(cnt)] do
-				begin
-				ar2[cnt2].x:= x;
-				ar2[cnt2].y:= y;
-				inc(cnt2)
-				end
-	until (x + Delta > Right);
+        if cnt > 0 then
+            with ar[GetRandom(cnt)] do
+                begin
+                ar2[cnt2].x:= x;
+                ar2[cnt2].y:= y;
+                inc(cnt2)
+                end
+    until (x + Delta > Right);
 
-	dec(Delta, 60)
+    dec(Delta, 60)
 until (cnt2 > 0) or (Delta < 70);
 
 if cnt2 > 0 then
-	with ar2[GetRandom(cnt2)] do
-		begin
-		Gear^.X:= int2hwFloat(x);
-		Gear^.Y:= int2hwFloat(y);
-		{$IFDEF DEBUGFILE}
-		AddFileLog('Assigned Gear coordinates (' + inttostr(x) + ',' + inttostr(y) + ')');
-		{$ENDIF}
-		end
-	else
-	begin
-	OutError('Can''t find place for Gear', false);
-	DeleteGear(Gear);
-	Gear:= nil
-	end
+    with ar2[GetRandom(cnt2)] do
+        begin
+        Gear^.X:= int2hwFloat(x);
+        Gear^.Y:= int2hwFloat(y);
+        {$IFDEF DEBUGFILE}
+        AddFileLog('Assigned Gear coordinates (' + inttostr(x) + ',' + inttostr(y) + ')');
+        {$ENDIF}
+        end
+    else
+    begin
+    OutError('Can''t find place for Gear', false);
+    DeleteGear(Gear);
+    Gear:= nil
+    end
 end;
 
 function ModifyDamage(dmg: Longword; Gear: PGear): Longword;
@@ -2196,33 +2196,33 @@
 GearByUID:= nil;
 gear:= GearsList;
 while gear <> nil do
-	begin
-	if gear^.uid = uid then
-		begin
-			GearByUID:= gear;
-			exit
-		end;
-	gear:= gear^.NextGear
-	end
+    begin
+    if gear^.uid = uid then
+        begin
+            GearByUID:= gear;
+            exit
+        end;
+    gear:= gear^.NextGear
+    end
 end;
 
 procedure init_uGears;
 begin
-	CurAmmoGear:= nil;
-	GearsList:= nil;
-	KilledHHs:= 0;
-	SuddenDeathDmg:= false;
-	SpeechType:= 1;
-	TrainingTargetGear:= nil;
-	skipFlag:= false;
-	
-	AllInactive:= false;
-	PrvInactive:= false;
+    CurAmmoGear:= nil;
+    GearsList:= nil;
+    KilledHHs:= 0;
+    SuddenDeathDmg:= false;
+    SpeechType:= 1;
+    TrainingTargetGear:= nil;
+    skipFlag:= false;
+    
+    AllInactive:= false;
+    PrvInactive:= false;
 end;
 
 procedure free_uGears;
 begin
-	FreeGearsList();
+    FreeGearsList();
 end;
 
 end.
--- a/hedgewars/uIO.pas	Sat Mar 06 10:54:24 2010 +0000
+++ b/hedgewars/uIO.pas	Sat Mar 06 10:59:20 2010 +0000
@@ -55,14 +55,14 @@
             2: (str: shortstring);
             end;
 
-var	IPCSock: PTCPSocket;
-	fds: PSDLNet_SocketSet;
-	isPonged: boolean;
+var IPCSock: PTCPSocket;
+    fds: PSDLNet_SocketSet;
+    isPonged: boolean;
 
-	headcmd: PCmd;
-	lastcmd: PCmd;
+    headcmd: PCmd;
+    lastcmd: PCmd;
 
-	SendEmptyPacketTicks: LongWord;
+    SendEmptyPacketTicks: LongWord;
 
 
 function AddCmd(Time: Word; str: shortstring): PCmd;
@@ -112,9 +112,9 @@
 
 procedure CloseIPC;
 begin
-	SDLNet_FreeSocketSet(fds);
-	SDLNet_TCP_Close(IPCSock);
-	SDLNet_Quit();
+    SDLNet_FreeSocketSet(fds);
+    SDLNet_TCP_Close(IPCSock);
+    SDLNet_Quit();
 end;
 
 procedure ParseIPCCommand(s: shortstring);
@@ -143,8 +143,8 @@
 procedure IPCCheckSock;
 const ss: shortstring = '';
 var i: LongInt;
-	buf: array[0..255] of byte;
-	s: shortstring absolute buf;
+    buf: array[0..255] of byte;
+    s: shortstring absolute buf;
 begin
 if IPCSock = nil then
    exit;
@@ -153,27 +153,27 @@
 SDLNet_AddSocket(fds, IPCSock);
 
 while SDLNet_CheckSockets(fds, 0) > 0 do
-	begin
-	i:= SDLNet_TCP_Recv(IPCSock, @buf[1], 255 - Length(ss));
-	if i > 0 then
-		begin
-		buf[0]:= i;
-		ss:= ss + s;
-		while (Length(ss) > 1) and (Length(ss) > byte(ss[1])) do
-			begin
-			ParseIPCCommand(copy(ss, 2, byte(ss[1])));
-			Delete(ss, 1, Succ(byte(ss[1])))
-			end
-		end else OutError('IPC connection lost', true)
-	end;
+    begin
+    i:= SDLNet_TCP_Recv(IPCSock, @buf[1], 255 - Length(ss));
+    if i > 0 then
+        begin
+        buf[0]:= i;
+        ss:= ss + s;
+        while (Length(ss) > 1) and (Length(ss) > byte(ss[1])) do
+            begin
+            ParseIPCCommand(copy(ss, 2, byte(ss[1])));
+            Delete(ss, 1, Succ(byte(ss[1])))
+            end
+        end else OutError('IPC connection lost', true)
+    end;
 end;
 
 procedure LoadRecordFromFile(fileName: shortstring);
 var f: file;
-	ss: shortstring = '';
-	i: LongInt;
-	buf: array[0..255] of byte;
-	s: shortstring absolute buf;
+    ss: shortstring = '';
+    i: LongInt;
+    buf: array[0..255] of byte;
+    s: shortstring absolute buf;
 begin
 
 // set RDNLY on file open
@@ -183,17 +183,17 @@
 reset(f, 1);
 
 repeat
-	BlockRead(f, buf[1], 255 - Length(ss), i);
-	if i > 0 then
-		begin
-		buf[0]:= i;
-		ss:= ss + s;
-		while (Length(ss) > 1)and(Length(ss) > byte(ss[1])) do
-			begin
-			ParseIPCCommand(copy(ss, 2, byte(ss[1])));
-			Delete(ss, 1, Succ(byte(ss[1])))
-			end
-		end
+    BlockRead(f, buf[1], 255 - Length(ss), i);
+    if i > 0 then
+        begin
+        buf[0]:= i;
+        ss:= ss + s;
+        while (Length(ss) > 1)and(Length(ss) > byte(ss[1])) do
+            begin
+            ParseIPCCommand(copy(ss, 2, byte(ss[1])));
+            Delete(ss, 1, Succ(byte(ss[1])))
+            end
+        end
 until i = 0;
 
 close(f)
@@ -202,14 +202,14 @@
 procedure SendIPC(s: shortstring);
 begin
 if IPCSock <> nil then
-	begin
-	SendEmptyPacketTicks:= 0;
-	if s[0]>#251 then s[0]:= #251;
-	SDLNet_Write16(GameTicks, @s[Succ(byte(s[0]))]);
-	{$IFDEF DEBUGFILE}AddFileLog('IPC send: '+ s[1]);{$ENDIF}
-	inc(s[0], 2);
-	SDLNet_TCP_Send(IPCSock, @s, Succ(byte(s[0])))
-	end
+    begin
+    SendEmptyPacketTicks:= 0;
+    if s[0]>#251 then s[0]:= #251;
+    SDLNet_Write16(GameTicks, @s[Succ(byte(s[0]))]);
+    {$IFDEF DEBUGFILE}AddFileLog('IPC send: '+ s[1]);{$ENDIF}
+    inc(s[0], 2);
+    SDLNet_TCP_Send(IPCSock, @s, Succ(byte(s[0])))
+    end
 end;
 
 procedure SendIPCRaw(p: pointer; len: Longword);
@@ -256,88 +256,88 @@
 begin
 inc(SendEmptyPacketTicks, Lag);
 if (SendEmptyPacketTicks >= cSendEmptyPacketTime) then
-	SendIPC('+')
+    SendIPC('+')
 end;
 
 procedure NetGetNextCmd;
 var tmpflag: boolean;
-	s: shortstring;
-	x16, y16: SmallInt;
+    s: shortstring;
+    x16, y16: SmallInt;
 begin
 tmpflag:= true;
 
 while (headcmd <> nil)
-	and (tmpflag or (headcmd^.cmd = '#')) // '#' is the only cmd which can be sent within same tick after 'N'
-	and ((GameTicks = hiTicks shl 16 + headcmd^.loTime)
-		or (headcmd^.cmd = 's') // for these commands time is not specified
-		or (headcmd^.cmd = '#')
- 		or (headcmd^.cmd = 'b')
-		or (headcmd^.cmd = 'F')) do
-	begin
-	case headcmd^.cmd of
-		'+': ; // do nothing - it is just an empty packet
-		'#': inc(hiTicks);
-		'L': ParseCommand('+left', true);
-		'l': ParseCommand('-left', true);
-		'R': ParseCommand('+right', true);
-		'r': ParseCommand('-right', true);
-		'U': ParseCommand('+up', true);
-		'u': ParseCommand('-up', true);
-		'D': ParseCommand('+down', true);
-		'd': ParseCommand('-down', true);
-		'Z': ParseCommand('+precise', true);
-		'z': ParseCommand('-precise', true);
-		'A': ParseCommand('+attack', true);
-		'a': ParseCommand('-attack', true);
-		'S': ParseCommand('switch', true);
-		'j': ParseCommand('ljump', true);
-		'J': ParseCommand('hjump', true);
-		',': ParseCommand('skip', true);
-		's': begin
-			s:= copy(headcmd^.str, 2, Pred(headcmd^.len));
-			AddChatString(s);
-			WriteLnToConsole(s)
-			end;
-		'b': begin
-			s:= copy(headcmd^.str, 2, Pred(headcmd^.len));
-			AddChatString(#4 + s);
-			WriteLnToConsole(s)
-			end;
-		'F': TeamGone(copy(headcmd^.str, 2, Pred(headcmd^.len)));
-		'N': begin
-			tmpflag:= false;
-			{$IFDEF DEBUGFILE}AddFileLog('got cmd "N": time '+inttostr(hiTicks shl 16 + headcmd^.loTime)){$ENDIF}
-			end;
-		'p': begin
-			x16:= SDLNet_Read16(@(headcmd^.X));
-			y16:= SDLNet_Read16(@(headcmd^.Y));
-			doPut(x16, y16, false)
-			end;
-		'P': begin
-			// these are equations solved for CursorPoint
-			// SDLNet_Read16(@(headcmd^.X)) == CursorPoint.X - WorldDx;
-			// SDLNet_Read16(@(headcmd^.Y)) == cScreenHeight - CursorPoint.Y - WorldDy;
-			CursorPoint.X:= SmallInt(SDLNet_Read16(@(headcmd^.X))) + WorldDx;
-			CursorPoint.Y:= cScreenHeight - SmallInt(SDLNet_Read16(@(headcmd^.Y))) - WorldDy;
-			end;
-		'w': ParseCommand('setweap ' + headcmd^.str[2], true);
-		't': ParseCommand('taunt ' + headcmd^.str[2], true);
-		'g': ParseCommand('newgrave', true);
-		'h': ParseCommand('hogsay ' + copy(headcmd^.str, 2, Pred(headcmd^.len)), true);
-		'1'..'5': ParseCommand('timer ' + headcmd^.cmd, true);
-		#128..char(128 + cMaxSlotIndex): ParseCommand('slot ' + char(byte(headcmd^.cmd) - 79), true)
-		else
-			OutError('Unexpected protocol command: ' + headcmd^.cmd, True)
-		end;
-	RemoveCmd
-	end;
+    and (tmpflag or (headcmd^.cmd = '#')) // '#' is the only cmd which can be sent within same tick after 'N'
+    and ((GameTicks = hiTicks shl 16 + headcmd^.loTime)
+        or (headcmd^.cmd = 's') // for these commands time is not specified
+        or (headcmd^.cmd = '#')
+        or (headcmd^.cmd = 'b')
+        or (headcmd^.cmd = 'F')) do
+    begin
+    case headcmd^.cmd of
+        '+': ; // do nothing - it is just an empty packet
+        '#': inc(hiTicks);
+        'L': ParseCommand('+left', true);
+        'l': ParseCommand('-left', true);
+        'R': ParseCommand('+right', true);
+        'r': ParseCommand('-right', true);
+        'U': ParseCommand('+up', true);
+        'u': ParseCommand('-up', true);
+        'D': ParseCommand('+down', true);
+        'd': ParseCommand('-down', true);
+        'Z': ParseCommand('+precise', true);
+        'z': ParseCommand('-precise', true);
+        'A': ParseCommand('+attack', true);
+        'a': ParseCommand('-attack', true);
+        'S': ParseCommand('switch', true);
+        'j': ParseCommand('ljump', true);
+        'J': ParseCommand('hjump', true);
+        ',': ParseCommand('skip', true);
+        's': begin
+            s:= copy(headcmd^.str, 2, Pred(headcmd^.len));
+            AddChatString(s);
+            WriteLnToConsole(s)
+            end;
+        'b': begin
+            s:= copy(headcmd^.str, 2, Pred(headcmd^.len));
+            AddChatString(#4 + s);
+            WriteLnToConsole(s)
+            end;
+        'F': TeamGone(copy(headcmd^.str, 2, Pred(headcmd^.len)));
+        'N': begin
+            tmpflag:= false;
+            {$IFDEF DEBUGFILE}AddFileLog('got cmd "N": time '+inttostr(hiTicks shl 16 + headcmd^.loTime)){$ENDIF}
+            end;
+        'p': begin
+            x16:= SDLNet_Read16(@(headcmd^.X));
+            y16:= SDLNet_Read16(@(headcmd^.Y));
+            doPut(x16, y16, false)
+            end;
+        'P': begin
+            // these are equations solved for CursorPoint
+            // SDLNet_Read16(@(headcmd^.X)) == CursorPoint.X - WorldDx;
+            // SDLNet_Read16(@(headcmd^.Y)) == cScreenHeight - CursorPoint.Y - WorldDy;
+            CursorPoint.X:= SmallInt(SDLNet_Read16(@(headcmd^.X))) + WorldDx;
+            CursorPoint.Y:= cScreenHeight - SmallInt(SDLNet_Read16(@(headcmd^.Y))) - WorldDy;
+            end;
+        'w': ParseCommand('setweap ' + headcmd^.str[2], true);
+        't': ParseCommand('taunt ' + headcmd^.str[2], true);
+        'g': ParseCommand('newgrave', true);
+        'h': ParseCommand('hogsay ' + copy(headcmd^.str, 2, Pred(headcmd^.len)), true);
+        '1'..'5': ParseCommand('timer ' + headcmd^.cmd, true);
+        #128..char(128 + cMaxSlotIndex): ParseCommand('slot ' + char(byte(headcmd^.cmd) - 79), true)
+        else
+            OutError('Unexpected protocol command: ' + headcmd^.cmd, True)
+        end;
+    RemoveCmd
+    end;
 
 if (headcmd <> nil) and tmpflag and (not CurrentTeam^.hasGone) then
-	TryDo(GameTicks < hiTicks shl 16 + headcmd^.loTime,
-			'oops, queue error. in buffer: ' + headcmd^.cmd +
-			' (' + inttostr(GameTicks) + ' > ' +
-			inttostr(hiTicks shl 16 + headcmd^.loTime) + ')',
-			true);
+    TryDo(GameTicks < hiTicks shl 16 + headcmd^.loTime,
+            'oops, queue error. in buffer: ' + headcmd^.cmd +
+            ' (' + inttostr(GameTicks) + ' > ' +
+            inttostr(hiTicks shl 16 + headcmd^.loTime) + ')',
+            true);
 
 isInLag:= (headcmd = nil) and tmpflag and (not CurrentTeam^.hasGone);
 
@@ -346,15 +346,15 @@
 
 procedure init_uIO;
 begin
-	IPCSock:= nil;
+    IPCSock:= nil;
 
-	headcmd:= nil;
-	lastcmd:= nil;
-	isPonged:= false;	// was const
+    headcmd:= nil;
+    lastcmd:= nil;
+    isPonged:= false;   // was const
 
-	hiTicks:= 0;
-	SendEmptyPacketTicks:= 0;
-	ipcPort:= 0;
+    hiTicks:= 0;
+    SendEmptyPacketTicks:= 0;
+    ipcPort:= 0;
 end;
 
 procedure free_uIO;
--- a/hedgewars/uKeys.pas	Sat Mar 06 10:54:24 2010 +0000
+++ b/hedgewars/uKeys.pas	Sat Mar 06 10:59:20 2010 +0000
@@ -43,44 +43,44 @@
 procedure ControllerHatEvent(joy, hat, value: Byte);
 procedure ControllerButtonEvent(joy, button: Byte; pressed: Boolean);
 
-var	hideAmmoMenu: boolean;
-	wheelUp: boolean;
-	wheelDown: boolean;
+var hideAmmoMenu: boolean;
+    wheelUp: boolean;
+    wheelDown: boolean;
 
-	ControllerNumControllers: Integer;
-	ControllerEnabled: Integer;
-	ControllerNumAxes: array[0..5] of Integer;
-	//ControllerNumBalls: array[0..5] of Integer;
-	ControllerNumHats: array[0..5] of Integer;
-	ControllerNumButtons: array[0..5] of Integer;
-	ControllerAxes: array[0..5] of array[0..19] of Integer;
-	//ControllerBalls: array[0..5] of array[0..19] of array[0..1] of Integer;
-	ControllerHats: array[0..5] of array[0..19] of Byte;
-	ControllerButtons: array[0..5] of array[0..19] of Byte;
+    ControllerNumControllers: Integer;
+    ControllerEnabled: Integer;
+    ControllerNumAxes: array[0..5] of Integer;
+    //ControllerNumBalls: array[0..5] of Integer;
+    ControllerNumHats: array[0..5] of Integer;
+    ControllerNumButtons: array[0..5] of Integer;
+    ControllerAxes: array[0..5] of array[0..19] of Integer;
+    //ControllerBalls: array[0..5] of array[0..19] of array[0..1] of Integer;
+    ControllerHats: array[0..5] of array[0..19] of Byte;
+    ControllerButtons: array[0..5] of array[0..19] of Byte;
 
-	DefaultBinds, CurrentBinds: TBinds;
+    DefaultBinds, CurrentBinds: TBinds;
 
 {$IFDEF IPHONEOS}
-	leftClick: boolean;
-	middleClick: boolean;
-	rightClick: boolean;
+    leftClick: boolean;
+    middleClick: boolean;
+    rightClick: boolean;
 
-	upKey: boolean;
-	downKey: boolean;
-	rightKey: boolean;
-	leftKey: boolean;
+    upKey: boolean;
+    downKey: boolean;
+    rightKey: boolean;
+    leftKey: boolean;
 
-	backspaceKey: boolean;
-	spaceKey: boolean;
-	enterKey: boolean;
-	tabKey: boolean;
-	
-	chatAction: boolean;
-	pauseAction: boolean;
-	switchAction: boolean;
+    backspaceKey: boolean;
+    spaceKey: boolean;
+    enterKey: boolean;
+    tabKey: boolean;
+    
+    chatAction: boolean;
+    pauseAction: boolean;
+    switchAction: boolean;
 
-	theJoystick: PSDL_Joystick;
-	
+    theJoystick: PSDL_Joystick;
+    
 procedure setiPhoneBinds;
 {$ENDIF}
 implementation
@@ -89,13 +89,13 @@
 
 var tkbd, tkbdn: TKeyboardState;
     KeyNames: array [0..cKeyMaxIndex] of string[15];
-	
+    
 function KeyNameToCode(name: shortstring): word;
 var code: Word;
 begin
-	code:= cKeyMaxIndex;
-	while (code > 0) and (KeyNames[code] <> name) do dec(code);
-	KeyNameToCode:= code;
+    code:= cKeyMaxIndex;
+    while (code > 0) and (KeyNames[code] <> name) do dec(code);
+    KeyNameToCode:= code;
 end;
 
 
@@ -119,7 +119,7 @@
 
 {$IFNDEF IPHONEOS}
 for i:= 6 to pred(j) do // first 6 will be overwritten
-	tkbdn[i]:= pkbd^[i];
+    tkbdn[i]:= pkbd^[i];
 {$ENDIF}
 
 // mouse buttons
@@ -145,44 +145,44 @@
 // Controller(s)
 k:= j; // should we test k for hitting the limit? sounds rather unlikely to ever reach it
 for j:= 0 to Pred(ControllerNumControllers) do
-	begin
-	for i:= 0 to Pred(ControllerNumAxes[j]) do
-		begin
-		if ControllerAxes[j][i] > 20000 then tkbdn[k + 0]:= 1 else tkbdn[k + 0]:= 0;
-		if ControllerAxes[j][i] < -20000 then tkbdn[k + 1]:= 1 else tkbdn[k + 1]:= 0;
-		inc(k, 2);
-		end;
-	for i:= 0 to Pred(ControllerNumHats[j]) do
-		begin
-		tkbdn[k + 0]:= ControllerHats[j][i] and SDL_HAT_UP;
-		tkbdn[k + 1]:= ControllerHats[j][i] and SDL_HAT_RIGHT;
-		tkbdn[k + 2]:= ControllerHats[j][i] and SDL_HAT_DOWN;
-		tkbdn[k + 3]:= ControllerHats[j][i] and SDL_HAT_LEFT;
-		inc(k, 4);
-		end;
-	for i:= 0 to Pred(ControllerNumButtons[j]) do
-		begin
-		tkbdn[k]:= ControllerButtons[j][i];
-		inc(k, 1);
-		end;
-	end;
+    begin
+    for i:= 0 to Pred(ControllerNumAxes[j]) do
+        begin
+        if ControllerAxes[j][i] > 20000 then tkbdn[k + 0]:= 1 else tkbdn[k + 0]:= 0;
+        if ControllerAxes[j][i] < -20000 then tkbdn[k + 1]:= 1 else tkbdn[k + 1]:= 0;
+        inc(k, 2);
+        end;
+    for i:= 0 to Pred(ControllerNumHats[j]) do
+        begin
+        tkbdn[k + 0]:= ControllerHats[j][i] and SDL_HAT_UP;
+        tkbdn[k + 1]:= ControllerHats[j][i] and SDL_HAT_RIGHT;
+        tkbdn[k + 2]:= ControllerHats[j][i] and SDL_HAT_DOWN;
+        tkbdn[k + 3]:= ControllerHats[j][i] and SDL_HAT_LEFT;
+        inc(k, 4);
+        end;
+    for i:= 0 to Pred(ControllerNumButtons[j]) do
+        begin
+        tkbdn[k]:= ControllerButtons[j][i];
+        inc(k, 1);
+        end;
+    end;
 
 // now process strokes
 for i:= 0 to cKeyMaxIndex do
 if CurrentBinds[i][0] <> #0 then
-	begin
-	if (i > 3) and (tkbdn[i] <> 0) and not ((CurrentBinds[i] = 'put') or (CurrentBinds[i] = 'ammomenu') or (CurrentBinds[i] = '+cur_u') or (CurrentBinds[i] = '+cur_d') or (CurrentBinds[i] = '+cur_l') or (CurrentBinds[i] = '+cur_r')) then hideAmmoMenu:= true;
-	if (tkbd[i] = 0) and (tkbdn[i] <> 0) then ParseCommand(CurrentBinds[i], Trusted)
-	else if (CurrentBinds[i][1] = '+')
-			and (tkbdn[i] = 0)
-			and (tkbd[i] <> 0) then
-			begin
-			s:= CurrentBinds[i];
-			s[1]:= '-';
-			ParseCommand(s, Trusted)
-			end;
-	tkbd[i]:= tkbdn[i]
-	end
+    begin
+    if (i > 3) and (tkbdn[i] <> 0) and not ((CurrentBinds[i] = 'put') or (CurrentBinds[i] = 'ammomenu') or (CurrentBinds[i] = '+cur_u') or (CurrentBinds[i] = '+cur_d') or (CurrentBinds[i] = '+cur_l') or (CurrentBinds[i] = '+cur_r')) then hideAmmoMenu:= true;
+    if (tkbd[i] = 0) and (tkbdn[i] <> 0) then ParseCommand(CurrentBinds[i], Trusted)
+    else if (CurrentBinds[i][1] = '+')
+            and (tkbdn[i] = 0)
+            and (tkbd[i] <> 0) then
+            begin
+            s:= CurrentBinds[i];
+            s[1]:= '-';
+            ParseCommand(s, Trusted)
+            end;
+    tkbd[i]:= tkbdn[i]
+    end
 end;
 
 procedure ResetKbd;
@@ -197,7 +197,7 @@
 
 {$IFNDEF IPHONEOS}
 for i:= 1 to pred(j) do
-	tkbdn[i]:= pkbd^[i];
+    tkbdn[i]:= pkbd^[i];
 {$ENDIF}
 
 // mouse buttons
@@ -223,28 +223,28 @@
 // Controller(s)
 k:= j; // should we test k for hitting the limit? sounds rather unlikely to ever reach it
 for j:= 0 to Pred(ControllerNumControllers) do
-	begin
-	for i:= 0 to Pred(ControllerNumAxes[j]) do
-		begin
-		if ControllerAxes[j][i] > 20000 then tkbdn[k + 0]:= 1 else tkbdn[k + 0]:= 0;
-		if ControllerAxes[j][i] < -20000 then tkbdn[k + 1]:= 1 else tkbdn[k + 1]:= 0;
-		inc(k, 2);
-		end;
-	for i:= 0 to Pred(ControllerNumHats[j]) do
-		begin
-		tkbdn[k + 0]:= ControllerHats[j][i] and SDL_HAT_UP;
-		tkbdn[k + 1]:= ControllerHats[j][i] and SDL_HAT_RIGHT;
-		tkbdn[k + 2]:= ControllerHats[j][i] and SDL_HAT_DOWN;
-		tkbdn[k + 3]:= ControllerHats[j][i] and SDL_HAT_LEFT;
-		inc(k, 4);
-		end;
-	for i:= 0 to Pred(ControllerNumButtons[j]) do
-		begin
-		tkbdn[k]:= ControllerButtons[j][i];
-		inc(k, 1);
-		end;
-	end;
-	
+    begin
+    for i:= 0 to Pred(ControllerNumAxes[j]) do
+        begin
+        if ControllerAxes[j][i] > 20000 then tkbdn[k + 0]:= 1 else tkbdn[k + 0]:= 0;
+        if ControllerAxes[j][i] < -20000 then tkbdn[k + 1]:= 1 else tkbdn[k + 1]:= 0;
+        inc(k, 2);
+        end;
+    for i:= 0 to Pred(ControllerNumHats[j]) do
+        begin
+        tkbdn[k + 0]:= ControllerHats[j][i] and SDL_HAT_UP;
+        tkbdn[k + 1]:= ControllerHats[j][i] and SDL_HAT_RIGHT;
+        tkbdn[k + 2]:= ControllerHats[j][i] and SDL_HAT_DOWN;
+        tkbdn[k + 3]:= ControllerHats[j][i] and SDL_HAT_LEFT;
+        inc(k, 4);
+        end;
+    for i:= 0 to Pred(ControllerNumButtons[j]) do
+        begin
+        tkbdn[k]:= ControllerButtons[j][i];
+        inc(k, 1);
+        end;
+    end;
+    
 for t:= 0 to cKeyMaxIndex do
     tkbd[i]:= tkbdn[i]
 end;
@@ -260,15 +260,15 @@
 KeyNames[5]:= 'wheeldown';
 
 for i:= 6 to cKeyMaxIndex do
-	begin
-    	s:= shortstring(sdl_getkeyname(i));
-	//writeln(stdout,inttostr(i) + ': ' + s);
-    	if s = 'unknown key' then KeyNames[i]:= ''
-       	else begin
-		for t:= 1 to Length(s) do
-			if s[t] = ' ' then s[t]:= '_';
-       		KeyNames[i]:= s
-       	end;
+    begin
+        s:= shortstring(sdl_getkeyname(i));
+    //writeln(stdout,inttostr(i) + ': ' + s);
+        if s = 'unknown key' then KeyNames[i]:= ''
+        else begin
+        for t:= 1 to Length(s) do
+            if s[t] = ' ' then s[t]:= '_';
+            KeyNames[i]:= s
+        end;
 end;
 
 //for i:= 0 to cKeyMaxIndex do writeln(stdout,inttostr(i) + ': ' + KeyNames[i]);
@@ -278,27 +278,27 @@
 
 // Controller(s)
 for j:= 0 to Pred(ControllerNumControllers) do
-	begin
-	for i:= 0 to Pred(ControllerNumAxes[j]) do
-		begin
-		keynames[k + 0]:= 'j' + inttostr(j) + 'a' + inttostr(i) + 'u';
-		keynames[k + 1]:= 'j' + inttostr(j) + 'a' + inttostr(i) + 'd';
-		inc(k, 2);
-		end;
-	for i:= 0 to Pred(ControllerNumHats[j]) do
-		begin
-		keynames[k + 0]:= 'j' + inttostr(j) + 'h' + inttostr(i) + 'u';
-		keynames[k + 1]:= 'j' + inttostr(j) + 'h' + inttostr(i) + 'r';
-		keynames[k + 2]:= 'j' + inttostr(j) + 'h' + inttostr(i) + 'd';
-		keynames[k + 3]:= 'j' + inttostr(j) + 'h' + inttostr(i) + 'l';
-		inc(k, 4);
-		end;
-	for i:= 0 to Pred(ControllerNumButtons[j]) do
-		begin
-		keynames[k]:= 'j' + inttostr(j) + 'b' + inttostr(i);
-		inc(k, 1);
-		end;
-	end;
+    begin
+    for i:= 0 to Pred(ControllerNumAxes[j]) do
+        begin
+        keynames[k + 0]:= 'j' + inttostr(j) + 'a' + inttostr(i) + 'u';
+        keynames[k + 1]:= 'j' + inttostr(j) + 'a' + inttostr(i) + 'd';
+        inc(k, 2);
+        end;
+    for i:= 0 to Pred(ControllerNumHats[j]) do
+        begin
+        keynames[k + 0]:= 'j' + inttostr(j) + 'h' + inttostr(i) + 'u';
+        keynames[k + 1]:= 'j' + inttostr(j) + 'h' + inttostr(i) + 'r';
+        keynames[k + 2]:= 'j' + inttostr(j) + 'h' + inttostr(i) + 'd';
+        keynames[k + 3]:= 'j' + inttostr(j) + 'h' + inttostr(i) + 'l';
+        inc(k, 4);
+        end;
+    for i:= 0 to Pred(ControllerNumButtons[j]) do
+        begin
+        keynames[k]:= 'j' + inttostr(j) + 'b' + inttostr(i);
+        inc(k, 1);
+        end;
+    end;
 
 DefaultBinds[ 27]:= 'quit';
 DefaultBinds[ 96]:= 'history';
@@ -351,47 +351,47 @@
 
 procedure SetBinds(var binds: TBinds);
 begin
-	CurrentBinds:= binds;
+    CurrentBinds:= binds;
 end;
 
 procedure SetDefaultBinds;
 begin
-	CurrentBinds:= DefaultBinds;
+    CurrentBinds:= DefaultBinds;
 end;
 
 {$IFDEF IPHONEOS}
 procedure setiPhoneBinds;
 // set to false the keys that only need one stoke
 begin
-	tkbdn[1]:= ord(leftClick);
-	tkbdn[2]:= ord(middleClick);
-	tkbdn[3]:= ord(rightClick);
+    tkbdn[1]:= ord(leftClick);
+    tkbdn[2]:= ord(middleClick);
+    tkbdn[3]:= ord(rightClick);
 
-	tkbdn[23]:= ord(upKey);
-	tkbdn[24]:= ord(downKey);
-	tkbdn[25]:= ord(leftKey);
-	tkbdn[26]:= ord(rightKey);
+    tkbdn[23]:= ord(upKey);
+    tkbdn[24]:= ord(downKey);
+    tkbdn[25]:= ord(leftKey);
+    tkbdn[26]:= ord(rightKey);
 
-	tkbdn[ 8]:= ord(backspaceKey);
-	tkbdn[ 9]:= ord(tabKey);
-	tkbdn[13]:= ord(enterKey);
-	tkbdn[32]:= ord(spaceKey);
+    tkbdn[ 8]:= ord(backspaceKey);
+    tkbdn[ 9]:= ord(tabKey);
+    tkbdn[13]:= ord(enterKey);
+    tkbdn[32]:= ord(spaceKey);
 
-	tkbdn[44]:= ord(chatAction);
-	tkbdn[55]:= ord(pauseAction);
-	//tkbdn[100]:= ord(switchAction);
-	
-	leftClick:= false;
-	middleClick:= false;
-	rightClick:= false;
+    tkbdn[44]:= ord(chatAction);
+    tkbdn[55]:= ord(pauseAction);
+    //tkbdn[100]:= ord(switchAction);
+    
+    leftClick:= false;
+    middleClick:= false;
+    rightClick:= false;
 
-	tabKey:= false;
-	enterKey:= false;
-	backspaceKey:= false;
-	
-	chatAction:= false;
-	pauseAction:= false;
-	//switchAction:= false;
+    tabKey:= false;
+    enterKey:= false;
+    backspaceKey:= false;
+    
+    chatAction:= false;
+    pauseAction:= false;
+    //switchAction:= false;
 end;
 {$ENDIF}
 
@@ -402,7 +402,7 @@
 end;
 
 var Controller: array [0..5] of PSDL_Joystick;
-	
+    
 procedure ControllerInit;
 var i, j: Integer;
 begin
@@ -416,49 +416,49 @@
 WriteLnToConsole('Number of game controllers: ' + inttostr(ControllerNumControllers));
 
 if ControllerNumControllers > 0 then
-	begin
-	for j:= 0 to pred(ControllerNumControllers) do
-		begin
-		WriteLnToConsole('Using game controller: ' + SDL_JoystickName(j));
-		Controller[j]:= SDL_JoystickOpen(j);
-		if Controller[j] = nil then
-			WriteLnToConsole('* Failed to open game controller!')
-		else
-			begin
-			ControllerNumAxes[j]:= SDL_JoystickNumAxes(Controller[j]);
-			//ControllerNumBalls[j]:= SDL_JoystickNumBalls(Controller[j]);
-			ControllerNumHats[j]:= SDL_JoystickNumHats(Controller[j]);
-			ControllerNumButtons[j]:= SDL_JoystickNumButtons(Controller[j]);
-			WriteLnToConsole('* Number of axes: ' + inttostr(ControllerNumAxes[j]));
-			//WriteLnToConsole('* Number of balls: ' + inttostr(ControllerNumBalls[j]));
-			WriteLnToConsole('* Number of hats: ' + inttostr(ControllerNumHats[j]));
-			WriteLnToConsole('* Number of buttons: ' + inttostr(ControllerNumButtons[j]));
-			ControllerEnabled:= 1;
-			
-			if ControllerNumAxes[j] > 20 then ControllerNumAxes[j]:= 20;
-			//if ControllerNumBalls[j] > 20 then ControllerNumBalls[j]:= 20;
-			if ControllerNumHats[j] > 20 then ControllerNumHats[j]:= 20;
-			if ControllerNumButtons[j] > 20 then ControllerNumButtons[j]:= 20;
-			
-			// reset all buttons/axes
-			for i:= 0 to pred(ControllerNumAxes[j]) do
-				ControllerAxes[j][i]:= 0;
-			(*for i:= 0 to pred(ControllerNumBalls[j]) do
-				begin
-				ControllerBalls[j][i][0]:= 0;
-				ControllerBalls[j][i][1]:= 0;
-				end;*)
-			for i:= 0 to pred(ControllerNumHats[j]) do
-				ControllerHats[j][i]:= SDL_HAT_CENTERED;
-			for i:= 0 to pred(ControllerNumButtons[j]) do
-				ControllerButtons[j][i]:= 0;
-			end;
-		end;
-	// enable event generation/controller updating
-	SDL_JoystickEventState(1);
-	end
-else	
-	WriteLnToConsole('Not using any game controller');
+    begin
+    for j:= 0 to pred(ControllerNumControllers) do
+        begin
+        WriteLnToConsole('Using game controller: ' + SDL_JoystickName(j));
+        Controller[j]:= SDL_JoystickOpen(j);
+        if Controller[j] = nil then
+            WriteLnToConsole('* Failed to open game controller!')
+        else
+            begin
+            ControllerNumAxes[j]:= SDL_JoystickNumAxes(Controller[j]);
+            //ControllerNumBalls[j]:= SDL_JoystickNumBalls(Controller[j]);
+            ControllerNumHats[j]:= SDL_JoystickNumHats(Controller[j]);
+            ControllerNumButtons[j]:= SDL_JoystickNumButtons(Controller[j]);
+            WriteLnToConsole('* Number of axes: ' + inttostr(ControllerNumAxes[j]));
+            //WriteLnToConsole('* Number of balls: ' + inttostr(ControllerNumBalls[j]));
+            WriteLnToConsole('* Number of hats: ' + inttostr(ControllerNumHats[j]));
+            WriteLnToConsole('* Number of buttons: ' + inttostr(ControllerNumButtons[j]));
+            ControllerEnabled:= 1;
+            
+            if ControllerNumAxes[j] > 20 then ControllerNumAxes[j]:= 20;
+            //if ControllerNumBalls[j] > 20 then ControllerNumBalls[j]:= 20;
+            if ControllerNumHats[j] > 20 then ControllerNumHats[j]:= 20;
+            if ControllerNumButtons[j] > 20 then ControllerNumButtons[j]:= 20;
+            
+            // reset all buttons/axes
+            for i:= 0 to pred(ControllerNumAxes[j]) do
+                ControllerAxes[j][i]:= 0;
+            (*for i:= 0 to pred(ControllerNumBalls[j]) do
+                begin
+                ControllerBalls[j][i][0]:= 0;
+                ControllerBalls[j][i][1]:= 0;
+                end;*)
+            for i:= 0 to pred(ControllerNumHats[j]) do
+                ControllerHats[j][i]:= SDL_HAT_CENTERED;
+            for i:= 0 to pred(ControllerNumButtons[j]) do
+                ControllerButtons[j][i]:= 0;
+            end;
+        end;
+    // enable event generation/controller updating
+    SDL_JoystickEventState(1);
+    end
+else    
+    WriteLnToConsole('Not using any game controller');
 {$IFDEF IPHONEOS}
 theJoystick:= Controller[0];
 {$ENDIF}
@@ -467,50 +467,50 @@
 procedure ControllerClose;
 var j: Integer;
 begin
-	if ControllerEnabled > 0 then
-		for j:= 0 to pred(ControllerNumControllers) do
-			SDL_JoystickClose(Controller[j]);
+    if ControllerEnabled > 0 then
+        for j:= 0 to pred(ControllerNumControllers) do
+            SDL_JoystickClose(Controller[j]);
 end;
 
 procedure ControllerAxisEvent(joy, axis: Byte; value: Integer);
 begin
-	ControllerAxes[joy][axis]:= value;
+    ControllerAxes[joy][axis]:= value;
 end;
 
 procedure ControllerHatEvent(joy, hat, value: Byte);
 begin
-	ControllerHats[joy][hat]:= value;
+    ControllerHats[joy][hat]:= value;
 end;
 
 procedure ControllerButtonEvent(joy, button: Byte; pressed: Boolean);
 begin
-	if pressed then ControllerButtons[joy][button]:= 1
-	else ControllerButtons[joy][button]:= 0;
+    if pressed then ControllerButtons[joy][button]:= 1
+    else ControllerButtons[joy][button]:= 0;
 end;
 
 procedure init_uKeys;
 begin
-	wheelUp:= false;
-	wheelDown:= false;
+    wheelUp:= false;
+    wheelDown:= false;
 {$IFDEF IPHONEOS}
-	// this function is called by HW_allKeysUp so be careful
-	leftClick:= false;
-	middleClick:= false;
-	rightClick:= false;
+    // this function is called by HW_allKeysUp so be careful
+    leftClick:= false;
+    middleClick:= false;
+    rightClick:= false;
 
-	upKey:= false;
-	downKey:= false;
-	rightKey:= false;
-	leftKey:= false;
+    upKey:= false;
+    downKey:= false;
+    rightKey:= false;
+    leftKey:= false;
 
-	backspaceKey:= false;
-	spaceKey:= false;
-	enterKey:= false;
-	tabKey:= false;
-	
-	chatAction:= false;
-	pauseAction:= false;
-	switchAction:= false;
+    backspaceKey:= false;
+    spaceKey:= false;
+    enterKey:= false;
+    tabKey:= false;
+    
+    chatAction:= false;
+    pauseAction:= false;
+    switchAction:= false;
 {$ENDIF}
 end;
 
--- a/hedgewars/uLand.pas	Sat Mar 06 10:54:24 2010 +0000
+++ b/hedgewars/uLand.pas	Sat Mar 06 10:59:20 2010 +0000
@@ -22,15 +22,15 @@
 interface
 uses SDLh, uLandTemplates, uFloat, uConsts,
 {$IFDEF GLES11}
-	gles11;
+    gles11;
 {$ELSE}
-	GL;
+    GL;
 {$ENDIF}
 
 type TLandArray = packed array[0 .. LAND_HEIGHT - 1, 0 .. LAND_WIDTH - 1] of LongWord;
-	TCollisionArray = packed array[0 .. LAND_HEIGHT - 1, 0 .. LAND_WIDTH - 1] of Word;
-	TPreview  = packed array[0..127, 0..31] of byte;
-	TDirtyTag = packed array[0 .. LAND_HEIGHT div 32 - 1, 0 .. LAND_WIDTH div 32 - 1] of byte;
+    TCollisionArray = packed array[0 .. LAND_HEIGHT - 1, 0 .. LAND_WIDTH - 1] of Word;
+    TPreview  = packed array[0..127, 0..31] of byte;
+    TDirtyTag = packed array[0 .. LAND_HEIGHT div 32 - 1, 0 .. LAND_WIDTH div 32 - 1] of byte;
 
 var Land: TCollisionArray;
     LandPixels: TLandArray;
@@ -314,12 +314,12 @@
 function LandBackPixel(x, y: LongInt): LongWord;
 var p: PLongWordArray;
 begin
-	if LandBackSurface = nil then LandBackPixel:= 0
-	else
-	begin
-		p:= LandBackSurface^.pixels;
-		LandBackPixel:= p^[LandBackSurface^.w * (y mod LandBackSurface^.h) + (x mod LandBackSurface^.w)];// or $FF000000;
-	end
+    if LandBackSurface = nil then LandBackPixel:= 0
+    else
+    begin
+        p:= LandBackSurface^.pixels;
+        LandBackPixel:= p^[LandBackSurface^.w * (y mod LandBackSurface^.h) + (x mod LandBackSurface^.w)];// or $FF000000;
+    end
 end;
 
 procedure ColorizeLand(Surface: PSDL_Surface);
@@ -327,63 +327,63 @@
     r, rr: TSDL_Rect;
     x, yd, yu: LongInt;
 begin
-	tmpsurf:= LoadImage(Pathz[ptCurrTheme] + '/LandTex', ifCritical or ifIgnoreCaps);
-	r.y:= 0;
-	while r.y < LAND_HEIGHT do
-	begin
-		r.x:= 0;
-		while r.x < LAND_WIDTH do
-		begin
-			SDL_UpperBlit(tmpsurf, nil, Surface, @r);
-			inc(r.x, tmpsurf^.w)
-		end;
-		inc(r.y, tmpsurf^.h)
-	end;
-	SDL_FreeSurface(tmpsurf);
+    tmpsurf:= LoadImage(Pathz[ptCurrTheme] + '/LandTex', ifCritical or ifIgnoreCaps);
+    r.y:= 0;
+    while r.y < LAND_HEIGHT do
+    begin
+        r.x:= 0;
+        while r.x < LAND_WIDTH do
+        begin
+            SDL_UpperBlit(tmpsurf, nil, Surface, @r);
+            inc(r.x, tmpsurf^.w)
+        end;
+        inc(r.y, tmpsurf^.h)
+    end;
+    SDL_FreeSurface(tmpsurf);
 
-	// freed in free_uLand() below
-	LandBackSurface:= LoadImage(Pathz[ptCurrTheme] + '/LandBackTex', ifIgnoreCaps or ifTransparent);
+    // freed in free_uLand() below
+    LandBackSurface:= LoadImage(Pathz[ptCurrTheme] + '/LandBackTex', ifIgnoreCaps or ifTransparent);
 
-	tmpsurf:= LoadImage(Pathz[ptCurrTheme] + '/Border', ifCritical or ifIgnoreCaps or ifTransparent);
-	for x:= 0 to LAND_WIDTH - 1 do
-	begin
-		yd:= LAND_HEIGHT - 1;
-		repeat
-			while (yd > 0) and (Land[yd, x] =  0) do dec(yd);
+    tmpsurf:= LoadImage(Pathz[ptCurrTheme] + '/Border', ifCritical or ifIgnoreCaps or ifTransparent);
+    for x:= 0 to LAND_WIDTH - 1 do
+    begin
+        yd:= LAND_HEIGHT - 1;
+        repeat
+            while (yd > 0) and (Land[yd, x] =  0) do dec(yd);
 
-			if (yd < 0) then yd:= 0;
+            if (yd < 0) then yd:= 0;
 
-			while (yd < LAND_HEIGHT) and (Land[yd, x] <> 0) do inc(yd);
-			dec(yd);
-			yu:= yd;
+            while (yd < LAND_HEIGHT) and (Land[yd, x] <> 0) do inc(yd);
+            dec(yd);
+            yu:= yd;
 
-			while (yu > 0  ) and (Land[yu, x] <> 0) do dec(yu);
-			while (yu < yd ) and (Land[yu, x] =  0) do inc(yu);
+            while (yu > 0  ) and (Land[yu, x] <> 0) do dec(yu);
+            while (yu < yd ) and (Land[yu, x] =  0) do inc(yu);
 
-			if (yd < LAND_HEIGHT - 1) and ((yd - yu) >= 16) then
-			begin
-				rr.x:= x;
-				rr.y:= yd - 15;
-				r.x:= x mod tmpsurf^.w;
-				r.y:= 16;
-				r.w:= 1;
-				r.h:= 16;
-				SDL_UpperBlit(tmpsurf, @r, Surface, @rr);
-			end;
-			if (yu > 0) then
-			begin
-				rr.x:= x;
-				rr.y:= yu;
-				r.x:= x mod tmpsurf^.w;
-				r.y:= 0;
-				r.w:= 1;
-				r.h:= min(16, yd - yu + 1);
-				SDL_UpperBlit(tmpsurf, @r, Surface, @rr);
-			end;
-			yd:= yu - 1;
-		until yd < 0;
-	end;
-	SDL_FreeSurface(tmpsurf);
+            if (yd < LAND_HEIGHT - 1) and ((yd - yu) >= 16) then
+            begin
+                rr.x:= x;
+                rr.y:= yd - 15;
+                r.x:= x mod tmpsurf^.w;
+                r.y:= 16;
+                r.w:= 1;
+                r.h:= 16;
+                SDL_UpperBlit(tmpsurf, @r, Surface, @rr);
+            end;
+            if (yu > 0) then
+            begin
+                rr.x:= x;
+                rr.y:= yu;
+                r.x:= x mod tmpsurf^.w;
+                r.y:= 0;
+                r.w:= 1;
+                r.h:= min(16, yd - yu + 1);
+                SDL_UpperBlit(tmpsurf, @r, Surface, @rr);
+            end;
+            yd:= yu - 1;
+        until yd < 0;
+    end;
+    SDL_FreeSurface(tmpsurf);
 end;
 
 procedure SetPoints(var Template: TEdgeTemplate; var pa: TPixAr);
@@ -616,42 +616,42 @@
 
 procedure LandSurface2LandPixels(Surface: PSDL_Surface);
 var x, y: LongInt;
-	p: PLongwordArray;
+    p: PLongwordArray;
 begin
 TryDo(Surface <> nil, 'Assert (LandSurface <> nil) failed', true);
 
 if SDL_MustLock(Surface) then
-	SDLTry(SDL_LockSurface(Surface) >= 0, true);
+    SDLTry(SDL_LockSurface(Surface) >= 0, true);
 
 p:= Surface^.pixels;
 for y:= 0 to LAND_HEIGHT - 1 do
-	begin
-	for x:= 0 to LAND_WIDTH - 1 do
-		if Land[y, x] <> 0 then LandPixels[y, x]:= p^[x] or AMask;
+    begin
+    for x:= 0 to LAND_WIDTH - 1 do
+        if Land[y, x] <> 0 then LandPixels[y, x]:= p^[x] or AMask;
 
-	p:= @(p^[Surface^.pitch div 4]);
-	end;
+    p:= @(p^[Surface^.pitch div 4]);
+    end;
 
 if SDL_MustLock(Surface) then
-	SDL_UnlockSurface(Surface);
+    SDL_UnlockSurface(Surface);
 end;
 
 procedure GenLandSurface;
 var tmpsurf: PSDL_Surface;
 begin
-	WriteLnToConsole('Generating land...');
-	GenBlank(EdgeTemplates[SelectTemplate]);
-	AddProgress();
+    WriteLnToConsole('Generating land...');
+    GenBlank(EdgeTemplates[SelectTemplate]);
+    AddProgress();
 
-	tmpsurf:= SDL_CreateRGBSurface(SDL_SWSURFACE, LAND_WIDTH, LAND_HEIGHT, 32, RMask, GMask, BMask, 0);
+    tmpsurf:= SDL_CreateRGBSurface(SDL_SWSURFACE, LAND_WIDTH, LAND_HEIGHT, 32, RMask, GMask, BMask, 0);
 
-	TryDo(tmpsurf <> nil, 'Error creating pre-land surface', true);
-	ColorizeLand(tmpsurf);
-	AddOnLandObjects(tmpsurf);
+    TryDo(tmpsurf <> nil, 'Error creating pre-land surface', true);
+    ColorizeLand(tmpsurf);
+    AddOnLandObjects(tmpsurf);
 
-	LandSurface2LandPixels(tmpsurf);
-	SDL_FreeSurface(tmpsurf);
-	AddProgress();
+    LandSurface2LandPixels(tmpsurf);
+    SDL_FreeSurface(tmpsurf);
+    AddProgress();
 end;
 
 procedure MakeFortsMap;
@@ -687,40 +687,40 @@
     p: PLongwordArray;
     x, y, cpX, cpY: Longword;
 begin
-	tmpsurf:= LoadImage(Pathz[ptMapCurrent] + '/mask', ifAlpha or ifTransparent or ifIgnoreCaps);
-	if (tmpsurf <> nil) and (tmpsurf^.w <= LAND_WIDTH) and (tmpsurf^.h <= LAND_HEIGHT) and (tmpsurf^.format^.BytesPerPixel = 4) then
-	begin
-		cpX:= (LAND_WIDTH - tmpsurf^.w) div 2;
-		cpY:= LAND_HEIGHT - tmpsurf^.h;
-		if SDL_MustLock(tmpsurf) then
-			SDLTry(SDL_LockSurface(tmpsurf) >= 0, true);
+    tmpsurf:= LoadImage(Pathz[ptMapCurrent] + '/mask', ifAlpha or ifTransparent or ifIgnoreCaps);
+    if (tmpsurf <> nil) and (tmpsurf^.w <= LAND_WIDTH) and (tmpsurf^.h <= LAND_HEIGHT) and (tmpsurf^.format^.BytesPerPixel = 4) then
+    begin
+        cpX:= (LAND_WIDTH - tmpsurf^.w) div 2;
+        cpY:= LAND_HEIGHT - tmpsurf^.h;
+        if SDL_MustLock(tmpsurf) then
+            SDLTry(SDL_LockSurface(tmpsurf) >= 0, true);
 
-			p:= tmpsurf^.pixels;
-			for y:= 0 to Pred(tmpsurf^.h) do
-			begin
-				for x:= 0 to Pred(tmpsurf^.w) do
-				begin
-					if ((AMask and p^[x]) = 0) then  // Tiy was having trouble generating transparent black
-						Land[cpY + y, cpX + x]:= 0
-					else if p^[x] = (AMask or RMask) then
-						Land[cpY + y, cpX + x]:= COLOR_INDESTRUCTIBLE
-					else if p^[x] = $FFFFFFFF then
-						Land[cpY + y, cpX + x]:= COLOR_LAND;
-				end;
-				p:= @(p^[tmpsurf^.pitch div 4]);
-			end;
+            p:= tmpsurf^.pixels;
+            for y:= 0 to Pred(tmpsurf^.h) do
+            begin
+                for x:= 0 to Pred(tmpsurf^.w) do
+                begin
+                    if ((AMask and p^[x]) = 0) then  // Tiy was having trouble generating transparent black
+                        Land[cpY + y, cpX + x]:= 0
+                    else if p^[x] = (AMask or RMask) then
+                        Land[cpY + y, cpX + x]:= COLOR_INDESTRUCTIBLE
+                    else if p^[x] = $FFFFFFFF then
+                        Land[cpY + y, cpX + x]:= COLOR_LAND;
+                end;
+                p:= @(p^[tmpsurf^.pitch div 4]);
+            end;
 
-		if SDL_MustLock(tmpsurf) then
-			SDL_UnlockSurface(tmpsurf);
-	end;
-	if (tmpsurf <> nil) then 
-		SDL_FreeSurface(tmpsurf);
+        if SDL_MustLock(tmpsurf) then
+            SDL_UnlockSurface(tmpsurf);
+    end;
+    if (tmpsurf <> nil) then 
+        SDL_FreeSurface(tmpsurf);
 end;
 
 procedure LoadMap;
 var tmpsurf: PSDL_Surface;
-	s: shortstring;
-	f: textfile;
+    s: shortstring;
+    f: textfile;
 begin
 WriteLnToConsole('Loading land from file...');
 AddProgress;
@@ -747,10 +747,10 @@
 TryDo(tmpsurf^.format^.BytesPerPixel = 4, 'Map should be 32bit', true);
 
 BlitImageAndGenerateCollisionInfo(
-	(LAND_WIDTH - tmpsurf^.w) div 2,
-	LAND_HEIGHT - tmpsurf^.h,
-	tmpsurf^.w,
-	tmpsurf);
+    (LAND_WIDTH - tmpsurf^.w) div 2,
+    LAND_HEIGHT - tmpsurf^.h,
+    tmpsurf^.w,
+    tmpsurf);
 SDL_FreeSurface(tmpsurf);
 
 LoadMask;
@@ -789,38 +789,38 @@
                 end;
 
 if hasBorder then
-	begin
-	for y:= 0 to LAND_HEIGHT - 1 do
-		for x:= 0 to LAND_WIDTH - 1 do
-			if (y < topY) or (x < leftX) or (x > rightX) then
-				Land[y, x]:= COLOR_INDESTRUCTIBLE;
-	// experiment hardcoding cave
-	// also try basing cave dimensions on map/template dimensions, if they exist
-	for w:= 0 to 5 do // width of 3 allowed hogs to be knocked through with grenade
-		begin
-		for y:= topY to LAND_HEIGHT - 1 do
-			begin
-			Land[y, leftX + w]:= COLOR_INDESTRUCTIBLE;
-			Land[y, rightX - w]:= COLOR_INDESTRUCTIBLE;
-			if (y + w) mod 32 < 16 then
-				c:= AMask
-			else
-				c:= AMask or RMask or GMask; // FF00FFFF
-			LandPixels[y, leftX + w]:= c;
-			LandPixels[y, rightX - w]:= c;
-			end;
+    begin
+    for y:= 0 to LAND_HEIGHT - 1 do
+        for x:= 0 to LAND_WIDTH - 1 do
+            if (y < topY) or (x < leftX) or (x > rightX) then
+                Land[y, x]:= COLOR_INDESTRUCTIBLE;
+    // experiment hardcoding cave
+    // also try basing cave dimensions on map/template dimensions, if they exist
+    for w:= 0 to 5 do // width of 3 allowed hogs to be knocked through with grenade
+        begin
+        for y:= topY to LAND_HEIGHT - 1 do
+            begin
+            Land[y, leftX + w]:= COLOR_INDESTRUCTIBLE;
+            Land[y, rightX - w]:= COLOR_INDESTRUCTIBLE;
+            if (y + w) mod 32 < 16 then
+                c:= AMask
+            else
+                c:= AMask or RMask or GMask; // FF00FFFF
+            LandPixels[y, leftX + w]:= c;
+            LandPixels[y, rightX - w]:= c;
+            end;
 
-		for x:= leftX to rightX do
-			begin
-			Land[topY + w, x]:= COLOR_INDESTRUCTIBLE;
-			if (x + w) mod 32 < 16 then
-				c:= AMask
-			else
-				c:= AMask or RMask or GMask; // FF00FFFF
-			LandPixels[topY + w, x]:= c;
-			end;
-		end;
-	end;
+        for x:= leftX to rightX do
+            begin
+            Land[topY + w, x]:= COLOR_INDESTRUCTIBLE;
+            if (x + w) mod 32 < 16 then
+                c:= AMask
+            else
+                c:= AMask or RMask or GMask; // FF00FFFF
+            LandPixels[topY + w, x]:= c;
+            end;
+        end;
+    end;
 
 if (GameFlags and gfDisableGirders) <> 0 then hasGirders:= false;
 
@@ -854,13 +854,13 @@
 
 procedure init_uLand;
 begin
-	LandBackSurface:= nil;
+    LandBackSurface:= nil;
 end;
 
 procedure free_uLand;
 begin
-	if LandBackSurface <> nil then
-		SDL_FreeSurface(LandBackSurface);
+    if LandBackSurface <> nil then
+        SDL_FreeSurface(LandBackSurface);
 end;
 
 end.
--- a/hedgewars/uLandGraphics.pas	Sat Mar 06 10:54:24 2010 +0000
+++ b/hedgewars/uLandGraphics.pas	Sat Mar 06 10:59:20 2010 +0000
@@ -232,68 +232,68 @@
 begin
 
 // draw background land texture
-	begin
-	dx:= 0;
-	dy:= Radius;
-	d:= 3 - 2 * Radius;
+    begin
+    dx:= 0;
+    dy:= Radius;
+    d:= 3 - 2 * Radius;
 
-	while (dx < dy) do
-		begin
-		FillLandCircleLinesBG(x, y, dx, dy);
-		if (d < 0)
-		then d:= d + 4 * dx + 6
-		else begin
-			d:= d + 4 * (dx - dy) + 10;
-			dec(dy)
-			end;
-		inc(dx)
-		end;
-	if (dx = dy) then FillLandCircleLinesBG(x, y, dx, dy);
-	end;
+    while (dx < dy) do
+        begin
+        FillLandCircleLinesBG(x, y, dx, dy);
+        if (d < 0)
+        then d:= d + 4 * dx + 6
+        else begin
+            d:= d + 4 * (dx - dy) + 10;
+            dec(dy)
+            end;
+        inc(dx)
+        end;
+    if (dx = dy) then FillLandCircleLinesBG(x, y, dx, dy);
+    end;
 
 // draw a hole in land
 if Radius > 20 then
-	begin
-	dx:= 0;
-	dy:= Radius - 15;
-	d:= 3 - 2 * dy;
+    begin
+    dx:= 0;
+    dy:= Radius - 15;
+    d:= 3 - 2 * dy;
 
-	while (dx < dy) do
-		begin
-		FillLandCircleLines0(x, y, dx, dy);
-		if (d < 0)
-		then d:= d + 4 * dx + 6
-		else begin
-			d:= d + 4 * (dx - dy) + 10;
-			dec(dy)
-			end;
-		inc(dx)
-		end;
-	if (dx = dy) then FillLandCircleLines0(x, y, dx, dy);
-	end;
+    while (dx < dy) do
+        begin
+        FillLandCircleLines0(x, y, dx, dy);
+        if (d < 0)
+        then d:= d + 4 * dx + 6
+        else begin
+            d:= d + 4 * (dx - dy) + 10;
+            dec(dy)
+            end;
+        inc(dx)
+        end;
+    if (dx = dy) then FillLandCircleLines0(x, y, dx, dy);
+    end;
 
   // FillRoundInLand after erasing land pixels to allow Land 0 check for mask.png to function
-	FillRoundInLand(X, Y, Radius, 0);
+    FillRoundInLand(X, Y, Radius, 0);
 
 // draw explosion border
-	begin
-	inc(Radius, 4);
-	dx:= 0;
-	dy:= Radius;
-	d:= 3 - 2 * Radius;
-	while (dx < dy) do
-		begin
-		FillLandCircleLinesEBC(x, y, dx, dy);
-		if (d < 0)
-		then d:= d + 4 * dx + 6
-		else begin
-			d:= d + 4 * (dx - dy) + 10;
-			dec(dy)
-			end;
-		inc(dx)
-		end;
-	if (dx = dy) then FillLandCircleLinesEBC(x, y, dx, dy);
-	end;
+    begin
+    inc(Radius, 4);
+    dx:= 0;
+    dy:= Radius;
+    d:= 3 - 2 * Radius;
+    while (dx < dy) do
+        begin
+        FillLandCircleLinesEBC(x, y, dx, dy);
+        if (d < 0)
+        then d:= d + 4 * dx + 6
+        else begin
+            d:= d + 4 * (dx - dy) + 10;
+            dec(dy)
+            end;
+        inc(dx)
+        end;
+    if (dx = dy) then FillLandCircleLinesEBC(x, y, dx, dy);
+    end;
 
 tx:= max(X - Radius - 1, 0);
 dx:= min(X + Radius + 1, LAND_WIDTH) - tx;
@@ -306,15 +306,15 @@
 var tx, ty, i: LongInt;
 begin
 for i:= 0 to Pred(Count) do
-	begin
-	for ty:= max(y - Radius, 0) to min(y + Radius, LAND_HEIGHT) do
-		for tx:= max(0, ar^[i].Left - Radius) to min(LAND_WIDTH, ar^[i].Right + Radius) do
-			if Land[ty, tx] = COLOR_LAND then
-				LandPixels[ty, tx]:= LandBackPixel(tx, ty)
-			else if Land[ty, tx] = COLOR_OBJECT then
-				LandPixels[ty, tx]:= 0;
-	inc(y, dY)
-	end;
+    begin
+    for ty:= max(y - Radius, 0) to min(y + Radius, LAND_HEIGHT) do
+        for tx:= max(0, ar^[i].Left - Radius) to min(LAND_WIDTH, ar^[i].Right + Radius) do
+            if Land[ty, tx] = COLOR_LAND then
+                LandPixels[ty, tx]:= LandBackPixel(tx, ty)
+            else if Land[ty, tx] = COLOR_OBJECT then
+                LandPixels[ty, tx]:= 0;
+    inc(y, dY)
+    end;
 
 inc(Radius, 4);
 dec(y, Count * dY);
@@ -356,15 +356,15 @@
     Y:= ny - dY8;
     for t:= -8 to ticks + 8 do
     begin
-	X:= X + dX;
-	Y:= Y + dY;
-	tx:= hwRound(X);
-	ty:= hwRound(Y);
-	if ((ty and LAND_HEIGHT_MASK) = 0) and
-	   ((tx and LAND_WIDTH_MASK) = 0) and
-	   ((Land[ty, tx] = COLOR_LAND) or 
-	   (Land[ty, tx] = COLOR_OBJECT)) then
-		LandPixels[ty, tx]:= cExplosionBorderColor
+    X:= X + dX;
+    Y:= Y + dY;
+    tx:= hwRound(X);
+    ty:= hwRound(Y);
+    if ((ty and LAND_HEIGHT_MASK) = 0) and
+       ((tx and LAND_WIDTH_MASK) = 0) and
+       ((Land[ty, tx] = COLOR_LAND) or 
+       (Land[ty, tx] = COLOR_OBJECT)) then
+        LandPixels[ty, tx]:= cExplosionBorderColor
     end;
     nx:= nx - dY;
     ny:= ny + dX;
@@ -376,15 +376,15 @@
     Y:= ny - dY8;
     for t:= 0 to 7 do
     begin
-	X:= X + dX;
-	Y:= Y + dY;
-	tx:= hwRound(X);
-	ty:= hwRound(Y);
-	if ((ty and LAND_HEIGHT_MASK) = 0) and
-	   ((tx and LAND_WIDTH_MASK) = 0) and
-	   ((Land[ty, tx] = COLOR_LAND) or 
-	   (Land[ty, tx] = COLOR_OBJECT)) then
-		LandPixels[ty, tx]:= cExplosionBorderColor
+    X:= X + dX;
+    Y:= Y + dY;
+    tx:= hwRound(X);
+    ty:= hwRound(Y);
+    if ((ty and LAND_HEIGHT_MASK) = 0) and
+       ((tx and LAND_WIDTH_MASK) = 0) and
+       ((Land[ty, tx] = COLOR_LAND) or 
+       (Land[ty, tx] = COLOR_OBJECT)) then
+        LandPixels[ty, tx]:= cExplosionBorderColor
     end;
     X:= nx;
     Y:= ny;
@@ -405,15 +405,15 @@
         end;
     for t:= 0 to 7 do
     begin
-	X:= X + dX;
-	Y:= Y + dY;
-	tx:= hwRound(X);
-	ty:= hwRound(Y);
-	if ((ty and LAND_HEIGHT_MASK) = 0) and
-	   ((tx and LAND_WIDTH_MASK) = 0) and
-	   ((Land[ty, tx] = COLOR_LAND) or 
-	   (Land[ty, tx] = COLOR_OBJECT)) then
-		LandPixels[ty, tx]:= cExplosionBorderColor
+    X:= X + dX;
+    Y:= Y + dY;
+    tx:= hwRound(X);
+    ty:= hwRound(Y);
+    if ((ty and LAND_HEIGHT_MASK) = 0) and
+       ((tx and LAND_WIDTH_MASK) = 0) and
+       ((Land[ty, tx] = COLOR_LAND) or 
+       (Land[ty, tx] = COLOR_OBJECT)) then
+        LandPixels[ty, tx]:= cExplosionBorderColor
     end;
     nx:= nx - dY;
     ny:= ny + dX;
@@ -425,15 +425,15 @@
     Y:= ny - dY8;
     for t:= -8 to ticks + 8 do
     begin
-	X:= X + dX;
-	Y:= Y + dY;
-	tx:= hwRound(X);
-	ty:= hwRound(Y);
-	if ((ty and LAND_HEIGHT_MASK) = 0) and
-	   ((tx and LAND_WIDTH_MASK) = 0) and
-	   ((Land[ty, tx] = COLOR_LAND) or 
-	   (Land[ty, tx] = COLOR_OBJECT)) then
-		LandPixels[ty, tx]:= cExplosionBorderColor
+    X:= X + dX;
+    Y:= Y + dY;
+    tx:= hwRound(X);
+    ty:= hwRound(Y);
+    if ((ty and LAND_HEIGHT_MASK) = 0) and
+       ((tx and LAND_WIDTH_MASK) = 0) and
+       ((Land[ty, tx] = COLOR_LAND) or 
+       (Land[ty, tx] = COLOR_OBJECT)) then
+        LandPixels[ty, tx]:= cExplosionBorderColor
     end;
     nx:= nx - dY;
     ny:= ny + dX;
@@ -524,26 +524,26 @@
 var nx, ny, i, j, c: LongInt;
 begin
 if (Land[Y, X] <> 0) and (Land[Y, X] <> COLOR_INDESTRUCTIBLE) and (LandPixels[Y, X] = cExplosionBorderColor)then // check neighbours
-	begin
-	c:= 0;
-	for i:= -1 to 1 do
-		for j:= -1 to 1 do
-			if (i <> 0) or (j <> 0) then
-				begin
-				ny:= Y + i;
-				nx:= X + j;
-				if ((ny and LAND_HEIGHT_MASK) = 0) and ((nx and LAND_WIDTH_MASK) = 0) then
-					if Land[ny, nx] > 255 then
-						inc(c);
-				end;
+    begin
+    c:= 0;
+    for i:= -1 to 1 do
+        for j:= -1 to 1 do
+            if (i <> 0) or (j <> 0) then
+                begin
+                ny:= Y + i;
+                nx:= X + j;
+                if ((ny and LAND_HEIGHT_MASK) = 0) and ((nx and LAND_WIDTH_MASK) = 0) then
+                    if Land[ny, nx] > 255 then
+                        inc(c);
+                end;
 
-	if c < 4 then // 0-3 neighbours
-		begin
+    if c < 4 then // 0-3 neighbours
+        begin
         if Land[Y, X] = COLOR_LAND then LandPixels[Y, X]:= LandBackPixel(X, Y) else LandPixels[Y, X]:= 0;
-		Land[Y, X]:= 0;
-		exit(true);
-		end;
-	end;
+        Land[Y, X]:= 0;
+        exit(true);
+        end;
+    end;
 Despeckle:= false
 end;
 
@@ -554,13 +554,13 @@
 bRes:= false;
 
 for y:= 0 to LAND_HEIGHT div 32 - 1 do
-	begin
+    begin
 
-	for x:= 0 to LAND_WIDTH div 32 - 1 do
-		begin
-		if LandDirty[y, x] <> 0 then
-			begin
-			updateBlock:= false;
+    for x:= 0 to LAND_WIDTH div 32 - 1 do
+        begin
+        if LandDirty[y, x] <> 0 then
+            begin
+            updateBlock:= false;
             resweep:= true;
             while(resweep) do
                 begin
@@ -574,11 +574,11 @@
                             resweep:= true;
                             end;
                 end;
-			if updateBlock then UpdateLandTexture(x * 32, 32, y * 32, 32);
-			LandDirty[y, x]:= 0;
-			end;
-		end;
-	end;
+            if updateBlock then UpdateLandTexture(x * 32, 32, y * 32, 32);
+            LandDirty[y, x]:= 0;
+            end;
+        end;
+    end;
 
 SweepDirty:= bRes;
 end;
--- a/hedgewars/uLandObjects.pas	Sat Mar 06 10:54:24 2010 +0000
+++ b/hedgewars/uLandObjects.pas	Sat Mar 06 10:59:20 2010 +0000
@@ -30,9 +30,9 @@
 implementation
 uses uLand, uStore, uConsts, uMisc, uConsole, uRandom, uVisualGears, uFloat, uSound, uWorld,
 {$IFDEF GLES11}
-	gles11;
+    gles11;
 {$ELSE}
-	GL;
+    GL;
 {$ENDIF}
 
 const MaxRects = 512;
@@ -86,15 +86,15 @@
 
 p:= Image^.pixels;
 for y:= 0 to Pred(Image^.h) do
-	begin
-	for x:= 0 to Pred(Width) do
-		if LandPixels[cpY + y, cpX + x] = 0 then
-			begin
-			LandPixels[cpY + y, cpX + x]:= p^[x];
-			if (p^[x] and AMask) <> 0 then Land[cpY + y, cpX + x]:= COLOR_OBJECT;
-			end;
-	p:= @(p^[Image^.pitch shr 2]);
-	end;
+    begin
+    for x:= 0 to Pred(Width) do
+        if LandPixels[cpY + y, cpX + x] = 0 then
+            begin
+            LandPixels[cpY + y, cpX + x]:= p^[x];
+            if (p^[x] and AMask) <> 0 then Land[cpY + y, cpX + x]:= COLOR_OBJECT;
+            end;
+    p:= @(p^[Image^.pitch shr 2]);
+    end;
 
 if SDL_MustLock(Image) then
    SDL_UnlockSurface(Image);
@@ -122,7 +122,7 @@
 
 procedure FreeRects;
 begin
-	Dispose(rects)
+    Dispose(rects)
 end;
 
 function CheckIntersect(x1, y1, w1, h1: LongInt): boolean;
@@ -147,61 +147,61 @@
     rr: TSDL_Rect;
     bRes: boolean;
 
-	function CountNonZeroz(x, y: LongInt): Longword;
-	var i: LongInt;
-		lRes: Longword;
-	begin
-	lRes:= 0;
-	for i:= y to y + 15 do
-		if Land[i, x] <> 0 then inc(lRes);
-	CountNonZeroz:= lRes;
-	end;
+    function CountNonZeroz(x, y: LongInt): Longword;
+    var i: LongInt;
+        lRes: Longword;
+    begin
+    lRes:= 0;
+    for i:= y to y + 15 do
+        if Land[i, x] <> 0 then inc(lRes);
+    CountNonZeroz:= lRes;
+    end;
 
 begin
 y:= topY+150;
 repeat
-	inc(y, 24);
-	x1:= gX;
-	x2:= gX;
+    inc(y, 24);
+    x1:= gX;
+    x2:= gX;
 
-	while (x1 > Longint(leftX)+150) and (CountNonZeroz(x1, y) = 0) do dec(x1, 2);
+    while (x1 > Longint(leftX)+150) and (CountNonZeroz(x1, y) = 0) do dec(x1, 2);
 
-	i:= x1 - 12;
-	repeat
-		dec(x1, 2);
-		k:= CountNonZeroz(x1, y)
-	until (x1 < Longint(leftX)+150) or (k = 0) or (k = 16) or (x1 < i);
+    i:= x1 - 12;
+    repeat
+        dec(x1, 2);
+        k:= CountNonZeroz(x1, y)
+    until (x1 < Longint(leftX)+150) or (k = 0) or (k = 16) or (x1 < i);
 
-	inc(x1, 2);
-	if k = 16 then
-		begin
-		while (x2 < (rightX-150)) and (CountNonZeroz(x2, y) = 0) do inc(x2, 2);
-		i:= x2 + 12;
-		repeat
-		inc(x2, 2);
-		k:= CountNonZeroz(x2, y)
-		until (x2 >= (rightX-150)) or (k = 0) or (k = 16) or (x2 > i) or (x2 - x1 >= 768);
-		if (x2 < (rightX - 150)) and (k = 16) and (x2 - x1 > 250) and (x2 - x1 < 768)
-			and not CheckIntersect(x1 - 32, y - 64, x2 - x1 + 64, 144) then break;
-		end;
+    inc(x1, 2);
+    if k = 16 then
+        begin
+        while (x2 < (rightX-150)) and (CountNonZeroz(x2, y) = 0) do inc(x2, 2);
+        i:= x2 + 12;
+        repeat
+        inc(x2, 2);
+        k:= CountNonZeroz(x2, y)
+        until (x2 >= (rightX-150)) or (k = 0) or (k = 16) or (x2 > i) or (x2 - x1 >= 768);
+        if (x2 < (rightX - 150)) and (k = 16) and (x2 - x1 > 250) and (x2 - x1 < 768)
+            and not CheckIntersect(x1 - 32, y - 64, x2 - x1 + 64, 144) then break;
+        end;
 x1:= 0;
 until y > (LAND_HEIGHT-125);
 
 if x1 > 0 then
 begin
-	bRes:= true;
-	tmpsurf:= LoadImage(Pathz[ptCurrTheme] + '/Girder', ifTransparent or ifIgnoreCaps);
-	if tmpsurf = nil then tmpsurf:= LoadImage(Pathz[ptGraphics] + '/Girder', ifCritical or ifTransparent or ifIgnoreCaps);
+    bRes:= true;
+    tmpsurf:= LoadImage(Pathz[ptCurrTheme] + '/Girder', ifTransparent or ifIgnoreCaps);
+    if tmpsurf = nil then tmpsurf:= LoadImage(Pathz[ptGraphics] + '/Girder', ifCritical or ifTransparent or ifIgnoreCaps);
 
-	rr.x:= x1;
-	while rr.x < x2 do
-		begin
-		BlitImageAndGenerateCollisionInfo(rr.x, y, min(x2 - rr.x, tmpsurf^.w), tmpsurf);
-		inc(rr.x, tmpsurf^.w);
-		end;
-	SDL_FreeSurface(tmpsurf);
+    rr.x:= x1;
+    while rr.x < x2 do
+        begin
+        BlitImageAndGenerateCollisionInfo(rr.x, y, min(x2 - rr.x, tmpsurf^.w), tmpsurf);
+        inc(rr.x, tmpsurf^.w);
+        end;
+    SDL_FreeSurface(tmpsurf);
 
-	AddRect(x1 - 8, y - 32, x2 - x1 + 16, 80);
+    AddRect(x1 - 8, y - 32, x2 - x1 + 16, 80);
 end
 else bRes:= false;
 
@@ -305,46 +305,46 @@
 begin
 cnt:= 0;
 with Obj do
-	begin
-	if Maxcnt = 0 then
-		exit(false);
-	x:= 0;
-	r.x:= 0;
-	r.y:= 0;
-	r.w:= Width;
-	r.h:= Height + 16;
-	repeat
-		y:= 8;
-		repeat
-			if CheckLand(r, x, y - 8, COLOR_LAND)
-			and not CheckIntersect(x, y, Width, Height) then
-			begin
-			ar[cnt].x:= x;
-			ar[cnt].y:= y;
-			inc(cnt);
-			if cnt > MaxPointsIndex then // buffer is full, do not check the rest land
-				begin
-				y:= 5000;
-				x:= 5000;
-				end
-			end;
-			inc(y, 12);
+    begin
+    if Maxcnt = 0 then
+        exit(false);
+    x:= 0;
+    r.x:= 0;
+    r.y:= 0;
+    r.w:= Width;
+    r.h:= Height + 16;
+    repeat
+        y:= 8;
+        repeat
+            if CheckLand(r, x, y - 8, COLOR_LAND)
+            and not CheckIntersect(x, y, Width, Height) then
+            begin
+            ar[cnt].x:= x;
+            ar[cnt].y:= y;
+            inc(cnt);
+            if cnt > MaxPointsIndex then // buffer is full, do not check the rest land
+                begin
+                y:= 5000;
+                x:= 5000;
+                end
+            end;
+            inc(y, 12);
         until y > LAND_HEIGHT - 1 - Height - 8;
-		inc(x, getrandom(12) + 12)
+        inc(x, getrandom(12) + 12)
     until x > LAND_WIDTH - 1 - Width;
-	bRes:= cnt <> 0;
-	if bRes then
-		begin
-		i:= getrandom(cnt);
-		r.x:= ar[i].X;
-		r.y:= ar[i].Y;
-		r.w:= Width;
-		r.h:= Height;
-		SDL_UpperBlit(Obj.Surf, nil, Surface, @r);
-		AddRect(ar[i].x - 32, ar[i].y - 32, Width + 64, Height + 64);
-		dec(Maxcnt)
-		end else Maxcnt:= 0
-	end;
+    bRes:= cnt <> 0;
+    if bRes then
+        begin
+        i:= getrandom(cnt);
+        r.x:= ar[i].X;
+        r.y:= ar[i].Y;
+        r.w:= Width;
+        r.h:= Height;
+        SDL_UpperBlit(Obj.Surf, nil, Surface, @r);
+        AddRect(ar[i].x - 32, ar[i].y - 32, Width + 64, Height + 64);
+        dec(Maxcnt)
+        end else Maxcnt:= 0
+    end;
 TryPut:= bRes;
 end;
 
@@ -355,11 +355,11 @@
     vobcount: Longword;
     c1, c2: TSDL_Color;
 
-	procedure CheckRect(Width, Height, x, y, w, h: LongWord);
-	begin
-	if (x + w > Width) then OutError('Object''s rectangle exceeds image: x + w (' + inttostr(x) + ' + ' + inttostr(w) + ') > Width (' + inttostr(Width) + ')', true);
-	if (y + h > Height) then OutError('Object''s rectangle exceeds image: y + h (' + inttostr(y) + ' + ' + inttostr(h) + ') > Height (' + inttostr(Height) + ')', true);
-	end;
+    procedure CheckRect(Width, Height, x, y, w, h: LongWord);
+    begin
+    if (x + w > Width) then OutError('Object''s rectangle exceeds image: x + w (' + inttostr(x) + ' + ' + inttostr(w) + ') > Width (' + inttostr(Width) + ')', true);
+    if (y + h > Height) then OutError('Object''s rectangle exceeds image: y + h (' + inttostr(y) + ' + ' + inttostr(h) + ') > Height (' + inttostr(Height) + ')', true);
+    end;
 
 begin
 
@@ -396,30 +396,30 @@
 
 Readln(f, ThemeObjects.Count);
 for i:= 0 to Pred(ThemeObjects.Count) do
-	begin
-	Readln(f, s); // filename
-	with ThemeObjects.objs[i] do
-			begin
-			Surf:= LoadImage(Pathz[ptCurrTheme] + '/' + s, ifCritical or ifTransparent or ifIgnoreCaps);
-			Width:= Surf^.w;
-			Height:= Surf^.h;
-			Read(f, Maxcnt);
-			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);
-				CheckRect(Width, Height, x, y, w, h)
-				end;
-			Read(f, rectcnt);
-			for ii:= 1 to rectcnt do
-				with outland[ii] do
-					begin
-					Read(f, x, y, w, h);
-					CheckRect(Width, Height, x, y, w, h)
-					end;
-			ReadLn(f)
-			end;
-	end;
+    begin
+    Readln(f, s); // filename
+    with ThemeObjects.objs[i] do
+            begin
+            Surf:= LoadImage(Pathz[ptCurrTheme] + '/' + s, ifCritical or ifTransparent or ifIgnoreCaps);
+            Width:= Surf^.w;
+            Height:= Surf^.h;
+            Read(f, Maxcnt);
+            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);
+                CheckRect(Width, Height, x, y, w, h)
+                end;
+            Read(f, rectcnt);
+            for ii:= 1 to rectcnt do
+                with outland[ii] do
+                    begin
+                    Read(f, x, y, w, h);
+                    CheckRect(Width, Height, x, y, w, h)
+                    end;
+            ReadLn(f)
+            end;
+    end;
 
 // sprays
 Readln(f, SprayObjects.Count);
@@ -453,46 +453,46 @@
 var i, ii, t: LongInt;
     b: boolean;
 begin
-	if ThemeObjects.Count = 0 then exit;
-	WriteLnToConsole('Adding theme objects...');
+    if ThemeObjects.Count = 0 then exit;
+    WriteLnToConsole('Adding theme objects...');
 
-	for i:=0 to ThemeObjects.Count do 
-		ThemeObjects.objs[i].Maxcnt := max(1, (ThemeObjects.objs[i].Maxcnt * MaxHedgehogs) div 18); // Maxcnt is proportional to map size, but allow objects to span even if we're on a tiny map
-	 
-	repeat
-		t := getrandom(ThemeObjects.Count);
-		b := false;
-		for i:=0 to ThemeObjects.Count do
-			begin
-			ii := (i+t) mod ThemeObjects.Count;
-			
-			if ThemeObjects.objs[ii].Maxcnt <> 0 then
-				b := b or TryPut(ThemeObjects.objs[ii])
-			end;
-	until not b;
+    for i:=0 to ThemeObjects.Count do 
+        ThemeObjects.objs[i].Maxcnt := max(1, (ThemeObjects.objs[i].Maxcnt * MaxHedgehogs) div 18); // Maxcnt is proportional to map size, but allow objects to span even if we're on a tiny map
+     
+    repeat
+        t := getrandom(ThemeObjects.Count);
+        b := false;
+        for i:=0 to ThemeObjects.Count do
+            begin
+            ii := (i+t) mod ThemeObjects.Count;
+            
+            if ThemeObjects.objs[ii].Maxcnt <> 0 then
+                b := b or TryPut(ThemeObjects.objs[ii])
+            end;
+    until not b;
 end;
 
 procedure AddSprayObjects(Surface: PSDL_Surface; var SprayObjects: TSprayObjects);
 var i, ii, t: LongInt;
     b: boolean;
 begin
-	if SprayObjects.Count = 0 then exit;
-	WriteLnToConsole('Adding spray objects...');
+    if SprayObjects.Count = 0 then exit;
+    WriteLnToConsole('Adding spray objects...');
 
-	for i:=0 to SprayObjects.Count do 
-		SprayObjects.objs[i].Maxcnt := max(1, (SprayObjects.objs[i].Maxcnt * MaxHedgehogs) div 18); // Maxcnt is proportional to map size, but allow objects to span even if we're on a tiny map
-	 
-	repeat
-		t := getrandom(SprayObjects.Count);
-		b := false;
-		for i:=0 to SprayObjects.Count do
-			begin
-			ii := (i+t) mod SprayObjects.Count;
-			
-			if SprayObjects.objs[ii].Maxcnt <> 0 then
-				b := b or TryPut(SprayObjects.objs[ii], Surface)
-			end;
-	until not b;
+    for i:=0 to SprayObjects.Count do 
+        SprayObjects.objs[i].Maxcnt := max(1, (SprayObjects.objs[i].Maxcnt * MaxHedgehogs) div 18); // Maxcnt is proportional to map size, but allow objects to span even if we're on a tiny map
+     
+    repeat
+        t := getrandom(SprayObjects.Count);
+        b := false;
+        for i:=0 to SprayObjects.Count do
+            begin
+            ii := (i+t) mod SprayObjects.Count;
+            
+            if SprayObjects.objs[ii].Maxcnt <> 0 then
+                b := b or TryPut(SprayObjects.objs[ii], Surface)
+            end;
+    until not b;
 end;
 
 procedure AddObjects();
--- a/hedgewars/uLandTexture.pas	Sat Mar 06 10:54:24 2010 +0000
+++ b/hedgewars/uLandTexture.pas	Sat Mar 06 10:59:20 2010 +0000
@@ -29,30 +29,30 @@
 implementation
 uses uMisc, uLand, uStore, uConsts,
 {$IFDEF GLES11}
-	gles11;
+    gles11;
 {$ELSE}
-	GL;
+    GL;
 {$ENDIF}
 
 
 const TEXSIZE = 256;
-	LANDTEXARW = LAND_WIDTH div TEXSIZE;
-	LANDTEXARH = LAND_HEIGHT div TEXSIZE;
+    LANDTEXARW = LAND_WIDTH div TEXSIZE;
+    LANDTEXARH = LAND_HEIGHT div TEXSIZE;
 
 var
-	LandTextures: array[0..LANDTEXARW - 1, 0..LANDTEXARH - 1] of
-			record
-			shouldUpdate: boolean;
-			tex: PTexture;
-			end;
+    LandTextures: array[0..LANDTEXARW - 1, 0..LANDTEXARH - 1] of
+            record
+            shouldUpdate: boolean;
+            tex: PTexture;
+            end;
 
-	tmpPixels: array [0..TEXSIZE - 1, 0..TEXSIZE - 1] of LongWord;
+    tmpPixels: array [0..TEXSIZE - 1, 0..TEXSIZE - 1] of LongWord;
 
 function Pixels(x, y: Longword): Pointer;
 var ty: Longword;
 begin
 for ty:= 0 to TEXSIZE - 1 do
-	Move(LandPixels[y * TEXSIZE + ty, x * TEXSIZE], tmpPixels[ty, 0], sizeof(Longword) * TEXSIZE);
+    Move(LandPixels[y * TEXSIZE + ty, x * TEXSIZE], tmpPixels[ty, 0], sizeof(Longword) * TEXSIZE);
 
 Pixels:= @tmpPixels
 end;
@@ -61,8 +61,8 @@
 var tx, ty: Longword;
 begin
 for ty:= 0 to TEXSIZE - 1 do
-	for tx:= 0 to TEXSIZE - 1 do
-		tmpPixels[ty, tx]:= Land[y * TEXSIZE + ty, x * TEXSIZE + tx] or AMask;
+    for tx:= 0 to TEXSIZE - 1 do
+        tmpPixels[ty, tx]:= Land[y * TEXSIZE + ty, x * TEXSIZE + tx] or AMask;
 
 Pixels2:= @tmpPixels
 end;
@@ -77,28 +77,28 @@
 TryDo(Y + Height <= LAND_HEIGHT, 'UpdateLandTexture: wrong Height parameter', true);
 
 for ty:= Y div TEXSIZE to (Y + Height - 1) div TEXSIZE do
-	for tx:= X div TEXSIZE to (X + Width - 1) div TEXSIZE do
-		LandTextures[tx, ty].shouldUpdate:= true
+    for tx:= X div TEXSIZE to (X + Width - 1) div TEXSIZE do
+        LandTextures[tx, ty].shouldUpdate:= true
 end;
 
 procedure RealLandTexUpdate;
 var x, y: LongWord;
 begin
 if LandTextures[0, 0].tex = nil then
-	for x:= 0 to LANDTEXARW -1 do
-		for y:= 0 to LANDTEXARH - 1 do
-			with LandTextures[x, y] do
-				tex:= NewTexture(TEXSIZE, TEXSIZE, Pixels(x, y))
+    for x:= 0 to LANDTEXARW -1 do
+        for y:= 0 to LANDTEXARH - 1 do
+            with LandTextures[x, y] do
+                tex:= NewTexture(TEXSIZE, TEXSIZE, Pixels(x, y))
 else
-	for x:= 0 to LANDTEXARW -1 do
-		for y:= 0 to LANDTEXARH - 1 do
-			with LandTextures[x, y] do
-				if shouldUpdate then
-					begin
-					shouldUpdate:= false;
-					glBindTexture(GL_TEXTURE_2D, tex^.id);
-					glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, TEXSIZE, TEXSIZE, GL_RGBA, GL_UNSIGNED_BYTE, Pixels(x, y));
-					end
+    for x:= 0 to LANDTEXARW -1 do
+        for y:= 0 to LANDTEXARH - 1 do
+            with LandTextures[x, y] do
+                if shouldUpdate then
+                    begin
+                    shouldUpdate:= false;
+                    glBindTexture(GL_TEXTURE_2D, tex^.id);
+                    glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, TEXSIZE, TEXSIZE, GL_RGBA, GL_UNSIGNED_BYTE, Pixels(x, y));
+                    end
 end;
 
 procedure DrawLand(dX, dY: LongInt);
@@ -107,21 +107,21 @@
 RealLandTexUpdate;
 
 for x:= 0 to LANDTEXARW -1 do
-	for y:= 0 to LANDTEXARH - 1 do
-		with LandTextures[x, y] do
-			DrawTexture(dX + x * TEXSIZE, dY + y * TEXSIZE, tex)
+    for y:= 0 to LANDTEXARH - 1 do
+        with LandTextures[x, y] do
+            DrawTexture(dX + x * TEXSIZE, dY + y * TEXSIZE, tex)
 end;
 
 procedure FreeLand;
 var x, y: LongInt;
 begin
-	for x:= 0 to LANDTEXARW -1 do
-		for y:= 0 to LANDTEXARH - 1 do
-			with LandTextures[x, y] do
-			begin
-				FreeTexture(tex);
-				tex:= nil;
-			end;
+    for x:= 0 to LANDTEXARW -1 do
+        for y:= 0 to LANDTEXARH - 1 do
+            with LandTextures[x, y] do
+            begin
+                FreeTexture(tex);
+                tex:= nil;
+            end;
 end;
 
 end.
--- a/hedgewars/uLocale.pas	Sat Mar 06 10:54:24 2010 +0000
+++ b/hedgewars/uLocale.pas	Sat Mar 06 10:59:20 2010 +0000
@@ -21,27 +21,27 @@
 unit uLocale;
 interface
 type TAmmoStrId = (sidNothing, sidGrenade, sidClusterBomb, sidBazooka, sidUFO, sidShotgun,
-			sidPickHammer, sidSkip, sidRope, sidMine, sidDEagle,
-			sidDynamite, sidBaseballBat, sidFirePunch, sidSeconds,
-			sidParachute, sidAirAttack, sidMineStrike, sidBlowTorch,
-			sidGirder, sidTeleport, sidSwitch, sidMortar, sidWhip,
-			sidKamikaze, sidCake, sidSeduction, sidWatermelon,
-			sidHellishBomb, sidDrill, sidBallgun, sidNapalm, sidRCPlane,
+            sidPickHammer, sidSkip, sidRope, sidMine, sidDEagle,
+            sidDynamite, sidBaseballBat, sidFirePunch, sidSeconds,
+            sidParachute, sidAirAttack, sidMineStrike, sidBlowTorch,
+            sidGirder, sidTeleport, sidSwitch, sidMortar, sidWhip,
+            sidKamikaze, sidCake, sidSeduction, sidWatermelon,
+            sidHellishBomb, sidDrill, sidBallgun, sidNapalm, sidRCPlane,
             sidLowGravity, sidExtraDamage, sidInvulnerable, sidExtraTime,
             sidLaserSight, sidVampiric, sidSniperRifle, sidJetpack, sidMolotov);
 
-	TMsgStrId = (sidStartFight, sidDraw, sidWinner, sidVolume, sidPaused,
-			sidConfirm, sidSuddenDeath, sidRemaining, sidFuel, sidSync,
-			sidNoEndTurn, sidNotYetAvailable);
+    TMsgStrId = (sidStartFight, sidDraw, sidWinner, sidVolume, sidPaused,
+            sidConfirm, sidSuddenDeath, sidRemaining, sidFuel, sidSync,
+            sidNoEndTurn, sidNotYetAvailable);
 
-	TEventId = (eidDied, eidDrowned, eidRoundStart, eidRoundWin, eidRoundDraw,
-			eidNewHealthPack, eidNewAmmoPack, eidNewUtilityPack, eidTurnSkipped, eidHurtSelf,
-			eidHomerun, eidFrozen);
+    TEventId = (eidDied, eidDrowned, eidRoundStart, eidRoundWin, eidRoundDraw,
+            eidNewHealthPack, eidNewAmmoPack, eidNewUtilityPack, eidTurnSkipped, eidHurtSelf,
+            eidHomerun, eidFrozen);
 
-	TGoalStrId = (gidCaption, gidSubCaption, gidForts, gidLowGravity, gidInvulnerable,
-			gidVampiric, gidKarma, gidKing, gidPlaceHog, gidArtillery,
-			gidSolidLand, gidSharedAmmo, gidMineTimer, gidNoMineTimer, gidRandomMineTimer,
-			gidDamageModifier);
+    TGoalStrId = (gidCaption, gidSubCaption, gidForts, gidLowGravity, gidInvulnerable,
+            gidVampiric, gidKarma, gidKing, gidPlaceHog, gidArtillery,
+            gidSolidLand, gidSharedAmmo, gidMineTimer, gidNoMineTimer, gidRandomMineTimer,
+            gidDamageModifier);
 
 const MAX_EVENT_STRINGS = 100;
 var trammo: array[TAmmoStrId] of ansistring;
@@ -59,15 +59,15 @@
 implementation
 uses uMisc, uRandom, uConsole;
 
-var	trevt: array[TEventId] of array [0..Pred(MAX_EVENT_STRINGS)] of ansistring;
-	trevt_n: array[TEventId] of integer;
+var trevt: array[TEventId] of array [0..Pred(MAX_EVENT_STRINGS)] of ansistring;
+    trevt_n: array[TEventId] of integer;
 
 procedure LoadLocale(FileName: shortstring);
 var s: shortstring;
     f: textfile;
     a, b, c: LongInt;
-	first: array[TEventId] of boolean;
-	e: TEventId;
+    first: array[TEventId] of boolean;
+    e: TEventId;
     loaded: boolean;
 begin
 loaded:= false;
@@ -120,10 +120,10 @@
 
 function GetEventString(e: TEventId): ansistring;
 begin
-	if trevt_n[e] = 0 then // no messages for this event type?
-		GetEventString:= '*missing translation*'
-	else
-		GetEventString:= trevt[e][GetRandom(trevt_n[e])]; // Pick a random message and return it
+    if trevt_n[e] = 0 then // no messages for this event type?
+        GetEventString:= '*missing translation*'
+    else
+        GetEventString:= trevt[e][GetRandom(trevt_n[e])]; // Pick a random message and return it
 end;
 
 function Format(fmt: shortstring; var arg: shortstring): shortstring;
--- a/hedgewars/uMisc.pas	Sat Mar 06 10:54:24 2010 +0000
+++ b/hedgewars/uMisc.pas	Sat Mar 06 10:59:20 2010 +0000
@@ -21,7 +21,7 @@
 unit uMisc;
 interface
 
-uses	SDLh, uConsts, uFloat,
+uses    SDLh, uConsts, uFloat,
 {$IFDEF GLES11}
     gles11;
 {$ELSE}
@@ -71,58 +71,58 @@
     cGearScrEdgesDist: LongInt;
     cAltDamage       : boolean;
 
-    GameTicks	: LongWord;
-    TrainingTimeInc	: Longword;
-    TrainingTimeInD	: Longword;
-    TrainingTimeInM	: Longword;
-    TrainingTimeMax	: Longword;
+    GameTicks   : LongWord;
+    TrainingTimeInc : Longword;
+    TrainingTimeInD : Longword;
+    TrainingTimeInM : Longword;
+    TrainingTimeMax : Longword;
 
     TimeTrialStartTime: Longword;
     TimeTrialStopTime : Longword;
     
-    recordFileName	: shortstring;
-    cShowFPS	: boolean;
-    cCaseFactor	: Longword;
-    cLandAdditions	: Longword;
-    cExplosives	: Longword;
-    cFullScreen	: boolean;
-    cReducedQuality	: boolean;
-    cLocaleFName	: shortstring;
-    cSeed		: shortstring;
-    cInitVolume	: LongInt;
-    cVolumeDelta	: LongInt;
-    cTimerInterval	: Longword;
-    cHasFocus	: boolean;
-    cInactDelay	: Longword;
+    recordFileName  : shortstring;
+    cShowFPS    : boolean;
+    cCaseFactor : Longword;
+    cLandAdditions  : Longword;
+    cExplosives : Longword;
+    cFullScreen : boolean;
+    cReducedQuality : boolean;
+    cLocaleFName    : shortstring;
+    cSeed       : shortstring;
+    cInitVolume : LongInt;
+    cVolumeDelta    : LongInt;
+    cTimerInterval  : Longword;
+    cHasFocus   : boolean;
+    cInactDelay : Longword;
 
-    bBetweenTurns	: boolean;
-    cHealthDecrease	: LongWord;
-    bWaterRising	: Boolean;
+    bBetweenTurns   : boolean;
+    cHealthDecrease : LongWord;
+    bWaterRising    : Boolean;
 
-    ShowCrosshair	: boolean;
+    ShowCrosshair   : boolean;
     CursorMovementX : Integer;
     CursorMovementY : Integer;
-    cDrownSpeed	: hwFloat;
-    cMaxWindSpeed	: hwFloat;
-    cWindSpeed	: hwFloat;
-    cGravity	: hwFloat;
-    cDamageModifier	: hwFloat;
-    cLaserSighting	: boolean;
-    cVampiric	: boolean;
-    cArtillery	: boolean;
+    cDrownSpeed : hwFloat;
+    cMaxWindSpeed   : hwFloat;
+    cWindSpeed  : hwFloat;
+    cGravity    : hwFloat;
+    cDamageModifier : hwFloat;
+    cLaserSighting  : boolean;
+    cVampiric   : boolean;
+    cArtillery  : boolean;
     WeaponTooltipTex : PTexture;
     cWeaponTooltips: boolean;
 
-    flagMakeCapture	: boolean;
+    flagMakeCapture : boolean;
 
-    InitStepsFlags	: Longword;
-    RealTicks	: Longword;
-    AttackBar	: LongInt;
+    InitStepsFlags  : Longword;
+    RealTicks   : Longword;
+    AttackBar   : LongInt;
 
-    WaterColorArray	: array[0..3] of HwColor4f;
+    WaterColorArray : array[0..3] of HwColor4f;
 
-    CursorPoint	: TPoint;
-    TargetPoint	: TPoint;
+    CursorPoint : TPoint;
+    TargetPoint : TPoint;
 
     TextureList : PTexture;
 
@@ -646,95 +646,95 @@
 procedure init_uMisc;
 {$IFNDEF IPHONEOS}var i: LongInt;{$ENDIF}
 begin
-    cDrownSpeed.QWordValue	:= 257698038;		// 0.06
-    cMaxWindSpeed.QWordValue:= 2147484;		// 0.0005
-    cWindSpeed.QWordValue	:= 429496;		// 0.0001
+    cDrownSpeed.QWordValue  := 257698038;       // 0.06
+    cMaxWindSpeed.QWordValue:= 2147484;     // 0.0005
+    cWindSpeed.QWordValue   := 429496;      // 0.0001
     cGravity                := cMaxWindSpeed;
     cDamageModifier         := _1;
     TargetPoint             := cTargetPointRef;
     TextureList             := nil;
     
     // int, longint longword and byte
-    CursorMovementX		:= 0;
-    CursorMovementY		:= 0;
-    GameTicks		:= 0;
-    TrainingTimeInc		:= 10000;
-    TrainingTimeInD		:= 500;
-    TrainingTimeInM		:= 5000;
-    TrainingTimeMax		:= 60000;
-    TimeTrialStartTime	:= 0;
-    TimeTrialStopTime	:= 0;
-    cWaterLine		:= LAND_HEIGHT;
-    cGearScrEdgesDist	:= 240;
-    cHealthDecrease		:= 0;
+    CursorMovementX     := 0;
+    CursorMovementY     := 0;
+    GameTicks       := 0;
+    TrainingTimeInc     := 10000;
+    TrainingTimeInD     := 500;
+    TrainingTimeInM     := 5000;
+    TrainingTimeMax     := 60000;
+    TimeTrialStartTime  := 0;
+    TimeTrialStopTime   := 0;
+    cWaterLine      := LAND_HEIGHT;
+    cGearScrEdgesDist   := 240;
+    cHealthDecrease     := 0;
 
-    GameFlags		:= 0;
-    TrainingFlags		:= 0;
-    TurnTimeLeft		:= 0;
-    cSuddenDTurns		:= 15;
-    cDamagePercent		:= 100;
-    cMineDudPercent		:= 0;
-    cTemplateFilter		:= 0;
+    GameFlags       := 0;
+    TrainingFlags       := 0;
+    TurnTimeLeft        := 0;
+    cSuddenDTurns       := 15;
+    cDamagePercent      := 100;
+    cMineDudPercent     := 0;
+    cTemplateFilter     := 0;
 
-    cHedgehogTurnTime	:= 45000;
-    cMinesTime		:= 3000;
-    cMaxAIThinkTime		:= 9000;
+    cHedgehogTurnTime   := 45000;
+    cMinesTime      := 3000;
+    cMaxAIThinkTime     := 9000;
 
-    cCloudsNumber		:= 9;
-    cScreenWidth		:= 1024;
-    cScreenHeight		:= 768;
-    cInitWidth		:= cScreenWidth;
-    cInitHeight		:= cScreenHeight;
-    cBits			:= 32;
-    cTagsMask		:= 0;
-    KBnum			:= 0;
-    InitStepsFlags		:= 0;
-    RealTicks		:= 0;
-    AttackBar		:= 0; // 0 - none, 1 - just bar at the right-down corner, 2 - like in WWP
+    cCloudsNumber       := 9;
+    cScreenWidth        := 1024;
+    cScreenHeight       := 768;
+    cInitWidth      := cScreenWidth;
+    cInitHeight     := cScreenHeight;
+    cBits           := 32;
+    cTagsMask       := 0;
+    KBnum           := 0;
+    InitStepsFlags      := 0;
+    RealTicks       := 0;
+    AttackBar       := 0; // 0 - none, 1 - just bar at the right-down corner, 2 - like in WWP
     
     // tgametype and glfloat and string
-    GameState		:= Low(TGameState);
-    GameType		:= gmtLocal;
-    zoom			:= 2.0;
-    ZoomValue		:= 2.0;
-    cBitsStr		:= '32';
-    WeaponTooltipTex	:= nil;
+    GameState       := Low(TGameState);
+    GameType        := gmtLocal;
+    zoom            := 2.0;
+    ZoomValue       := 2.0;
+    cBitsStr        := '32';
+    WeaponTooltipTex    := nil;
 
     // booleans
-    cLaserSighting		:= false;
-    cVampiric		:= false;
-    cArtillery		:= false;
-    flagMakeCapture		:= false;
-    bBetweenTurns		:= false;
-    bWaterRising		:= false;
-    isCursorVisible		:= false;
-    isTerminated		:= false;
-    isInLag			:= false;
-    isPaused		:= false;
-    isMusicEnabled		:= false;
-    isInMultiShoot		:= false;
-    isSpeed			:= false;
-    fastUntilLag		:= false;
-    cVSyncInUse		:= true;	
-    isSoundEnabled		:= true;
-    isSEBackup		:= true;
+    cLaserSighting      := false;
+    cVampiric       := false;
+    cArtillery      := false;
+    flagMakeCapture     := false;
+    bBetweenTurns       := false;
+    bWaterRising        := false;
+    isCursorVisible     := false;
+    isTerminated        := false;
+    isInLag         := false;
+    isPaused        := false;
+    isMusicEnabled      := false;
+    isInMultiShoot      := false;
+    isSpeed         := false;
+    fastUntilLag        := false;
+    cVSyncInUse     := true;    
+    isSoundEnabled      := true;
+    isSEBackup      := true;
     
     // init flags
-    recordFileName		:= '';
-    cShowFPS		:= false;
-    cCaseFactor		:= 5;  {0..9}
-    cLandAdditions		:= 4;
-    cExplosives		:= 2;
-    cFullScreen		:= false;
-    cReducedQuality		:= false;
-    cLocaleFName		:= 'en.txt';
-    cSeed			:= '';
-    cInitVolume		:= 50;
-    cVolumeDelta		:= 0;
-    cTimerInterval		:= 8;
-    cHasFocus		:= true;
-    cInactDelay		:= 1250;
-    cAltDamage		:= true;
+    recordFileName      := '';
+    cShowFPS        := false;
+    cCaseFactor     := 5;  {0..9}
+    cLandAdditions      := 4;
+    cExplosives     := 2;
+    cFullScreen     := false;
+    cReducedQuality     := false;
+    cLocaleFName        := 'en.txt';
+    cSeed           := '';
+    cInitVolume     := 50;
+    cVolumeDelta        := 0;
+    cTimerInterval      := 8;
+    cHasFocus       := true;
+    cInactDelay     := 1250;
+    cAltDamage      := true;
 {$IFDEF DEBUGFILE}
 {$I-}
 {$IFDEF IPHONEOS}
--- a/hedgewars/uRandom.pas	Sat Mar 06 10:54:24 2010 +0000
+++ b/hedgewars/uRandom.pas	Sat Mar 06 10:59:20 2010 +0000
@@ -92,13 +92,13 @@
 var i: LongInt;
 begin
 for i:= 0 to 63 do
-	AddFileLog('[' + inttostr(i) + '] = ' + inttostr(cirbuf[i]))
+    AddFileLog('[' + inttostr(i) + '] = ' + inttostr(cirbuf[i]))
 end;
 {$ENDIF}
 
 procedure init_uRandom;
 begin
-	n:= 54;
+    n:= 54;
 end;
 
 procedure free_uRandom;
--- a/hedgewars/uScript.pas	Sat Mar 06 10:54:24 2010 +0000
+++ b/hedgewars/uScript.pas	Sat Mar 06 10:59:20 2010 +0000
@@ -39,22 +39,22 @@
 implementation
 {$IFNDEF IPHONEOS}
 uses LuaPas in 'LuaPas.pas',
-	uConsole,
-	uMisc,
-	uConsts,
-	uGears,
-	uFloat,
-	uWorld,
-	uAmmos,
-	uSound,
-	uTeams,
-	uKeys,
-	typinfo;
-	
+    uConsole,
+    uMisc,
+    uConsts,
+    uGears,
+    uFloat,
+    uWorld,
+    uAmmos,
+    uSound,
+    uTeams,
+    uKeys,
+    typinfo;
+    
 var luaState : Plua_State;
-	ScriptAmmoStore : shortstring;
-	ScriptLoaded : boolean;
-	
+    ScriptAmmoStore : shortstring;
+    ScriptLoaded : boolean;
+    
 procedure ScriptPrepareAmmoStore; forward;
 procedure ScriptApplyAmmoStore; forward;
 procedure ScriptSetAmmo(ammo : TAmmoType; count, propability: Byte); forward;
@@ -68,237 +68,237 @@
 
 function lc_writelntoconsole(L : Plua_State) : LongInt; Cdecl;
 begin
-	if lua_gettop(L) = 1 then
-		begin
-		WriteLnToConsole('LUA: ' + lua_tostring(L ,1));
-		end
-	else
-		WriteLnToConsole('LUA: Wrong number of parameters passed to WriteLnToConsole!');
-	lc_writelntoconsole:= 0;
+    if lua_gettop(L) = 1 then
+        begin
+        WriteLnToConsole('LUA: ' + lua_tostring(L ,1));
+        end
+    else
+        WriteLnToConsole('LUA: Wrong number of parameters passed to WriteLnToConsole!');
+    lc_writelntoconsole:= 0;
 end;
 
 function lc_parsecommand(L : Plua_State) : LongInt; Cdecl;
 begin
-	if lua_gettop(L) = 1 then
-		begin
-		ParseCommand(lua_tostring(L ,1), true);
-		end
-	else
-		WriteLnToConsole('LUA: Wrong number of parameters passed to ParseCommand!');
-	lc_parsecommand:= 0;
+    if lua_gettop(L) = 1 then
+        begin
+        ParseCommand(lua_tostring(L ,1), true);
+        end
+    else
+        WriteLnToConsole('LUA: Wrong number of parameters passed to ParseCommand!');
+    lc_parsecommand:= 0;
 end;
 
 function lc_showmission(L : Plua_State) : LongInt; Cdecl;
 begin
-	if lua_gettop(L) = 5 then
-		begin
-		ShowMission(lua_tostring(L, 1), lua_tostring(L, 2), lua_tostring(L, 3), lua_tointeger(L, 4), lua_tointeger(L, 5));
-		end
-	else
-		WriteLnToConsole('LUA: Wrong number of parameters passed to ShowMission!');
-	lc_showmission:= 0;
+    if lua_gettop(L) = 5 then
+        begin
+        ShowMission(lua_tostring(L, 1), lua_tostring(L, 2), lua_tostring(L, 3), lua_tointeger(L, 4), lua_tointeger(L, 5));
+        end
+    else
+        WriteLnToConsole('LUA: Wrong number of parameters passed to ShowMission!');
+    lc_showmission:= 0;
 end;
 
 function lc_hidemission(L : Plua_State) : LongInt; Cdecl;
 begin
-	HideMission;
-	lc_hidemission:= 0;
+    HideMission;
+    lc_hidemission:= 0;
 end;
 
 function lc_addgear(L : Plua_State) : LongInt; Cdecl;
 var gear : PGear;
-	x, y, s, t: LongInt;
-	dx, dy: hwFloat;
-	gt: TGearType;
+    x, y, s, t: LongInt;
+    dx, dy: hwFloat;
+    gt: TGearType;
 begin
-	if lua_gettop(L) <> 7 then
-		begin
-		WriteLnToConsole('LUA: Wrong number of parameters passed to AddGear!');
-		lua_pushnil(L); // return value on stack (nil)
-		end
-	else
-		begin
-		x:= lua_tointeger(L, 1);
-		y:= lua_tointeger(L, 2);
-		gt:= TGearType(lua_tointeger(L, 3));
-		s:= lua_tointeger(L, 4);
-		dx:= int2hwFloat(round(lua_tonumber(L, 5) * 1000)) / 1000;
-		dy:= int2hwFloat(round(lua_tonumber(L, 6) * 1000)) / 1000;
-		t:= lua_tointeger(L, 7);
+    if lua_gettop(L) <> 7 then
+        begin
+        WriteLnToConsole('LUA: Wrong number of parameters passed to AddGear!');
+        lua_pushnil(L); // return value on stack (nil)
+        end
+    else
+        begin
+        x:= lua_tointeger(L, 1);
+        y:= lua_tointeger(L, 2);
+        gt:= TGearType(lua_tointeger(L, 3));
+        s:= lua_tointeger(L, 4);
+        dx:= int2hwFloat(round(lua_tonumber(L, 5) * 1000)) / 1000;
+        dy:= int2hwFloat(round(lua_tonumber(L, 6) * 1000)) / 1000;
+        t:= lua_tointeger(L, 7);
 
-		gear:= AddGear(x, y, gt, s, dx, dy, t);
-		lua_pushnumber(L, gear^.uid)
-		end;
-	lc_addgear:= 1; // 1 return value
+        gear:= AddGear(x, y, gt, s, dx, dy, t);
+        lua_pushnumber(L, gear^.uid)
+        end;
+    lc_addgear:= 1; // 1 return value
 end;
 
 function lc_getgeartype(L : Plua_State) : LongInt; Cdecl;
 var gear : PGear;
 begin
-	if lua_gettop(L) <> 1 then
-		begin
-		WriteLnToConsole('LUA: Wrong number of parameters passed to GetGearType!');
-		lua_pushnil(L); // return value on stack (nil)
-		end
-	else
-		begin
-		gear:= GearByUID(lua_tointeger(L, 1));
-		if gear <> nil then
-			lua_pushinteger(L, ord(gear^.Kind))
-		end;
-	lc_getgeartype:= 1
+    if lua_gettop(L) <> 1 then
+        begin
+        WriteLnToConsole('LUA: Wrong number of parameters passed to GetGearType!');
+        lua_pushnil(L); // return value on stack (nil)
+        end
+    else
+        begin
+        gear:= GearByUID(lua_tointeger(L, 1));
+        if gear <> nil then
+            lua_pushinteger(L, ord(gear^.Kind))
+        end;
+    lc_getgeartype:= 1
 end;
 
 function lc_sethealth(L : Plua_State) : LongInt; Cdecl;
 var gear : PGear;
 begin
-	if lua_gettop(L) <> 2 then
-		begin
-		WriteLnToConsole('LUA: Wrong number of parameters passed to SetHealth!');
-		end
-	else
-		begin
-		gear:= GearByUID(lua_tointeger(L, 1));
-		if (gear <> nil) and (gear^.Kind = gtHedgehog) then gear^.Health:= lua_tointeger(L, 2)
-		end;
-	lc_sethealth:= 0
+    if lua_gettop(L) <> 2 then
+        begin
+        WriteLnToConsole('LUA: Wrong number of parameters passed to SetHealth!');
+        end
+    else
+        begin
+        gear:= GearByUID(lua_tointeger(L, 1));
+        if (gear <> nil) and (gear^.Kind = gtHedgehog) then gear^.Health:= lua_tointeger(L, 2)
+        end;
+    lc_sethealth:= 0
 end;
 
 function lc_endgame(L : Plua_State) : LongInt; Cdecl;
 begin
-	GameState:= gsExit;
-	lc_endgame:= 0
+    GameState:= gsExit;
+    lc_endgame:= 0
 end;
 
 function lc_findplace(L : Plua_State) : LongInt; Cdecl;
 var gear: PGear;
-	fall: boolean;
-	left, right: LongInt;
+    fall: boolean;
+    left, right: LongInt;
 begin
-	if lua_gettop(L) <> 4 then
-		WriteLnToConsole('LUA: Wrong number of parameters passed to FindPlace!')
-	else
-		begin
-		gear:= GearByUID(lua_tointeger(L, 1));
-		fall:= lua_toboolean(L, 2);
-		left:= lua_tointeger(L, 3);
-		right:= lua_tointeger(L, 4);
-		if gear <> nil then
-			FindPlace(gear, fall, left, right)
-		end;
-	lc_findplace:= 0
+    if lua_gettop(L) <> 4 then
+        WriteLnToConsole('LUA: Wrong number of parameters passed to FindPlace!')
+    else
+        begin
+        gear:= GearByUID(lua_tointeger(L, 1));
+        fall:= lua_toboolean(L, 2);
+        left:= lua_tointeger(L, 3);
+        right:= lua_tointeger(L, 4);
+        if gear <> nil then
+            FindPlace(gear, fall, left, right)
+        end;
+    lc_findplace:= 0
 end;
 
 function lc_playsound(L : Plua_State) : LongInt; Cdecl;
 begin
-	if lua_gettop(L) <> 1 then
-		WriteLnToConsole('LUA: Wrong number of parameters passed to PlaySound!')
-	else
-		PlaySound(TSound(lua_tointeger(L, 1)));
-	lc_playsound:= 0;
+    if lua_gettop(L) <> 1 then
+        WriteLnToConsole('LUA: Wrong number of parameters passed to PlaySound!')
+    else
+        PlaySound(TSound(lua_tointeger(L, 1)));
+    lc_playsound:= 0;
 end;
 
 function lc_addteam(L : Plua_State) : LongInt; Cdecl;
 begin
-	if lua_gettop(L) <> 5 then
-		begin
-		WriteLnToConsole('LUA: Wrong number of parameters passed to AddTeam!');
-		//lua_pushnil(L)
-		end
-	else
-		begin
-		ParseCommand('addteam x ' + lua_tostring(L, 2) + ' ' + lua_tostring(L, 1), true);
-		ParseCommand('grave ' + lua_tostring(L, 3), true);
-		ParseCommand('fort ' + lua_tostring(L, 4), true);
-		ParseCommand('voicepack ' + lua_tostring(L, 5), true);
-		CurrentTeam^.Binds:= DefaultBinds;
-		// fails on x64
-		//lua_pushinteger(L, LongInt(CurrentTeam));
-		end;
-	lc_addteam:= 0;//1;
+    if lua_gettop(L) <> 5 then
+        begin
+        WriteLnToConsole('LUA: Wrong number of parameters passed to AddTeam!');
+        //lua_pushnil(L)
+        end
+    else
+        begin
+        ParseCommand('addteam x ' + lua_tostring(L, 2) + ' ' + lua_tostring(L, 1), true);
+        ParseCommand('grave ' + lua_tostring(L, 3), true);
+        ParseCommand('fort ' + lua_tostring(L, 4), true);
+        ParseCommand('voicepack ' + lua_tostring(L, 5), true);
+        CurrentTeam^.Binds:= DefaultBinds;
+        // fails on x64
+        //lua_pushinteger(L, LongInt(CurrentTeam));
+        end;
+    lc_addteam:= 0;//1;
 end;
 
 function lc_addhog(L : Plua_State) : LongInt; Cdecl;
 begin
-	if lua_gettop(L) <> 4 then
-		begin
-		WriteLnToConsole('LUA: Wrong number of parameters passed to AddHog!');
-		lua_pushnil(L)
-		end
-	else
-		begin
-		ParseCommand('addhh ' + lua_tostring(L, 2) + ' ' + lua_tostring(L, 3) + ' ' + lua_tostring(L, 1), true);
-		ParseCommand('hat ' + lua_tostring(L, 4), true);
-		lua_pushinteger(L, CurrentHedgehog^.Gear^.uid);
-		end;
-	lc_addhog:= 1;
+    if lua_gettop(L) <> 4 then
+        begin
+        WriteLnToConsole('LUA: Wrong number of parameters passed to AddHog!');
+        lua_pushnil(L)
+        end
+    else
+        begin
+        ParseCommand('addhh ' + lua_tostring(L, 2) + ' ' + lua_tostring(L, 3) + ' ' + lua_tostring(L, 1), true);
+        ParseCommand('hat ' + lua_tostring(L, 4), true);
+        lua_pushinteger(L, CurrentHedgehog^.Gear^.uid);
+        end;
+    lc_addhog:= 1;
 end;
 
 function lc_getgearposition(L : Plua_State) : LongInt; Cdecl;
 var gear: PGear;
 begin
-	if lua_gettop(L) <> 1 then
-		begin
-		WriteLnToConsole('LUA: Wrong number of parameters passed to GetGearPosition!');
-		lua_pushnil(L);
-		lua_pushnil(L)
-		end
-	else
-		begin
-		gear:= GearByUID(lua_tointeger(L, 1));
-		if gear <> nil then
-			begin
-			lua_pushinteger(L, hwRound(gear^.X));
-			lua_pushinteger(L, hwRound(gear^.Y))
-			end
-		end;
-	lc_getgearposition:= 2;
+    if lua_gettop(L) <> 1 then
+        begin
+        WriteLnToConsole('LUA: Wrong number of parameters passed to GetGearPosition!');
+        lua_pushnil(L);
+        lua_pushnil(L)
+        end
+    else
+        begin
+        gear:= GearByUID(lua_tointeger(L, 1));
+        if gear <> nil then
+            begin
+            lua_pushinteger(L, hwRound(gear^.X));
+            lua_pushinteger(L, hwRound(gear^.Y))
+            end
+        end;
+    lc_getgearposition:= 2;
 end;
 
 function lc_setgearposition(L : Plua_State) : LongInt; Cdecl;
 var gear: PGear;
-	x, y: LongInt;
+    x, y: LongInt;
 begin
-	if lua_gettop(L) <> 3 then
-		WriteLnToConsole('LUA: Wrong number of parameters passed to SetGearPosition!')
-	else
-		begin
-		gear:= GearByUID(lua_tointeger(L, 1));
-		if gear <> nil then
-			begin
-			x:= lua_tointeger(L, 2);
-			y:= lua_tointeger(L, 3);
-			gear^.X:= int2hwfloat(x);
-			gear^.Y:= int2hwfloat(y);
-			end
-		end;
-	lc_setgearposition:= 0
+    if lua_gettop(L) <> 3 then
+        WriteLnToConsole('LUA: Wrong number of parameters passed to SetGearPosition!')
+    else
+        begin
+        gear:= GearByUID(lua_tointeger(L, 1));
+        if gear <> nil then
+            begin
+            x:= lua_tointeger(L, 2);
+            y:= lua_tointeger(L, 3);
+            gear^.X:= int2hwfloat(x);
+            gear^.Y:= int2hwfloat(y);
+            end
+        end;
+    lc_setgearposition:= 0
 end;
 
 function lc_setammo(L : Plua_State) : LongInt; Cdecl;
 begin
-	if lua_gettop(L) <> 3 then
-		WriteLnToConsole('LUA: Wrong number of parameters passed to SetAmmo!')
-	else
-		begin
-		ScriptSetAmmo(TAmmoType(lua_tointeger(L, 1)), lua_tointeger(L, 2), lua_tointeger(L, 3));
-		end;
-	lc_setammo:= 0
+    if lua_gettop(L) <> 3 then
+        WriteLnToConsole('LUA: Wrong number of parameters passed to SetAmmo!')
+    else
+        begin
+        ScriptSetAmmo(TAmmoType(lua_tointeger(L, 1)), lua_tointeger(L, 2), lua_tointeger(L, 3));
+        end;
+    lc_setammo:= 0
 end;
 ///////////////////
 
 procedure ScriptPrintStack;
 var n, i : LongInt;
 begin
-	n:= lua_gettop(luaState);
-	WriteLnToConsole('LUA: Stack (' + inttostr(n) + ' elements):');
-	for i:= 1 to n do
-		if not lua_isboolean(luaState, i) then
-			WriteLnToConsole('LUA:  ' + inttostr(i) + ': ' + lua_tostring(luaState, i))
-		else if lua_toboolean(luaState, i) then
-			WriteLnToConsole('LUA:  ' + inttostr(i) + ': true')
-		else
-			WriteLnToConsole('LUA:  ' + inttostr(i) + ': false');
+    n:= lua_gettop(luaState);
+    WriteLnToConsole('LUA: Stack (' + inttostr(n) + ' elements):');
+    for i:= 1 to n do
+        if not lua_isboolean(luaState, i) then
+            WriteLnToConsole('LUA:  ' + inttostr(i) + ': ' + lua_tostring(luaState, i))
+        else if lua_toboolean(luaState, i) then
+            WriteLnToConsole('LUA:  ' + inttostr(i) + ': true')
+        else
+            WriteLnToConsole('LUA:  ' + inttostr(i) + ': false');
 end;
 
 procedure ScriptClearStack;
@@ -334,76 +334,76 @@
 
 procedure ScriptOnGameInit;
 begin
-	// not required if there's no script to run
-	if not ScriptLoaded then
-		exit;
-			
-	// push game variables so they may be modified by the script
-	ScriptSetInteger('GameFlags', GameFlags);
-	ScriptSetString('Seed', cSeed);
-	ScriptSetInteger('TurnTime', cHedgehogTurnTime);
-	ScriptSetInteger('CaseFreq', cCaseFactor);
-	ScriptSetInteger('LandAdds', cLandAdditions);
-	ScriptSetInteger('Delay', cInactDelay);
-	ScriptSetString('Map', '');
-	ScriptSetString('Theme', '');
+    // not required if there's no script to run
+    if not ScriptLoaded then
+        exit;
+            
+    // push game variables so they may be modified by the script
+    ScriptSetInteger('GameFlags', GameFlags);
+    ScriptSetString('Seed', cSeed);
+    ScriptSetInteger('TurnTime', cHedgehogTurnTime);
+    ScriptSetInteger('CaseFreq', cCaseFactor);
+    ScriptSetInteger('LandAdds', cLandAdditions);
+    ScriptSetInteger('Delay', cInactDelay);
+    ScriptSetString('Map', '');
+    ScriptSetString('Theme', '');
 
-	ScriptCall('onGameInit');
-	
-	// pop game variables
-	ParseCommand('seed ' + ScriptGetString('Seed'), true);
-	ParseCommand('$gmflags ' + ScriptGetString('GameFlags'), true);
-	ParseCommand('$turntime ' + ScriptGetString('TurnTime'), true);
-	ParseCommand('$casefreq ' + ScriptGetString('CaseFreq'), true);
-	ParseCommand('$landadds ' + ScriptGetString('LandAdds'), true);
-	ParseCommand('$delay ' + ScriptGetString('Delay'), true);
-	if ScriptGetString('Map') <> '' then
-		ParseCommand('map ' + ScriptGetString('Map'), true);
-	if ScriptGetString('Theme') <> '' then
-		ParseCommand('theme ' + ScriptGetString('Theme'), true);	
+    ScriptCall('onGameInit');
+    
+    // pop game variables
+    ParseCommand('seed ' + ScriptGetString('Seed'), true);
+    ParseCommand('$gmflags ' + ScriptGetString('GameFlags'), true);
+    ParseCommand('$turntime ' + ScriptGetString('TurnTime'), true);
+    ParseCommand('$casefreq ' + ScriptGetString('CaseFreq'), true);
+    ParseCommand('$landadds ' + ScriptGetString('LandAdds'), true);
+    ParseCommand('$delay ' + ScriptGetString('Delay'), true);
+    if ScriptGetString('Map') <> '' then
+        ParseCommand('map ' + ScriptGetString('Map'), true);
+    if ScriptGetString('Theme') <> '' then
+        ParseCommand('theme ' + ScriptGetString('Theme'), true);    
 
-	ScriptPrepareAmmoStore;
-	ScriptCall('onAmmoStoreInit');
-	ScriptApplyAmmoStore;
+    ScriptPrepareAmmoStore;
+    ScriptCall('onAmmoStoreInit');
+    ScriptApplyAmmoStore;
 end;
 
 procedure ScriptLoad(name : shortstring);
 var ret : LongInt;
 begin
-	ret:= luaL_loadfile(luaState, Str2PChar(name));
-	if ret <> 0 then
-		WriteLnToConsole('LUA: Failed to load ' + name + '(error ' + IntToStr(ret) + ')')
-	else
-		begin
-		WriteLnToConsole('LUA: ' + name + ' loaded');
-		// call the script file
-		lua_pcall(luaState, 0, 0, 0);
-		ScriptLoaded:= true
-		end
+    ret:= luaL_loadfile(luaState, Str2PChar(name));
+    if ret <> 0 then
+        WriteLnToConsole('LUA: Failed to load ' + name + '(error ' + IntToStr(ret) + ')')
+    else
+        begin
+        WriteLnToConsole('LUA: ' + name + ' loaded');
+        // call the script file
+        lua_pcall(luaState, 0, 0, 0);
+        ScriptLoaded:= true
+        end
 end;
 
 procedure SetGlobals;
 begin
-	ScriptSetInteger('TurnTimeLeft', TurnTimeLeft);
+    ScriptSetInteger('TurnTimeLeft', TurnTimeLeft);
 end;
 
 procedure GetGlobals;
 begin
-	TurnTimeLeft:= ScriptGetInteger('TurnTimeLeft');
+    TurnTimeLeft:= ScriptGetInteger('TurnTimeLeft');
 end;
 
 procedure ScriptCall(fname : shortstring);
 begin
-	if not ScriptLoaded then
-		exit;
-	SetGlobals;
-	lua_getglobal(luaState, Str2PChar(fname));
-	if lua_pcall(luaState, 0, 0, 0) <> 0 then
-		begin
-		WriteLnToConsole('LUA: Error while calling ' + fname + ': ' + lua_tostring(luaState, -1));
-		lua_pop(luaState, 1)
-		end;
-	GetGlobals;
+    if not ScriptLoaded then
+        exit;
+    SetGlobals;
+    lua_getglobal(luaState, Str2PChar(fname));
+    if lua_pcall(luaState, 0, 0, 0) <> 0 then
+        begin
+        WriteLnToConsole('LUA: Error while calling ' + fname + ': ' + lua_tostring(luaState, -1));
+        lua_pop(luaState, 1)
+        end;
+    GetGlobals;
 end;
 
 function ScriptCall(fname : shortstring; par1: LongInt) : LongInt;
@@ -423,26 +423,26 @@
 
 function ScriptCall(fname : shortstring; par1, par2, par3, par4 : LongInt) : LongInt;
 begin
-	if not ScriptLoaded then
-		exit;
-	SetGlobals;
-	lua_getglobal(luaState, Str2PChar(fname));
-	lua_pushinteger(luaState, par1);
-	lua_pushinteger(luaState, par2);
-	lua_pushinteger(luaState, par3);
-	lua_pushinteger(luaState, par4);
-	ScriptCall:= 0;
-	if lua_pcall(luaState, 4, 1, 0) <> 0 then
-		begin
-		WriteLnToConsole('LUA: Error while calling ' + fname + ': ' + lua_tostring(luaState, -1));
-		lua_pop(luaState, 1)
-		end
-	else
-		begin
-		ScriptCall:= lua_tointeger(luaState, -1);
-		lua_pop(luaState, 1)
-		end;
-	GetGlobals;
+    if not ScriptLoaded then
+        exit;
+    SetGlobals;
+    lua_getglobal(luaState, Str2PChar(fname));
+    lua_pushinteger(luaState, par1);
+    lua_pushinteger(luaState, par2);
+    lua_pushinteger(luaState, par3);
+    lua_pushinteger(luaState, par4);
+    ScriptCall:= 0;
+    if lua_pcall(luaState, 4, 1, 0) <> 0 then
+        begin
+        WriteLnToConsole('LUA: Error while calling ' + fname + ': ' + lua_tostring(luaState, -1));
+        lua_pop(luaState, 1)
+        end
+    else
+        begin
+        ScriptCall:= lua_tointeger(luaState, -1);
+        lua_pop(luaState, 1)
+        end;
+    GetGlobals;
 end;
 
 procedure ScriptPrepareAmmoStore;
@@ -450,20 +450,20 @@
 begin
 ScriptAmmoStore:= '';
 for i:=1 to ord(High(TAmmoType)) do
-	ScriptAmmoStore:= ScriptAmmoStore + '0000';
+    ScriptAmmoStore:= ScriptAmmoStore + '0000';
 end;
 
 procedure ScriptSetAmmo(ammo : TAmmoType; count, propability: Byte);
 begin
 if (ord(ammo) < 1) or (count > 9) or (count < 0) or (propability < 0) or (propability > 8) then
-	exit;
+    exit;
 ScriptAmmoStore[ord(ammo)]:= inttostr(count)[1];
 ScriptAmmoStore[ord(ammo) + ord(high(TAmmoType))]:= inttostr(propability)[1];
 end;
 
 procedure ScriptApplyAmmoStore;
 begin
-	AddAmmoStore(ScriptAmmoStore);
+    AddAmmoStore(ScriptAmmoStore);
 end;
 
 // small helper functions making registering enums a lot easier
@@ -485,8 +485,8 @@
 
 procedure init_uScript;
 var at : TGearType;
-	am : TAmmoType;
-	st : TSound;
+    am : TAmmoType;
+    st : TSound;
 begin
 // initialize lua
 luaState:= lua_open;
@@ -519,16 +519,16 @@
 
 // register gear types
 for at:= Low(TGearType) to High(TGearType) do
-	ScriptSetInteger(str(at), ord(at));
+    ScriptSetInteger(str(at), ord(at));
 
 // register sounds
 for st:= Low(TSound) to High(TSound) do
-	ScriptSetInteger(str(st), ord(st));
+    ScriptSetInteger(str(st), ord(st));
 
 // register ammo types
 for am:= Low(TAmmoType) to High(TAmmoType) do
-	ScriptSetInteger(str(am), ord(am));
-	
+    ScriptSetInteger(str(am), ord(am));
+    
 // register functions
 lua_register(luaState, 'AddGear', @lc_addgear);
 lua_register(luaState, 'WriteLnToConsole', @lc_writelntoconsole);
--- a/hedgewars/uSound.pas	Sat Mar 06 10:54:24 2010 +0000
+++ b/hedgewars/uSound.pas	Sat Mar 06 10:59:20 2010 +0000
@@ -23,10 +23,10 @@
 uses SDLh, uConsts;
 
 type PVoicepack = ^TVoicepack;
-	TVoicepack = record
-		name: shortstring;
-		chunks: array [TSound] of PMixChunk;
-		end;
+    TVoicepack = record
+        name: shortstring;
+        chunks: array [TSound] of PMixChunk;
+        end;
 
 var MusicFN: shortstring;
 
@@ -64,10 +64,10 @@
 begin
 i:= 0;
 while (voicepacks[i].name <> name) and (voicepacks[i].name <> '') do
-	begin
-	inc(i);
-	TryDo(i <= cMaxTeams, 'Engine bug: AskForVoicepack i > cMaxTeams', true)
-	end;
+    begin
+    inc(i);
+    TryDo(i <= cMaxTeams, 'Engine bug: AskForVoicepack i > cMaxTeams', true)
+    end;
 
 voicepacks[i].name:= name;
 AskForVoicepack:= @voicepacks[i]
@@ -76,37 +76,37 @@
 procedure InitSound;
 var i: TSound;
 begin
-	if not isSoundEnabled then exit;
-	WriteToConsole('Init sound...');
-	isSoundEnabled:= SDL_InitSubSystem(SDL_INIT_AUDIO) >= 0;
+    if not isSoundEnabled then exit;
+    WriteToConsole('Init sound...');
+    isSoundEnabled:= SDL_InitSubSystem(SDL_INIT_AUDIO) >= 0;
 
-	if isSoundEnabled then
-		isSoundEnabled:= Mix_OpenAudio(44100, $8010, 2, 1024) = 0;
+    if isSoundEnabled then
+        isSoundEnabled:= Mix_OpenAudio(44100, $8010, 2, 1024) = 0;
 
-	if isSoundEnabled then
-		WriteLnToConsole(msgOK)
-	else
-		WriteLnToConsole(msgFailed);
+    if isSoundEnabled then
+        WriteLnToConsole(msgOK)
+    else
+        WriteLnToConsole(msgFailed);
 
-	Mix_AllocateChannels(Succ(chanTPU));
-	if isMusicEnabled then
-		Mix_VolumeMusic(50);
-	for i:= Low(TSound) to High(TSound) do
-		lastChan[i]:= -1;
+    Mix_AllocateChannels(Succ(chanTPU));
+    if isMusicEnabled then
+        Mix_VolumeMusic(50);
+    for i:= Low(TSound) to High(TSound) do
+        lastChan[i]:= -1;
 
-	Volume:= 0;
-	ChangeVolume(cInitVolume)
+    Volume:= 0;
+    ChangeVolume(cInitVolume)
 end;
 
 procedure ReleaseSound;
 var i: TSound;
-	t: Longword;
+    t: Longword;
 begin
 for t:= 0 to cMaxTeams do
-	if voicepacks[t].name <> '' then
-		for i:= Low(TSound) to High(TSound) do
-			if voicepacks[t].chunks[i] <> nil then
-				Mix_FreeChunk(voicepacks[t].chunks[i]);
+    if voicepacks[t].name <> '' then
+        for i:= Low(TSound) to High(TSound) do
+            if voicepacks[t].chunks[i] <> nil then
+                Mix_FreeChunk(voicepacks[t].chunks[i]);
 
 Mix_FreeMusic(Mus);
 Mix_CloseAudio();
@@ -114,50 +114,50 @@
 
 procedure SoundLoad;
 var i: TSound;
-	s: shortstring;
-	t: Longword;
+    s: shortstring;
+    t: Longword;
 begin
-	if not isSoundEnabled then exit;
+    if not isSoundEnabled then exit;
 
 {$IFDEF SDL_MIXER_NEWER}
-	WriteToConsole('Init SDL_mixer... ');
-	SDLTry(Mix_Init(MIX_INIT_OGG) <> 0, true);
-	WriteLnToConsole(msgOK);
+    WriteToConsole('Init SDL_mixer... ');
+    SDLTry(Mix_Init(MIX_INIT_OGG) <> 0, true);
+    WriteLnToConsole(msgOK);
 {$ENDIF}
 
-	defVoicepack:= AskForVoicepack('Default');
+    defVoicepack:= AskForVoicepack('Default');
 
 for i:= Low(TSound) to High(TSound) do
-	if (Soundz[i].Path <> ptVoices) and (Soundz[i].FileName <> '') then
-		begin
-		s:= Pathz[Soundz[i].Path] + '/' + Soundz[i].FileName;
-		WriteToConsole(msgLoading + s + ' ');
-		defVoicepack^.chunks[i]:= Mix_LoadWAV_RW(SDL_RWFromFile(Str2PChar(s), 'rb'), 1);
-		TryDo(defVoicepack^.chunks[i] <> nil, msgFailed, true);
-		WriteLnToConsole(msgOK);
-		end;
+    if (Soundz[i].Path <> ptVoices) and (Soundz[i].FileName <> '') then
+        begin
+        s:= Pathz[Soundz[i].Path] + '/' + Soundz[i].FileName;
+        WriteToConsole(msgLoading + s + ' ');
+        defVoicepack^.chunks[i]:= Mix_LoadWAV_RW(SDL_RWFromFile(Str2PChar(s), 'rb'), 1);
+        TryDo(defVoicepack^.chunks[i] <> nil, msgFailed, true);
+        WriteLnToConsole(msgOK);
+        end;
 
 for t:= 0 to cMaxTeams do
-	if voicepacks[t].name <> '' then
-		for i:= Low(TSound) to High(TSound) do
-			if (Soundz[i].Path = ptVoices) and (Soundz[i].FileName <> '') then
-				begin
-				s:= Pathz[Soundz[i].Path] + '/' + voicepacks[t].name + '/' + Soundz[i].FileName;
-				WriteToConsole(msgLoading + s + ' ');
-				voicepacks[t].chunks[i]:= Mix_LoadWAV_RW(SDL_RWFromFile(Str2PChar(s), 'rb'), 1);
-				if voicepacks[t].chunks[i] = nil then
-					WriteLnToConsole(msgFailed)
-				else
-					WriteLnToConsole(msgOK)
-				end;
+    if voicepacks[t].name <> '' then
+        for i:= Low(TSound) to High(TSound) do
+            if (Soundz[i].Path = ptVoices) and (Soundz[i].FileName <> '') then
+                begin
+                s:= Pathz[Soundz[i].Path] + '/' + voicepacks[t].name + '/' + Soundz[i].FileName;
+                WriteToConsole(msgLoading + s + ' ');
+                voicepacks[t].chunks[i]:= Mix_LoadWAV_RW(SDL_RWFromFile(Str2PChar(s), 'rb'), 1);
+                if voicepacks[t].chunks[i] = nil then
+                    WriteLnToConsole(msgFailed)
+                else
+                    WriteLnToConsole(msgOK)
+                end;
 {$IFDEF SDL_MIXER_NEWER}
-	Mix_Quit();
-{$ENDIF}	
+    Mix_Quit();
+{$ENDIF}    
 end;
 
 procedure PlaySound(snd: TSound);
 begin
-	PlaySound(snd, nil);
+    PlaySound(snd, nil);
 end;
 
 procedure PlaySound(snd: TSound; voicepack: PVoicepack);
@@ -165,38 +165,38 @@
 if (not isSoundEnabled) or fastUntilLag then exit;
 
 if (voicepack <> nil) and (voicepack^.chunks[snd] <> nil) then
-	lastChan[snd]:= Mix_PlayChannelTimed(-1, voicepack^.chunks[snd], 0, -1)
+    lastChan[snd]:= Mix_PlayChannelTimed(-1, voicepack^.chunks[snd], 0, -1)
 else
-	lastChan[snd]:= Mix_PlayChannelTimed(-1, defVoicepack^.chunks[snd], 0, -1)
+    lastChan[snd]:= Mix_PlayChannelTimed(-1, defVoicepack^.chunks[snd], 0, -1)
 end;
 
 function LoopSound(snd: TSound): LongInt;
 begin
-	LoopSound:= LoopSound(snd, nil)
+    LoopSound:= LoopSound(snd, nil)
 end;
 
 function LoopSound(snd: TSound; voicepack: PVoicepack): LongInt;
 begin
 if (not isSoundEnabled) or fastUntilLag then
-	begin
-	LoopSound:= -1;
-	exit
-	end;
+    begin
+    LoopSound:= -1;
+    exit
+    end;
 
 if (voicepack <> nil) and (voicepack^.chunks[snd] <> nil) then
-	LoopSound:= Mix_PlayChannelTimed(-1, voicepack^.chunks[snd], -1, -1)
+    LoopSound:= Mix_PlayChannelTimed(-1, voicepack^.chunks[snd], -1, -1)
 else
-	LoopSound:= Mix_PlayChannelTimed(-1, defVoicepack^.chunks[snd], -1, -1)
+    LoopSound:= Mix_PlayChannelTimed(-1, defVoicepack^.chunks[snd], -1, -1)
 end;
 
 procedure StopSound(snd: TSound);
 begin
 if not isSoundEnabled then exit;
 if (lastChan[snd] <> -1) and (Mix_Playing(lastChan[snd]) <> 0) then
-	begin
-	Mix_HaltChannel(lastChan[snd]);
-	lastChan[snd]:= -1;
-	end;
+    begin
+    Mix_HaltChannel(lastChan[snd]);
+    lastChan[snd]:= -1;
+    end;
 end;
 
 procedure StopSound(chn: LongInt);
@@ -209,8 +209,8 @@
 var s: shortstring;
 begin
 if (not isSoundEnabled)
-	or (MusicFN = '')
-	or (not isMusicEnabled) then exit;
+    or (MusicFN = '')
+    or (not isMusicEnabled) then exit;
 
 s:= PathPrefix + '/Music/' + MusicFN;
 WriteToConsole(msgLoading + s + ' ');
@@ -225,7 +225,7 @@
 function ChangeVolume(voldelta: LongInt): LongInt;
 begin
 if not isSoundEnabled then
-	exit(0);
+    exit(0);
 
 inc(Volume, voldelta);
 if Volume < 0 then Volume:= 0;
@@ -251,7 +251,7 @@
 
 procedure init_uSound;
 begin
-	MusicFN:='';
+    MusicFN:='';
 end;
 
 procedure free_uSound;
--- a/hedgewars/uStats.pas	Sat Mar 06 10:54:24 2010 +0000
+++ b/hedgewars/uStats.pas	Sat Mar 06 10:59:20 2010 +0000
@@ -49,41 +49,41 @@
 implementation
 uses uTeams, uSound, uMisc, uLocale, uWorld;
 var DamageGiven : Longword = 0;
-	DamageClan  : Longword = 0;
-	DamageTotal : Longword = 0;
-	KillsClan   : LongWord = 0;
-	Kills       : LongWord = 0;
-	KillsTotal  : LongWord = 0;
-	AmmoUsedCount : Longword = 0;
-	AmmoDamagingUsed : boolean = false;
-	SkippedTurns: LongWord = 0;
-	isTurnSkipped: boolean = false;
-	vpHurtSameClan: PVoicepack = nil;
-	vpHurtEnemy: PVoicepack = nil;
+    DamageClan  : Longword = 0;
+    DamageTotal : Longword = 0;
+    KillsClan   : LongWord = 0;
+    Kills       : LongWord = 0;
+    KillsTotal  : LongWord = 0;
+    AmmoUsedCount : Longword = 0;
+    AmmoDamagingUsed : boolean = false;
+    SkippedTurns: LongWord = 0;
+    isTurnSkipped: boolean = false;
+    vpHurtSameClan: PVoicepack = nil;
+    vpHurtEnemy: PVoicepack = nil;
 
 procedure HedgehogDamaged(Gear: PGear);
 begin
 if CurrentHedgehog^.Team^.Clan = PHedgehog(Gear^.Hedgehog)^.Team^.Clan then
-	vpHurtSameClan:= CurrentHedgehog^.Team^.voicepack
+    vpHurtSameClan:= CurrentHedgehog^.Team^.voicepack
 else
-	vpHurtEnemy:= PHedgehog(Gear^.Hedgehog)^.Team^.voicepack;
+    vpHurtEnemy:= PHedgehog(Gear^.Hedgehog)^.Team^.voicepack;
 
 if bBetweenTurns then exit;
 
 //////////////////////////
 
 if Gear <> CurrentHedgehog^.Gear then
-	inc(CurrentHedgehog^.stats.StepDamageGiven, Gear^.Damage);
+    inc(CurrentHedgehog^.stats.StepDamageGiven, Gear^.Damage);
 
 if CurrentHedgehog^.Team^.Clan = PHedgehog(Gear^.Hedgehog)^.Team^.Clan then inc(DamageClan, Gear^.Damage);
 
 if Gear^.Health <= Gear^.Damage then
-	begin
-	inc(CurrentHedgehog^.stats.StepKills);
-	inc(Kills);
-	inc(KillsTotal);
-	if CurrentHedgehog^.Team^.Clan = PHedgehog(Gear^.Hedgehog)^.Team^.Clan then inc(KillsClan);
-	end;
+    begin
+    inc(CurrentHedgehog^.stats.StepKills);
+    inc(Kills);
+    inc(KillsTotal);
+    if CurrentHedgehog^.Team^.Clan = PHedgehog(Gear^.Hedgehog)^.Team^.Clan then inc(KillsClan);
+    end;
 
 inc(PHedgehog(Gear^.Hedgehog)^.stats.StepDamageRecv, Gear^.Damage);
 inc(DamageGiven, Gear^.Damage);
@@ -103,68 +103,68 @@
 
 inc(FinishedTurnsTotal);
 if FinishedTurnsTotal <> 0 then
-	begin
-	inc(CurrentHedgehog^.stats.FinishedTurns);
+    begin
+    inc(CurrentHedgehog^.stats.FinishedTurns);
 
-	if (DamageGiven = DamageTotal) and (DamageTotal > 0) then
-		PlaySound(sndFirstBlood, CurrentTeam^.voicepack)
+    if (DamageGiven = DamageTotal) and (DamageTotal > 0) then
+        PlaySound(sndFirstBlood, CurrentTeam^.voicepack)
 
-	else if CurrentHedgehog^.stats.StepDamageRecv > 0 then
-		begin
-		PlaySound(sndStupid, PreviousTeam^.voicepack);
-		if DamageGiven = CurrentHedgehog^.stats.StepDamageRecv then AddCaption(Format(GetEventString(eidHurtSelf), CurrentHedgehog^.Name), cWhiteColor, capgrpMessage);
-		end
-	else if DamageClan <> 0 then
-		if DamageTotal > DamageClan then
-			if random(2) = 0 then
-				PlaySound(sndNutter, CurrentTeam^.voicepack)
-			else
-				PlaySound(sndWatchIt, vpHurtSameClan)
-		else
-			if random(2) = 0 then
-				PlaySound(sndSameTeam, vpHurtSameClan)
-			else
-				PlaySound(sndTraitor, vpHurtSameClan)
-	else if DamageGiven <> 0 then
-		if Kills > 0 then
-			PlaySound(sndEnemyDown, CurrentTeam^.voicepack)
-		else
-			PlaySound(sndRegret, vpHurtEnemy)
+    else if CurrentHedgehog^.stats.StepDamageRecv > 0 then
+        begin
+        PlaySound(sndStupid, PreviousTeam^.voicepack);
+        if DamageGiven = CurrentHedgehog^.stats.StepDamageRecv then AddCaption(Format(GetEventString(eidHurtSelf), CurrentHedgehog^.Name), cWhiteColor, capgrpMessage);
+        end
+    else if DamageClan <> 0 then
+        if DamageTotal > DamageClan then
+            if random(2) = 0 then
+                PlaySound(sndNutter, CurrentTeam^.voicepack)
+            else
+                PlaySound(sndWatchIt, vpHurtSameClan)
+        else
+            if random(2) = 0 then
+                PlaySound(sndSameTeam, vpHurtSameClan)
+            else
+                PlaySound(sndTraitor, vpHurtSameClan)
+    else if DamageGiven <> 0 then
+        if Kills > 0 then
+            PlaySound(sndEnemyDown, CurrentTeam^.voicepack)
+        else
+            PlaySound(sndRegret, vpHurtEnemy)
 
-	else if AmmoDamagingUsed then
-		PlaySound(sndMissed, PreviousTeam^.voicepack)
-	else if (AmmoUsedCount > 0) and not isTurnSkipped then
-		// nothing ?
-	else if isTurnSkipped then
-		begin
-		PlaySound(sndBoring, PreviousTeam^.voicepack);
-		AddCaption(Format(GetEventString(eidTurnSkipped), CurrentHedgehog^.Name), cWhiteColor, capgrpMessage);
-		end
-	else if not PlacingHogs then
-		PlaySound(sndCoward, PreviousTeam^.voicepack);
-	end;
+    else if AmmoDamagingUsed then
+        PlaySound(sndMissed, PreviousTeam^.voicepack)
+    else if (AmmoUsedCount > 0) and not isTurnSkipped then
+        // nothing ?
+    else if isTurnSkipped then
+        begin
+        PlaySound(sndBoring, PreviousTeam^.voicepack);
+        AddCaption(Format(GetEventString(eidTurnSkipped), CurrentHedgehog^.Name), cWhiteColor, capgrpMessage);
+        end
+    else if not PlacingHogs then
+        PlaySound(sndCoward, PreviousTeam^.voicepack);
+    end;
 
 
 for t:= 0 to Pred(TeamsCount) do // send even on zero turn
-	with TeamsArray[t]^ do
-		for i:= 0 to cMaxHHIndex do
-			with Hedgehogs[i].stats do
-				begin
-				inc(DamageRecv, StepDamageRecv);
-				inc(DamageGiven, StepDamageGiven);
-				if StepDamageRecv > MaxStepDamageRecv then MaxStepDamageRecv:= StepDamageRecv;
-				if StepDamageGiven > MaxStepDamageGiven then MaxStepDamageGiven:= StepDamageGiven;
-				if StepKills > MaxStepKills then MaxStepKills:= StepKills;
-				StepKills:= 0;
-				StepDamageRecv:= 0;
-				StepDamageGiven:= 0
-				end;
+    with TeamsArray[t]^ do
+        for i:= 0 to cMaxHHIndex do
+            with Hedgehogs[i].stats do
+                begin
+                inc(DamageRecv, StepDamageRecv);
+                inc(DamageGiven, StepDamageGiven);
+                if StepDamageRecv > MaxStepDamageRecv then MaxStepDamageRecv:= StepDamageRecv;
+                if StepDamageGiven > MaxStepDamageGiven then MaxStepDamageGiven:= StepDamageGiven;
+                if StepKills > MaxStepKills then MaxStepKills:= StepKills;
+                StepKills:= 0;
+                StepDamageRecv:= 0;
+                StepDamageGiven:= 0
+                end;
 
 for t:= 0 to Pred(ClansCount) do
-	with ClansArray[t]^ do
-		begin
-		SendStat(siClanHealth, inttostr(Color) + ' ' + inttostr(ClanHealth));
-		end;
+    with ClansArray[t]^ do
+        begin
+        SendStat(siClanHealth, inttostr(Color) + ' ' + inttostr(ClanHealth));
+        end;
 
 Kills:= 0;
 KillsClan:= 0;
@@ -191,38 +191,38 @@
 mskcnt:= 0;
 
 for t:= 0 to Pred(TeamsCount) do
-	with TeamsArray[t]^ do
-		begin
-		for i:= 0 to cMaxHHIndex do
-			begin
-			if Hedgehogs[i].stats.MaxStepDamageGiven > msd then
-				begin
-				msdhh:= @Hedgehogs[i];
-				msd:= Hedgehogs[i].stats.MaxStepDamageGiven
-				end;
-			if Hedgehogs[i].stats.MaxStepKills >= msk then
-				if Hedgehogs[i].stats.MaxStepKills = msk then
-					inc(mskcnt)
-				else
-					begin
-					mskcnt:= 1;
-					mskhh:= @Hedgehogs[i];
-					msk:= Hedgehogs[i].stats.MaxStepKills
-					end;
-			end
-		end;
+    with TeamsArray[t]^ do
+        begin
+        for i:= 0 to cMaxHHIndex do
+            begin
+            if Hedgehogs[i].stats.MaxStepDamageGiven > msd then
+                begin
+                msdhh:= @Hedgehogs[i];
+                msd:= Hedgehogs[i].stats.MaxStepDamageGiven
+                end;
+            if Hedgehogs[i].stats.MaxStepKills >= msk then
+                if Hedgehogs[i].stats.MaxStepKills = msk then
+                    inc(mskcnt)
+                else
+                    begin
+                    mskcnt:= 1;
+                    mskhh:= @Hedgehogs[i];
+                    msk:= Hedgehogs[i].stats.MaxStepKills
+                    end;
+            end
+        end;
 if msdhh <> nil then
-	SendStat(siMaxStepDamage, inttostr(msd) + ' ' + msdhh^.Name + ' (' + msdhh^.Team^.TeamName + ')');
+    SendStat(siMaxStepDamage, inttostr(msd) + ' ' + msdhh^.Name + ' (' + msdhh^.Team^.TeamName + ')');
 if mskcnt = 1 then
-	SendStat(siMaxStepKills, inttostr(msk) + ' ' + mskhh^.Name + ' (' + mskhh^.Team^.TeamName + ')');
+    SendStat(siMaxStepKills, inttostr(msk) + ' ' + mskhh^.Name + ' (' + mskhh^.Team^.TeamName + ')');
 
 if KilledHHs > 0 then SendStat(siKilledHHs, inttostr(KilledHHs));
 end;
 
 procedure init_uStats;
 begin
-	TotalRounds:= -1;
-	FinishedTurnsTotal:= -1;
+    TotalRounds:= -1;
+    FinishedTurnsTotal:= -1;
 end;
     
 procedure free_uStats;
--- a/hedgewars/uStore.pas	Sat Mar 06 10:54:24 2010 +0000
+++ b/hedgewars/uStore.pas	Sat Mar 06 10:59:20 2010 +0000
@@ -22,9 +22,9 @@
 interface
 uses sysutils, uConsts, uTeams, SDLh, uFloat,
 {$IFDEF GLES11}
-	gles11;
+    gles11;
 {$ELSE}
-	GL, GLext;
+    GL, GLext;
 {$ENDIF}
 
 
@@ -175,171 +175,171 @@
 procedure StoreLoad;
 var s: shortstring;
 
-	procedure WriteNames(Font: THWFont);
-	var t: LongInt;
-		i: LongInt;
-		r, rr: TSDL_Rect;
-		drY: LongInt;
-		texsurf, flagsurf, iconsurf: PSDL_Surface;
-	begin
-	r.x:= 0;
-	r.y:= 0;
-	drY:= - 4;
-	for t:= 0 to Pred(TeamsCount) do
-		with TeamsArray[t]^ do
-		begin
-		NameTagTex:= RenderStringTex(TeamName, Clan^.Color, Font);
+    procedure WriteNames(Font: THWFont);
+    var t: LongInt;
+        i: LongInt;
+        r, rr: TSDL_Rect;
+        drY: LongInt;
+        texsurf, flagsurf, iconsurf: PSDL_Surface;
+    begin
+    r.x:= 0;
+    r.y:= 0;
+    drY:= - 4;
+    for t:= 0 to Pred(TeamsCount) do
+        with TeamsArray[t]^ do
+        begin
+        NameTagTex:= RenderStringTex(TeamName, Clan^.Color, Font);
 
-		r.w:= cTeamHealthWidth + 5;
-		r.h:= NameTagTex^.h;
+        r.w:= cTeamHealthWidth + 5;
+        r.h:= 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);
+        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);
-		HealthTex:= Surface2Tex(texsurf, false);
-		SDL_FreeSurface(texsurf);
+        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);
+        HealthTex:= Surface2Tex(texsurf, false);
+        SDL_FreeSurface(texsurf);
 
-		r.x:= 0;
-		r.y:= 0;
-		r.w:= 32;
-		r.h:= 32;
-		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);
+        r.x:= 0;
+        r.y:= 0;
+        r.w:= 32;
+        r.h:= 32;
+        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);
 
-		r.w:= 26;
-		r.h:= 19;
+        r.w:= 26;
+        r.h:= 19;
 
-		DrawRoundRect(@r, cWhiteColor, cNearBlackColor, texsurf, true);
+        DrawRoundRect(@r, cWhiteColor, cNearBlackColor, texsurf, true);
 
-		// overwrite flag for cpu teams and keep players from using it
-		if (Hedgehogs[0].Gear <> nil) and (Hedgehogs[0].BotLevel > 0) then
-			Flag:= 'cpu'
-		else if Flag = 'cpu' then
-			Flag:= 'hedgewars';
-		
-		flagsurf:= LoadImage(Pathz[ptFlags] + '/' + Flag, ifNone);
-		if flagsurf = nil then
-			flagsurf:= LoadImage(Pathz[ptFlags] + '/hedgewars', ifNone);
-		TryDo(flagsurf <> nil, 'Failed to load flag "' + Flag + '" as well as the default flag', true);
-		copyToXY(flagsurf, texsurf, 2, 2);
-		SDL_FreeSurface(flagsurf);
-		
-		// restore black border pixels inside the flag
-		PLongwordArray(texsurf^.pixels)^[32 * 2 +  2]:= cNearBlackColor;
-		PLongwordArray(texsurf^.pixels)^[32 * 2 + 23]:= cNearBlackColor;
-		PLongwordArray(texsurf^.pixels)^[32 * 16 +  2]:= cNearBlackColor;
-		PLongwordArray(texsurf^.pixels)^[32 * 16 + 23]:= cNearBlackColor;
+        // overwrite flag for cpu teams and keep players from using it
+        if (Hedgehogs[0].Gear <> nil) and (Hedgehogs[0].BotLevel > 0) then
+            Flag:= 'cpu'
+        else if Flag = 'cpu' then
+            Flag:= 'hedgewars';
+        
+        flagsurf:= LoadImage(Pathz[ptFlags] + '/' + Flag, ifNone);
+        if flagsurf = nil then
+            flagsurf:= LoadImage(Pathz[ptFlags] + '/hedgewars', ifNone);
+        TryDo(flagsurf <> nil, 'Failed to load flag "' + Flag + '" as well as the default flag', true);
+        copyToXY(flagsurf, texsurf, 2, 2);
+        SDL_FreeSurface(flagsurf);
+        
+        // restore black border pixels inside the flag
+        PLongwordArray(texsurf^.pixels)^[32 * 2 +  2]:= cNearBlackColor;
+        PLongwordArray(texsurf^.pixels)^[32 * 2 + 23]:= cNearBlackColor;
+        PLongwordArray(texsurf^.pixels)^[32 * 16 +  2]:= cNearBlackColor;
+        PLongwordArray(texsurf^.pixels)^[32 * 16 + 23]:= cNearBlackColor;
 
-		FlagTex:= Surface2Tex(texsurf, false);
-		
-		dec(drY, r.h + 2);
-		DrawHealthY:= drY;
-		for i:= 0 to 7 do
-			with Hedgehogs[i] do
-				if Gear <> nil then
-					begin
-					NameTagTex:= RenderStringTex(Name, Clan^.Color, CheckCJKFont(Name,fnt16));
-					if Hat <> 'NoHat' then
-						begin
+        FlagTex:= Surface2Tex(texsurf, false);
+        
+        dec(drY, r.h + 2);
+        DrawHealthY:= drY;
+        for i:= 0 to 7 do
+            with Hedgehogs[i] do
+                if Gear <> nil then
+                    begin
+                    NameTagTex:= RenderStringTex(Name, Clan^.Color, CheckCJKFont(Name,fnt16));
+                    if Hat <> 'NoHat' then
+                        begin
                         texsurf:= nil;
                         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)
+                           texsurf:= LoadImage(Pathz[ptHats] + '/Reserved/' + Copy(Hat,9,Length(s)-8), ifNone)
                         else
-						   texsurf:= LoadImage(Pathz[ptHats] + '/' + Hat, ifNone);
-						if texsurf <> nil then
-							begin
-							HatTex:= Surface2Tex(texsurf, true);
-							SDL_FreeSurface(texsurf)
-							end
-						end
-					end;
-		end;
-	MissionIcons:= LoadImage(Pathz[ptGraphics] + '/missions', ifCritical);
-	iconsurf:= SDL_CreateRGBSurface(SDL_SWSURFACE, 28, 28, 32, RMask, GMask, BMask, AMask);
-	if iconsurf <> nil then
-		begin
-		r.x:= 0;
-		r.y:= 0;
-		r.w:= 28;
-		r.h:= 28;
-		DrawRoundRect(@r, cWhiteColor, cNearBlackColor, iconsurf, true);
-		ropeIconTex:= Surface2Tex(iconsurf, false);
-		SDL_FreeSurface(iconsurf)
-		end;
-	end;
+                           texsurf:= LoadImage(Pathz[ptHats] + '/' + Hat, ifNone);
+                        if texsurf <> nil then
+                            begin
+                            HatTex:= Surface2Tex(texsurf, true);
+                            SDL_FreeSurface(texsurf)
+                            end
+                        end
+                    end;
+        end;
+    MissionIcons:= LoadImage(Pathz[ptGraphics] + '/missions', ifCritical);
+    iconsurf:= SDL_CreateRGBSurface(SDL_SWSURFACE, 28, 28, 32, RMask, GMask, BMask, AMask);
+    if iconsurf <> nil then
+        begin
+        r.x:= 0;
+        r.y:= 0;
+        r.w:= 28;
+        r.h:= 28;
+        DrawRoundRect(@r, cWhiteColor, cNearBlackColor, iconsurf, true);
+        ropeIconTex:= Surface2Tex(iconsurf, false);
+        SDL_FreeSurface(iconsurf)
+        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);
+    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);
+    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);
+        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);
+        SDL_UpperBlit(tmpsurf, nil, texsurf, nil);
 
-		TryDo(tmpsurf^.format^.BytesPerPixel = 4, 'Ooops', true);
+        TryDo(tmpsurf^.format^.BytesPerPixel = 4, 'Ooops', true);
 
-		if SDL_MustLock(texsurf) then
-			SDLTry(SDL_LockSurface(texsurf) >= 0, 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]:= 0;
+        // 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]:= 0;
 
-		if SDL_MustLock(texsurf) then
-			SDL_UnlockSurface(texsurf);
+        if SDL_MustLock(texsurf) then
+            SDL_UnlockSurface(texsurf);
 
-		CrosshairTex:= Surface2Tex(texsurf, false);
-		SDL_FreeSurface(texsurf)
-		end;
+        CrosshairTex:= Surface2Tex(texsurf, false);
+        SDL_FreeSurface(texsurf)
+        end;
 
-	SDL_FreeSurface(tmpsurf)
-	end;
+    SDL_FreeSurface(tmpsurf)
+    end;
 
-	procedure InitHealth;
-	var i, t: LongInt;
-	begin
-	for t:= 0 to Pred(TeamsCount) do
-		if TeamsArray[t] <> nil then
-			with TeamsArray[t]^ do
-				begin
-				for i:= 0 to cMaxHHIndex do
-					if Hedgehogs[i].Gear <> nil then
-						RenderHealth(Hedgehogs[i]);
-				end
-	end;
+    procedure InitHealth;
+    var i, t: LongInt;
+    begin
+    for t:= 0 to Pred(TeamsCount) do
+        if TeamsArray[t] <> nil then
+            with TeamsArray[t]^ do
+                begin
+                for i:= 0 to cMaxHHIndex do
+                    if Hedgehogs[i].Gear <> nil then
+                        RenderHealth(Hedgehogs[i]);
+                end
+    end;
 
-	procedure LoadGraves;
-	var t: LongInt;
-		texsurf: PSDL_Surface;
-	begin
-	for t:= 0 to Pred(TeamsCount) do
-	if TeamsArray[t] <> nil then
-		with TeamsArray[t]^ do
-			begin
-			if GraveName = '' then GraveName:= 'Simple';
-			texsurf:= LoadImage(Pathz[ptGraves] + '/' + GraveName, ifCritical or ifTransparent);
-			GraveTex:= Surface2Tex(texsurf, false);
-			SDL_FreeSurface(texsurf)
-			end
-	end;
+    procedure LoadGraves;
+    var t: LongInt;
+        texsurf: PSDL_Surface;
+    begin
+    for t:= 0 to Pred(TeamsCount) do
+    if TeamsArray[t] <> nil then
+        with TeamsArray[t]^ do
+            begin
+            if GraveName = '' then GraveName:= 'Simple';
+            texsurf:= LoadImage(Pathz[ptGraves] + '/' + GraveName, ifCritical or ifTransparent);
+            GraveTex:= Surface2Tex(texsurf, false);
+            SDL_FreeSurface(texsurf)
+            end
+    end;
 
 var ii: TSprite;
     fi: THWFont;
@@ -349,15 +349,15 @@
 begin
 
 for fi:= Low(THWFont) to High(THWFont) do
-	with Fontz[fi] do
-		begin
-		s:= Pathz[ptFonts] + '/' + Name;
-		WriteToConsole(msgLoading + s + '... ');
-		Handle:= TTF_OpenFont(Str2PChar(s), Height);
-		SDLTry(Handle <> nil, true);
-		TTF_SetFontStyle(Handle, style);
-		WriteLnToConsole(msgOK)
-		end;
+    with Fontz[fi] do
+        begin
+        s:= Pathz[ptFonts] + '/' + Name;
+        WriteToConsole(msgLoading + s + '... ');
+        Handle:= TTF_OpenFont(Str2PChar(s), Height);
+        SDLTry(Handle <> nil, true);
+        TTF_SetFontStyle(Handle, style);
+        WriteLnToConsole(msgOK)
+        end;
 
 WriteNames(fnt16);
 MakeCrossHairs;
@@ -365,42 +365,42 @@
 
 AddProgress;
 for ii:= Low(TSprite) to High(TSprite) do
-	with SpritesData[ii] do
+    with SpritesData[ii] do
         // FIXME - add a sprite attribute
         if (not cReducedQuality) or (not (ii in [sprSky, sprSkyL, sprSkyR, sprHorizont, sprHorizontL, sprHorizontR, sprFlake])) then // FIXME: hack
-		begin
-			if AltPath = ptNone then
-				if ii in [sprHorizontL, sprHorizontR, sprSkyL, sprSkyR] then // FIXME: hack
-					tmpsurf:= LoadImage(Pathz[Path] + '/' + FileName, ifAlpha or ifTransparent or ifLowRes)
-				else
-					tmpsurf:= LoadImage(Pathz[Path] + '/' + FileName, ifAlpha or ifTransparent or ifCritical or ifLowRes)
-			else begin
-				tmpsurf:= LoadImage(Pathz[Path] + '/' + FileName, ifAlpha or ifTransparent);
-				if tmpsurf = nil then
-					tmpsurf:= LoadImage(Pathz[AltPath] + '/' + FileName, ifAlpha or ifCritical or ifTransparent);
-				end;
+        begin
+            if AltPath = ptNone then
+                if ii in [sprHorizontL, sprHorizontR, sprSkyL, sprSkyR] then // FIXME: hack
+                    tmpsurf:= LoadImage(Pathz[Path] + '/' + FileName, ifAlpha or ifTransparent or ifLowRes)
+                else
+                    tmpsurf:= LoadImage(Pathz[Path] + '/' + FileName, ifAlpha or ifTransparent or ifCritical or ifLowRes)
+            else begin
+                tmpsurf:= LoadImage(Pathz[Path] + '/' + FileName, ifAlpha or ifTransparent);
+                if tmpsurf = nil then
+                    tmpsurf:= LoadImage(Pathz[AltPath] + '/' + FileName, ifAlpha or ifCritical or ifTransparent);
+                end;
 
-			if tmpsurf <> nil then
-			begin
-				if imageWidth = 0 then imageWidth:= tmpsurf^.w;
-				if imageHeight = 0 then imageHeight:= tmpsurf^.h;
-				if Width = 0 then Width:= tmpsurf^.w;
-				if Height = 0 then Height:= tmpsurf^.h;
-				if (ii in [sprSky, sprSkyL, sprSkyR, sprHorizont, sprHorizontL, sprHorizontR]) then
-					Texture:= Surface2Tex(tmpsurf, true)
-				else
-					begin
-					Texture:= Surface2Tex(tmpsurf, false);
-					if (ii = sprWater) and not cReducedQuality then // HACK: We should include some sprite attribute to define the texture wrap directions
-					begin
-						glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
-					end;
-				end;
-				if saveSurf then Surface:= tmpsurf else SDL_FreeSurface(tmpsurf)
-				end
-			else
-				Surface:= nil
-		end;
+            if tmpsurf <> nil then
+            begin
+                if imageWidth = 0 then imageWidth:= tmpsurf^.w;
+                if imageHeight = 0 then imageHeight:= tmpsurf^.h;
+                if Width = 0 then Width:= tmpsurf^.w;
+                if Height = 0 then Height:= tmpsurf^.h;
+                if (ii in [sprSky, sprSkyL, sprSkyR, sprHorizont, sprHorizontL, sprHorizontR]) then
+                    Texture:= Surface2Tex(tmpsurf, true)
+                else
+                    begin
+                    Texture:= Surface2Tex(tmpsurf, false);
+                    if (ii = sprWater) and not cReducedQuality then // HACK: We should include some sprite attribute to define the texture wrap directions
+                    begin
+                        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+                    end;
+                end;
+                if saveSurf then Surface:= tmpsurf else SDL_FreeSurface(tmpsurf)
+                end
+            else
+                Surface:= nil
+        end;
 
 AddProgress;
 
@@ -418,22 +418,22 @@
 
 // name of weapons in ammo menu
 for ai:= Low(TAmmoType) to High(TAmmoType) do
-	with Ammoz[ai] do
-		begin
-		tmpsurf:= TTF_RenderUTF8_Blended(Fontz[CheckCJKFont(trAmmo[NameId],fnt16)].Handle, Str2PChar(trAmmo[NameId]), cWhiteColorChannels);
-		tmpsurf:= doSurfaceConversion(tmpsurf);
-		NameTex:= Surface2Tex(tmpsurf, false);
-		SDL_FreeSurface(tmpsurf)
-		end;
+    with Ammoz[ai] do
+        begin
+        tmpsurf:= TTF_RenderUTF8_Blended(Fontz[CheckCJKFont(trAmmo[NameId],fnt16)].Handle, Str2PChar(trAmmo[NameId]), cWhiteColorChannels);
+        tmpsurf:= doSurfaceConversion(tmpsurf);
+        NameTex:= Surface2Tex(tmpsurf, false);
+        SDL_FreeSurface(tmpsurf)
+        end;
 
 // number of weapons in ammo menu
 for i:= Low(CountTexz) to High(CountTexz) do
-	begin
-	tmpsurf:= TTF_RenderUTF8_Blended(Fontz[fnt16].Handle, Str2PChar(IntToStr(i) + 'x'), cWhiteColorChannels);
-	tmpsurf:= doSurfaceConversion(tmpsurf);
-	CountTexz[i]:= Surface2Tex(tmpsurf, false);
-	SDL_FreeSurface(tmpsurf)
-	end;
+    begin
+    tmpsurf:= TTF_RenderUTF8_Blended(Fontz[fnt16].Handle, Str2PChar(IntToStr(i) + 'x'), cWhiteColorChannels);
+    tmpsurf:= doSurfaceConversion(tmpsurf);
+    CountTexz[i]:= Surface2Tex(tmpsurf, false);
+    SDL_FreeSurface(tmpsurf)
+    end;
 
 {$IFDEF DUMP}
 //not working anymore, where are LandSurface and StoreSurface defined?
@@ -516,7 +516,7 @@
 
 procedure DrawTextureF(Texture: PTexture; Scale: GLfloat; X, Y, Frame, Dir, w, h: LongInt);
 begin
-	DrawRotatedTextureF(Texture, Scale, 0, 0, X, Y, Frame, Dir, w, h, 0)
+    DrawRotatedTextureF(Texture, Scale, 0, 0, X, Y, Frame, Dir, w, h, 0)
 end;
 
 procedure DrawRotatedTextureF(Texture: PTexture; Scale, OffsetX, OffsetY: GLfloat; X, Y, Frame, Dir, w, h: LongInt; Angle: real);
@@ -538,9 +538,9 @@
 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
 
 if Dir < 0 then
-	hw:= w div -2
+    hw:= w div -2
 else
-	hw:= w div 2;
+    hw:= w div 2;
 
 nx:= round(Texture^.w / w); // number of horizontal frames
 ny:= round(Texture^.h / h); // number of vertical frames
@@ -587,9 +587,9 @@
 procedure DrawRotated(Sprite: TSprite; X, Y, Dir: LongInt; Angle: real);
 begin
 DrawRotatedTex(SpritesData[Sprite].Texture,
-		SpritesData[Sprite].Width,
-		SpritesData[Sprite].Height,
-		X, Y, Dir, Angle)
+        SpritesData[Sprite].Width,
+        SpritesData[Sprite].Height,
+        X, Y, Dir, Angle)
 end;
 
 procedure DrawRotatedF(Sprite: TSprite; X, Y, Frame, Dir: LongInt; Angle: real);
@@ -703,10 +703,10 @@
 
 procedure DrawHedgehog(X, Y: LongInt; Dir: LongInt; Pos, Step: LongWord; Angle: real);
 const VertexBuffer: array [0..3] of TVertex2f = (
-		(x: -16; y: -16),
-		(x:  16; y: -16),
-		(x:  16; y:  16),
-		(x: -16; y:  16));
+        (x: -16; y: -16),
+        (x:  16; y: -16),
+        (x:  16; y:  16),
+        (x: -16; y:  16));
 var l, r, t, b: real;
     TextureBuffer: array [0..3] of TVertex2f;
 begin
@@ -1032,81 +1032,81 @@
 procedure RenderHealth(var Hedgehog: THedgehog);
 var s: shortstring;
 begin
-	str(Hedgehog.Gear^.Health, s);
-	if Hedgehog.HealthTagTex <> nil then
-		FreeTexture(Hedgehog.HealthTagTex);
-	Hedgehog.HealthTagTex:= RenderStringTex(s, Hedgehog.Team^.Clan^.Color, fnt16)
+    str(Hedgehog.Gear^.Health, s);
+    if Hedgehog.HealthTagTex <> nil then
+        FreeTexture(Hedgehog.HealthTagTex);
+    Hedgehog.HealthTagTex:= RenderStringTex(s, Hedgehog.Team^.Clan^.Color, fnt16)
 end;
 
 function  LoadImage(const filename: shortstring; imageFlags: LongInt): PSDL_Surface;
 var tmpsurf: PSDL_Surface;
     s: shortstring;
 begin
-	WriteToConsole(msgLoading + filename + ' [flags: ' + inttostr(imageFlags) + ']... ');
+    WriteToConsole(msgLoading + filename + ' [flags: ' + inttostr(imageFlags) + ']... ');
 
-	s:= filename + '.png';
-	tmpsurf:= IMG_Load(Str2PChar(s));
+    s:= filename + '.png';
+    tmpsurf:= IMG_Load(Str2PChar(s));
 
-	if (imageFlags and ifLowRes) <> 0 then
-	begin
-		s:= filename + '-lowres.png';
-		if (tmpsurf <> nil) then
-		begin
-			if ((tmpsurf^.w > MaxTextureSize) or (tmpsurf^.h > MaxTextureSize)) then
-			begin
-				SDL_FreeSurface(tmpsurf);
-				{$IFDEF DEBUGFILE}
-				AddFileLog('...image too big, trying to load lowres version: ' + s + '...');
-				{$ENDIF}
-				tmpsurf:= IMG_Load(Str2PChar(s))
-			end;
-		end
-		else
-		begin
-			{$IFDEF DEBUGFILE}
-			AddFileLog('...image not found, trying to load lowres version: ' + s + '...');
-			{$ENDIF}
-			tmpsurf:= IMG_Load(Str2PChar(s))
-		end;
-	end;
+    if (imageFlags and ifLowRes) <> 0 then
+    begin
+        s:= filename + '-lowres.png';
+        if (tmpsurf <> nil) then
+        begin
+            if ((tmpsurf^.w > MaxTextureSize) or (tmpsurf^.h > MaxTextureSize)) then
+            begin
+                SDL_FreeSurface(tmpsurf);
+                {$IFDEF DEBUGFILE}
+                AddFileLog('...image too big, trying to load lowres version: ' + s + '...');
+                {$ENDIF}
+                tmpsurf:= IMG_Load(Str2PChar(s))
+            end;
+        end
+        else
+        begin
+            {$IFDEF DEBUGFILE}
+            AddFileLog('...image not found, trying to load lowres version: ' + s + '...');
+            {$ENDIF}
+            tmpsurf:= IMG_Load(Str2PChar(s))
+        end;
+    end;
 
-	if tmpsurf = nil then
-	begin
-		OutError(msgFailed, (imageFlags and ifCritical) <> 0);
-		exit(nil)
-	end;
+    if tmpsurf = nil then
+    begin
+        OutError(msgFailed, (imageFlags and ifCritical) <> 0);
+        exit(nil)
+    end;
 
-	if ((imageFlags and ifIgnoreCaps) = 0) and ((tmpsurf^.w > MaxTextureSize) or (tmpsurf^.h > MaxTextureSize)) then
-	begin
-		SDL_FreeSurface(tmpsurf);
-		OutError(msgFailedSize, (imageFlags and ifCritical) <> 0);
-		// dummy surface to replace non-critical textures that failed to load due to their size
-		exit(SDL_CreateRGBSurface(SDL_SWSURFACE, 32, 32, 32, RMask, GMask, BMask, AMask));
-	end;
+    if ((imageFlags and ifIgnoreCaps) = 0) and ((tmpsurf^.w > MaxTextureSize) or (tmpsurf^.h > MaxTextureSize)) then
+    begin
+        SDL_FreeSurface(tmpsurf);
+        OutError(msgFailedSize, (imageFlags and ifCritical) <> 0);
+        // dummy surface to replace non-critical textures that failed to load due to their size
+        exit(SDL_CreateRGBSurface(SDL_SWSURFACE, 32, 32, 32, RMask, GMask, BMask, AMask));
+    end;
 
-	tmpsurf:= doSurfaceConversion(tmpsurf);
+    tmpsurf:= doSurfaceConversion(tmpsurf);
 
-	if (imageFlags and ifTransparent) <> 0 then
-		TryDo(SDL_SetColorKey(tmpsurf, SDL_SRCCOLORKEY, 0) = 0, errmsgTransparentSet, true);
+    if (imageFlags and ifTransparent) <> 0 then
+        TryDo(SDL_SetColorKey(tmpsurf, SDL_SRCCOLORKEY, 0) = 0, errmsgTransparentSet, true);
 
-	WriteLnToConsole('(' + inttostr(tmpsurf^.w) + ',' + inttostr(tmpsurf^.h) + ') ');
-	WriteLnToConsole(msgOK);
+    WriteLnToConsole('(' + inttostr(tmpsurf^.w) + ',' + inttostr(tmpsurf^.h) + ') ');
+    WriteLnToConsole(msgOK);
 
-	LoadImage:= tmpsurf //Result
+    LoadImage:= tmpsurf //Result
 end;
 
 function glLoadExtension(extension : shortstring) : boolean;
 begin
 {$IFDEF IPHONEOS}
-	glLoadExtension:= false;
+    glLoadExtension:= false;
 {$ELSE}
-	glLoadExtension:= glext_LoadExtension(extension);
+    glLoadExtension:= glext_LoadExtension(extension);
 {$ENDIF}
 {$IFDEF DEBUGFILE}
-	if not glLoadExtension then
-		AddFileLog('OpenGL - "' + extension + '" failed to load')
-	else
-		AddFileLog('OpenGL - "' + extension + '" loaded');
+    if not glLoadExtension then
+        AddFileLog('OpenGL - "' + extension + '" failed to load')
+    else
+        AddFileLog('OpenGL - "' + extension + '" loaded');
 {$ENDIF}
 end;
 
@@ -1115,84 +1115,84 @@
 begin
 {$IFDEF IPHONEOS}
 //these are good performance savers, perhaps we could enable them by default
-	SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 0);
-	SDL_GL_SetAttribute(SDL_GL_RETAINED_BACKING, 1);
-	SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 0);
-	SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 5);
-	SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 6);
-	SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 5);
-	SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, 0);
-	SDL_GL_SetAttribute(SDL_GL_ACCELERATED_VISUAL, 1);
-	//SDL_GL_SetAttribute(SDL_GL_BUFFER_SIZE, 32);
+    SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 0);
+    SDL_GL_SetAttribute(SDL_GL_RETAINED_BACKING, 1);
+    SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 0);
+    SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 5);
+    SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 6);
+    SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 5);
+    SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, 0);
+    SDL_GL_SetAttribute(SDL_GL_ACCELERATED_VISUAL, 1);
+    //SDL_GL_SetAttribute(SDL_GL_BUFFER_SIZE, 32);
 {$ELSE}
-	SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
+    SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
 {$ENDIF}
 
 {$IFNDEF SDL13}
 // this attribute is default in 1.3 and must be enabled in MacOSX
 {$IFNDEF DARWIN}
-	if cVSyncInUse then
+    if cVSyncInUse then
 {$ENDIF}
-		SDL_GL_SetAttribute(SDL_GL_SWAP_CONTROL, 1);
+        SDL_GL_SetAttribute(SDL_GL_SWAP_CONTROL, 1);
 {$ENDIF}
 
-	glGetIntegerv(GL_MAX_TEXTURE_SIZE, @MaxTextureSize);
+    glGetIntegerv(GL_MAX_TEXTURE_SIZE, @MaxTextureSize);
 
-	vendor:= LowerCase(shortstring(pchar(glGetString(GL_VENDOR))));
+    vendor:= LowerCase(shortstring(pchar(glGetString(GL_VENDOR))));
 {$IFDEF DEBUGFILE}
-	AddFileLog('OpenGL-- Renderer: ' + shortstring(pchar(glGetString(GL_RENDERER))));
-	AddFileLog('  |----- Vendor: ' + vendor);
-	AddFileLog('  |----- Version: ' + shortstring(pchar(glGetString(GL_VERSION))));
-	AddFileLog('  \----- GL_MAX_TEXTURE_SIZE: ' + inttostr(MaxTextureSize));
+    AddFileLog('OpenGL-- Renderer: ' + shortstring(pchar(glGetString(GL_RENDERER))));
+    AddFileLog('  |----- Vendor: ' + vendor);
+    AddFileLog('  |----- Version: ' + shortstring(pchar(glGetString(GL_VERSION))));
+    AddFileLog('  \----- GL_MAX_TEXTURE_SIZE: ' + inttostr(MaxTextureSize));
 {$ENDIF}
 
-	if MaxTextureSize <= 0 then
-	begin
-		MaxTextureSize:= 1024;
+    if MaxTextureSize <= 0 then
+    begin
+        MaxTextureSize:= 1024;
 {$IFDEF DEBUGFILE}
-		AddFileLog('OpenGL Warning - driver didn''t provide any valid max texture size; assuming 1024');
+        AddFileLog('OpenGL Warning - driver didn''t provide any valid max texture size; assuming 1024');
 {$ENDIF}
-	end;
+    end;
 
 {$IFNDEF IPHONEOS}
-	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;
+    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;
 //SupportNPOTT:= glLoadExtension('GL_ARB_texture_non_power_of_two');
 {$ELSE}
-	cGPUVendor:= gvApple;
+    cGPUVendor:= gvApple;
 {$ENDIF}
 
 {$IFDEF DEBUGFILE}
-	if cGPUVendor = gvUnknown then
-		AddFileLog('OpenGL Warning - unknown hardware vendor; please report');
+    if cGPUVendor = gvUnknown then
+        AddFileLog('OpenGL Warning - unknown hardware vendor; please report');
 {$ELSE}
-	// just avoid 'never used' compiler warning for now
-	if cGPUVendor = gvUnknown then cGPUVendor:= gvUnknown;
+    // just avoid 'never used' compiler warning for now
+    if cGPUVendor = gvUnknown then cGPUVendor:= gvUnknown;
 {$ENDIF}
 
-	// set view port to whole window
+    // set view port to whole window
 {$IFDEF IPHONEOS}
-	glViewport(0, 0, cScreenHeight, cScreenWidth);
+    glViewport(0, 0, cScreenHeight, cScreenWidth);
 {$ELSE}
-	glViewport(0, 0, cScreenWidth, cScreenHeight);
+    glViewport(0, 0, cScreenWidth, cScreenHeight);
 {$ENDIF}
 
-	glMatrixMode(GL_MODELVIEW);
-	// prepare default translation/scaling
-	glLoadIdentity();
+    glMatrixMode(GL_MODELVIEW);
+    // prepare default translation/scaling
+    glLoadIdentity();
 {$IFDEF IPHONEOS}
-	glRotatef(-90, 0, 0, 1);
+    glRotatef(-90, 0, 0, 1);
 {$ENDIF}
-	glScalef(2.0 / cScreenWidth, -2.0 / cScreenHeight, 1.0);
-	glTranslatef(0, -cScreenHeight / 2, 0);
+    glScalef(2.0 / cScreenWidth, -2.0 / cScreenHeight, 1.0);
+    glTranslatef(0, -cScreenHeight / 2, 0);
 
-	// enable alpha blending
-	glEnable(GL_BLEND);
-	glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+    // enable alpha blending
+    glEnable(GL_BLEND);
+    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
 end;
 
 procedure SetScale(f: GLfloat);
@@ -1203,22 +1203,22 @@
 scale: GLfloat = 2.0;
 {$ENDIF}
 begin
-	// leave immediately if scale factor did not change
-	if f = cScaleFactor then exit;
+    // leave immediately if scale factor did not change
+    if f = cScaleFactor then exit;
 
-	if f = scale then glPopMatrix	// "return" to default scaling
-	else				// other scaling
-	begin
-		glPushMatrix;		// save default scaling
-		glLoadIdentity;
+    if f = scale then glPopMatrix   // "return" to default scaling
+    else                // other scaling
+    begin
+        glPushMatrix;       // save default scaling
+        glLoadIdentity;
 {$IFDEF IPHONEOS}
-		glRotatef(-90, 0, 0, 1);
+        glRotatef(-90, 0, 0, 1);
 {$ENDIF}
-		glScalef(f / cScreenWidth, -f / cScreenHeight, 1.0);
-		glTranslatef(0, -cScreenHeight / 2, 0);
-	end;
+        glScalef(f / cScreenWidth, -f / cScreenHeight, 1.0);
+        glTranslatef(0, -cScreenHeight / 2, 0);
+    end;
 
-	cScaleFactor:= f;
+    cScaleFactor:= f;
 end;
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -1226,55 +1226,55 @@
 var r: TSDL_Rect;
     texsurf: PSDL_Surface;
 begin
-	if Step = 0 then
-	begin
+    if Step = 0 then
+    begin
 {$IFDEF SDL_IMAGE_NEWER}
-		WriteToConsole('Init SDL_image... ');
-		SDLTry(IMG_Init(IMG_INIT_PNG) <> 0, true);
-		WriteLnToConsole(msgOK);
+        WriteToConsole('Init SDL_image... ');
+        SDLTry(IMG_Init(IMG_INIT_PNG) <> 0, true);
+        WriteLnToConsole(msgOK);
 {$ENDIF}
-	
-		WriteToConsole(msgLoading + 'progress sprite: ');
-		texsurf:= LoadImage(Pathz[ptGraphics] + '/Progress', ifCritical or ifTransparent);
+    
+        WriteToConsole(msgLoading + 'progress sprite: ');
+        texsurf:= LoadImage(Pathz[ptGraphics] + '/Progress', ifCritical or ifTransparent);
 
-		ProgrTex:= Surface2Tex(texsurf, false);
-		
-		squaresize:= texsurf^.w shr 1;
-		numsquares:= texsurf^.h div squaresize;
-		SDL_FreeSurface(texsurf);
-	end;
+        ProgrTex:= Surface2Tex(texsurf, false);
+        
+        squaresize:= texsurf^.w shr 1;
+        numsquares:= texsurf^.h div squaresize;
+        SDL_FreeSurface(texsurf);
+    end;
 
-	TryDo(ProgrTex <> nil, 'Error - Progress Texure is nil!', true);
+    TryDo(ProgrTex <> nil, 'Error - Progress Texure is nil!', true);
 
-	glClear(GL_COLOR_BUFFER_BIT);
-	glEnable(GL_TEXTURE_2D);
-	if Step < numsquares then r.x:= 0
-	else r.x:= squaresize;
-	
-	r.y:= (Step mod numsquares) * squaresize;
-	r.w:= squaresize;
-	r.h:= squaresize;
-	
-	DrawFromRect( -squaresize div 2, (cScreenHeight - squaresize) shr 1, @r, ProgrTex);
+    glClear(GL_COLOR_BUFFER_BIT);
+    glEnable(GL_TEXTURE_2D);
+    if Step < numsquares then r.x:= 0
+    else r.x:= squaresize;
+    
+    r.y:= (Step mod numsquares) * squaresize;
+    r.w:= squaresize;
+    r.h:= squaresize;
+    
+    DrawFromRect( -squaresize div 2, (cScreenHeight - squaresize) shr 1, @r, ProgrTex);
 
-	glDisable(GL_TEXTURE_2D);
-	SDL_GL_SwapBuffers();
+    glDisable(GL_TEXTURE_2D);
+    SDL_GL_SwapBuffers();
 {$IFDEF SDL13}
-	SDL_RenderPresent();
+    SDL_RenderPresent();
 {$ENDIF}
-	inc(Step);
+    inc(Step);
 
 end;
 
 
 procedure FinishProgress;
 begin
-	WriteLnToConsole('Freeing progress surface... ');
-	FreeTexture(ProgrTex);
+    WriteLnToConsole('Freeing progress surface... ');
+    FreeTexture(ProgrTex);
 
 {$IFDEF IPHONEOS}
-	// show overlay buttons
-	IPH_showControls;
+    // show overlay buttons
+    IPH_showControls;
 {$ENDIF}
 end;
 
@@ -1347,11 +1347,11 @@
 
 function RenderHelpWindow(caption, subcaption, description, extra: ansistring; extracolor: LongInt; iconsurf: PSDL_Surface; iconrect: PSDL_Rect): PTexture;
 var tmpsurf: PSDL_SURFACE;
-	w, h, i, j: LongInt;
-	font: THWFont;
-	r, r2: TSDL_Rect;
-	wa, ha: LongInt;
-	tmpline, tmpline2, tmpdesc: ansistring;
+    w, h, i, j: LongInt;
+    font: THWFont;
+    r, r2: TSDL_Rect;
+    wa, ha: LongInt;
+    tmpline, tmpline2, tmpdesc: ansistring;
 begin
 // make sure there is a caption as well as a sub caption - description is optional
 if caption = '' then caption:= '???';
@@ -1384,25 +1384,25 @@
 // get description's dimensions
 tmpdesc:= description;
 while tmpdesc <> '' do
-	begin
-	tmpline:= tmpdesc;
-	SplitByChar(tmpline, tmpdesc, '|');
-	if tmpline <> '' then
-		begin
-		TTF_SizeUTF8(Fontz[font].Handle, Str2PChar(tmpline), i, j);
-		if w < (i + wa) then w:= i + wa;
-		inc(h, j + ha)
-		end
-	end;
+    begin
+    tmpline:= tmpdesc;
+    SplitByChar(tmpline, tmpdesc, '|');
+    if tmpline <> '' then
+        begin
+        TTF_SizeUTF8(Fontz[font].Handle, Str2PChar(tmpline), i, j);
+        if w < (i + wa) then w:= i + wa;
+        inc(h, j + ha)
+        end
+    end;
 
 if extra <> '' then
-	begin
-	// get extra label's dimensions
-	TTF_SizeUTF8(Fontz[font].Handle, Str2PChar(extra), i, j);
-	if w < (i + wa) then w:= i + wa;
-	inc(h, j + ha);
-	end;
-	
+    begin
+    // get extra label's dimensions
+    TTF_SizeUTF8(Fontz[font].Handle, Str2PChar(extra), i, j);
+    if w < (i + wa) then w:= i + wa;
+    inc(h, j + ha);
+    end;
+    
 // add borders space
 inc(w, wa);
 inc(h, ha + 8);
@@ -1425,23 +1425,23 @@
 // render all description lines
 tmpdesc:= description;
 while tmpdesc <> '' do
-	begin
-	tmpline:= tmpdesc;
-	SplitByChar(tmpline, tmpdesc, '|');
-	r2:= r;
-	if tmpline <> '' then
-		begin
-		r:= WriteInRect(tmpsurf, FontBorder + 2, r.y + r.h, $ff707070, font, tmpline);
-		
-		// render highlighted caption (if there's a ':')
-		SplitByChar(tmpline, tmpline2, ':');
-		if tmpline2 <> '' then
-			WriteInRect(tmpsurf, FontBorder + 2, r2.y + r2.h, $ffc7c7c7, font, tmpline + ':');
-		end
-	end;
+    begin
+    tmpline:= tmpdesc;
+    SplitByChar(tmpline, tmpdesc, '|');
+    r2:= r;
+    if tmpline <> '' then
+        begin
+        r:= WriteInRect(tmpsurf, FontBorder + 2, r.y + r.h, $ff707070, font, tmpline);
+        
+        // render highlighted caption (if there's a ':')
+        SplitByChar(tmpline, tmpline2, ':');
+        if tmpline2 <> '' then
+            WriteInRect(tmpsurf, FontBorder + 2, r2.y + r2.h, $ffc7c7c7, font, tmpline + ':');
+        end
+    end;
 
 if extra <> '' then
-	r:= WriteInRect(tmpsurf, FontBorder + 2, r.y + r.h, extracolor, font, extra);
+    r:= WriteInRect(tmpsurf, FontBorder + 2, r.y + r.h, extracolor, font, extra);
 
 r.x:= FontBorder + 6;
 r.y:= FontBorder + 4;
@@ -1449,7 +1449,7 @@
 r.h:= 32;
 SDL_FillRect(tmpsurf, @r, $ffffffff);
 SDL_UpperBlit(iconsurf, iconrect, tmpsurf, @r);
-	
+    
 RenderHelpWindow:=  Surface2Tex(tmpsurf, true);
 SDL_FreeSurface(tmpsurf)
 end;
@@ -1457,16 +1457,16 @@
 procedure RenderWeaponTooltip(atype: TAmmoType);
 {$IFNDEF IPHONEOS}
 var r: TSDL_Rect;
-	i: LongInt;
-	extra: ansistring;
-	extracolor: LongInt;
+    i: LongInt;
+    extra: ansistring;
+    extracolor: LongInt;
 begin
 // don't do anything if the window shouldn't be shown
 if not cWeaponTooltips then
-	begin
-	WeaponTooltipTex:= nil;
-	exit
-	end;
+    begin
+    WeaponTooltipTex:= nil;
+    exit
+    end;
 
 // free old texture
 FreeWeaponTooltip;
@@ -1483,20 +1483,20 @@
 extracolor:= 0;
 
 if (CurrentTeam <> nil) and (Ammoz[atype].SkipTurns >= CurrentTeam^.Clan^.TurnNumber) then // weapon or utility is not yet available
-	begin
-	extra:= trmsg[sidNotYetAvailable];
-	extracolor:= LongInt($ffc77070);
-	end
+    begin
+    extra:= trmsg[sidNotYetAvailable];
+    extracolor:= LongInt($ffc77070);
+    end
 else if (Ammoz[atype].Ammo.Propz and ammoprop_NoRoundEndHint) <> 0 then // weapon or utility won't end your turn
-	begin
-	extra:= trmsg[sidNoEndTurn];
-	extracolor:= LongInt($ff70c770);
-	end
+    begin
+    extra:= trmsg[sidNoEndTurn];
+    extracolor:= LongInt($ff70c770);
+    end
 else 
-	begin
-	extra:= '';
-	extracolor:= 0;
-	end;
+    begin
+    extra:= '';
+    extracolor:= 0;
+    end;
 
 // render window and return the texture
 WeaponTooltipTex:= RenderHelpWindow(trammo[Ammoz[atype].NameId], trammoc[Ammoz[atype].NameId], trammod[Ammoz[atype].NameId], extra, extracolor, SpritesData[sprAMAmmos].Surface, @r)
@@ -1510,7 +1510,7 @@
 {$IFNDEF IPHONEOS}
 // draw the texture if it exists
 if WeaponTooltipTex <> nil then
-	DrawTexture(x, y, WeaponTooltipTex)
+    DrawTexture(x, y, WeaponTooltipTex)
 {$ENDIF}
 end;
 
@@ -1519,7 +1519,7 @@
 {$IFNDEF IPHONEOS}
 // free the existing texture (if there's any)
 if WeaponTooltipTex = nil then
-	exit;
+    exit;
 FreeTexture(WeaponTooltipTex);
 WeaponTooltipTex:= nil
 {$ENDIF}
--- a/hedgewars/uTeams.pas	Sat Mar 06 10:54:24 2010 +0000
+++ b/hedgewars/uTeams.pas	Sat Mar 06 10:59:20 2010 +0000
@@ -22,75 +22,75 @@
 interface
 uses SDLh, uConsts, uKeys, uGears, uRandom, uFloat, uStats, uVisualGears, uCollisions, uLand,
 {$IFDEF GLES11}
-	gles11,
+    gles11,
 {$ELSE}
-	GL,
+    GL,
 {$ENDIF}
-	uSound;
+    uSound;
 
 type PHHAmmo = ^THHAmmo;
-	THHAmmo = array[0..cMaxSlotIndex, 0..cMaxSlotAmmoIndex] of TAmmo;
+    THHAmmo = array[0..cMaxSlotIndex, 0..cMaxSlotAmmoIndex] of TAmmo;
 
-	PHedgehog = ^THedgehog;
-	PTeam     = ^TTeam;
-	PClan     = ^TClan;
+    PHedgehog = ^THedgehog;
+    PTeam     = ^TTeam;
+    PClan     = ^TClan;
 
-	THedgehog = record
-			Name: string[MAXNAMELEN];
-			Gear: PGear;
-			SpeechGear: PVisualGear;
-			NameTagTex,
-			HealthTagTex,
-			HatTex: PTexture;
-			Ammo: PHHAmmo;
-			AmmoStore: Longword;
-			CurSlot, CurAmmo: LongWord;
-			Team: PTeam;
-			MultiShootAttacks: Longword;
-			visStepPos: LongWord;
-			BotLevel  : LongWord; // 0 - Human player
-			HatVisibility: GLfloat;
-			stats: TStatistics;
-			Hat: shortstring;
+    THedgehog = record
+            Name: string[MAXNAMELEN];
+            Gear: PGear;
+            SpeechGear: PVisualGear;
+            NameTagTex,
+            HealthTagTex,
+            HatTex: PTexture;
+            Ammo: PHHAmmo;
+            AmmoStore: Longword;
+            CurSlot, CurAmmo: LongWord;
+            Team: PTeam;
+            MultiShootAttacks: Longword;
+            visStepPos: LongWord;
+            BotLevel  : LongWord; // 0 - Human player
+            HatVisibility: GLfloat;
+            stats: TStatistics;
+            Hat: shortstring;
             King: boolean;  // Flag for a bunch of hedgehog attributes
             Unplaced: boolean;  // Flag for hog placing mode
-			end;
+            end;
 
-	TTeam = record
-			Clan: PClan;
-			TeamName: string[MAXNAMELEN];
-			ExtDriven: boolean;
-			Binds: TBinds;
-			Hedgehogs: array[0..cMaxHHIndex] of THedgehog;
-			CurrHedgehog: LongWord;
-			NameTagTex: PTexture;
-			CrosshairTex,
-			GraveTex,
-			HealthTex,
-			FlagTex: PTexture;
-			Flag: shortstring;
-			GraveName: shortstring;
-			FortName: shortstring;
-			TeamHealth: LongInt;
-			TeamHealthBarWidth,
-			NewTeamHealthBarWidth: LongInt;
-			DrawHealthY: LongInt;
-			AttackBar: LongWord;
-			HedgehogsNumber: Longword;
-			hasGone: boolean;
-			voicepack: PVoicepack;
+    TTeam = record
+            Clan: PClan;
+            TeamName: string[MAXNAMELEN];
+            ExtDriven: boolean;
+            Binds: TBinds;
+            Hedgehogs: array[0..cMaxHHIndex] of THedgehog;
+            CurrHedgehog: LongWord;
+            NameTagTex: PTexture;
+            CrosshairTex,
+            GraveTex,
+            HealthTex,
+            FlagTex: PTexture;
+            Flag: shortstring;
+            GraveName: shortstring;
+            FortName: shortstring;
+            TeamHealth: LongInt;
+            TeamHealthBarWidth,
+            NewTeamHealthBarWidth: LongInt;
+            DrawHealthY: LongInt;
+            AttackBar: LongWord;
+            HedgehogsNumber: Longword;
+            hasGone: boolean;
+            voicepack: PVoicepack;
             PlayerHash: shortstring;   // md5 hash of player name. For temporary enabling of hats as thank you. Hashed for privacy of players
-			end;
+            end;
 
-	TClan = record
-			Color: Longword;
-			Teams: array[0..Pred(cMaxTeams)] of PTeam;
-			TeamsNumber: Longword;
-			CurrTeam: LongWord;
-			ClanHealth: LongInt;
-			ClanIndex: LongInt;
-			TurnNumber: LongWord;
-			end;
+    TClan = record
+            Color: Longword;
+            Teams: array[0..Pred(cMaxTeams)] of PTeam;
+            TeamsNumber: Longword;
+            CurrTeam: LongWord;
+            ClanHealth: LongInt;
+            ClanIndex: LongInt;
+            TurnNumber: LongWord;
+            end;
 
 var CurrentTeam: PTeam;
     PreviousTeam: PTeam;
@@ -127,11 +127,11 @@
 begin
 AliveCount:= 0;
 for t:= 0 to Pred(ClansCount) do
-	if ClansArray[t]^.ClanHealth > 0 then
-		begin
-		inc(AliveCount);
-		AliveClan:= ClansArray[t]
-		end;
+    if ClansArray[t]^.ClanHealth > 0 then
+        begin
+        inc(AliveCount);
+        AliveClan:= ClansArray[t]
+        end;
 
 if (AliveCount > 1)
 or ((AliveCount = 1) and ((GameFlags and gfOneClanMode) <> 0)) then exit(false);
@@ -139,29 +139,29 @@
 
 TurnTimeLeft:= 0;
 if AliveCount = 0 then
-	begin // draw
-	AddCaption(trmsg[sidDraw], cWhiteColor, capgrpGameState);
-	SendStat(siGameResult, trmsg[sidDraw]);
-	AddGear(0, 0, gtATFinishGame, 0, _0, _0, 3000)
-	end else // win
-	with AliveClan^ do
-		begin
-		if TeamsNumber = 1 then
-			s:= Format(shortstring(trmsg[sidWinner]), Teams[0]^.TeamName)  // team wins
-		else
-			s:= Format(shortstring(trmsg[sidWinner]), Teams[0]^.TeamName); // clan wins
+    begin // draw
+    AddCaption(trmsg[sidDraw], cWhiteColor, capgrpGameState);
+    SendStat(siGameResult, trmsg[sidDraw]);
+    AddGear(0, 0, gtATFinishGame, 0, _0, _0, 3000)
+    end else // win
+    with AliveClan^ do
+        begin
+        if TeamsNumber = 1 then
+            s:= Format(shortstring(trmsg[sidWinner]), Teams[0]^.TeamName)  // team wins
+        else
+            s:= Format(shortstring(trmsg[sidWinner]), Teams[0]^.TeamName); // clan wins
 
-		for j:= 0 to Pred(TeamsNumber) do
-			with Teams[j]^ do
-				for i:= 0 to cMaxHHIndex do
-					with Hedgehogs[i] do
-						if (Gear <> nil) then
-							Gear^.State:= gstWinner;
+        for j:= 0 to Pred(TeamsNumber) do
+            with Teams[j]^ do
+                for i:= 0 to cMaxHHIndex do
+                    with Hedgehogs[i] do
+                        if (Gear <> nil) then
+                            Gear^.State:= gstWinner;
 
-		AddCaption(s, cWhiteColor, capgrpGameState);
-		SendStat(siGameResult, s);
-		AddGear(0, 0, gtATFinishGame, 0, _0, _0, 3000)
-		end;
+        AddCaption(s, cWhiteColor, capgrpGameState);
+        SendStat(siGameResult, s);
+        AddGear(0, 0, gtATFinishGame, 0, _0, _0, 3000)
+        end;
 SendStats
 end;
 
@@ -175,52 +175,52 @@
     if (PreviousTeam <> nil) and PlacingHogs and Unplaced then
         begin
         Unplaced:= false;
-	    if Gear <> nil then 
+        if Gear <> nil then 
            begin
            DeleteCI(Gear);
            FindPlace(Gear, false, 0, LAND_WIDTH);
            if Gear <> nil then AddGearCI(Gear)
            end
-		end;
+        end;
 
 PreviousTeam:= CurrentTeam;
 
 with CurrentHedgehog^ do
     begin
-	if Gear <> nil then
-		begin
-		MultiShootAttacks:= 0;
-		Gear^.Message:= 0;
-		Gear^.Z:= cHHZ;
-		RemoveGearFromList(Gear);
-		InsertGearToList(Gear)
-		end
+    if Gear <> nil then
+        begin
+        MultiShootAttacks:= 0;
+        Gear^.Message:= 0;
+        Gear^.Z:= cHHZ;
+        RemoveGearFromList(Gear);
+        InsertGearToList(Gear)
+        end
     end;
 
 c:= CurrentTeam^.Clan^.ClanIndex;
 repeat
-	inc(c);
-	if c = ClansCount then
-		begin
+    inc(c);
+    if c = ClansCount then
+        begin
         if not PlacingHogs then inc(TotalRounds);
-		c:= 0
-		end;
+        c:= 0
+        end;
 
-	with ClansArray[c]^ do
-		begin
-		PrevTeam:= CurrTeam;
-		repeat
-			CurrTeam:= Succ(CurrTeam) mod TeamsNumber;
-			CurrentTeam:= Teams[CurrTeam];
-			with CurrentTeam^ do
-				begin
-				PrevHH:= CurrHedgehog mod HedgehogsNumber; // prevent infinite loop when CurrHedgehog = 7, but HedgehogsNumber < 8 (team is destroyed before its first turn)
-				repeat
-					CurrHedgehog:= Succ(CurrHedgehog) mod HedgehogsNumber;
-				until (Hedgehogs[CurrHedgehog].Gear <> nil) or (CurrHedgehog = PrevHH)
-				end
-		until (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear <> nil) or (PrevTeam = CurrTeam);
-		end
+    with ClansArray[c]^ do
+        begin
+        PrevTeam:= CurrTeam;
+        repeat
+            CurrTeam:= Succ(CurrTeam) mod TeamsNumber;
+            CurrentTeam:= Teams[CurrTeam];
+            with CurrentTeam^ do
+                begin
+                PrevHH:= CurrHedgehog mod HedgehogsNumber; // prevent infinite loop when CurrHedgehog = 7, but HedgehogsNumber < 8 (team is destroyed before its first turn)
+                repeat
+                    CurrHedgehog:= Succ(CurrHedgehog) mod HedgehogsNumber;
+                until (Hedgehogs[CurrHedgehog].Gear <> nil) or (CurrHedgehog = PrevHH)
+                end
+        until (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear <> nil) or (PrevTeam = CurrTeam);
+        end
 until (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear <> nil);
 
 CurrentHedgehog:= @(CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog])
@@ -251,17 +251,17 @@
 SwitchNotHeldAmmo(CurrentHedgehog^);
 
 with CurrentHedgehog^ do
-	begin
-	with Gear^ do
-		begin
-		Z:= cCurrHHZ;
-		State:= gstHHDriven;
-		Active:= true
-		end;
-	RemoveGearFromList(Gear);
-	InsertGearToList(Gear);
-	FollowGear:= Gear
-	end;
+    begin
+    with Gear^ do
+        begin
+        Z:= cCurrHHZ;
+        State:= gstHHDriven;
+        Active:= true
+        end;
+    RemoveGearFromList(Gear);
+    InsertGearToList(Gear);
+    FollowGear:= Gear
+    end;
 
 ResetKbd;
 
@@ -278,9 +278,9 @@
 bShowFinger:= true;
 
 if (CurrentTeam^.ExtDriven or (CurrentHedgehog^.BotLevel > 0)) then
-	PlaySound(sndIllGetYou, CurrentTeam^.voicepack)
+    PlaySound(sndIllGetYou, CurrentTeam^.voicepack)
 else
-	PlaySound(sndYesSir, CurrentTeam^.voicepack);
+    PlaySound(sndYesSir, CurrentTeam^.voicepack);
 
 if PlacingHogs then
    begin
@@ -402,21 +402,21 @@
 var i: LongInt;
 begin
 with team^ do
-	begin
-	NewTeamHealthBarWidth:= 0;
+    begin
+    NewTeamHealthBarWidth:= 0;
 
-	if not hasGone then
-		for i:= 0 to cMaxHHIndex do
-			if Hedgehogs[i].Gear <> nil then
-				inc(NewTeamHealthBarWidth, Hedgehogs[i].Gear^.Health);
+    if not hasGone then
+        for i:= 0 to cMaxHHIndex do
+            if Hedgehogs[i].Gear <> nil then
+                inc(NewTeamHealthBarWidth, Hedgehogs[i].Gear^.Health);
 
-	TeamHealth:= NewTeamHealthBarWidth;
-	if NewTeamHealthBarWidth > MaxTeamHealth then
-		begin
-		MaxTeamHealth:= NewTeamHealthBarWidth;
-		RecountAllTeamsHealth;
-		end else NewTeamHealthBarWidth:= (NewTeamHealthBarWidth * cTeamHealthWidth) div MaxTeamHealth
-	end;
+    TeamHealth:= NewTeamHealthBarWidth;
+    if NewTeamHealthBarWidth > MaxTeamHealth then
+        begin
+        MaxTeamHealth:= NewTeamHealthBarWidth;
+        RecountAllTeamsHealth;
+        end else NewTeamHealthBarWidth:= (NewTeamHealthBarWidth * cTeamHealthWidth) div MaxTeamHealth
+    end;
 
 RecountClanHealth(team^.Clan);
 
@@ -435,15 +435,15 @@
 begin
 t:= 0;
 while (t < cMaxTeams)
-	and (TeamsArray[t] <> nil)
-	and (TeamsArray[t]^.TeamName <> s) do inc(t);
+    and (TeamsArray[t] <> nil)
+    and (TeamsArray[t]^.TeamName <> s) do inc(t);
 if (t = cMaxTeams) or (TeamsArray[t] = nil) then exit;
 
 with TeamsArray[t]^ do
-	begin
-	AddChatString('** '+ TeamName + ' is gone');
-	hasGone:= true
-	end;
+    begin
+    AddChatString('** '+ TeamName + ' is gone');
+    hasGone:= true
+    end;
 
 RecountTeamHealth(TeamsArray[t])
 end;
@@ -452,24 +452,24 @@
 var i: LongInt;
 begin
 with Team do
-	for i:= 0 to cMaxHHIndex do
-		with Hedgehogs[i] do
-			if Gear <> nil then
+    for i:= 0 to cMaxHHIndex do
+        with Hedgehogs[i] do
+            if Gear <> nil then
                 begin
                 Gear^.Invulnerable:= false;
-				Gear^.Damage:= Gear^.Health
+                Gear^.Damage:= Gear^.Health
                 end
 end;
 
 procedure init_uTeams;
 begin
-	CurrentTeam:= nil;
-	PreviousTeam:= nil;
-	CurrentHedgehog:= nil;
-	TeamsCount:= 0;
-	ClansCount:= 0;
-	LocalClan:= -1;
-	LocalAmmo:= -1;
+    CurrentTeam:= nil;
+    PreviousTeam:= nil;
+    CurrentHedgehog:= nil;
+    TeamsCount:= 0;
+    ClansCount:= 0;
+    LocalClan:= -1;
+    LocalAmmo:= -1;
 end;
 
 procedure free_uTeams;
--- a/hedgewars/uTriggers.pas	Sat Mar 06 10:54:24 2010 +0000
+++ b/hedgewars/uTriggers.pas	Sat Mar 06 10:59:20 2010 +0000
@@ -147,7 +147,7 @@
 
 procedure init_uTriggers;
 begin
-	TriggerList:= nil;
+    TriggerList:= nil;
 end;
 
 procedure free_uTriggers;
--- a/hedgewars/uVisualGears.pas	Sat Mar 06 10:54:24 2010 +0000
+++ b/hedgewars/uVisualGears.pas	Sat Mar 06 10:59:20 2010 +0000
@@ -22,30 +22,30 @@
 interface
 uses SDLh, uConsts, uFloat,
 {$IFDEF GLES11}
-	gles11;
+    gles11;
 {$ELSE}
-	GL;
+    GL;
 {$ENDIF}
 
 type PVisualGear = ^TVisualGear;
-	TVGearStepProcedure = procedure (Gear: PVisualGear; Steps: Longword);
-	TVisualGear = record
-		NextGear, PrevGear: PVisualGear;
-		Frame,
-		FrameTicks: Longword;
-		X : hwFloat;
-		Y : hwFloat;
-		dX: hwFloat;
-		dY: hwFloat;
-		mdY: QWord;
-		Timer: Longword;
-		Angle, dAngle: real;
-		Kind: TVisualGearType;
-		doStep: TVGearStepProcedure;
-		Tex: PTexture;
+    TVGearStepProcedure = procedure (Gear: PVisualGear; Steps: Longword);
+    TVisualGear = record
+        NextGear, PrevGear: PVisualGear;
+        Frame,
+        FrameTicks: Longword;
+        X : hwFloat;
+        Y : hwFloat;
+        dX: hwFloat;
+        dY: hwFloat;
+        mdY: QWord;
+        Timer: Longword;
+        Angle, dAngle: real;
+        Kind: TVisualGearType;
+        doStep: TVGearStepProcedure;
+        Tex: PTexture;
         Hedgehog: pointer;
         Text: shortstring
-		end;
+        end;
 
 procedure init_uVisualGears;
 procedure free_uVisualGears;
@@ -67,18 +67,18 @@
 
 procedure AddDamageTag(X, Y, Damage, Color: LongWord);
 var s: shortstring;
-	Gear: PVisualGear;
+    Gear: PVisualGear;
 begin
 if cAltDamage then
-	begin
-	Gear:= AddVisualGear(X, Y, vgtSmallDamageTag);
-	if Gear <> nil then
-		with Gear^ do
-			begin
-			str(Damage, s);
-			Tex:= RenderStringTex(s, Color, fntSmall);
-			end
-	end
+    begin
+    Gear:= AddVisualGear(X, Y, vgtSmallDamageTag);
+    if Gear <> nil then
+        with Gear^ do
+            begin
+            str(Damage, s);
+            Tex:= RenderStringTex(s, Color, fntSmall);
+            end
+    end
 end;
 
 
@@ -86,15 +86,15 @@
 procedure doStepFlake(Gear: PVisualGear; Steps: Longword);
 begin
 with Gear^ do
-	begin
-	inc(FrameTicks, Steps);
-	if FrameTicks > vobFrameTicks then
-		begin
-		dec(FrameTicks, vobFrameTicks);
-		inc(Frame);
-		if Frame = vobFramesCount then Frame:= 0
-		end
-	end;
+    begin
+    inc(FrameTicks, Steps);
+    if FrameTicks > vobFrameTicks then
+        begin
+        dec(FrameTicks, vobFrameTicks);
+        inc(Frame);
+        if Frame = vobFramesCount then Frame:= 0
+        end
+    end;
 
 Gear^.X:= Gear^.X + (cWindSpeed * 200 + Gear^.dX) * Steps;
 Gear^.Y:= Gear^.Y + (Gear^.dY + cGravity * vobFallSpeed) * Steps;
@@ -112,14 +112,14 @@
 Gear^.X:= Gear^.X + (cWindSpeed * 200 + Gear^.dX) * Steps;
 
 for i:= 0 to Steps - 1 do
-	begin
-	if hwRound(Gear^.Y) > LAND_HEIGHT-1184 then // TODO - configure in theme
-		Gear^.dY:= Gear^.dY - _1div50000
-	else
-		Gear^.dY:= Gear^.dY + _1div50000;
+    begin
+    if hwRound(Gear^.Y) > LAND_HEIGHT-1184 then // TODO - configure in theme
+        Gear^.dY:= Gear^.dY - _1div50000
+    else
+        Gear^.dY:= Gear^.dY + _1div50000;
 
-	Gear^.Y:= Gear^.Y + Gear^.dY
-	end;
+    Gear^.Y:= Gear^.Y + Gear^.dY
+    end;
 
 if hwRound(Gear^.X) < -cScreenWidth - 256 then Gear^.X:= int2hwFloat(cScreenWidth + LAND_WIDTH) else
 if hwRound(Gear^.X) > cScreenWidth + LAND_WIDTH then Gear^.X:= int2hwFloat(-cScreenWidth - 256)
@@ -133,13 +133,13 @@
 //Gear^.dY:= Gear^.dY + cGravity;
 
 if Gear^.FrameTicks <= Steps then
-	if Gear^.Frame = 0 then DeleteVisualGear(Gear)
-	else
-		begin
-		dec(Gear^.Frame);
-		Gear^.FrameTicks:= cExplFrameTicks
-		end
-	else dec(Gear^.FrameTicks, Steps)
+    if Gear^.Frame = 0 then DeleteVisualGear(Gear)
+    else
+        begin
+        dec(Gear^.Frame);
+        Gear^.FrameTicks:= cExplFrameTicks
+        end
+    else dec(Gear^.FrameTicks, Steps)
 end;
 
 procedure doStepFire(Gear: PVisualGear; Steps: Longword);
@@ -152,7 +152,7 @@
 if Gear^.FrameTicks <= Steps then
        DeleteVisualGear(Gear)
 else
-	dec(Gear^.FrameTicks, Steps)
+    dec(Gear^.FrameTicks, Steps)
 end;
 
 procedure doStepShell(Gear: PVisualGear; Steps: Longword);
@@ -165,9 +165,9 @@
 Gear^.Angle:= round(Gear^.Angle + Steps) mod cMaxAngle;
 
 if Gear^.FrameTicks <= Steps then
-	DeleteVisualGear(Gear)
+    DeleteVisualGear(Gear)
 else
-	dec(Gear^.FrameTicks, Steps)
+    dec(Gear^.FrameTicks, Steps)
 end;
 
 procedure doStepSmallDamage(Gear: PVisualGear; Steps: Longword);
@@ -175,20 +175,20 @@
 Gear^.Y:= Gear^.Y - _0_02 * Steps;
 
 if Gear^.FrameTicks <= Steps then
-	DeleteVisualGear(Gear)
+    DeleteVisualGear(Gear)
 else
-	dec(Gear^.FrameTicks, Steps)
+    dec(Gear^.FrameTicks, Steps)
 end;
 
 procedure doStepBubble(Gear: PVisualGear; Steps: Longword);
 begin
-	Gear^.X:= Gear^.X + (cWindSpeed * 100 + Gear^.dX) * Steps;
-	Gear^.Y:= Gear^.Y - cDrownSpeed * Steps;
+    Gear^.X:= Gear^.X + (cWindSpeed * 100 + Gear^.dX) * Steps;
+    Gear^.Y:= Gear^.Y - cDrownSpeed * Steps;
 
-	if (Gear^.FrameTicks <= Steps) or (hwRound(Gear^.Y) < cWaterLine) then
-		DeleteVisualGear(Gear)
-	else
-		dec(Gear^.FrameTicks, Steps)
+    if (Gear^.FrameTicks <= Steps) or (hwRound(Gear^.Y) < cWaterLine) then
+        DeleteVisualGear(Gear)
+    else
+        dec(Gear^.FrameTicks, Steps)
 end;
 
 procedure doStepHealth(Gear: PVisualGear; Steps: Longword);
@@ -197,134 +197,134 @@
 Gear^.Y:= Gear^.Y - Gear^.dY * Steps;
 
 if Gear^.FrameTicks <= Steps then
-	DeleteVisualGear(Gear)
+    DeleteVisualGear(Gear)
 else
-	dec(Gear^.FrameTicks, Steps);
+    dec(Gear^.FrameTicks, Steps);
 end;
 
 procedure doStepSteam(Gear: PVisualGear; Steps: Longword);
 begin
-	Gear^.X:= Gear^.X + (cWindSpeed * 100 + Gear^.dX) * Steps;
-	Gear^.Y:= Gear^.Y - cDrownSpeed * Steps;
+    Gear^.X:= Gear^.X + (cWindSpeed * 100 + Gear^.dX) * Steps;
+    Gear^.Y:= Gear^.Y - cDrownSpeed * Steps;
 
-	if Gear^.FrameTicks <= Steps then
-		if Gear^.Frame = 0 then DeleteVisualGear(Gear)
-		else
-			begin
-			if Random(2) = 0 then dec(Gear^.Frame);
-			Gear^.FrameTicks:= cExplFrameTicks
-			end
-		else dec(Gear^.FrameTicks, Steps)
+    if Gear^.FrameTicks <= Steps then
+        if Gear^.Frame = 0 then DeleteVisualGear(Gear)
+        else
+            begin
+            if Random(2) = 0 then dec(Gear^.Frame);
+            Gear^.FrameTicks:= cExplFrameTicks
+            end
+        else dec(Gear^.FrameTicks, Steps)
 end;
 
 procedure doStepSmoke(Gear: PVisualGear; Steps: Longword);
 begin
-	Gear^.X:= Gear^.X + (cWindSpeed + Gear^.dX) * Steps;
-	Gear^.Y:= Gear^.Y - (cDrownSpeed + Gear^.dY) * Steps;
+    Gear^.X:= Gear^.X + (cWindSpeed + Gear^.dX) * Steps;
+    Gear^.Y:= Gear^.Y - (cDrownSpeed + Gear^.dY) * Steps;
 
-	Gear^.dX := Gear^.dX + (cWindSpeed * _0_3 * Steps);
-	//Gear^.dY := Gear^.dY - (cDrownSpeed * _0_995);
+    Gear^.dX := Gear^.dX + (cWindSpeed * _0_3 * Steps);
+    //Gear^.dY := Gear^.dY - (cDrownSpeed * _0_995);
 
-	if Gear^.FrameTicks <= Steps then
-		if Gear^.Frame = 0 then DeleteVisualGear(Gear)
-		else
-			begin
-			if Random(2) = 0 then dec(Gear^.Frame);
-			Gear^.FrameTicks:= cExplFrameTicks
-			end
-		else dec(Gear^.FrameTicks, Steps)
+    if Gear^.FrameTicks <= Steps then
+        if Gear^.Frame = 0 then DeleteVisualGear(Gear)
+        else
+            begin
+            if Random(2) = 0 then dec(Gear^.Frame);
+            Gear^.FrameTicks:= cExplFrameTicks
+            end
+        else dec(Gear^.FrameTicks, Steps)
 end;
 
 procedure doStepDust(Gear: PVisualGear; Steps: Longword);
 begin
-	Gear^.X:= Gear^.X + (cWindSpeed + (cWindSpeed * _0_03 * Steps) + Gear^.dX) * Steps;
-	Gear^.Y:= Gear^.Y - (Gear^.dY) * Steps;
+    Gear^.X:= Gear^.X + (cWindSpeed + (cWindSpeed * _0_03 * Steps) + Gear^.dX) * Steps;
+    Gear^.Y:= Gear^.Y - (Gear^.dY) * Steps;
 
-	Gear^.dX := Gear^.dX - (Gear^.dX * _0_005 * Steps);
-	Gear^.dY := Gear^.dY - (cDrownSpeed * _0_001 * Steps);
+    Gear^.dX := Gear^.dX - (Gear^.dX * _0_005 * Steps);
+    Gear^.dY := Gear^.dY - (cDrownSpeed * _0_001 * Steps);
 
-	if Gear^.FrameTicks <= Steps then
-		if Gear^.Frame = 0 then DeleteVisualGear(Gear)
-		else
-			begin
-			dec(Gear^.Frame);
-			Gear^.FrameTicks:= cExplFrameTicks
-			end
-		else dec(Gear^.FrameTicks, Steps)
+    if Gear^.FrameTicks <= Steps then
+        if Gear^.Frame = 0 then DeleteVisualGear(Gear)
+        else
+            begin
+            dec(Gear^.Frame);
+            Gear^.FrameTicks:= cExplFrameTicks
+            end
+        else dec(Gear^.FrameTicks, Steps)
 end;
 
 ////////////////////////////////////////////////////////////////////////////////
 const cSorterWorkTime = 640;
 var thexchar: array[0..cMaxTeams] of
-			record
-			dy, ny, dw: LongInt;
-			team: PTeam;
-			SortFactor: QWord;
-			end;
+            record
+            dy, ny, dw: LongInt;
+            team: PTeam;
+            SortFactor: QWord;
+            end;
     currsorter: PVisualGear = nil;
 
 procedure doStepTeamHealthSorterWork(Gear: PVisualGear; Steps: Longword);
 var i, t: LongInt;
 begin
 for t:= 1 to Steps do
-	begin
-	dec(Gear^.Timer);
-	if (Gear^.Timer and 15) = 0 then
-		for i:= 0 to Pred(TeamsCount) do
-			with thexchar[i] do
-				begin
-				{$WARNINGS OFF}
-				team^.DrawHealthY:= ny + dy * Gear^.Timer div 640;
-				team^.TeamHealthBarWidth:= team^.NewTeamHealthBarWidth + dw * Gear^.Timer div cSorterWorkTime;
-				{$WARNINGS ON}
-				end;
+    begin
+    dec(Gear^.Timer);
+    if (Gear^.Timer and 15) = 0 then
+        for i:= 0 to Pred(TeamsCount) do
+            with thexchar[i] do
+                begin
+                {$WARNINGS OFF}
+                team^.DrawHealthY:= ny + dy * Gear^.Timer div 640;
+                team^.TeamHealthBarWidth:= team^.NewTeamHealthBarWidth + dw * Gear^.Timer div cSorterWorkTime;
+                {$WARNINGS ON}
+                end;
 
-	if (Gear^.Timer = 0) or (currsorter <> Gear) then
-		begin
-		if currsorter = Gear then currsorter:= nil;
-		DeleteVisualGear(Gear);
-		exit
-		end
-	end
+    if (Gear^.Timer = 0) or (currsorter <> Gear) then
+        begin
+        if currsorter = Gear then currsorter:= nil;
+        DeleteVisualGear(Gear);
+        exit
+        end
+    end
 end;
 
 procedure doStepTeamHealthSorter(Gear: PVisualGear; Steps: Longword);
 var i: Longword;
-	b: boolean;
-	t: LongInt;
+    b: boolean;
+    t: LongInt;
 begin
 for t:= 0 to Pred(TeamsCount) do
-	with thexchar[t] do
-		begin
-		dy:= TeamsArray[t]^.DrawHealthY;
-		dw:= TeamsArray[t]^.TeamHealthBarWidth - TeamsArray[t]^.NewTeamHealthBarWidth;
-		team:= TeamsArray[t];
-		SortFactor:= TeamsArray[t]^.Clan^.ClanHealth;
-		SortFactor:= (SortFactor shl  3) + TeamsArray[t]^.Clan^.ClanIndex;
-		SortFactor:= (SortFactor shl 30) + TeamsArray[t]^.TeamHealth;
-		end;
+    with thexchar[t] do
+        begin
+        dy:= TeamsArray[t]^.DrawHealthY;
+        dw:= TeamsArray[t]^.TeamHealthBarWidth - TeamsArray[t]^.NewTeamHealthBarWidth;
+        team:= TeamsArray[t];
+        SortFactor:= TeamsArray[t]^.Clan^.ClanHealth;
+        SortFactor:= (SortFactor shl  3) + TeamsArray[t]^.Clan^.ClanIndex;
+        SortFactor:= (SortFactor shl 30) + TeamsArray[t]^.TeamHealth;
+        end;
 
 if TeamsCount > 1 then
-	repeat
-	b:= true;
-	for t:= 0 to TeamsCount - 2 do
-		if (thexchar[t].SortFactor > thexchar[Succ(t)].SortFactor) then
-			begin
-			thexchar[cMaxTeams]:= thexchar[t];
-			thexchar[t]:= thexchar[Succ(t)];
-			thexchar[Succ(t)]:= thexchar[cMaxTeams];
-			b:= false
-			end
-	until b;
+    repeat
+    b:= true;
+    for t:= 0 to TeamsCount - 2 do
+        if (thexchar[t].SortFactor > thexchar[Succ(t)].SortFactor) then
+            begin
+            thexchar[cMaxTeams]:= thexchar[t];
+            thexchar[t]:= thexchar[Succ(t)];
+            thexchar[Succ(t)]:= thexchar[cMaxTeams];
+            b:= false
+            end
+    until b;
 
 t:= - 4;
 for i:= 0 to Pred(TeamsCount) do
-	with thexchar[i] do
-		begin
-		dec(t, team^.HealthTex^.h + 2);
-		ny:= t;
-		dy:= dy - ny
-		end;
+    with thexchar[i] do
+        begin
+        dec(t, team^.HealthTex^.h + 2);
+        ny:= t;
+        dy:= dy - ny
+        end;
 
 Gear^.Timer:= cSorterWorkTime;
 Gear^.doStep:= @doStepTeamHealthSorterWork;
@@ -337,17 +337,17 @@
 if Gear^.Timer > Steps then dec(Gear^.Timer, Steps) else Gear^.Timer:= 0;
 
 if (PHedgehog(Gear^.Hedgehog)^.Gear <> nil) then
-	begin
-	Gear^.X:= PHedgehog(Gear^.Hedgehog)^.Gear^.X + int2hwFloat(Gear^.Tex^.w div 2  - Gear^.FrameTicks);
-	Gear^.Y:= PHedgehog(Gear^.Hedgehog)^.Gear^.Y - int2hwFloat(16 + Gear^.Tex^.h);
-	end;
+    begin
+    Gear^.X:= PHedgehog(Gear^.Hedgehog)^.Gear^.X + int2hwFloat(Gear^.Tex^.w div 2  - Gear^.FrameTicks);
+    Gear^.Y:= PHedgehog(Gear^.Hedgehog)^.Gear^.Y - int2hwFloat(16 + Gear^.Tex^.h);
+    end;
 
 if Gear^.Timer = 0 then
-	begin
-	if PHedgehog(Gear^.Hedgehog)^.SpeechGear = Gear then
-		PHedgehog(Gear^.Hedgehog)^.SpeechGear:= nil;
-	DeleteVisualGear(Gear)
-	end;
+    begin
+    if PHedgehog(Gear^.Hedgehog)^.SpeechGear = Gear then
+        PHedgehog(Gear^.Hedgehog)^.SpeechGear:= nil;
+    DeleteVisualGear(Gear)
+    end;
 end;
 
 procedure doStepSpeechBubble(Gear: PVisualGear; Steps: Longword);
@@ -374,44 +374,44 @@
 
 // ==================================================================
 const doStepHandlers: array[TVisualGearType] of TVGearStepProcedure =
-		(
-			@doStepFlake,
-			@doStepCloud,
-			@doStepExpl,
-			@doStepExpl,
-			@doStepFire,
-			@doStepSmallDamage,
-			@doStepTeamHealthSorter,
-			@doStepSpeechBubble,
-			@doStepBubble,
-			@doStepSteam,
-			@doStepSmoke,
-			@doStepSmoke,
-			@doStepHealth,
-			@doStepShell,
-			@doStepDust
-		);
+        (
+            @doStepFlake,
+            @doStepCloud,
+            @doStepExpl,
+            @doStepExpl,
+            @doStepFire,
+            @doStepSmallDamage,
+            @doStepTeamHealthSorter,
+            @doStepSpeechBubble,
+            @doStepBubble,
+            @doStepSteam,
+            @doStepSmoke,
+            @doStepSmoke,
+            @doStepHealth,
+            @doStepShell,
+            @doStepDust
+        );
 
 function  AddVisualGear(X, Y: LongInt; Kind: TVisualGearType): PVisualGear;
 var gear: PVisualGear;
-	t: Longword;
-	sp: hwFloat;
+    t: Longword;
+    sp: hwFloat;
 begin
 if (GameType = gmtSave) or (fastUntilLag and (GameType = gmtNet)) then // we are scrolling now
-	if Kind <> vgtCloud then
-		begin
-		AddVisualGear:= nil;
-		exit
-		end;
+    if Kind <> vgtCloud then
+        begin
+        AddVisualGear:= nil;
+        exit
+        end;
 
 if cReducedQuality and
    (Kind <> vgtTeamHealthSorter) and
    (Kind <> vgtSmallDamageTag) and
    (Kind <> vgtSpeechBubble) then
-	begin
-	AddVisualGear:= nil;
-	exit
-	end;
+    begin
+    AddVisualGear:= nil;
+    exit
+    end;
 
 New(gear);
 FillChar(gear^, sizeof(TVisualGear), 0);
@@ -421,96 +421,96 @@
 gear^.doStep:= doStepHandlers[Kind];
 
 with gear^ do
-	case Kind of
-	vgtFlake: begin
-				FrameTicks:= random(vobFrameTicks);
-				Frame:= random(vobFramesCount);
-				Angle:= random * 360;
-				dx.isNegative:= random(2) = 0;
-				dx.QWordValue:= random(100000000);
-				dy.isNegative:= false;
-				dy.QWordValue:= random(70000000);
-				dAngle:= (random(2) * 2 - 1) * (1 + random) * vobVelocity / 1000
-				end;
-	vgtCloud: begin
-				Frame:= random(4);
-				dx.isNegative:= random(2) = 0;
-				dx.QWordValue:= random(214748364);
-				dy.isNegative:= random(2) = 0;
-				dy.QWordValue:= 21474836 + random(64424509);
-				mdY:= dy.QWordValue
-				end;
-	vgtExplPart,
-	vgtExplPart2: begin
-				t:= random(1024);
-				sp:= _0_001 * (random(95) + 70);
-				dx:= AngleSin(t) * sp;
-				dx.isNegative:= random(2) = 0;
-				dy:= AngleCos(t) * sp;
-				dy.isNegative:= random(2) = 0;
-				Frame:= 7 - random(3);
-				FrameTicks:= cExplFrameTicks
-				end;
-		vgtFire: begin
-				t:= random(1024);
-				sp:= _0_001 * (random(85) + 95);
-				dx:= AngleSin(t) * sp;
-				dx.isNegative:= random(2) = 0;
-				dy:= AngleCos(t) * sp;
-				dy.isNegative:= random(2) = 0;
-				FrameTicks:= 650 + random(250);
-				Frame:= random(8)
-				end;
-		vgtShell: FrameTicks:= 500;
-	vgtSmallDamageTag: begin
-				gear^.FrameTicks:= 1100
-				end;
-	vgtBubble: begin
-				dx.isNegative:= random(2) = 0;
-				dx.QWordValue:= random(100000000);
-				dy:= _0_001 * (random(85) + 95);
-				dy.isNegative:= false;
-				FrameTicks:= 250 + random(1751);
-				Frame:= random(5)
-				end;
-	vgtSteam: begin
-				dx.isNegative:= random(2) = 0;
-				dx.QWordValue:= random(100000000);
-				dy:= _0_001 * (random(85) + 95);
-				dy.isNegative:= false;
-				Frame:= 7 - random(3);
-				FrameTicks:= cExplFrameTicks * 2;
-				end;
+    case Kind of
+    vgtFlake: begin
+                FrameTicks:= random(vobFrameTicks);
+                Frame:= random(vobFramesCount);
+                Angle:= random * 360;
+                dx.isNegative:= random(2) = 0;
+                dx.QWordValue:= random(100000000);
+                dy.isNegative:= false;
+                dy.QWordValue:= random(70000000);
+                dAngle:= (random(2) * 2 - 1) * (1 + random) * vobVelocity / 1000
+                end;
+    vgtCloud: begin
+                Frame:= random(4);
+                dx.isNegative:= random(2) = 0;
+                dx.QWordValue:= random(214748364);
+                dy.isNegative:= random(2) = 0;
+                dy.QWordValue:= 21474836 + random(64424509);
+                mdY:= dy.QWordValue
+                end;
+    vgtExplPart,
+    vgtExplPart2: begin
+                t:= random(1024);
+                sp:= _0_001 * (random(95) + 70);
+                dx:= AngleSin(t) * sp;
+                dx.isNegative:= random(2) = 0;
+                dy:= AngleCos(t) * sp;
+                dy.isNegative:= random(2) = 0;
+                Frame:= 7 - random(3);
+                FrameTicks:= cExplFrameTicks
+                end;
+        vgtFire: begin
+                t:= random(1024);
+                sp:= _0_001 * (random(85) + 95);
+                dx:= AngleSin(t) * sp;
+                dx.isNegative:= random(2) = 0;
+                dy:= AngleCos(t) * sp;
+                dy.isNegative:= random(2) = 0;
+                FrameTicks:= 650 + random(250);
+                Frame:= random(8)
+                end;
+        vgtShell: FrameTicks:= 500;
+    vgtSmallDamageTag: begin
+                gear^.FrameTicks:= 1100
+                end;
+    vgtBubble: begin
+                dx.isNegative:= random(2) = 0;
+                dx.QWordValue:= random(100000000);
+                dy:= _0_001 * (random(85) + 95);
+                dy.isNegative:= false;
+                FrameTicks:= 250 + random(1751);
+                Frame:= random(5)
+                end;
+    vgtSteam: begin
+                dx.isNegative:= random(2) = 0;
+                dx.QWordValue:= random(100000000);
+                dy:= _0_001 * (random(85) + 95);
+                dy.isNegative:= false;
+                Frame:= 7 - random(3);
+                FrameTicks:= cExplFrameTicks * 2;
+                end;
   vgtSmokeWhite, 
   vgtSmoke: begin
-				dx:= _0_0002 * (random(45) + 10);
-				dx.isNegative:= random(2) = 0;
-				dy:= _0_0002 * (random(45) + 10);
-				dy.isNegative:= false;
-				Frame:= 7 - random(2);
-				FrameTicks:= cExplFrameTicks * 2;
-				end;
-	vgtHealth: begin
-				dx:= _0_001 * random(45);
-				dx.isNegative:= random(2) = 0;
-				dy:= _0_001 * (random(20) + 25);
-				Frame:= 0;
-				FrameTicks:= random(750) + 1250;
-				end;
+                dx:= _0_0002 * (random(45) + 10);
+                dx.isNegative:= random(2) = 0;
+                dy:= _0_0002 * (random(45) + 10);
+                dy.isNegative:= false;
+                Frame:= 7 - random(2);
+                FrameTicks:= cExplFrameTicks * 2;
+                end;
+    vgtHealth: begin
+                dx:= _0_001 * random(45);
+                dx.isNegative:= random(2) = 0;
+                dy:= _0_001 * (random(20) + 25);
+                Frame:= 0;
+                FrameTicks:= random(750) + 1250;
+                end;
   vgtDust: begin
-				dx:= _0_005 * (random(15) + 10);
-				dx.isNegative:= random(2) = 0;
-				dy:= _0_001 * (random(40) + 20);
-				Frame:= 7 - random(2);
-				FrameTicks:= random(20) + 15;
-				end;
-		end;
+                dx:= _0_005 * (random(15) + 10);
+                dx.isNegative:= random(2) = 0;
+                dy:= _0_001 * (random(40) + 20);
+                Frame:= 7 - random(2);
+                FrameTicks:= random(20) + 15;
+                end;
+        end;
 
 if VisualGearsList <> nil then
-	begin
-	VisualGearsList^.PrevGear:= gear;
-	gear^.NextGear:= VisualGearsList
-	end;
+    begin
+    VisualGearsList^.PrevGear:= gear;
+    gear^.NextGear:= VisualGearsList
+    end;
 VisualGearsList:= gear;
 
 AddVisualGear:= gear;
@@ -519,7 +519,7 @@
 procedure DeleteVisualGear(Gear: PVisualGear);
 begin
 if Gear^.Tex <> nil then
-	FreeTexture(Gear^.Tex);
+    FreeTexture(Gear^.Tex);
 
 if Gear^.NextGear <> nil then Gear^.NextGear^.PrevGear:= Gear^.PrevGear;
 if Gear^.PrevGear <> nil then Gear^.PrevGear^.NextGear:= Gear^.NextGear
@@ -547,59 +547,59 @@
 begin
 Gear:= VisualGearsList;
 case Layer of
-	0: while Gear <> nil do
-		begin
-		case Gear^.Kind of
-			vgtFlake: if vobVelocity = 0 then
-						DrawSprite(sprFlake, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, Gear^.Frame)
-					else
-						DrawRotatedF(sprFlake, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, Gear^.Frame, 1, Gear^.Angle);
-			vgtCloud: DrawSprite(sprCloud, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, Gear^.Frame);
-			end;
-		Gear:= Gear^.NextGear
-		end;
-	1: while Gear <> nil do
-		begin
-			if not cReducedQuality then
-				case Gear^.Kind of
-					vgtSmoke: DrawSprite(sprSmoke, hwRound(Gear^.X) + WorldDx - 11, hwRound(Gear^.Y) + WorldDy - 11, 7 - Gear^.Frame);
-					vgtSmokeWhite: DrawSprite(sprSmokeWhite, hwRound(Gear^.X) + WorldDx - 11, hwRound(Gear^.Y) + WorldDy - 11, 7 - Gear^.Frame);
-					vgtDust: DrawSprite(sprDust, hwRound(Gear^.X) + WorldDx - 11, hwRound(Gear^.Y) + WorldDy - 11, 7 - Gear^.Frame);
-				end;
-		Gear:= Gear^.NextGear
-		end;
-	2: while Gear <> nil do
-		begin
+    0: while Gear <> nil do
+        begin
+        case Gear^.Kind of
+            vgtFlake: if vobVelocity = 0 then
+                        DrawSprite(sprFlake, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, Gear^.Frame)
+                    else
+                        DrawRotatedF(sprFlake, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, Gear^.Frame, 1, Gear^.Angle);
+            vgtCloud: DrawSprite(sprCloud, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, Gear^.Frame);
+            end;
+        Gear:= Gear^.NextGear
+        end;
+    1: while Gear <> nil do
+        begin
+            if not cReducedQuality then
+                case Gear^.Kind of
+                    vgtSmoke: DrawSprite(sprSmoke, hwRound(Gear^.X) + WorldDx - 11, hwRound(Gear^.Y) + WorldDy - 11, 7 - Gear^.Frame);
+                    vgtSmokeWhite: DrawSprite(sprSmokeWhite, hwRound(Gear^.X) + WorldDx - 11, hwRound(Gear^.Y) + WorldDy - 11, 7 - Gear^.Frame);
+                    vgtDust: DrawSprite(sprDust, hwRound(Gear^.X) + WorldDx - 11, hwRound(Gear^.Y) + WorldDy - 11, 7 - Gear^.Frame);
+                end;
+        Gear:= Gear^.NextGear
+        end;
+    2: while Gear <> nil do
+        begin
         if not cReducedQuality then
             case Gear^.Kind of
                 vgtExplPart: DrawSprite(sprExplPart, hwRound(Gear^.X) + WorldDx - 16, hwRound(Gear^.Y) + WorldDy - 16, 7 - Gear^.Frame);
                 vgtExplPart2: DrawSprite(sprExplPart2, hwRound(Gear^.X) + WorldDx - 16, hwRound(Gear^.Y) + WorldDy - 16, 7 - Gear^.Frame);
                 vgtFire: DrawSprite(sprFlame, hwRound(Gear^.X) + WorldDx - 8, hwRound(Gear^.Y) + WorldDy, (RealTicks div 64 + Gear^.Frame) mod 8);
-				vgtBubble: DrawSprite(sprBubbles, hwRound(Gear^.X) + WorldDx - 8, hwRound(Gear^.Y) + WorldDy - 8, Gear^.Frame);//(RealTicks div 64 + Gear^.Frame) mod 8);
-				vgtSteam: DrawSprite(sprExplPart, hwRound(Gear^.X) + WorldDx - 16, hwRound(Gear^.Y) + WorldDy - 16, 7 - Gear^.Frame);
-				vgtHealth:  begin
-							case Gear^.Frame div 10 of
-								0:glColor4f(0, 1, 0, Gear^.FrameTicks / 1000);
-								1:glColor4f(1, 0, 0, Gear^.FrameTicks / 1000);
-							end;
-							DrawSprite(sprHealth, hwRound(Gear^.X) + WorldDx - 8, hwRound(Gear^.Y) + WorldDy - 8, 0);
-							glColor4f(1, 1, 1, 1);
-							end;
-				vgtShell: begin
-							if Gear^.FrameTicks < 250 then
-								glColor4f(1, 1, 1, Gear^.FrameTicks / 250);
-							DrawRotatedF(sprShell, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, Gear^.Frame, 1, Gear^.Angle);
-							if Gear^.FrameTicks < 250 then
-								glColor4f(1, 1, 1, 1);
-							end;
+                vgtBubble: DrawSprite(sprBubbles, hwRound(Gear^.X) + WorldDx - 8, hwRound(Gear^.Y) + WorldDy - 8, Gear^.Frame);//(RealTicks div 64 + Gear^.Frame) mod 8);
+                vgtSteam: DrawSprite(sprExplPart, hwRound(Gear^.X) + WorldDx - 16, hwRound(Gear^.Y) + WorldDy - 16, 7 - Gear^.Frame);
+                vgtHealth:  begin
+                            case Gear^.Frame div 10 of
+                                0:glColor4f(0, 1, 0, Gear^.FrameTicks / 1000);
+                                1:glColor4f(1, 0, 0, Gear^.FrameTicks / 1000);
+                            end;
+                            DrawSprite(sprHealth, hwRound(Gear^.X) + WorldDx - 8, hwRound(Gear^.Y) + WorldDy - 8, 0);
+                            glColor4f(1, 1, 1, 1);
+                            end;
+                vgtShell: begin
+                            if Gear^.FrameTicks < 250 then
+                                glColor4f(1, 1, 1, Gear^.FrameTicks / 250);
+                            DrawRotatedF(sprShell, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, Gear^.Frame, 1, Gear^.Angle);
+                            if Gear^.FrameTicks < 250 then
+                                glColor4f(1, 1, 1, 1);
+                            end;
             end;
         case Gear^.Kind of
             vgtSmallDamageTag: DrawCentered(hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, Gear^.Tex);
             vgtSpeechBubble: if Gear^.Tex <> nil then DrawCentered(hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, Gear^.Tex);
         end;
-		Gear:= Gear^.NextGear
-		end
-	end
+        Gear:= Gear^.NextGear
+        end
+    end
 end;
 
 procedure AddClouds;
@@ -611,12 +611,12 @@
 
 procedure init_uVisualGears;
 begin
-	VisualGearsList:= nil;
+    VisualGearsList:= nil;
 end;
 
 procedure free_uVisualGears;
 begin
-	while VisualGearsList <> nil do DeleteVisualGear(VisualGearsList);
+    while VisualGearsList <> nil do DeleteVisualGear(VisualGearsList);
 end;
 
 end.
--- a/hedgewars/uWorld.pas	Sat Mar 06 10:54:24 2010 +0000
+++ b/hedgewars/uWorld.pas	Sat Mar 06 10:59:20 2010 +0000
@@ -46,11 +46,11 @@
 procedure HideMission;
 
 implementation
-uses	uStore, uMisc, uTeams, uIO, uConsole, uKeys, uLocale, uSound, uAmmos, uVisualGears, uChat, uLandTexture, uLand,
+uses    uStore, uMisc, uTeams, uIO, uConsole, uKeys, uLocale, uSound, uAmmos, uVisualGears, uChat, uLandTexture, uLand,
 {$IFDEF GLES11}
-	gles11;
+    gles11;
 {$ELSE}
-	GL;
+    GL;
 {$ENDIF}
 
 type TCaptionStr = record
@@ -68,9 +68,9 @@
     CountTicks: Longword;
     SoundTimerTicks: Longword;
     prevPoint: TPoint;
-	amSel: TAmmoType = amNothing;
-	missionTex: PTexture;
-	missionTimer: LongInt;
+    amSel: TAmmoType = amNothing;
+    missionTex: PTexture;
+    missionTimer: LongInt;
 
 procedure InitWorld;
 var i, t: LongInt;
@@ -122,18 +122,18 @@
 
 // modified damage modificator?
 if cDamagePercent <> 100 then
-	g:= AddGoal(g, gfAny, gidDamageModifier, cDamagePercent);
+    g:= AddGoal(g, gfAny, gidDamageModifier, cDamagePercent);
 
 // modified mine timers?
 if cMinesTime <> 3000 then
-	begin
-	if cMinesTime = 0 then
-		g:= AddGoal(g, gfMines, gidNoMineTimer)
-	else if cMinesTime < 0 then
-		g:= AddGoal(g, gfMines, gidRandomMineTimer)
-	else
-		g:= AddGoal(g, gfMines, gidMineTimer, cMinesTime div 1000);
-	end;
+    begin
+    if cMinesTime = 0 then
+        g:= AddGoal(g, gfMines, gidNoMineTimer)
+    else if cMinesTime < 0 then
+        g:= AddGoal(g, gfMines, gidRandomMineTimer)
+    else
+        g:= AddGoal(g, gfMines, gidMineTimer, cMinesTime div 1000);
+    end;
 
 // check different game flags
 g:= AddGoal(g, gfForts, gidForts); // forts?
@@ -210,70 +210,70 @@
 dec(y, 33);
 DrawSprite(sprAMSlotName, x, y, 0);
 for i:= cMaxSlotIndex downto 0 do
-	if ((i = 0) and (Ammo^[i, 1].Count > 0)) or ((i <> 0) and (Ammo^[i, 0].Count > 0)) then
-		begin
-		if (cScreenHeight - CursorPoint.Y >= y - 33) and (cScreenHeight - CursorPoint.Y < y) then Slot:= i;
-		dec(y, 33);
-		inc(SlotsNum);
-		DrawSprite(sprAMSlot, x, y, 0);
-		DrawSprite(sprAMSlotKeys, x + 2, y + 1, i);
-		t:= 0;
+    if ((i = 0) and (Ammo^[i, 1].Count > 0)) or ((i <> 0) and (Ammo^[i, 0].Count > 0)) then
+        begin
+        if (cScreenHeight - CursorPoint.Y >= y - 33) and (cScreenHeight - CursorPoint.Y < y) then Slot:= i;
+        dec(y, 33);
+        inc(SlotsNum);
+        DrawSprite(sprAMSlot, x, y, 0);
+        DrawSprite(sprAMSlotKeys, x + 2, y + 1, i);
+        t:= 0;
                     g:= 0;
-		while (t <= cMaxSlotAmmoIndex) and (Ammo^[i, t].Count > 0) do
-			begin
-			if (Ammo^[i, t].AmmoType <> amNothing) then
-				begin
-				l:= Ammoz[Ammo^[i, t].AmmoType].SkipTurns - CurrentTeam^.Clan^.TurnNumber;
+        while (t <= cMaxSlotAmmoIndex) and (Ammo^[i, t].Count > 0) do
+            begin
+            if (Ammo^[i, t].AmmoType <> amNothing) then
+                begin
+                l:= Ammoz[Ammo^[i, t].AmmoType].SkipTurns - CurrentTeam^.Clan^.TurnNumber;
 
-				if l >= 0 then
-					begin
-					DrawSprite(sprAMAmmosBW, x + g * 33 + 35, y + 1, LongInt(Ammo^[i, t].AmmoType)-1);
+                if l >= 0 then
+                    begin
+                    DrawSprite(sprAMAmmosBW, x + g * 33 + 35, y + 1, LongInt(Ammo^[i, t].AmmoType)-1);
                     if l < 100 then DrawSprite(sprTurnsLeft, x + g * 33 + 51, y + 17, l);
-					end else
-					DrawSprite(sprAMAmmos, x + g * 33 + 35, y + 1, LongInt(Ammo^[i, t].AmmoType)-1);
-				if (Slot = i)
-				and (CursorPoint.X >= x + g * 33 + 35)
-				and (CursorPoint.X < x + g * 33 + 68) then
-					begin
-					if (l < 0) then DrawSprite(sprAMSelection, x + g * 33 + 35, y + 1, 0);
-					Pos:= t;
-					end;
-				inc(g)
-				end;
-				inc(t)
-			end
-		end;
+                    end else
+                    DrawSprite(sprAMAmmos, x + g * 33 + 35, y + 1, LongInt(Ammo^[i, t].AmmoType)-1);
+                if (Slot = i)
+                and (CursorPoint.X >= x + g * 33 + 35)
+                and (CursorPoint.X < x + g * 33 + 68) then
+                    begin
+                    if (l < 0) then DrawSprite(sprAMSelection, x + g * 33 + 35, y + 1, 0);
+                    Pos:= t;
+                    end;
+                inc(g)
+                end;
+                inc(t)
+            end
+        end;
 dec(y, 1);
 DrawSprite(sprAMBorders, x, y, 0);
 
 if (Pos >= 0) then
-	begin
-	if (Ammo^[Slot, Pos].Count > 0) and (Ammo^[Slot, Pos].AmmoType <> amNothing) then
-		if (amSel <> Ammo^[Slot, Pos].AmmoType) or (WeaponTooltipTex = nil) then
-			begin
-			amSel:= Ammo^[Slot, Pos].AmmoType;
-			RenderWeaponTooltip(amSel)
-			end;
-		
-		DrawTexture(cScreenWidth div 2 - 200 + AMxShift, cScreenHeight - 68, Ammoz[Ammo^[Slot, Pos].AmmoType].NameTex);
+    begin
+    if (Ammo^[Slot, Pos].Count > 0) and (Ammo^[Slot, Pos].AmmoType <> amNothing) then
+        if (amSel <> Ammo^[Slot, Pos].AmmoType) or (WeaponTooltipTex = nil) then
+            begin
+            amSel:= Ammo^[Slot, Pos].AmmoType;
+            RenderWeaponTooltip(amSel)
+            end;
+        
+        DrawTexture(cScreenWidth div 2 - 200 + AMxShift, cScreenHeight - 68, Ammoz[Ammo^[Slot, Pos].AmmoType].NameTex);
 
-		if Ammo^[Slot, Pos].Count < AMMO_INFINITE then
-			DrawTexture(cScreenWidth div 2 + AMxShift - 35, cScreenHeight - 68, CountTexz[Ammo^[Slot, Pos].Count]);
+        if Ammo^[Slot, Pos].Count < AMMO_INFINITE then
+            DrawTexture(cScreenWidth div 2 + AMxShift - 35, cScreenHeight - 68, CountTexz[Ammo^[Slot, Pos].Count]);
 
-		if bSelected and (Ammoz[Ammo^[Slot, Pos].AmmoType].SkipTurns - CurrentTeam^.Clan^.TurnNumber < 0) then
-			begin
-			bShowAmmoMenu:= false;
-			SetWeapon(Ammo^[Slot, Pos].AmmoType);
-			bSelected:= false;
-			FreeWeaponTooltip;
-			exit
-			end;
-	end
+        if bSelected and (Ammoz[Ammo^[Slot, Pos].AmmoType].SkipTurns - CurrentTeam^.Clan^.TurnNumber < 0) then
+            begin
+            bShowAmmoMenu:= false;
+            SetWeapon(Ammo^[Slot, Pos].AmmoType);
+            bSelected:= false;
+            FreeWeaponTooltip;
+            exit
+            end;
+    end
 else
-	FreeWeaponTooltip;
+    FreeWeaponTooltip;
 
 if (WeaponTooltipTex <> nil) and (AMxShift = 0) then
-	ShowWeaponTooltip(x - WeaponTooltipTex^.w - 3, y);
+    ShowWeaponTooltip(x - WeaponTooltipTex^.w - 3, y);
 
 bSelected:= false;
 if AMxShift = 0 then DrawSprite(sprArrow, CursorPoint.X, cScreenHeight - CursorPoint.Y, (RealTicks shr 6) mod 8)
@@ -296,38 +296,38 @@
 // Water
 r.y:= WorldDy + cWaterLine;
 if WorldDy < trunc(cScreenHeight / cScaleFactor) + cScreenHeight div 2 - cWaterLine then
-	begin
-	if r.y < 0 then r.y:= 0;
+    begin
+    if r.y < 0 then r.y:= 0;
 
-	glDisable(GL_TEXTURE_2D);
-	VertexBuffer[0].X:= -lw;
-	VertexBuffer[0].Y:= r.y;
-	VertexBuffer[1].X:= lw;
-	VertexBuffer[1].Y:= r.y;
-	VertexBuffer[2].X:= lw;
-	VertexBuffer[2].Y:= lh;
-	VertexBuffer[3].X:= -lw;
-	VertexBuffer[3].Y:= lh;
+    glDisable(GL_TEXTURE_2D);
+    VertexBuffer[0].X:= -lw;
+    VertexBuffer[0].Y:= r.y;
+    VertexBuffer[1].X:= lw;
+    VertexBuffer[1].Y:= r.y;
+    VertexBuffer[2].X:= lw;
+    VertexBuffer[2].Y:= lh;
+    VertexBuffer[3].X:= -lw;
+    VertexBuffer[3].Y:= lh;
 
-	glEnableClientState (GL_COLOR_ARRAY);
-	glColorPointer(4, GL_UNSIGNED_BYTE, 0, @WaterColorArray[0]);
+    glEnableClientState (GL_COLOR_ARRAY);
+    glColorPointer(4, GL_UNSIGNED_BYTE, 0, @WaterColorArray[0]);
 
-	glEnableClientState(GL_VERTEX_ARRAY);
-	glVertexPointer(2, GL_FLOAT, 0, @VertexBuffer[0]);
+    glEnableClientState(GL_VERTEX_ARRAY);
+    glVertexPointer(2, GL_FLOAT, 0, @VertexBuffer[0]);
 
-	glDrawArrays(GL_TRIANGLE_FAN, 0, Length(VertexBuffer));
+    glDrawArrays(GL_TRIANGLE_FAN, 0, Length(VertexBuffer));
 
-	glDisableClientState(GL_VERTEX_ARRAY);
-	glDisableClientState(GL_COLOR_ARRAY);
+    glDisableClientState(GL_VERTEX_ARRAY);
+    glDisableClientState(GL_COLOR_ARRAY);
 
-	glColor4f(1, 1, 1, 1); // disable coloring
-	glEnable(GL_TEXTURE_2D)
-	end
+    glColor4f(1, 1, 1, 1); // disable coloring
+    glEnable(GL_TEXTURE_2D)
+    end
 end;
 
 procedure DrawWaves(Dir, dX, dY: LongInt);
 var VertexBuffer, TextureBuffer: array [0..3] of TVertex2f;
-	lw, waves, shift: GLfloat;
+    lw, waves, shift: GLfloat;
 begin
 lw:= cScreenWidth / cScaleFactor;
 waves:= lw * 2 / cWaveWidth;
@@ -365,10 +365,10 @@
 
 
 {for i:= -1 to cWaterSprCount do
-	DrawSprite(sprWater,
-		i * cWaveWidth + ((WorldDx + (RealTicks shr 6) * Dir + dX) mod cWaveWidth) - (cScreenWidth div 2),
-		cWaterLine + WorldDy + dY,
-		0)}
+    DrawSprite(sprWater,
+        i * cWaveWidth + ((WorldDx + (RealTicks shr 6) * Dir + dX) mod cWaveWidth) - (cScreenWidth div 2),
+        cWaterLine + WorldDy + dY,
+        0)}
 end;
 
 procedure DrawRepeated(spr, sprL, sprR: TSprite; Shift: LongInt);
@@ -376,37 +376,37 @@
 begin
 sw:= round(cScreenWidth / cScaleFactor);
 if (SpritesData[sprL].Texture = nil) or (SpritesData[sprR].Texture = nil) then
-	begin
-	w:= SpritesData[spr].Width;
-	i:= Shift mod w;
-	if i > 0 then dec(i, w);
-	dec(i, w * (sw div w + 1));
-	repeat
-		DrawSprite(spr, i, WorldDy + LAND_HEIGHT - SpritesData[spr].Height, 0);
-		inc(i, w)
-	until i > sw
-	end else
-	begin
-	w:= SpritesData[spr].Width;
-	dec(Shift, w div 2);
-	DrawSprite(spr, Shift, WorldDy + LAND_HEIGHT - SpritesData[spr].Height, 0);
+    begin
+    w:= SpritesData[spr].Width;
+    i:= Shift mod w;
+    if i > 0 then dec(i, w);
+    dec(i, w * (sw div w + 1));
+    repeat
+        DrawSprite(spr, i, WorldDy + LAND_HEIGHT - SpritesData[spr].Height, 0);
+        inc(i, w)
+    until i > sw
+    end else
+    begin
+    w:= SpritesData[spr].Width;
+    dec(Shift, w div 2);
+    DrawSprite(spr, Shift, WorldDy + LAND_HEIGHT - SpritesData[spr].Height, 0);
 
-	sw:= round(cScreenWidth / cScaleFactor);
-	
-	i:= Shift - SpritesData[sprL].Width;
-	while i >= -sw - SpritesData[sprL].Width do
-		begin
-		DrawSprite(sprL, i, WorldDy + LAND_HEIGHT - SpritesData[sprL].Height, 0);
-		dec(i, SpritesData[sprL].Width);
-		end;
-		
-	i:= Shift + w;
-	while i <= sw do
-		begin
-		DrawSprite(sprR, i, WorldDy + LAND_HEIGHT - SpritesData[sprR].Height, 0);
-		inc(i, SpritesData[sprR].Width)
-		end
-	end
+    sw:= round(cScreenWidth / cScaleFactor);
+    
+    i:= Shift - SpritesData[sprL].Width;
+    while i >= -sw - SpritesData[sprL].Width do
+        begin
+        DrawSprite(sprL, i, WorldDy + LAND_HEIGHT - SpritesData[sprL].Height, 0);
+        dec(i, SpritesData[sprL].Width);
+        end;
+        
+    i:= Shift + w;
+    while i <= sw do
+        begin
+        DrawSprite(sprR, i, WorldDy + LAND_HEIGHT - SpritesData[sprR].Height, 0);
+        inc(i, SpritesData[sprR].Width)
+        end
+    end
 end;
 
 
@@ -421,15 +421,15 @@
     scale: GLfloat;
 begin
 if ZoomValue < zoom then
-	begin
-	zoom:= zoom - 0.002 * Lag;
-	if ZoomValue > zoom then zoom:= ZoomValue
-	end else
+    begin
+    zoom:= zoom - 0.002 * Lag;
+    if ZoomValue > zoom then zoom:= ZoomValue
+    end else
 if ZoomValue > zoom then
-	begin
-	zoom:= zoom + 0.002 * Lag;
-	if ZoomValue < zoom then zoom:= ZoomValue
-	end;
+    begin
+    zoom:= zoom + 0.002 * Lag;
+    if ZoomValue < zoom then zoom:= ZoomValue
+    end;
 
 // Sky
 glClear(GL_COLOR_BUFFER_BIT);
@@ -460,25 +460,25 @@
 
 // Attack bar
 if CurrentTeam <> nil then
-	case AttackBar of
+    case AttackBar of
 (*        1: begin
-		r:= StuffPoz[sPowerBar];
-		{$WARNINGS OFF}
-		r.w:= (CurrentHedgehog^.Gear^.Power * 256) div cPowerDivisor;
-		{$WARNINGS ON}
-		DrawSpriteFromRect(r, cScreenWidth - 272, cScreenHeight - 48, 16, 0, Surface);
-		end;*)
-		2: with CurrentHedgehog^ do
-				begin
-				tdx:= hwSign(Gear^.dX) * Sin(Gear^.Angle * Pi / cMaxAngle);
-				tdy:= - Cos(Gear^.Angle * Pi / cMaxAngle);
-				for i:= (Gear^.Power * 24) div cPowerDivisor downto 0 do
-					DrawSprite(sprPower,
-							hwRound(Gear^.X) + round(WorldDx + tdx * (24 + i * 2)) - 16,
-							hwRound(Gear^.Y) + round(WorldDy + tdy * (24 + i * 2)) - 12,
-							i)
-				end
-		end;
+        r:= StuffPoz[sPowerBar];
+        {$WARNINGS OFF}
+        r.w:= (CurrentHedgehog^.Gear^.Power * 256) div cPowerDivisor;
+        {$WARNINGS ON}
+        DrawSpriteFromRect(r, cScreenWidth - 272, cScreenHeight - 48, 16, 0, Surface);
+        end;*)
+        2: with CurrentHedgehog^ do
+                begin
+                tdx:= hwSign(Gear^.dX) * Sin(Gear^.Angle * Pi / cMaxAngle);
+                tdy:= - Cos(Gear^.Angle * Pi / cMaxAngle);
+                for i:= (Gear^.Power * 24) div cPowerDivisor downto 0 do
+                    DrawSprite(sprPower,
+                            hwRound(Gear^.X) + round(WorldDx + tdx * (24 + i * 2)) - 16,
+                            hwRound(Gear^.Y) + round(WorldDy + tdy * (24 + i * 2)) - 12,
+                            i)
+                end
+        end;
 
 DrawVisualGears(1);
 
@@ -497,7 +497,7 @@
 {$WARNINGS OFF}
 // Target
 if TargetPoint.X <> NoPointX then
-	DrawRotatedF(sprTargetP, TargetPoint.X + WorldDx, TargetPoint.Y + WorldDy, 0, 0, (RealTicks shr 3) mod 360);
+    DrawRotatedF(sprTargetP, TargetPoint.X + WorldDx, TargetPoint.Y + WorldDy, 0, 0, (RealTicks shr 3) mod 360);
 {$WARNINGS ON}
 
 {$IFDEF IPHONEOS}
@@ -533,47 +533,47 @@
 {$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);
+    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
+    // 1 ms
     DrawSprite(sprBigDigit, -cScreenWidth div 2 + t, 8, i mod 10); 
     dec(t, 32);
-	i:= i div 10;
-	// 10 ms
+    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
+    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, 16);
+    // Point
+    DrawSprite(sprBigDigit, -cScreenWidth div 2 + t, 8, 11);
     dec(t, 32);
-	i:= i div 10;
-	// 1 s
+    i:= i div 10;
+    // 1 s
     DrawSprite(sprBigDigit, -cScreenWidth div 2 + t, 8, i mod 10);
     dec(t, 32);
-	i:= i div 10;
-	// 10s
+    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, 16);
+    // Point
+    DrawSprite(sprBigDigit, -cScreenWidth div 2 + t, 8, 10);
     dec(t, 32);
-	i:= i div 6;
-	// 1 m
+    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
+    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;
+    // left frame
+    DrawSprite(sprFrame, -cScreenWidth div 2 + t - 4, 8, 0);
+    end;
 {$ENDIF}
 
 // Captions
@@ -584,19 +584,19 @@
 else offset:= 8;
 {$ENDIF}
 
-	for grp:= Low(TCapGroup) to High(TCapGroup) do
-		with Captions[grp] do
-			if Tex <> nil then
-			begin
-				DrawCentered(0, offset, Tex);
-				inc(offset, Tex^.h + 2);
-				if EndTime <= RealTicks then
-				begin
-					FreeTexture(Tex);
-					Tex:= nil;
-					EndTime:= 0
-				end;
-			end;
+    for grp:= Low(TCapGroup) to High(TCapGroup) do
+        with Captions[grp] do
+            if Tex <> nil then
+            begin
+                DrawCentered(0, offset, Tex);
+                inc(offset, Tex^.h + 2);
+                if EndTime <= RealTicks then
+                begin
+                    FreeTexture(Tex);
+                    Tex:= nil;
+                    EndTime:= 0
+                end;
+            end;
 
 // Teams Healths
 
@@ -694,12 +694,12 @@
 if isPaused then DrawCentered(0, (cScreenHeight shr 1), PauseTexture);
 
 if missionTimer <> 0 then
-	begin
-	if missionTimer > 0 then dec(missionTimer, Lag);
-	if missionTimer < 0 then missionTimer:= 0; // avoid subtracting below 0
-	if missionTex <> nil then
-		DrawCentered(0, min((cScreenHeight shr 1) + 100, cScreenHeight - 48 - missionTex^.h), missionTex);
-	end;
+    begin
+    if missionTimer > 0 then dec(missionTimer, Lag);
+    if missionTimer < 0 then missionTimer:= 0; // avoid subtracting below 0
+    if missionTex <> nil then
+        DrawCentered(0, min((cScreenHeight shr 1) + 100, cScreenHeight - 48 - missionTex^.h), missionTex);
+    end;
 
 // fps
 {$IFDEF IPHONEOS}
@@ -762,7 +762,7 @@
    end;
 
 if GameState = gsConfirm then
-	DrawCentered(0, cScreenHeight div 2, ConfirmTexture);
+    DrawCentered(0, cScreenHeight div 2, ConfirmTexture);
 
 SetScale(zoom);
 
@@ -796,10 +796,10 @@
 Captions[Group].Tex:= RenderStringTex(s, Color, fntBig);
 
 case Group of
-	capgrpGameState: Captions[Group].EndTime:= RealTicks + 2200
-	else
-	Captions[Group].EndTime:= RealTicks + 1400 + LongWord(Captions[Group].Tex^.w) * 3;
-	end;
+    capgrpGameState: Captions[Group].EndTime:= RealTicks + 2200
+    else
+    Captions[Group].EndTime:= RealTicks + 1400 + LongWord(Captions[Group].Tex^.w) * 3;
+    end;
 end;
 
 procedure MoveCamera;
@@ -807,23 +807,23 @@
 var EdgesDist,  wdy: LongInt;
 begin
 if (not (CurrentTeam^.ExtDriven and isCursorVisible)) and cHasFocus then
-	begin
-	SDL_GetMouseState(@CursorPoint.X, @CursorPoint.Y);
-	CursorPoint.X:= CursorPoint.X - (cScreenWidth shr 1);
-	CursorPoint.Y:= cScreenHeight - CursorPoint.Y;
-	end;
+    begin
+    SDL_GetMouseState(@CursorPoint.X, @CursorPoint.Y);
+    CursorPoint.X:= CursorPoint.X - (cScreenWidth shr 1);
+    CursorPoint.Y:= cScreenHeight - CursorPoint.Y;
+    end;
 
 if (not PlacingHogs) and (FollowGear <> nil) and (not isCursorVisible) and (not fastUntilLag) then
-	if abs(CursorPoint.X - prevPoint.X) + abs(CursorPoint.Y - prevpoint.Y) > 4 then
-		begin
-		FollowGear:= nil;
-		prevPoint:= CursorPoint;
-		exit
-		end
-		else begin
-		CursorPoint.x:= (prevPoint.x * 7 + hwRound(FollowGear^.X) + hwSign(FollowGear^.dX) * 100 + WorldDx) div 8;
-		CursorPoint.y:= (prevPoint.y * 7 + cScreenHeight - (hwRound(FollowGear^.Y) + WorldDy)) div 8;
-		end;
+    if abs(CursorPoint.X - prevPoint.X) + abs(CursorPoint.Y - prevpoint.Y) > 4 then
+        begin
+        FollowGear:= nil;
+        prevPoint:= CursorPoint;
+        exit
+        end
+        else begin
+        CursorPoint.x:= (prevPoint.x * 7 + hwRound(FollowGear^.X) + hwSign(FollowGear^.dX) * 100 + WorldDx) div 8;
+        CursorPoint.y:= (prevPoint.y * 7 + cScreenHeight - (hwRound(FollowGear^.Y) + WorldDy)) div 8;
+        end;
 
 wdy:= trunc(cScreenHeight / cScaleFactor) + cScreenHeight div 2 - cWaterLine - cVisibleWater;
 if WorldDy < wdy then WorldDy:= wdy;
@@ -831,24 +831,24 @@
 if ((CursorPoint.X = prevPoint.X) and (CursorPoint.Y = prevpoint.Y)) then exit;
 
 if AMxShift < 210 then
-	begin
-	if CursorPoint.X < cScreenWidth div 2 + AMxShift - 175 then CursorPoint.X:= cScreenWidth div 2 + AMxShift - 175;
-	if CursorPoint.X > cScreenWidth div 2 + AMxShift - 10 then CursorPoint.X:= cScreenWidth div 2 + AMxShift - 10;
-	if CursorPoint.Y > 75 + SlotsNum * 33 then CursorPoint.Y:= 75 + SlotsNum * 33;
-	if CursorPoint.Y < 76 then CursorPoint.Y:= 76;
-	prevPoint:= CursorPoint;
-	if cHasFocus then SDL_WarpMouse(CursorPoint.X + cScreenWidth div 2, cScreenHeight - CursorPoint.Y);
-	exit
-	end;
+    begin
+    if CursorPoint.X < cScreenWidth div 2 + AMxShift - 175 then CursorPoint.X:= cScreenWidth div 2 + AMxShift - 175;
+    if CursorPoint.X > cScreenWidth div 2 + AMxShift - 10 then CursorPoint.X:= cScreenWidth div 2 + AMxShift - 10;
+    if CursorPoint.Y > 75 + SlotsNum * 33 then CursorPoint.Y:= 75 + SlotsNum * 33;
+    if CursorPoint.Y < 76 then CursorPoint.Y:= 76;
+    prevPoint:= CursorPoint;
+    if cHasFocus then SDL_WarpMouse(CursorPoint.X + cScreenWidth div 2, cScreenHeight - CursorPoint.Y);
+    exit
+    end;
 
 if isCursorVisible then
-	begin
-	if (not CurrentTeam^.ExtDriven) and (GameTicks >= PrevSentPointTime + cSendCursorPosTime) then
-		begin
-		SendIPCXY('P', CursorPoint.X - WorldDx, cScreenHeight - CursorPoint.Y - WorldDy);
-		PrevSentPointTime:= GameTicks
-		end;
-	end;
+    begin
+    if (not CurrentTeam^.ExtDriven) and (GameTicks >= PrevSentPointTime + cSendCursorPosTime) then
+        begin
+        SendIPCXY('P', CursorPoint.X - WorldDx, cScreenHeight - CursorPoint.Y - WorldDy);
+        PrevSentPointTime:= GameTicks
+        end;
+    end;
 
 if isCursorVisible or (FollowGear <> nil) then
    begin
@@ -902,17 +902,17 @@
 if missionTex <> nil then FreeTexture(missionTex);
 
 if icon > -1 then
-	begin
-	r.x:= 0;
-	r.y:= icon * 32;
-	missionTex:= RenderHelpWindow(caption, subcaption, text, '', 0, MissionIcons, @r)
-	end
+    begin
+    r.x:= 0;
+    r.y:= icon * 32;
+    missionTex:= RenderHelpWindow(caption, subcaption, text, '', 0, MissionIcons, @r)
+    end
 else
-	begin
-	r.x:= ((-icon - 1) shr 5) * 32;
-	r.y:= ((-icon - 1) mod 32) * 32;
-	missionTex:= RenderHelpWindow(caption, subcaption, text, '', 0, SpritesData[sprAMAmmos].Surface, @r)
-	end;
+    begin
+    r.x:= ((-icon - 1) shr 5) * 32;
+    r.y:= ((-icon - 1) mod 32) * 32;
+    missionTex:= RenderHelpWindow(caption, subcaption, text, '', 0, SpritesData[sprAMAmmos].Surface, @r)
+    end;
 end;
 
 procedure HideMission;
@@ -922,24 +922,24 @@
 
 procedure init_uWorld;
 begin
-	fpsTexture:= nil;
-	FollowGear:= nil;
-	WindBarWidth:= 0;
-	bShowAmmoMenu:= false;
-	bSelected:= false;
-	bShowFinger:= false;
-	Frames:= 0;
-	WorldDx:= -512;
-	WorldDy:= -256;
+    fpsTexture:= nil;
+    FollowGear:= nil;
+    WindBarWidth:= 0;
+    bShowAmmoMenu:= false;
+    bSelected:= false;
+    bShowFinger:= false;
+    Frames:= 0;
+    WorldDx:= -512;
+    WorldDy:= -256;
     
-	FPS:= 0;
-	CountTicks:= 0;
-	SoundTimerTicks:= 0;
-	prevPoint.X:= 0;
-	prevPoint.Y:= 0;
-	missionTimer:= 0;
-	
-	FillChar(Captions, sizeof(Captions), 0)
+    FPS:= 0;
+    CountTicks:= 0;
+    SoundTimerTicks:= 0;
+    prevPoint.X:= 0;
+    prevPoint.Y:= 0;
+    missionTimer:= 0;
+    
+    FillChar(Captions, sizeof(Captions), 0)
 end;
 
 procedure free_uWorld;