--- gears.pp	2005-11-10 16:54:59.000000000 +0100
+++ gears.pp	2005-12-11 11:07:46.000000000 +0100
@@ -121,21 +121,21 @@
 	OS_Search_Separator = PathSeparator;
 	OS_Current_Directory = '.';
 
+	{ This will be replaced by the spell, so that geargead find's it's data }
+	OS_Install_Directory = 'INSTALL_DIRECTORY' + OS_Dir_Separator;
+
 	{ All of the following file names have been checked for }
 	{ correct capitalization. Hopefully, everything should run }
 	{ fine. }
 	Default_File_Ending = '.txt';
 	Default_Search_Pattern = '*.txt';
-	Save_Game_DirName = 'SaveGame';
-	Save_Game_Directory = Save_Game_DirName + OS_Dir_Separator;
-	Save_Character_Base = Save_Game_Directory + 'CHA';
-	Save_Unit_Base = Save_Game_Directory + 'GHU';
-	Save_Campaign_Base = Save_Game_Directory + 'RPG';
-	Design_DirName = 'Design';
+	{ Look for data in OS_Install_Directory }
+	Design_DirName = OS_Install_Directory + 'Design';
 	Design_Directory = Design_DirName + OS_Dir_Separator;
 	PC_Equipment_File = Design_Directory + 'PC_Equipment.txt';
 	Mek_Equipment_File = Design_Directory + 'Mek_Equipment.txt';
-	Series_DirName = 'Series';
+	{ Look for data in OS_Install_Directory }
+	Series_DirName = OS_Install_Directory + 'Series';
 	Series_Directory = Series_DirName + OS_Dir_Separator;
 	Archetypes_File = Series_Directory + 'ANPCdefault.txt';
 	Adventure_File_Base = Series_Directory + 'ADV_';
@@ -143,7 +143,8 @@
 	Plot_Seacrh_Pattern = Series_Directory + 'PLOT' + Default_Search_Pattern;
 	Jobs_File = Series_Directory + 'RCJobs.txt';
 	Monsters_File = Series_Directory + 'WMONdefault.txt';
-	Data_DirName = 'GameData';
+	{ Look for data in OS_Install_Directory }
+	Data_DirName = OS_Install_Directory + 'GameData';
 	Data_Directory = Data_DirName + OS_Dir_Separator;
 	MetaTerrain_File_Base = Data_Directory + 'meta';
 	Trait_Chatter_Base = Data_Directory + 'TC_';
@@ -211,6 +212,14 @@
 		parent: GearPtr;	{Parent of the current Gear.}
 	end;
 
+Var
+	Save_Game_DirName:string;
+	Save_Game_Directory:string;
+	Save_Character_Base:string;
+	Save_Unit_Base:string;
+	Save_Campaign_Base:string;
+
+
 
 Function CreateSAtt(var LList: SAttPtr): SAttPtr;
 Procedure DisposeSAtt(var LList: SAttPtr);
@@ -1205,10 +1214,16 @@
 var
 	S: String;
 begin
+	{ Check that ~/.gearhead exists }
 	if not DirectoryExists( Save_Game_DirName ) then begin
 		MkDir( Save_Game_DirName );
 	end;
 
+	{ Check that ~/.gearhead/SaveGame exists }
+	if not DirectoryExists( Save_Game_Directory ) then begin
+		MkDir( Save_Game_Directory );
+	end;
+
 	{ Check to make sure all the other directories can be found. }
 	Startup_OK := DirectoryExists( Design_DirName );
 	Startup_OK := Startup_OK and DirectoryExists( Series_DirName );
@@ -1237,6 +1252,15 @@
 end;
 
 initialization
+	{ Be a nice game, save game data into ~/.geargead/SaveGame }
+	Save_Game_DirName   := GetEnvironmentVariable('HOME');
+	Save_Game_DirName   := Save_Game_DirName   + OS_Dir_Separator;
+	Save_Game_DirName   := Save_Game_DirName   + '.gearhead' + OS_Dir_Separator;
+	Save_Game_Directory := Save_Game_DirName   + 'SaveGame';
+	Save_Game_Directory := Save_Game_Directory + OS_Dir_Separator;
+	Save_Character_Base := Save_Game_Directory + 'CHA';
+	Save_Unit_Base      := Save_Game_Directory + 'GHU';
+	Save_Campaign_Base  := Save_Game_Directory + 'RPG';
 	{ Make sure we have the required data directories. }
 {$IFNDEF go32v2}
 	CheckDirectoryPresent;
