(svn r14421) -Codechange: rename all player variables/types to company *or* client so it is immediatelly clear which one you are working with.
authorrubidium
Tue, 30 Sep 2008 20:39:50 +0000
changeset 10207 c291a21b304e
parent 10206 0050610c0368
child 10208 72c00af5c95d
(svn r14421) -Codechange: rename all player variables/types to company *or* client so it is immediatelly clear which one you are working with.
src/ai/ai.cpp
src/ai/ai.h
src/ai/default/default.cpp
src/ai/default/default.h
src/ai/trolly/build.cpp
src/ai/trolly/pathfinder.cpp
src/ai/trolly/shared.cpp
src/ai/trolly/trolly.cpp
src/ai/trolly/trolly.h
src/aircraft_cmd.cpp
src/airport_gui.cpp
src/autoreplace_cmd.cpp
src/autoreplace_func.h
src/autoreplace_gui.cpp
src/autoreplace_type.h
src/autoslope.h
src/build_vehicle_gui.cpp
src/cheat_gui.cpp
src/cheat_type.h
src/clear_cmd.cpp
src/command.cpp
src/command_type.h
src/console.cpp
src/console_cmds.cpp
src/console_gui.cpp
src/core/random_func.cpp
src/date.cpp
src/depot_gui.cpp
src/disaster_cmd.cpp
src/dock_gui.cpp
src/dummy_land.cpp
src/economy.cpp
src/economy_func.h
src/elrail.cpp
src/engine.cpp
src/engine_base.h
src/engine_func.h
src/engine_type.h
src/functions.h
src/genworld.cpp
src/genworld.h
src/graph_gui.cpp
src/group.h
src/group_cmd.cpp
src/group_gui.cpp
src/group_gui.h
src/industry_cmd.cpp
src/industry_gui.cpp
src/landscape.cpp
src/livery.h
src/main_gui.cpp
src/misc.cpp
src/misc_cmd.cpp
src/misc_gui.cpp
src/network/core/config.h
src/network/core/game.h
src/network/core/tcp.h
src/network/network.cpp
src/network/network.h
src/network/network_chat_gui.cpp
src/network/network_client.cpp
src/network/network_data.cpp
src/network/network_func.h
src/network/network_gui.cpp
src/network/network_gui.h
src/network/network_internal.h
src/network/network_server.cpp
src/network/network_type.h
src/network/network_udp.cpp
src/newgrf_callbacks.h
src/newgrf_engine.cpp
src/newgrf_house.cpp
src/newgrf_industries.cpp
src/newgrf_station.cpp
src/news_gui.cpp
src/news_type.h
src/npf.cpp
src/oldloader.cpp
src/openttd.cpp
src/order_cmd.cpp
src/order_gui.cpp
src/order_type.h
src/player_base.h
src/player_face.h
src/player_func.h
src/player_gui.cpp
src/player_gui.h
src/player_type.h
src/players.cpp
src/rail.cpp
src/rail.h
src/rail_cmd.cpp
src/rail_gui.cpp
src/road.cpp
src/road_cmd.cpp
src/road_func.h
src/road_gui.cpp
src/roadveh_cmd.cpp
src/saveload.cpp
src/saveload.h
src/screenshot.cpp
src/settings.cpp
src/settings_type.h
src/ship_cmd.cpp
src/signal.cpp
src/signs.cpp
src/signs_base.h
src/signs_gui.cpp
src/smallmap_gui.cpp
src/sprite.h
src/station.cpp
src/station_base.h
src/station_cmd.cpp
src/station_func.h
src/station_gui.cpp
src/station_gui.h
src/statusbar_gui.cpp
src/strings.cpp
src/subsidy_gui.cpp
src/table/sprites.h
src/terraform_gui.cpp
src/tile_cmd.h
src/tile_map.h
src/timetable_gui.cpp
src/toolbar_gui.cpp
src/town.h
src/town_cmd.cpp
src/town_gui.cpp
src/train_cmd.cpp
src/transparency.h
src/transparency_gui.cpp
src/tree_cmd.cpp
src/tree_gui.cpp
src/tunnelbridge_cmd.cpp
src/unmovable.h
src/unmovable_cmd.cpp
src/variables.h
src/vehicle.cpp
src/vehicle_base.h
src/vehicle_func.h
src/vehicle_gui.cpp
src/vehicle_gui.h
src/vehicle_gui_base.h
src/vehiclelist.cpp
src/vehiclelist.h
src/video/dedicated_v.cpp
src/viewport.cpp
src/water_cmd.cpp
src/waypoint.cpp
src/waypoint.h
src/widget.cpp
src/window.cpp
src/window_func.h
src/window_gui.h
src/window_type.h
src/yapf/follow_track.hpp
src/yapf/yapf_base.hpp
src/yapf/yapf_destrail.hpp
--- a/src/ai/ai.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/ai/ai.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -16,16 +16,16 @@
 #include "../signal_func.h"
 
 AIStruct _ai;
-AIPlayer _ai_player[MAX_PLAYERS];
+AICompany _ai_company[MAX_COMPANIES];
 
 /**
  * Dequeues commands put in the queue via AI_PutCommandInQueue.
  */
-static void AI_DequeueCommands(PlayerID player)
+static void AI_DequeueCommands(CompanyID company)
 {
 	AICommand *com, *entry_com;
 
-	entry_com = _ai_player[player].queue;
+	entry_com = _ai_company[company].queue;
 
 	/* It happens that DoCommandP issues a new DoCommandAI which adds a new command
 	 *  to this very same queue (don't argue about this, if it currently doesn't
@@ -33,12 +33,12 @@
 	 *  do not make the queue NULL, that commands will be dequeued immediatly.
 	 *  Therefor we safe the entry-point to entry_com, and make the queue NULL, so
 	 *  the new queue can be safely built up. */
-	_ai_player[player].queue = NULL;
-	_ai_player[player].queue_tail = NULL;
+	_ai_company[company].queue = NULL;
+	_ai_company[company].queue_tail = NULL;
 
 	/* Dequeue all commands */
 	while ((com = entry_com) != NULL) {
-		_current_player = player;
+		_current_company = company;
 
 		_cmd_text = com->text;
 		DoCommandP(com->tile, com->p1, com->p2, com->callback, com->procc);
@@ -54,22 +54,22 @@
  * Needed for SP; we need to delay DoCommand with 1 tick, because else events
  *  will make infinite loops (AIScript).
  */
-static void AI_PutCommandInQueue(PlayerID player, TileIndex tile, uint32 p1, uint32 p2, uint32 procc, CommandCallback* callback)
+static void AI_PutCommandInQueue(CompanyID company, TileIndex tile, uint32 p1, uint32 p2, uint32 procc, CommandCallback* callback)
 {
 	AICommand *com;
 
-	if (_ai_player[player].queue_tail == NULL) {
+	if (_ai_company[company].queue_tail == NULL) {
 		/* There is no item in the queue yet, create the queue */
-		_ai_player[player].queue = MallocT<AICommand>(1);
-		_ai_player[player].queue_tail = _ai_player[player].queue;
+		_ai_company[company].queue = MallocT<AICommand>(1);
+		_ai_company[company].queue_tail = _ai_company[company].queue;
 	} else {
 		/* Add an item at the end */
-		_ai_player[player].queue_tail->next = MallocT<AICommand>(1);
-		_ai_player[player].queue_tail = _ai_player[player].queue_tail->next;
+		_ai_company[company].queue_tail->next = MallocT<AICommand>(1);
+		_ai_company[company].queue_tail = _ai_company[company].queue_tail->next;
 	}
 
 	/* This is our new item */
-	com = _ai_player[player].queue_tail;
+	com = _ai_company[company].queue_tail;
 
 	/* Assign the info */
 	com->tile  = tile;
@@ -92,7 +92,7 @@
  */
 CommandCost AI_DoCommandCc(TileIndex tile, uint32 p1, uint32 p2, uint32 flags, uint32 procc, CommandCallback* callback)
 {
-	PlayerID old_lp;
+	CompanyID old_local_company;
 	CommandCost res;
 	const char* tmp_cmdtext;
 
@@ -113,10 +113,10 @@
 	/* Restore _cmd_text */
 	_cmd_text = tmp_cmdtext;
 
-	/* NetworkSend_Command needs _local_player to be set correctly, so
+	/* NetworkSend_Command needs _local_company to be set correctly, so
 	 * adjust it, and put it back right after the function */
-	old_lp = _local_player;
-	_local_player = _current_player;
+	old_local_company = _local_company;
+	_local_company = _current_company;
 
 #ifdef ENABLE_NETWORK
 	/* Send the command */
@@ -129,11 +129,11 @@
 #endif
 		/* If we execute BuildCommands directly in SP, we have a big problem with events
 		 *  so we need to delay is for 1 tick */
-		AI_PutCommandInQueue(_current_player, tile, p1, p2, procc, callback);
+		AI_PutCommandInQueue(_current_company, tile, p1, p2, procc, callback);
 	}
 
-	/* Set _local_player back */
-	_local_player = old_lp;
+	/* Set _local_company back */
+	_local_company = old_local_company;
 
 	return res;
 }
@@ -148,20 +148,20 @@
 /**
  * Run 1 tick of the AI. Don't overdo it, keep it realistic.
  */
-static void AI_RunTick(PlayerID player)
+static void AI_RunTick(CompanyID company)
 {
-	extern void AiNewDoGameLoop(Player *p);
+	extern void AiNewDoGameLoop(Company *c);
 
-	Player *p = GetPlayer(player);
-	_current_player = player;
+	Company *c = GetCompany(company);
+	_current_company = company;
 
 	if (_settings_game.ai.ainew_active) {
-		AiNewDoGameLoop(p);
+		AiNewDoGameLoop(c);
 	} else {
 		/* Enable all kind of cheats the old AI needs in order to operate correctly... */
-		_is_old_ai_player = true;
-		AiDoGameLoop(p);
-		_is_old_ai_player = false;
+		_is_old_ai_company = true;
+		AiDoGameLoop(c);
+		_is_old_ai_company = false;
 	}
 
 	/* AI could change some track, so update signals */
@@ -191,47 +191,47 @@
 	/* Check for AI-client (so joining a network with an AI) */
 	if (!_networking || _network_server) {
 		/* Check if we want to run AIs (server or SP only) */
-		const Player* p;
+		const Company *c;
 
-		FOR_ALL_PLAYERS(p) {
-			if (p->is_ai) {
+		FOR_ALL_COMPANIES(c) {
+			if (c->is_ai) {
 				/* This should always be true, else something went wrong... */
-				assert(_ai_player[p->index].active);
+				assert(_ai_company[c->index].active);
 
 				/* Run the script */
-				AI_DequeueCommands(p->index);
-				AI_RunTick(p->index);
+				AI_DequeueCommands(c->index);
+				AI_RunTick(c->index);
 			}
 		}
 	}
 
-	_current_player = OWNER_NONE;
+	_current_company = OWNER_NONE;
 }
 
 /**
  * A new AI sees the day of light. You can do here what ever you think is needed.
  */
-void AI_StartNewAI(PlayerID player)
+void AI_StartNewAI(CompanyID company)
 {
-	assert(IsValidPlayerID(player));
+	assert(IsValidCompanyID(company));
 
 	/* Called if a new AI is booted */
-	_ai_player[player].active = true;
+	_ai_company[company].active = true;
 }
 
 /**
- * This AI player died. Give it some chance to make a final puf.
+ * This AI company died. Give it some chance to make a final puf.
  */
-void AI_PlayerDied(PlayerID player)
+void AI_CompanyDied(CompanyID company)
 {
 	/* Called if this AI died */
-	_ai_player[player].active = false;
+	_ai_company[company].active = false;
 
-	if (_players_ainew[player].pathfinder == NULL) return;
+	if (_companies_ainew[company].pathfinder == NULL) return;
 
-	AyStarMain_Free(_players_ainew[player].pathfinder);
-	delete _players_ainew[player].pathfinder;
-	_players_ainew[player].pathfinder = NULL;
+	AyStarMain_Free(_companies_ainew[company].pathfinder);
+	delete _companies_ainew[company].pathfinder;
+	_companies_ainew[company].pathfinder = NULL;
 
 }
 
@@ -244,7 +244,7 @@
 	AI_Uninitialize();
 
 	memset(&_ai, 0, sizeof(_ai));
-	memset(&_ai_player, 0, sizeof(_ai_player));
+	memset(&_ai_company, 0, sizeof(_ai_company));
 
 	_ai.enabled = true;
 }
@@ -254,5 +254,5 @@
  */
 void AI_Uninitialize()
 {
-	for (PlayerID p = PLAYER_FIRST; p < MAX_PLAYERS; p++) AI_PlayerDied(p);
+	for (CompanyID c = COMPANY_FIRST; c < MAX_COMPANIES; c++) AI_CompanyDied(c);
 }
--- a/src/ai/ai.h	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/ai/ai.h	Tue Sep 30 20:39:50 2008 +0000
@@ -24,8 +24,8 @@
 	AICommand *next;
 };
 
-/* The struct for an AIScript Player */
-struct AIPlayer {
+/* The struct for an AIScript Company */
+struct AICompany {
 	bool active;            ///< Is this AI active?
 	AICommand *queue;       ///< The commands that he has in his queue
 	AICommand *queue_tail;  ///< The tail of this queue
@@ -39,11 +39,11 @@
 };
 
 extern AIStruct _ai;
-extern AIPlayer _ai_player[MAX_PLAYERS];
+extern AICompany _ai_company[MAX_COMPANIES];
 
 // ai.c
-void AI_StartNewAI(PlayerID player);
-void AI_PlayerDied(PlayerID player);
+void AI_StartNewAI(CompanyID company);
+void AI_CompanyDied(CompanyID company);
 void AI_RunGameLoop();
 void AI_Initialize();
 void AI_Uninitialize();
--- a/src/ai/default/default.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/ai/default/default.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -37,9 +37,9 @@
 
 // remove some day perhaps?
 static uint _ai_service_interval;
-PlayerAI _players_ai[MAX_PLAYERS];
-
-typedef void AiStateAction(Player *p);
+CompanyAI _companies_ai[MAX_COMPANIES];
+
+typedef void AiStateAction(Company *c);
 
 enum {
 	AIS_0                            =  0,
@@ -75,27 +75,27 @@
 }
 
 
-static void AiCase0(Player *p)
+static void AiCase0(Company *c)
 {
-	_players_ai[p->index].state = AIS_REMOVE_TRACK;
-	_players_ai[p->index].state_counter = 0;
+	_companies_ai[c->index].state = AIS_REMOVE_TRACK;
+	_companies_ai[c->index].state_counter = 0;
 }
 
-static void AiCase1(Player *p)
+static void AiCase1(Company *c)
 {
-	_players_ai[p->index].cur_veh = NULL;
-	_players_ai[p->index].state = AIS_VEH_LOOP;
+	_companies_ai[c->index].cur_veh = NULL;
+	_companies_ai[c->index].state = AIS_VEH_LOOP;
 }
 
-static void AiStateVehLoop(Player *p)
+static void AiStateVehLoop(Company *c)
 {
 	Vehicle *v;
 	uint index;
 
-	index = (_players_ai[p->index].cur_veh == NULL) ? 0 : _players_ai[p->index].cur_veh->index + 1;
+	index = (_companies_ai[c->index].cur_veh == NULL) ? 0 : _companies_ai[c->index].cur_veh->index + 1;
 
 	FOR_ALL_VEHICLES_FROM(v, index) {
-		if (v->owner != _current_player) continue;
+		if (v->owner != _current_company) continue;
 
 		if ((v->type == VEH_TRAIN && v->subtype == 0) ||
 				v->type == VEH_ROAD ||
@@ -103,9 +103,9 @@
 				v->type == VEH_SHIP) {
 			/* replace engine? */
 			if (v->type == VEH_TRAIN && v->engine_type < 3 &&
-					(_price.build_railvehicle >> 3) < p->player_money) {
-				_players_ai[p->index].state = AIS_VEH_CHECK_REPLACE_VEHICLE;
-				_players_ai[p->index].cur_veh = v;
+					(_price.build_railvehicle >> 3) < c->money) {
+				_companies_ai[c->index].state = AIS_VEH_CHECK_REPLACE_VEHICLE;
+				_companies_ai[c->index].cur_veh = v;
 				return;
 			}
 
@@ -113,9 +113,9 @@
 			if (v->age >= 730 &&
 					v->profit_last_year < _price.station_value * 5 * 256 &&
 					v->profit_this_year < _price.station_value * 5 * 256) {
-				_players_ai[p->index].state_counter = 0;
-				_players_ai[p->index].state = AIS_SELL_VEHICLE;
-				_players_ai[p->index].cur_veh = v;
+				_companies_ai[c->index].state_counter = 0;
+				_companies_ai[c->index].state = AIS_SELL_VEHICLE;
+				_companies_ai[c->index].cur_veh = v;
 				return;
 			}
 
@@ -124,15 +124,15 @@
 						v->age != 0 &&
 						GetEngine(v->engine_type)->reliability < 35389
 					)) {
-				_players_ai[p->index].state = AIS_VEH_CHECK_REPLACE_VEHICLE;
-				_players_ai[p->index].cur_veh = v;
+				_companies_ai[c->index].state = AIS_VEH_CHECK_REPLACE_VEHICLE;
+				_companies_ai[c->index].cur_veh = v;
 				return;
 			}
 		}
 	}
 
-	_players_ai[p->index].state = AIS_WANT_NEW_ROUTE;
-	_players_ai[p->index].state_counter = 0;
+	_companies_ai[c->index].state = AIS_WANT_NEW_ROUTE;
+	_companies_ai[c->index].state_counter = 0;
 }
 
 static EngineID AiChooseTrainToBuild(RailType railtype, Money money, byte flag, TileIndex tile)
@@ -148,7 +148,7 @@
 		if (!IsCompatibleRail(rvi->railtype, railtype) ||
 				rvi->railveh_type == RAILVEH_WAGON ||
 				(rvi->railveh_type == RAILVEH_MULTIHEAD && flag & 1) ||
-				!HasBit(e->player_avail, _current_player) ||
+				!HasBit(e->company_avail, _current_company) ||
 				e->reliability < 0x8A3D) {
 			continue;
 		}
@@ -176,7 +176,7 @@
 		EngineID i = e->index;
 		const RoadVehicleInfo *rvi = &e->u.road;
 
-		if (!HasBit(e->player_avail, _current_player) || e->reliability < 0x8A3D) {
+		if (!HasBit(e->company_avail, _current_company) || e->reliability < 0x8A3D) {
 			continue;
 		}
 
@@ -217,7 +217,7 @@
 		EngineID i = e->index;
 		const AircraftVehicleInfo *avi = &e->u.air;
 
-		if (!HasBit(e->player_avail, _current_player) || e->reliability < 0x8A3D) {
+		if (!HasBit(e->company_avail, _current_company) || e->reliability < 0x8A3D) {
 			continue;
 		}
 
@@ -233,12 +233,12 @@
 	return best_veh_index;
 }
 
-static Money AiGetBasePrice(const Player* p)
+static Money AiGetBasePrice(const Company *c)
 {
 	Money base = _price.station_value;
 
 	// adjust base price when more expensive vehicles are available
-	switch (_players_ai[p->index].railtype_to_use) {
+	switch (_companies_ai[c->index].railtype_to_use) {
 		default: NOT_REACHED();
 		case RAILTYPE_RAIL:     break;
 		case RAILTYPE_ELECTRIC: break;
@@ -249,15 +249,15 @@
 	return base;
 }
 
-static EngineID AiChooseRoadVehToReplaceWith(const Player* p, const Vehicle* v)
+static EngineID AiChooseRoadVehToReplaceWith(const Company *c, const Vehicle *v)
 {
-	Money avail_money = p->player_money + v->value;
+	Money avail_money = c->money + v->value;
 	return AiChooseRoadVehToBuild(v->cargo_type, avail_money, v->tile);
 }
 
-static EngineID AiChooseAircraftToReplaceWith(const Player* p, const Vehicle* v)
+static EngineID AiChooseAircraftToReplaceWith(const Company *c, const Vehicle *v)
 {
-	Money avail_money = p->player_money + v->value;
+	Money avail_money = c->money + v->value;
 
 	/* determine forbidden aircraft bits */
 	byte forbidden = 0;
@@ -279,10 +279,10 @@
 	);
 }
 
-static EngineID AiChooseTrainToReplaceWith(const Player* p, const Vehicle* v)
+static EngineID AiChooseTrainToReplaceWith(const Company *c, const Vehicle *v)
 {
-	Money avail_money = p->player_money + v->value;
-	const Vehicle* u = v;
+	Money avail_money = c->money + v->value;
+	const Vehicle *u = v;
 	int num = 0;
 
 	while (++num, u->Next() != NULL) {
@@ -293,25 +293,25 @@
 	return AiChooseTrainToBuild(v->u.rail.railtype, avail_money, 0, v->tile);
 }
 
-static EngineID AiChooseShipToReplaceWith(const Player* p, const Vehicle* v)
+static EngineID AiChooseShipToReplaceWith(const Company *p, const Vehicle *v)
 {
 	/* Ships are not implemented in this (broken) AI */
 	return INVALID_ENGINE;
 }
 
-static void AiHandleGotoDepot(Player *p, int cmd)
+static void AiHandleGotoDepot(Company *c, int cmd)
 {
-	if (!_players_ai[p->index].cur_veh->current_order.IsType(OT_GOTO_DEPOT))
-		DoCommand(0, _players_ai[p->index].cur_veh->index, 0, DC_EXEC, cmd);
-
-	if (++_players_ai[p->index].state_counter <= 1387) {
-		_players_ai[p->index].state = AIS_VEH_DO_REPLACE_VEHICLE;
+	if (!_companies_ai[c->index].cur_veh->current_order.IsType(OT_GOTO_DEPOT))
+		DoCommand(0, _companies_ai[c->index].cur_veh->index, 0, DC_EXEC, cmd);
+
+	if (++_companies_ai[c->index].state_counter <= 1387) {
+		_companies_ai[c->index].state = AIS_VEH_DO_REPLACE_VEHICLE;
 		return;
 	}
 
-	if (_players_ai[p->index].cur_veh->current_order.IsType(OT_GOTO_DEPOT)) {
-		_players_ai[p->index].cur_veh->current_order.MakeDummy();
-		InvalidateWindow(WC_VEHICLE_VIEW, _players_ai[p->index].cur_veh->index);
+	if (_companies_ai[c->index].cur_veh->current_order.IsType(OT_GOTO_DEPOT)) {
+		_companies_ai[c->index].cur_veh->current_order.MakeDummy();
+		InvalidateWindow(WC_VEHICLE_VIEW, _companies_ai[c->index].cur_veh->index);
 	}
 }
 
@@ -325,19 +325,19 @@
 	}
 }
 
-static void AiHandleReplaceTrain(Player *p)
+static void AiHandleReplaceTrain(Company *c)
 {
-	const Vehicle* v = _players_ai[p->index].cur_veh;
+	const Vehicle* v = _companies_ai[c->index].cur_veh;
 	BackuppedOrders orderbak;
 	EngineID veh;
 
 	// wait until the vehicle reaches the depot.
 	if (!IsRailDepotTile(v->tile) || v->u.rail.track != TRACK_BIT_DEPOT || !(v->vehstatus & VS_STOPPED)) {
-		AiHandleGotoDepot(p, CMD_SEND_TRAIN_TO_DEPOT);
+		AiHandleGotoDepot(c, CMD_SEND_TRAIN_TO_DEPOT);
 		return;
 	}
 
-	veh = AiChooseTrainToReplaceWith(p, v);
+	veh = AiChooseTrainToReplaceWith(c, v);
 	if (veh != INVALID_ENGINE) {
 		TileIndex tile;
 
@@ -355,18 +355,18 @@
 	}
 }
 
-static void AiHandleReplaceRoadVeh(Player *p)
+static void AiHandleReplaceRoadVeh(Company *c)
 {
-	const Vehicle* v = _players_ai[p->index].cur_veh;
+	const Vehicle* v = _companies_ai[c->index].cur_veh;
 	BackuppedOrders orderbak;
 	EngineID veh;
 
 	if (!v->IsStoppedInDepot()) {
-		AiHandleGotoDepot(p, CMD_SEND_ROADVEH_TO_DEPOT);
+		AiHandleGotoDepot(c, CMD_SEND_ROADVEH_TO_DEPOT);
 		return;
 	}
 
-	veh = AiChooseRoadVehToReplaceWith(p, v);
+	veh = AiChooseRoadVehToReplaceWith(c, v);
 	if (veh != INVALID_ENGINE) {
 		TileIndex tile;
 
@@ -384,18 +384,18 @@
 	}
 }
 
-static void AiHandleReplaceAircraft(Player *p)
+static void AiHandleReplaceAircraft(Company *c)
 {
-	const Vehicle* v = _players_ai[p->index].cur_veh;
+	const Vehicle* v = _companies_ai[c->index].cur_veh;
 	BackuppedOrders orderbak;
 	EngineID veh;
 
 	if (!v->IsStoppedInDepot()) {
-		AiHandleGotoDepot(p, CMD_SEND_AIRCRAFT_TO_HANGAR);
+		AiHandleGotoDepot(c, CMD_SEND_AIRCRAFT_TO_HANGAR);
 		return;
 	}
 
-	veh = AiChooseAircraftToReplaceWith(p, v);
+	veh = AiChooseAircraftToReplaceWith(c, v);
 	if (veh != INVALID_ENGINE) {
 		TileIndex tile;
 
@@ -413,12 +413,12 @@
 	}
 }
 
-static void AiHandleReplaceShip(Player *p)
+static void AiHandleReplaceShip(Company *c)
 {
 	/* Ships are not implemented in this (broken) AI */
 }
 
-typedef EngineID CheckReplaceProc(const Player* p, const Vehicle* v);
+typedef EngineID CheckReplaceProc(const Company *c, const Vehicle* v);
 
 static CheckReplaceProc* const _veh_check_replace_proc[] = {
 	AiChooseTrainToReplaceWith,
@@ -427,7 +427,7 @@
 	AiChooseAircraftToReplaceWith,
 };
 
-typedef void DoReplaceProc(Player *p);
+typedef void DoReplaceProc(Company *c);
 static DoReplaceProc* const _veh_do_replace_proc[] = {
 	AiHandleReplaceTrain,
 	AiHandleReplaceRoadVeh,
@@ -435,29 +435,29 @@
 	AiHandleReplaceAircraft
 };
 
-static void AiStateCheckReplaceVehicle(Player *p)
+static void AiStateCheckReplaceVehicle(Company *c)
 {
-	const Vehicle* v = _players_ai[p->index].cur_veh;
+	const Vehicle* v = _companies_ai[c->index].cur_veh;
 
 	if (!v->IsValid() ||
-			v->owner != _current_player ||
+			v->owner != _current_company ||
 			v->type > VEH_SHIP ||
-			_veh_check_replace_proc[v->type - VEH_TRAIN](p, v) == INVALID_ENGINE) {
-		_players_ai[p->index].state = AIS_VEH_LOOP;
+			_veh_check_replace_proc[v->type - VEH_TRAIN](c, v) == INVALID_ENGINE) {
+		_companies_ai[c->index].state = AIS_VEH_LOOP;
 	} else {
-		_players_ai[p->index].state_counter = 0;
-		_players_ai[p->index].state = AIS_VEH_DO_REPLACE_VEHICLE;
+		_companies_ai[c->index].state_counter = 0;
+		_companies_ai[c->index].state = AIS_VEH_DO_REPLACE_VEHICLE;
 	}
 }
 
-static void AiStateDoReplaceVehicle(Player *p)
+static void AiStateDoReplaceVehicle(Company *c)
 {
-	const Vehicle* v = _players_ai[p->index].cur_veh;
-
-	_players_ai[p->index].state = AIS_VEH_LOOP;
-	// vehicle is not owned by the player anymore, something went very wrong.
-	if (!v->IsValid() || v->owner != _current_player) return;
-	_veh_do_replace_proc[v->type - VEH_TRAIN](p);
+	const Vehicle* v = _companies_ai[c->index].cur_veh;
+
+	_companies_ai[c->index].state = AIS_VEH_LOOP;
+	// vehicle is not owned by the company anymore, something went very wrong.
+	if (!v->IsValid() || v->owner != _current_company) return;
+	_veh_do_replace_proc[v->type - VEH_TRAIN](c);
 }
 
 struct FoundRoute {
@@ -620,7 +620,7 @@
 // Warn: depends on 'xy' being the first element in both Town and Industry
 #define GET_TOWN_OR_INDUSTRY_TILE(p) (((Town*)(p))->xy)
 
-static bool AiCheckIfRouteIsGood(Player *p, FoundRoute *fr, byte bitmask)
+static bool AiCheckIfRouteIsGood(Company *c, FoundRoute *fr, byte bitmask)
 {
 	TileIndex from_tile, to_tile;
 	Station *st;
@@ -634,7 +634,7 @@
 	FOR_ALL_STATIONS(st) {
 		int cur;
 
-		if (st->owner != _current_player) continue;
+		if (st->owner != _current_company) continue;
 		cur = DistanceMax(from_tile, st->xy);
 		if (cur < dist) dist = cur;
 		cur = DistanceMax(to_tile, st->xy);
@@ -664,8 +664,8 @@
 	/* Make sure distance to closest station is < min_distance tiles. */
 	if (dist != 0xFFFF && dist > min_distance) return false;
 
-	if (_players_ai[p->index].route_type_mask != 0 &&
-			!(_players_ai[p->index].route_type_mask & bitmask) &&
+	if (_companies_ai[c->index].route_type_mask != 0 &&
+			!(_companies_ai[c->index].route_type_mask & bitmask) &&
 			!Chance16(1, 5)) {
 		return false;
 	}
@@ -680,8 +680,8 @@
 		}
 
 		// Make sure it has a reasonably good rating
-		if (from->ratings[_current_player] < -100 ||
-				to->ratings[_current_player] < -100) {
+		if (from->ratings[_current_company] < -100 ||
+				to->ratings[_current_company] < -100) {
 			return false;
 		}
 	} else {
@@ -693,7 +693,7 @@
 		}
 	}
 
-	_players_ai[p->index].route_type_mask |= bitmask;
+	_companies_ai[c->index].route_type_mask |= bitmask;
 	return true;
 }
 
@@ -712,7 +712,7 @@
 	);
 }
 
-static void AiWantLongIndustryRoute(Player *p)
+static void AiWantLongIndustryRoute(Company *c)
 {
 	int i;
 	FoundRoute fr;
@@ -731,91 +731,91 @@
 		if (--i == 0) return;
 	}
 
-	if (!AiCheckIfRouteIsGood(p, &fr, 1)) return;
+	if (!AiCheckIfRouteIsGood(c, &fr, 1)) return;
 
 	// Fill the source field
-	_players_ai[p->index].dst.spec_tile = GET_TOWN_OR_INDUSTRY_TILE(fr.to);
-	_players_ai[p->index].src.spec_tile = GET_TOWN_OR_INDUSTRY_TILE(fr.from);
-
-	_players_ai[p->index].src.use_tile = 0;
-	_players_ai[p->index].src.rand_rng = 9;
-	_players_ai[p->index].src.cur_building_rule = 0xFF;
-	_players_ai[p->index].src.unk6 = 1;
-	_players_ai[p->index].src.unk7 = 0;
-	_players_ai[p->index].src.buildcmd_a = 0x24;
-	_players_ai[p->index].src.buildcmd_b = 0xFF;
-	_players_ai[p->index].src.direction = AiGetDirectionBetweenTiles(
-		_players_ai[p->index].src.spec_tile,
-		_players_ai[p->index].dst.spec_tile
+	_companies_ai[c->index].dst.spec_tile = GET_TOWN_OR_INDUSTRY_TILE(fr.to);
+	_companies_ai[c->index].src.spec_tile = GET_TOWN_OR_INDUSTRY_TILE(fr.from);
+
+	_companies_ai[c->index].src.use_tile = 0;
+	_companies_ai[c->index].src.rand_rng = 9;
+	_companies_ai[c->index].src.cur_building_rule = 0xFF;
+	_companies_ai[c->index].src.unk6 = 1;
+	_companies_ai[c->index].src.unk7 = 0;
+	_companies_ai[c->index].src.buildcmd_a = 0x24;
+	_companies_ai[c->index].src.buildcmd_b = 0xFF;
+	_companies_ai[c->index].src.direction = AiGetDirectionBetweenTiles(
+		_companies_ai[c->index].src.spec_tile,
+		_companies_ai[c->index].dst.spec_tile
 	);
-	_players_ai[p->index].src.cargo = fr.cargo | 0x80;
+	_companies_ai[c->index].src.cargo = fr.cargo | 0x80;
 
 	// Fill the dest field
 
-	_players_ai[p->index].dst.use_tile = 0;
-	_players_ai[p->index].dst.rand_rng = 9;
-	_players_ai[p->index].dst.cur_building_rule = 0xFF;
-	_players_ai[p->index].dst.unk6 = 1;
-	_players_ai[p->index].dst.unk7 = 0;
-	_players_ai[p->index].dst.buildcmd_a = 0x34;
-	_players_ai[p->index].dst.buildcmd_b = 0xFF;
-	_players_ai[p->index].dst.direction = AiGetDirectionBetweenTiles(
-		_players_ai[p->index].dst.spec_tile,
-		_players_ai[p->index].src.spec_tile
+	_companies_ai[c->index].dst.use_tile = 0;
+	_companies_ai[c->index].dst.rand_rng = 9;
+	_companies_ai[c->index].dst.cur_building_rule = 0xFF;
+	_companies_ai[c->index].dst.unk6 = 1;
+	_companies_ai[c->index].dst.unk7 = 0;
+	_companies_ai[c->index].dst.buildcmd_a = 0x34;
+	_companies_ai[c->index].dst.buildcmd_b = 0xFF;
+	_companies_ai[c->index].dst.direction = AiGetDirectionBetweenTiles(
+		_companies_ai[c->index].dst.spec_tile,
+		_companies_ai[c->index].src.spec_tile
 	);
-	_players_ai[p->index].dst.cargo = fr.cargo;
+	_companies_ai[c->index].dst.cargo = fr.cargo;
 
 	// Fill middle field 1
-	_players_ai[p->index].mid1.spec_tile = AiGetPctTileBetween(
-		_players_ai[p->index].src.spec_tile,
-		_players_ai[p->index].dst.spec_tile,
+	_companies_ai[c->index].mid1.spec_tile = AiGetPctTileBetween(
+		_companies_ai[c->index].src.spec_tile,
+		_companies_ai[c->index].dst.spec_tile,
 		0x55
 	);
-	_players_ai[p->index].mid1.use_tile = 0;
-	_players_ai[p->index].mid1.rand_rng = 6;
-	_players_ai[p->index].mid1.cur_building_rule = 0xFF;
-	_players_ai[p->index].mid1.unk6 = 2;
-	_players_ai[p->index].mid1.unk7 = 1;
-	_players_ai[p->index].mid1.buildcmd_a = 0x30;
-	_players_ai[p->index].mid1.buildcmd_b = 0xFF;
-	_players_ai[p->index].mid1.direction = _players_ai[p->index].src.direction;
-	_players_ai[p->index].mid1.cargo = fr.cargo;
+	_companies_ai[c->index].mid1.use_tile = 0;
+	_companies_ai[c->index].mid1.rand_rng = 6;
+	_companies_ai[c->index].mid1.cur_building_rule = 0xFF;
+	_companies_ai[c->index].mid1.unk6 = 2;
+	_companies_ai[c->index].mid1.unk7 = 1;
+	_companies_ai[c->index].mid1.buildcmd_a = 0x30;
+	_companies_ai[c->index].mid1.buildcmd_b = 0xFF;
+	_companies_ai[c->index].mid1.direction = _companies_ai[c->index].src.direction;
+	_companies_ai[c->index].mid1.cargo = fr.cargo;
 
 	// Fill middle field 2
-	_players_ai[p->index].mid2.spec_tile = AiGetPctTileBetween(
-		_players_ai[p->index].src.spec_tile,
-		_players_ai[p->index].dst.spec_tile,
+	_companies_ai[c->index].mid2.spec_tile = AiGetPctTileBetween(
+		_companies_ai[c->index].src.spec_tile,
+		_companies_ai[c->index].dst.spec_tile,
 		0xAA
 	);
-	_players_ai[p->index].mid2.use_tile = 0;
-	_players_ai[p->index].mid2.rand_rng = 6;
-	_players_ai[p->index].mid2.cur_building_rule = 0xFF;
-	_players_ai[p->index].mid2.unk6 = 2;
-	_players_ai[p->index].mid2.unk7 = 1;
-	_players_ai[p->index].mid2.buildcmd_a = 0xFF;
-	_players_ai[p->index].mid2.buildcmd_b = 0xFF;
-	_players_ai[p->index].mid2.direction = _players_ai[p->index].dst.direction;
-	_players_ai[p->index].mid2.cargo = fr.cargo;
+	_companies_ai[c->index].mid2.use_tile = 0;
+	_companies_ai[c->index].mid2.rand_rng = 6;
+	_companies_ai[c->index].mid2.cur_building_rule = 0xFF;
+	_companies_ai[c->index].mid2.unk6 = 2;
+	_companies_ai[c->index].mid2.unk7 = 1;
+	_companies_ai[c->index].mid2.buildcmd_a = 0xFF;
+	_companies_ai[c->index].mid2.buildcmd_b = 0xFF;
+	_companies_ai[c->index].mid2.direction = _companies_ai[c->index].dst.direction;
+	_companies_ai[c->index].mid2.cargo = fr.cargo;
 
 	// Fill common fields
-	_players_ai[p->index].cargo_type = fr.cargo;
-	_players_ai[p->index].num_wagons = 3;
-	_players_ai[p->index].build_kind = 2;
-	_players_ai[p->index].num_build_rec = 4;
-	_players_ai[p->index].num_loco_to_build = 2;
-	_players_ai[p->index].num_want_fullload = 2;
-	_players_ai[p->index].wagon_list[0] = INVALID_VEHICLE;
-	_players_ai[p->index].order_list_blocks[0] = 0;
-	_players_ai[p->index].order_list_blocks[1] = 1;
-	_players_ai[p->index].order_list_blocks[2] = 255;
-
-	_players_ai[p->index].state = AIS_BUILD_DEFAULT_RAIL_BLOCKS;
-	_players_ai[p->index].state_mode = UCHAR_MAX;
-	_players_ai[p->index].state_counter = 0;
-	_players_ai[p->index].timeout_counter = 0;
+	_companies_ai[c->index].cargo_type = fr.cargo;
+	_companies_ai[c->index].num_wagons = 3;
+	_companies_ai[c->index].build_kind = 2;
+	_companies_ai[c->index].num_build_rec = 4;
+	_companies_ai[c->index].num_loco_to_build = 2;
+	_companies_ai[c->index].num_want_fullload = 2;
+	_companies_ai[c->index].wagon_list[0] = INVALID_VEHICLE;
+	_companies_ai[c->index].order_list_blocks[0] = 0;
+	_companies_ai[c->index].order_list_blocks[1] = 1;
+	_companies_ai[c->index].order_list_blocks[2] = 255;
+
+	_companies_ai[c->index].state = AIS_BUILD_DEFAULT_RAIL_BLOCKS;
+	_companies_ai[c->index].state_mode = UCHAR_MAX;
+	_companies_ai[c->index].state_counter = 0;
+	_companies_ai[c->index].timeout_counter = 0;
 }
 
-static void AiWantMediumIndustryRoute(Player *p)
+static void AiWantMediumIndustryRoute(Company *c)
 {
 	int i;
 	FoundRoute fr;
@@ -834,56 +834,56 @@
 		if (--i == 0) return;
 	}
 
-	if (!AiCheckIfRouteIsGood(p, &fr, 1)) return;
+	if (!AiCheckIfRouteIsGood(c, &fr, 1)) return;
 
 	// Fill the source field
-	_players_ai[p->index].src.spec_tile = GET_TOWN_OR_INDUSTRY_TILE(fr.from);
-	_players_ai[p->index].src.use_tile = 0;
-	_players_ai[p->index].src.rand_rng = 9;
-	_players_ai[p->index].src.cur_building_rule = 0xFF;
-	_players_ai[p->index].src.unk6 = 1;
-	_players_ai[p->index].src.unk7 = 0;
-	_players_ai[p->index].src.buildcmd_a = 0x10;
-	_players_ai[p->index].src.buildcmd_b = 0xFF;
-	_players_ai[p->index].src.direction = AiGetDirectionBetweenTiles(
+	_companies_ai[c->index].src.spec_tile = GET_TOWN_OR_INDUSTRY_TILE(fr.from);
+	_companies_ai[c->index].src.use_tile = 0;
+	_companies_ai[c->index].src.rand_rng = 9;
+	_companies_ai[c->index].src.cur_building_rule = 0xFF;
+	_companies_ai[c->index].src.unk6 = 1;
+	_companies_ai[c->index].src.unk7 = 0;
+	_companies_ai[c->index].src.buildcmd_a = 0x10;
+	_companies_ai[c->index].src.buildcmd_b = 0xFF;
+	_companies_ai[c->index].src.direction = AiGetDirectionBetweenTiles(
 		GET_TOWN_OR_INDUSTRY_TILE(fr.from),
 		GET_TOWN_OR_INDUSTRY_TILE(fr.to)
 	);
-	_players_ai[p->index].src.cargo = fr.cargo | 0x80;
+	_companies_ai[c->index].src.cargo = fr.cargo | 0x80;
 
 	// Fill the dest field
-	_players_ai[p->index].dst.spec_tile = GET_TOWN_OR_INDUSTRY_TILE(fr.to);
-	_players_ai[p->index].dst.use_tile = 0;
-	_players_ai[p->index].dst.rand_rng = 9;
-	_players_ai[p->index].dst.cur_building_rule = 0xFF;
-	_players_ai[p->index].dst.unk6 = 1;
-	_players_ai[p->index].dst.unk7 = 0;
-	_players_ai[p->index].dst.buildcmd_a = 0xFF;
-	_players_ai[p->index].dst.buildcmd_b = 0xFF;
-	_players_ai[p->index].dst.direction = AiGetDirectionBetweenTiles(
+	_companies_ai[c->index].dst.spec_tile = GET_TOWN_OR_INDUSTRY_TILE(fr.to);
+	_companies_ai[c->index].dst.use_tile = 0;
+	_companies_ai[c->index].dst.rand_rng = 9;
+	_companies_ai[c->index].dst.cur_building_rule = 0xFF;
+	_companies_ai[c->index].dst.unk6 = 1;
+	_companies_ai[c->index].dst.unk7 = 0;
+	_companies_ai[c->index].dst.buildcmd_a = 0xFF;
+	_companies_ai[c->index].dst.buildcmd_b = 0xFF;
+	_companies_ai[c->index].dst.direction = AiGetDirectionBetweenTiles(
 		GET_TOWN_OR_INDUSTRY_TILE(fr.to),
 		GET_TOWN_OR_INDUSTRY_TILE(fr.from)
 	);
-	_players_ai[p->index].dst.cargo = fr.cargo;
+	_companies_ai[c->index].dst.cargo = fr.cargo;
 
 	// Fill common fields
-	_players_ai[p->index].cargo_type = fr.cargo;
-	_players_ai[p->index].num_wagons = 3;
-	_players_ai[p->index].build_kind = 1;
-	_players_ai[p->index].num_build_rec = 2;
-	_players_ai[p->index].num_loco_to_build = 1;
-	_players_ai[p->index].num_want_fullload = 1;
-	_players_ai[p->index].wagon_list[0] = INVALID_VEHICLE;
-	_players_ai[p->index].order_list_blocks[0] = 0;
-	_players_ai[p->index].order_list_blocks[1] = 1;
-	_players_ai[p->index].order_list_blocks[2] = 255;
-	_players_ai[p->index].state = AIS_BUILD_DEFAULT_RAIL_BLOCKS;
-	_players_ai[p->index].state_mode = UCHAR_MAX;
-	_players_ai[p->index].state_counter = 0;
-	_players_ai[p->index].timeout_counter = 0;
+	_companies_ai[c->index].cargo_type = fr.cargo;
+	_companies_ai[c->index].num_wagons = 3;
+	_companies_ai[c->index].build_kind = 1;
+	_companies_ai[c->index].num_build_rec = 2;
+	_companies_ai[c->index].num_loco_to_build = 1;
+	_companies_ai[c->index].num_want_fullload = 1;
+	_companies_ai[c->index].wagon_list[0] = INVALID_VEHICLE;
+	_companies_ai[c->index].order_list_blocks[0] = 0;
+	_companies_ai[c->index].order_list_blocks[1] = 1;
+	_companies_ai[c->index].order_list_blocks[2] = 255;
+	_companies_ai[c->index].state = AIS_BUILD_DEFAULT_RAIL_BLOCKS;
+	_companies_ai[c->index].state_mode = UCHAR_MAX;
+	_companies_ai[c->index].state_counter = 0;
+	_companies_ai[c->index].timeout_counter = 0;
 }
 
-static void AiWantShortIndustryRoute(Player *p)
+static void AiWantShortIndustryRoute(Company *c)
 {
 	int i;
 	FoundRoute fr;
@@ -902,56 +902,56 @@
 		if (--i == 0) return;
 	}
 
-	if (!AiCheckIfRouteIsGood(p, &fr, 1)) return;
+	if (!AiCheckIfRouteIsGood(c, &fr, 1)) return;
 
 	// Fill the source field
-	_players_ai[p->index].src.spec_tile = GET_TOWN_OR_INDUSTRY_TILE(fr.from);
-	_players_ai[p->index].src.use_tile = 0;
-	_players_ai[p->index].src.rand_rng = 9;
-	_players_ai[p->index].src.cur_building_rule = 0xFF;
-	_players_ai[p->index].src.unk6 = 1;
-	_players_ai[p->index].src.unk7 = 0;
-	_players_ai[p->index].src.buildcmd_a = 0x10;
-	_players_ai[p->index].src.buildcmd_b = 0xFF;
-	_players_ai[p->index].src.direction = AiGetDirectionBetweenTiles(
+	_companies_ai[c->index].src.spec_tile = GET_TOWN_OR_INDUSTRY_TILE(fr.from);
+	_companies_ai[c->index].src.use_tile = 0;
+	_companies_ai[c->index].src.rand_rng = 9;
+	_companies_ai[c->index].src.cur_building_rule = 0xFF;
+	_companies_ai[c->index].src.unk6 = 1;
+	_companies_ai[c->index].src.unk7 = 0;
+	_companies_ai[c->index].src.buildcmd_a = 0x10;
+	_companies_ai[c->index].src.buildcmd_b = 0xFF;
+	_companies_ai[c->index].src.direction = AiGetDirectionBetweenTiles(
 		GET_TOWN_OR_INDUSTRY_TILE(fr.from),
 		GET_TOWN_OR_INDUSTRY_TILE(fr.to)
 	);
-	_players_ai[p->index].src.cargo = fr.cargo | 0x80;
+	_companies_ai[c->index].src.cargo = fr.cargo | 0x80;
 
 	// Fill the dest field
-	_players_ai[p->index].dst.spec_tile = GET_TOWN_OR_INDUSTRY_TILE(fr.to);
-	_players_ai[p->index].dst.use_tile = 0;
-	_players_ai[p->index].dst.rand_rng = 9;
-	_players_ai[p->index].dst.cur_building_rule = 0xFF;
-	_players_ai[p->index].dst.unk6 = 1;
-	_players_ai[p->index].dst.unk7 = 0;
-	_players_ai[p->index].dst.buildcmd_a = 0xFF;
-	_players_ai[p->index].dst.buildcmd_b = 0xFF;
-	_players_ai[p->index].dst.direction = AiGetDirectionBetweenTiles(
+	_companies_ai[c->index].dst.spec_tile = GET_TOWN_OR_INDUSTRY_TILE(fr.to);
+	_companies_ai[c->index].dst.use_tile = 0;
+	_companies_ai[c->index].dst.rand_rng = 9;
+	_companies_ai[c->index].dst.cur_building_rule = 0xFF;
+	_companies_ai[c->index].dst.unk6 = 1;
+	_companies_ai[c->index].dst.unk7 = 0;
+	_companies_ai[c->index].dst.buildcmd_a = 0xFF;
+	_companies_ai[c->index].dst.buildcmd_b = 0xFF;
+	_companies_ai[c->index].dst.direction = AiGetDirectionBetweenTiles(
 		GET_TOWN_OR_INDUSTRY_TILE(fr.to),
 		GET_TOWN_OR_INDUSTRY_TILE(fr.from)
 	);
-	_players_ai[p->index].dst.cargo = fr.cargo;
+	_companies_ai[c->index].dst.cargo = fr.cargo;
 
 	// Fill common fields
-	_players_ai[p->index].cargo_type = fr.cargo;
-	_players_ai[p->index].num_wagons = 2;
-	_players_ai[p->index].build_kind = 1;
-	_players_ai[p->index].num_build_rec = 2;
-	_players_ai[p->index].num_loco_to_build = 1;
-	_players_ai[p->index].num_want_fullload = 1;
-	_players_ai[p->index].wagon_list[0] = INVALID_VEHICLE;
-	_players_ai[p->index].order_list_blocks[0] = 0;
-	_players_ai[p->index].order_list_blocks[1] = 1;
-	_players_ai[p->index].order_list_blocks[2] = 255;
-	_players_ai[p->index].state = AIS_BUILD_DEFAULT_RAIL_BLOCKS;
-	_players_ai[p->index].state_mode = UCHAR_MAX;
-	_players_ai[p->index].state_counter = 0;
-	_players_ai[p->index].timeout_counter = 0;
+	_companies_ai[c->index].cargo_type = fr.cargo;
+	_companies_ai[c->index].num_wagons = 2;
+	_companies_ai[c->index].build_kind = 1;
+	_companies_ai[c->index].num_build_rec = 2;
+	_companies_ai[c->index].num_loco_to_build = 1;
+	_companies_ai[c->index].num_want_fullload = 1;
+	_companies_ai[c->index].wagon_list[0] = INVALID_VEHICLE;
+	_companies_ai[c->index].order_list_blocks[0] = 0;
+	_companies_ai[c->index].order_list_blocks[1] = 1;
+	_companies_ai[c->index].order_list_blocks[2] = 255;
+	_companies_ai[c->index].state = AIS_BUILD_DEFAULT_RAIL_BLOCKS;
+	_companies_ai[c->index].state_mode = UCHAR_MAX;
+	_companies_ai[c->index].state_counter = 0;
+	_companies_ai[c->index].timeout_counter = 0;
 }
 
-static void AiWantMailRoute(Player *p)
+static void AiWantMailRoute(Company *c)
 {
 	int i;
 	FoundRoute fr;
@@ -971,88 +971,88 @@
 	}
 
 	fr.cargo = CT_MAIL;
-	if (!AiCheckIfRouteIsGood(p, &fr, 1)) return;
+	if (!AiCheckIfRouteIsGood(c, &fr, 1)) return;
 
 	// Fill the source field
-	_players_ai[p->index].src.spec_tile = GET_TOWN_OR_INDUSTRY_TILE(fr.from);
-	_players_ai[p->index].src.use_tile = 0;
-	_players_ai[p->index].src.rand_rng = 7;
-	_players_ai[p->index].src.cur_building_rule = 0xFF;
-	_players_ai[p->index].src.unk6 = 1;
-	_players_ai[p->index].src.unk7 = 0;
-	_players_ai[p->index].src.buildcmd_a = 0x24;
-	_players_ai[p->index].src.buildcmd_b = 0xFF;
-	_players_ai[p->index].src.direction = AiGetDirectionBetweenTiles(
+	_companies_ai[c->index].src.spec_tile = GET_TOWN_OR_INDUSTRY_TILE(fr.from);
+	_companies_ai[c->index].src.use_tile = 0;
+	_companies_ai[c->index].src.rand_rng = 7;
+	_companies_ai[c->index].src.cur_building_rule = 0xFF;
+	_companies_ai[c->index].src.unk6 = 1;
+	_companies_ai[c->index].src.unk7 = 0;
+	_companies_ai[c->index].src.buildcmd_a = 0x24;
+	_companies_ai[c->index].src.buildcmd_b = 0xFF;
+	_companies_ai[c->index].src.direction = AiGetDirectionBetweenTiles(
 		GET_TOWN_OR_INDUSTRY_TILE(fr.from),
 		GET_TOWN_OR_INDUSTRY_TILE(fr.to)
 	);
-	_players_ai[p->index].src.cargo = fr.cargo;
+	_companies_ai[c->index].src.cargo = fr.cargo;
 
 	// Fill the dest field
-	_players_ai[p->index].dst.spec_tile = GET_TOWN_OR_INDUSTRY_TILE(fr.to);
-	_players_ai[p->index].dst.use_tile = 0;
-	_players_ai[p->index].dst.rand_rng = 7;
-	_players_ai[p->index].dst.cur_building_rule = 0xFF;
-	_players_ai[p->index].dst.unk6 = 1;
-	_players_ai[p->index].dst.unk7 = 0;
-	_players_ai[p->index].dst.buildcmd_a = 0x34;
-	_players_ai[p->index].dst.buildcmd_b = 0xFF;
-	_players_ai[p->index].dst.direction = AiGetDirectionBetweenTiles(
+	_companies_ai[c->index].dst.spec_tile = GET_TOWN_OR_INDUSTRY_TILE(fr.to);
+	_companies_ai[c->index].dst.use_tile = 0;
+	_companies_ai[c->index].dst.rand_rng = 7;
+	_companies_ai[c->index].dst.cur_building_rule = 0xFF;
+	_companies_ai[c->index].dst.unk6 = 1;
+	_companies_ai[c->index].dst.unk7 = 0;
+	_companies_ai[c->index].dst.buildcmd_a = 0x34;
+	_companies_ai[c->index].dst.buildcmd_b = 0xFF;
+	_companies_ai[c->index].dst.direction = AiGetDirectionBetweenTiles(
 		GET_TOWN_OR_INDUSTRY_TILE(fr.to),
 		GET_TOWN_OR_INDUSTRY_TILE(fr.from)
 	);
-	_players_ai[p->index].dst.cargo = fr.cargo;
+	_companies_ai[c->index].dst.cargo = fr.cargo;
 
 	// Fill middle field 1
-	_players_ai[p->index].mid1.spec_tile = AiGetPctTileBetween(
+	_companies_ai[c->index].mid1.spec_tile = AiGetPctTileBetween(
 		GET_TOWN_OR_INDUSTRY_TILE(fr.from),
 		GET_TOWN_OR_INDUSTRY_TILE(fr.to),
 		0x55
 	);
-	_players_ai[p->index].mid1.use_tile = 0;
-	_players_ai[p->index].mid1.rand_rng = 6;
-	_players_ai[p->index].mid1.cur_building_rule = 0xFF;
-	_players_ai[p->index].mid1.unk6 = 2;
-	_players_ai[p->index].mid1.unk7 = 1;
-	_players_ai[p->index].mid1.buildcmd_a = 0x30;
-	_players_ai[p->index].mid1.buildcmd_b = 0xFF;
-	_players_ai[p->index].mid1.direction = _players_ai[p->index].src.direction;
-	_players_ai[p->index].mid1.cargo = fr.cargo;
+	_companies_ai[c->index].mid1.use_tile = 0;
+	_companies_ai[c->index].mid1.rand_rng = 6;
+	_companies_ai[c->index].mid1.cur_building_rule = 0xFF;
+	_companies_ai[c->index].mid1.unk6 = 2;
+	_companies_ai[c->index].mid1.unk7 = 1;
+	_companies_ai[c->index].mid1.buildcmd_a = 0x30;
+	_companies_ai[c->index].mid1.buildcmd_b = 0xFF;
+	_companies_ai[c->index].mid1.direction = _companies_ai[c->index].src.direction;
+	_companies_ai[c->index].mid1.cargo = fr.cargo;
 
 	// Fill middle field 2
-	_players_ai[p->index].mid2.spec_tile = AiGetPctTileBetween(
+	_companies_ai[c->index].mid2.spec_tile = AiGetPctTileBetween(
 		GET_TOWN_OR_INDUSTRY_TILE(fr.from),
 		GET_TOWN_OR_INDUSTRY_TILE(fr.to),
 		0xAA
 	);
-	_players_ai[p->index].mid2.use_tile = 0;
-	_players_ai[p->index].mid2.rand_rng = 6;
-	_players_ai[p->index].mid2.cur_building_rule = 0xFF;
-	_players_ai[p->index].mid2.unk6 = 2;
-	_players_ai[p->index].mid2.unk7 = 1;
-	_players_ai[p->index].mid2.buildcmd_a = 0xFF;
-	_players_ai[p->index].mid2.buildcmd_b = 0xFF;
-	_players_ai[p->index].mid2.direction = _players_ai[p->index].dst.direction;
-	_players_ai[p->index].mid2.cargo = fr.cargo;
+	_companies_ai[c->index].mid2.use_tile = 0;
+	_companies_ai[c->index].mid2.rand_rng = 6;
+	_companies_ai[c->index].mid2.cur_building_rule = 0xFF;
+	_companies_ai[c->index].mid2.unk6 = 2;
+	_companies_ai[c->index].mid2.unk7 = 1;
+	_companies_ai[c->index].mid2.buildcmd_a = 0xFF;
+	_companies_ai[c->index].mid2.buildcmd_b = 0xFF;
+	_companies_ai[c->index].mid2.direction = _companies_ai[c->index].dst.direction;
+	_companies_ai[c->index].mid2.cargo = fr.cargo;
 
 	// Fill common fields
-	_players_ai[p->index].cargo_type = fr.cargo;
-	_players_ai[p->index].num_wagons = 3;
-	_players_ai[p->index].build_kind = 2;
-	_players_ai[p->index].num_build_rec = 4;
-	_players_ai[p->index].num_loco_to_build = 2;
-	_players_ai[p->index].num_want_fullload = 0;
-	_players_ai[p->index].wagon_list[0] = INVALID_VEHICLE;
-	_players_ai[p->index].order_list_blocks[0] = 0;
-	_players_ai[p->index].order_list_blocks[1] = 1;
-	_players_ai[p->index].order_list_blocks[2] = 255;
-	_players_ai[p->index].state = AIS_BUILD_DEFAULT_RAIL_BLOCKS;
-	_players_ai[p->index].state_mode = UCHAR_MAX;
-	_players_ai[p->index].state_counter = 0;
-	_players_ai[p->index].timeout_counter = 0;
+	_companies_ai[c->index].cargo_type = fr.cargo;
+	_companies_ai[c->index].num_wagons = 3;
+	_companies_ai[c->index].build_kind = 2;
+	_companies_ai[c->index].num_build_rec = 4;
+	_companies_ai[c->index].num_loco_to_build = 2;
+	_companies_ai[c->index].num_want_fullload = 0;
+	_companies_ai[c->index].wagon_list[0] = INVALID_VEHICLE;
+	_companies_ai[c->index].order_list_blocks[0] = 0;
+	_companies_ai[c->index].order_list_blocks[1] = 1;
+	_companies_ai[c->index].order_list_blocks[2] = 255;
+	_companies_ai[c->index].state = AIS_BUILD_DEFAULT_RAIL_BLOCKS;
+	_companies_ai[c->index].state_mode = UCHAR_MAX;
+	_companies_ai[c->index].state_counter = 0;
+	_companies_ai[c->index].timeout_counter = 0;
 }
 
-static void AiWantPassengerRoute(Player *p)
+static void AiWantPassengerRoute(Company *c)
 {
 	int i;
 	FoundRoute fr;
@@ -1072,75 +1072,75 @@
 	}
 
 	fr.cargo = CT_PASSENGERS;
-	if (!AiCheckIfRouteIsGood(p, &fr, 1)) return;
+	if (!AiCheckIfRouteIsGood(c, &fr, 1)) return;
 
 	// Fill the source field
-	_players_ai[p->index].src.spec_tile = GET_TOWN_OR_INDUSTRY_TILE(fr.from);
-	_players_ai[p->index].src.use_tile = 0;
-	_players_ai[p->index].src.rand_rng = 7;
-	_players_ai[p->index].src.cur_building_rule = 0xFF;
-	_players_ai[p->index].src.unk6 = 1;
-	_players_ai[p->index].src.unk7 = 0;
-	_players_ai[p->index].src.buildcmd_a = 0x10;
-	_players_ai[p->index].src.buildcmd_b = 0xFF;
-	_players_ai[p->index].src.direction = AiGetDirectionBetweenTiles(
+	_companies_ai[c->index].src.spec_tile = GET_TOWN_OR_INDUSTRY_TILE(fr.from);
+	_companies_ai[c->index].src.use_tile = 0;
+	_companies_ai[c->index].src.rand_rng = 7;
+	_companies_ai[c->index].src.cur_building_rule = 0xFF;
+	_companies_ai[c->index].src.unk6 = 1;
+	_companies_ai[c->index].src.unk7 = 0;
+	_companies_ai[c->index].src.buildcmd_a = 0x10;
+	_companies_ai[c->index].src.buildcmd_b = 0xFF;
+	_companies_ai[c->index].src.direction = AiGetDirectionBetweenTiles(
 		GET_TOWN_OR_INDUSTRY_TILE(fr.from),
 		GET_TOWN_OR_INDUSTRY_TILE(fr.to)
 	);
-	_players_ai[p->index].src.cargo = fr.cargo;
+	_companies_ai[c->index].src.cargo = fr.cargo;
 
 	// Fill the dest field
-	_players_ai[p->index].dst.spec_tile = GET_TOWN_OR_INDUSTRY_TILE(fr.to);
-	_players_ai[p->index].dst.use_tile = 0;
-	_players_ai[p->index].dst.rand_rng = 7;
-	_players_ai[p->index].dst.cur_building_rule = 0xFF;
-	_players_ai[p->index].dst.unk6 = 1;
-	_players_ai[p->index].dst.unk7 = 0;
-	_players_ai[p->index].dst.buildcmd_a = 0xFF;
-	_players_ai[p->index].dst.buildcmd_b = 0xFF;
-	_players_ai[p->index].dst.direction = AiGetDirectionBetweenTiles(
+	_companies_ai[c->index].dst.spec_tile = GET_TOWN_OR_INDUSTRY_TILE(fr.to);
+	_companies_ai[c->index].dst.use_tile = 0;
+	_companies_ai[c->index].dst.rand_rng = 7;
+	_companies_ai[c->index].dst.cur_building_rule = 0xFF;
+	_companies_ai[c->index].dst.unk6 = 1;
+	_companies_ai[c->index].dst.unk7 = 0;
+	_companies_ai[c->index].dst.buildcmd_a = 0xFF;
+	_companies_ai[c->index].dst.buildcmd_b = 0xFF;
+	_companies_ai[c->index].dst.direction = AiGetDirectionBetweenTiles(
 		GET_TOWN_OR_INDUSTRY_TILE(fr.to),
 		GET_TOWN_OR_INDUSTRY_TILE(fr.from)
 	);
-	_players_ai[p->index].dst.cargo = fr.cargo;
+	_companies_ai[c->index].dst.cargo = fr.cargo;
 
 	// Fill common fields
-	_players_ai[p->index].cargo_type = fr.cargo;
-	_players_ai[p->index].num_wagons = 2;
-	_players_ai[p->index].build_kind = 1;
-	_players_ai[p->index].num_build_rec = 2;
-	_players_ai[p->index].num_loco_to_build = 1;
-	_players_ai[p->index].num_want_fullload = 0;
-	_players_ai[p->index].wagon_list[0] = INVALID_VEHICLE;
-	_players_ai[p->index].order_list_blocks[0] = 0;
-	_players_ai[p->index].order_list_blocks[1] = 1;
-	_players_ai[p->index].order_list_blocks[2] = 255;
-	_players_ai[p->index].state = AIS_BUILD_DEFAULT_RAIL_BLOCKS;
-	_players_ai[p->index].state_mode = UCHAR_MAX;
-	_players_ai[p->index].state_counter = 0;
-	_players_ai[p->index].timeout_counter = 0;
+	_companies_ai[c->index].cargo_type = fr.cargo;
+	_companies_ai[c->index].num_wagons = 2;
+	_companies_ai[c->index].build_kind = 1;
+	_companies_ai[c->index].num_build_rec = 2;
+	_companies_ai[c->index].num_loco_to_build = 1;
+	_companies_ai[c->index].num_want_fullload = 0;
+	_companies_ai[c->index].wagon_list[0] = INVALID_VEHICLE;
+	_companies_ai[c->index].order_list_blocks[0] = 0;
+	_companies_ai[c->index].order_list_blocks[1] = 1;
+	_companies_ai[c->index].order_list_blocks[2] = 255;
+	_companies_ai[c->index].state = AIS_BUILD_DEFAULT_RAIL_BLOCKS;
+	_companies_ai[c->index].state_mode = UCHAR_MAX;
+	_companies_ai[c->index].state_counter = 0;
+	_companies_ai[c->index].timeout_counter = 0;
 }
 
-static void AiWantTrainRoute(Player *p)
+static void AiWantTrainRoute(Company *c)
 {
 	uint16 r = GB(Random(), 0, 16);
 
-	_players_ai[p->index].railtype_to_use = GetBestRailtype(p->index);
+	_companies_ai[c->index].railtype_to_use = GetBestRailtype(c->index);
 
 	if (r > 0xD000) {
-		AiWantLongIndustryRoute(p);
+		AiWantLongIndustryRoute(c);
 	} else if (r > 0x6000) {
-		AiWantMediumIndustryRoute(p);
+		AiWantMediumIndustryRoute(c);
 	} else if (r > 0x1000) {
-		AiWantShortIndustryRoute(p);
+		AiWantShortIndustryRoute(c);
 	} else if (r > 0x800) {
-		AiWantPassengerRoute(p);
+		AiWantPassengerRoute(c);
 	} else {
-		AiWantMailRoute(p);
+		AiWantMailRoute(c);
 	}
 }
 
-static void AiWantLongRoadIndustryRoute(Player *p)
+static void AiWantLongRoadIndustryRoute(Company *c)
 {
 	int i;
 	FoundRoute fr;
@@ -1159,44 +1159,44 @@
 		if (--i == 0) return;
 	}
 
-	if (!AiCheckIfRouteIsGood(p, &fr, 2)) return;
+	if (!AiCheckIfRouteIsGood(c, &fr, 2)) return;
 
 	// Fill the source field
-	_players_ai[p->index].src.spec_tile = GET_TOWN_OR_INDUSTRY_TILE(fr.from);
-	_players_ai[p->index].src.use_tile = 0;
-	_players_ai[p->index].src.rand_rng = 9;
-	_players_ai[p->index].src.cur_building_rule = 0xFF;
-	_players_ai[p->index].src.buildcmd_a = 1;
-	_players_ai[p->index].src.direction = 0;
-	_players_ai[p->index].src.cargo = fr.cargo | 0x80;
+	_companies_ai[c->index].src.spec_tile = GET_TOWN_OR_INDUSTRY_TILE(fr.from);
+	_companies_ai[c->index].src.use_tile = 0;
+	_companies_ai[c->index].src.rand_rng = 9;
+	_companies_ai[c->index].src.cur_building_rule = 0xFF;
+	_companies_ai[c->index].src.buildcmd_a = 1;
+	_companies_ai[c->index].src.direction = 0;
+	_companies_ai[c->index].src.cargo = fr.cargo | 0x80;
 
 	// Fill the dest field
-	_players_ai[p->index].dst.spec_tile = GET_TOWN_OR_INDUSTRY_TILE(fr.to);
-	_players_ai[p->index].dst.use_tile = 0;
-	_players_ai[p->index].dst.rand_rng = 9;
-	_players_ai[p->index].dst.cur_building_rule = 0xFF;
-	_players_ai[p->index].dst.buildcmd_a = 0xFF;
-	_players_ai[p->index].dst.direction = 0;
-	_players_ai[p->index].dst.cargo = fr.cargo;
+	_companies_ai[c->index].dst.spec_tile = GET_TOWN_OR_INDUSTRY_TILE(fr.to);
+	_companies_ai[c->index].dst.use_tile = 0;
+	_companies_ai[c->index].dst.rand_rng = 9;
+	_companies_ai[c->index].dst.cur_building_rule = 0xFF;
+	_companies_ai[c->index].dst.buildcmd_a = 0xFF;
+	_companies_ai[c->index].dst.direction = 0;
+	_companies_ai[c->index].dst.cargo = fr.cargo;
 
 	// Fill common fields
-	_players_ai[p->index].cargo_type = fr.cargo;
-	_players_ai[p->index].num_build_rec = 2;
-	_players_ai[p->index].num_loco_to_build = 5;
-	_players_ai[p->index].num_want_fullload = 5;
-
-//	_players_ai[p->index].loco_id = INVALID_VEHICLE;
-	_players_ai[p->index].order_list_blocks[0] = 0;
-	_players_ai[p->index].order_list_blocks[1] = 1;
-	_players_ai[p->index].order_list_blocks[2] = 255;
-
-	_players_ai[p->index].state = AIS_BUILD_DEFAULT_ROAD_BLOCKS;
-	_players_ai[p->index].state_mode = UCHAR_MAX;
-	_players_ai[p->index].state_counter = 0;
-	_players_ai[p->index].timeout_counter = 0;
+	_companies_ai[c->index].cargo_type = fr.cargo;
+	_companies_ai[c->index].num_build_rec = 2;
+	_companies_ai[c->index].num_loco_to_build = 5;
+	_companies_ai[c->index].num_want_fullload = 5;
+
+//	_companies_ai[c->index].loco_id = INVALID_VEHICLE;
+	_companies_ai[c->index].order_list_blocks[0] = 0;
+	_companies_ai[c->index].order_list_blocks[1] = 1;
+	_companies_ai[c->index].order_list_blocks[2] = 255;
+
+	_companies_ai[c->index].state = AIS_BUILD_DEFAULT_ROAD_BLOCKS;
+	_companies_ai[c->index].state_mode = UCHAR_MAX;
+	_companies_ai[c->index].state_counter = 0;
+	_companies_ai[c->index].timeout_counter = 0;
 }
 
-static void AiWantMediumRoadIndustryRoute(Player *p)
+static void AiWantMediumRoadIndustryRoute(Company *c)
 {
 	int i;
 	FoundRoute fr;
@@ -1215,44 +1215,44 @@
 		if (--i == 0) return;
 	}
 
-	if (!AiCheckIfRouteIsGood(p, &fr, 2)) return;
+	if (!AiCheckIfRouteIsGood(c, &fr, 2)) return;
 
 	// Fill the source field
-	_players_ai[p->index].src.spec_tile = GET_TOWN_OR_INDUSTRY_TILE(fr.from);
-	_players_ai[p->index].src.use_tile = 0;
-	_players_ai[p->index].src.rand_rng = 9;
-	_players_ai[p->index].src.cur_building_rule = 0xFF;
-	_players_ai[p->index].src.buildcmd_a = 1;
-	_players_ai[p->index].src.direction = 0;
-	_players_ai[p->index].src.cargo = fr.cargo | 0x80;
+	_companies_ai[c->index].src.spec_tile = GET_TOWN_OR_INDUSTRY_TILE(fr.from);
+	_companies_ai[c->index].src.use_tile = 0;
+	_companies_ai[c->index].src.rand_rng = 9;
+	_companies_ai[c->index].src.cur_building_rule = 0xFF;
+	_companies_ai[c->index].src.buildcmd_a = 1;
+	_companies_ai[c->index].src.direction = 0;
+	_companies_ai[c->index].src.cargo = fr.cargo | 0x80;
 
 	// Fill the dest field
-	_players_ai[p->index].dst.spec_tile = GET_TOWN_OR_INDUSTRY_TILE(fr.to);
-	_players_ai[p->index].dst.use_tile = 0;
-	_players_ai[p->index].dst.rand_rng = 9;
-	_players_ai[p->index].dst.cur_building_rule = 0xFF;
-	_players_ai[p->index].dst.buildcmd_a = 0xFF;
-	_players_ai[p->index].dst.direction = 0;
-	_players_ai[p->index].dst.cargo = fr.cargo;
+	_companies_ai[c->index].dst.spec_tile = GET_TOWN_OR_INDUSTRY_TILE(fr.to);
+	_companies_ai[c->index].dst.use_tile = 0;
+	_companies_ai[c->index].dst.rand_rng = 9;
+	_companies_ai[c->index].dst.cur_building_rule = 0xFF;
+	_companies_ai[c->index].dst.buildcmd_a = 0xFF;
+	_companies_ai[c->index].dst.direction = 0;
+	_companies_ai[c->index].dst.cargo = fr.cargo;
 
 	// Fill common fields
-	_players_ai[p->index].cargo_type = fr.cargo;
-	_players_ai[p->index].num_build_rec = 2;
-	_players_ai[p->index].num_loco_to_build = 3;
-	_players_ai[p->index].num_want_fullload = 3;
-
-//	_players_ai[p->index].loco_id = INVALID_VEHICLE;
-	_players_ai[p->index].order_list_blocks[0] = 0;
-	_players_ai[p->index].order_list_blocks[1] = 1;
-	_players_ai[p->index].order_list_blocks[2] = 255;
-
-	_players_ai[p->index].state = AIS_BUILD_DEFAULT_ROAD_BLOCKS;
-	_players_ai[p->index].state_mode = UCHAR_MAX;
-	_players_ai[p->index].state_counter = 0;
-	_players_ai[p->index].timeout_counter = 0;
+	_companies_ai[c->index].cargo_type = fr.cargo;
+	_companies_ai[c->index].num_build_rec = 2;
+	_companies_ai[c->index].num_loco_to_build = 3;
+	_companies_ai[c->index].num_want_fullload = 3;
+
+//	_companies_ai[c->index].loco_id = INVALID_VEHICLE;
+	_companies_ai[c->index].order_list_blocks[0] = 0;
+	_companies_ai[c->index].order_list_blocks[1] = 1;
+	_companies_ai[c->index].order_list_blocks[2] = 255;
+
+	_companies_ai[c->index].state = AIS_BUILD_DEFAULT_ROAD_BLOCKS;
+	_companies_ai[c->index].state_mode = UCHAR_MAX;
+	_companies_ai[c->index].state_counter = 0;
+	_companies_ai[c->index].timeout_counter = 0;
 }
 
-static void AiWantLongRoadPassengerRoute(Player *p)
+static void AiWantLongRoadPassengerRoute(Company *c)
 {
 	int i;
 	FoundRoute fr;
@@ -1273,44 +1273,44 @@
 
 	fr.cargo = CT_PASSENGERS;
 
-	if (!AiCheckIfRouteIsGood(p, &fr, 2)) return;
+	if (!AiCheckIfRouteIsGood(c, &fr, 2)) return;
 
 	// Fill the source field
-	_players_ai[p->index].src.spec_tile = GET_TOWN_OR_INDUSTRY_TILE(fr.to);
-	_players_ai[p->index].src.use_tile = 0;
-	_players_ai[p->index].src.rand_rng = 10;
-	_players_ai[p->index].src.cur_building_rule = 0xFF;
-	_players_ai[p->index].src.buildcmd_a = 1;
-	_players_ai[p->index].src.direction = 0;
-	_players_ai[p->index].src.cargo = CT_PASSENGERS;
+	_companies_ai[c->index].src.spec_tile = GET_TOWN_OR_INDUSTRY_TILE(fr.to);
+	_companies_ai[c->index].src.use_tile = 0;
+	_companies_ai[c->index].src.rand_rng = 10;
+	_companies_ai[c->index].src.cur_building_rule = 0xFF;
+	_companies_ai[c->index].src.buildcmd_a = 1;
+	_companies_ai[c->index].src.direction = 0;
+	_companies_ai[c->index].src.cargo = CT_PASSENGERS;
 
 	// Fill the dest field
-	_players_ai[p->index].dst.spec_tile = GET_TOWN_OR_INDUSTRY_TILE(fr.from);
-	_players_ai[p->index].dst.use_tile = 0;
-	_players_ai[p->index].dst.rand_rng = 10;
-	_players_ai[p->index].dst.cur_building_rule = 0xFF;
-	_players_ai[p->index].dst.buildcmd_a = 0xFF;
-	_players_ai[p->index].dst.direction = 0;
-	_players_ai[p->index].dst.cargo = CT_PASSENGERS;
+	_companies_ai[c->index].dst.spec_tile = GET_TOWN_OR_INDUSTRY_TILE(fr.from);
+	_companies_ai[c->index].dst.use_tile = 0;
+	_companies_ai[c->index].dst.rand_rng = 10;
+	_companies_ai[c->index].dst.cur_building_rule = 0xFF;
+	_companies_ai[c->index].dst.buildcmd_a = 0xFF;
+	_companies_ai[c->index].dst.direction = 0;
+	_companies_ai[c->index].dst.cargo = CT_PASSENGERS;
 
 	// Fill common fields
-	_players_ai[p->index].cargo_type = CT_PASSENGERS;
-	_players_ai[p->index].num_build_rec = 2;
-	_players_ai[p->index].num_loco_to_build = 4;
-	_players_ai[p->index].num_want_fullload = 0;
-
-//	_players_ai[p->index].loco_id = INVALID_VEHICLE;
-	_players_ai[p->index].order_list_blocks[0] = 0;
-	_players_ai[p->index].order_list_blocks[1] = 1;
-	_players_ai[p->index].order_list_blocks[2] = 255;
-
-	_players_ai[p->index].state = AIS_BUILD_DEFAULT_ROAD_BLOCKS;
-	_players_ai[p->index].state_mode = UCHAR_MAX;
-	_players_ai[p->index].state_counter = 0;
-	_players_ai[p->index].timeout_counter = 0;
+	_companies_ai[c->index].cargo_type = CT_PASSENGERS;
+	_companies_ai[c->index].num_build_rec = 2;
+	_companies_ai[c->index].num_loco_to_build = 4;
+	_companies_ai[c->index].num_want_fullload = 0;
+
+//	_companies_ai[c->index].loco_id = INVALID_VEHICLE;
+	_companies_ai[c->index].order_list_blocks[0] = 0;
+	_companies_ai[c->index].order_list_blocks[1] = 1;
+	_companies_ai[c->index].order_list_blocks[2] = 255;
+
+	_companies_ai[c->index].state = AIS_BUILD_DEFAULT_ROAD_BLOCKS;
+	_companies_ai[c->index].state_mode = UCHAR_MAX;
+	_companies_ai[c->index].state_counter = 0;
+	_companies_ai[c->index].timeout_counter = 0;
 }
 
-static void AiWantPassengerRouteInsideTown(Player *p)
+static void AiWantPassengerRouteInsideTown(Company *c)
 {
 	int i;
 	FoundRoute fr;
@@ -1329,59 +1329,59 @@
 	fr.cargo = CT_PASSENGERS;
 	fr.from = fr.to = t;
 
-	if (!AiCheckIfRouteIsGood(p, &fr, 2)) return;
+	if (!AiCheckIfRouteIsGood(c, &fr, 2)) return;
 
 	// Fill the source field
-	_players_ai[p->index].src.spec_tile = t->xy;
-	_players_ai[p->index].src.use_tile = 0;
-	_players_ai[p->index].src.rand_rng = 10;
-	_players_ai[p->index].src.cur_building_rule = 0xFF;
-	_players_ai[p->index].src.buildcmd_a = 1;
-	_players_ai[p->index].src.direction = 0;
-	_players_ai[p->index].src.cargo = CT_PASSENGERS;
+	_companies_ai[c->index].src.spec_tile = t->xy;
+	_companies_ai[c->index].src.use_tile = 0;
+	_companies_ai[c->index].src.rand_rng = 10;
+	_companies_ai[c->index].src.cur_building_rule = 0xFF;
+	_companies_ai[c->index].src.buildcmd_a = 1;
+	_companies_ai[c->index].src.direction = 0;
+	_companies_ai[c->index].src.cargo = CT_PASSENGERS;
 
 	// Fill the dest field
-	_players_ai[p->index].dst.spec_tile = t->xy;
-	_players_ai[p->index].dst.use_tile = 0;
-	_players_ai[p->index].dst.rand_rng = 10;
-	_players_ai[p->index].dst.cur_building_rule = 0xFF;
-	_players_ai[p->index].dst.buildcmd_a = 0xFF;
-	_players_ai[p->index].dst.direction = 0;
-	_players_ai[p->index].dst.cargo = CT_PASSENGERS;
+	_companies_ai[c->index].dst.spec_tile = t->xy;
+	_companies_ai[c->index].dst.use_tile = 0;
+	_companies_ai[c->index].dst.rand_rng = 10;
+	_companies_ai[c->index].dst.cur_building_rule = 0xFF;
+	_companies_ai[c->index].dst.buildcmd_a = 0xFF;
+	_companies_ai[c->index].dst.direction = 0;
+	_companies_ai[c->index].dst.cargo = CT_PASSENGERS;
 
 	// Fill common fields
-	_players_ai[p->index].cargo_type = CT_PASSENGERS;
-	_players_ai[p->index].num_build_rec = 2;
-	_players_ai[p->index].num_loco_to_build = 2;
-	_players_ai[p->index].num_want_fullload = 0;
-
-//	_players_ai[p->index].loco_id = INVALID_VEHICLE;
-	_players_ai[p->index].order_list_blocks[0] = 0;
-	_players_ai[p->index].order_list_blocks[1] = 1;
-	_players_ai[p->index].order_list_blocks[2] = 255;
-
-	_players_ai[p->index].state = AIS_BUILD_DEFAULT_ROAD_BLOCKS;
-	_players_ai[p->index].state_mode = UCHAR_MAX;
-	_players_ai[p->index].state_counter = 0;
-	_players_ai[p->index].timeout_counter = 0;
+	_companies_ai[c->index].cargo_type = CT_PASSENGERS;
+	_companies_ai[c->index].num_build_rec = 2;
+	_companies_ai[c->index].num_loco_to_build = 2;
+	_companies_ai[c->index].num_want_fullload = 0;
+
+//	_companies_ai[c->index].loco_id = INVALID_VEHICLE;
+	_companies_ai[c->index].order_list_blocks[0] = 0;
+	_companies_ai[c->index].order_list_blocks[1] = 1;
+	_companies_ai[c->index].order_list_blocks[2] = 255;
+
+	_companies_ai[c->index].state = AIS_BUILD_DEFAULT_ROAD_BLOCKS;
+	_companies_ai[c->index].state_mode = UCHAR_MAX;
+	_companies_ai[c->index].state_counter = 0;
+	_companies_ai[c->index].timeout_counter = 0;
 }
 
-static void AiWantRoadRoute(Player *p)
+static void AiWantRoadRoute(Company *c)
 {
 	uint16 r = GB(Random(), 0, 16);
 
 	if (r > 0x4000) {
-		AiWantLongRoadIndustryRoute(p);
+		AiWantLongRoadIndustryRoute(c);
 	} else if (r > 0x2000) {
-		AiWantMediumRoadIndustryRoute(p);
+		AiWantMediumRoadIndustryRoute(c);
 	} else if (r > 0x1000) {
-		AiWantLongRoadPassengerRoute(p);
+		AiWantLongRoadPassengerRoute(c);
 	} else {
-		AiWantPassengerRouteInsideTown(p);
+		AiWantPassengerRouteInsideTown(c);
 	}
 }
 
-static void AiWantPassengerAircraftRoute(Player *p)
+static void AiWantPassengerAircraftRoute(Company *c)
 {
 	FoundRoute fr;
 	int i;
@@ -1389,7 +1389,7 @@
 	/* Get aircraft that would be bought for this route
 	 * (probably, as conditions may change before the route is fully built,
 	 * like running out of money and having to select different aircraft, etc ...) */
-	EngineID veh = AiChooseAircraftToBuild(p->player_money, _players_ai[p->index].build_kind != 0 ? AIR_CTOL : 0);
+	EngineID veh = AiChooseAircraftToBuild(c->money, _companies_ai[c->index].build_kind != 0 ? AIR_CTOL : 0);
 
 	/* No aircraft buildable mean no aircraft route */
 	if (veh == INVALID_ENGINE) return;
@@ -1441,28 +1441,28 @@
 	}
 
 	fr.cargo = CT_PASSENGERS;
-	if (!AiCheckIfRouteIsGood(p, &fr, 4)) return;
+	if (!AiCheckIfRouteIsGood(c, &fr, 4)) return;
 
 
 	// Fill the source field
-	_players_ai[p->index].src.spec_tile = GET_TOWN_OR_INDUSTRY_TILE(fr.to);
-	_players_ai[p->index].src.use_tile = 0;
-	_players_ai[p->index].src.rand_rng = 12;
-	_players_ai[p->index].src.cur_building_rule = 0xFF;
-	_players_ai[p->index].src.cargo = fr.cargo;
+	_companies_ai[c->index].src.spec_tile = GET_TOWN_OR_INDUSTRY_TILE(fr.to);
+	_companies_ai[c->index].src.use_tile = 0;
+	_companies_ai[c->index].src.rand_rng = 12;
+	_companies_ai[c->index].src.cur_building_rule = 0xFF;
+	_companies_ai[c->index].src.cargo = fr.cargo;
 
 	// Fill the dest field
-	_players_ai[p->index].dst.spec_tile = GET_TOWN_OR_INDUSTRY_TILE(fr.from);
-	_players_ai[p->index].dst.use_tile = 0;
-	_players_ai[p->index].dst.rand_rng = 12;
-	_players_ai[p->index].dst.cur_building_rule = 0xFF;
-	_players_ai[p->index].dst.cargo = fr.cargo;
+	_companies_ai[c->index].dst.spec_tile = GET_TOWN_OR_INDUSTRY_TILE(fr.from);
+	_companies_ai[c->index].dst.use_tile = 0;
+	_companies_ai[c->index].dst.rand_rng = 12;
+	_companies_ai[c->index].dst.cur_building_rule = 0xFF;
+	_companies_ai[c->index].dst.cargo = fr.cargo;
 
 	// Fill common fields
-	_players_ai[p->index].cargo_type = fr.cargo;
-	_players_ai[p->index].build_kind = 0;
-	_players_ai[p->index].num_build_rec = 2;
-	_players_ai[p->index].num_loco_to_build = 1;
+	_companies_ai[c->index].cargo_type = fr.cargo;
+	_companies_ai[c->index].build_kind = 0;
+	_companies_ai[c->index].num_build_rec = 2;
+	_companies_ai[c->index].num_loco_to_build = 1;
 	/* Using full load always may not be the best.
 	 * Pick random value and rely on selling the vehicle & route
 	 * afterwards if the choice was utterly wrong (or maybe altering the value if AI is improved)
@@ -1475,17 +1475,17 @@
 	 * Also, non-full load is more resistant against starving (by building better stations
 	 * or using exclusive rights)
 	 */
-	_players_ai[p->index].num_want_fullload = Chance16(1, 5); // 20% chance
-//	_players_ai[p->index].loco_id = INVALID_VEHICLE;
-	_players_ai[p->index].order_list_blocks[0] = 0;
-	_players_ai[p->index].order_list_blocks[1] = 1;
-	_players_ai[p->index].order_list_blocks[2] = 255;
-
-	_players_ai[p->index].state = AIS_AIRPORT_STUFF;
-	_players_ai[p->index].timeout_counter = 0;
+	_companies_ai[c->index].num_want_fullload = Chance16(1, 5); // 20% chance
+//	_companies_ai[c->index].loco_id = INVALID_VEHICLE;
+	_companies_ai[c->index].order_list_blocks[0] = 0;
+	_companies_ai[c->index].order_list_blocks[1] = 1;
+	_companies_ai[c->index].order_list_blocks[2] = 255;
+
+	_companies_ai[c->index].state = AIS_AIRPORT_STUFF;
+	_companies_ai[c->index].timeout_counter = 0;
 }
 
-static void AiWantOilRigAircraftRoute(Player *p)
+static void AiWantOilRigAircraftRoute(Company *c)
 {
 	int i;
 	FoundRoute fr;
@@ -1512,57 +1512,57 @@
 	fr.cargo = CT_PASSENGERS;
 	fr.from = fr.to = t;
 
-	if (!AiCheckIfRouteIsGood(p, &fr, 4)) return;
+	if (!AiCheckIfRouteIsGood(c, &fr, 4)) return;
 
 	// Fill the source field
-	_players_ai[p->index].src.spec_tile = t->xy;
-	_players_ai[p->index].src.use_tile = 0;
-	_players_ai[p->index].src.rand_rng = 12;
-	_players_ai[p->index].src.cur_building_rule = 0xFF;
-	_players_ai[p->index].src.cargo = CT_PASSENGERS;
+	_companies_ai[c->index].src.spec_tile = t->xy;
+	_companies_ai[c->index].src.use_tile = 0;
+	_companies_ai[c->index].src.rand_rng = 12;
+	_companies_ai[c->index].src.cur_building_rule = 0xFF;
+	_companies_ai[c->index].src.cargo = CT_PASSENGERS;
 
 	// Fill the dest field
-	_players_ai[p->index].dst.spec_tile = in->xy;
-	_players_ai[p->index].dst.use_tile = 0;
-	_players_ai[p->index].dst.rand_rng = 5;
-	_players_ai[p->index].dst.cur_building_rule = 0xFF;
-	_players_ai[p->index].dst.cargo = CT_PASSENGERS;
+	_companies_ai[c->index].dst.spec_tile = in->xy;
+	_companies_ai[c->index].dst.use_tile = 0;
+	_companies_ai[c->index].dst.rand_rng = 5;
+	_companies_ai[c->index].dst.cur_building_rule = 0xFF;
+	_companies_ai[c->index].dst.cargo = CT_PASSENGERS;
 
 	// Fill common fields
-	_players_ai[p->index].cargo_type = CT_PASSENGERS;
-	_players_ai[p->index].build_kind = 1;
-	_players_ai[p->index].num_build_rec = 2;
-	_players_ai[p->index].num_loco_to_build = 1;
-	_players_ai[p->index].num_want_fullload = 0;
-//	_players_ai[p->index].loco_id = INVALID_VEHICLE;
-	_players_ai[p->index].order_list_blocks[0] = 0;
-	_players_ai[p->index].order_list_blocks[1] = 1;
-	_players_ai[p->index].order_list_blocks[2] = 255;
-
-	_players_ai[p->index].state = AIS_AIRPORT_STUFF;
-	_players_ai[p->index].timeout_counter = 0;
+	_companies_ai[c->index].cargo_type = CT_PASSENGERS;
+	_companies_ai[c->index].build_kind = 1;
+	_companies_ai[c->index].num_build_rec = 2;
+	_companies_ai[c->index].num_loco_to_build = 1;
+	_companies_ai[c->index].num_want_fullload = 0;
+//	_companies_ai[c->index].loco_id = INVALID_VEHICLE;
+	_companies_ai[c->index].order_list_blocks[0] = 0;
+	_companies_ai[c->index].order_list_blocks[1] = 1;
+	_companies_ai[c->index].order_list_blocks[2] = 255;
+
+	_companies_ai[c->index].state = AIS_AIRPORT_STUFF;
+	_companies_ai[c->index].timeout_counter = 0;
 }
 
-static void AiWantAircraftRoute(Player *p)
+static void AiWantAircraftRoute(Company *c)
 {
 	uint16 r = (uint16)Random();
 
 	if (r >= 0x2AAA || _date < 0x3912 + DAYS_TILL_ORIGINAL_BASE_YEAR) {
-		AiWantPassengerAircraftRoute(p);
+		AiWantPassengerAircraftRoute(c);
 	} else {
-		AiWantOilRigAircraftRoute(p);
+		AiWantOilRigAircraftRoute(c);
 	}
 }
 
 
 
-static void AiStateWantNewRoute(Player *p)
+static void AiStateWantNewRoute(Company *c)
 {
 	uint16 r;
 	int i;
 
-	if (p->player_money < AiGetBasePrice(p) * 500) {
-		_players_ai[p->index].state = AIS_0;
+	if (c->money < AiGetBasePrice(c) * 500) {
+		_companies_ai[c->index].state = AIS_0;
 		return;
 	}
 
@@ -1579,23 +1579,23 @@
 
 		if (r < 0x7626) {
 			if (_settings_game.ai.ai_disable_veh_train) continue;
-			AiWantTrainRoute(p);
+			AiWantTrainRoute(c);
 		} else if (r < 0xC4EA) {
 			if (_settings_game.ai.ai_disable_veh_roadveh) continue;
-			AiWantRoadRoute(p);
+			AiWantRoadRoute(c);
 		} else if (r < 0xD89B) {
 			if (_settings_game.ai.ai_disable_veh_aircraft) continue;
-			AiWantAircraftRoute(p);
+			AiWantAircraftRoute(c);
 		} else {
 			/* Ships are not implemented in this (broken) AI */
 		}
 
 		// got a route?
-		if (_players_ai[p->index].state != AIS_WANT_NEW_ROUTE) break;
+		if (_companies_ai[c->index].state != AIS_WANT_NEW_ROUTE) break;
 
 		// time out?
 		if (--i == 0) {
-			if (++_players_ai[p->index].state_counter == 556) _players_ai[p->index].state = AIS_0;
+			if (++_companies_ai[c->index].state_counter == 556) _companies_ai[c->index].state = AIS_0;
 			break;
 		}
 	}
@@ -1725,7 +1725,7 @@
 	}
 
 	if (!(flag & DC_EXEC)) {
-		if (t != NULL && rating > t->ratings[_current_player]) {
+		if (t != NULL && rating > t->ratings[_current_company]) {
 			return CMD_ERROR;
 		}
 	}
@@ -1775,13 +1775,13 @@
 
 static void AiDoTerraformLand(TileIndex tile, DiagDirection dir, int unk, int mode)
 {
-	PlayerID old_player;
+	CompanyID old_company;
 	uint32 r;
 	Slope slope;
 	uint h;
 
-	old_player = _current_player;
-	_current_player = OWNER_NONE;
+	old_company = _current_company;
+	_current_company = OWNER_NONE;
 
 	r = Random();
 
@@ -1810,10 +1810,10 @@
 		}
 	}
 
-	_current_player = old_player;
+	_current_company = old_company;
 }
 
-static void AiStateBuildDefaultRailBlocks(Player *p)
+static void AiStateBuildDefaultRailBlocks(Company *c)
 {
 	uint i;
 	int j;
@@ -1822,16 +1822,16 @@
 	CommandCost cost;
 
 	// time out?
-	if (++_players_ai[p->index].timeout_counter == 1388) {
-		_players_ai[p->index].state = AIS_DELETE_RAIL_BLOCKS;
+	if (++_companies_ai[c->index].timeout_counter == 1388) {
+		_companies_ai[c->index].state = AIS_DELETE_RAIL_BLOCKS;
 		return;
 	}
 
 	// do the following 8 times
 	for (i = 0; i < 8; i++) {
 		// check if we can build the default track
-		aib = &_players_ai[p->index].src;
-		j = _players_ai[p->index].num_build_rec;
+		aib = &_companies_ai[c->index].src;
+		j = _companies_ai[c->index].num_build_rec;
 		do {
 			// this item has already been built?
 			if (aib->cur_building_rule != 255) continue;
@@ -1842,31 +1842,31 @@
 
 			// check if the track can be build there.
 			rule = AiBuildDefaultRailTrack(aib->use_tile,
-				_players_ai[p->index].build_kind, _players_ai[p->index].num_wagons,
+				_companies_ai[c->index].build_kind, _companies_ai[c->index].num_wagons,
 				aib->unk6, aib->unk7,
 				aib->direction, aib->cargo,
-				_players_ai[p->index].railtype_to_use,
+				_companies_ai[c->index].railtype_to_use,
 				&cost
 			);
 
 			if (rule == -1) {
 				// cannot build, terraform after a while
-				if (_players_ai[p->index].state_counter >= 600) {
-					AiDoTerraformLand(aib->use_tile, (DiagDirection)(Random() & 3), 3, (int8)_players_ai[p->index].state_mode);
+				if (_companies_ai[c->index].state_counter >= 600) {
+					AiDoTerraformLand(aib->use_tile, (DiagDirection)(Random() & 3), 3, (int8)_companies_ai[c->index].state_mode);
 				}
 				// also try the other terraform direction
-				if (++_players_ai[p->index].state_counter >= 1000) {
-					_players_ai[p->index].state_counter = 0;
-					_players_ai[p->index].state_mode = -_players_ai[p->index].state_mode;
+				if (++_companies_ai[c->index].state_counter >= 1000) {
+					_companies_ai[c->index].state_counter = 0;
+					_companies_ai[c->index].state_mode = -_companies_ai[c->index].state_mode;
 				}
-			} else if (CheckPlayerHasMoney(cost)) {
-				// player has money, build it.
+			} else if (CheckCompanyHasMoney(cost)) {
+				// company has money, build it.
 				aib->cur_building_rule = rule;
 
 				AiDoBuildDefaultRailTrack(
 					aib->use_tile,
 					_default_rail_track_data[rule]->data,
-					_players_ai[p->index].railtype_to_use,
+					_companies_ai[c->index].railtype_to_use,
 					DC_EXEC | DC_NO_TOWN_RATING
 				);
 			}
@@ -1874,15 +1874,15 @@
 	}
 
 	// check if we're done with all of them
-	aib = &_players_ai[p->index].src;
-	j = _players_ai[p->index].num_build_rec;
+	aib = &_companies_ai[c->index].src;
+	j = _companies_ai[c->index].num_build_rec;
 	do {
 		if (aib->cur_building_rule == 255) return;
 	} while (++aib, --j);
 
 	// yep, all are done. switch state to the rail building state.
-	_players_ai[p->index].state = AIS_BUILD_RAIL;
-	_players_ai[p->index].state_mode = 255;
+	_companies_ai[c->index].state = AIS_BUILD_RAIL;
+	_companies_ai[c->index].state_mode = 255;
 }
 
 static TileIndex AiGetEdgeOfDefaultRailBlock(byte rule, TileIndex tile, byte cmd, DiagDirection *dir)
@@ -1915,15 +1915,15 @@
 	return false;
 }
 
-static bool AiDoFollowTrack(const Player* p)
+static bool AiDoFollowTrack(const Company *c)
 {
 	AiRailPathFindData arpfd;
 
-	arpfd.tile = _players_ai[p->index].start_tile_a;
-	arpfd.tile2 = _players_ai[p->index].cur_tile_a;
+	arpfd.tile = _companies_ai[c->index].start_tile_a;
+	arpfd.tile2 = _companies_ai[c->index].cur_tile_a;
 	arpfd.flag = false;
 	arpfd.count = 0;
-	FollowTrack(_players_ai[p->index].cur_tile_a + TileOffsByDiagDir(_players_ai[p->index].cur_dir_a), PATHFIND_FLAGS_NONE, TRANSPORT_RAIL, 0, ReverseDiagDir(_players_ai[p->index].cur_dir_a),
+	FollowTrack(_companies_ai[c->index].cur_tile_a + TileOffsByDiagDir(_companies_ai[c->index].cur_dir_a), PATHFIND_FLAGS_NONE, TRANSPORT_RAIL, 0, ReverseDiagDir(_companies_ai[c->index].cur_dir_a),
 		(TPFEnumProc*)AiEnumFollowTrack, NULL, &arpfd);
 	return arpfd.count > 8;
 }
@@ -1942,7 +1942,7 @@
 	uint best_dist;
 	TileIndex cur_best_tile, best_tile;
 	TileIndex bridge_end_tile;
-	Player *player;
+	Company *company;
 };
 
 static const byte _ai_table_15[4][8] = {
@@ -1953,32 +1953,32 @@
 };
 
 
-static bool AiIsTileBanned(const Player* p, TileIndex tile, byte val)
+static bool AiIsTileBanned(const Company *c, TileIndex tile, byte val)
 {
 	int i;
 
-	for (i = 0; i != _players_ai[p->index].banned_tile_count; i++) {
-		if (_players_ai[p->index].banned_tiles[i] == tile && _players_ai[p->index].banned_val[i] == val) {
+	for (i = 0; i != _companies_ai[c->index].banned_tile_count; i++) {
+		if (_companies_ai[c->index].banned_tiles[i] == tile && _companies_ai[c->index].banned_val[i] == val) {
 			return true;
 		}
 	}
 	return false;
 }
 
-static void AiBanTile(Player* p, TileIndex tile, byte val)
+static void AiBanTile(Company *c, TileIndex tile, byte val)
 {
 	uint i;
 
-	for (i = lengthof(_players_ai[p->index].banned_tiles) - 1; i != 0; i--) {
-		_players_ai[p->index].banned_tiles[i] = _players_ai[p->index].banned_tiles[i - 1];
-		_players_ai[p->index].banned_val[i] = _players_ai[p->index].banned_val[i - 1];
+	for (i = lengthof(_companies_ai[c->index].banned_tiles) - 1; i != 0; i--) {
+		_companies_ai[c->index].banned_tiles[i] = _companies_ai[c->index].banned_tiles[i - 1];
+		_companies_ai[c->index].banned_val[i] = _companies_ai[c->index].banned_val[i - 1];
 	}
 
-	_players_ai[p->index].banned_tiles[0] = tile;
-	_players_ai[p->index].banned_val[0] = val;
-
-	if (_players_ai[p->index].banned_tile_count != lengthof(_players_ai[p->index].banned_tiles)) {
-		_players_ai[p->index].banned_tile_count++;
+	_companies_ai[c->index].banned_tiles[0] = tile;
+	_companies_ai[c->index].banned_val[0] = val;
+
+	if (_companies_ai[c->index].banned_tile_count != lengthof(_companies_ai[c->index].banned_tiles)) {
+		_companies_ai[c->index].banned_tile_count++;
 	}
 }
 
@@ -2045,7 +2045,7 @@
 		}
 
 		// Is building a (rail)bridge possible at this place (type doesn't matter)?
-		if (CmdFailed(DoCommand(tile_new, tile, _players_ai[arf->player->index].railtype_to_use << 8 | TRANSPORT_RAIL << 15, DC_AUTO, CMD_BUILD_BRIDGE))) {
+		if (CmdFailed(DoCommand(tile_new, tile, _companies_ai[arf->company->index].railtype_to_use << 8 | TRANSPORT_RAIL << 15, DC_AUTO, CMD_BUILD_BRIDGE))) {
 			return;
 		}
 		AiBuildRailRecursive(arf, tile_new, dir2);
@@ -2062,9 +2062,9 @@
 	uint z;
 
 	if (GetTileSlope(tile, &z) == InclinedSlope((DiagDirection)(p[0] & 3)) && z != 0) {
-		CommandCost cost = DoCommand(tile, _players_ai[arf->player->index].railtype_to_use, 0, DC_AUTO, CMD_BUILD_TUNNEL);
-
-		if (CmdSucceeded(cost) && cost.GetCost() <= (arf->player->player_money >> 4)) {
+		CommandCost cost = DoCommand(tile, _companies_ai[arf->company->index].railtype_to_use, 0, DC_AUTO, CMD_BUILD_TUNNEL);
+
+		if (CmdSucceeded(cost) && cost.GetCost() <= (arf->company->money >> 4)) {
 			AiBuildRailRecursive(arf, _build_tunnel_endtile, (DiagDirection)(p[0] & 3));
 			if (arf->depth == 1) AiCheckRailPathBetter(arf, p);
 		}
@@ -2117,8 +2117,8 @@
 	} else {
 		do {
 			// Make sure the tile is not in the list of banned tiles and that a rail can be built here.
-			if (!AiIsTileBanned(arf->player, tile, p[0]) &&
-					CmdSucceeded(DoCommand(tile, _players_ai[arf->player->index].railtype_to_use, p[0], DC_AUTO | DC_NO_WATER | DC_NO_RAIL_OVERLAP, CMD_BUILD_SINGLE_RAIL))) {
+			if (!AiIsTileBanned(arf->company, tile, p[0]) &&
+					CmdSucceeded(DoCommand(tile, _companies_ai[arf->company->index].railtype_to_use, p[0], DC_AUTO | DC_NO_WATER | DC_NO_RAIL_OVERLAP, CMD_BUILD_SINGLE_RAIL))) {
 				AiBuildRailRecursive(arf, tile, (DiagDirection)p[1]);
 			}
 
@@ -2136,25 +2136,25 @@
 }
 
 
-static void AiBuildRailConstruct(Player *p)
+static void AiBuildRailConstruct(Company *c)
 {
 	AiRailFinder arf;
 	int i;
 
 	// Check too much lookahead?
-	if (AiDoFollowTrack(p)) {
-		_players_ai[p->index].state_counter = (Random()&0xE)+6; // Destruct this amount of blocks
-		_players_ai[p->index].state_mode = 1; // Start destruct
+	if (AiDoFollowTrack(c)) {
+		_companies_ai[c->index].state_counter = (Random()&0xE)+6; // Destruct this amount of blocks
+		_companies_ai[c->index].state_mode = 1; // Start destruct
 
 		// Ban this tile and don't reach it for a while.
-		AiBanTile(p, _players_ai[p->index].cur_tile_a, FindFirstBit(GetRailTrackStatus(_players_ai[p->index].cur_tile_a)));
+		AiBanTile(c, _companies_ai[c->index].cur_tile_a, FindFirstBit(GetRailTrackStatus(_companies_ai[c->index].cur_tile_a)));
 		return;
 	}
 
 	// Setup recursive finder and call it.
-	arf.player = p;
-	arf.final_tile = _players_ai[p->index].cur_tile_b;
-	arf.final_dir = _players_ai[p->index].cur_dir_b;
+	arf.company = c;
+	arf.final_tile = _companies_ai[c->index].cur_tile_b;
+	arf.final_dir = _companies_ai[c->index].cur_dir_b;
 	arf.depth = 0;
 	arf.recursive_mode = 0;
 	arf.best_ptr = NULL;
@@ -2164,11 +2164,11 @@
 	arf.best_depth = 0xff;
 	arf.cur_best_tile = 0;
 	arf.best_tile = 0;
-	AiBuildRailRecursive(&arf, _players_ai[p->index].cur_tile_a, _players_ai[p->index].cur_dir_a);
+	AiBuildRailRecursive(&arf, _companies_ai[c->index].cur_tile_a, _companies_ai[c->index].cur_dir_a);
 
 	// Reached destination?
 	if (arf.recursive_mode == 2 && arf.cur_best_depth == 0) {
-		_players_ai[p->index].state_mode = 255;
+		_companies_ai[c->index].state_mode = 255;
 		return;
 	}
 
@@ -2176,23 +2176,23 @@
 	if (arf.best_ptr == NULL) {
 		// Terraform some
 		for (i = 0; i != 5; i++) {
-			AiDoTerraformLand(_players_ai[p->index].cur_tile_a, _players_ai[p->index].cur_dir_a, 3, 0);
+			AiDoTerraformLand(_companies_ai[c->index].cur_tile_a, _companies_ai[c->index].cur_dir_a, 3, 0);
 		}
 
-		if (++_players_ai[p->index].state_counter == 21) {
-			_players_ai[p->index].state_counter = 40;
-			_players_ai[p->index].state_mode = 1;
+		if (++_companies_ai[c->index].state_counter == 21) {
+			_companies_ai[c->index].state_counter = 40;
+			_companies_ai[c->index].state_mode = 1;
 
 			// Ban this tile
-			AiBanTile(p, _players_ai[p->index].cur_tile_a, FindFirstBit(GetRailTrackStatus(_players_ai[p->index].cur_tile_a)));
+			AiBanTile(c, _companies_ai[c->index].cur_tile_a, FindFirstBit(GetRailTrackStatus(_companies_ai[c->index].cur_tile_a)));
 		}
 		return;
 	}
 
-	_players_ai[p->index].cur_tile_a += TileOffsByDiagDir(_players_ai[p->index].cur_dir_a);
+	_companies_ai[c->index].cur_tile_a += TileOffsByDiagDir(_companies_ai[c->index].cur_dir_a);
 
 	if (arf.best_ptr[0] & 0x80) {
-		TileIndex t1 = _players_ai[p->index].cur_tile_a;
+		TileIndex t1 = _companies_ai[c->index].cur_tile_a;
 		TileIndex t2 = arf.bridge_end_tile;
 
 		int32 bridge_len = GetTunnelBridgeLength(t1, t2);
@@ -2209,7 +2209,7 @@
 
 		/* try to build one rail on each tile - can't use CMD_BUILD_RAILROAD_TRACK now, it can build one part of track without failing */
 		do {
-			cost = DoCommand(t, _players_ai[p->index].railtype_to_use, track, DC_AUTO | DC_NO_WATER, CMD_BUILD_SINGLE_RAIL);
+			cost = DoCommand(t, _companies_ai[c->index].railtype_to_use, track, DC_AUTO | DC_NO_WATER, CMD_BUILD_SINGLE_RAIL);
 			/* do not allow building over existing track */
 			if (CmdFailed(cost) || IsTileType(t, MP_RAILWAY)) {
 				fail = true;
@@ -2219,10 +2219,10 @@
 		} while (t != t2);
 
 		/* can we build long track? */
-		if (!fail) cost = DoCommand(t1, t2, _players_ai[p->index].railtype_to_use | (track << 4), DC_AUTO | DC_NO_WATER, CMD_BUILD_RAILROAD_TRACK);
-
-		if (!fail && CmdSucceeded(cost) && cost.GetCost() <= p->player_money) {
-			DoCommand(t1, t2, _players_ai[p->index].railtype_to_use | (track << 4), DC_AUTO | DC_NO_WATER | DC_EXEC, CMD_BUILD_RAILROAD_TRACK);
+		if (!fail) cost = DoCommand(t1, t2, _companies_ai[c->index].railtype_to_use | (track << 4), DC_AUTO | DC_NO_WATER, CMD_BUILD_RAILROAD_TRACK);
+
+		if (!fail && CmdSucceeded(cost) && cost.GetCost() <= c->money) {
+			DoCommand(t1, t2, _companies_ai[c->index].railtype_to_use | (track << 4), DC_AUTO | DC_NO_WATER | DC_EXEC, CMD_BUILD_RAILROAD_TRACK);
 		} else {
 
 			/* Figure out which (rail)bridge type to build
@@ -2231,28 +2231,28 @@
 			int i;
 			for (i = MAX_BRIDGES - 1; i != 0; i--) {
 				if (CheckBridge_Stuff(i, bridge_len)) {
-					CommandCost cost = DoCommand(t1, t2, i | _players_ai[p->index].railtype_to_use << 8 | TRANSPORT_RAIL << 15, DC_AUTO, CMD_BUILD_BRIDGE);
-					if (CmdSucceeded(cost) && cost.GetCost() < (p->player_money >> 1) && cost.GetCost() < ((p->player_money + _economy.max_loan - p->current_loan) >> 5)) break;
+					CommandCost cost = DoCommand(t1, t2, i | _companies_ai[c->index].railtype_to_use << 8 | TRANSPORT_RAIL << 15, DC_AUTO, CMD_BUILD_BRIDGE);
+					if (CmdSucceeded(cost) && cost.GetCost() < (c->money >> 1) && cost.GetCost() < ((c->money + _economy.max_loan - c->current_loan) >> 5)) break;
 				}
 			}
 
 			/* Build it */
-			DoCommand(t1, t2, i | _players_ai[p->index].railtype_to_use << 8 | TRANSPORT_RAIL << 15, DC_AUTO | DC_EXEC, CMD_BUILD_BRIDGE);
+			DoCommand(t1, t2, i | _companies_ai[c->index].railtype_to_use << 8 | TRANSPORT_RAIL << 15, DC_AUTO | DC_EXEC, CMD_BUILD_BRIDGE);
 		}
 
-		_players_ai[p->index].cur_tile_a = t2;
-		_players_ai[p->index].state_counter = 0;
+		_companies_ai[c->index].cur_tile_a = t2;
+		_companies_ai[c->index].state_counter = 0;
 	} else if (arf.best_ptr[0] & 0x40) {
 		// tunnel
-		DoCommand(_players_ai[p->index].cur_tile_a, _players_ai[p->index].railtype_to_use, 0, DC_AUTO | DC_EXEC, CMD_BUILD_TUNNEL);
-		_players_ai[p->index].cur_tile_a = _build_tunnel_endtile;
-		_players_ai[p->index].state_counter = 0;
+		DoCommand(_companies_ai[c->index].cur_tile_a, _companies_ai[c->index].railtype_to_use, 0, DC_AUTO | DC_EXEC, CMD_BUILD_TUNNEL);
+		_companies_ai[c->index].cur_tile_a = _build_tunnel_endtile;
+		_companies_ai[c->index].state_counter = 0;
 	} else {
 		// rail
-		_players_ai[p->index].cur_dir_a = (DiagDirection)(arf.best_ptr[1] & 3);
-		DoCommand(_players_ai[p->index].cur_tile_a, _players_ai[p->index].railtype_to_use, arf.best_ptr[0],
+		_companies_ai[c->index].cur_dir_a = (DiagDirection)(arf.best_ptr[1] & 3);
+		DoCommand(_companies_ai[c->index].cur_tile_a, _companies_ai[c->index].railtype_to_use, arf.best_ptr[0],
 			DC_EXEC | DC_AUTO | DC_NO_WATER | DC_NO_RAIL_OVERLAP, CMD_BUILD_SINGLE_RAIL);
-		_players_ai[p->index].state_counter = 0;
+		_companies_ai[c->index].state_counter = 0;
 	}
 
 	if (arf.best_tile != 0) {
@@ -2262,10 +2262,10 @@
 	}
 }
 
-static bool AiRemoveTileAndGoForward(Player *p)
+static bool AiRemoveTileAndGoForward(Company *c)
 {
 	const byte *ptr;
-	TileIndex tile = _players_ai[p->index].cur_tile_a;
+	TileIndex tile = _companies_ai[c->index].cur_tile_a;
 	TileIndex tilenew;
 
 	if (IsTileType(tile, MP_TUNNELBRIDGE)) {
@@ -2273,26 +2273,26 @@
 			// Clear the tunnel and continue at the other side of it.
 			if (CmdFailed(DoCommand(tile, 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR)))
 				return false;
-			_players_ai[p->index].cur_tile_a = TILE_MASK(_build_tunnel_endtile - TileOffsByDiagDir(_players_ai[p->index].cur_dir_a));
+			_companies_ai[c->index].cur_tile_a = TILE_MASK(_build_tunnel_endtile - TileOffsByDiagDir(_companies_ai[c->index].cur_dir_a));
 			return true;
 		} else { // IsBridge(tile)
 			// Check if the bridge points in the right direction.
 			// This is not really needed the first place AiRemoveTileAndGoForward is called.
-			if (DiagDirToAxis(GetTunnelBridgeDirection(tile)) != (_players_ai[p->index].cur_dir_a & 1)) return false;
+			if (DiagDirToAxis(GetTunnelBridgeDirection(tile)) != (_companies_ai[c->index].cur_dir_a & 1)) return false;
 
 			tile = GetOtherBridgeEnd(tile);
 
-			tilenew = TILE_MASK(tile - TileOffsByDiagDir(_players_ai[p->index].cur_dir_a));
+			tilenew = TILE_MASK(tile - TileOffsByDiagDir(_companies_ai[c->index].cur_dir_a));
 			// And clear the bridge.
 			if (CmdFailed(DoCommand(tile, 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR)))
 				return false;
-			_players_ai[p->index].cur_tile_a = tilenew;
+			_companies_ai[c->index].cur_tile_a = tilenew;
 			return true;
 		}
 	}
 
 	// Find the railtype at the position. Quit if no rail there.
-	TrackBits bits = GetRailTrackStatus(tile) & DiagdirReachesTracks(ReverseDiagDir(_players_ai[p->index].cur_dir_a));
+	TrackBits bits = GetRailTrackStatus(tile) & DiagdirReachesTracks(ReverseDiagDir(_companies_ai[c->index].cur_dir_a));
 	if (bits == TRACK_BIT_NONE) return false;
 
 	// Convert into a bit position that CMD_REMOVE_SINGLE_RAIL expects.
@@ -2309,41 +2309,41 @@
 		return false;
 
 	// Find the direction at the other edge of the rail.
-	ptr = _ai_table_15[ReverseDiagDir(_players_ai[p->index].cur_dir_a)];
+	ptr = _ai_table_15[ReverseDiagDir(_companies_ai[c->index].cur_dir_a)];
 	while (ptr[0] != track) ptr += 2;
-	_players_ai[p->index].cur_dir_a = ReverseDiagDir((DiagDirection)ptr[1]);
+	_companies_ai[c->index].cur_dir_a = ReverseDiagDir((DiagDirection)ptr[1]);
 
 	// And then also switch tile.
-	_players_ai[p->index].cur_tile_a = TILE_MASK(_players_ai[p->index].cur_tile_a - TileOffsByDiagDir(_players_ai[p->index].cur_dir_a));
+	_companies_ai[c->index].cur_tile_a = TILE_MASK(_companies_ai[c->index].cur_tile_a - TileOffsByDiagDir(_companies_ai[c->index].cur_dir_a));
 
 	return true;
 }
 
 
-static void AiBuildRailDestruct(Player *p)
+static void AiBuildRailDestruct(Company *c)
 {
 	// Decrease timeout.
-	if (!--_players_ai[p->index].state_counter) {
-		_players_ai[p->index].state_mode = 2;
-		_players_ai[p->index].state_counter = 0;
+	if (!--_companies_ai[c->index].state_counter) {
+		_companies_ai[c->index].state_mode = 2;
+		_companies_ai[c->index].state_counter = 0;
 	}
 
 	// Don't do anything if the destination is already reached.
-	if (_players_ai[p->index].cur_tile_a == _players_ai[p->index].start_tile_a) return;
-
-	AiRemoveTileAndGoForward(p);
+	if (_companies_ai[c->index].cur_tile_a == _companies_ai[c->index].start_tile_a) return;
+
+	AiRemoveTileAndGoForward(c);
 }
 
 
-static void AiBuildRail(Player *p)
+static void AiBuildRail(Company *c)
 {
-	switch (_players_ai[p->index].state_mode) {
+	switch (_companies_ai[c->index].state_mode) {
 		case 0: // Construct mode, build new rail.
-			AiBuildRailConstruct(p);
+			AiBuildRailConstruct(c);
 			break;
 
 		case 1: // Destruct mode, destroy the rail currently built.
-			AiBuildRailDestruct(p);
+			AiBuildRailDestruct(c);
 			break;
 
 		case 2: {
@@ -2351,12 +2351,12 @@
 
 			// Terraform some and then try building again.
 			for (i = 0; i != 4; i++) {
-				AiDoTerraformLand(_players_ai[p->index].cur_tile_a, _players_ai[p->index].cur_dir_a, 3, 0);
+				AiDoTerraformLand(_companies_ai[c->index].cur_tile_a, _companies_ai[c->index].cur_dir_a, 3, 0);
 			}
 
-			if (++_players_ai[p->index].state_counter == 4) {
-				_players_ai[p->index].state_counter = 0;
-				_players_ai[p->index].state_mode = 0;
+			if (++_companies_ai[c->index].state_counter == 4) {
+				_companies_ai[c->index].state_counter = 0;
+				_companies_ai[c->index].state_mode = 0;
 			}
 		}
 
@@ -2364,7 +2364,7 @@
 	}
 }
 
-static void AiStateBuildRail(Player *p)
+static void AiStateBuildRail(Company *c)
 {
 	int num;
 	AiBuildRec *aib;
@@ -2373,26 +2373,26 @@
 	DiagDirection dir;
 
 	// time out?
-	if (++_players_ai[p->index].timeout_counter == 1388) {
-		_players_ai[p->index].state = AIS_DELETE_RAIL_BLOCKS;
+	if (++_companies_ai[c->index].timeout_counter == 1388) {
+		_companies_ai[c->index].state = AIS_DELETE_RAIL_BLOCKS;
 		return;
 	}
 
 	// Currently building a rail between two points?
-	if (_players_ai[p->index].state_mode != 255) {
-		AiBuildRail(p);
+	if (_companies_ai[c->index].state_mode != 255) {
+		AiBuildRail(c);
 
 		// Alternate between edges
-		Swap(_players_ai[p->index].start_tile_a, _players_ai[p->index].start_tile_b);
-		Swap(_players_ai[p->index].cur_tile_a,   _players_ai[p->index].cur_tile_b);
-		Swap(_players_ai[p->index].start_dir_a,  _players_ai[p->index].start_dir_b);
-		Swap(_players_ai[p->index].cur_dir_a,    _players_ai[p->index].cur_dir_b);
+		Swap(_companies_ai[c->index].start_tile_a, _companies_ai[c->index].start_tile_b);
+		Swap(_companies_ai[c->index].cur_tile_a,   _companies_ai[c->index].cur_tile_b);
+		Swap(_companies_ai[c->index].start_dir_a,  _companies_ai[c->index].start_dir_b);
+		Swap(_companies_ai[c->index].cur_dir_a,    _companies_ai[c->index].cur_dir_b);
 		return;
 	}
 
 	// Now, find two new points to build between
-	num = _players_ai[p->index].num_build_rec;
-	aib = &_players_ai[p->index].src;
+	num = _companies_ai[c->index].num_build_rec;
+	aib = &_companies_ai[c->index].src;
 
 	for (;;) {
 		cmd = aib->buildcmd_a;
@@ -2405,37 +2405,37 @@
 
 		aib++;
 		if (--num == 0) {
-			_players_ai[p->index].state = AIS_BUILD_RAIL_VEH;
-			_players_ai[p->index].state_counter = 0; // timeout
+			_companies_ai[c->index].state = AIS_BUILD_RAIL_VEH;
+			_companies_ai[c->index].state_counter = 0; // timeout
 			return;
 		}
 	}
 
 	// Find first edge to build from.
 	tile = AiGetEdgeOfDefaultRailBlock(aib->cur_building_rule, aib->use_tile, cmd & 3, &dir);
-	_players_ai[p->index].start_tile_a = tile;
-	_players_ai[p->index].cur_tile_a = tile;
-	_players_ai[p->index].start_dir_a = dir;
-	_players_ai[p->index].cur_dir_a = dir;
+	_companies_ai[c->index].start_tile_a = tile;
+	_companies_ai[c->index].cur_tile_a = tile;
+	_companies_ai[c->index].start_dir_a = dir;
+	_companies_ai[c->index].cur_dir_a = dir;
 	DoCommand(TILE_MASK(tile + TileOffsByDiagDir(dir)), 0, (dir & 1) ? 1 : 0, DC_EXEC, CMD_REMOVE_SINGLE_RAIL);
 
 	assert(TILE_MASK(tile) != 0xFF00);
 
 	// Find second edge to build to
-	aib = (&_players_ai[p->index].src) + ((cmd >> 4) & 0xF);
+	aib = (&_companies_ai[c->index].src) + ((cmd >> 4) & 0xF);
 	tile = AiGetEdgeOfDefaultRailBlock(aib->cur_building_rule, aib->use_tile, (cmd >> 2) & 3, &dir);
-	_players_ai[p->index].start_tile_b = tile;
-	_players_ai[p->index].cur_tile_b = tile;
-	_players_ai[p->index].start_dir_b = dir;
-	_players_ai[p->index].cur_dir_b = dir;
+	_companies_ai[c->index].start_tile_b = tile;
+	_companies_ai[c->index].cur_tile_b = tile;
+	_companies_ai[c->index].start_dir_b = dir;
+	_companies_ai[c->index].cur_dir_b = dir;
 	DoCommand(TILE_MASK(tile + TileOffsByDiagDir(dir)), 0, (dir & 1) ? 1 : 0, DC_EXEC, CMD_REMOVE_SINGLE_RAIL);
 
 	assert(TILE_MASK(tile) != 0xFF00);
 
 	// And setup state.
-	_players_ai[p->index].state_mode = 2;
-	_players_ai[p->index].state_counter = 0;
-	_players_ai[p->index].banned_tile_count = 0;
+	_companies_ai[c->index].state_mode = 2;
+	_companies_ai[c->index].state_counter = 0;
+	_companies_ai[c->index].banned_tile_count = 0;
 }
 
 static StationID AiGetStationIdByDef(TileIndex tile, int id)
@@ -2459,7 +2459,7 @@
 
 		if (!IsCompatibleRail(rvi->railtype, railtype) ||
 				rvi->railveh_type != RAILVEH_WAGON ||
-				!HasBit(e->player_avail, _current_player)) {
+				!HasBit(e->company_avail, _current_company)) {
 			continue;
 		}
 
@@ -2478,7 +2478,7 @@
 	return best_veh_index;
 }
 
-static void AiStateBuildRailVeh(Player *p)
+static void AiStateBuildRailVeh(Company *c)
 {
 	const AiDefaultBlockData *ptr;
 	TileIndex tile;
@@ -2489,40 +2489,40 @@
 	Vehicle *v;
 	VehicleID loco_id;
 
-	ptr = _default_rail_track_data[_players_ai[p->index].src.cur_building_rule]->data;
+	ptr = _default_rail_track_data[_companies_ai[c->index].src.cur_building_rule]->data;
 	while (ptr->mode != 0) ptr++;
 
-	tile = TILE_ADD(_players_ai[p->index].src.use_tile, ToTileIndexDiff(ptr->tileoffs));
-
-
-	cargo = _players_ai[p->index].cargo_type;
+	tile = TILE_ADD(_companies_ai[c->index].src.use_tile, ToTileIndexDiff(ptr->tileoffs));
+
+
+	cargo = _companies_ai[c->index].cargo_type;
 	for (i = 0;;) {
-		if (_players_ai[p->index].wagon_list[i] == INVALID_VEHICLE) {
-			veh = AiFindBestWagon(cargo, _players_ai[p->index].railtype_to_use);
+		if (_companies_ai[c->index].wagon_list[i] == INVALID_VEHICLE) {
+			veh = AiFindBestWagon(cargo, _companies_ai[c->index].railtype_to_use);
 			/* veh will return INVALID_ENGINE if no suitable wagon is available.
 			 * We shall treat this in the same way as having no money */
 			if (veh == INVALID_ENGINE) goto handle_nocash;
 			cost = DoCommand(tile, veh, 0, DC_EXEC, CMD_BUILD_RAIL_VEHICLE);
 			if (CmdFailed(cost)) goto handle_nocash;
-			_players_ai[p->index].wagon_list[i] = _new_vehicle_id;
-			_players_ai[p->index].wagon_list[i + 1] = INVALID_VEHICLE;
+			_companies_ai[c->index].wagon_list[i] = _new_vehicle_id;
+			_companies_ai[c->index].wagon_list[i + 1] = INVALID_VEHICLE;
 			return;
 		}
 		if (cargo == CT_MAIL) cargo = CT_PASSENGERS;
-		if (++i == _players_ai[p->index].num_wagons * 2 - 1) break;
+		if (++i == _companies_ai[c->index].num_wagons * 2 - 1) break;
 	}
 
 	// Which locomotive to build?
-	veh = AiChooseTrainToBuild(_players_ai[p->index].railtype_to_use, p->player_money, cargo != CT_PASSENGERS ? 1 : 0, tile);
+	veh = AiChooseTrainToBuild(_companies_ai[c->index].railtype_to_use, c->money, cargo != CT_PASSENGERS ? 1 : 0, tile);
 	if (veh == INVALID_ENGINE) {
 handle_nocash:
 		// after a while, if AI still doesn't have cash, get out of this block by selling the wagons.
-		if (++_players_ai[p->index].state_counter == 1000) {
-			for (i = 0; _players_ai[p->index].wagon_list[i] != INVALID_VEHICLE; i++) {
-				cost = DoCommand(tile, _players_ai[p->index].wagon_list[i], 0, DC_EXEC, CMD_SELL_RAIL_WAGON);
+		if (++_companies_ai[c->index].state_counter == 1000) {
+			for (i = 0; _companies_ai[c->index].wagon_list[i] != INVALID_VEHICLE; i++) {
+				cost = DoCommand(tile, _companies_ai[c->index].wagon_list[i], 0, DC_EXEC, CMD_SELL_RAIL_WAGON);
 				assert(CmdSucceeded(cost));
 			}
-			_players_ai[p->index].state = AIS_0;
+			_companies_ai[c->index].state = AIS_0;
 		}
 		return;
 	}
@@ -2535,29 +2535,29 @@
 	// Sell a vehicle if the train is double headed.
 	v = GetVehicle(loco_id);
 	if (v->Next() != NULL) {
-		i = _players_ai[p->index].wagon_list[_players_ai[p->index].num_wagons * 2 - 2];
-		_players_ai[p->index].wagon_list[_players_ai[p->index].num_wagons * 2 - 2] = INVALID_VEHICLE;
+		i = _companies_ai[c->index].wagon_list[_companies_ai[c->index].num_wagons * 2 - 2];
+		_companies_ai[c->index].wagon_list[_companies_ai[c->index].num_wagons * 2 - 2] = INVALID_VEHICLE;
 		DoCommand(tile, i, 0, DC_EXEC, CMD_SELL_RAIL_WAGON);
 	}
 
 	// Move the wagons onto the train
-	for (i = 0; _players_ai[p->index].wagon_list[i] != INVALID_VEHICLE; i++) {
-		DoCommand(tile, _players_ai[p->index].wagon_list[i] | (loco_id << 16), 0, DC_EXEC, CMD_MOVE_RAIL_VEHICLE);
+	for (i = 0; _companies_ai[c->index].wagon_list[i] != INVALID_VEHICLE; i++) {
+		DoCommand(tile, _companies_ai[c->index].wagon_list[i] | (loco_id << 16), 0, DC_EXEC, CMD_MOVE_RAIL_VEHICLE);
 	}
 
-	for (i = 0; _players_ai[p->index].order_list_blocks[i] != 0xFF; i++) {
-		const AiBuildRec* aib = &_players_ai[p->index].src + _players_ai[p->index].order_list_blocks[i];
+	for (i = 0; _companies_ai[c->index].order_list_blocks[i] != 0xFF; i++) {
+		const AiBuildRec* aib = &_companies_ai[c->index].src + _companies_ai[c->index].order_list_blocks[i];
 		bool is_pass = (
-			_players_ai[p->index].cargo_type == CT_PASSENGERS ||
-			_players_ai[p->index].cargo_type == CT_MAIL ||
-			(_settings_game.game_creation.landscape == LT_TEMPERATE && _players_ai[p->index].cargo_type == CT_VALUABLES)
+			_companies_ai[c->index].cargo_type == CT_PASSENGERS ||
+			_companies_ai[c->index].cargo_type == CT_MAIL ||
+			(_settings_game.game_creation.landscape == LT_TEMPERATE && _companies_ai[c->index].cargo_type == CT_VALUABLES)
 		);
 		Order order;
 
 		order.MakeGoToStation(AiGetStationIdByDef(aib->use_tile, aib->cur_building_rule));
 
 		if (!is_pass && i == 1) order.SetUnloadType(OUFB_UNLOAD);
-		if (_players_ai[p->index].num_want_fullload != 0 && (is_pass || i == 0))
+		if (_companies_ai[c->index].num_want_fullload != 0 && (is_pass || i == 0))
 			order.SetLoadType(OLFB_FULL_LOAD);
 
 		DoCommand(0, loco_id + (i << 16), order.Pack(), DC_EXEC, CMD_INSERT_ORDER);
@@ -2567,20 +2567,20 @@
 
 	DoCommand(0, loco_id, _ai_service_interval, DC_EXEC, CMD_CHANGE_SERVICE_INT);
 
-	if (_players_ai[p->index].num_want_fullload != 0) _players_ai[p->index].num_want_fullload--;
-
-	if (--_players_ai[p->index].num_loco_to_build != 0) {
-//		_players_ai[p->index].loco_id = INVALID_VEHICLE;
-		_players_ai[p->index].wagon_list[0] = INVALID_VEHICLE;
+	if (_companies_ai[c->index].num_want_fullload != 0) _companies_ai[c->index].num_want_fullload--;
+
+	if (--_companies_ai[c->index].num_loco_to_build != 0) {
+//		_companies_ai[c->index].loco_id = INVALID_VEHICLE;
+		_companies_ai[c->index].wagon_list[0] = INVALID_VEHICLE;
 	} else {
-		_players_ai[p->index].state = AIS_0;
+		_companies_ai[c->index].state = AIS_0;
 	}
 }
 
-static void AiStateDeleteRailBlocks(Player *p)
+static void AiStateDeleteRailBlocks(Company *c)
 {
-	const AiBuildRec* aib = &_players_ai[p->index].src;
-	uint num = _players_ai[p->index].num_build_rec;
+	const AiBuildRec* aib = &_companies_ai[c->index].src;
+	uint num = _companies_ai[c->index].num_build_rec;
 
 	do {
 		const AiDefaultBlockData* b;
@@ -2591,7 +2591,7 @@
 		}
 	} while (++aib, --num);
 
-	_players_ai[p->index].state = AIS_0;
+	_companies_ai[c->index].state = AIS_0;
 }
 
 static bool AiCheckRoadResources(TileIndex tile, const AiDefaultBlockData *p, byte cargo)
@@ -2711,16 +2711,16 @@
 	if (!_want_road_truck_station && !(roadflag & 2)) return CMD_ERROR;
 
 	if (!(flag & DC_EXEC)) {
-		if (t != NULL && rating > t->ratings[_current_player]) return CMD_ERROR;
+		if (t != NULL && rating > t->ratings[_current_company]) return CMD_ERROR;
 	}
 	return total_cost;
 }
 
 // Make sure the blocks are not too close to each other
-static bool AiCheckBlockDistances(Player *p, TileIndex tile)
+static bool AiCheckBlockDistances(Company *c, TileIndex tile)
 {
-	const AiBuildRec* aib = &_players_ai[p->index].src;
-	uint num = _players_ai[p->index].num_build_rec;
+	const AiBuildRec* aib = &_companies_ai[c->index].src;
+	uint num = _companies_ai[c->index].num_build_rec;
 
 	do {
 		if (aib->cur_building_rule != 255) {
@@ -2732,7 +2732,7 @@
 }
 
 
-static void AiStateBuildDefaultRoadBlocks(Player *p)
+static void AiStateBuildDefaultRoadBlocks(Company *c)
 {
 	uint i;
 	int j;
@@ -2741,16 +2741,16 @@
 	CommandCost cost;
 
 	// time out?
-	if (++_players_ai[p->index].timeout_counter == 1388) {
-		_players_ai[p->index].state = AIS_DELETE_RAIL_BLOCKS;
+	if (++_companies_ai[c->index].timeout_counter == 1388) {
+		_companies_ai[c->index].state = AIS_DELETE_RAIL_BLOCKS;
 		return;
 	}
 
 	// do the following 8 times
 	for (i = 0; i != 8; i++) {
 		// check if we can build the default track
-		aib = &_players_ai[p->index].src;
-		j = _players_ai[p->index].num_build_rec;
+		aib = &_companies_ai[c->index].src;
+		j = _companies_ai[c->index].num_build_rec;
 		do {
 			// this item has already been built?
 			if (aib->cur_building_rule != 255) continue;
@@ -2766,18 +2766,18 @@
 
 			if (rule == -1) {
 				// cannot build, terraform after a while
-				if (_players_ai[p->index].state_counter >= 600) {
-					AiDoTerraformLand(aib->use_tile, (DiagDirection)(Random() & 3), 3, (int8)_players_ai[p->index].state_mode);
+				if (_companies_ai[c->index].state_counter >= 600) {
+					AiDoTerraformLand(aib->use_tile, (DiagDirection)(Random() & 3), 3, (int8)_companies_ai[c->index].state_mode);
 				}
 				// also try the other terraform direction
-				if (++_players_ai[p->index].state_counter >= 1000) {
-					_players_ai[p->index].state_counter = 0;
-					_players_ai[p->index].state_mode = -_players_ai[p->index].state_mode;
+				if (++_companies_ai[c->index].state_counter >= 1000) {
+					_companies_ai[c->index].state_counter = 0;
+					_companies_ai[c->index].state_mode = -_companies_ai[c->index].state_mode;
 				}
-			} else if (CheckPlayerHasMoney(cost) && AiCheckBlockDistances(p, aib->use_tile)) {
+			} else if (CheckCompanyHasMoney(cost) && AiCheckBlockDistances(c, aib->use_tile)) {
 				CommandCost r;
 
-				// player has money, build it.
+				// company has money, build it.
 				aib->cur_building_rule = rule;
 
 				r = AiDoBuildDefaultRoadBlock(
@@ -2791,15 +2791,15 @@
 	}
 
 	// check if we're done with all of them
-	aib = &_players_ai[p->index].src;
-	j = _players_ai[p->index].num_build_rec;
+	aib = &_companies_ai[c->index].src;
+	j = _companies_ai[c->index].num_build_rec;
 	do {
 		if (aib->cur_building_rule == 255) return;
 	} while (++aib, --j);
 
 	// yep, all are done. switch state to the rail building state.
-	_players_ai[p->index].state = AIS_BUILD_ROAD;
-	_players_ai[p->index].state_mode = 255;
+	_companies_ai[c->index].state = AIS_BUILD_ROAD;
+	_companies_ai[c->index].state_mode = 255;
 }
 
 struct AiRoadFinder {
@@ -2816,7 +2816,7 @@
 	uint best_dist;
 	TileIndex cur_best_tile, best_tile;
 	TileIndex bridge_end_tile;
-	Player *player;
+	Company *company;
 };
 
 struct AiRoadEnum {
@@ -2879,14 +2879,14 @@
 	return false;
 }
 
-static bool AiCheckRoadFinished(Player *p)
+static bool AiCheckRoadFinished(Company *c)
 {
 	AiRoadEnum are;
 	TileIndex tile;
-	DiagDirection dir = _players_ai[p->index].cur_dir_a;
-
-	are.dest = _players_ai[p->index].cur_tile_b;
-	tile = TILE_MASK(_players_ai[p->index].cur_tile_a + TileOffsByDiagDir(dir));
+	DiagDirection dir = _companies_ai[c->index].cur_dir_a;
+
+	are.dest = _companies_ai[c->index].cur_tile_b;
+	tile = TILE_MASK(_companies_ai[c->index].cur_tile_a + TileOffsByDiagDir(dir));
 
 	if (IsRoadStopTile(tile) || IsRoadDepotTile(tile)) return false;
 	TrackdirBits bits = TrackStatusToTrackdirBits(GetTileTrackStatus(tile, TRANSPORT_ROAD, ROADTYPES_ROAD)) & DiagdirReachesTrackdirs(dir);
@@ -2903,8 +2903,8 @@
 
 	if (are.best_dist == 0) return true;
 
-	_players_ai[p->index].cur_tile_a = are.best_tile;
-	_players_ai[p->index].cur_dir_a = TrackdirToExitdir(are.best_track);
+	_companies_ai[c->index].cur_tile_a = are.best_tile;
+	_companies_ai[c->index].cur_dir_a = TrackdirToExitdir(are.best_track);
 	return false;
 }
 
@@ -2972,7 +2972,7 @@
 	if (GetTileSlope(tile, &z) == InclinedSlope((DiagDirection)(p[0] & 3)) && z != 0) {
 		CommandCost cost = DoCommand(tile, 0x200, 0, DC_AUTO, CMD_BUILD_TUNNEL);
 
-		if (CmdSucceeded(cost) && cost.GetCost() <= (arf->player->player_money >> 4)) {
+		if (CmdSucceeded(cost) && cost.GetCost() <= (arf->company->money >> 4)) {
 			AiBuildRoadRecursive(arf, _build_tunnel_endtile, (DiagDirection)(p[0] & 3));
 			if (arf->depth == 1)  AiCheckRoadPathBetter(arf, p);
 		}
@@ -3039,22 +3039,22 @@
 }
 
 
-static void AiBuildRoadConstruct(Player *p)
+static void AiBuildRoadConstruct(Company *c)
 {
 	AiRoadFinder arf;
 	int i;
 	TileIndex tile;
 
 	// Reached destination?
-	if (AiCheckRoadFinished(p)) {
-		_players_ai[p->index].state_mode = 255;
+	if (AiCheckRoadFinished(c)) {
+		_companies_ai[c->index].state_mode = 255;
 		return;
 	}
 
 	// Setup recursive finder and call it.
-	arf.player = p;
-	arf.final_tile = _players_ai[p->index].cur_tile_b;
-	arf.final_dir = _players_ai[p->index].cur_dir_b;
+	arf.company = c;
+	arf.final_tile = _companies_ai[c->index].cur_tile_b;
+	arf.final_dir = _companies_ai[c->index].cur_dir_b;
 	arf.depth = 0;
 	arf.recursive_mode = 0;
 	arf.best_ptr = NULL;
@@ -3064,11 +3064,11 @@
 	arf.best_depth =  0xff;
 	arf.cur_best_tile = 0;
 	arf.best_tile = 0;
-	AiBuildRoadRecursive(&arf, _players_ai[p->index].cur_tile_a, _players_ai[p->index].cur_dir_a);
+	AiBuildRoadRecursive(&arf, _companies_ai[c->index].cur_tile_a, _companies_ai[c->index].cur_dir_a);
 
 	// Reached destination?
 	if (arf.recursive_mode == 2 && arf.cur_best_depth == 0) {
-		_players_ai[p->index].state_mode = 255;
+		_companies_ai[c->index].state_mode = 255;
 		return;
 	}
 
@@ -3077,19 +3077,19 @@
 		// Terraform some
 do_some_terraform:
 		for (i = 0; i != 5; i++)
-			AiDoTerraformLand(_players_ai[p->index].cur_tile_a, _players_ai[p->index].cur_dir_a, 3, 0);
-
-		if (++_players_ai[p->index].state_counter == 21) {
-			_players_ai[p->index].state_mode = 1;
-
-			_players_ai[p->index].cur_tile_a = TILE_MASK(_players_ai[p->index].cur_tile_a + TileOffsByDiagDir(_players_ai[p->index].cur_dir_a));
-			_players_ai[p->index].cur_dir_a = ReverseDiagDir(_players_ai[p->index].cur_dir_a);
-			_players_ai[p->index].state_counter = 0;
+			AiDoTerraformLand(_companies_ai[c->index].cur_tile_a, _companies_ai[c->index].cur_dir_a, 3, 0);
+
+		if (++_companies_ai[c->index].state_counter == 21) {
+			_companies_ai[c->index].state_mode = 1;
+
+			_companies_ai[c->index].cur_tile_a = TILE_MASK(_companies_ai[c->index].cur_tile_a + TileOffsByDiagDir(_companies_ai[c->index].cur_dir_a));
+			_companies_ai[c->index].cur_dir_a = ReverseDiagDir(_companies_ai[c->index].cur_dir_a);
+			_companies_ai[c->index].state_counter = 0;
 		}
 		return;
 	}
 
-	tile = TILE_MASK(_players_ai[p->index].cur_tile_a + TileOffsByDiagDir(_players_ai[p->index].cur_dir_a));
+	tile = TILE_MASK(_companies_ai[c->index].cur_tile_a + TileOffsByDiagDir(_companies_ai[c->index].cur_dir_a));
 
 	if (arf.best_ptr[0] & 0x80) {
 		TileIndex t1 = tile;
@@ -3102,7 +3102,7 @@
 		/* try to build a long road instead of bridge - CMD_BUILD_LONG_ROAD has to fail if it couldn't build at least one piece! */
 		CommandCost cost = DoCommand(t2, t1, (t2 < t1 ? 1 : 2) | (axis << 2) | (ROADTYPE_ROAD << 3), DC_AUTO | DC_NO_WATER, CMD_BUILD_LONG_ROAD);
 
-		if (CmdSucceeded(cost) && cost.GetCost() <= p->player_money) {
+		if (CmdSucceeded(cost) && cost.GetCost() <= c->money) {
 			DoCommand(t2, t1, (t2 < t1 ? 1 : 2) | (axis << 2) | (ROADTYPE_ROAD << 3), DC_AUTO | DC_EXEC | DC_NO_WATER, CMD_BUILD_LONG_ROAD);
 		} else {
 			int i;
@@ -3113,7 +3113,7 @@
 			for (i = MAX_BRIDGES - 1; i != 0; i--) {
 				if (CheckBridge_Stuff(i, bridge_len)) {
 					CommandCost cost = DoCommand(t1, t2, i | ROADTYPES_ROAD << 8 | TRANSPORT_ROAD << 15, DC_AUTO, CMD_BUILD_BRIDGE);
-					if (CmdSucceeded(cost) && cost.GetCost() < (p->player_money >> 1) && cost.GetCost() < ((p->player_money + _economy.max_loan - p->current_loan) >> 5)) break;
+					if (CmdSucceeded(cost) && cost.GetCost() < (c->money >> 1) && cost.GetCost() < ((c->money + _economy.max_loan - c->current_loan) >> 5)) break;
 				}
 			}
 
@@ -3121,21 +3121,21 @@
 			DoCommand(t1, t2, i | ROADTYPES_ROAD << 8 | TRANSPORT_ROAD << 15, DC_AUTO | DC_EXEC, CMD_BUILD_BRIDGE);
 		}
 
-		_players_ai[p->index].cur_tile_a = t2;
-		_players_ai[p->index].state_counter = 0;
+		_companies_ai[c->index].cur_tile_a = t2;
+		_companies_ai[c->index].state_counter = 0;
 	} else if (arf.best_ptr[0] & 0x40) {
 		// tunnel
 		DoCommand(tile, 0x200, 0, DC_AUTO | DC_EXEC, CMD_BUILD_TUNNEL);
-		_players_ai[p->index].cur_tile_a = _build_tunnel_endtile;
-		_players_ai[p->index].state_counter = 0;
+		_companies_ai[c->index].cur_tile_a = _build_tunnel_endtile;
+		_companies_ai[c->index].state_counter = 0;
 	} else {
 		// road
 		if (!AiBuildRoadHelper(tile, DC_EXEC | DC_AUTO | DC_NO_WATER | DC_AI_BUILDING, arf.best_ptr[0]))
 			goto do_some_terraform;
 
-		_players_ai[p->index].cur_dir_a = (DiagDirection)(arf.best_ptr[1] & 3);
-		_players_ai[p->index].cur_tile_a = tile;
-		_players_ai[p->index].state_counter = 0;
+		_companies_ai[c->index].cur_dir_a = (DiagDirection)(arf.best_ptr[1] & 3);
+		_companies_ai[c->index].cur_tile_a = tile;
+		_companies_ai[c->index].state_counter = 0;
 	}
 
 	if (arf.best_tile != 0) {
@@ -3145,26 +3145,26 @@
 }
 
 
-static void AiBuildRoad(Player *p)
+static void AiBuildRoad(Company *c)
 {
-	if (_players_ai[p->index].state_mode < 1) {
+	if (_companies_ai[c->index].state_mode < 1) {
 		// Construct mode, build new road.
-		AiBuildRoadConstruct(p);
-	} else if (_players_ai[p->index].state_mode == 1) {
+		AiBuildRoadConstruct(c);
+	} else if (_companies_ai[c->index].state_mode == 1) {
 		// Destruct mode, not implemented for roads.
-		_players_ai[p->index].state_mode = 2;
-		_players_ai[p->index].state_counter = 0;
-	} else if (_players_ai[p->index].state_mode == 2) {
+		_companies_ai[c->index].state_mode = 2;
+		_companies_ai[c->index].state_counter = 0;
+	} else if (_companies_ai[c->index].state_mode == 2) {
 		uint i;
 
 		// Terraform some and then try building again.
 		for (i = 0; i != 4; i++) {
-			AiDoTerraformLand(_players_ai[p->index].cur_tile_a, _players_ai[p->index].cur_dir_a, 3, 0);
+			AiDoTerraformLand(_companies_ai[c->index].cur_tile_a, _companies_ai[c->index].cur_dir_a, 3, 0);
 		}
 
-		if (++_players_ai[p->index].state_counter == 4) {
-			_players_ai[p->index].state_counter = 0;
-			_players_ai[p->index].state_mode = 0;
+		if (++_companies_ai[c->index].state_counter == 4) {
+			_companies_ai[c->index].state_counter = 0;
+			_companies_ai[c->index].state_mode = 0;
 		}
 	}
 }
@@ -3178,7 +3178,7 @@
 }
 
 
-static void AiStateBuildRoad(Player *p)
+static void AiStateBuildRoad(Company *c)
 {
 	int num;
 	AiBuildRec *aib;
@@ -3187,27 +3187,27 @@
 	DiagDirection dir;
 
 	// time out?
-	if (++_players_ai[p->index].timeout_counter == 1388) {
-		_players_ai[p->index].state = AIS_DELETE_ROAD_BLOCKS;
+	if (++_companies_ai[c->index].timeout_counter == 1388) {
+		_companies_ai[c->index].state = AIS_DELETE_ROAD_BLOCKS;
 		return;
 	}
 
 	// Currently building a road between two points?
-	if (_players_ai[p->index].state_mode != 255) {
-		AiBuildRoad(p);
+	if (_companies_ai[c->index].state_mode != 255) {
+		AiBuildRoad(c);
 
 		// Alternate between edges
-		Swap(_players_ai[p->index].start_tile_a, _players_ai[p->index].start_tile_b);
-		Swap(_players_ai[p->index].cur_tile_a,   _players_ai[p->index].cur_tile_b);
-		Swap(_players_ai[p->index].start_dir_a,  _players_ai[p->index].start_dir_b);
-		Swap(_players_ai[p->index].cur_dir_a,    _players_ai[p->index].cur_dir_b);
+		Swap(_companies_ai[c->index].start_tile_a, _companies_ai[c->index].start_tile_b);
+		Swap(_companies_ai[c->index].cur_tile_a,   _companies_ai[c->index].cur_tile_b);
+		Swap(_companies_ai[c->index].start_dir_a,  _companies_ai[c->index].start_dir_b);
+		Swap(_companies_ai[c->index].cur_dir_a,    _companies_ai[c->index].cur_dir_b);
 
 		return;
 	}
 
 	// Now, find two new points to build between
-	num = _players_ai[p->index].num_build_rec;
-	aib = &_players_ai[p->index].src;
+	num = _companies_ai[c->index].num_build_rec;
+	aib = &_companies_ai[c->index].src;
 
 	for (;;) {
 		cmd = aib->buildcmd_a;
@@ -3216,30 +3216,30 @@
 
 		aib++;
 		if (--num == 0) {
-			_players_ai[p->index].state = AIS_BUILD_ROAD_VEHICLES;
+			_companies_ai[c->index].state = AIS_BUILD_ROAD_VEHICLES;
 			return;
 		}
 	}
 
 	// Find first edge to build from.
 	tile = AiGetRoadBlockEdge(aib->cur_building_rule, aib->use_tile, &dir);
-	_players_ai[p->index].start_tile_a = tile;
-	_players_ai[p->index].cur_tile_a = tile;
-	_players_ai[p->index].start_dir_a = dir;
-	_players_ai[p->index].cur_dir_a = dir;
+	_companies_ai[c->index].start_tile_a = tile;
+	_companies_ai[c->index].cur_tile_a = tile;
+	_companies_ai[c->index].start_dir_a = dir;
+	_companies_ai[c->index].cur_dir_a = dir;
 
 	// Find second edge to build to
-	aib = (&_players_ai[p->index].src) + (cmd & 0xF);
+	aib = (&_companies_ai[c->index].src) + (cmd & 0xF);
 	tile = AiGetRoadBlockEdge(aib->cur_building_rule, aib->use_tile, &dir);
-	_players_ai[p->index].start_tile_b = tile;
-	_players_ai[p->index].cur_tile_b = tile;
-	_players_ai[p->index].start_dir_b = dir;
-	_players_ai[p->index].cur_dir_b = dir;
+	_companies_ai[c->index].start_tile_b = tile;
+	_companies_ai[c->index].cur_tile_b = tile;
+	_companies_ai[c->index].start_dir_b = dir;
+	_companies_ai[c->index].cur_dir_b = dir;
 
 	// And setup state.
-	_players_ai[p->index].state_mode = 2;
-	_players_ai[p->index].state_counter = 0;
-	_players_ai[p->index].banned_tile_count = 0;
+	_companies_ai[c->index].state_mode = 2;
+	_companies_ai[c->index].state_counter = 0;
+	_companies_ai[c->index].banned_tile_count = 0;
 }
 
 static StationID AiGetStationIdFromRoadBlock(TileIndex tile, int id)
@@ -3249,7 +3249,7 @@
 	return GetStationIndex(TILE_ADD(tile, ToTileIndexDiff(p->tileoffs)));
 }
 
-static void AiStateBuildRoadVehicles(Player *p)
+static void AiStateBuildRoadVehicles(Company *c)
 {
 	const AiDefaultBlockData *ptr;
 	TileIndex tile;
@@ -3257,13 +3257,13 @@
 	EngineID veh;
 	uint i;
 
-	ptr = _road_default_block_data[_players_ai[p->index].src.cur_building_rule]->data;
+	ptr = _road_default_block_data[_companies_ai[c->index].src.cur_building_rule]->data;
 	for (; ptr->mode != 0; ptr++) {}
-	tile = TILE_ADD(_players_ai[p->index].src.use_tile, ToTileIndexDiff(ptr->tileoffs));
-
-	veh = AiChooseRoadVehToBuild(_players_ai[p->index].cargo_type, p->player_money, tile);
+	tile = TILE_ADD(_companies_ai[c->index].src.use_tile, ToTileIndexDiff(ptr->tileoffs));
+
+	veh = AiChooseRoadVehToBuild(_companies_ai[c->index].cargo_type, c->money, tile);
 	if (veh == INVALID_ENGINE) {
-		_players_ai[p->index].state = AIS_0;
+		_companies_ai[c->index].state = AIS_0;
 		return;
 	}
 
@@ -3271,28 +3271,28 @@
 
 	loco_id = _new_vehicle_id;
 
-	if (GetVehicle(loco_id)->cargo_type != _players_ai[p->index].cargo_type) {
+	if (GetVehicle(loco_id)->cargo_type != _companies_ai[c->index].cargo_type) {
 		/* Cargo type doesn't match, so refit it */
-		if (CmdFailed(DoCommand(tile, loco_id, _players_ai[p->index].cargo_type, DC_EXEC, CMD_REFIT_ROAD_VEH))) {
+		if (CmdFailed(DoCommand(tile, loco_id, _companies_ai[c->index].cargo_type, DC_EXEC, CMD_REFIT_ROAD_VEH))) {
 			/* Refit failed... sell the vehicle */
 			DoCommand(tile, loco_id, 0, DC_EXEC, CMD_SELL_ROAD_VEH);
 			return;
 		}
 	}
 
-	for (i = 0; _players_ai[p->index].order_list_blocks[i] != 0xFF; i++) {
-		const AiBuildRec* aib = &_players_ai[p->index].src + _players_ai[p->index].order_list_blocks[i];
+	for (i = 0; _companies_ai[c->index].order_list_blocks[i] != 0xFF; i++) {
+		const AiBuildRec* aib = &_companies_ai[c->index].src + _companies_ai[c->index].order_list_blocks[i];
 		bool is_pass = (
-			_players_ai[p->index].cargo_type == CT_PASSENGERS ||
-			_players_ai[p->index].cargo_type == CT_MAIL ||
-			(_settings_game.game_creation.landscape == LT_TEMPERATE && _players_ai[p->index].cargo_type == CT_VALUABLES)
+			_companies_ai[c->index].cargo_type == CT_PASSENGERS ||
+			_companies_ai[c->index].cargo_type == CT_MAIL ||
+			(_settings_game.game_creation.landscape == LT_TEMPERATE && _companies_ai[c->index].cargo_type == CT_VALUABLES)
 		);
 		Order order;
 
 		order.MakeGoToStation(AiGetStationIdFromRoadBlock(aib->use_tile, aib->cur_building_rule));
 
 		if (!is_pass && i == 1) order.SetUnloadType(OUFB_UNLOAD);
-		if (_players_ai[p->index].num_want_fullload != 0 && (is_pass || i == 0))
+		if (_companies_ai[c->index].num_want_fullload != 0 && (is_pass || i == 0))
 			order.SetLoadType(OLFB_FULL_LOAD);
 
 		DoCommand(0, loco_id + (i << 16), order.Pack(), DC_EXEC, CMD_INSERT_ORDER);
@@ -3301,14 +3301,14 @@
 	DoCommand(0, loco_id, 0, DC_EXEC, CMD_START_STOP_VEHICLE);
 	DoCommand(0, loco_id, _ai_service_interval, DC_EXEC, CMD_CHANGE_SERVICE_INT);
 
-	if (_players_ai[p->index].num_want_fullload != 0) _players_ai[p->index].num_want_fullload--;
-	if (--_players_ai[p->index].num_loco_to_build == 0) _players_ai[p->index].state = AIS_0;
+	if (_companies_ai[c->index].num_want_fullload != 0) _companies_ai[c->index].num_want_fullload--;
+	if (--_companies_ai[c->index].num_loco_to_build == 0) _companies_ai[c->index].state = AIS_0;
 }
 
-static void AiStateDeleteRoadBlocks(Player *p)
+static void AiStateDeleteRoadBlocks(Company *c)
 {
-	const AiBuildRec* aib = &_players_ai[p->index].src;
-	uint num = _players_ai[p->index].num_build_rec;
+	const AiBuildRec* aib = &_companies_ai[c->index].src;
+	uint num = _companies_ai[c->index].num_build_rec;
 
 	do {
 		const AiDefaultBlockData* b;
@@ -3320,11 +3320,11 @@
 		}
 	} while (++aib, --num);
 
-	_players_ai[p->index].state = AIS_0;
+	_companies_ai[c->index].state = AIS_0;
 }
 
 
-static void AiStateAirportStuff(Player *p)
+static void AiStateAirportStuff(Company *c)
 {
 	const Station* st;
 	int i;
@@ -3341,19 +3341,19 @@
 		// We do this all twice - once for the source (town in the case
 		// of oilrig route) and then for the destination (oilrig in the
 		// case of oilrig route).
-		aib = &_players_ai[p->index].src + i;
+		aib = &_companies_ai[c->index].src + i;
 
 		FOR_ALL_STATIONS(st) {
 			// Is this an airport?
 			if (!(st->facilities & FACIL_AIRPORT)) continue;
 
 			// Do we own the airport? (Oilrigs aren't owned, though.)
-			if (st->owner != OWNER_NONE && st->owner != _current_player) continue;
+			if (st->owner != OWNER_NONE && st->owner != _current_company) continue;
 
 			AirportFTAClass::Flags flags = st->Airport()->flags;
 
 			/* if airport doesn't accept our kind of plane, dismiss it */
-			if (!(flags & (_players_ai[p->index].build_kind == 1 ? AirportFTAClass::HELICOPTERS : AirportFTAClass::AIRPLANES))) {
+			if (!(flags & (_companies_ai[c->index].build_kind == 1 ? AirportFTAClass::HELICOPTERS : AirportFTAClass::AIRPLANES))) {
 				continue;
 			}
 
@@ -3392,11 +3392,11 @@
 			aib->use_tile = st->airport_tile;
 			break;
 		}
-	} while (++i != _players_ai[p->index].num_build_rec);
-
-	_players_ai[p->index].state = AIS_BUILD_DEFAULT_AIRPORT_BLOCKS;
-	_players_ai[p->index].state_mode = 255;
-	_players_ai[p->index].state_counter = 0;
+	} while (++i != _companies_ai[c->index].num_build_rec);
+
+	_companies_ai[c->index].state = AIS_BUILD_DEFAULT_AIRPORT_BLOCKS;
+	_companies_ai[c->index].state_mode = 255;
+	_companies_ai[c->index].state_counter = 0;
 }
 
 static CommandCost AiDoBuildDefaultAirportBlock(TileIndex tile, const AiDefaultBlockData *p, byte flag)
@@ -3470,7 +3470,7 @@
 	return -1;
 }
 
-static void AiStateBuildDefaultAirportBlocks(Player *p)
+static void AiStateBuildDefaultAirportBlocks(Company *c)
 {
 	int i, j;
 	AiBuildRec *aib;
@@ -3478,8 +3478,8 @@
 	CommandCost cost;
 
 	// time out?
-	if (++_players_ai[p->index].timeout_counter == 1388) {
-		_players_ai[p->index].state = AIS_0;
+	if (++_companies_ai[c->index].timeout_counter == 1388) {
+		_companies_ai[c->index].state = AIS_0;
 		return;
 	}
 
@@ -3487,8 +3487,8 @@
 	i = 8;
 	do {
 		// check if we can build the default
-		aib = &_players_ai[p->index].src;
-		j = _players_ai[p->index].num_build_rec;
+		aib = &_companies_ai[c->index].src;
+		j = _companies_ai[c->index].num_build_rec;
 		do {
 			// this item has already been built?
 			if (aib->cur_building_rule != 255) continue;
@@ -3498,22 +3498,22 @@
 			aib->use_tile = AdjustTileCoordRandomly(aib->spec_tile, aib->rand_rng);
 
 			// check if the aircraft stuff can be built there.
-			rule = AiFindBestDefaultAirportBlock(aib->use_tile, aib->cargo, _players_ai[p->index].build_kind, &cost);
+			rule = AiFindBestDefaultAirportBlock(aib->use_tile, aib->cargo, _companies_ai[c->index].build_kind, &cost);
 
 //			SetRedErrorSquare(aib->use_tile);
 
 			if (rule == -1) {
 				// cannot build, terraform after a while
-				if (_players_ai[p->index].state_counter >= 600) {
-					AiDoTerraformLand(aib->use_tile, (DiagDirection)(Random() & 3), 3, (int8)_players_ai[p->index].state_mode);
+				if (_companies_ai[c->index].state_counter >= 600) {
+					AiDoTerraformLand(aib->use_tile, (DiagDirection)(Random() & 3), 3, (int8)_companies_ai[c->index].state_mode);
 				}
 				// also try the other terraform direction
-				if (++_players_ai[p->index].state_counter >= 1000) {
-					_players_ai[p->index].state_counter = 0;
-					_players_ai[p->index].state_mode = -_players_ai[p->index].state_mode;
+				if (++_companies_ai[c->index].state_counter >= 1000) {
+					_companies_ai[c->index].state_counter = 0;
+					_companies_ai[c->index].state_mode = -_companies_ai[c->index].state_mode;
 				}
-			} else if (CheckPlayerHasMoney(cost) && AiCheckBlockDistances(p, aib->use_tile)) {
-				// player has money, build it.
+			} else if (CheckCompanyHasMoney(cost) && AiCheckBlockDistances(c, aib->use_tile)) {
+				// company has money, build it.
 				CommandCost r;
 
 				aib->cur_building_rule = rule;
@@ -3529,14 +3529,14 @@
 	} while (--i);
 
 	// check if we're done with all of them
-	aib = &_players_ai[p->index].src;
-	j = _players_ai[p->index].num_build_rec;
+	aib = &_companies_ai[c->index].src;
+	j = _companies_ai[c->index].num_build_rec;
 	do {
 		if (aib->cur_building_rule == 255) return;
 	} while (++aib, --j);
 
 	// yep, all are done. switch state.
-	_players_ai[p->index].state = AIS_BUILD_AIRCRAFT_VEHICLES;
+	_companies_ai[c->index].state = AIS_BUILD_AIRCRAFT_VEHICLES;
 }
 
 static StationID AiGetStationIdFromAircraftBlock(TileIndex tile, int id)
@@ -3546,7 +3546,7 @@
 	return GetStationIndex(TILE_ADD(tile, ToTileIndexDiff(p->tileoffs)));
 }
 
-static void AiStateBuildAircraftVehicles(Player *p)
+static void AiStateBuildAircraftVehicles(Company *c)
 {
 	const AiDefaultBlockData *ptr;
 	TileIndex tile;
@@ -3554,15 +3554,15 @@
 	int i;
 	VehicleID loco_id;
 
-	ptr = _airport_default_block_data[_players_ai[p->index].src.cur_building_rule];
+	ptr = _airport_default_block_data[_companies_ai[c->index].src.cur_building_rule];
 	for (; ptr->mode != 0; ptr++) {}
 
-	tile = TILE_ADD(_players_ai[p->index].src.use_tile, ToTileIndexDiff(ptr->tileoffs));
+	tile = TILE_ADD(_companies_ai[c->index].src.use_tile, ToTileIndexDiff(ptr->tileoffs));
 
 	/* determine forbidden aircraft bits */
 	byte forbidden = 0;
-	for (i = 0; _players_ai[p->index].order_list_blocks[i] != 0xFF; i++) {
-		const AiBuildRec *aib = (&_players_ai[p->index].src) + _players_ai[p->index].order_list_blocks[i];
+	for (i = 0; _companies_ai[c->index].order_list_blocks[i] != 0xFF; i++) {
+		const AiBuildRec *aib = (&_companies_ai[c->index].src) + _companies_ai[c->index].order_list_blocks[i];
 		const Station *st = GetStationByTile(aib->use_tile);
 
 		if (st == NULL || !(st->facilities & FACIL_AIRPORT)) continue;
@@ -3572,7 +3572,7 @@
 		if (flags & AirportFTAClass::SHORT_STRIP) forbidden |= AIR_FAST; // no fast planes for small airports
 	}
 
-	veh = AiChooseAircraftToBuild(p->player_money, forbidden);
+	veh = AiChooseAircraftToBuild(c->money, forbidden);
 	if (veh == INVALID_ENGINE) return;
 	if (GetStationByTile(tile)->Airport()->nof_depots == 0) return;
 
@@ -3582,15 +3582,15 @@
 	if (CmdFailed(DoCommand(tile, veh, 0, DC_EXEC, CMD_BUILD_AIRCRAFT))) return;
 	loco_id = _new_vehicle_id;
 
-	for (i = 0; _players_ai[p->index].order_list_blocks[i] != 0xFF; i++) {
-		AiBuildRec *aib = (&_players_ai[p->index].src) + _players_ai[p->index].order_list_blocks[i];
-		bool is_pass = (_players_ai[p->index].cargo_type == CT_PASSENGERS || _players_ai[p->index].cargo_type == CT_MAIL);
+	for (i = 0; _companies_ai[c->index].order_list_blocks[i] != 0xFF; i++) {
+		AiBuildRec *aib = (&_companies_ai[c->index].src) + _companies_ai[c->index].order_list_blocks[i];
+		bool is_pass = (_companies_ai[c->index].cargo_type == CT_PASSENGERS || _companies_ai[c->index].cargo_type == CT_MAIL);
 		Order order;
 
 		order.MakeGoToStation(AiGetStationIdFromAircraftBlock(aib->use_tile, aib->cur_building_rule));
 
 		if (!is_pass && i == 1) order.SetUnloadType(OUFB_UNLOAD);
-		if (_players_ai[p->index].num_want_fullload != 0 && (is_pass || i == 0))
+		if (_companies_ai[c->index].num_want_fullload != 0 && (is_pass || i == 0))
 			order.SetLoadType(OLFB_FULL_LOAD);
 
 		DoCommand(0, loco_id + (i << 16), order.Pack(), DC_EXEC, CMD_INSERT_ORDER);
@@ -3600,31 +3600,31 @@
 
 	DoCommand(0, loco_id, _ai_service_interval, DC_EXEC, CMD_CHANGE_SERVICE_INT);
 
-	if (_players_ai[p->index].num_want_fullload != 0) _players_ai[p->index].num_want_fullload--;
-
-	if (--_players_ai[p->index].num_loco_to_build == 0) _players_ai[p->index].state = AIS_0;
+	if (_companies_ai[c->index].num_want_fullload != 0) _companies_ai[c->index].num_want_fullload--;
+
+	if (--_companies_ai[c->index].num_loco_to_build == 0) _companies_ai[c->index].state = AIS_0;
 }
 
-static void AiStateCheckShipStuff(Player *p)
+static void AiStateCheckShipStuff(Company *c)
 {
 	/* Ships are not implemented in this (broken) AI */
 }
 
-static void AiStateBuildDefaultShipBlocks(Player *p)
+static void AiStateBuildDefaultShipBlocks(Company *c)
 {
 	/* Ships are not implemented in this (broken) AI */
 }
 
-static void AiStateDoShipStuff(Player *p)
+static void AiStateDoShipStuff(Company *c)
 {
 	/* Ships are not implemented in this (broken) AI */
 }
 
-static void AiStateSellVeh(Player *p)
+static void AiStateSellVeh(Company *c)
 {
-	Vehicle *v = _players_ai[p->index].cur_veh;
-
-	if (v->owner == _current_player) {
+	Vehicle *v = _companies_ai[c->index].cur_veh;
+
+	if (v->owner == _current_company) {
 		if (v->type == VEH_TRAIN) {
 
 			if (!IsRailDepotTile(v->tile) || v->u.rail.track != TRACK_BIT_DEPOT || !(v->vehstatus & VS_STOPPED)) {
@@ -3659,17 +3659,17 @@
 
 	goto return_to_loop;
 going_to_depot:;
-	if (++_players_ai[p->index].state_counter <= 832) return;
+	if (++_companies_ai[c->index].state_counter <= 832) return;
 
 	if (v->current_order.IsType(OT_GOTO_DEPOT)) {
 		v->current_order.MakeDummy();
 		InvalidateWindow(WC_VEHICLE_VIEW, v->index);
 	}
 return_to_loop:;
-	_players_ai[p->index].state = AIS_VEH_LOOP;
+	_companies_ai[c->index].state = AIS_VEH_LOOP;
 }
 
-static void AiStateRemoveStation(Player *p)
+static void AiStateRemoveStation(Company *c)
 {
 	// Remove stations that aren't in use by any vehicle
 	const Order *ord;
@@ -3677,7 +3677,7 @@
 	TileIndex tile;
 
 	// Go to this state when we're done.
-	_players_ai[p->index].state = AIS_1;
+	_companies_ai[c->index].state = AIS_1;
 
 	// Get a list of all stations that are in use by a vehicle
 	byte *in_use = MallocT<byte>(GetMaxStationIndex() + 1);
@@ -3688,7 +3688,7 @@
 
 	// Go through all stations and delete those that aren't in use
 	FOR_ALL_STATIONS(st) {
-		if (st->owner == _current_player && !in_use[st->index] &&
+		if (st->owner == _current_company && !in_use[st->index] &&
 				( (st->bus_stops != NULL && (tile = st->bus_stops->xy) != 0) ||
 					(st->truck_stops != NULL && (tile = st->truck_stops->xy)) != 0 ||
 					(tile = st->train_tile) != 0 ||
@@ -3701,12 +3701,12 @@
 	free(in_use);
 }
 
-static void AiRemovePlayerRailOrRoad(Player *p, TileIndex tile)
+static void AiRemoveCompanyRailOrRoad(Company *c, TileIndex tile)
 {
 	TrackBits rails;
 
 	if (IsTileType(tile, MP_RAILWAY)) {
-		if (!IsTileOwner(tile, _current_player)) return;
+		if (!IsTileOwner(tile, _current_company)) return;
 
 		if (IsPlainRailTile(tile)) {
 is_rail_crossing:;
@@ -3717,9 +3717,9 @@
 			if (rails & TRACK_BIT_3WAY_NE) {
 pos_0:
 				if ((GetRailTrackStatus(TILE_MASK(tile - TileDiffXY(1, 0))) & TRACK_BIT_3WAY_SW) == 0) {
-					_players_ai[p->index].cur_dir_a = DIAGDIR_NE;
-					_players_ai[p->index].cur_tile_a = tile;
-					_players_ai[p->index].state = AIS_REMOVE_SINGLE_RAIL_TILE;
+					_companies_ai[c->index].cur_dir_a = DIAGDIR_NE;
+					_companies_ai[c->index].cur_tile_a = tile;
+					_companies_ai[c->index].state = AIS_REMOVE_SINGLE_RAIL_TILE;
 					return;
 				}
 			}
@@ -3727,9 +3727,9 @@
 			if (rails & TRACK_BIT_3WAY_SE) {
 pos_1:
 				if ((GetRailTrackStatus(TILE_MASK(tile + TileDiffXY(0, 1))) & TRACK_BIT_3WAY_NW) == 0) {
-					_players_ai[p->index].cur_dir_a = DIAGDIR_SE;
-					_players_ai[p->index].cur_tile_a = tile;
-					_players_ai[p->index].state = AIS_REMOVE_SINGLE_RAIL_TILE;
+					_companies_ai[c->index].cur_dir_a = DIAGDIR_SE;
+					_companies_ai[c->index].cur_tile_a = tile;
+					_companies_ai[c->index].state = AIS_REMOVE_SINGLE_RAIL_TILE;
 					return;
 				}
 			}
@@ -3737,9 +3737,9 @@
 			if (rails & TRACK_BIT_3WAY_SW) {
 pos_2:
 				if ((GetRailTrackStatus(TILE_MASK(tile + TileDiffXY(1, 0))) & TRACK_BIT_3WAY_NE) == 0) {
-					_players_ai[p->index].cur_dir_a = DIAGDIR_SW;
-					_players_ai[p->index].cur_tile_a = tile;
-					_players_ai[p->index].state = AIS_REMOVE_SINGLE_RAIL_TILE;
+					_companies_ai[c->index].cur_dir_a = DIAGDIR_SW;
+					_companies_ai[c->index].cur_tile_a = tile;
+					_companies_ai[c->index].state = AIS_REMOVE_SINGLE_RAIL_TILE;
 					return;
 				}
 			}
@@ -3747,9 +3747,9 @@
 			if (rails & TRACK_BIT_3WAY_NW) {
 pos_3:
 				if ((GetRailTrackStatus(TILE_MASK(tile - TileDiffXY(0, 1))) & TRACK_BIT_3WAY_SE) == 0) {
-					_players_ai[p->index].cur_dir_a = DIAGDIR_NW;
-					_players_ai[p->index].cur_tile_a = tile;
-					_players_ai[p->index].state = AIS_REMOVE_SINGLE_RAIL_TILE;
+					_companies_ai[c->index].cur_dir_a = DIAGDIR_NW;
+					_companies_ai[c->index].cur_tile_a = tile;
+					_companies_ai[c->index].state = AIS_REMOVE_SINGLE_RAIL_TILE;
 					return;
 				}
 			}
@@ -3767,23 +3767,23 @@
 		if (IsLevelCrossing(tile)) goto is_rail_crossing;
 
 		if (IsRoadDepot(tile)) {
-			if (!IsTileOwner(tile, _current_player)) return;
+			if (!IsTileOwner(tile, _current_company)) return;
 
 			DiagDirection dir;
 			TileIndex t;
 
 			// Check if there are any stations around.
 			t = tile + TileDiffXY(-1, 0);
-			if (IsTileType(t, MP_STATION) && IsTileOwner(t, _current_player)) return;
+			if (IsTileType(t, MP_STATION) && IsTileOwner(t, _current_company)) return;
 
 			t = tile + TileDiffXY(1, 0);
-			if (IsTileType(t, MP_STATION) && IsTileOwner(t, _current_player)) return;
+			if (IsTileType(t, MP_STATION) && IsTileOwner(t, _current_company)) return;
 
 			t = tile + TileDiffXY(0, -1);
-			if (IsTileType(t, MP_STATION) && IsTileOwner(t, _current_player)) return;
+			if (IsTileType(t, MP_STATION) && IsTileOwner(t, _current_company)) return;
 
 			t = tile + TileDiffXY(0, 1);
-			if (IsTileType(t, MP_STATION) && IsTileOwner(t, _current_player)) return;
+			if (IsTileType(t, MP_STATION) && IsTileOwner(t, _current_company)) return;
 
 			dir = GetRoadDepotDirection(tile);
 
@@ -3796,7 +3796,7 @@
 				CMD_REMOVE_ROAD);
 		}
 	} else if (IsTileType(tile, MP_TUNNELBRIDGE)) {
-		if (!IsTileOwner(tile, _current_player) ||
+		if (!IsTileOwner(tile, _current_company) ||
 				!IsBridge(tile) ||
 				GetTunnelBridgeTransportType(tile) != TRANSPORT_RAIL) {
 			return;
@@ -3814,30 +3814,30 @@
 	}
 }
 
-static void AiStateRemoveTrack(Player *p)
+static void AiStateRemoveTrack(Company *c)
 {
 	/* Was 1000 for standard 8x8 maps. */
 	int num = MapSizeX() * 4;
 
 	do {
-		TileIndex tile = ++_players_ai[p->index].state_counter;
+		TileIndex tile = ++_companies_ai[c->index].state_counter;
 
 		// Iterated all tiles?
 		if (tile >= MapSize()) {
-			_players_ai[p->index].state = AIS_REMOVE_STATION;
+			_companies_ai[c->index].state = AIS_REMOVE_STATION;
 			return;
 		}
 
-		// Remove player stuff in that tile
-		AiRemovePlayerRailOrRoad(p, tile);
-		if (_players_ai[p->index].state != AIS_REMOVE_TRACK) return;
+		// Remove company stuff in that tile
+		AiRemoveCompanyRailOrRoad(c, tile);
+		if (_companies_ai[c->index].state != AIS_REMOVE_TRACK) return;
 	} while (--num);
 }
 
-static void AiStateRemoveSingleRailTile(Player *p)
+static void AiStateRemoveSingleRailTile(Company *c)
 {
 	// Remove until we can't remove more.
-	if (!AiRemoveTileAndGoForward(p)) _players_ai[p->index].state = AIS_REMOVE_TRACK;
+	if (!AiRemoveTileAndGoForward(c)) _companies_ai[c->index].state = AIS_REMOVE_TRACK;
 }
 
 static AiStateAction * const _ai_actions[] = {
@@ -3873,101 +3873,101 @@
 	AiStateRemoveSingleRailTile
 };
 
-extern void ShowBuyCompanyDialog(uint player);
-
-static void AiHandleTakeover(Player *p)
+extern void ShowBuyCompanyDialog(CompanyID company);
+
+static void AiHandleTakeover(Company *c)
 {
-	if (p->bankrupt_timeout != 0) {
-		p->bankrupt_timeout -= 8;
-		if (p->bankrupt_timeout > 0) return;
-		p->bankrupt_timeout = 0;
-		DeleteWindowById(WC_BUY_COMPANY, _current_player);
-		if (IsLocalPlayer()) {
+	if (c->bankrupt_timeout != 0) {
+		c->bankrupt_timeout -= 8;
+		if (c->bankrupt_timeout > 0) return;
+		c->bankrupt_timeout = 0;
+		DeleteWindowById(WC_BUY_COMPANY, _current_company);
+		if (IsLocalCompany()) {
 			AskExitToGameMenu();
 			return;
 		}
-		if (IsHumanPlayer(_current_player)) return;
+		if (IsHumanCompany(_current_company)) return;
 	}
 
-	if (p->bankrupt_asked == 255) return;
+	if (c->bankrupt_asked == 255) return;
 
 	{
-		uint asked = p->bankrupt_asked;
-		Player *pp, *best_pl = NULL;
+		uint asked = c->bankrupt_asked;
+		Company *company, *best_company = NULL;
 		int32 best_val = -1;
 
 		// Ask the guy with the highest performance hist.
-		FOR_ALL_PLAYERS(pp) {
+		FOR_ALL_COMPANIES(company) {
 			if (!(asked & 1) &&
-					pp->bankrupt_asked == 0 &&
-					best_val < pp->old_economy[1].performance_history) {
-				best_val = pp->old_economy[1].performance_history;
-				best_pl = pp;
+					company->bankrupt_asked == 0 &&
+					best_val < company->old_economy[1].performance_history) {
+				best_val = company->old_economy[1].performance_history;
+				best_company = company;
 			}
 			asked >>= 1;
 		}
 
-		// Asked all players?
+		// Asked all companies?
 		if (best_val == -1) {
-			p->bankrupt_asked = 255;
+			c->bankrupt_asked = 255;
 			return;
 		}
 
-		SetBit(p->bankrupt_asked, best_pl->index);
-
-		if (best_pl->index == _local_player) {
-			p->bankrupt_timeout = 4440;
-			ShowBuyCompanyDialog(_current_player);
+		SetBit(c->bankrupt_asked, best_company->index);
+
+		if (best_company->index == _local_company) {
+			c->bankrupt_timeout = 4440;
+			ShowBuyCompanyDialog(_current_company);
 			return;
 		}
-		if (IsHumanPlayer(best_pl->index)) return;
+		if (IsHumanCompany(best_company->index)) return;
 
 		// Too little money for computer to buy it?
-		if (best_pl->player_money >> 1 >= p->bankrupt_value) {
+		if (best_company->money >> 1 >= c->bankrupt_value) {
 			// Computer wants to buy it.
-			PlayerID old_p = _current_player;
-			_current_player = best_pl->index;
-			DoCommand(0, old_p, 0, DC_EXEC, CMD_BUY_COMPANY);
-			_current_player = old_p;
+			CompanyID old_company = _current_company;
+			_current_company = best_company->index;
+			DoCommand(0, old_company, 0, DC_EXEC, CMD_BUY_COMPANY);
+			_current_company = old_company;
 		}
 	}
 }
 
-static void AiAdjustLoan(const Player* p)
+static void AiAdjustLoan(const Company *c)
 {
-	Money base = AiGetBasePrice(p);
-
-	if (p->player_money > base * 1400) {
+	Money base = AiGetBasePrice(c);
+
+	if (c->money > base * 1400) {
 		// Decrease loan
-		if (p->current_loan != 0) {
+		if (c->current_loan != 0) {
 			DoCommand(0, 0, 0, DC_EXEC, CMD_DECREASE_LOAN);
 		}
-	} else if (p->player_money < base * 500) {
+	} else if (c->money < base * 500) {
 		// Increase loan
-		if (p->current_loan < _economy.max_loan &&
-				p->num_valid_stat_ent >= 2 &&
-				-(p->old_economy[0].expenses + p->old_economy[1].expenses) < base * 60) {
+		if (c->current_loan < _economy.max_loan &&
+				c->num_valid_stat_ent >= 2 &&
+				-(c->old_economy[0].expenses + c->old_economy[1].expenses) < base * 60) {
 			DoCommand(0, 0, 0, DC_EXEC, CMD_INCREASE_LOAN);
 		}
 	}
 }
 
-static void AiBuildCompanyHQ(Player *p)
+static void AiBuildCompanyHQ(Company *c)
 {
 	TileIndex tile;
 
-	if (p->location_of_HQ == 0 &&
-			p->last_build_coordinate != 0) {
-		tile = AdjustTileCoordRandomly(p->last_build_coordinate, 8);
+	if (c->location_of_HQ == 0 &&
+			c->last_build_coordinate != 0) {
+		tile = AdjustTileCoordRandomly(c->last_build_coordinate, 8);
 		DoCommand(tile, 0, 0, DC_EXEC | DC_AUTO | DC_NO_WATER, CMD_BUILD_COMPANY_HQ);
 	}
 }
 
 
-void AiDoGameLoop(Player *p)
+void AiDoGameLoop(Company *c)
 {
-	if (p->bankrupt_asked != 0) {
-		AiHandleTakeover(p);
+	if (c->bankrupt_asked != 0) {
+		AiHandleTakeover(c);
 		return;
 	}
 
@@ -3977,10 +3977,10 @@
 	//  or in %
 	_ai_service_interval = _settings_game.vehicle.servint_ispercent ? 80 : 180;
 
-	if (IsHumanPlayer(_current_player)) return;
-
-	AiAdjustLoan(p);
-	AiBuildCompanyHQ(p);
+	if (IsHumanCompany(_current_company)) return;
+
+	AiAdjustLoan(c);
+	AiBuildCompanyHQ(c);
 
 #if 0
 	{
@@ -4013,11 +4013,11 @@
 			"AiStateRemoveSingleRailTile"
 		};
 
-		if (_players_ai[p->index].state != old_state) {
+		if (_companies_ai[c->index].state != old_state) {
 			if (hasdots)
 				printf("\n");
 			hasdots = false;
-			printf("AiState: %s\n", _ai_state_names[old_state=_players_ai[p->index].state]);
+			printf("AiState: %s\n", _ai_state_names[old_state=_companies_ai[c->index].state]);
 		} else {
 			printf(".");
 			hasdots = true;
@@ -4025,55 +4025,55 @@
 	}
 #endif
 
-	_ai_actions[_players_ai[p->index].state](p);
+	_ai_actions[_companies_ai[c->index].state](c);
 }
 
 
-static const SaveLoad _player_ai_desc[] = {
-	    SLE_VAR(PlayerAI, state,             SLE_UINT8),
-	    SLE_VAR(PlayerAI, tick,              SLE_UINT8),
-	SLE_CONDVAR(PlayerAI, state_counter,     SLE_FILE_U16 | SLE_VAR_U32,  0, 12),
-	SLE_CONDVAR(PlayerAI, state_counter,     SLE_UINT32,                 13, SL_MAX_VERSION),
-	    SLE_VAR(PlayerAI, timeout_counter,   SLE_UINT16),
-
-	    SLE_VAR(PlayerAI, state_mode,        SLE_UINT8),
-	    SLE_VAR(PlayerAI, banned_tile_count, SLE_UINT8),
-	    SLE_VAR(PlayerAI, railtype_to_use,   SLE_UINT8),
-
-	    SLE_VAR(PlayerAI, cargo_type,        SLE_UINT8),
-	    SLE_VAR(PlayerAI, num_wagons,        SLE_UINT8),
-	    SLE_VAR(PlayerAI, build_kind,        SLE_UINT8),
-	    SLE_VAR(PlayerAI, num_build_rec,     SLE_UINT8),
-	    SLE_VAR(PlayerAI, num_loco_to_build, SLE_UINT8),
-	    SLE_VAR(PlayerAI, num_want_fullload, SLE_UINT8),
-
-	    SLE_VAR(PlayerAI, route_type_mask,   SLE_UINT8),
-
-	SLE_CONDVAR(PlayerAI, start_tile_a,      SLE_FILE_U16 | SLE_VAR_U32,  0,  5),
-	SLE_CONDVAR(PlayerAI, start_tile_a,      SLE_UINT32,                  6, SL_MAX_VERSION),
-	SLE_CONDVAR(PlayerAI, cur_tile_a,        SLE_FILE_U16 | SLE_VAR_U32,  0,  5),
-	SLE_CONDVAR(PlayerAI, cur_tile_a,        SLE_UINT32,                  6, SL_MAX_VERSION),
-	    SLE_VAR(PlayerAI, start_dir_a,       SLE_UINT8),
-	    SLE_VAR(PlayerAI, cur_dir_a,         SLE_UINT8),
-
-	SLE_CONDVAR(PlayerAI, start_tile_b,      SLE_FILE_U16 | SLE_VAR_U32,  0,  5),
-	SLE_CONDVAR(PlayerAI, start_tile_b,      SLE_UINT32,                  6, SL_MAX_VERSION),
-	SLE_CONDVAR(PlayerAI, cur_tile_b,        SLE_FILE_U16 | SLE_VAR_U32,  0,  5),
-	SLE_CONDVAR(PlayerAI, cur_tile_b,        SLE_UINT32,                  6, SL_MAX_VERSION),
-	    SLE_VAR(PlayerAI, start_dir_b,       SLE_UINT8),
-	    SLE_VAR(PlayerAI, cur_dir_b,         SLE_UINT8),
-
-	    SLE_REF(PlayerAI, cur_veh,           REF_VEHICLE),
-
-	    SLE_ARR(PlayerAI, wagon_list,        SLE_UINT16, 9),
-	    SLE_ARR(PlayerAI, order_list_blocks, SLE_UINT8, 20),
-	    SLE_ARR(PlayerAI, banned_tiles,      SLE_UINT16, 16),
+static const SaveLoad _company_ai_desc[] = {
+	    SLE_VAR(CompanyAI, state,             SLE_UINT8),
+	    SLE_VAR(CompanyAI, tick,              SLE_UINT8),
+	SLE_CONDVAR(CompanyAI, state_counter,     SLE_FILE_U16 | SLE_VAR_U32,  0, 12),
+	SLE_CONDVAR(CompanyAI, state_counter,     SLE_UINT32,                 13, SL_MAX_VERSION),
+	    SLE_VAR(CompanyAI, timeout_counter,   SLE_UINT16),
+
+	    SLE_VAR(CompanyAI, state_mode,        SLE_UINT8),
+	    SLE_VAR(CompanyAI, banned_tile_count, SLE_UINT8),
+	    SLE_VAR(CompanyAI, railtype_to_use,   SLE_UINT8),
+
+	    SLE_VAR(CompanyAI, cargo_type,        SLE_UINT8),
+	    SLE_VAR(CompanyAI, num_wagons,        SLE_UINT8),
+	    SLE_VAR(CompanyAI, build_kind,        SLE_UINT8),
+	    SLE_VAR(CompanyAI, num_build_rec,     SLE_UINT8),
+	    SLE_VAR(CompanyAI, num_loco_to_build, SLE_UINT8),
+	    SLE_VAR(CompanyAI, num_want_fullload, SLE_UINT8),
+
+	    SLE_VAR(CompanyAI, route_type_mask,   SLE_UINT8),
+
+	SLE_CONDVAR(CompanyAI, start_tile_a,      SLE_FILE_U16 | SLE_VAR_U32,  0,  5),
+	SLE_CONDVAR(CompanyAI, start_tile_a,      SLE_UINT32,                  6, SL_MAX_VERSION),
+	SLE_CONDVAR(CompanyAI, cur_tile_a,        SLE_FILE_U16 | SLE_VAR_U32,  0,  5),
+	SLE_CONDVAR(CompanyAI, cur_tile_a,        SLE_UINT32,                  6, SL_MAX_VERSION),
+	    SLE_VAR(CompanyAI, start_dir_a,       SLE_UINT8),
+	    SLE_VAR(CompanyAI, cur_dir_a,         SLE_UINT8),
+
+	SLE_CONDVAR(CompanyAI, start_tile_b,      SLE_FILE_U16 | SLE_VAR_U32,  0,  5),
+	SLE_CONDVAR(CompanyAI, start_tile_b,      SLE_UINT32,                  6, SL_MAX_VERSION),
+	SLE_CONDVAR(CompanyAI, cur_tile_b,        SLE_FILE_U16 | SLE_VAR_U32,  0,  5),
+	SLE_CONDVAR(CompanyAI, cur_tile_b,        SLE_UINT32,                  6, SL_MAX_VERSION),
+	    SLE_VAR(CompanyAI, start_dir_b,       SLE_UINT8),
+	    SLE_VAR(CompanyAI, cur_dir_b,         SLE_UINT8),
+
+	    SLE_REF(CompanyAI, cur_veh,           REF_VEHICLE),
+
+	    SLE_ARR(CompanyAI, wagon_list,        SLE_UINT16, 9),
+	    SLE_ARR(CompanyAI, order_list_blocks, SLE_UINT8, 20),
+	    SLE_ARR(CompanyAI, banned_tiles,      SLE_UINT16, 16),
 
 	SLE_CONDNULL(64, 2, SL_MAX_VERSION),
 	SLE_END()
 };
 
-static const SaveLoad _player_ai_build_rec_desc[] = {
+static const SaveLoad _company_ai_build_rec_desc[] = {
 	SLE_CONDVAR(AiBuildRec, spec_tile,         SLE_FILE_U16 | SLE_VAR_U32, 0, 5),
 	SLE_CONDVAR(AiBuildRec, spec_tile,         SLE_UINT32,                 6, SL_MAX_VERSION),
 	SLE_CONDVAR(AiBuildRec, use_tile,          SLE_FILE_U16 | SLE_VAR_U32, 0, 5),
@@ -4090,11 +4090,11 @@
 };
 
 
-void SaveLoad_AI(PlayerID id)
+void SaveLoad_AI(CompanyID company)
 {
-	PlayerAI *pai = &_players_ai[id];
-	SlObject(pai, _player_ai_desc);
-	for (int i = 0; i != pai->num_build_rec; i++) {
-		SlObject(&pai->src + i, _player_ai_build_rec_desc);
+	CompanyAI *cai = &_companies_ai[company];
+	SlObject(cai, _company_ai_desc);
+	for (int i = 0; i != cai->num_build_rec; i++) {
+		SlObject(&cai->src + i, _company_ai_build_rec_desc);
 	}
 }
--- a/src/ai/default/default.h	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/ai/default/default.h	Tue Sep 30 20:39:50 2008 +0000
@@ -9,8 +9,8 @@
 #include "../../vehicle_type.h"
 #include "../../rail_type.h"
 
-void AiDoGameLoop(Player*);
-void SaveLoad_AI(PlayerID id);
+void AiDoGameLoop(Company *c);
+void SaveLoad_AI(CompanyID company);
 
 struct AiBuildRec {
 	TileIndex spec_tile;
@@ -25,7 +25,7 @@
 	CargoID cargo;
 };
 
-struct PlayerAI {
+struct CompanyAI {
 	byte state;
 	byte tick;            ///< Used to determine how often to move
 	uint32 state_counter; ///< Can hold tile index!
@@ -65,6 +65,6 @@
 	byte banned_val[16];
 };
 
-extern PlayerAI _players_ai[MAX_PLAYERS];
+extern CompanyAI _companies_ai[MAX_COMPANIES];
 
 #endif
--- a/src/ai/trolly/build.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/ai/trolly/build.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -23,7 +23,7 @@
 // Build HQ
 //  Params:
 //    tile : tile where HQ is going to be build
-bool AiNew_Build_CompanyHQ(Player *p, TileIndex tile)
+bool AiNew_Build_CompanyHQ(Company *c, TileIndex tile)
 {
 	if (CmdFailed(AI_DoCommand(tile, 0, 0, DC_AUTO | DC_NO_WATER, CMD_BUILD_COMPANY_HQ)))
 		return false;
@@ -40,7 +40,7 @@
 //    numtracks : in case of AI_TRAIN: tracks of station
 //    direction : the direction of the station
 //    flag : flag passed to DoCommand (normally 0 to get the cost or DC_EXEC to build it)
-CommandCost AiNew_Build_Station(Player *p, byte type, TileIndex tile, byte length, byte numtracks, byte direction, byte flag)
+CommandCost AiNew_Build_Station(Company *c, byte type, TileIndex tile, byte length, byte numtracks, byte direction, byte flag)
 {
 	if (type == AI_TRAIN)
 		return AI_DoCommand(tile, direction + (numtracks << 8) + (length << 16), 0, flag | DC_AUTO | DC_NO_WATER, CMD_BUILD_RAILROAD_STATION);
@@ -52,12 +52,12 @@
 }
 
 
-// Builds a brdige. The second best out of the ones available for this player
+// Builds a brdige. The second best out of the ones available for this company
 //  Params:
 //   tile_a : starting point
 //   tile_b : end point
 //   flag : flag passed to DoCommand
-CommandCost AiNew_Build_Bridge(Player *p, TileIndex tile_a, TileIndex tile_b, byte flag)
+CommandCost AiNew_Build_Bridge(Company *c, TileIndex tile_a, TileIndex tile_b, byte flag)
 {
 	int bridge_type, bridge_len, type, type2;
 
@@ -76,7 +76,7 @@
 	if (type2 == 0 && type != 0) type2 = type;
 
 	// Now, simply, build the bridge!
-	if (_players_ainew[p->index].tbt == AI_TRAIN) {
+	if (_companies_ainew[c->index].tbt == AI_TRAIN) {
 		return AI_DoCommand(tile_a, tile_b, type2 | RAILTYPE_RAIL  << 8 | TRANSPORT_RAIL << 15, flag | DC_AUTO, CMD_BUILD_BRIDGE);
 	} else {
 		return AI_DoCommand(tile_a, tile_b, type2 | ROADTYPES_ROAD << 8 | TRANSPORT_ROAD << 15, flag | DC_AUTO, CMD_BUILD_BRIDGE);
@@ -94,7 +94,7 @@
 //   part : Which part we need to build
 //
 // TODO: skip already builded road-pieces (e.g.: cityroad)
-CommandCost AiNew_Build_RoutePart(Player *p, Ai_PathFinderInfo *PathFinderInfo, byte flag)
+CommandCost AiNew_Build_RoutePart(Company *c, Ai_PathFinderInfo *PathFinderInfo, byte flag)
 {
 	int part = PathFinderInfo->position;
 	byte *route_extra = PathFinderInfo->route_extra;
@@ -127,7 +127,7 @@
 		}
 		// Bridge code
 		if ((AI_PATHFINDER_FLAG_BRIDGE & route_extra[part]) != 0) {
-			cost.AddCost(AiNew_Build_Bridge(p, route[part], route[part - 1], flag));
+			cost.AddCost(AiNew_Build_Bridge(c, route[part], route[part - 1], flag));
 			PathFinderInfo->position++;
 			// TODO: problems!
 			if (CmdFailed(cost)) {
@@ -150,7 +150,7 @@
 				res = AI_DoCommand(route[part], 0, dir, flag, CMD_BUILD_SINGLE_RAIL);
 				if (CmdFailed(res)) {
 					// Problem.. let's just abort it all!
-					_players_ainew[p->index].state = AI_STATE_NOTHING;
+					_companies_ainew[c->index].state = AI_STATE_NOTHING;
 					return CommandCost();
 				}
 				cost.AddCost(res);
@@ -177,7 +177,7 @@
 		}
 		// Bridge code
 		if ((AI_PATHFINDER_FLAG_BRIDGE & route_extra[part]) != 0) {
-			cost.AddCost(AiNew_Build_Bridge(p, route[part], route[part + 1], flag));
+			cost.AddCost(AiNew_Build_Bridge(c, route[part], route[part + 1], flag));
 			PathFinderInfo->position++;
 			// TODO: problems!
 			if (CmdFailed(cost)) {
@@ -206,7 +206,7 @@
 					if (CmdFailed(res) && flag == DC_EXEC && !IsTileType(route[part], MP_ROAD) && !EnsureNoVehicleOnGround(route[part])) {
 						// Problem.. let's just abort it all!
 						DEBUG(ai, 0, "[BuidPath] route building failed at tile 0x%X, aborting", route[part]);
-						_players_ainew[p->index].state = AI_STATE_NOTHING;
+						_companies_ainew[c->index].state = AI_STATE_NOTHING;
 						return CommandCost();
 					}
 
@@ -230,9 +230,9 @@
 
 // This functions tries to find the best vehicle for this type of cargo
 // It returns INVALID_ENGINE if not suitable engine is found
-EngineID AiNew_PickVehicle(Player *p)
+EngineID AiNew_PickVehicle(Company *c)
 {
-	if (_players_ainew[p->index].tbt == AI_TRAIN) {
+	if (_companies_ainew[c->index].tbt == AI_TRAIN) {
 		// Not supported yet
 		return INVALID_ENGINE;
 	} else {
@@ -246,14 +246,14 @@
 			const RoadVehicleInfo *rvi = &e->u.road;
 
 			/* Skip vehicles which can't take our cargo type */
-			if (rvi->cargo_type != _players_ainew[p->index].cargo && !CanRefitTo(i, _players_ainew[p->index].cargo)) continue;
+			if (rvi->cargo_type != _companies_ainew[c->index].cargo && !CanRefitTo(i, _companies_ainew[c->index].cargo)) continue;
 
 			/* Skip trams */
 			if (HasBit(EngInfo(i)->misc_flags, EF_ROAD_TRAM)) continue;
 
 			// Is it availiable?
 			// Also, check if the reliability of the vehicle is above the AI_VEHICLE_MIN_RELIABILTY
-			if (!HasBit(e->player_avail, _current_player) || e->reliability * 100 < AI_VEHICLE_MIN_RELIABILTY << 16) continue;
+			if (!HasBit(e->company_avail, _current_company) || e->reliability * 100 < AI_VEHICLE_MIN_RELIABILTY << 16) continue;
 
 			/* Rate and compare the engine by speed & capacity */
 			int rating = rvi->max_speed * rvi->capacity;
@@ -274,34 +274,34 @@
 
 void CcAI(bool success, TileIndex tile, uint32 p1, uint32 p2)
 {
-	Player* p = GetPlayer(_current_player);
+	Company *c = GetCompany(_current_company);
 
 	if (success) {
-		_players_ainew[p->index].state = AI_STATE_GIVE_ORDERS;
-		_players_ainew[p->index].veh_id = _new_vehicle_id;
+		_companies_ainew[c->index].state = AI_STATE_GIVE_ORDERS;
+		_companies_ainew[c->index].veh_id = _new_vehicle_id;
 
-		if (GetVehicle(_players_ainew[p->index].veh_id)->cargo_type != _players_ainew[p->index].cargo) {
+		if (GetVehicle(_companies_ainew[c->index].veh_id)->cargo_type != _companies_ainew[c->index].cargo) {
 			/* Cargo type doesn't match, so refit it */
-			if (CmdFailed(DoCommand(tile, _players_ainew[p->index].veh_id, _players_ainew[p->index].cargo, DC_EXEC, CMD_REFIT_ROAD_VEH))) {
+			if (CmdFailed(DoCommand(tile, _companies_ainew[c->index].veh_id, _companies_ainew[c->index].cargo, DC_EXEC, CMD_REFIT_ROAD_VEH))) {
 				/* Refit failed, so sell the vehicle */
-				DoCommand(tile, _players_ainew[p->index].veh_id, 0, DC_EXEC, CMD_SELL_ROAD_VEH);
-				_players_ainew[p->index].state = AI_STATE_NOTHING;
+				DoCommand(tile, _companies_ainew[c->index].veh_id, 0, DC_EXEC, CMD_SELL_ROAD_VEH);
+				_companies_ainew[c->index].state = AI_STATE_NOTHING;
 			}
 		}
 	} else {
 		/* XXX this should be handled more gracefully */
-		_players_ainew[p->index].state = AI_STATE_NOTHING;
+		_companies_ainew[c->index].state = AI_STATE_NOTHING;
 	}
 }
 
 
 // Builds the best vehicle possible
-CommandCost AiNew_Build_Vehicle(Player *p, TileIndex tile, byte flag)
+CommandCost AiNew_Build_Vehicle(Company *c, TileIndex tile, byte flag)
 {
-	EngineID i = AiNew_PickVehicle(p);
+	EngineID i = AiNew_PickVehicle(c);
 
 	if (i == INVALID_ENGINE) return CMD_ERROR;
-	if (_players_ainew[p->index].tbt == AI_TRAIN) return CMD_ERROR;
+	if (_companies_ainew[c->index].tbt == AI_TRAIN) return CMD_ERROR;
 
 	if (flag & DC_EXEC) {
 		return AI_DoCommandCc(tile, i, 0, flag, CMD_BUILD_ROAD_VEH, CcAI);
@@ -310,10 +310,10 @@
 	}
 }
 
-CommandCost AiNew_Build_Depot(Player* p, TileIndex tile, DiagDirection direction, byte flag)
+CommandCost AiNew_Build_Depot(Company *c, TileIndex tile, DiagDirection direction, byte flag)
 {
 	CommandCost ret, ret2;
-	if (_players_ainew[p->index].tbt == AI_TRAIN) {
+	if (_companies_ainew[c->index].tbt == AI_TRAIN) {
 		return AI_DoCommand(tile, 0, direction, flag | DC_AUTO | DC_NO_WATER, CMD_BUILD_TRAIN_DEPOT);
 	} else {
 		ret = AI_DoCommand(tile, direction, 0, flag | DC_AUTO | DC_NO_WATER, CMD_BUILD_ROAD_DEPOT);
--- a/src/ai/trolly/pathfinder.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/ai/trolly/pathfinder.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -24,21 +24,21 @@
 // TODO: make it train compatible
 static bool TestCanBuildStationHere(TileIndex tile, byte dir)
 {
-	Player *p = GetPlayer(_current_player);
+	Company *c = GetCompany(_current_company);
 
 	if (dir == TEST_STATION_NO_DIR) {
 		CommandCost ret;
 		// TODO: currently we only allow spots that can be access from al 4 directions...
 		//  should be fixed!!!
 		for (dir = 0; dir < 4; dir++) {
-			ret = AiNew_Build_Station(p, _players_ainew[p->index].tbt, tile, 1, 1, dir, DC_QUERY_COST);
+			ret = AiNew_Build_Station(c, _companies_ainew[c->index].tbt, tile, 1, 1, dir, DC_QUERY_COST);
 			if (CmdSucceeded(ret)) return true;
 		}
 		return false;
 	}
 
 	// return true if command succeeded, so the inverse of CmdFailed()
-	return CmdSucceeded(AiNew_Build_Station(p, _players_ainew[p->index].tbt, tile, 1, 1, dir, DC_QUERY_COST));
+	return CmdSucceeded(AiNew_Build_Station(c, _companies_ainew[c->index].tbt, tile, 1, 1, dir, DC_QUERY_COST));
 }
 
 
--- a/src/ai/trolly/shared.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/ai/trolly/shared.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -78,13 +78,13 @@
 
 // This functions looks up if this vehicle is special for this AI
 //  and returns his flag
-uint AiNew_GetSpecialVehicleFlag(Player* p, Vehicle* v)
+uint AiNew_GetSpecialVehicleFlag(Company *c, Vehicle *v)
 {
 	uint i;
 
 	for (i = 0; i < AI_MAX_SPECIAL_VEHICLES; i++) {
-		if (_players_ainew[p->index].special_vehicles[i].veh_id == v->index) {
-			return _players_ainew[p->index].special_vehicles[i].flag;
+		if (_companies_ainew[c->index].special_vehicles[i].veh_id == v->index) {
+			return _companies_ainew[c->index].special_vehicles[i].flag;
 		}
 	}
 
@@ -93,19 +93,19 @@
 }
 
 
-bool AiNew_SetSpecialVehicleFlag(Player* p, Vehicle* v, uint flag)
+bool AiNew_SetSpecialVehicleFlag(Company *c, Vehicle *v, uint flag)
 {
 	int new_id = -1;
 	uint i;
 
 	for (i = 0; i < AI_MAX_SPECIAL_VEHICLES; i++) {
-		if (_players_ainew[p->index].special_vehicles[i].veh_id == v->index) {
-			_players_ainew[p->index].special_vehicles[i].flag |= flag;
+		if (_companies_ainew[c->index].special_vehicles[i].veh_id == v->index) {
+			_companies_ainew[c->index].special_vehicles[i].flag |= flag;
 			return true;
 		}
 		if (new_id == -1 &&
-				_players_ainew[p->index].special_vehicles[i].veh_id == 0 &&
-				_players_ainew[p->index].special_vehicles[i].flag == 0) {
+				_companies_ainew[c->index].special_vehicles[i].veh_id == 0 &&
+				_companies_ainew[c->index].special_vehicles[i].flag == 0) {
 			new_id = i;
 		}
 	}
@@ -115,7 +115,7 @@
 		DEBUG(ai, 1, "special_vehicles list is too small");
 		return false;
 	}
-	_players_ainew[p->index].special_vehicles[new_id].veh_id = v->index;
-	_players_ainew[p->index].special_vehicles[new_id].flag = flag;
+	_companies_ainew[c->index].special_vehicles[new_id].veh_id = v->index;
+	_companies_ainew[c->index].special_vehicles[new_id].flag = flag;
 	return true;
 }
--- a/src/ai/trolly/trolly.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/ai/trolly/trolly.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -43,37 +43,37 @@
 
 #include "table/strings.h"
 
-PlayerAiNew _players_ainew[MAX_PLAYERS];
+CompanyAiNew _companies_ainew[MAX_COMPANIES];
 
 // This function is called after StartUp. It is the init of an AI
-static void AiNew_State_FirstTime(Player *p)
+static void AiNew_State_FirstTime(Company *c)
 {
 	// This assert is used to protect those function from misuse
 	//   You have quickly a small mistake in the state-array
 	//   With that, everything would go wrong. Finding that, is almost impossible
 	//   With this assert, that problem can never happen.
-	assert(_players_ainew[p->index].state == AI_STATE_FIRST_TIME);
+	assert(_companies_ainew[c->index].state == AI_STATE_FIRST_TIME);
 	// We first have to init some things
 
-	if (_current_player == 1) ShowErrorMessage(INVALID_STRING_ID, TEMP_AI_IN_PROGRESS, 0, 0);
+	if (_current_company == 1) ShowErrorMessage(INVALID_STRING_ID, TEMP_AI_IN_PROGRESS, 0, 0);
 
 	// The PathFinder (AyStar)
 	// TODO: Maybe when an AI goes bankrupt, this is de-init
 	//  or when coming from a savegame.. should be checked out!
-	_players_ainew[p->index].path_info.start_tile_tl = 0;
-	_players_ainew[p->index].path_info.start_tile_br = 0;
-	_players_ainew[p->index].path_info.end_tile_tl = 0;
-	_players_ainew[p->index].path_info.end_tile_br = 0;
-	_players_ainew[p->index].pathfinder = new_AyStar_AiPathFinder(12, &_players_ainew[p->index].path_info);
+	_companies_ainew[c->index].path_info.start_tile_tl = 0;
+	_companies_ainew[c->index].path_info.start_tile_br = 0;
+	_companies_ainew[c->index].path_info.end_tile_tl = 0;
+	_companies_ainew[c->index].path_info.end_tile_br = 0;
+	_companies_ainew[c->index].pathfinder = new_AyStar_AiPathFinder(12, &_companies_ainew[c->index].path_info);
 
-	_players_ainew[p->index].idle = 0;
-	_players_ainew[p->index].last_vehiclecheck_date = _date;
+	_companies_ainew[c->index].idle = 0;
+	_companies_ainew[c->index].last_vehiclecheck_date = _date;
 
 	// We ALWAYS start with a bus route.. just some basic money ;)
-	_players_ainew[p->index].action = AI_ACTION_BUS_ROUTE;
+	_companies_ainew[c->index].action = AI_ACTION_BUS_ROUTE;
 
 	// Let's popup the news, and after that, start building..
-	_players_ainew[p->index].state = AI_STATE_WAKE_UP;
+	_companies_ainew[c->index].state = AI_STATE_WAKE_UP;
 }
 
 
@@ -84,15 +84,15 @@
 //
 // Let's say, we sleep between one and three days if the AI is put on Very Fast.
 //  This means that on Very Slow it will be between 16 and 48 days.. slow enough?
-static void AiNew_State_Nothing(Player *p)
+static void AiNew_State_Nothing(Company *c)
 {
-	assert(_players_ainew[p->index].state == AI_STATE_NOTHING);
+	assert(_companies_ainew[c->index].state == AI_STATE_NOTHING);
 	// If we are done idling, start over again
-	if (_players_ainew[p->index].idle == 0) _players_ainew[p->index].idle = AI_RandomRange(DAY_TICKS * 2) + DAY_TICKS;
-	if (--_players_ainew[p->index].idle == 0) {
+	if (_companies_ainew[c->index].idle == 0) _companies_ainew[c->index].idle = AI_RandomRange(DAY_TICKS * 2) + DAY_TICKS;
+	if (--_companies_ainew[c->index].idle == 0) {
 		// We are done idling.. what you say? Let's do something!
 		// I mean.. the next tick ;)
-		_players_ainew[p->index].state = AI_STATE_WAKE_UP;
+		_companies_ainew[c->index].state = AI_STATE_WAKE_UP;
 	}
 }
 
@@ -102,118 +102,117 @@
 //    - Make new route
 //    - Check route
 //    - Build HQ
-static void AiNew_State_WakeUp(Player *p)
+static void AiNew_State_WakeUp(Company *c)
 {
-	int c;
-	assert(_players_ainew[p->index].state == AI_STATE_WAKE_UP);
+	assert(_companies_ainew[c->index].state == AI_STATE_WAKE_UP);
 	// First, check if we have a HQ
-	if (p->location_of_HQ == 0) {
+	if (c->location_of_HQ == 0) {
 		// We have no HQ yet, build one on a random place
 		// Random till we found a place for it!
 		// TODO: this should not be on a random place..
-		AiNew_Build_CompanyHQ(p, AI_Random() % MapSize());
+		AiNew_Build_CompanyHQ(c, AI_Random() % MapSize());
 		// Enough for now, but we want to come back here the next time
 		//  so we do not change any status
 		return;
 	}
 
-	Money money = p->player_money - AI_MINIMUM_MONEY;
+	Money money = c->money - AI_MINIMUM_MONEY;
 
 	// Let's pick an action!
-	if (_players_ainew[p->index].action == AI_ACTION_NONE) {
-		c = AI_Random() & 0xFF;
-		if (p->current_loan > 0 &&
-				p->old_economy[1].income > AI_MINIMUM_INCOME_FOR_LOAN &&
-				c < 10) {
-			_players_ainew[p->index].action = AI_ACTION_REPAY_LOAN;
-		} else if (_players_ainew[p->index].last_vehiclecheck_date + AI_DAYS_BETWEEN_VEHICLE_CHECKS < _date) {
+	if (_companies_ainew[c->index].action == AI_ACTION_NONE) {
+		int r = AI_Random() & 0xFF;
+		if (c->current_loan > 0 &&
+				c->old_economy[1].income > AI_MINIMUM_INCOME_FOR_LOAN &&
+				r < 10) {
+			_companies_ainew[c->index].action = AI_ACTION_REPAY_LOAN;
+		} else if (_companies_ainew[c->index].last_vehiclecheck_date + AI_DAYS_BETWEEN_VEHICLE_CHECKS < _date) {
 			// Check all vehicles once in a while
-			_players_ainew[p->index].action = AI_ACTION_CHECK_ALL_VEHICLES;
-			_players_ainew[p->index].last_vehiclecheck_date = _date;
-		} else if (c < 100 && !_settings_game.ai.ai_disable_veh_roadveh) {
+			_companies_ainew[c->index].action = AI_ACTION_CHECK_ALL_VEHICLES;
+			_companies_ainew[c->index].last_vehiclecheck_date = _date;
+		} else if (r < 100 && !_settings_game.ai.ai_disable_veh_roadveh) {
 			// Do we have any spots for road-vehicles left open?
 			if (GetFreeUnitNumber(VEH_ROAD) <= _settings_game.vehicle.max_roadveh) {
-				if (c < 85) {
-					_players_ainew[p->index].action = AI_ACTION_TRUCK_ROUTE;
+				if (r < 85) {
+					_companies_ainew[c->index].action = AI_ACTION_TRUCK_ROUTE;
 				} else {
-					_players_ainew[p->index].action = AI_ACTION_BUS_ROUTE;
+					_companies_ainew[c->index].action = AI_ACTION_BUS_ROUTE;
 				}
 			}
 #if 0
-		} else if (c < 200 && !_settings_game.ai.ai_disable_veh_train) {
+		} else if (r < 200 && !_settings_game.ai.ai_disable_veh_train) {
 			if (GetFreeUnitNumber(VEH_TRAIN) <= _settings_game.vehicle.max_trains) {
-				_players_ainew[p->index].action = AI_ACTION_TRAIN_ROUTE;
+				_companies_ainew[c->index].action = AI_ACTION_TRAIN_ROUTE;
 			}
 #endif
 		}
 
-		_players_ainew[p->index].counter = 0;
+		_companies_ainew[c->index].counter = 0;
 	}
 
-	if (_players_ainew[p->index].counter++ > AI_MAX_TRIES_FOR_SAME_ROUTE) {
-		_players_ainew[p->index].action = AI_ACTION_NONE;
+	if (_companies_ainew[c->index].counter++ > AI_MAX_TRIES_FOR_SAME_ROUTE) {
+		_companies_ainew[c->index].action = AI_ACTION_NONE;
 		return;
 	}
 
 	if (_settings_game.ai.ai_disable_veh_roadveh && (
-				_players_ainew[p->index].action == AI_ACTION_BUS_ROUTE ||
-				_players_ainew[p->index].action == AI_ACTION_TRUCK_ROUTE
+				_companies_ainew[c->index].action == AI_ACTION_BUS_ROUTE ||
+				_companies_ainew[c->index].action == AI_ACTION_TRUCK_ROUTE
 			)) {
-		_players_ainew[p->index].action = AI_ACTION_NONE;
+		_companies_ainew[c->index].action = AI_ACTION_NONE;
 		return;
 	}
 
-	if (_players_ainew[p->index].action == AI_ACTION_REPAY_LOAN &&
+	if (_companies_ainew[c->index].action == AI_ACTION_REPAY_LOAN &&
 			money > AI_MINIMUM_LOAN_REPAY_MONEY) {
 		// We start repaying some money..
-		_players_ainew[p->index].state = AI_STATE_REPAY_MONEY;
+		_companies_ainew[c->index].state = AI_STATE_REPAY_MONEY;
 		return;
 	}
 
-	if (_players_ainew[p->index].action == AI_ACTION_CHECK_ALL_VEHICLES) {
-		_players_ainew[p->index].state = AI_STATE_CHECK_ALL_VEHICLES;
+	if (_companies_ainew[c->index].action == AI_ACTION_CHECK_ALL_VEHICLES) {
+		_companies_ainew[c->index].state = AI_STATE_CHECK_ALL_VEHICLES;
 		return;
 	}
 
 	// It is useless to start finding a route if we don't have enough money
 	//  to build the route anyway..
-	if (_players_ainew[p->index].action == AI_ACTION_BUS_ROUTE &&
+	if (_companies_ainew[c->index].action == AI_ACTION_BUS_ROUTE &&
 			money > AI_MINIMUM_BUS_ROUTE_MONEY) {
 		if (GetFreeUnitNumber(VEH_ROAD) > _settings_game.vehicle.max_roadveh) {
-			_players_ainew[p->index].action = AI_ACTION_NONE;
+			_companies_ainew[c->index].action = AI_ACTION_NONE;
 			return;
 		}
-		_players_ainew[p->index].cargo = AI_NEED_CARGO;
-		_players_ainew[p->index].state = AI_STATE_LOCATE_ROUTE;
-		_players_ainew[p->index].tbt = AI_BUS; // Bus-route
+		_companies_ainew[c->index].cargo = AI_NEED_CARGO;
+		_companies_ainew[c->index].state = AI_STATE_LOCATE_ROUTE;
+		_companies_ainew[c->index].tbt = AI_BUS; // Bus-route
 		return;
 	}
-	if (_players_ainew[p->index].action == AI_ACTION_TRUCK_ROUTE &&
+	if (_companies_ainew[c->index].action == AI_ACTION_TRUCK_ROUTE &&
 			money > AI_MINIMUM_TRUCK_ROUTE_MONEY) {
 		if (GetFreeUnitNumber(VEH_ROAD) > _settings_game.vehicle.max_roadveh) {
-			_players_ainew[p->index].action = AI_ACTION_NONE;
+			_companies_ainew[c->index].action = AI_ACTION_NONE;
 			return;
 		}
-		_players_ainew[p->index].cargo = AI_NEED_CARGO;
-		_players_ainew[p->index].last_id = 0;
-		_players_ainew[p->index].state = AI_STATE_LOCATE_ROUTE;
-		_players_ainew[p->index].tbt = AI_TRUCK;
+		_companies_ainew[c->index].cargo = AI_NEED_CARGO;
+		_companies_ainew[c->index].last_id = 0;
+		_companies_ainew[c->index].state = AI_STATE_LOCATE_ROUTE;
+		_companies_ainew[c->index].tbt = AI_TRUCK;
 		return;
 	}
 
-	_players_ainew[p->index].state = AI_STATE_NOTHING;
+	_companies_ainew[c->index].state = AI_STATE_NOTHING;
 }
 
 
-static void AiNew_State_ActionDone(Player *p)
+static void AiNew_State_ActionDone(Company *c)
 {
-	_players_ainew[p->index].action = AI_ACTION_NONE;
-	_players_ainew[p->index].state = AI_STATE_NOTHING;
+	_companies_ainew[c->index].action = AI_ACTION_NONE;
+	_companies_ainew[c->index].state = AI_STATE_NOTHING;
 }
 
 
 // Check if a city or industry is good enough to start a route there
-static bool AiNew_Check_City_or_Industry(Player *p, int ic, byte type)
+static bool AiNew_Check_City_or_Industry(Company *c, int ic, byte type)
 {
 	if (type == AI_CITY) {
 		const Town* t = GetTown(ic);
@@ -226,7 +225,7 @@
 
 		// Check if the rating in a city is high enough
 		//  If not, take a chance if we want to continue
-		if (t->ratings[_current_player] < 0 && AI_CHANCE16(1, 4)) return false;
+		if (t->ratings[_current_company] < 0 && AI_CHANCE16(1, 4)) return false;
 
 		if (t->max_pass - t->act_pass < AI_CHECKCITY_NEEDED_CARGO && !AI_CHANCE16(1, AI_CHECKCITY_CITY_CHANCE)) return false;
 
@@ -236,9 +235,9 @@
 		//  This way we don't get 12 busstations in one city of 100 population ;)
 		FOR_ALL_STATIONS(st) {
 			// Do we own it?
-			if (st->owner == _current_player) {
+			if (st->owner == _current_company) {
 				// Are we talking busses?
-				if (_players_ainew[p->index].tbt == AI_BUS && (FACIL_BUS_STOP & st->facilities) != FACIL_BUS_STOP) continue;
+				if (_companies_ainew[c->index].tbt == AI_BUS && (FACIL_BUS_STOP & st->facilities) != FACIL_BUS_STOP) continue;
 				// Is it the same city as we are in now?
 				if (st->town != t) continue;
 				// When was this station build?
@@ -281,7 +280,7 @@
 		int count = 0;
 		int j = 0;
 
-		if (i->town != NULL && i->town->ratings[_current_player] < 0 && AI_CHANCE16(1, 4)) return false;
+		if (i->town != NULL && i->town->ratings[_current_company] < 0 && AI_CHANCE16(1, 4)) return false;
 
 		// No limits on delevering stations!
 		//  Or for industry that does not give anything yet
@@ -294,9 +293,9 @@
 		//  and sometimes it takes up to 4 months before the stats are corectly.
 		FOR_ALL_STATIONS(st) {
 			// Do we own it?
-			if (st->owner == _current_player) {
+			if (st->owner == _current_company) {
 				// Are we talking trucks?
-				if (_players_ainew[p->index].tbt == AI_TRUCK && (FACIL_TRUCK_STOP & st->facilities) != FACIL_TRUCK_STOP) continue;
+				if (_companies_ainew[c->index].tbt == AI_TRUCK && (FACIL_TRUCK_STOP & st->facilities) != FACIL_TRUCK_STOP) continue;
 				// Is it the same city as we are in now?
 				if (st->town != i->town) continue;
 				// When was this station build?
@@ -338,32 +337,32 @@
 
 
 // This functions tries to locate a good route
-static void AiNew_State_LocateRoute(Player *p)
+static void AiNew_State_LocateRoute(Company *c)
 {
-	assert(_players_ainew[p->index].state == AI_STATE_LOCATE_ROUTE);
+	assert(_companies_ainew[c->index].state == AI_STATE_LOCATE_ROUTE);
 	// For now, we only support PASSENGERS, CITY and BUSSES
 
 	// We don't have a route yet
-	if (_players_ainew[p->index].cargo == AI_NEED_CARGO) {
-		_players_ainew[p->index].new_cost = 0; // No cost yet
-		_players_ainew[p->index].temp = -1;
+	if (_companies_ainew[c->index].cargo == AI_NEED_CARGO) {
+		_companies_ainew[c->index].new_cost = 0; // No cost yet
+		_companies_ainew[c->index].temp = -1;
 		// Reset the counter
-		_players_ainew[p->index].counter = 0;
+		_companies_ainew[c->index].counter = 0;
 
-		_players_ainew[p->index].from_ic = -1;
-		_players_ainew[p->index].to_ic = -1;
-		if (_players_ainew[p->index].tbt == AI_BUS) {
+		_companies_ainew[c->index].from_ic = -1;
+		_companies_ainew[c->index].to_ic = -1;
+		if (_companies_ainew[c->index].tbt == AI_BUS) {
 			// For now we only have a passenger route
-			_players_ainew[p->index].cargo = CT_PASSENGERS;
+			_companies_ainew[c->index].cargo = CT_PASSENGERS;
 
 			// Find a route to cities
-			_players_ainew[p->index].from_type = AI_CITY;
-			_players_ainew[p->index].to_type = AI_CITY;
-		} else if (_players_ainew[p->index].tbt == AI_TRUCK) {
-			_players_ainew[p->index].cargo = AI_NO_CARGO;
+			_companies_ainew[c->index].from_type = AI_CITY;
+			_companies_ainew[c->index].to_type = AI_CITY;
+		} else if (_companies_ainew[c->index].tbt == AI_TRUCK) {
+			_companies_ainew[c->index].cargo = AI_NO_CARGO;
 
-			_players_ainew[p->index].from_type = AI_INDUSTRY;
-			_players_ainew[p->index].to_type = AI_INDUSTRY;
+			_companies_ainew[c->index].from_type = AI_INDUSTRY;
+			_companies_ainew[c->index].to_type = AI_INDUSTRY;
 		}
 
 		// Now we are doing initing, we wait one tick
@@ -371,63 +370,63 @@
 	}
 
 	// Increase the counter and abort if it is taking too long!
-	_players_ainew[p->index].counter++;
-	if (_players_ainew[p->index].counter > AI_LOCATE_ROUTE_MAX_COUNTER) {
+	_companies_ainew[c->index].counter++;
+	if (_companies_ainew[c->index].counter > AI_LOCATE_ROUTE_MAX_COUNTER) {
 		// Switch back to doing nothing!
-		_players_ainew[p->index].state = AI_STATE_NOTHING;
+		_companies_ainew[c->index].state = AI_STATE_NOTHING;
 		return;
 	}
 
 	// We are going to locate a city from where we are going to connect
-	if (_players_ainew[p->index].from_ic == -1) {
-		if (_players_ainew[p->index].temp == -1) {
+	if (_companies_ainew[c->index].from_ic == -1) {
+		if (_companies_ainew[c->index].temp == -1) {
 			// First, we pick a random spot to search from
-			if (_players_ainew[p->index].from_type == AI_CITY) {
-				_players_ainew[p->index].temp = AI_RandomRange(GetMaxTownIndex() + 1);
+			if (_companies_ainew[c->index].from_type == AI_CITY) {
+				_companies_ainew[c->index].temp = AI_RandomRange(GetMaxTownIndex() + 1);
 			} else {
-				_players_ainew[p->index].temp = AI_RandomRange(GetMaxIndustryIndex() + 1);
+				_companies_ainew[c->index].temp = AI_RandomRange(GetMaxIndustryIndex() + 1);
 			}
 		}
 
-		if (!AiNew_Check_City_or_Industry(p, _players_ainew[p->index].temp, _players_ainew[p->index].from_type)) {
+		if (!AiNew_Check_City_or_Industry(c, _companies_ainew[c->index].temp, _companies_ainew[c->index].from_type)) {
 			// It was not a valid city
 			//  increase the temp with one, and return. We will come back later here
 			//  to try again
-			_players_ainew[p->index].temp++;
-			if (_players_ainew[p->index].from_type == AI_CITY) {
-				if (_players_ainew[p->index].temp > GetMaxTownIndex()) _players_ainew[p->index].temp = 0;
+			_companies_ainew[c->index].temp++;
+			if (_companies_ainew[c->index].from_type == AI_CITY) {
+				if (_companies_ainew[c->index].temp > GetMaxTownIndex()) _companies_ainew[c->index].temp = 0;
 			} else {
-				if (_players_ainew[p->index].temp > GetMaxIndustryIndex()) _players_ainew[p->index].temp = 0;
+				if (_companies_ainew[c->index].temp > GetMaxIndustryIndex()) _companies_ainew[c->index].temp = 0;
 			}
 
 			// Don't do an attempt if we are trying the same id as the last time...
-			if (_players_ainew[p->index].last_id == _players_ainew[p->index].temp) return;
-			_players_ainew[p->index].last_id = _players_ainew[p->index].temp;
+			if (_companies_ainew[c->index].last_id == _companies_ainew[c->index].temp) return;
+			_companies_ainew[c->index].last_id = _companies_ainew[c->index].temp;
 
 			return;
 		}
 
 		// We found a good city/industry, save the data of it
-		_players_ainew[p->index].from_ic = _players_ainew[p->index].temp;
+		_companies_ainew[c->index].from_ic = _companies_ainew[c->index].temp;
 
 		// Start the next tick with finding a to-city
-		_players_ainew[p->index].temp = -1;
+		_companies_ainew[c->index].temp = -1;
 		return;
 	}
 
 	// Find a to-city
-	if (_players_ainew[p->index].temp == -1) {
+	if (_companies_ainew[c->index].temp == -1) {
 		// First, we pick a random spot to search to
-		if (_players_ainew[p->index].to_type == AI_CITY) {
-			_players_ainew[p->index].temp = AI_RandomRange(GetMaxTownIndex() + 1);
+		if (_companies_ainew[c->index].to_type == AI_CITY) {
+			_companies_ainew[c->index].temp = AI_RandomRange(GetMaxTownIndex() + 1);
 		} else {
-			_players_ainew[p->index].temp = AI_RandomRange(GetMaxIndustryIndex() + 1);
+			_companies_ainew[c->index].temp = AI_RandomRange(GetMaxIndustryIndex() + 1);
 		}
 	}
 
 	// The same city is not allowed
 	// Also check if the city is valid
-	if (_players_ainew[p->index].temp != _players_ainew[p->index].from_ic && AiNew_Check_City_or_Industry(p, _players_ainew[p->index].temp, _players_ainew[p->index].to_type)) {
+	if (_companies_ainew[c->index].temp != _companies_ainew[c->index].from_ic && AiNew_Check_City_or_Industry(c, _companies_ainew[c->index].temp, _companies_ainew[c->index].to_type)) {
 		// Maybe it is valid..
 
 		/* We need to know if they are not to far apart from eachother..
@@ -435,9 +434,9 @@
 		 * route is.
 		 */
 
-		if (_players_ainew[p->index].from_type == AI_CITY && _players_ainew[p->index].tbt == AI_BUS) {
-			const Town* town_from = GetTown(_players_ainew[p->index].from_ic);
-			const Town* town_temp = GetTown(_players_ainew[p->index].temp);
+		if (_companies_ainew[c->index].from_type == AI_CITY && _companies_ainew[c->index].tbt == AI_BUS) {
+			const Town* town_from = GetTown(_companies_ainew[c->index].from_ic);
+			const Town* town_temp = GetTown(_companies_ainew[c->index].temp);
 			uint distance = DistanceManhattan(town_from->xy, town_temp->xy);
 			int max_cargo;
 
@@ -448,23 +447,23 @@
 			// If it is more than the distance, we allow it
 			if (distance <= max_cargo * AI_LOCATEROUTE_BUS_CARGO_DISTANCE) {
 				// We found a good city/industry, save the data of it
-				_players_ainew[p->index].to_ic = _players_ainew[p->index].temp;
-				_players_ainew[p->index].state = AI_STATE_FIND_STATION;
+				_companies_ainew[c->index].to_ic = _companies_ainew[c->index].temp;
+				_companies_ainew[c->index].state = AI_STATE_FIND_STATION;
 
 				DEBUG(ai, 1, "[LocateRoute] found bus-route of %d tiles long (from %d to %d)",
 					distance,
-					_players_ainew[p->index].from_ic,
-					_players_ainew[p->index].temp
+					_companies_ainew[c->index].from_ic,
+					_companies_ainew[c->index].temp
 				);
 
-				_players_ainew[p->index].from_tile = 0;
-				_players_ainew[p->index].to_tile = 0;
+				_companies_ainew[c->index].from_tile = 0;
+				_companies_ainew[c->index].to_tile = 0;
 
 				return;
 			}
-		} else if (_players_ainew[p->index].tbt == AI_TRUCK) {
-			const Industry* ind_from = GetIndustry(_players_ainew[p->index].from_ic);
-			const Industry* ind_temp = GetIndustry(_players_ainew[p->index].temp);
+		} else if (_companies_ainew[c->index].tbt == AI_TRUCK) {
+			const Industry* ind_from = GetIndustry(_companies_ainew[c->index].from_ic);
+			const Industry* ind_temp = GetIndustry(_companies_ainew[c->index].temp);
 			bool found = false;
 			int max_cargo = 0;
 			uint i;
@@ -478,8 +477,8 @@
 						// Found a compatible industry
 						max_cargo = ind_from->last_month_production[0] - ind_from->last_month_transported[0];
 						found = true;
-						_players_ainew[p->index].from_deliver = true;
-						_players_ainew[p->index].to_deliver = false;
+						_companies_ainew[c->index].from_deliver = true;
+						_companies_ainew[c->index].to_deliver = false;
 						break;
 					}
 				}
@@ -492,8 +491,8 @@
 						// Found a compatbiel industry
 						found = true;
 						max_cargo = ind_temp->last_month_production[0] - ind_temp->last_month_transported[0];
-						_players_ainew[p->index].from_deliver = false;
-						_players_ainew[p->index].to_deliver = true;
+						_companies_ainew[c->index].from_deliver = false;
+						_companies_ainew[c->index].to_deliver = true;
 						break;
 					}
 				}
@@ -505,22 +504,22 @@
 
 				if (distance > AI_LOCATEROUTE_TRUCK_MIN_DISTANCE &&
 						distance <= max_cargo * AI_LOCATEROUTE_TRUCK_CARGO_DISTANCE) {
-					_players_ainew[p->index].to_ic = _players_ainew[p->index].temp;
-					if (_players_ainew[p->index].from_deliver) {
-						_players_ainew[p->index].cargo = ind_from->produced_cargo[0];
+					_companies_ainew[c->index].to_ic = _companies_ainew[c->index].temp;
+					if (_companies_ainew[c->index].from_deliver) {
+						_companies_ainew[c->index].cargo = ind_from->produced_cargo[0];
 					} else {
-						_players_ainew[p->index].cargo = ind_temp->produced_cargo[0];
+						_companies_ainew[c->index].cargo = ind_temp->produced_cargo[0];
 					}
-					_players_ainew[p->index].state = AI_STATE_FIND_STATION;
+					_companies_ainew[c->index].state = AI_STATE_FIND_STATION;
 
 					DEBUG(ai, 1, "[LocateRoute] found truck-route of %d tiles long (from %d to %d)",
 						distance,
-						_players_ainew[p->index].from_ic,
-						_players_ainew[p->index].temp
+						_companies_ainew[c->index].from_ic,
+						_companies_ainew[c->index].temp
 					);
 
-					_players_ainew[p->index].from_tile = 0;
-					_players_ainew[p->index].to_tile = 0;
+					_companies_ainew[c->index].from_tile = 0;
+					_companies_ainew[c->index].to_tile = 0;
 
 					return;
 				}
@@ -531,29 +530,29 @@
 	// It was not a valid city
 	//  increase the temp with one, and return. We will come back later here
 	//  to try again
-	_players_ainew[p->index].temp++;
-	if (_players_ainew[p->index].to_type == AI_CITY) {
-		if (_players_ainew[p->index].temp > GetMaxTownIndex()) _players_ainew[p->index].temp = 0;
+	_companies_ainew[c->index].temp++;
+	if (_companies_ainew[c->index].to_type == AI_CITY) {
+		if (_companies_ainew[c->index].temp > GetMaxTownIndex()) _companies_ainew[c->index].temp = 0;
 	} else {
-		if (_players_ainew[p->index].temp > GetMaxIndustryIndex()) _players_ainew[p->index].temp = 0;
+		if (_companies_ainew[c->index].temp > GetMaxIndustryIndex()) _companies_ainew[c->index].temp = 0;
 	}
 
 	// Don't do an attempt if we are trying the same id as the last time...
-	if (_players_ainew[p->index].last_id == _players_ainew[p->index].temp) return;
-	_players_ainew[p->index].last_id = _players_ainew[p->index].temp;
+	if (_companies_ainew[c->index].last_id == _companies_ainew[c->index].temp) return;
+	_companies_ainew[c->index].last_id = _companies_ainew[c->index].temp;
 }
 
 
 // Check if there are not more than a certain amount of vehicles pointed to a certain
 //  station. This to prevent 10 busses going to one station, which gives... problems ;)
-static bool AiNew_CheckVehicleStation(Player *p, Station *st)
+static bool AiNew_CheckVehicleStation(Company *c, Station *st)
 {
 	int count = 0;
 	Vehicle *v;
 
 	// Also check if we don't have already a lot of busses to this city...
 	FOR_ALL_VEHICLES(v) {
-		if (v->owner == _current_player) {
+		if (v->owner == _current_company) {
 			const Order *order;
 
 			FOR_VEHICLE_ORDERS(v, order) {
@@ -570,7 +569,7 @@
 }
 
 // This function finds a good spot for a station
-static void AiNew_State_FindStation(Player *p)
+static void AiNew_State_FindStation(Company *c)
 {
 	TileIndex tile;
 	Station *st;
@@ -579,50 +578,50 @@
 	TileIndex new_tile = 0;
 	DiagDirection direction = DIAGDIR_NE;
 	Town *town = NULL;
-	assert(_players_ainew[p->index].state == AI_STATE_FIND_STATION);
+	assert(_companies_ainew[c->index].state == AI_STATE_FIND_STATION);
 
-	if (_players_ainew[p->index].from_tile == 0) {
+	if (_companies_ainew[c->index].from_tile == 0) {
 		// First we scan for a station in the from-city
-		if (_players_ainew[p->index].from_type == AI_CITY) {
-			town = GetTown(_players_ainew[p->index].from_ic);
+		if (_companies_ainew[c->index].from_type == AI_CITY) {
+			town = GetTown(_companies_ainew[c->index].from_ic);
 			tile = town->xy;
 		} else {
-			tile = GetIndustry(_players_ainew[p->index].from_ic)->xy;
+			tile = GetIndustry(_companies_ainew[c->index].from_ic)->xy;
 		}
-	} else if (_players_ainew[p->index].to_tile == 0) {
+	} else if (_companies_ainew[c->index].to_tile == 0) {
 		// Second we scan for a station in the to-city
-		if (_players_ainew[p->index].to_type == AI_CITY) {
-			town = GetTown(_players_ainew[p->index].to_ic);
+		if (_companies_ainew[c->index].to_type == AI_CITY) {
+			town = GetTown(_companies_ainew[c->index].to_ic);
 			tile = town->xy;
 		} else {
-			tile = GetIndustry(_players_ainew[p->index].to_ic)->xy;
+			tile = GetIndustry(_companies_ainew[c->index].to_ic)->xy;
 		}
 	} else {
 		// Unsupported request
 		// Go to FIND_PATH
-		_players_ainew[p->index].temp = -1;
-		_players_ainew[p->index].state = AI_STATE_FIND_PATH;
+		_companies_ainew[c->index].temp = -1;
+		_companies_ainew[c->index].state = AI_STATE_FIND_PATH;
 		return;
 	}
 
 	// First, we are going to look at the stations that already exist inside the city
 	//  If there is enough cargo left in the station, we take that station
 	//  If that is not possible, and there are more than 2 stations in the city, abort
-	i = AiNew_PickVehicle(p);
+	i = AiNew_PickVehicle(c);
 	// Euhmz, this should not happen _EVER_
 	// Quit finding a route...
 	if (i == INVALID_ENGINE) {
-		_players_ainew[p->index].state = AI_STATE_NOTHING;
+		_companies_ainew[c->index].state = AI_STATE_NOTHING;
 		return;
 	}
 
 	FOR_ALL_STATIONS(st) {
-		if (st->owner == _current_player) {
-			if (_players_ainew[p->index].tbt == AI_BUS && (FACIL_BUS_STOP & st->facilities) == FACIL_BUS_STOP) {
+		if (st->owner == _current_company) {
+			if (_companies_ainew[c->index].tbt == AI_BUS && (FACIL_BUS_STOP & st->facilities) == FACIL_BUS_STOP) {
 				if (st->town == town) {
 					// Check how much cargo there is left in the station
-					if ((int)st->goods[_players_ainew[p->index].cargo].cargo.Count() > RoadVehInfo(i)->capacity * AI_STATION_REUSE_MULTIPLER) {
-						if (AiNew_CheckVehicleStation(p, st)) {
+					if ((int)st->goods[_companies_ainew[c->index].cargo].cargo.Count() > RoadVehInfo(i)->capacity * AI_STATION_REUSE_MULTIPLER) {
+						if (AiNew_CheckVehicleStation(c, st)) {
 							// We did found a station that was good enough!
 							new_tile = st->xy;
 							direction = GetRoadStopDir(st->xy);
@@ -639,11 +638,11 @@
 	// No more than 2 stations allowed in a city
 	//  This is because only the best 2 stations of one cargo do get any cargo
 	if (count > 2) {
-		_players_ainew[p->index].state = AI_STATE_NOTHING;
+		_companies_ainew[c->index].state = AI_STATE_NOTHING;
 		return;
 	}
 
-	if (new_tile == 0 && _players_ainew[p->index].tbt == AI_BUS) {
+	if (new_tile == 0 && _companies_ainew[c->index].tbt == AI_BUS) {
 		uint x, y, i = 0;
 		CommandCost r;
 		uint best;
@@ -663,20 +662,20 @@
 					// XXX - Get the catchment area
 					GetAcceptanceAroundTiles(accepts, new_tile, 1, 1, 4);
 					// >> 3 == 0 means no cargo
-					if (accepts[_players_ainew[p->index].cargo] >> 3 == 0) continue;
+					if (accepts[_companies_ainew[c->index].cargo] >> 3 == 0) continue;
 					// See if we can build the station
-					r = AiNew_Build_Station(p, _players_ainew[p->index].tbt, new_tile, 0, 0, 0, DC_QUERY_COST);
+					r = AiNew_Build_Station(c, _companies_ainew[c->index].tbt, new_tile, 0, 0, 0, DC_QUERY_COST);
 					if (CmdFailed(r)) continue;
 					// We can build it, so add it to found_spot
 					found_spot[i] = new_tile;
-					found_best[i++] = accepts[_players_ainew[p->index].cargo];
+					found_best[i++] = accepts[_companies_ainew[c->index].cargo];
 				}
 			}
 		}
 
 		// If i is still zero, we did not find anything
 		if (i == 0) {
-			_players_ainew[p->index].state = AI_STATE_NOTHING;
+			_companies_ainew[c->index].state = AI_STATE_NOTHING;
 			return;
 		}
 
@@ -693,11 +692,11 @@
 		}
 
 		// See how much it is going to cost us...
-		r = AiNew_Build_Station(p, _players_ainew[p->index].tbt, new_tile, 0, 0, 0, DC_QUERY_COST);
-		_players_ainew[p->index].new_cost += r.GetCost();
+		r = AiNew_Build_Station(c, _companies_ainew[c->index].tbt, new_tile, 0, 0, 0, DC_QUERY_COST);
+		_companies_ainew[c->index].new_cost += r.GetCost();
 
 		direction = (DiagDirection)AI_PATHFINDER_NO_DIRECTION;
-	} else if (new_tile == 0 && _players_ainew[p->index].tbt == AI_TRUCK) {
+	} else if (new_tile == 0 && _companies_ainew[c->index].tbt == AI_TRUCK) {
 		// Truck station locater works differently.. a station can be on any place
 		//  as long as it is in range. So we give back code AI_STATION_RANGE
 		//  so the pathfinder routine can work it out!
@@ -705,76 +704,76 @@
 		direction = (DiagDirection)AI_PATHFINDER_NO_DIRECTION;
 	}
 
-	if (_players_ainew[p->index].from_tile == 0) {
-		_players_ainew[p->index].from_tile = new_tile;
-		_players_ainew[p->index].from_direction = direction;
+	if (_companies_ainew[c->index].from_tile == 0) {
+		_companies_ainew[c->index].from_tile = new_tile;
+		_companies_ainew[c->index].from_direction = direction;
 		// Now we found thisone, go in for to_tile
 		return;
-	} else if (_players_ainew[p->index].to_tile == 0) {
-		_players_ainew[p->index].to_tile = new_tile;
-		_players_ainew[p->index].to_direction = direction;
+	} else if (_companies_ainew[c->index].to_tile == 0) {
+		_companies_ainew[c->index].to_tile = new_tile;
+		_companies_ainew[c->index].to_direction = direction;
 		// K, done placing stations!
-		_players_ainew[p->index].temp = -1;
-		_players_ainew[p->index].state = AI_STATE_FIND_PATH;
+		_companies_ainew[c->index].temp = -1;
+		_companies_ainew[c->index].state = AI_STATE_FIND_PATH;
 		return;
 	}
 }
 
 
 // We try to find a path between 2 points
-static void AiNew_State_FindPath(Player *p)
+static void AiNew_State_FindPath(Company *c)
 {
 	int r;
-	assert(_players_ainew[p->index].state == AI_STATE_FIND_PATH);
+	assert(_companies_ainew[c->index].state == AI_STATE_FIND_PATH);
 
 	// First time, init some data
-	if (_players_ainew[p->index].temp == -1) {
+	if (_companies_ainew[c->index].temp == -1) {
 		// Init path_info
-		if (_players_ainew[p->index].from_tile == AI_STATION_RANGE) {
-			const Industry* i = GetIndustry(_players_ainew[p->index].from_ic);
+		if (_companies_ainew[c->index].from_tile == AI_STATION_RANGE) {
+			const Industry* i = GetIndustry(_companies_ainew[c->index].from_ic);
 
 			// For truck routes we take a range around the industry
-			_players_ainew[p->index].path_info.start_tile_tl = i->xy - TileDiffXY(1, 1);
-			_players_ainew[p->index].path_info.start_tile_br = i->xy + TileDiffXY(i->width + 1, i->height + 1);
-			_players_ainew[p->index].path_info.start_direction = _players_ainew[p->index].from_direction;
+			_companies_ainew[c->index].path_info.start_tile_tl = i->xy - TileDiffXY(1, 1);
+			_companies_ainew[c->index].path_info.start_tile_br = i->xy + TileDiffXY(i->width + 1, i->height + 1);
+			_companies_ainew[c->index].path_info.start_direction = _companies_ainew[c->index].from_direction;
 		} else {
-			_players_ainew[p->index].path_info.start_tile_tl = _players_ainew[p->index].from_tile;
-			_players_ainew[p->index].path_info.start_tile_br = _players_ainew[p->index].from_tile;
-			_players_ainew[p->index].path_info.start_direction = _players_ainew[p->index].from_direction;
+			_companies_ainew[c->index].path_info.start_tile_tl = _companies_ainew[c->index].from_tile;
+			_companies_ainew[c->index].path_info.start_tile_br = _companies_ainew[c->index].from_tile;
+			_companies_ainew[c->index].path_info.start_direction = _companies_ainew[c->index].from_direction;
 		}
 
-		if (_players_ainew[p->index].to_tile == AI_STATION_RANGE) {
-			const Industry* i = GetIndustry(_players_ainew[p->index].to_ic);
+		if (_companies_ainew[c->index].to_tile == AI_STATION_RANGE) {
+			const Industry* i = GetIndustry(_companies_ainew[c->index].to_ic);
 
-			_players_ainew[p->index].path_info.end_tile_tl = i->xy - TileDiffXY(1, 1);
-			_players_ainew[p->index].path_info.end_tile_br = i->xy + TileDiffXY(i->width + 1, i->height + 1);
-			_players_ainew[p->index].path_info.end_direction = _players_ainew[p->index].to_direction;
+			_companies_ainew[c->index].path_info.end_tile_tl = i->xy - TileDiffXY(1, 1);
+			_companies_ainew[c->index].path_info.end_tile_br = i->xy + TileDiffXY(i->width + 1, i->height + 1);
+			_companies_ainew[c->index].path_info.end_direction = _companies_ainew[c->index].to_direction;
 		} else {
-			_players_ainew[p->index].path_info.end_tile_tl = _players_ainew[p->index].to_tile;
-			_players_ainew[p->index].path_info.end_tile_br = _players_ainew[p->index].to_tile;
-			_players_ainew[p->index].path_info.end_direction = _players_ainew[p->index].to_direction;
+			_companies_ainew[c->index].path_info.end_tile_tl = _companies_ainew[c->index].to_tile;
+			_companies_ainew[c->index].path_info.end_tile_br = _companies_ainew[c->index].to_tile;
+			_companies_ainew[c->index].path_info.end_direction = _companies_ainew[c->index].to_direction;
 		}
 
-		_players_ainew[p->index].path_info.rail_or_road = (_players_ainew[p->index].tbt == AI_TRAIN);
+		_companies_ainew[c->index].path_info.rail_or_road = (_companies_ainew[c->index].tbt == AI_TRAIN);
 
 		// First, clean the pathfinder with our new begin and endpoints
-		clean_AyStar_AiPathFinder(_players_ainew[p->index].pathfinder, &_players_ainew[p->index].path_info);
+		clean_AyStar_AiPathFinder(_companies_ainew[c->index].pathfinder, &_companies_ainew[c->index].path_info);
 
-		_players_ainew[p->index].temp = 0;
+		_companies_ainew[c->index].temp = 0;
 	}
 
 	// Start the pathfinder
-	r = _players_ainew[p->index].pathfinder->main(_players_ainew[p->index].pathfinder);
+	r = _companies_ainew[c->index].pathfinder->main(_companies_ainew[c->index].pathfinder);
 	switch (r) {
 		case AYSTAR_NO_PATH:
 			DEBUG(ai, 1, "No route found by pathfinder");
 			// Start all over again
-			_players_ainew[p->index].state = AI_STATE_NOTHING;
+			_companies_ainew[c->index].state = AI_STATE_NOTHING;
 			break;
 
 		case AYSTAR_FOUND_END_NODE: // We found the end-point
-			_players_ainew[p->index].temp = -1;
-			_players_ainew[p->index].state = AI_STATE_FIND_DEPOT;
+			_companies_ainew[c->index].temp = -1;
+			_companies_ainew[c->index].state = AI_STATE_FIND_DEPOT;
 			break;
 
 		// In any other case, we are still busy finding the route
@@ -784,7 +783,7 @@
 
 
 // This function tries to locate a good place for a depot!
-static void AiNew_State_FindDepot(Player *p)
+static void AiNew_State_FindDepot(Company *c)
 {
 	// To place the depot, we walk through the route, and if we find a lovely spot (MP_CLEAR, MP_TREES), we place it there..
 	// Simple, easy, works!
@@ -795,21 +794,21 @@
 	CommandCost r;
 	DiagDirection j;
 	TileIndex tile;
-	assert(_players_ainew[p->index].state == AI_STATE_FIND_DEPOT);
+	assert(_companies_ainew[c->index].state == AI_STATE_FIND_DEPOT);
 
-	_players_ainew[p->index].depot_tile = 0;
+	_companies_ainew[c->index].depot_tile = 0;
 
-	for (i = 2; i < _players_ainew[p->index].path_info.route_length - 2; i++) {
-		tile = _players_ainew[p->index].path_info.route[i];
+	for (i = 2; i < _companies_ainew[c->index].path_info.route_length - 2; i++) {
+		tile = _companies_ainew[c->index].path_info.route[i];
 		for (j = DIAGDIR_BEGIN; j < DIAGDIR_END; j++) {
 			TileIndex t = tile + TileOffsByDiagDir(j);
 
 			if (IsRoadDepotTile(t) &&
-					IsTileOwner(t, _current_player) &&
+					IsTileOwner(t, _current_company) &&
 					GetRoadDepotDirection(t) == ReverseDiagDir(j)) {
-				_players_ainew[p->index].depot_tile = t;
-				_players_ainew[p->index].depot_direction = ReverseDiagDir(j);
-				_players_ainew[p->index].state = AI_STATE_VERIFY_ROUTE;
+				_companies_ainew[c->index].depot_tile = t;
+				_companies_ainew[c->index].depot_direction = ReverseDiagDir(j);
+				_companies_ainew[c->index].state = AI_STATE_VERIFY_ROUTE;
 				return;
 			}
 		}
@@ -817,19 +816,19 @@
 
 	// This routine let depot finding start in the middle, and work his way to the stations
 	// It makes depot placing nicer :)
-	i = _players_ainew[p->index].path_info.route_length / 2;
+	i = _companies_ainew[c->index].path_info.route_length / 2;
 	g = 1;
-	while (i > 1 && i < _players_ainew[p->index].path_info.route_length - 2) {
+	while (i > 1 && i < _companies_ainew[c->index].path_info.route_length - 2) {
 		i += g;
 		g *= -1;
 		(g < 0 ? g-- : g++);
 
-		if (_players_ainew[p->index].path_info.route_extra[i] != 0 || _players_ainew[p->index].path_info.route_extra[i + 1] != 0) {
+		if (_companies_ainew[c->index].path_info.route_extra[i] != 0 || _companies_ainew[c->index].path_info.route_extra[i + 1] != 0) {
 			// Bridge or tunnel.. we can't place a depot there
 			continue;
 		}
 
-		tile = _players_ainew[p->index].path_info.route[i];
+		tile = _companies_ainew[c->index].path_info.route[i];
 
 		for (j = DIAGDIR_BEGIN; j < DIAGDIR_END; j++) {
 			TileIndex t = tile + TileOffsByDiagDir(j);
@@ -837,32 +836,32 @@
 			// It may not be placed on the road/rail itself
 			// And because it is not build yet, we can't see it on the tile..
 			// So check the surrounding tiles :)
-			if (t == _players_ainew[p->index].path_info.route[i - 1] ||
-					t == _players_ainew[p->index].path_info.route[i + 1]) {
+			if (t == _companies_ainew[c->index].path_info.route[i - 1] ||
+					t == _companies_ainew[c->index].path_info.route[i + 1]) {
 				continue;
 			}
 			// Not around a bridge?
-			if (_players_ainew[p->index].path_info.route_extra[i] != 0) continue;
+			if (_companies_ainew[c->index].path_info.route_extra[i] != 0) continue;
 			if (IsTileType(tile, MP_TUNNELBRIDGE)) continue;
 			// Is the terrain clear?
 			if (IsTileType(t, MP_CLEAR) || IsTileType(t, MP_TREES)) {
 				// If the current tile is on a slope then we do not allow this
 				if (GetTileSlope(tile, NULL) != SLOPE_FLAT) continue;
 				// Check if everything went okay..
-				r = AiNew_Build_Depot(p, t, ReverseDiagDir(j), 0);
+				r = AiNew_Build_Depot(c, t, ReverseDiagDir(j), 0);
 				if (CmdFailed(r)) continue;
 				// Found a spot!
-				_players_ainew[p->index].new_cost += r.GetCost();
-				_players_ainew[p->index].depot_tile = t;
-				_players_ainew[p->index].depot_direction = ReverseDiagDir(j); // Reverse direction
-				_players_ainew[p->index].state = AI_STATE_VERIFY_ROUTE;
+				_companies_ainew[c->index].new_cost += r.GetCost();
+				_companies_ainew[c->index].depot_tile = t;
+				_companies_ainew[c->index].depot_direction = ReverseDiagDir(j); // Reverse direction
+				_companies_ainew[c->index].state = AI_STATE_VERIFY_ROUTE;
 				return;
 			}
 		}
 	}
 
 	// Failed to find a depot?
-	_players_ainew[p->index].state = AI_STATE_NOTHING;
+	_companies_ainew[c->index].state = AI_STATE_NOTHING;
 }
 
 
@@ -871,17 +870,17 @@
 // It works pretty simple: get the length, see how much we move around
 //  and hussle that, and you know how many vehicles there are needed.
 // It returns the cost for the vehicles
-static int AiNew_HowManyVehicles(Player *p)
+static int AiNew_HowManyVehicles(Company *c)
 {
-	if (_players_ainew[p->index].tbt == AI_BUS) {
+	if (_companies_ainew[c->index].tbt == AI_BUS) {
 		// For bus-routes we look at the time before we are back in the station
 		EngineID i;
 		int length, tiles_a_day;
 		int amount;
-		i = AiNew_PickVehicle(p);
+		i = AiNew_PickVehicle(c);
 		if (i == INVALID_ENGINE) return 0;
 		// Passenger run.. how long is the route?
-		length = _players_ainew[p->index].path_info.route_length;
+		length = _companies_ainew[c->index].path_info.route_length;
 		// Calculating tiles a day a vehicle moves is not easy.. this is how it must be done!
 		tiles_a_day = RoadVehInfo(i)->max_speed * DAY_TICKS / 256 / 16;
 		if (tiles_a_day == 0) tiles_a_day = 1;
@@ -890,22 +889,22 @@
 		amount = length * 2 * 2 / tiles_a_day / 30;
 		if (amount == 0) amount = 1;
 		return amount;
-	} else if (_players_ainew[p->index].tbt == AI_TRUCK) {
+	} else if (_companies_ainew[c->index].tbt == AI_TRUCK) {
 		// For truck-routes we look at the cargo
 		EngineID i;
 		int length, amount, tiles_a_day;
 		int max_cargo;
-		i = AiNew_PickVehicle(p);
+		i = AiNew_PickVehicle(c);
 		if (i == INVALID_ENGINE) return 0;
 		// Passenger run.. how long is the route?
-		length = _players_ainew[p->index].path_info.route_length;
+		length = _companies_ainew[c->index].path_info.route_length;
 		// Calculating tiles a day a vehicle moves is not easy.. this is how it must be done!
 		tiles_a_day = RoadVehInfo(i)->max_speed * DAY_TICKS / 256 / 16;
 		if (tiles_a_day == 0) tiles_a_day = 1;
-		if (_players_ainew[p->index].from_deliver) {
-			max_cargo = GetIndustry(_players_ainew[p->index].from_ic)->last_month_production[0];
+		if (_companies_ainew[c->index].from_deliver) {
+			max_cargo = GetIndustry(_companies_ainew[c->index].from_ic)->last_month_production[0];
 		} else {
-			max_cargo = GetIndustry(_players_ainew[p->index].to_ic)->last_month_production[0];
+			max_cargo = GetIndustry(_companies_ainew[c->index].to_ic)->last_month_production[0];
 		}
 
 		// This is because moving 60% is more than we can dream of!
@@ -928,116 +927,116 @@
 //   - If the route went okay
 //   - Calculates the amount of money needed to build the route
 //   - Calculates how much vehicles needed for the route
-static void AiNew_State_VerifyRoute(Player *p)
+static void AiNew_State_VerifyRoute(Company *c)
 {
 	int res, i;
-	assert(_players_ainew[p->index].state == AI_STATE_VERIFY_ROUTE);
+	assert(_companies_ainew[c->index].state == AI_STATE_VERIFY_ROUTE);
 
 	// Let's calculate the cost of the path..
 	//  new_cost already contains the cost of the stations
-	_players_ainew[p->index].path_info.position = -1;
+	_companies_ainew[c->index].path_info.position = -1;
 
 	do {
-		_players_ainew[p->index].path_info.position++;
-		_players_ainew[p->index].new_cost += AiNew_Build_RoutePart(p, &_players_ainew[p->index].path_info, DC_QUERY_COST).GetCost();
-	} while (_players_ainew[p->index].path_info.position != -2);
+		_companies_ainew[c->index].path_info.position++;
+		_companies_ainew[c->index].new_cost += AiNew_Build_RoutePart(c, &_companies_ainew[c->index].path_info, DC_QUERY_COST).GetCost();
+	} while (_companies_ainew[c->index].path_info.position != -2);
 
 	// Now we know the price of build station + path. Now check how many vehicles
 	//  we need and what the price for that will be
-	res = AiNew_HowManyVehicles(p);
+	res = AiNew_HowManyVehicles(c);
 	// If res == 0, no vehicle was found, or an other problem did occour
 	if (res == 0) {
-		_players_ainew[p->index].state = AI_STATE_NOTHING;
+		_companies_ainew[c->index].state = AI_STATE_NOTHING;
 		return;
 	}
-	_players_ainew[p->index].amount_veh = res;
-	_players_ainew[p->index].cur_veh = 0;
+	_companies_ainew[c->index].amount_veh = res;
+	_companies_ainew[c->index].cur_veh = 0;
 
 	// Check how much it it going to cost us..
 	for (i = 0; i < res; i++) {
-		_players_ainew[p->index].new_cost += AiNew_Build_Vehicle(p, 0, DC_QUERY_COST).GetCost();
+		_companies_ainew[c->index].new_cost += AiNew_Build_Vehicle(c, 0, DC_QUERY_COST).GetCost();
 	}
 
 	// Now we know how much the route is going to cost us
 	//  Check if we have enough money for it!
-	if (_players_ainew[p->index].new_cost > p->player_money - AI_MINIMUM_MONEY) {
+	if (_companies_ainew[c->index].new_cost > c->money - AI_MINIMUM_MONEY) {
 		// Too bad..
-		DEBUG(ai, 1, "Insufficient funds to build route (%" OTTD_PRINTF64 "d)", (int64)_players_ainew[p->index].new_cost);
-		_players_ainew[p->index].state = AI_STATE_NOTHING;
+		DEBUG(ai, 1, "Insufficient funds to build route (%" OTTD_PRINTF64 "d)", (int64)_companies_ainew[c->index].new_cost);
+		_companies_ainew[c->index].state = AI_STATE_NOTHING;
 		return;
 	}
 
 	// Now we can build the route, check the direction of the stations!
-	if (_players_ainew[p->index].from_direction == AI_PATHFINDER_NO_DIRECTION) {
-		_players_ainew[p->index].from_direction = AiNew_GetDirection(_players_ainew[p->index].path_info.route[_players_ainew[p->index].path_info.route_length - 1], _players_ainew[p->index].path_info.route[_players_ainew[p->index].path_info.route_length - 2]);
-	}
-	if (_players_ainew[p->index].to_direction == AI_PATHFINDER_NO_DIRECTION) {
-		_players_ainew[p->index].to_direction = AiNew_GetDirection(_players_ainew[p->index].path_info.route[0], _players_ainew[p->index].path_info.route[1]);
+	if (_companies_ainew[c->index].from_direction == AI_PATHFINDER_NO_DIRECTION) {
+		_companies_ainew[c->index].from_direction = AiNew_GetDirection(_companies_ainew[c->index].path_info.route[_companies_ainew[c->index].path_info.route_length - 1], _companies_ainew[c->index].path_info.route[_companies_ainew[c->index].path_info.route_length - 2]);
 	}
-	if (_players_ainew[p->index].from_tile == AI_STATION_RANGE)
-		_players_ainew[p->index].from_tile = _players_ainew[p->index].path_info.route[_players_ainew[p->index].path_info.route_length - 1];
-	if (_players_ainew[p->index].to_tile == AI_STATION_RANGE)
-		_players_ainew[p->index].to_tile = _players_ainew[p->index].path_info.route[0];
+	if (_companies_ainew[c->index].to_direction == AI_PATHFINDER_NO_DIRECTION) {
+		_companies_ainew[c->index].to_direction = AiNew_GetDirection(_companies_ainew[c->index].path_info.route[0], _companies_ainew[c->index].path_info.route[1]);
+	}
+	if (_companies_ainew[c->index].from_tile == AI_STATION_RANGE)
+		_companies_ainew[c->index].from_tile = _companies_ainew[c->index].path_info.route[_companies_ainew[c->index].path_info.route_length - 1];
+	if (_companies_ainew[c->index].to_tile == AI_STATION_RANGE)
+		_companies_ainew[c->index].to_tile = _companies_ainew[c->index].path_info.route[0];
 
-	_players_ainew[p->index].state = AI_STATE_BUILD_STATION;
-	_players_ainew[p->index].temp = 0;
+	_companies_ainew[c->index].state = AI_STATE_BUILD_STATION;
+	_companies_ainew[c->index].temp = 0;
 
-	DEBUG(ai, 1, "The route is set and buildable, building 0x%X to 0x%X...", _players_ainew[p->index].from_tile, _players_ainew[p->index].to_tile);
+	DEBUG(ai, 1, "The route is set and buildable, building 0x%X to 0x%X...", _companies_ainew[c->index].from_tile, _companies_ainew[c->index].to_tile);
 }
 
 
 // Build the stations
-static void AiNew_State_BuildStation(Player *p)
+static void AiNew_State_BuildStation(Company *c)
 {
 	CommandCost res;
-	assert(_players_ainew[p->index].state == AI_STATE_BUILD_STATION);
-	if (_players_ainew[p->index].temp == 0) {
-		if (!IsTileType(_players_ainew[p->index].from_tile, MP_STATION))
-			res = AiNew_Build_Station(p, _players_ainew[p->index].tbt, _players_ainew[p->index].from_tile, 0, 0, _players_ainew[p->index].from_direction, DC_EXEC);
+	assert(_companies_ainew[c->index].state == AI_STATE_BUILD_STATION);
+	if (_companies_ainew[c->index].temp == 0) {
+		if (!IsTileType(_companies_ainew[c->index].from_tile, MP_STATION))
+			res = AiNew_Build_Station(c, _companies_ainew[c->index].tbt, _companies_ainew[c->index].from_tile, 0, 0, _companies_ainew[c->index].from_direction, DC_EXEC);
 	} else {
-		if (!IsTileType(_players_ainew[p->index].to_tile, MP_STATION))
-			res = AiNew_Build_Station(p, _players_ainew[p->index].tbt, _players_ainew[p->index].to_tile, 0, 0, _players_ainew[p->index].to_direction, DC_EXEC);
-		_players_ainew[p->index].state = AI_STATE_BUILD_PATH;
+		if (!IsTileType(_companies_ainew[c->index].to_tile, MP_STATION))
+			res = AiNew_Build_Station(c, _companies_ainew[c->index].tbt, _companies_ainew[c->index].to_tile, 0, 0, _companies_ainew[c->index].to_direction, DC_EXEC);
+		_companies_ainew[c->index].state = AI_STATE_BUILD_PATH;
 	}
 	if (CmdFailed(res)) {
-		DEBUG(ai, 0, "[BuildStation] station could not be built (0x%X)", _players_ainew[p->index].to_tile);
-		_players_ainew[p->index].state = AI_STATE_NOTHING;
+		DEBUG(ai, 0, "[BuildStation] station could not be built (0x%X)", _companies_ainew[c->index].to_tile);
+		_companies_ainew[c->index].state = AI_STATE_NOTHING;
 		// If the first station _was_ build, destroy it
-		if (_players_ainew[p->index].temp != 0)
-			AI_DoCommand(_players_ainew[p->index].from_tile, 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR);
+		if (_companies_ainew[c->index].temp != 0)
+			AI_DoCommand(_companies_ainew[c->index].from_tile, 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR);
 		return;
 	}
-	_players_ainew[p->index].temp++;
+	_companies_ainew[c->index].temp++;
 }
 
 
 // Build the path
-static void AiNew_State_BuildPath(Player *p)
+static void AiNew_State_BuildPath(Company *c)
 {
-	assert(_players_ainew[p->index].state == AI_STATE_BUILD_PATH);
-	// _players_ainew[p->index].temp is set to -1 when this function is called for the first time
-	if (_players_ainew[p->index].temp == -1) {
+	assert(_companies_ainew[c->index].state == AI_STATE_BUILD_PATH);
+	// _companies_ainew[c->index].temp is set to -1 when this function is called for the first time
+	if (_companies_ainew[c->index].temp == -1) {
 		DEBUG(ai, 1, "Starting to build new path");
 		// Init the counter
-		_players_ainew[p->index].counter = (4 - _settings_game.difficulty.competitor_speed) * AI_BUILDPATH_PAUSE + 1;
+		_companies_ainew[c->index].counter = (4 - _settings_game.difficulty.competitor_speed) * AI_BUILDPATH_PAUSE + 1;
 		// Set the position to the startingplace (-1 because in a minute we do ++)
-		_players_ainew[p->index].path_info.position = -1;
+		_companies_ainew[c->index].path_info.position = -1;
 		// And don't do this again
-		_players_ainew[p->index].temp = 0;
+		_companies_ainew[c->index].temp = 0;
 	}
 	// Building goes very fast on normal rate, so we are going to slow it down..
 	//  By let the counter count from AI_BUILDPATH_PAUSE to 0, we have a nice way :)
-	if (--_players_ainew[p->index].counter != 0) return;
-	_players_ainew[p->index].counter = (4 - _settings_game.difficulty.competitor_speed) * AI_BUILDPATH_PAUSE + 1;
+	if (--_companies_ainew[c->index].counter != 0) return;
+	_companies_ainew[c->index].counter = (4 - _settings_game.difficulty.competitor_speed) * AI_BUILDPATH_PAUSE + 1;
 
 	// Increase the building position
-	_players_ainew[p->index].path_info.position++;
+	_companies_ainew[c->index].path_info.position++;
 	// Build route
-	AiNew_Build_RoutePart(p, &_players_ainew[p->index].path_info, DC_EXEC);
-	if (_players_ainew[p->index].path_info.position == -2) {
+	AiNew_Build_RoutePart(c, &_companies_ainew[c->index].path_info, DC_EXEC);
+	if (_companies_ainew[c->index].path_info.position == -2) {
 		// This means we are done building!
 
-		if (_players_ainew[p->index].tbt == AI_TRUCK && !_settings_game.pf.roadveh_queue) {
+		if (_companies_ainew[c->index].tbt == AI_TRUCK && !_settings_game.pf.roadveh_queue) {
 			// If they not queue, they have to go up and down to try again at a station...
 			// We don't want that, so try building some road left or right of the station
 			DiagDirection dir1, dir2, dir3;
@@ -1045,15 +1044,15 @@
 			CommandCost ret;
 			for (int i = 0; i < 2; i++) {
 				if (i == 0) {
-					tile = _players_ainew[p->index].from_tile + TileOffsByDiagDir(_players_ainew[p->index].from_direction);
-					dir1 = ChangeDiagDir(_players_ainew[p->index].from_direction, DIAGDIRDIFF_90LEFT);
-					dir2 = ChangeDiagDir(_players_ainew[p->index].from_direction, DIAGDIRDIFF_90RIGHT);
-					dir3 = _players_ainew[p->index].from_direction;
+					tile = _companies_ainew[c->index].from_tile + TileOffsByDiagDir(_companies_ainew[c->index].from_direction);
+					dir1 = ChangeDiagDir(_companies_ainew[c->index].from_direction, DIAGDIRDIFF_90LEFT);
+					dir2 = ChangeDiagDir(_companies_ainew[c->index].from_direction, DIAGDIRDIFF_90RIGHT);
+					dir3 = _companies_ainew[c->index].from_direction;
 				} else {
-					tile = _players_ainew[p->index].to_tile + TileOffsByDiagDir(_players_ainew[p->index].to_direction);
-					dir1 = ChangeDiagDir(_players_ainew[p->index].to_direction, DIAGDIRDIFF_90LEFT);
-					dir2 = ChangeDiagDir(_players_ainew[p->index].to_direction, DIAGDIRDIFF_90RIGHT);
-					dir3 = _players_ainew[p->index].to_direction;
+					tile = _companies_ainew[c->index].to_tile + TileOffsByDiagDir(_companies_ainew[c->index].to_direction);
+					dir1 = ChangeDiagDir(_companies_ainew[c->index].to_direction, DIAGDIRDIFF_90LEFT);
+					dir2 = ChangeDiagDir(_companies_ainew[c->index].to_direction, DIAGDIRDIFF_90RIGHT);
+					dir3 = _companies_ainew[c->index].to_direction;
 				}
 
 				ret = AI_DoCommand(tile, DiagDirToRoadBits(ReverseDiagDir(dir1)), 0, DC_EXEC | DC_NO_WATER, CMD_BUILD_ROAD);
@@ -1094,152 +1093,152 @@
 			}
 		}
 
-		DEBUG(ai, 1, "Finished building path, cost: %" OTTD_PRINTF64 "d", (int64)_players_ainew[p->index].new_cost);
-		_players_ainew[p->index].state = AI_STATE_BUILD_DEPOT;
+		DEBUG(ai, 1, "Finished building path, cost: %" OTTD_PRINTF64 "d", (int64)_companies_ainew[c->index].new_cost);
+		_companies_ainew[c->index].state = AI_STATE_BUILD_DEPOT;
 	}
 }
 
 
 // Builds the depot
-static void AiNew_State_BuildDepot(Player *p)
+static void AiNew_State_BuildDepot(Company *c)
 {
 	CommandCost res;
-	assert(_players_ainew[p->index].state == AI_STATE_BUILD_DEPOT);
+	assert(_companies_ainew[c->index].state == AI_STATE_BUILD_DEPOT);
 
-	if (IsRoadDepotTile(_players_ainew[p->index].depot_tile)) {
-		if (IsTileOwner(_players_ainew[p->index].depot_tile, _current_player)) {
+	if (IsRoadDepotTile(_companies_ainew[c->index].depot_tile)) {
+		if (IsTileOwner(_companies_ainew[c->index].depot_tile, _current_company)) {
 			// The depot is already built
-			_players_ainew[p->index].state = AI_STATE_BUILD_VEHICLE;
+			_companies_ainew[c->index].state = AI_STATE_BUILD_VEHICLE;
 			return;
 		} else {
 			// There is a depot, but not of our team! :(
-			_players_ainew[p->index].state = AI_STATE_NOTHING;
+			_companies_ainew[c->index].state = AI_STATE_NOTHING;
 			return;
 		}
 	}
 
 	// There is a bus on the tile we want to build road on... idle till he is gone! (BAD PERSON! :p)
-	if (!EnsureNoVehicleOnGround(_players_ainew[p->index].depot_tile + TileOffsByDiagDir(_players_ainew[p->index].depot_direction)))
+	if (!EnsureNoVehicleOnGround(_companies_ainew[c->index].depot_tile + TileOffsByDiagDir(_companies_ainew[c->index].depot_direction)))
 		return;
 
-	res = AiNew_Build_Depot(p, _players_ainew[p->index].depot_tile, _players_ainew[p->index].depot_direction, DC_EXEC);
+	res = AiNew_Build_Depot(c, _companies_ainew[c->index].depot_tile, _companies_ainew[c->index].depot_direction, DC_EXEC);
 	if (CmdFailed(res)) {
-		DEBUG(ai, 0, "[BuildDepot] depot could not be built (0x%X)", _players_ainew[p->index].depot_tile);
-		_players_ainew[p->index].state = AI_STATE_NOTHING;
+		DEBUG(ai, 0, "[BuildDepot] depot could not be built (0x%X)", _companies_ainew[c->index].depot_tile);
+		_companies_ainew[c->index].state = AI_STATE_NOTHING;
 		return;
 	}
 
-	_players_ainew[p->index].state = AI_STATE_BUILD_VEHICLE;
-	_players_ainew[p->index].idle = 10;
-	_players_ainew[p->index].veh_main_id = INVALID_VEHICLE;
+	_companies_ainew[c->index].state = AI_STATE_BUILD_VEHICLE;
+	_companies_ainew[c->index].idle = 10;
+	_companies_ainew[c->index].veh_main_id = INVALID_VEHICLE;
 }
 
 
 // Build vehicles
-static void AiNew_State_BuildVehicle(Player *p)
+static void AiNew_State_BuildVehicle(Company *c)
 {
 	CommandCost res;
-	assert(_players_ainew[p->index].state == AI_STATE_BUILD_VEHICLE);
+	assert(_companies_ainew[c->index].state == AI_STATE_BUILD_VEHICLE);
 
 	// Check if we need to build a vehicle
-	if (_players_ainew[p->index].amount_veh == 0) {
+	if (_companies_ainew[c->index].amount_veh == 0) {
 		// Nope, we are done!
 		// This means: we are all done! The route is open.. go back to NOTHING
 		//  He will idle some time and it will all start over again.. :)
-		_players_ainew[p->index].state = AI_STATE_ACTION_DONE;
+		_companies_ainew[c->index].state = AI_STATE_ACTION_DONE;
 		return;
 	}
-	if (--_players_ainew[p->index].idle != 0) return;
+	if (--_companies_ainew[c->index].idle != 0) return;
 	// It is realistic that the AI can only build 1 vehicle a day..
 	// This makes sure of that!
-	_players_ainew[p->index].idle = AI_BUILD_VEHICLE_TIME_BETWEEN;
+	_companies_ainew[c->index].idle = AI_BUILD_VEHICLE_TIME_BETWEEN;
 
 	// Build the vehicle
-	res = AiNew_Build_Vehicle(p, _players_ainew[p->index].depot_tile, DC_EXEC);
+	res = AiNew_Build_Vehicle(c, _companies_ainew[c->index].depot_tile, DC_EXEC);
 	if (CmdFailed(res)) {
 		// This happens when the AI can't build any more vehicles!
-		_players_ainew[p->index].state = AI_STATE_NOTHING;
+		_companies_ainew[c->index].state = AI_STATE_NOTHING;
 		return;
 	}
 	// Increase the current counter
-	_players_ainew[p->index].cur_veh++;
+	_companies_ainew[c->index].cur_veh++;
 	// Decrease the total counter
-	_players_ainew[p->index].amount_veh--;
+	_companies_ainew[c->index].amount_veh--;
 	// Go give some orders!
-	_players_ainew[p->index].state = AI_STATE_WAIT_FOR_BUILD;
+	_companies_ainew[c->index].state = AI_STATE_WAIT_FOR_BUILD;
 }
 
 
 // Put the stations in the order list
-static void AiNew_State_GiveOrders(Player *p)
+static void AiNew_State_GiveOrders(Company *c)
 {
 	int idx;
 	Order order;
 
-	assert(_players_ainew[p->index].state == AI_STATE_GIVE_ORDERS);
+	assert(_companies_ainew[c->index].state == AI_STATE_GIVE_ORDERS);
 
-	if (_players_ainew[p->index].veh_main_id != INVALID_VEHICLE) {
-		AI_DoCommand(0, _players_ainew[p->index].veh_id + (_players_ainew[p->index].veh_main_id << 16), CO_SHARE, DC_EXEC, CMD_CLONE_ORDER);
+	if (_companies_ainew[c->index].veh_main_id != INVALID_VEHICLE) {
+		AI_DoCommand(0, _companies_ainew[c->index].veh_id + (_companies_ainew[c->index].veh_main_id << 16), CO_SHARE, DC_EXEC, CMD_CLONE_ORDER);
 
-		_players_ainew[p->index].state = AI_STATE_START_VEHICLE;
+		_companies_ainew[c->index].state = AI_STATE_START_VEHICLE;
 		return;
 	} else {
-		_players_ainew[p->index].veh_main_id = _players_ainew[p->index].veh_id;
+		_companies_ainew[c->index].veh_main_id = _companies_ainew[c->index].veh_id;
 	}
 
 	// Very handy for AI, goto depot.. but yeah, it needs to be activated ;)
 	if (_settings_game.order.gotodepot) {
 		idx = 0;
-		order.MakeGoToDepot(GetDepotByTile(_players_ainew[p->index].depot_tile)->index, ODTFB_PART_OF_ORDERS);
-		AI_DoCommand(0, _players_ainew[p->index].veh_id + (idx << 16), order.Pack(), DC_EXEC, CMD_INSERT_ORDER);
+		order.MakeGoToDepot(GetDepotByTile(_companies_ainew[c->index].depot_tile)->index, ODTFB_PART_OF_ORDERS);
+		AI_DoCommand(0, _companies_ainew[c->index].veh_id + (idx << 16), order.Pack(), DC_EXEC, CMD_INSERT_ORDER);
 	}
 
 	idx = 0;
-	order.MakeGoToStation(GetStationIndex(_players_ainew[p->index].to_tile));
-	if (_players_ainew[p->index].tbt == AI_TRUCK && _players_ainew[p->index].to_deliver) order.SetLoadType(OLFB_FULL_LOAD);
-	AI_DoCommand(0, _players_ainew[p->index].veh_id + (idx << 16), order.Pack(), DC_EXEC, CMD_INSERT_ORDER);
+	order.MakeGoToStation(GetStationIndex(_companies_ainew[c->index].to_tile));
+	if (_companies_ainew[c->index].tbt == AI_TRUCK && _companies_ainew[c->index].to_deliver) order.SetLoadType(OLFB_FULL_LOAD);
+	AI_DoCommand(0, _companies_ainew[c->index].veh_id + (idx << 16), order.Pack(), DC_EXEC, CMD_INSERT_ORDER);
 
 	idx = 0;
-	order.MakeGoToStation(GetStationIndex(_players_ainew[p->index].from_tile));
-	if (_players_ainew[p->index].tbt == AI_TRUCK && _players_ainew[p->index].from_deliver) order.SetLoadType(OLFB_FULL_LOAD);
-	AI_DoCommand(0, _players_ainew[p->index].veh_id + (idx << 16), order.Pack(), DC_EXEC, CMD_INSERT_ORDER);
+	order.MakeGoToStation(GetStationIndex(_companies_ainew[c->index].from_tile));
+	if (_companies_ainew[c->index].tbt == AI_TRUCK && _companies_ainew[c->index].from_deliver) order.SetLoadType(OLFB_FULL_LOAD);
+	AI_DoCommand(0, _companies_ainew[c->index].veh_id + (idx << 16), order.Pack(), DC_EXEC, CMD_INSERT_ORDER);
 
 	// Start the engines!
-	_players_ainew[p->index].state = AI_STATE_START_VEHICLE;
+	_companies_ainew[c->index].state = AI_STATE_START_VEHICLE;
 }
 
 
 // Start the vehicle
-static void AiNew_State_StartVehicle(Player *p)
+static void AiNew_State_StartVehicle(Company *c)
 {
-	assert(_players_ainew[p->index].state == AI_STATE_START_VEHICLE);
+	assert(_companies_ainew[c->index].state == AI_STATE_START_VEHICLE);
 
 	// Skip the first order if it is a second vehicle
 	//  This to make vehicles go different ways..
-	if (_players_ainew[p->index].cur_veh & 1)
-		AI_DoCommand(0, _players_ainew[p->index].veh_id, 1, DC_EXEC, CMD_SKIP_TO_ORDER);
+	if (_companies_ainew[c->index].cur_veh & 1)
+		AI_DoCommand(0, _companies_ainew[c->index].veh_id, 1, DC_EXEC, CMD_SKIP_TO_ORDER);
 
 	// 3, 2, 1... go! (give START_STOP command ;))
-	AI_DoCommand(0, _players_ainew[p->index].veh_id, 0, DC_EXEC, CMD_START_STOP_VEHICLE);
+	AI_DoCommand(0, _companies_ainew[c->index].veh_id, 0, DC_EXEC, CMD_START_STOP_VEHICLE);
 	// Try to build an other vehicle (that function will stop building when needed)
-	_players_ainew[p->index].idle  = 10;
-	_players_ainew[p->index].state = AI_STATE_BUILD_VEHICLE;
+	_companies_ainew[c->index].idle  = 10;
+	_companies_ainew[c->index].state = AI_STATE_BUILD_VEHICLE;
 }
 
 
 // Repays money
-static void AiNew_State_RepayMoney(Player *p)
+static void AiNew_State_RepayMoney(Company *c)
 {
 	uint i;
 
 	for (i = 0; i < AI_LOAN_REPAY; i++) {
 		AI_DoCommand(0, 0, 0, DC_EXEC, CMD_DECREASE_LOAN);
 	}
-	_players_ainew[p->index].state = AI_STATE_ACTION_DONE;
+	_companies_ainew[c->index].state = AI_STATE_ACTION_DONE;
 }
 
 
-static void AiNew_CheckVehicle(Player *p, Vehicle *v)
+static void AiNew_CheckVehicle(Company *c, Vehicle *v)
 {
 	// When a vehicle is under the 6 months, we don't check for anything
 	if (v->age < 180) return;
@@ -1259,7 +1258,7 @@
 
 
 			// We are already sending him back
-			if (AiNew_GetSpecialVehicleFlag(p, v) & AI_VEHICLEFLAG_SELL) {
+			if (AiNew_GetSpecialVehicleFlag(c, v) & AI_VEHICLEFLAG_SELL) {
 				if (v->type == VEH_ROAD && IsRoadDepotTile(v->tile) &&
 						(v->vehstatus & VS_STOPPED)) {
 					// We are at the depot, sell the vehicle
@@ -1268,7 +1267,7 @@
 				return;
 			}
 
-			if (!AiNew_SetSpecialVehicleFlag(p, v, AI_VEHICLEFLAG_SELL)) return;
+			if (!AiNew_SetSpecialVehicleFlag(c, v, AI_VEHICLEFLAG_SELL)) return;
 			{
 				CommandCost ret;
 				if (v->type == VEH_ROAD)
@@ -1282,19 +1281,19 @@
 
 
 // Checks all vehicles if they are still valid and make money and stuff
-static void AiNew_State_CheckAllVehicles(Player *p)
+static void AiNew_State_CheckAllVehicles(Company *c)
 {
 	Vehicle *v;
 
 	FOR_ALL_VEHICLES(v) {
-		if (v->owner != p->index) continue;
+		if (v->owner != c->index) continue;
 		// Currently, we only know how to handle road-vehicles
 		if (v->type != VEH_ROAD) continue;
 
-		AiNew_CheckVehicle(p, v);
+		AiNew_CheckVehicle(c, v);
 	}
 
-	_players_ainew[p->index].state = AI_STATE_ACTION_DONE;
+	_companies_ainew[c->index].state = AI_STATE_ACTION_DONE;
 }
 
 
@@ -1324,27 +1323,27 @@
 	NULL,
 };
 
-static void AiNew_OnTick(Player *p)
+static void AiNew_OnTick(Company *c)
 {
-	if (_ainew_state[_players_ainew[p->index].state] != NULL)
-		_ainew_state[_players_ainew[p->index].state](p);
+	if (_ainew_state[_companies_ainew[c->index].state] != NULL)
+		_ainew_state[_companies_ainew[c->index].state](c);
 }
 
 
-void AiNewDoGameLoop(Player *p)
+void AiNewDoGameLoop(Company *c)
 {
-	if (_players_ainew[p->index].state == AI_STATE_STARTUP) {
+	if (_companies_ainew[c->index].state == AI_STATE_STARTUP) {
 		// The AI just got alive!
-		_players_ainew[p->index].state = AI_STATE_FIRST_TIME;
-		_players_ainew[p->index].tick = 0;
+		_companies_ainew[c->index].state = AI_STATE_FIRST_TIME;
+		_companies_ainew[c->index].tick = 0;
 
 		// Only startup the AI
 		return;
 	}
 
 	// We keep a ticker. We use it for competitor_speed
-	_players_ainew[p->index].tick++;
+	_companies_ainew[c->index].tick++;
 
 	// If we come here, we can do a tick.. do so!
-	AiNew_OnTick(p);
+	AiNew_OnTick(c);
 }
--- a/src/ai/trolly/trolly.h	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/ai/trolly/trolly.h	Tue Sep 30 20:39:50 2008 +0000
@@ -120,7 +120,7 @@
 // Minimum % of reliabilty a vehicle has to have before the AI buys it
 #define AI_VEHICLE_MIN_RELIABILTY 60
 
-// The minimum amount of money a player should always have
+// The minimum amount of money a company should always have
 #define AI_MINIMUM_MONEY 15000
 
 // If the most cheap route is build, how much is it going to cost..
@@ -148,7 +148,7 @@
 
 // How many days must there between vehicle checks
 //  The more often, the less non-money-making lines there will be
-//   but the unfair it may seem to a human player
+//   but the unfair it may seem to a human company
 #define AI_DAYS_BETWEEN_VEHICLE_CHECKS 30
 
 // How money profit does a vehicle needs to make to stay in order
@@ -239,10 +239,10 @@
 #define AI_PATHFINDER_FLAG_BRIDGE 1
 #define AI_PATHFINDER_FLAG_TUNNEL 2
 
-typedef void AiNew_StateFunction(Player *p);
+typedef void AiNew_StateFunction(Company *c);
 
 // ai_new.c
-void AiNewDoGameLoop(Player *p);
+void AiNewDoGameLoop(Company *c);
 
 struct Ai_PathFinderInfo {
 	TileIndex start_tile_tl; ///< tl = top-left
@@ -268,17 +268,17 @@
 int AiNew_GetRailDirection(TileIndex tile_a, TileIndex tile_b, TileIndex tile_c);
 int AiNew_GetRoadDirection(TileIndex tile_a, TileIndex tile_b, TileIndex tile_c);
 DiagDirection AiNew_GetDirection(TileIndex tile_a, TileIndex tile_b);
-bool AiNew_SetSpecialVehicleFlag(Player *p, Vehicle *v, uint flag);
-uint AiNew_GetSpecialVehicleFlag(Player *p, Vehicle *v);
+bool AiNew_SetSpecialVehicleFlag(Company *c, Vehicle *v, uint flag);
+uint AiNew_GetSpecialVehicleFlag(Company *c, Vehicle *v);
 
 // ai_build.c
-bool AiNew_Build_CompanyHQ(Player *p, TileIndex tile);
-CommandCost AiNew_Build_Station(Player *p, byte type, TileIndex tile, byte length, byte numtracks, byte direction, byte flag);
-CommandCost AiNew_Build_Bridge(Player *p, TileIndex tile_a, TileIndex tile_b, byte flag);
-CommandCost AiNew_Build_RoutePart(Player *p, Ai_PathFinderInfo *PathFinderInfo, byte flag);
-EngineID AiNew_PickVehicle(Player *p);
-CommandCost AiNew_Build_Vehicle(Player *p, TileIndex tile, byte flag);
-CommandCost AiNew_Build_Depot(Player* p, TileIndex tile, DiagDirection direction, byte flag);
+bool AiNew_Build_CompanyHQ(Company *c, TileIndex tile);
+CommandCost AiNew_Build_Station(Company *c, byte type, TileIndex tile, byte length, byte numtracks, byte direction, byte flag);
+CommandCost AiNew_Build_Bridge(Company *c, TileIndex tile_a, TileIndex tile_b, byte flag);
+CommandCost AiNew_Build_RoutePart(Company *c, Ai_PathFinderInfo *PathFinderInfo, byte flag);
+EngineID AiNew_PickVehicle(Company *c);
+CommandCost AiNew_Build_Vehicle(Company *c, TileIndex tile, byte flag);
+CommandCost AiNew_Build_Depot(Company *c, TileIndex tile, DiagDirection direction, byte flag);
 
 /* The amount of memory reserved for the AI-special-vehicles */
 #define AI_MAX_SPECIAL_VEHICLES 100
@@ -288,7 +288,7 @@
 	uint32 flag;
 };
 
-struct PlayerAiNew {
+struct CompanyAiNew {
 	uint8 state;
 	uint tick;
 	uint idle;
@@ -338,6 +338,6 @@
 	int to_ic;
 	byte to_type;
 };
-extern PlayerAiNew _players_ainew[MAX_PLAYERS];
+extern CompanyAiNew _companies_ainew[MAX_COMPANIES];
 
 #endif /* AI_TROLLY_H */
--- a/src/aircraft_cmd.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/aircraft_cmd.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -104,7 +104,7 @@
 };
 
 /** Find the nearest hangar to v
- * INVALID_STATION is returned, if the player does not have any suitable
+ * INVALID_STATION is returned, if the company does not have any suitable
  * airports (like helipads only)
  * @param v vehicle looking for a hangar
  * @return the StationID if one is found, otherwise, INVALID_STATION
@@ -266,7 +266,7 @@
  */
 CommandCost CmdBuildAircraft(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
 {
-	if (!IsEngineBuildable(p1, VEH_AIRCRAFT, _current_player)) return_cmd_error(STR_AIRCRAFT_NOT_AVAILABLE);
+	if (!IsEngineBuildable(p1, VEH_AIRCRAFT, _current_company)) return_cmd_error(STR_AIRCRAFT_NOT_AVAILABLE);
 
 	const AircraftVehicleInfo *avi = AircraftVehInfo(p1);
 	CommandCost value = EstimateAircraftCost(p1, avi);
@@ -274,7 +274,7 @@
 	/* to just query the cost, it is not neccessary to have a valid tile (automation/AI) */
 	if (flags & DC_QUERY_COST) return value;
 
-	if (!IsHangarTile(tile) || !IsTileOwner(tile, _current_player)) return CMD_ERROR;
+	if (!IsHangarTile(tile) || !IsTileOwner(tile, _current_company)) return CMD_ERROR;
 
 	/* Prevent building aircraft types at places which can't handle them */
 	if (!CanAircraftUseStation(p1, tile)) return CMD_ERROR;
@@ -299,7 +299,7 @@
 		v->unitnumber = unit_num;
 		v->direction = DIR_SE;
 
-		v->owner = u->owner = _current_player;
+		v->owner = u->owner = _current_company;
 
 		v->tile = tile;
 //		u->tile = 0;
@@ -428,7 +428,7 @@
 
 			w = new (w) Aircraft();
 			w->direction = DIR_N;
-			w->owner = _current_player;
+			w->owner = _current_company;
 			w->x_pos = v->x_pos;
 			w->y_pos = v->y_pos;
 			w->z_pos = v->z_pos + 5;
@@ -448,10 +448,10 @@
 		InvalidateWindowData(WC_VEHICLE_DEPOT, v->tile);
 		InvalidateWindowClassesData(WC_AIRCRAFT_LIST, 0);
 		InvalidateWindow(WC_COMPANY, v->owner);
-		if (IsLocalPlayer())
+		if (IsLocalCompany())
 			InvalidateAutoreplaceWindow(v->engine_type, v->group_id); //updates the replace Aircraft window
 
-		GetPlayer(_current_player)->num_engines[p1]++;
+		GetCompany(_current_company)->num_engines[p1]++;
 	}
 
 	return value;
@@ -529,7 +529,7 @@
 	if (p2 & DEPOT_MASS_SEND) {
 		/* Mass goto depot requested */
 		if (!ValidVLWFlags(p2 & VLW_MASK)) return CMD_ERROR;
-		return SendAllVehiclesToDepot(VEH_AIRCRAFT, flags, p2 & DEPOT_SERVICE, _current_player, (p2 & VLW_MASK), p1);
+		return SendAllVehiclesToDepot(VEH_AIRCRAFT, flags, p2 & DEPOT_SERVICE, _current_company, (p2 & VLW_MASK), p1);
 	}
 
 	if (!IsValidVehicleID(p1)) return CMD_ERROR;
@@ -597,7 +597,7 @@
 	_returned_refit_capacity = pass;
 
 	CommandCost cost;
-	if (IsHumanPlayer(v->owner) && new_cid != v->cargo_type) {
+	if (IsHumanCompany(v->owner) && new_cid != v->cargo_type) {
 		cost = GetRefitCost(v->engine_type);
 	}
 
@@ -660,7 +660,7 @@
 	this->profit_this_year -= cost.GetCost();
 	this->running_ticks = 0;
 
-	SubtractMoneyFromPlayerFract(this->owner, cost);
+	SubtractMoneyFromCompanyFract(this->owner, cost);
 
 	InvalidateWindow(WC_VEHICLE_DETAILS, this->index);
 	InvalidateWindowClasses(WC_AIRCRAFT_LIST);
@@ -1312,11 +1312,11 @@
 	const Station *st = GetTargetAirportIfValid(v);
 	if (st == NULL) {
 		CommandCost ret;
-		PlayerID old_player = _current_player;
+		CompanyID old_company = _current_company;
 
-		_current_player = v->owner;
+		_current_company = v->owner;
 		ret = DoCommand(v->tile, v->index, 0, DC_EXEC, CMD_SEND_AIRCRAFT_TO_HANGAR);
-		_current_player = old_player;
+		_current_company = old_company;
 
 		if (CmdFailed(ret)) CrashAirplane(v);
 	} else if (!v->current_order.IsType(OT_GOTO_DEPOT)) {
@@ -1413,7 +1413,7 @@
 		/* show newsitem of celebrating citizens */
 		AddNewsItem(
 			STR_A033_CITIZENS_CELEBRATE_FIRST,
-			(v->owner == _local_player) ? NS_ARRIVAL_PLAYER : NS_ARRIVAL_OTHER,
+			(v->owner == _local_company) ? NS_ARRIVAL_COMPANY : NS_ARRIVAL_OTHER,
 			v->index,
 			st->index
 		);
@@ -1477,28 +1477,28 @@
 static inline bool CheckSendAircraftToHangarForReplacement(const Vehicle *v)
 {
 	EngineID new_engine;
-	Player *p = GetPlayer(v->owner);
+	Company *c = GetCompany(v->owner);
 
 	if (VehicleHasDepotOrders(v)) return false; // The aircraft will end up in the hangar eventually on it's own
 
-	new_engine = EngineReplacementForPlayer(p, v->engine_type, v->group_id);
+	new_engine = EngineReplacementForCompany(c, v->engine_type, v->group_id);
 
 	if (new_engine == INVALID_ENGINE) {
 		/* There is no autoreplace assigned to this EngineID so we will set it to renew to the same type if needed */
 		new_engine = v->engine_type;
 
-		if (!v->NeedsAutorenewing(p)) {
+		if (!v->NeedsAutorenewing(c)) {
 			/* No need to replace the aircraft */
 			return false;
 		}
 	}
 
-	if (!HasBit(GetEngine(new_engine)->player_avail, v->owner)) {
+	if (!HasBit(GetEngine(new_engine)->company_avail, v->owner)) {
 		/* Engine is not buildable anymore */
 		return false;
 	}
 
-	if (p->player_money < (p->engine_renew_money + (2 * DoCommand(0, new_engine, 0, DC_QUERY_COST, CMD_BUILD_AIRCRAFT).GetCost()))) {
+	if (c->money < (c->engine_renew_money + (2 * DoCommand(0, new_engine, 0, DC_QUERY_COST, CMD_BUILD_AIRCRAFT).GetCost()))) {
 		/* We lack enough money to request the replacement right away.
 		 * We want 2*(the price of the new vehicle) and not looking at the value of the vehicle we are going to sell.
 		 * The reason is that we don't want to send a whole lot of vehicles to the hangars when we only have enough money to replace a single one.
@@ -1652,9 +1652,9 @@
 
 	/* Send the helicopter to a hangar if needed for replacement */
 	if (CheckSendAircraftToHangarForReplacement(v)) {
-		_current_player = v->owner;
+		_current_company = v->owner;
 		DoCommand(v->tile, v->index, DEPOT_SERVICE | DEPOT_LOCATE_HANGAR, DC_EXEC, CMD_SEND_AIRCRAFT_TO_HANGAR);
-		_current_player = OWNER_NONE;
+		_current_company = OWNER_NONE;
 	}
 }
 
@@ -1704,9 +1704,9 @@
 
 	/* check if the aircraft needs to be replaced or renewed and send it to a hangar if needed */
 	if (CheckSendAircraftToHangarForReplacement(v)) {
-		_current_player = v->owner;
+		_current_company = v->owner;
 		DoCommand(v->tile, v->index, DEPOT_SERVICE, DC_EXEC, CMD_SEND_AIRCRAFT_TO_HANGAR);
-		_current_player = OWNER_NONE;
+		_current_company = OWNER_NONE;
 	}
 }
 
--- a/src/airport_gui.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/airport_gui.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -146,7 +146,7 @@
 
 void ShowBuildAirToolbar()
 {
-	if (!IsValidPlayerID(_current_player)) return;
+	if (!IsValidCompanyID(_current_company)) return;
 
 	DeleteWindowByClass(WC_BUILD_TOOLBAR);
 	AllocateWindowDescFront<BuildAirToolbarWindow>(&_air_toolbar_desc, TRANSPORT_AIR);
--- a/src/autoreplace_cmd.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/autoreplace_cmd.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -39,10 +39,10 @@
  * Checks some basic properties whether autoreplace is allowed
  * @param from Origin engine
  * @param to Destination engine
- * @param player Player to check for
+ * @param company Company to check for
  * @return true if autoreplace is allowed
  */
-bool CheckAutoreplaceValidity(EngineID from, EngineID to, PlayerID player)
+bool CheckAutoreplaceValidity(EngineID from, EngineID to, CompanyID company)
 {
 	/* First we make sure that it's a valid type the user requested
 	 * check that it's an engine that is in the engine array */
@@ -53,8 +53,8 @@
 
 	VehicleType type = GetEngine(from)->type;
 
-	/* check that the new vehicle type is available to the player and its type is the same as the original one */
-	if (!IsEngineBuildable(to, type, player)) return false;
+	/* check that the new vehicle type is available to the company and its type is the same as the original one */
+	if (!IsEngineBuildable(to, type, company)) return false;
 
 	switch (type) {
 		case VEH_TRAIN: {
@@ -213,10 +213,10 @@
 
 /** Get the EngineID of the replacement for a vehicle
  * @param v The vehicle to find a replacement for
- * @param p The vehicle's owner (it's faster to forward the pointer than refinding it)
+ * @param c The vehicle's owner (it's faster to forward the pointer than refinding it)
  * @return the EngineID of the replacement. INVALID_ENGINE if no buildable replacement is found
  */
-static EngineID GetNewEngineType(const Vehicle *v, const Player *p)
+static EngineID GetNewEngineType(const Vehicle *v, const Company *c)
 {
 	assert(v->type != VEH_TRAIN || !IsArticulatedPart(v));
 
@@ -225,14 +225,14 @@
 		return INVALID_ENGINE;
 	}
 
-	EngineID e = EngineReplacementForPlayer(p, v->engine_type, v->group_id);
+	EngineID e = EngineReplacementForCompany(c, v->engine_type, v->group_id);
 
-	if (e != INVALID_ENGINE && IsEngineBuildable(e, v->type, _current_player)) {
+	if (e != INVALID_ENGINE && IsEngineBuildable(e, v->type, _current_company)) {
 		return e;
 	}
 
-	if (v->NeedsAutorenewing(p) && // replace if engine is too old
-	    IsEngineBuildable(v->engine_type, v->type, _current_player)) { // engine can still be build
+	if (v->NeedsAutorenewing(c) && // replace if engine is too old
+	    IsEngineBuildable(v->engine_type, v->type, _current_company)) { // engine can still be build
 		return v->engine_type;
 	}
 
@@ -251,8 +251,8 @@
 	*new_vehicle = NULL;
 
 	/* Shall the vehicle be replaced? */
-	const Player *p = GetPlayer(_current_player);
-	EngineID e = GetNewEngineType(old_veh, p);
+	const Company *c = GetCompany(_current_company);
+	EngineID e = GetNewEngineType(old_veh, c);
 	if (e == INVALID_ENGINE) return CommandCost(); // neither autoreplace is set, nor autorenew is triggered
 
 	/* Does it need to be refitted */
@@ -627,14 +627,14 @@
 		if (!v->IsPrimaryVehicle()) return CMD_ERROR;
 	}
 
-	const Player *p = GetPlayer(_current_player);
-	bool wagon_removal = p->renew_keep_length;
+	const Company *c = GetCompany(_current_company);
+	bool wagon_removal = c->renew_keep_length;
 
 	/* Test whether any replacement is set, before issuing a whole lot of commands that would end in nothing changed */
 	Vehicle *w = v;
 	bool any_replacements = false;
 	while (w != NULL && !any_replacements) {
-		any_replacements = (GetNewEngineType(w, p) != INVALID_ENGINE);
+		any_replacements = (GetNewEngineType(w, c) != INVALID_ENGINE);
 		w = (!free_wagon && w->type == VEH_TRAIN ? GetNextUnit(w) : NULL);
 	}
 
--- a/src/autoreplace_func.h	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/autoreplace_func.h	Tue Sep 30 20:39:50 2008 +0000
@@ -9,9 +9,9 @@
 #include "player_base.h"
 
 /**
- * Remove all engine replacement settings for the player.
- * @param  erl The renewlist for a given player.
- * @return The new renewlist for the player.
+ * Remove all engine replacement settings for the company.
+ * @param  erl The renewlist for a given company.
+ * @return The new renewlist for the company.
  */
 void RemoveAllEngineReplacement(EngineRenewList *erl);
 
@@ -44,62 +44,62 @@
 CommandCost RemoveEngineReplacement(EngineRenewList *erl, EngineID engine, GroupID group, uint32 flags);
 
 /**
- * Remove all engine replacement settings for the given player.
- * @param p Player.
+ * Remove all engine replacement settings for the given company.
+ * @param c the company.
  */
-static inline void RemoveAllEngineReplacementForPlayer(Player *p)
+static inline void RemoveAllEngineReplacementForCompany(Company *c)
 {
-	RemoveAllEngineReplacement(&p->engine_renew_list);
+	RemoveAllEngineReplacement(&c->engine_renew_list);
 }
 
 /**
- * Retrieve the engine replacement for the given player and original engine type.
- * @param p Player.
+ * Retrieve the engine replacement for the given company and original engine type.
+ * @param c company.
  * @param engine Engine type.
  * @return The engine type to replace with, or INVALID_ENGINE if no
  * replacement is in the list.
  */
-static inline EngineID EngineReplacementForPlayer(const Player *p, EngineID engine, GroupID group)
+static inline EngineID EngineReplacementForCompany(const Company *c, EngineID engine, GroupID group)
 {
-	return EngineReplacement(p->engine_renew_list, engine, group);
+	return EngineReplacement(c->engine_renew_list, engine, group);
 }
 
 /**
- * Check if a player has a replacement set up for the given engine.
- * @param p Player.
+ * Check if a company has a replacement set up for the given engine.
+ * @param c Company.
  * @param  engine Engine type to be replaced.
  * @return true if a replacement was set up, false otherwise.
  */
-static inline bool EngineHasReplacementForPlayer(const Player *p, EngineID engine, GroupID group)
+static inline bool EngineHasReplacementForCompany(const Company *c, EngineID engine, GroupID group)
 {
-	return EngineReplacementForPlayer(p, engine, group) != INVALID_ENGINE;
+	return EngineReplacementForCompany(c, engine, group) != INVALID_ENGINE;
 }
 
 /**
- * Add an engine replacement for the player.
- * @param p Player.
+ * Add an engine replacement for the company.
+ * @param c Company.
  * @param old_engine The original engine type.
  * @param new_engine The replacement engine type.
  * @param flags The calling command flags.
  * @return 0 on success, CMD_ERROR on failure.
  */
-static inline CommandCost AddEngineReplacementForPlayer(Player *p, EngineID old_engine, EngineID new_engine, GroupID group, uint32 flags)
+static inline CommandCost AddEngineReplacementForCompany(Company *c, EngineID old_engine, EngineID new_engine, GroupID group, uint32 flags)
 {
-	return AddEngineReplacement(&p->engine_renew_list, old_engine, new_engine, group, flags);
+	return AddEngineReplacement(&c->engine_renew_list, old_engine, new_engine, group, flags);
 }
 
 /**
- * Remove an engine replacement for the player.
- * @param p Player.
+ * Remove an engine replacement for the company.
+ * @param c Company.
  * @param engine The original engine type.
  * @param flags The calling command flags.
  * @return 0 on success, CMD_ERROR on failure.
  */
-static inline CommandCost RemoveEngineReplacementForPlayer(Player *p, EngineID engine, GroupID group, uint32 flags)
+static inline CommandCost RemoveEngineReplacementForCompany(Company *c, EngineID engine, GroupID group, uint32 flags)
 {
-	return RemoveEngineReplacement(&p->engine_renew_list, engine, group, flags);
+	return RemoveEngineReplacement(&c->engine_renew_list, engine, group, flags);
 }
 
-bool CheckAutoreplaceValidity(EngineID from, EngineID to, PlayerID player);
+bool CheckAutoreplaceValidity(EngineID from, EngineID to, CompanyID company);
 
 #endif /* AUTOREPLACE_FUNC_H */
--- a/src/autoreplace_gui.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/autoreplace_gui.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -71,10 +71,10 @@
  */
 void InvalidateAutoreplaceWindow(EngineID e, GroupID id_g)
 {
-	Player *p = GetPlayer(_local_player);
-	uint num_engines = GetGroupNumEngines(_local_player, id_g, e);
+	Company *c = GetCompany(_local_company);
+	uint num_engines = GetGroupNumEngines(_local_company, id_g, e);
 
-	if (num_engines == 0 || p->num_engines[e] == 0) {
+	if (num_engines == 0 || c->num_engines[e] == 0) {
 		/* We don't have any of this engine type.
 		 * Either we just sold the last one, we build a new one or we stopped replacing it.
 		 * In all cases, we need to update the left list */
@@ -147,12 +147,12 @@
 
 			if (draw_left) {
 				const GroupID selected_group = this->sel_group;
-				const uint num_engines = GetGroupNumEngines(_local_player, selected_group, eid);
+				const uint num_engines = GetGroupNumEngines(_local_company, selected_group, eid);
 
 				/* Skip drawing the engines we don't have any of and haven't set for replacement */
-				if (num_engines == 0 && EngineReplacementForPlayer(GetPlayer(_local_player), eid, selected_group) == INVALID_ENGINE) continue;
+				if (num_engines == 0 && EngineReplacementForCompany(GetCompany(_local_company), eid, selected_group) == INVALID_ENGINE) continue;
 			} else {
-				if (!CheckAutoreplaceValidity(this->sel_engine[0], eid, _local_player)) continue;
+				if (!CheckAutoreplaceValidity(this->sel_engine[0], eid, _local_company)) continue;
 			}
 
 			*list->Append() = eid;
@@ -244,7 +244,7 @@
 		this->resize.width  = this->width;
 		this->resize.height = this->height;
 
-		this->caption_color = _local_player;
+		this->caption_color = _local_company;
 		this->sel_group = id_g;
 		this->vscroll2.cap = this->vscroll.cap;   // these two are always the same
 
@@ -262,7 +262,7 @@
 
 		if (this->update_left || this->update_right) this->GenerateLists();
 
-		Player *p = GetPlayer(_local_player);
+		Company *c = GetCompany(_local_company);
 		EngineID selected_id[2];
 		const GroupID selected_group = this->sel_group;
 
@@ -276,29 +276,29 @@
 		this->SetWidgetDisabledState(RVW_WIDGET_START_REPLACE,
 										selected_id[0] == INVALID_ENGINE ||
 										selected_id[1] == INVALID_ENGINE ||
-										EngineReplacementForPlayer(p, selected_id[1], selected_group) != INVALID_ENGINE ||
-										EngineReplacementForPlayer(p, selected_id[0], selected_group) == selected_id[1]);
+										EngineReplacementForCompany(c, selected_id[1], selected_group) != INVALID_ENGINE ||
+										EngineReplacementForCompany(c, selected_id[0], selected_group) == selected_id[1]);
 
 		/* Disable the "Stop Replacing" button if:
 		 *   The left list (existing vehicle) is empty
 		 *   or The selected vehicle has no replacement set up */
 		this->SetWidgetDisabledState(RVW_WIDGET_STOP_REPLACE,
 										selected_id[0] == INVALID_ENGINE ||
-										!EngineHasReplacementForPlayer(p, selected_id[0], selected_group));
+										!EngineHasReplacementForCompany(c, selected_id[0], selected_group));
 
 		/* now the actual drawing of the window itself takes place */
 		SetDParam(0, _vehicle_type_names[this->window_number]);
 
 		if (this->window_number == VEH_TRAIN) {
 			/* set on/off for renew_keep_length */
-			SetDParam(1, p->renew_keep_length ? STR_CONFIG_PATCHES_ON : STR_CONFIG_PATCHES_OFF);
+			SetDParam(1, c->renew_keep_length ? STR_CONFIG_PATCHES_ON : STR_CONFIG_PATCHES_OFF);
 
 			/* set wagon/engine button */
 			SetDParam(2, this->wagon_btnstate ? STR_ENGINES : STR_WAGONS);
 
 			/* sets the colour of that art thing */
-			this->widget[RVW_WIDGET_TRAIN_FLUFF_LEFT].color  = _player_colors[_local_player];
-			this->widget[RVW_WIDGET_TRAIN_FLUFF_RIGHT].color = _player_colors[_local_player];
+			this->widget[RVW_WIDGET_TRAIN_FLUFF_LEFT].color  = _company_colours[_local_company];
+			this->widget[RVW_WIDGET_TRAIN_FLUFF_RIGHT].color = _company_colours[_local_company];
 		}
 
 		if (this->window_number == VEH_TRAIN) {
@@ -311,11 +311,11 @@
 
 		/* sets up the string for the vehicle that is being replaced to */
 		if (selected_id[0] != INVALID_ENGINE) {
-			if (!EngineHasReplacementForPlayer(p, selected_id[0], selected_group)) {
+			if (!EngineHasReplacementForCompany(c, selected_id[0], selected_group)) {
 				SetDParam(0, STR_NOT_REPLACING);
 			} else {
 				SetDParam(0, STR_ENGINE_NAME);
-				SetDParam(1, EngineReplacementForPlayer(p, selected_id[0], selected_group));
+				SetDParam(1, EngineReplacementForCompany(c, selected_id[0], selected_group));
 			}
 		} else {
 			SetDParam(0, STR_NOT_REPLACING_VEHICLE_SELECTED);
@@ -358,19 +358,19 @@
 				break;
 
 			case RVW_WIDGET_TRAIN_RAILTYPE_DROPDOWN: { /* Railtype selection dropdown menu */
-				const Player *p = GetPlayer(_local_player);
+				const Company *c = GetCompany(_local_company);
 				DropDownList *list = new DropDownList();
 				for (RailType rt = RAILTYPE_BEGIN; rt != RAILTYPE_END; rt++) {
 					const RailtypeInfo *rti = GetRailTypeInfo(rt);
 
-					list->push_back(new DropDownListStringItem(rti->strings.replace_text, rt, !HasBit(p->avail_railtypes, rt)));
+					list->push_back(new DropDownListStringItem(rti->strings.replace_text, rt, !HasBit(c->avail_railtypes, rt)));
 				}
 				ShowDropDownList(this, list, sel_railtype, RVW_WIDGET_TRAIN_RAILTYPE_DROPDOWN);
 				break;
 			}
 
 			case RVW_WIDGET_TRAIN_WAGONREMOVE_TOGGLE: /* toggle renew_keep_length */
-				DoCommandP(0, 5, GetPlayer(_local_player)->renew_keep_length ? 0 : 1, NULL, CMD_SET_AUTOREPLACE);
+				DoCommandP(0, 5, GetCompany(_local_company)->renew_keep_length ? 0 : 1, NULL, CMD_SET_AUTOREPLACE);
 				break;
 
 			case RVW_WIDGET_START_REPLACE: { /* Start replacing */
--- a/src/autoreplace_type.h	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/autoreplace_type.h	Tue Sep 30 20:39:50 2008 +0000
@@ -8,8 +8,8 @@
 struct EngineRenew;
 
 /**
- * A list to group EngineRenew directives together (such as per-player).
+ * A list to group EngineRenew directives together (such as per-company).
  */
-typedef EngineRenew* EngineRenewList;
+typedef EngineRenew *EngineRenewList;
 
 #endif /* AUTOREPLACE_TYPE_H */
--- a/src/autoslope.h	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/autoslope.h	Tue Sep 30 20:39:50 2008 +0000
@@ -30,17 +30,17 @@
 }
 
 /**
- * Tests if autoslope is enabled for _current_player.
+ * Tests if autoslope is enabled for _current_company.
  *
- * Autoslope is disabled for town/industry construction and old ai players.
+ * Autoslope is disabled for town/industry construction and old ai companies.
  *
  * @return true iff autoslope is enabled.
  */
 static inline bool AutoslopeEnabled()
 {
 	return (_settings_game.construction.autoslope &&
-	        ((_current_player < MAX_PLAYERS && !_is_old_ai_player) ||
-	         (_current_player == OWNER_NONE && _game_mode == GM_EDITOR)));
+	        ((_current_company < MAX_COMPANIES && !_is_old_ai_company) ||
+	         (_current_company == OWNER_NONE && _game_mode == GM_EDITOR)));
 }
 
 #endif /* AUTOSLOPE_H */
--- a/src/build_vehicle_gui.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/build_vehicle_gui.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -776,12 +776,12 @@
 
 	for (; min < max; min++, y += step_size) {
 		const EngineID engine = (*eng_list)[min];
-		/* Note: num_engines is only used in the autoreplace GUI, so it is correct to use _local_player here. */
-		const uint num_engines = GetGroupNumEngines(_local_player, selected_group, engine);
+		/* Note: num_engines is only used in the autoreplace GUI, so it is correct to use _local_company here. */
+		const uint num_engines = GetGroupNumEngines(_local_company, selected_group, engine);
 
 		SetDParam(0, engine);
 		DrawStringTruncated(x + x_offset, y, STR_ENGINE_NAME, engine == selected_id ? TC_WHITE : TC_BLACK, maxw);
-		DrawVehicleEngine(type, x, y + y_offset, engine, (count_location != 0 && num_engines == 0) ? PALETTE_CRASH : GetEnginePalette(engine, _local_player));
+		DrawVehicleEngine(type, x, y + y_offset, engine, (count_location != 0 && num_engines == 0) ? PALETTE_CRASH : GetEnginePalette(engine, _local_company));
 		if (count_location != 0) {
 			SetDParam(0, num_engines);
 			DrawStringRightAligned(count_location, y + (GetVehicleListHeight(type) == 14 ? 3 : 8), STR_TINY_BLACK, TC_FROMSTRING);
@@ -818,7 +818,7 @@
 		this->resize.width  = this->width;
 		this->resize.height = this->height;
 
-		this->caption_color = (tile != 0) ? GetTileOwner(tile) : _local_player;
+		this->caption_color = (tile != 0) ? GetTileOwner(tile) : _local_company;
 
 		this->sel_engine      = INVALID_ENGINE;
 		this->regenerate_list = false;
@@ -925,7 +925,7 @@
 			const RailVehicleInfo *rvi = &e->u.rail;
 
 			if (this->filter.railtype != RAILTYPE_END && !HasPowerOnRail(rvi->railtype, this->filter.railtype)) continue;
-			if (!IsEngineBuildable(eid, VEH_TRAIN, _local_player)) continue;
+			if (!IsEngineBuildable(eid, VEH_TRAIN, _local_company)) continue;
 
 			*this->eng_list.Append() = eid;
 
@@ -962,7 +962,7 @@
 		const Engine *e;
 		FOR_ALL_ENGINES_OF_TYPE(e, VEH_ROAD) {
 			EngineID eid = e->index;
-			if (!IsEngineBuildable(eid, VEH_ROAD, _local_player)) continue;
+			if (!IsEngineBuildable(eid, VEH_ROAD, _local_company)) continue;
 			if (!HasBit(this->filter.roadtypes, HasBit(EngInfo(eid)->misc_flags, EF_ROAD_TRAM) ? ROADTYPE_TRAM : ROADTYPE_ROAD)) continue;
 			*this->eng_list.Append() = eid;
 
@@ -980,7 +980,7 @@
 		const Engine *e;
 		FOR_ALL_ENGINES_OF_TYPE(e, VEH_SHIP) {
 			EngineID eid = e->index;
-			if (!IsEngineBuildable(eid, VEH_SHIP, _local_player)) continue;
+			if (!IsEngineBuildable(eid, VEH_SHIP, _local_company)) continue;
 			*this->eng_list.Append() = eid;
 
 			if (eid == this->sel_engine) sel_id = eid;
@@ -1002,7 +1002,7 @@
 		const Engine *e;
 		FOR_ALL_ENGINES_OF_TYPE(e, VEH_AIRCRAFT) {
 			EngineID eid = e->index;
-			if (!IsEngineBuildable(eid, VEH_AIRCRAFT, _local_player)) continue;
+			if (!IsEngineBuildable(eid, VEH_AIRCRAFT, _local_company)) continue;
 			/* First VEH_END window_numbers are fake to allow a window open for all different types at once */
 			if (!this->listview_mode && !CanAircraftUseStation(eid, this->window_number)) continue;
 
@@ -1207,7 +1207,7 @@
 	 *  number. */
 	uint num = (tile == 0) ? (int)type : tile;
 
-	assert(IsPlayerBuildableVehicleType(type));
+	assert(IsCompanyBuildableVehicleType(type));
 
 	DeleteWindowById(WC_BUILD_VEHICLE, num);
 
--- a/src/cheat_gui.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/cheat_gui.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -39,22 +39,22 @@
 }
 
 /**
- * @param p1 player to set to
+ * @param p1 company to set to
  * @param p2 is -1 or +1 (down/up)
  */
-static int32 ClickChangePlayerCheat(int32 p1, int32 p2)
+static int32 ClickChangeCompanyCheat(int32 p1, int32 p2)
 {
-	while ((uint)p1 < GetPlayerPoolSize()) {
-		if (IsValidPlayerID((PlayerID)p1)) {
-			SetLocalPlayer((PlayerID)p1);
+	while ((uint)p1 < GetCompanyPoolSize()) {
+		if (IsValidCompanyID((CompanyID)p1)) {
+			SetLocalCompany((CompanyID)p1);
 
 			MarkWholeScreenDirty();
-			return _local_player;
+			return _local_company;
 		}
 		p1 += p2;
 	}
 
-	return _local_player;
+	return _local_company;
 }
 
 /**
@@ -106,15 +106,15 @@
 };
 
 static const CheatEntry _cheats_ui[] = {
-	{SLE_INT32, STR_CHEAT_MONEY,           &_money_cheat_amount,               &_cheats.money.been_used,            &ClickMoneyCheat        },
-	{SLE_UINT8, STR_CHEAT_CHANGE_PLAYER,   &_local_player,                     &_cheats.switch_player.been_used,    &ClickChangePlayerCheat },
-	{SLE_BOOL,  STR_CHEAT_EXTRA_DYNAMITE,  &_cheats.magic_bulldozer.value,     &_cheats.magic_bulldozer.been_used,  NULL                    },
-	{SLE_BOOL,  STR_CHEAT_CROSSINGTUNNELS, &_cheats.crossing_tunnels.value,    &_cheats.crossing_tunnels.been_used, NULL                    },
-	{SLE_BOOL,  STR_CHEAT_BUILD_IN_PAUSE,  &_cheats.build_in_pause.value,      &_cheats.build_in_pause.been_used,   NULL                    },
-	{SLE_BOOL,  STR_CHEAT_NO_JETCRASH,     &_cheats.no_jetcrash.value,         &_cheats.no_jetcrash.been_used,      NULL                    },
-	{SLE_BOOL,  STR_CHEAT_SETUP_PROD,      &_cheats.setup_prod.value,          &_cheats.setup_prod.been_used,       NULL                    },
-	{SLE_UINT8, STR_CHEAT_SWITCH_CLIMATE,  &_settings_game.game_creation.landscape, &_cheats.switch_climate.been_used,   &ClickChangeClimateCheat},
-	{SLE_INT32, STR_CHEAT_CHANGE_DATE,     &_cur_year,                         &_cheats.change_date.been_used,      &ClickChangeDateCheat   },
+	{SLE_INT32, STR_CHEAT_MONEY,           &_money_cheat_amount,                    &_cheats.money.been_used,            &ClickMoneyCheat         },
+	{SLE_UINT8, STR_CHEAT_CHANGE_PLAYER,   &_local_company,                         &_cheats.switch_company.been_used,   &ClickChangeCompanyCheat },
+	{SLE_BOOL,  STR_CHEAT_EXTRA_DYNAMITE,  &_cheats.magic_bulldozer.value,          &_cheats.magic_bulldozer.been_used,  NULL                     },
+	{SLE_BOOL,  STR_CHEAT_CROSSINGTUNNELS, &_cheats.crossing_tunnels.value,         &_cheats.crossing_tunnels.been_used, NULL                     },
+	{SLE_BOOL,  STR_CHEAT_BUILD_IN_PAUSE,  &_cheats.build_in_pause.value,           &_cheats.build_in_pause.been_used,   NULL                     },
+	{SLE_BOOL,  STR_CHEAT_NO_JETCRASH,     &_cheats.no_jetcrash.value,              &_cheats.no_jetcrash.been_used,      NULL                     },
+	{SLE_BOOL,  STR_CHEAT_SETUP_PROD,      &_cheats.setup_prod.value,               &_cheats.setup_prod.been_used,       NULL                     },
+	{SLE_UINT8, STR_CHEAT_SWITCH_CLIMATE,  &_settings_game.game_creation.landscape, &_cheats.switch_climate.been_used,   &ClickChangeClimateCheat },
+	{SLE_INT32, STR_CHEAT_CHANGE_DATE,     &_cur_year,                              &_cheats.change_date.been_used,      &ClickChangeDateCheat    },
 };
 
 
@@ -163,11 +163,11 @@
 						/* Display date for change date cheat */
 						case STR_CHEAT_CHANGE_DATE: SetDParam(0, _date); break;
 
-						/* Draw colored flag for change player cheat */
+						/* Draw colored flag for change company cheat */
 						case STR_CHEAT_CHANGE_PLAYER:
 							SetDParam(0, val);
 							GetString(buf, STR_CHEAT_CHANGE_PLAYER, lastof(buf));
-							DrawPlayerIcon(_current_player, 60 + GetStringBoundingBox(buf).width, y + 2);
+							DrawCompanyIcon(_current_company, 60 + GetStringBoundingBox(buf).width, y + 2);
 							break;
 
 						/* Set correct string for switch climate cheat */
--- a/src/cheat_type.h	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/cheat_type.h	Tue Sep 30 20:39:50 2008 +0000
@@ -20,7 +20,7 @@
  */
 struct Cheats {
 	Cheat magic_bulldozer;  ///< dynamite industries, unmovables
-	Cheat switch_player;    ///< change to another player
+	Cheat switch_company;   ///< change to another company
 	Cheat money;            ///< get rich or poor
 	Cheat crossing_tunnels; ///< allow tunnels that cross each other
 	Cheat build_in_pause;   ///< build while in pause mode
--- a/src/clear_cmd.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/clear_cmd.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -339,7 +339,7 @@
 	td->owner[0] = GetTileOwner(tile);
 }
 
-static void ChangeTileOwner_Clear(TileIndex tile, PlayerID old_player, PlayerID new_player)
+static void ChangeTileOwner_Clear(TileIndex tile, Owner old_owner, Owner new_owner)
 {
 	return;
 }
--- a/src/command.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/command.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -105,8 +105,8 @@
 DEF_COMMAND(CmdBuildIndustry);
 
 DEF_COMMAND(CmdBuildCompanyHQ);
-DEF_COMMAND(CmdSetPlayerFace);
-DEF_COMMAND(CmdSetPlayerColor);
+DEF_COMMAND(CmdSetCompanyManagerFace);
+DEF_COMMAND(CmdSetCompanyColor);
 
 DEF_COMMAND(CmdIncreaseLoan);
 DEF_COMMAND(CmdDecreaseLoan);
@@ -165,7 +165,7 @@
 DEF_COMMAND(CmdBuildCanal);
 DEF_COMMAND(CmdBuildLock);
 
-DEF_COMMAND(CmdPlayerCtrl);
+DEF_COMMAND(CmdCompanyCtrl);
 
 DEF_COMMAND(CmdLevelLand);
 
@@ -255,8 +255,8 @@
 
 	{CmdBuildIndustry,                       0}, /* CMD_BUILD_INDUSTRY */
 	{CmdBuildCompanyHQ,               CMD_AUTO}, /* CMD_BUILD_COMPANY_HQ */
-	{CmdSetPlayerFace,                       0}, /* CMD_SET_PLAYER_FACE */
-	{CmdSetPlayerColor,                      0}, /* CMD_SET_PLAYER_COLOR */
+	{CmdSetCompanyManagerFace,               0}, /* CMD_SET_COMPANY_MANAGER_FACE */
+	{CmdSetCompanyColor,                     0}, /* CMD_SET_COMPANY_COLOR */
 
 	{CmdIncreaseLoan,                        0}, /* CMD_INCREASE_LOAN */
 	{CmdDecreaseLoan,                        0}, /* CMD_DECREASE_LOAN */
@@ -310,7 +310,7 @@
 
 	{CmdMoneyCheat,                CMD_OFFLINE}, /* CMD_MONEY_CHEAT */
 	{CmdBuildCanal,                   CMD_AUTO}, /* CMD_BUILD_CANAL */
-	{CmdPlayerCtrl,                          0}, /* CMD_PLAYER_CTRL */
+	{CmdCompanyCtrl,                         0}, /* CMD_COMPANY_CTRL */
 
 	{CmdLevelLand,                    CMD_AUTO}, /* CMD_LEVEL_LAND */
 
@@ -417,7 +417,7 @@
 				!(flags & DC_QUERY_COST) &&
 				!(flags & DC_BANKRUPT) &&
 				res.GetCost() != 0 &&
-				!CheckPlayerHasMoney(res)) {
+				!CheckCompanyHasMoney(res)) {
 			goto error;
 		}
 
@@ -441,10 +441,10 @@
 
 	/* if toplevel, subtract the money. */
 	if (--_docommand_recursive == 0 && !(flags & DC_BANKRUPT)) {
-		SubtractMoneyFromPlayer(res);
-		/* XXX - Old AI hack which doesn't use DoCommandDP; update last build coord of player */
-		if (tile != 0 && IsValidPlayerID(_current_player)) {
-			GetPlayer(_current_player)->last_build_coordinate = tile;
+		SubtractMoneyFromCompany(res);
+		/* XXX - Old AI hack which doesn't use DoCommandDP; update last build coord of company */
+		if (tile != 0 && IsValidCompanyID(_current_company)) {
+			GetCompany(_current_company)->last_build_coordinate = tile;
 		}
 	}
 
@@ -454,30 +454,30 @@
 
 /*!
  * This functions returns the money which can be used to execute a command.
- * This is either the money of the current player or INT64_MAX if there
- * is no such a player "at the moment" like the server itself.
+ * This is either the money of the current company or INT64_MAX if there
+ * is no such a company "at the moment" like the server itself.
  *
- * @return The available money of a player or INT64_MAX
+ * @return The available money of a company or INT64_MAX
  */
 Money GetAvailableMoneyForCommand()
 {
-	PlayerID pid = _current_player;
-	if (!IsValidPlayerID(pid)) return INT64_MAX;
-	return GetPlayer(pid)->player_money;
+	CompanyID company = _current_company;
+	if (!IsValidCompanyID(company)) return INT64_MAX;
+	return GetCompany(company)->money;
 }
 
 /*!
- * Toplevel network safe docommand function for the current player. Must not be called recursively.
+ * Toplevel network safe docommand function for the current company. Must not be called recursively.
  * The callback is called when the command succeeded or failed. The parameters
  * tile, p1 and p2 are from the #CommandProc function. The paramater cmd is the command to execute.
- * The parameter my_cmd is used to indicate if the command is from a player or the server.
+ * The parameter my_cmd is used to indicate if the command is from a company or the server.
  *
  * @param tile The tile to perform a command on (see #CommandProc)
  * @param p1 Additional data for the command (see #CommandProc)
  * @param p2 Additional data for the command (see #CommandProc)
  * @param callback A callback function to call after the command is finished
  * @param cmd The command to execute (a CMD_* value)
- * @param my_cmd indicator if the command is from a player or server (to display error messages for a user)
+ * @param my_cmd indicator if the command is from a company or server (to display error messages for a user)
  * @return true if the command succeeded, else false
  */
 bool DoCommandP(TileIndex tile, uint32 p1, uint32 p2, CommandCallback *callback, uint32 cmd, bool my_cmd)
@@ -505,7 +505,7 @@
 
 	/** Spectator has no rights except for the (dedicated) server which
 	 * is/can be a spectator but as the server it can do anything */
-	if (_current_player == PLAYER_SPECTATOR && !_network_server) {
+	if (_current_company == COMPANY_SPECTATOR && !_network_server) {
 		if (my_cmd) ShowErrorMessage(_error_message, error_part1, x, y);
 		_cmd_text = NULL;
 		return false;
@@ -547,7 +547,7 @@
 	/* cost estimation only? */
 	if (!IsGeneratingWorld() &&
 			_shift_pressed &&
-			IsLocalPlayer() &&
+			IsLocalCompany() &&
 			!(cmd & (CMD_NETWORK_COMMAND | CMD_SHOW_NO_ERROR)) &&
 			(cmd & 0xFF) != CMD_PAUSE) {
 		/* estimate the cost. */
@@ -578,33 +578,33 @@
 			goto show_error;
 		}
 		/* no money? Only check if notest is off */
-		if (!notest && res.GetCost() != 0 && !CheckPlayerHasMoney(res)) goto show_error;
+		if (!notest && res.GetCost() != 0 && !CheckCompanyHasMoney(res)) goto show_error;
 	}
 
 #ifdef ENABLE_NETWORK
 	/** If we are in network, and the command is not from the network
 	 * send it to the command-queue and abort execution
-	 * If we are a dedicated server temporarily switch local player, otherwise
+	 * If we are a dedicated server temporarily switch local company, otherwise
 	 * the other parties won't be able to execute our command and will desync.
 	 * We also need to do this if the server's company has gone bankrupt
 	 * @todo Rewrite (dedicated) server to something more than a dirty hack!
 	 */
 	if (_networking && !(cmd & CMD_NETWORK_COMMAND)) {
-		PlayerID pbck = _local_player;
-		if (_network_dedicated || (_network_server && pbck == PLAYER_SPECTATOR)) _local_player = PLAYER_FIRST;
+		CompanyID pbck = _local_company;
+		if (_network_dedicated || (_network_server && pbck == COMPANY_SPECTATOR)) _local_company = COMPANY_FIRST;
 		NetworkSend_Command(tile, p1, p2, cmd, callback);
-		if (_network_dedicated || (_network_server && pbck == PLAYER_SPECTATOR)) _local_player = pbck;
+		if (_network_dedicated || (_network_server && pbck == COMPANY_SPECTATOR)) _local_company = pbck;
 		_docommand_recursive = 0;
 		_cmd_text = NULL;
 		ClearStorageChanges(false);
 		return true;
 	}
 #endif /* ENABLE_NETWORK */
-	DebugDumpCommands("ddc:cmd:%d;%d;%d;%d;%d;%d;%d;%s\n", _date, _date_fract, (int)_current_player, tile, p1, p2, cmd, _cmd_text);
+	DebugDumpCommands("ddc:cmd:%d;%d;%d;%d;%d;%d;%d;%s\n", _date, _date_fract, (int)_current_company, tile, p1, p2, cmd, _cmd_text);
 
-	/* update last build coordinate of player. */
-	if (tile != 0 && IsValidPlayerID(_current_player)) {
-		GetPlayer(_current_player)->last_build_coordinate = tile;
+	/* update last build coordinate of company. */
+	if (tile != 0 && IsValidCompanyID(_current_company)) {
+		GetCompany(_current_company)->last_build_coordinate = tile;
 	}
 
 	/* Actually try and execute the command. If no cost-type is given
@@ -622,12 +622,12 @@
 		}
 	}
 
-	SubtractMoneyFromPlayer(res2);
+	SubtractMoneyFromCompany(res2);
 
 	/* update signals if needed */
 	UpdateSignalsInBuffer();
 
-	if (IsLocalPlayer() && _game_mode != GM_EDITOR) {
+	if (IsLocalCompany() && _game_mode != GM_EDITOR) {
 		if (res2.GetCost() != 0 && tile != 0) ShowCostOrIncomeAnimation(x, y, GetSlopeZ(x, y), res2.GetCost());
 		if (_additional_cash_required != 0) {
 			SetDParam(0, _additional_cash_required);
@@ -645,7 +645,7 @@
 
 show_error:
 	/* show error message if the command fails? */
-	if (IsLocalPlayer() && error_part1 != 0 && my_cmd) {
+	if (IsLocalCompany() && error_part1 != 0 && my_cmd) {
 		ShowErrorMessage(_error_message, error_part1, x, y);
 	}
 
--- a/src/command_type.h	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/command_type.h	Tue Sep 30 20:39:50 2008 +0000
@@ -201,8 +201,8 @@
 	CMD_BUILD_INDUSTRY,               ///< build a new industry
 
 	CMD_BUILD_COMPANY_HQ,             ///< build the company headquarter
-	CMD_SET_PLAYER_FACE,              ///< set the face of the player/company
-	CMD_SET_PLAYER_COLOR,             ///< set the color of the player/company
+	CMD_SET_COMPANY_MANAGER_FACE,     ///< set the manager's face of the company
+	CMD_SET_COMPANY_COLOR,            ///< set the color of the company
 
 	CMD_INCREASE_LOAN,                ///< increase the loan from the bank
 	CMD_DECREASE_LOAN,                ///< decrease the loan from the bank
@@ -254,7 +254,7 @@
 	CMD_MONEY_CHEAT,                  ///< do the money cheat
 	CMD_BUILD_CANAL,                  ///< build a canal
 
-	CMD_PLAYER_CTRL,                  ///< used in multiplayer to create a new player etc.
+	CMD_COMPANY_CTRL,                 ///< used in multiplayer to create a new companies etc.
 	CMD_LEVEL_LAND,                   ///< level land
 
 	CMD_REFIT_RAIL_VEHICLE,           ///< refit the cargo space of a train
@@ -264,7 +264,7 @@
 	CMD_BUILD_SIGNAL_TRACK,           ///< add signals along a track (by dragging)
 	CMD_REMOVE_SIGNAL_TRACK,          ///< remove signals along a track (by dragging)
 
-	CMD_GIVE_MONEY,                   ///< give money to an other player
+	CMD_GIVE_MONEY,                   ///< give money to another company
 	CMD_CHANGE_PATCH_SETTING,         ///< change a patch setting
 
 	CMD_SET_AUTOREPLACE,              ///< set an autoreplace entry
--- a/src/console.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/console.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -79,7 +79,7 @@
 
 /**
  * Handle the printing of text entered into the console or redirected there
- * by any other means. Text can be redirected to other players in a network game
+ * by any other means. Text can be redirected to other clients in a network game
  * as well as to a logfile. If the network server is a dedicated server, all activities
  * are also logged. All lines to print are added to a temporary buffer which can be
  * used as a history to print them onscreen
--- a/src/console_cmds.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/console_cmds.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -375,7 +375,7 @@
 	uint32 index;
 
 	if (argc == 0) {
-		IConsoleHelp("Ban a player from a network game. Usage: 'ban <ip | client-id>'");
+		IConsoleHelp("Ban a client from a network game. Usage: 'ban <ip | client-id>'");
 		IConsoleHelp("For client-id's, see the command 'clients'");
 		IConsoleHelp("If the client is no longer online, you can still ban his/her IP");
 		return true;
@@ -408,7 +408,7 @@
 
 	if (ci != NULL) {
 		IConsolePrint(CC_DEFAULT, "Client banned");
-		banip = GetPlayerIP(ci);
+		banip = GetClientIP(ci);
 		NetworkServerSendError(index, NETWORK_ERROR_KICKED);
 	} else {
 		IConsolePrint(CC_DEFAULT, "Client not online, banned IP");
@@ -430,7 +430,7 @@
 	uint i, index;
 
 	if (argc == 0) {
-		IConsoleHelp("Unban a player from a network game. Usage: 'unban <ip | client-id>'");
+		IConsoleHelp("Unban a client from a network game. Usage: 'unban <ip | client-id>'");
 		IConsoleHelp("For a list of banned IP's, see the command 'banlist'");
 		return true;
 	}
@@ -540,13 +540,13 @@
 DEF_CONSOLE_CMD(ConServerInfo)
 {
 	if (argc == 0) {
-		IConsoleHelp("List current and maximum client/player limits. Usage 'server_info'");
+		IConsoleHelp("List current and maximum client/company limits. Usage 'server_info'");
 		IConsoleHelp("You can change these values by setting the variables 'max_clients', 'max_companies' and 'max_spectators'");
 		return true;
 	}
 
 	IConsolePrintF(CC_DEFAULT, "Current/maximum clients:    %2d/%2d", _network_game_info.clients_on, _settings_client.network.max_clients);
-	IConsolePrintF(CC_DEFAULT, "Current/maximum companies:  %2d/%2d", ActivePlayerCount(), _settings_client.network.max_companies);
+	IConsolePrintF(CC_DEFAULT, "Current/maximum companies:  %2d/%2d", ActiveCompanyCount(), _settings_client.network.max_companies);
 	IConsolePrintF(CC_DEFAULT, "Current/maximum spectators: %2d/%2d", NetworkSpectatorCount(), _settings_client.network.max_spectators);
 
 	return true;
@@ -558,7 +558,7 @@
 	uint32 index;
 
 	if (argc == 0) {
-		IConsoleHelp("Kick a player from a network game. Usage: 'kick <ip | client-id>'");
+		IConsoleHelp("Kick a client from a network game. Usage: 'kick <ip | client-id>'");
 		IConsoleHelp("For client-id's, see the command 'clients'");
 		return true;
 	}
@@ -594,32 +594,32 @@
 
 DEF_CONSOLE_CMD(ConResetCompany)
 {
-	PlayerID index;
+	CompanyID index;
 
 	if (argc == 0) {
 		IConsoleHelp("Remove an idle company from the game. Usage: 'reset_company <company-id>'");
-		IConsoleHelp("For company-id's, see the list of companies from the dropdown menu. Player 1 is 1, etc.");
+		IConsoleHelp("For company-id's, see the list of companies from the dropdown menu. Company 1 is 1, etc.");
 		return true;
 	}
 
 	if (argc != 2) return false;
 
-	index = (PlayerID)(atoi(argv[1]) - 1);
+	index = (CompanyID)(atoi(argv[1]) - 1);
 
 	/* Check valid range */
-	if (!IsValidPlayerID(index)) {
-		IConsolePrintF(CC_ERROR, "Company does not exist. Company-id must be between 1 and %d.", MAX_PLAYERS);
+	if (!IsValidCompanyID(index)) {
+		IConsolePrintF(CC_ERROR, "Company does not exist. Company-id must be between 1 and %d.", MAX_COMPANIES);
 		return true;
 	}
 
-	const Player *p = GetPlayer(index);
+	const Company *c = GetCompany(index);
 
-	if (p->is_ai) {
+	if (c->is_ai) {
 		IConsoleError("Company is owned by an AI.");
 		return true;
 	}
 
-	if (NetworkCompanyHasPlayers(index)) {
+	if (NetworkCompanyHasClients(index)) {
 		IConsoleError("Cannot remove company: a client is connected to that company.");
 		return false;
 	}
@@ -630,7 +630,7 @@
 	}
 
 	/* It is safe to remove this company */
-	DoCommandP(0, 2, index, NULL, CMD_PLAYER_CTRL);
+	DoCommandP(0, 2, index, NULL, CMD_COMPANY_CTRL);
 	IConsolePrint(CC_DEFAULT, "Company deleted.");
 
 	return true;
@@ -648,8 +648,8 @@
 	FOR_ALL_ACTIVE_CLIENT_INFOS(ci) {
 		IConsolePrintF(CC_INFO, "Client #%1d  name: '%s'  company: %1d  IP: %s",
 		               ci->client_index, ci->client_name,
-		               ci->client_playas + (IsValidPlayerID(ci->client_playas) ? 1 : 0),
-		               GetPlayerIP(ci));
+		               ci->client_playas + (IsValidCompanyID(ci->client_playas) ? 1 : 0),
+		               GetClientIP(ci));
 	}
 
 	return true;
@@ -659,13 +659,13 @@
 {
 	char *ip;
 	const char *port = NULL;
-	const char *player = NULL;
+	const char *company = NULL;
 	uint16 rport;
 
 	if (argc == 0) {
 		IConsoleHelp("Connect to a remote OTTD server and join the game. Usage: 'connect <ip>'");
-		IConsoleHelp("IP can contain port and player: 'IP[[#Player]:Port]', eg: 'server.ottd.org#2:443'");
-		IConsoleHelp("Player #255 is spectator all others are a certain company with Company 1 being #1");
+		IConsoleHelp("IP can contain port and company: 'IP[[#Company]:Port]', eg: 'server.ottd.org#2:443'");
+		IConsoleHelp("Company #255 is spectator all others are a certain company with Company 1 being #1");
 		return true;
 	}
 
@@ -675,20 +675,20 @@
 	ip = argv[1];
 	/* Default settings: default port and new company */
 	rport = NETWORK_DEFAULT_PORT;
-	_network_playas = PLAYER_NEW_COMPANY;
+	_network_playas = COMPANY_NEW_COMPANY;
 
-	ParseConnectionString(&player, &port, ip);
+	ParseConnectionString(&company, &port, ip);
 
 	IConsolePrintF(CC_DEFAULT, "Connecting to %s...", ip);
-	if (player != NULL) {
-		_network_playas = (PlayerID)atoi(player);
-		IConsolePrintF(CC_DEFAULT, "    player-no: %d", _network_playas);
+	if (company != NULL) {
+		_network_playas = (CompanyID)atoi(company);
+		IConsolePrintF(CC_DEFAULT, "    company-no: %d", _network_playas);
 
-		/* From a user pov 0 is a new player, internally it's different and all
-		 * players are offset by one to ease up on users (eg players 1-8 not 0-7) */
-		if (_network_playas != PLAYER_SPECTATOR) {
+		/* From a user pov 0 is a new company, internally it's different and all
+		 * companies are offset by one to ease up on users (eg companies 1-8 not 0-7) */
+		if (_network_playas != COMPANY_SPECTATOR) {
 			_network_playas--;
-			if (!IsValidPlayerID(_network_playas)) return false;
+			if (!IsValidCompanyID(_network_playas)) return false;
 		}
 	}
 	if (port != NULL) {
@@ -1138,24 +1138,24 @@
 	return true;
 }
 
-DEF_CONSOLE_CMD(ConPlayers)
+DEF_CONSOLE_CMD(ConCompanies)
 {
-	Player *p;
+	Company *c;
 
 	if (argc == 0) {
-		IConsoleHelp("List the in-game details of all clients connected to the server. Usage 'players'");
+		IConsoleHelp("List the in-game details of all clients connected to the server. Usage 'companies'");
 		return true;
 	}
 	NetworkPopulateCompanyInfo();
 
-	FOR_ALL_PLAYERS(p) {
+	FOR_ALL_COMPANIES(c) {
 		char buffer[512];
 
-		const NetworkPlayerInfo *npi = &_network_player_info[p->index];
+		const NetworkCompanyInfo *npi = &_network_company_info[c->index];
 
-		GetString(buffer, STR_00D1_DARK_BLUE + _player_colors[p->index], lastof(buffer));
+		GetString(buffer, STR_00D1_DARK_BLUE + _company_colours[c->index], lastof(buffer));
 		IConsolePrintF(CC_INFO, "#:%d(%s) Company Name: '%s'  Year Founded: %d  Money: %" OTTD_PRINTF64 "d  Loan: %" OTTD_PRINTF64 "d  Value: %" OTTD_PRINTF64 "d  (T:%d, R:%d, P:%d, S:%d) %sprotected",
-			p->index + 1, buffer, npi->company_name, p->inaugurated_year, (int64)p->player_money, (int64)p->current_loan, (int64)CalculateCompanyValue(p),
+			c->index + 1, buffer, npi->company_name, c->inaugurated_year, (int64)c->money, (int64)c->current_loan, (int64)CalculateCompanyValue(c),
 			/* trains      */ npi->num_vehicle[0],
 			/* lorry + bus */ npi->num_vehicle[1] + npi->num_vehicle[2],
 			/* planes      */ npi->num_vehicle[3],
@@ -1166,26 +1166,26 @@
 	return true;
 }
 
-DEF_CONSOLE_CMD(ConSayPlayer)
+DEF_CONSOLE_CMD(ConSayCompany)
 {
 	if (argc == 0) {
-		IConsoleHelp("Chat to a certain player in a multiplayer game. Usage: 'say_player <player-no> \"<msg>\"'");
-		IConsoleHelp("PlayerNo is the player that plays as company <playerno>, 1 through max_players");
+		IConsoleHelp("Chat to a certain company in a multiplayer game. Usage: 'say_company <company-no> \"<msg>\"'");
+		IConsoleHelp("CompanyNo is the company that plays as company <companyno>, 1 through max_companies");
 		return true;
 	}
 
 	if (argc != 3) return false;
 
-	PlayerID player_id = (PlayerID)(atoi(argv[1]) - 1);
-	if (!IsValidPlayerID(player_id)) {
-		IConsolePrintF(CC_DEFAULT, "Unknown player. Player range is between 1 and %d.", MAX_PLAYERS);
+	CompanyID company_id = (CompanyID)(atoi(argv[1]) - 1);
+	if (!IsValidCompanyID(company_id)) {
+		IConsolePrintF(CC_DEFAULT, "Unknown company. Company range is between 1 and %d.", MAX_COMPANIES);
 		return true;
 	}
 
 	if (!_network_server) {
-		NetworkClientSendChat(NETWORK_ACTION_CHAT_COMPANY, DESTTYPE_TEAM, player_id, argv[2]);
+		NetworkClientSendChat(NETWORK_ACTION_CHAT_COMPANY, DESTTYPE_TEAM, company_id, argv[2]);
 	} else {
-		NetworkServerSendChat(NETWORK_ACTION_CHAT_COMPANY, DESTTYPE_TEAM, player_id, argv[2], NETWORK_SERVER_INDEX);
+		NetworkServerSendChat(NETWORK_ACTION_CHAT_COMPANY, DESTTYPE_TEAM, company_id, argv[2], NETWORK_SERVER_INDEX);
 	}
 
 	return true;
@@ -1194,7 +1194,7 @@
 DEF_CONSOLE_CMD(ConSayClient)
 {
 	if (argc == 0) {
-		IConsoleHelp("Chat to a certain player in a multiplayer game. Usage: 'say_client <client-no> \"<msg>\"'");
+		IConsoleHelp("Chat to a certain client in a multiplayer game. Usage: 'say_client <client-no> \"<msg>\"'");
 		IConsoleHelp("For client-id's, see the command 'clients'");
 		return true;
 	}
@@ -1212,16 +1212,16 @@
 
 extern void HashCurrentCompanyPassword();
 
-/* Also use from within player_gui to change the password graphically */
+/* Also use from within company_gui to change the password graphically */
 bool NetworkChangeCompanyPassword(byte argc, char *argv[])
 {
 	if (argc == 0) {
-		if (!IsValidPlayerID(_local_player)) return true; // dedicated server
-		IConsolePrintF(CC_WARNING, "Current value for 'company_pw': %s", _network_player_info[_local_player].password);
+		if (!IsValidCompanyID(_local_company)) return true; // dedicated server
+		IConsolePrintF(CC_WARNING, "Current value for 'company_pw': %s", _network_company_info[_local_company].password);
 		return true;
 	}
 
-	if (!IsValidPlayerID(_local_player)) {
+	if (!IsValidCompanyID(_local_company)) {
 		IConsoleError("You have to own a company to make use of this command.");
 		return false;
 	}
@@ -1230,7 +1230,7 @@
 
 	if (strcmp(argv[0], "*") == 0) argv[0][0] = '\0';
 
-	ttd_strlcpy(_network_player_info[_local_player].password, argv[0], sizeof(_network_player_info[_local_player].password));
+	ttd_strlcpy(_network_company_info[_local_company].password, argv[0], sizeof(_network_company_info[_local_company].password));
 
 	if (!_network_server) {
 		NetworkClientSetPassword();
@@ -1238,7 +1238,7 @@
 		HashCurrentCompanyPassword();
 	}
 
-	IConsolePrintF(CC_WARNING, "'company_pw' changed to:  %s", _network_player_info[_local_player].password);
+	IConsolePrintF(CC_WARNING, "'company_pw' changed to:  %s", _network_company_info[_local_company].password);
 
 	return true;
 }
@@ -1248,7 +1248,7 @@
 DEF_CONSOLE_CMD(ConPatch)
 {
 	if (argc == 0) {
-		IConsoleHelp("Change patch variables for all players. Usage: 'patch <name> [<value>]'");
+		IConsoleHelp("Change patch variables for all clients. Usage: 'patch <name> [<value>]'");
 		IConsoleHelp("Omitting <value> will print out the current value of the patch-setting.");
 		return true;
 	}
@@ -1384,10 +1384,12 @@
 	/*** Networking commands ***/
 	IConsoleCmdRegister("say",             ConSay);
 	IConsoleCmdHookAdd("say",              ICONSOLE_HOOK_ACCESS, ConHookNeedNetwork);
-	IConsoleCmdRegister("players",             ConPlayers);
-	IConsoleCmdHookAdd("players",              ICONSOLE_HOOK_ACCESS, ConHookServerOnly);
-	IConsoleCmdRegister("say_player",      ConSayPlayer);
-	IConsoleCmdHookAdd("say_player",       ICONSOLE_HOOK_ACCESS, ConHookNeedNetwork);
+	IConsoleCmdRegister("companies",       ConCompanies);
+	IConsoleCmdHookAdd("companies",        ICONSOLE_HOOK_ACCESS, ConHookServerOnly);
+	IConsoleAliasRegister("players",       "companies");
+	IConsoleCmdRegister("say_company",     ConSayCompany);
+	IConsoleCmdHookAdd("say_company",      ICONSOLE_HOOK_ACCESS, ConHookNeedNetwork);
+	IConsoleAliasRegister("say_player",    "say_company %+");
 	IConsoleCmdRegister("say_client",      ConSayClient);
 	IConsoleCmdHookAdd("say_client",       ICONSOLE_HOOK_ACCESS, ConHookNeedNetwork);
 
@@ -1433,7 +1435,7 @@
 	IConsoleAliasRegister("server_password",       "patch server_password %+");
 	IConsoleAliasRegister("rcon_pw",               "patch rcon_password %+");
 	IConsoleAliasRegister("rcon_password",         "patch rcon_password %+");
-	IConsoleAliasRegister("name",                  "patch player_name %+");
+	IConsoleAliasRegister("name",                  "patch client_name %+");
 	IConsoleAliasRegister("server_name",           "patch server_name %+");
 	IConsoleAliasRegister("server_port",           "patch server_port %+");
 	IConsoleAliasRegister("server_ip",             "patch server_bind_ip %+");
@@ -1450,7 +1452,7 @@
 	IConsoleAliasRegister("autoclean_protected",   "patch autoclean_protected %+");
 	IConsoleAliasRegister("autoclean_unprotected", "patch autoclean_unprotected %+");
 	IConsoleAliasRegister("restart_game_year",     "patch restart_game_year %+");
-	IConsoleAliasRegister("min_players",           "patch min_players %+");
+	IConsoleAliasRegister("min_players",           "patch min_clients %+");
 	IConsoleAliasRegister("reload_cfg",            "patch reload_cfg %+");
 #endif /* ENABLE_NETWORK */
 
--- a/src/console_gui.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/console_gui.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -436,7 +436,7 @@
 
 /**
  * Handle the printing of text entered into the console or redirected there
- * by any other means. Text can be redirected to other players in a network game
+ * by any other means. Text can be redirected to other clients in a network game
  * as well as to a logfile. If the network server is a dedicated server, all activities
  * are also logged. All lines to print are added to a temporary buffer which can be
  * used as a history to print them onscreen
--- a/src/core/random_func.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/core/random_func.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -42,7 +42,7 @@
 uint32 DoRandom(int line, const char *file)
 {
 	if (_networking && (DEREF_CLIENT(0)->status != STATUS_INACTIVE || !_network_server)) {
-		printf("Random [%d/%d] %s:%d\n",_frame_counter, (byte)_current_player, file, line);
+		printf("Random [%d/%d] %s:%d\n",_frame_counter, (byte)_current_company, file, line);
 	}
 
 	return _random.Next();
--- a/src/date.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/date.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -160,13 +160,13 @@
 extern void EnginesDailyLoop();
 extern void DisasterDailyLoop();
 extern void IndustryDailyLoop();
-extern void PlayersMonthlyLoop();
+extern void CompaniesMonthlyLoop();
 extern void EnginesMonthlyLoop();
 extern void TownsMonthlyLoop();
 extern void IndustryMonthlyLoop();
 extern void StationMonthlyLoop();
 
-extern void PlayersYearlyLoop();
+extern void CompaniesYearlyLoop();
 extern void TrainsYearlyLoop();
 extern void RoadVehiclesYearlyLoop();
 extern void AircraftYearlyLoop();
@@ -255,7 +255,7 @@
 		}
 
 		InvalidateWindowClasses(WC_CHEATS);
-		PlayersMonthlyLoop();
+		CompaniesMonthlyLoop();
 		EnginesMonthlyLoop();
 		TownsMonthlyLoop();
 		IndustryMonthlyLoop();
@@ -270,7 +270,7 @@
 	_cur_year = ymd.year;
 
 	/* yes, call various yearly loops */
-	PlayersYearlyLoop();
+	CompaniesYearlyLoop();
 	TrainsYearlyLoop();
 	RoadVehiclesYearlyLoop();
 	AircraftYearlyLoop();
--- a/src/depot_gui.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/depot_gui.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -314,7 +314,7 @@
 		uint16 boxes_in_each_row = this->widget[DEPOT_WIDGET_MATRIX].data & 0xFF;
 
 		/* setup disabled buttons */
-		this->SetWidgetsDisabledState(!IsTileOwner(tile, _local_player),
+		this->SetWidgetsDisabledState(!IsTileOwner(tile, _local_company),
 			DEPOT_WIDGET_STOP_ALL,
 			DEPOT_WIDGET_START_ALL,
 			DEPOT_WIDGET_SELL,
@@ -702,7 +702,7 @@
 		this->type = type;
 		_backup_orders_tile = 0;
 
-		assert(IsPlayerBuildableVehicleType(type)); // ensure that we make the call with a valid type
+		assert(IsCompanyBuildableVehicleType(type)); // ensure that we make the call with a valid type
 
 		/* Resize the window according to the vehicle type */
 
--- a/src/disaster_cmd.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/disaster_cmd.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -69,11 +69,11 @@
 
 	switch (GetTileType(tile)) {
 		case MP_RAILWAY:
-			if (IsHumanPlayer(GetTileOwner(tile)) && !IsRailWaypoint(tile)) {
-				PlayerID p = _current_player;
-				_current_player = OWNER_WATER;
+			if (IsHumanCompany(GetTileOwner(tile)) && !IsRailWaypoint(tile)) {
+				CompanyID old_company = _current_company;
+				_current_company = OWNER_WATER;
 				DoCommand(tile, 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR);
-				_current_player = p;
+				_current_company = old_company;
 
 				/* update signals in buffer */
 				UpdateSignalsInBuffer();
@@ -81,10 +81,10 @@
 			break;
 
 		case MP_HOUSE: {
-			PlayerID p = _current_player;
-			_current_player = OWNER_NONE;
+			CompanyID old_company = _current_company;
+			_current_company = OWNER_NONE;
 			DoCommand(tile, 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR);
-			_current_player = p;
+			_current_company = old_company;
 			break;
 		}
 
@@ -229,7 +229,7 @@
 			if (IsValidTile(tile) &&
 					IsTileType(tile, MP_STATION) &&
 					IsAirport(tile) &&
-					IsHumanPlayer(GetTileOwner(tile))) {
+					IsHumanCompany(GetTileOwner(tile))) {
 				v->current_order.SetDestination(1);
 				v->age = 0;
 
@@ -253,7 +253,7 @@
 		if (IsValidTile(tile) &&
 				IsTileType(tile, MP_STATION) &&
 				IsAirport(tile) &&
-				IsHumanPlayer(GetTileOwner(tile))) {
+				IsHumanCompany(GetTileOwner(tile))) {
 			st = GetStationByTile(tile);
 			CLRBITS(st->airport_flags, RUNWAY_IN_block);
 		}
@@ -294,7 +294,7 @@
 	if (IsValidTile(tile) &&
 			IsTileType(tile, MP_STATION) &&
 			IsAirport(tile) &&
-			IsHumanPlayer(GetTileOwner(tile))) {
+			IsHumanCompany(GetTileOwner(tile))) {
 		st = GetStationByTile(tile);
 		SETBITS(st->airport_flags, RUNWAY_IN_block);
 	}
@@ -331,7 +331,7 @@
 		v->current_order.SetDestination(1);
 
 		FOR_ALL_VEHICLES(u) {
-			if (u->type == VEH_ROAD && IsRoadVehFront(u) && IsHumanPlayer(u->owner)) {
+			if (u->type == VEH_ROAD && IsRoadVehFront(u) && IsHumanCompany(u->owner)) {
 				v->dest_tile = u->index;
 				v->age = 0;
 				return;
@@ -644,7 +644,7 @@
 		do {
 			if (IsTileType(tile, MP_RAILWAY) &&
 					IsPlainRailTile(tile) &&
-					IsHumanPlayer(GetTileOwner(tile))) {
+					IsHumanCompany(GetTileOwner(tile))) {
 				break;
 			}
 			tile = TILE_MASK(tile + 1);
@@ -773,7 +773,7 @@
 	FOR_ALL_STATIONS(st) {
 		if (st->airport_tile != 0 &&
 				st->airport_type <= 1 &&
-				IsHumanPlayer(st->owner)) {
+				IsHumanCompany(st->owner)) {
 			x = (TileX(st->xy) + 2) * TILE_SIZE;
 			break;
 		}
--- a/src/dock_gui.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/dock_gui.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -278,7 +278,7 @@
 
 void ShowBuildDocksToolbar()
 {
-	if (!IsValidPlayerID(_current_player)) return;
+	if (!IsValidCompanyID(_current_company)) return;
 
 	DeleteWindowByClass(WC_BUILD_TOOLBAR);
 	AllocateWindowDescFront<BuildDocksToolbarWindow>(&_build_docks_toolbar_desc, TRANSPORT_WATER);
--- a/src/dummy_land.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/dummy_land.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -59,7 +59,7 @@
 	/* not used */
 }
 
-static void ChangeTileOwner_Dummy(TileIndex tile, PlayerID old_player, PlayerID new_player)
+static void ChangeTileOwner_Dummy(TileIndex tile, Owner old_owner, Owner new_owner)
 {
 	/* not used */
 }
--- a/src/economy.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/economy.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -96,18 +96,18 @@
 	{ SCORE_TOTAL,             0,   0 }
 };
 
-int _score_part[MAX_PLAYERS][SCORE_END];
+int _score_part[MAX_COMPANIES][SCORE_END];
 Economy _economy;
-Subsidy _subsidies[MAX_PLAYERS];
+Subsidy _subsidies[MAX_COMPANIES];
 Prices _price;
 uint16 _price_frac[NUM_PRICES];
 Money  _cargo_payment_rates[NUM_CARGO];
 uint16 _cargo_payment_rates_frac[NUM_CARGO];
 Money _additional_cash_required;
 
-Money CalculateCompanyValue(const Player* p)
+Money CalculateCompanyValue(const Company *c)
 {
-	PlayerID owner = p->index;
+	Owner owner = c->index;
 	Money value = 0;
 
 	Station *st;
@@ -132,8 +132,8 @@
 	}
 
 	/* Add real money value */
-	value -= p->current_loan;
-	value += p->player_money;
+	value -= c->current_loan;
+	value += c->money;
 
 	return max(value, (Money)1);
 }
@@ -141,17 +141,17 @@
 /** if update is set to true, the economy is updated with this score
  *  (also the house is updated, should only be true in the on-tick event)
  * @param update the economy with calculated score
- * @param p player been evaluated
- * @return actual score of this player
+ * @param c company been evaluated
+ * @return actual score of this company
  * */
-int UpdateCompanyRatingAndValue(Player *p, bool update)
+int UpdateCompanyRatingAndValue(Company *c, bool update)
 {
-	byte owner = p->index;
+	Owner owner = c->index;
 	int score = 0;
 
 	memset(_score_part[owner], 0, sizeof(_score_part[owner]));
 
-/* Count vehicles */
+	/* Count vehicles */
 	{
 		Vehicle *v;
 		Money min_profit = 0;
@@ -160,7 +160,7 @@
 
 		FOR_ALL_VEHICLES(v) {
 			if (v->owner != owner) continue;
-			if (IsPlayerBuildableVehicleType(v->type) && v->IsPrimaryVehicle()) {
+			if (IsCompanyBuildableVehicleType(v->type) && v->IsPrimaryVehicle()) {
 				num++;
 				if (v->age > 730) {
 					/* Find the vehicle with the lowest amount of profit */
@@ -180,7 +180,7 @@
 			_score_part[owner][SCORE_MIN_PROFIT] = ClampToI32(min_profit);
 	}
 
-/* Count stations */
+	/* Count stations */
 	{
 		uint num = 0;
 		const Station* st;
@@ -191,61 +191,62 @@
 		_score_part[owner][SCORE_STATIONS] = num;
 	}
 
-/* Generate statistics depending on recent income statistics */
+	/* Generate statistics depending on recent income statistics */
 	{
-		int numec = min(p->num_valid_stat_ent, 12);
+		int numec = min(c->num_valid_stat_ent, 12);
 		if (numec != 0) {
-			const PlayerEconomyEntry *pee = p->old_economy;
-			Money min_income = pee->income + pee->expenses;
-			Money max_income = pee->income + pee->expenses;
+			const CompanyEconomyEntry *cee = c->old_economy;
+			Money min_income = cee->income + cee->expenses;
+			Money max_income = cee->income + cee->expenses;
 
 			do {
-				min_income = min(min_income, pee->income + pee->expenses);
-				max_income = max(max_income, pee->income + pee->expenses);
-			} while (++pee,--numec);
+				min_income = min(min_income, cee->income + cee->expenses);
+				max_income = max(max_income, cee->income + cee->expenses);
+			} while (++cee,--numec);
 
-			if (min_income > 0)
+			if (min_income > 0) {
 				_score_part[owner][SCORE_MIN_INCOME] = ClampToI32(min_income);
+			}
 
 			_score_part[owner][SCORE_MAX_INCOME] = ClampToI32(max_income);
 		}
 	}
 
-/* Generate score depending on amount of transported cargo */
+	/* Generate score depending on amount of transported cargo */
 	{
-		const PlayerEconomyEntry* pee;
+		const CompanyEconomyEntry *cee;
 		int numec;
 		uint32 total_delivered;
 
-		numec = min(p->num_valid_stat_ent, 4);
+		numec = min(c->num_valid_stat_ent, 4);
 		if (numec != 0) {
-			pee = p->old_economy;
+			cee = c->old_economy;
 			total_delivered = 0;
 			do {
-				total_delivered += pee->delivered_cargo;
-			} while (++pee,--numec);
+				total_delivered += cee->delivered_cargo;
+			} while (++cee,--numec);
 
 			_score_part[owner][SCORE_DELIVERED] = total_delivered;
 		}
 	}
 
-/* Generate score for variety of cargo */
+	/* Generate score for variety of cargo */
 	{
-		uint num = CountBits(p->cargo_types);
+		uint num = CountBits(c->cargo_types);
 		_score_part[owner][SCORE_CARGO] = num;
-		if (update) p->cargo_types = 0;
+		if (update) c->cargo_types = 0;
 	}
 
-/* Generate score for player money */
+	/* Generate score for company's money */
 	{
-		if (p->player_money > 0) {
-			_score_part[owner][SCORE_MONEY] = ClampToI32(p->player_money);
+		if (c->money > 0) {
+			_score_part[owner][SCORE_MONEY] = ClampToI32(c->money);
 		}
 	}
 
-/* Generate score for loan */
+	/* Generate score for loan */
 	{
-		_score_part[owner][SCORE_LOAN] = ClampToI32(_score_info[SCORE_LOAN].needed - p->current_loan);
+		_score_part[owner][SCORE_LOAN] = ClampToI32(_score_info[SCORE_LOAN].needed - c->current_loan);
 	}
 
 	/* Now we calculate the score for each item.. */
@@ -269,92 +270,92 @@
 	}
 
 	if (update) {
-		p->old_economy[0].performance_history = score;
-		UpdateCompanyHQ(p, score);
-		p->old_economy[0].company_value = CalculateCompanyValue(p);
+		c->old_economy[0].performance_history = score;
+		UpdateCompanyHQ(c, score);
+		c->old_economy[0].company_value = CalculateCompanyValue(c);
 	}
 
 	InvalidateWindow(WC_PERFORMANCE_DETAIL, 0);
 	return score;
 }
 
-/*  use PLAYER_SPECTATOR as new_player to delete the player. */
-void ChangeOwnershipOfPlayerItems(PlayerID old_player, PlayerID new_player)
+/*  use INVALID_OWNER as new_owner to delete the company. */
+void ChangeOwnershipOfCompanyItems(Owner old_owner, Owner new_owner)
 {
 	Town *t;
-	PlayerID old = _current_player;
+	CompanyID old = _current_company;
 
-	assert(old_player != new_player);
+	assert(old_owner != new_owner);
 
 	{
-		Player *p;
+		Company *c;
 		uint i;
 
-		/* See if the old_player had shares in other companies */
-		_current_player = old_player;
-		FOR_ALL_PLAYERS(p) {
+		/* See if the old_owner had shares in other companies */
+		_current_company = old_owner;
+		FOR_ALL_COMPANIES(c) {
 			for (i = 0; i < 4; i++) {
-				if (p->share_owners[i] == old_player) {
+				if (c->share_owners[i] == old_owner) {
 					/* Sell his shares */
-					CommandCost res = DoCommand(0, p->index, 0, DC_EXEC, CMD_SELL_SHARE_IN_COMPANY);
+					CommandCost res = DoCommand(0, c->index, 0, DC_EXEC, CMD_SELL_SHARE_IN_COMPANY);
 					/* Because we are in a DoCommand, we can't just execute an other one and
 					 *  expect the money to be removed. We need to do it ourself! */
-					SubtractMoneyFromPlayer(res);
+					SubtractMoneyFromCompany(res);
 				}
 			}
 		}
 
 		/* Sell all the shares that people have on this company */
-		p = GetPlayer(old_player);
+		c = GetCompany(old_owner);
 		for (i = 0; i < 4; i++) {
-			_current_player = p->share_owners[i];
-			if (_current_player != PLAYER_SPECTATOR) {
+			_current_company = c->share_owners[i];
+			if (_current_company != INVALID_OWNER) {
 				/* Sell the shares */
-				CommandCost res = DoCommand(0, old_player, 0, DC_EXEC, CMD_SELL_SHARE_IN_COMPANY);
+				CommandCost res = DoCommand(0, old_owner, 0, DC_EXEC, CMD_SELL_SHARE_IN_COMPANY);
 				/* Because we are in a DoCommand, we can't just execute an other one and
 				 *  expect the money to be removed. We need to do it ourself! */
-				SubtractMoneyFromPlayer(res);
+				SubtractMoneyFromCompany(res);
 			}
 		}
 	}
 
-	_current_player = old_player;
+	_current_company = old_owner;
 
-	/* Temporarily increase the player's money, to be sure that
+	/* Temporarily increase the company's money, to be sure that
 	 * removing his/her property doesn't fail because of lack of money.
 	 * Not too drastically though, because it could overflow */
-	if (new_player == PLAYER_SPECTATOR) {
-		GetPlayer(old_player)->player_money = UINT64_MAX >> 2; // jackpot ;p
+	if (new_owner == INVALID_OWNER) {
+		GetCompany(old_owner)->money = UINT64_MAX >> 2; // jackpot ;p
 	}
 
-	if (new_player == PLAYER_SPECTATOR) {
+	if (new_owner == INVALID_OWNER) {
 		Subsidy *s;
 
 		for (s = _subsidies; s != endof(_subsidies); s++) {
 			if (s->cargo_type != CT_INVALID && s->age >= 12) {
-				if (GetStation(s->to)->owner == old_player) s->cargo_type = CT_INVALID;
+				if (GetStation(s->to)->owner == old_owner) s->cargo_type = CT_INVALID;
 			}
 		}
 	}
 
 	/* Take care of rating in towns */
 	FOR_ALL_TOWNS(t) {
-		/* If a player takes over, give the ratings to that player. */
-		if (new_player != PLAYER_SPECTATOR) {
-			if (HasBit(t->have_ratings, old_player)) {
-				if (HasBit(t->have_ratings, new_player)) {
+		/* If a company takes over, give the ratings to that company. */
+		if (new_owner != INVALID_OWNER) {
+			if (HasBit(t->have_ratings, old_owner)) {
+				if (HasBit(t->have_ratings, new_owner)) {
 					// use max of the two ratings.
-					t->ratings[new_player] = max(t->ratings[new_player], t->ratings[old_player]);
+					t->ratings[new_owner] = max(t->ratings[new_owner], t->ratings[old_owner]);
 				} else {
-					SetBit(t->have_ratings, new_player);
-					t->ratings[new_player] = t->ratings[old_player];
+					SetBit(t->have_ratings, new_owner);
+					t->ratings[new_owner] = t->ratings[old_owner];
 				}
 			}
 		}
 
-		/* Reset the ratings for the old player */
-		t->ratings[old_player] = RATING_INITIAL;
-		ClrBit(t->have_ratings, old_player);
+		/* Reset the ratings for the old owner */
+		t->ratings[old_owner] = RATING_INITIAL;
+		ClrBit(t->have_ratings, old_owner);
 	}
 
 	{
@@ -366,7 +367,7 @@
 
 		/*  Determine Ids for the new vehicles */
 		FOR_ALL_VEHICLES(v) {
-			if (v->owner == new_player) {
+			if (v->owner == new_owner) {
 				switch (v->type) {
 					case VEH_TRAIN:    if (IsFrontEngine(v)) num_train++; break;
 					case VEH_ROAD:     if (IsRoadVehFront(v)) num_road++; break;
@@ -378,8 +379,8 @@
 		}
 
 		FOR_ALL_VEHICLES(v) {
-			if (v->owner == old_player && IsInsideMM(v->type, VEH_TRAIN, VEH_AIRCRAFT + 1)) {
-				if (new_player == PLAYER_SPECTATOR) {
+			if (v->owner == old_owner && IsInsideMM(v->type, VEH_TRAIN, VEH_AIRCRAFT + 1)) {
+				if (new_owner == INVALID_OWNER) {
 					DeleteWindowById(WC_VEHICLE_VIEW, v->index);
 					DeleteWindowById(WC_VEHICLE_DETAILS, v->index);
 					DeleteWindowById(WC_VEHICLE_ORDERS, v->index);
@@ -408,10 +409,10 @@
 						}
 					}
 				} else {
-					v->owner = new_player;
+					v->owner = new_owner;
 					v->colormap = PAL_NONE;
 					v->group_id = DEFAULT_GROUP;
-					if (IsEngineCountable(v)) GetPlayer(new_player)->num_engines[v->engine_type]++;
+					if (IsEngineCountable(v)) GetCompany(new_owner)->num_engines[v->engine_type]++;
 					switch (v->type) {
 						case VEH_TRAIN:    if (IsFrontEngine(v)) v->unitnumber = ++num_train; break;
 						case VEH_ROAD:     if (IsRoadVehFront(v)) v->unitnumber = ++num_road; break;
@@ -428,24 +429,24 @@
 	{
 		TileIndex tile = 0;
 		do {
-			ChangeTileOwner(tile, old_player, new_player);
+			ChangeTileOwner(tile, old_owner, new_owner);
 		} while (++tile != MapSize());
 
-		if (new_player != PLAYER_SPECTATOR) {
-			/* Update all signals because there can be new segment that was owned by two players
+		if (new_owner != INVALID_OWNER) {
+			/* Update all signals because there can be new segment that was owned by two companies
 			 * and signals were not propagated
 			 * Similiar with crossings - it is needed to bar crossings that weren't before
 			 * because of different owner of crossing and approaching train */
 			tile = 0;
 
 			do {
-				if (IsTileType(tile, MP_RAILWAY) && IsTileOwner(tile, new_player) && HasSignals(tile)) {
+				if (IsTileType(tile, MP_RAILWAY) && IsTileOwner(tile, new_owner) && HasSignals(tile)) {
 					TrackBits tracks = GetTrackBits(tile);
 					do { // there may be two tracks with signals for TRACK_BIT_HORZ and TRACK_BIT_VERT
 						Track track = RemoveFirstTrack(&tracks);
-						if (HasSignalOnTrack(tile, track)) AddTrackToSignalBuffer(tile, track, new_player);
+						if (HasSignalOnTrack(tile, track)) AddTrackToSignalBuffer(tile, track, new_owner);
 					} while (tracks != TRACK_BIT_NONE);
-				} else if (IsLevelCrossingTile(tile) && IsTileOwner(tile, new_player)) {
+				} else if (IsLevelCrossingTile(tile) && IsTileOwner(tile, new_owner)) {
 					UpdateLevelCrossing(tile);
 				}
 			} while (++tile != MapSize());
@@ -457,60 +458,60 @@
 
 	/* In all cases clear replace engine rules.
 	 * Even if it was copied, it could interfere with new owner's rules */
-	RemoveAllEngineReplacementForPlayer(GetPlayer(old_player));
+	RemoveAllEngineReplacementForCompany(GetCompany(old_owner));
 
-	if (new_player == PLAYER_SPECTATOR) {
-		RemoveAllGroupsForPlayer(old_player);
+	if (new_owner == INVALID_OWNER) {
+		RemoveAllGroupsForCompany(old_owner);
 	} else {
 		Group *g;
 		FOR_ALL_GROUPS(g) {
-			if (g->owner == old_player) g->owner = new_player;
+			if (g->owner == old_owner) g->owner = new_owner;
 		}
 	}
 
 	Sign *si;
 	FOR_ALL_SIGNS(si) {
-		if (si->owner == old_player) si->owner = new_player == PLAYER_SPECTATOR ? OWNER_NONE : new_player;
+		if (si->owner == old_owner) si->owner = new_owner == INVALID_OWNER ? OWNER_NONE : new_owner;
 	}
 
 	/* Change color of existing windows */
-	if (new_player != PLAYER_SPECTATOR) ChangeWindowOwner(old_player, new_player);
+	if (new_owner != INVALID_OWNER) ChangeWindowOwner(old_owner, new_owner);
 
-	_current_player = old;
+	_current_company = old;
 
 	MarkWholeScreenDirty();
 }
 
-static void ChangeNetworkOwner(PlayerID current_player, PlayerID new_player)
+static void ChangeNetworkOwner(Owner current_owner, Owner new_owner)
 {
 #ifdef ENABLE_NETWORK
 	if (!_networking) return;
 
-	if (current_player == _local_player) {
-		_network_playas = new_player;
-		SetLocalPlayer(new_player);
+	if (current_owner == _local_company) {
+		_network_playas = new_owner;
+		SetLocalCompany(new_owner);
 	}
 
 	if (!_network_server) return;
 
-	NetworkServerChangeOwner(current_player, new_player);
+	NetworkServerChangeOwner(current_owner, new_owner);
 #endif /* ENABLE_NETWORK */
 }
 
-static void PlayersCheckBankrupt(Player *p)
+static void CompanyCheckBankrupt(Company *c)
 {
-	/*  If the player has money again, it does not go bankrupt */
-	if (p->player_money >= 0) {
-		p->quarters_of_bankrupcy = 0;
+	/*  If the company has money again, it does not go bankrupt */
+	if (c->money >= 0) {
+		c->quarters_of_bankrupcy = 0;
 		return;
 	}
 
-	p->quarters_of_bankrupcy++;
+	c->quarters_of_bankrupcy++;
 
 	CompanyNewsInformation *cni = MallocT<CompanyNewsInformation>(1);
-	cni->FillData(p);
+	cni->FillData(c);
 
-	switch (p->quarters_of_bankrupcy) {
+	switch (c->quarters_of_bankrupcy) {
 		default:
 			free(cni);
 			break;
@@ -522,9 +523,9 @@
 			AddNewsItem(STR_02B6, NS_COMPANY_TROUBLE, 0, 0, cni);
 			break;
 		case 3: {
-			/* XXX - In multiplayer, should we ask other players if it wants to take
+			/* XXX - In multiplayer, should we ask other companies if it wants to take
 		          over when it is a human company? -- TrueLight */
-			if (IsHumanPlayer(p->index)) {
+			if (IsHumanCompany(c->index)) {
 				SetDParam(0, STR_7056_TRANSPORT_COMPANY_IN_TROUBLE);
 				SetDParam(1, STR_7057_WILL_BE_SOLD_OFF_OR_DECLARED);
 				SetDParamStr(2, cni->company_name);
@@ -534,11 +535,11 @@
 
 			/* Check if the company has any value.. if not, declare it bankrupt
 			 *  right now */
-			Money val = CalculateCompanyValue(p);
+			Money val = CalculateCompanyValue(c);
 			if (val > 0) {
-				p->bankrupt_value = val;
-				p->bankrupt_asked = 1 << p->index; // Don't ask the owner
-				p->bankrupt_timeout = 0;
+				c->bankrupt_value = val;
+				c->bankrupt_asked = 1 << c->index; // Don't ask the owner
+				c->bankrupt_timeout = 0;
 				free(cni);
 				break;
 			}
@@ -546,7 +547,7 @@
 		}
 		case 4: {
 			/* Close everything the owner has open */
-			DeletePlayerWindows(p->index);
+			DeleteCompanyWindows(c->index);
 
 			/* Show bankrupt news */
 			SetDParam(0, STR_705C_BANKRUPT);
@@ -554,56 +555,56 @@
 			SetDParamStr(2, cni->company_name);
 			AddNewsItem(STR_02B6, NS_COMPANY_BANKRUPT, 0, 0, cni);
 
-			if (IsHumanPlayer(p->index)) {
-				/* XXX - If we are in offline mode, leave the player playing. Eg. there
-				 * is no THE-END, otherwise mark the player as spectator to make sure
+			if (IsHumanCompany(c->index)) {
+				/* XXX - If we are in offline mode, leave the company playing. Eg. there
+				 * is no THE-END, otherwise mark the client as spectator to make sure
 				 * he/she is no long in control of this company */
 				if (!_networking) {
-					p->bankrupt_asked = 0xFF;
-					p->bankrupt_timeout = 0x456;
+					c->bankrupt_asked = 0xFF;
+					c->bankrupt_timeout = 0x456;
 					break;
 				}
 
-				ChangeNetworkOwner(p->index, PLAYER_SPECTATOR);
+				ChangeNetworkOwner(c->index, COMPANY_SPECTATOR);
 			}
 
-			/* Remove the player */
-			ChangeOwnershipOfPlayerItems(p->index, PLAYER_SPECTATOR);
-			/* Register the player as not-active */
+			/* Remove the company */
+			ChangeOwnershipOfCompanyItems(c->index, INVALID_OWNER);
+			/* Register the company as not-active */
 
-			if (!IsHumanPlayer(p->index) && (!_networking || _network_server) && _ai.enabled)
-				AI_PlayerDied(p->index);
+			if (!IsHumanCompany(c->index) && (!_networking || _network_server) && _ai.enabled)
+				AI_CompanyDied(c->index);
 
-			delete p;
+			delete c;
 		}
 	}
 }
 
-static void PlayersGenStatistics()
+static void CompaniesGenStatistics()
 {
 	Station *st;
-	Player *p;
+	Company *c;
 
 	FOR_ALL_STATIONS(st) {
-		_current_player = st->owner;
+		_current_company = st->owner;
 		CommandCost cost(EXPENSES_PROPERTY, _price.station_value >> 1);
-		SubtractMoneyFromPlayer(cost);
+		SubtractMoneyFromCompany(cost);
 	}
 
 	if (!HasBit(1 << 0 | 1 << 3 | 1 << 6 | 1 << 9, _cur_month))
 		return;
 
-	FOR_ALL_PLAYERS(p) {
-		memmove(&p->old_economy[1], &p->old_economy[0], sizeof(p->old_economy) - sizeof(p->old_economy[0]));
-		p->old_economy[0] = p->cur_economy;
-		memset(&p->cur_economy, 0, sizeof(p->cur_economy));
+	FOR_ALL_COMPANIES(c) {
+		memmove(&c->old_economy[1], &c->old_economy[0], sizeof(c->old_economy) - sizeof(c->old_economy[0]));
+		c->old_economy[0] = c->cur_economy;
+		memset(&c->cur_economy, 0, sizeof(c->cur_economy));
 
-		if (p->num_valid_stat_ent != 24) p->num_valid_stat_ent++;
+		if (c->num_valid_stat_ent != 24) c->num_valid_stat_ent++;
 
-		UpdateCompanyRatingAndValue(p, true);
-		PlayersCheckBankrupt(p);
+		UpdateCompanyRatingAndValue(c, true);
+		CompanyCheckBankrupt(c);
 
-		if (p->block_preview != 0) p->block_preview--;
+		if (c->block_preview != 0) c->block_preview--;
 	}
 
 	InvalidateWindow(WC_INCOME_GRAPH, 0);
@@ -676,17 +677,17 @@
 	InvalidateWindow(WC_PAYMENT_RATES, 0);
 }
 
-static void PlayersPayInterest()
+static void CompaniesPayInterest()
 {
-	const Player* p;
+	const Company *c;
 	int interest = _economy.interest_rate * 54;
 
-	FOR_ALL_PLAYERS(p) {
-		_current_player = p->index;
+	FOR_ALL_COMPANIES(c) {
+		_current_company = c->index;
 
-		SubtractMoneyFromPlayer(CommandCost(EXPENSES_LOAN_INT, (Money)BigMulSU(p->current_loan, interest, 16)));
+		SubtractMoneyFromCompany(CommandCost(EXPENSES_LOAN_INT, (Money)BigMulSU(c->current_loan, interest, 16)));
 
-		SubtractMoneyFromPlayer(CommandCost(EXPENSES_OTHER, _price.station_value >> 2));
+		SubtractMoneyFromCompany(CommandCost(EXPENSES_OTHER, _price.station_value >> 2));
 	}
 }
 
@@ -1097,7 +1098,7 @@
 			modified = true;
 		} else if (s->age == 2*12-1) {
 			st = GetStation(s->to);
-			if (st->owner == _local_player) {
+			if (st->owner == _local_company) {
 				pair = SetupSubsidyDecodeParam(s, 1);
 				AddNewsItem(STR_202F_SUBSIDY_WITHDRAWN_SERVICE, NS_SUBSIDIES, pair.a, pair.b);
 			}
@@ -1352,7 +1353,7 @@
 			pair = SetupSubsidyDecodeParam(s, 0);
 			InjectDParam(1);
 
-			SetDParam(0, _current_player);
+			SetDParam(0, _current_company);
 			AddNewsItem(
 				STR_2031_SERVICE_SUBSIDY_AWARDED + _settings_game.difficulty.subsidy_multiplier,
 				NS_SUBSIDIES,
@@ -1374,11 +1375,11 @@
 
 	assert(num_pieces > 0);
 
-	/* Update player statistics */
+	/* Update company statistics */
 	{
-		Player *p = GetPlayer(_current_player);
-		p->cur_economy.delivered_cargo += num_pieces;
-		SetBit(p->cargo_types, cargo_type);
+		Company *c = GetCompany(_current_company);
+		c->cur_economy.delivered_cargo += num_pieces;
+		SetBit(c->cargo_types, cargo_type);
 	}
 
 	/* Get station pointers. */
@@ -1428,8 +1429,8 @@
 	Station *st = GetStation(last_visited);
 
 	/* The owner of the train wants to be paid */
-	PlayerID old_player = _current_player;
-	_current_player = front_v->owner;
+	CompanyID old_company = _current_company;
+	_current_company = front_v->owner;
 
 	/* At this moment loading cannot be finished */
 	ClrBit(front_v->vehicle_flags, VF_LOADING_FINISHED);
@@ -1496,16 +1497,16 @@
 
 	if (route_profit != 0) {
 		front_v->profit_this_year += vehicle_profit << 8;
-		SubtractMoneyFromPlayer(CommandCost(front_v->GetExpenseType(true), -route_profit));
+		SubtractMoneyFromCompany(CommandCost(front_v->GetExpenseType(true), -route_profit));
 
-		if (IsLocalPlayer() && !PlayVehicleSound(front_v, VSE_LOAD_UNLOAD)) {
+		if (IsLocalCompany() && !PlayVehicleSound(front_v, VSE_LOAD_UNLOAD)) {
 			SndPlayVehicleFx(SND_14_CASHTILL, front_v);
 		}
 
 		ShowCostOrIncomeAnimation(front_v->x_pos, front_v->y_pos, front_v->z_pos, -vehicle_profit);
 	}
 
-	_current_player = old_player;
+	_current_company = old_company;
 }
 
 /**
@@ -1726,10 +1727,10 @@
 	/* Calculate the loading indicator fill percent and display
 	 * In the Game Menu do not display indicators
 	 * If _settings_client.gui.loading_indicators == 2, show indicators (bool can be promoted to int as 0 or 1 - results in 2 > 0,1 )
-	 * if _settings_client.gui.loading_indicators == 1, _local_player must be the owner or must be a spectator to show ind., so 1 > 0
+	 * if _settings_client.gui.loading_indicators == 1, _local_company must be the owner or must be a spectator to show ind., so 1 > 0
 	 * if _settings_client.gui.loading_indicators == 0, do not display indicators ... 0 is never greater than anything
 	 */
-	if (_game_mode != GM_MENU && (_settings_client.gui.loading_indicators > (uint)(v->owner != _local_player && _local_player != PLAYER_SPECTATOR))) {
+	if (_game_mode != GM_MENU && (_settings_client.gui.loading_indicators > (uint)(v->owner != _local_company && _local_company != COMPANY_SPECTATOR))) {
 		StringID percent_up_down = STR_NULL;
 		int percent = CalcPercentVehicleFilled(v, &percent_up_down);
 		if (v->fill_percent_te_id == INVALID_TE_ID) {
@@ -1774,68 +1775,68 @@
 	}
 }
 
-void PlayersMonthlyLoop()
+void CompaniesMonthlyLoop()
 {
-	PlayersGenStatistics();
+	CompaniesGenStatistics();
 	if (_settings_game.economy.inflation) AddInflation();
-	PlayersPayInterest();
-	/* Reset the _current_player flag */
-	_current_player = OWNER_NONE;
+	CompaniesPayInterest();
+	/* Reset the _current_company flag */
+	_current_company = OWNER_NONE;
 	HandleEconomyFluctuations();
 	SubsidyMonthlyHandler();
 }
 
-static void DoAcquireCompany(Player *p)
+static void DoAcquireCompany(Company *c)
 {
-	Player *owner;
+	Company *owner;
 	int i;
 	Money value;
 
 	CompanyNewsInformation *cni = MallocT<CompanyNewsInformation>(1);
-	cni->FillData(p, GetPlayer(_current_player));
+	cni->FillData(c, GetCompany(_current_company));
 
 	SetDParam(0, STR_7059_TRANSPORT_COMPANY_MERGER);
-	SetDParam(1, p->bankrupt_value == 0 ? STR_707F_HAS_BEEN_TAKEN_OVER_BY : STR_705A_HAS_BEEN_SOLD_TO_FOR);
+	SetDParam(1, c->bankrupt_value == 0 ? STR_707F_HAS_BEEN_TAKEN_OVER_BY : STR_705A_HAS_BEEN_SOLD_TO_FOR);
 	SetDParamStr(2, cni->company_name);
 	SetDParamStr(3, cni->other_company_name);
-	SetDParam(4, p->bankrupt_value);
+	SetDParam(4, c->bankrupt_value);
 	AddNewsItem(STR_02B6, NS_COMPANY_MERGER, 0, 0, cni);
 
 	/* original code does this a little bit differently */
-	PlayerID pi = p->index;
-	ChangeNetworkOwner(pi, _current_player);
-	ChangeOwnershipOfPlayerItems(pi, _current_player);
+	CompanyID ci = c->index;
+	ChangeNetworkOwner(ci, _current_company);
+	ChangeOwnershipOfCompanyItems(ci, _current_company);
 
-	if (p->bankrupt_value == 0) {
-		owner = GetPlayer(_current_player);
-		owner->current_loan += p->current_loan;
+	if (c->bankrupt_value == 0) {
+		owner = GetCompany(_current_company);
+		owner->current_loan += c->current_loan;
 	}
 
-	value = CalculateCompanyValue(p) >> 2;
-	PlayerID old_player = _current_player;
+	value = CalculateCompanyValue(c) >> 2;
+	CompanyID old_company = _current_company;
 	for (i = 0; i != 4; i++) {
-		if (p->share_owners[i] != PLAYER_SPECTATOR) {
-			_current_player = p->share_owners[i];
-			SubtractMoneyFromPlayer(CommandCost(EXPENSES_OTHER, -value));
+		if (c->share_owners[i] != COMPANY_SPECTATOR) {
+			_current_company = c->share_owners[i];
+			SubtractMoneyFromCompany(CommandCost(EXPENSES_OTHER, -value));
 		}
 	}
-	_current_player = old_player;
+	_current_company = old_company;
 
-	DeletePlayerWindows(pi);
+	DeleteCompanyWindows(ci);
 	InvalidateWindowClassesData(WC_TRAINS_LIST, 0);
 	InvalidateWindowClassesData(WC_SHIPS_LIST, 0);
 	InvalidateWindowClassesData(WC_ROADVEH_LIST, 0);
 	InvalidateWindowClassesData(WC_AIRCRAFT_LIST, 0);
 
-	delete p;
+	delete c;
 }
 
-extern int GetAmountOwnedBy(const Player *p, PlayerID owner);
+extern int GetAmountOwnedBy(const Company *c, Owner owner);
 
 /** Acquire shares in an opposing company.
  * @param tile unused
  * @param flags type of operation
- * @param p1 player to buy the shares from
+ * @param p1 company to buy the shares from
  * @param p2 unused
  */
 CommandCost CmdBuyShareInCompany(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
@@ -1844,31 +1845,31 @@
 
 	/* Check if buying shares is allowed (protection against modified clients) */
 	/* Cannot buy own shares */
-	if (!IsValidPlayerID((PlayerID)p1) || !_settings_game.economy.allow_shares || _current_player == (PlayerID)p1) return CMD_ERROR;
+	if (!IsValidCompanyID((CompanyID)p1) || !_settings_game.economy.allow_shares || _current_company == (CompanyID)p1) return CMD_ERROR;
 
-	Player *p = GetPlayer((PlayerID)p1);
+	Company *c = GetCompany((CompanyID)p1);
 
 	/* Protect new companies from hostile takeovers */
-	if (_cur_year - p->inaugurated_year < 6) return_cmd_error(STR_PROTECTED);
+	if (_cur_year - c->inaugurated_year < 6) return_cmd_error(STR_PROTECTED);
 
 	/* Those lines are here for network-protection (clients can be slow) */
-	if (GetAmountOwnedBy(p, PLAYER_SPECTATOR) == 0) return cost;
+	if (GetAmountOwnedBy(c, COMPANY_SPECTATOR) == 0) return cost;
 
-	/* We can not buy out a real player (temporarily). TODO: well, enable it obviously */
-	if (GetAmountOwnedBy(p, PLAYER_SPECTATOR) == 1 && !p->is_ai) return cost;
+	/* We can not buy out a real company (temporarily). TODO: well, enable it obviously */
+	if (GetAmountOwnedBy(c, COMPANY_SPECTATOR) == 1 && !c->is_ai) return cost;
 
-	cost.AddCost(CalculateCompanyValue(p) >> 2);
+	cost.AddCost(CalculateCompanyValue(c) >> 2);
 	if (flags & DC_EXEC) {
-		PlayerByte* b = p->share_owners;
+		OwnerByte *b = c->share_owners;
 		int i;
 
-		while (*b != PLAYER_SPECTATOR) b++; /* share owners is guaranteed to contain at least one PLAYER_SPECTATOR */
-		*b = _current_player;
+		while (*b != COMPANY_SPECTATOR) b++; /* share owners is guaranteed to contain at least one COMPANY_SPECTATOR */
+		*b = _current_company;
 
-		for (i = 0; p->share_owners[i] == _current_player;) {
+		for (i = 0; c->share_owners[i] == _current_company;) {
 			if (++i == 4) {
-				p->bankrupt_value = 0;
-				DoAcquireCompany(p);
+				c->bankrupt_value = 0;
+				DoAcquireCompany(c);
 				break;
 			}
 		}
@@ -1880,28 +1881,28 @@
 /** Sell shares in an opposing company.
  * @param tile unused
  * @param flags type of operation
- * @param p1 player to sell the shares from
+ * @param p1 company to sell the shares from
  * @param p2 unused
  */
 CommandCost CmdSellShareInCompany(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
 {
 	/* Check if selling shares is allowed (protection against modified clients) */
 	/* Cannot sell own shares */
-	if (!IsValidPlayerID((PlayerID)p1) || !_settings_game.economy.allow_shares || _current_player == (PlayerID)p1) return CMD_ERROR;
+	if (!IsValidCompanyID((CompanyID)p1) || !_settings_game.economy.allow_shares || _current_company == (CompanyID)p1) return CMD_ERROR;
 
-	Player *p = GetPlayer((PlayerID)p1);
+	Company *c = GetCompany((CompanyID)p1);
 
 	/* Those lines are here for network-protection (clients can be slow) */
-	if (GetAmountOwnedBy(p, _current_player) == 0) return CommandCost();
+	if (GetAmountOwnedBy(c, _current_company) == 0) return CommandCost();
 
 	/* adjust it a little to make it less profitable to sell and buy */
-	Money cost = CalculateCompanyValue(p) >> 2;
+	Money cost = CalculateCompanyValue(c) >> 2;
 	cost = -(cost - (cost >> 7));
 
 	if (flags & DC_EXEC) {
-		PlayerByte* b = p->share_owners;
-		while (*b != _current_player) b++; // share owners is guaranteed to contain player
-		*b = PLAYER_SPECTATOR;
+		OwnerByte *b = c->share_owners;
+		while (*b != _current_company) b++; // share owners is guaranteed to contain company
+		*b = COMPANY_SPECTATOR;
 		InvalidateWindow(WC_COMPANY, p1);
 	}
 	return CommandCost(EXPENSES_OTHER, cost);
@@ -1910,30 +1911,30 @@
 /** Buy up another company.
  * When a competing company is gone bankrupt you get the chance to purchase
  * that company.
- * @todo currently this only works for AI players
+ * @todo currently this only works for AI companies
  * @param tile unused
  * @param flags type of operation
- * @param p1 player/company to buy up
+ * @param p1 company to buy up
  * @param p2 unused
  */
 CommandCost CmdBuyCompany(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
 {
-	PlayerID pid = (PlayerID)p1;
+	CompanyID cid = (CompanyID)p1;
 
 	/* Disable takeovers in multiplayer games */
-	if (!IsValidPlayerID(pid) || _networking) return CMD_ERROR;
+	if (!IsValidCompanyID(cid) || _networking) return CMD_ERROR;
 
-	/* Do not allow players to take over themselves */
-	if (pid == _current_player) return CMD_ERROR;
+	/* Do not allow companies to take over themselves */
+	if (cid == _current_company) return CMD_ERROR;
 
-	Player *p = GetPlayer(pid);
+	Company *c = GetCompany(cid);
 
-	if (!p->is_ai) return CMD_ERROR;
+	if (!c->is_ai) return CMD_ERROR;
 
 	if (flags & DC_EXEC) {
-		DoAcquireCompany(p);
+		DoAcquireCompany(c);
 	}
-	return CommandCost(EXPENSES_OTHER, p->bankrupt_value);
+	return CommandCost(EXPENSES_OTHER, c->bankrupt_value);
 }
 
 /** Prices */
--- a/src/economy_func.h	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/economy_func.h	Tue Sep 30 20:39:50 2008 +0000
@@ -15,23 +15,21 @@
 #include "player_type.h"
 #include "station_type.h"
 
-struct Player;
-
 void ResetPriceBaseMultipliers();
 void SetPriceBaseMultiplier(uint price, byte factor);
 void ResetEconomy();
 
 extern const ScoreInfo _score_info[];
-extern int _score_part[MAX_PLAYERS][SCORE_END];
+extern int _score_part[MAX_COMPANIES][SCORE_END];
 extern Economy _economy;
-extern Subsidy _subsidies[MAX_PLAYERS];
+extern Subsidy _subsidies[MAX_COMPANIES];
 /* Prices and also the fractional part. */
 extern Prices _price;
 extern uint16 _price_frac[NUM_PRICES];
 extern Money  _cargo_payment_rates[NUM_CARGO];
 extern uint16 _cargo_payment_rates_frac[NUM_CARGO];
 
-int UpdateCompanyRatingAndValue(Player *p, bool update);
+int UpdateCompanyRatingAndValue(Company *c, bool update);
 Pair SetupSubsidyDecodeParam(const Subsidy *s, bool mode);
 void DeleteSubsidyWithTown(TownID index);
 void DeleteSubsidyWithIndustry(IndustryID index);
--- a/src/elrail.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/elrail.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -465,7 +465,7 @@
 int32 SettingsDisableElrail(int32 p1)
 {
 	Vehicle *v;
-	Player *p;
+	Company *c;
 	bool disable = (p1 != 0);
 
 	/* we will now walk through all electric train engines and change their railtypes if it is the wrong one*/
@@ -506,7 +506,7 @@
 		}
 	}
 
-	FOR_ALL_PLAYERS(p) p->avail_railtypes = GetPlayerRailtypes(p->index);
+	FOR_ALL_COMPANIES(c) c->avail_railtypes = GetCompanyRailtypes(c->index);
 
 	/* This resets the _last_built_railtype, which will be invalid for electric
 	* rails. It may have unintended consequences if that function is ever
--- a/src/engine.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/engine.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -114,17 +114,17 @@
 	free(this->name);
 }
 
-/** Sets cached values in Player::num_vehicles and Group::num_vehicles
+/** Sets cached values in Company::num_vehicles and Group::num_vehicles
  */
 void SetCachedEngineCounts()
 {
 	uint engines = GetEnginePoolSize();
 
-	/* Set up the engine count for all players */
-	Player *p;
-	FOR_ALL_PLAYERS(p) {
-		free(p->num_engines);
-		p->num_engines = CallocT<EngineID>(engines);
+	/* Set up the engine count for all companies */
+	Company *c;
+	FOR_ALL_COMPANIES(c) {
+		free(c->num_engines);
+		c->num_engines = CallocT<EngineID>(engines);
 	}
 
 	/* Recalculate */
@@ -140,7 +140,7 @@
 
 		assert(v->engine_type < engines);
 
-		GetPlayer(v->owner)->num_engines[v->engine_type]++;
+		GetCompany(v->owner)->num_engines[v->engine_type]++;
 
 		if (v->group_id == DEFAULT_GROUP) continue;
 
@@ -195,12 +195,12 @@
 	uint age = e->age;
 
 	/* Check for early retirement */
-	if (e->player_avail != 0 && !_settings_game.vehicle.never_expire_vehicles) {
+	if (e->company_avail != 0 && !_settings_game.vehicle.never_expire_vehicles) {
 		int retire_early = e->info.retire_early;
 		uint retire_early_max_age = max(0, e->duration_phase_1 + e->duration_phase_2 - retire_early * 12);
 		if (retire_early != 0 && age >= retire_early_max_age) {
 			/* Early retirement is enabled and we're past the date... */
-			e->player_avail = 0;
+			e->company_avail = 0;
 			AddRemoveEngineFromAutoreplaceAndBuildWindows(e->type);
 		}
 	}
@@ -218,7 +218,7 @@
 	} else {
 		/* time's up for this engine.
 		 * We will now completely retire this design */
-		e->player_avail = 0;
+		e->company_avail = 0;
 		e->reliability = e->reliability_final;
 		/* Kick this engine out of the lists */
 		AddRemoveEngineFromAutoreplaceAndBuildWindows(e->type);
@@ -239,7 +239,7 @@
 
 		e->age = 0;
 		e->flags = 0;
-		e->player_avail = 0;
+		e->company_avail = 0;
 
 		/* The magic value of 729 days below comes from the NewGRF spec. If the
 		 * base intro date is before 1922 then the random number of days is not
@@ -248,7 +248,7 @@
 		e->intro_date = ei->base_intro <= ConvertYMDToDate(1922, 0, 1) ? ei->base_intro : (Date)GB(r, 0, 9) + ei->base_intro;
 		if (e->intro_date <= _date) {
 			e->age = (aging_date - e->intro_date) >> 5;
-			e->player_avail = (byte)-1;
+			e->company_avail = (CompanyMask)-1;
 			e->flags |= ENGINE_AVAILABLE;
 		}
 
@@ -275,63 +275,63 @@
 		/* prevent certain engines from ever appearing. */
 		if (!HasBit(ei->climates, _settings_game.game_creation.landscape)) {
 			e->flags |= ENGINE_AVAILABLE;
-			e->player_avail = 0;
+			e->company_avail = 0;
 		}
 	}
 
 	/* Update the bitmasks for the vehicle lists */
-	Player *p;
-	FOR_ALL_PLAYERS(p) {
-		p->avail_railtypes = GetPlayerRailtypes(p->index);
-		p->avail_roadtypes = GetPlayerRoadtypes(p->index);
+	Company *c;
+	FOR_ALL_COMPANIES(c) {
+		c->avail_railtypes = GetCompanyRailtypes(c->index);
+		c->avail_roadtypes = GetCompanyRoadtypes(c->index);
 	}
 }
 
-static void AcceptEnginePreview(EngineID eid, PlayerID player)
+static void AcceptEnginePreview(EngineID eid, CompanyID company)
 {
 	Engine *e = GetEngine(eid);
-	Player *p = GetPlayer(player);
+	Company *c = GetCompany(company);
 
-	SetBit(e->player_avail, player);
+	SetBit(e->company_avail, company);
 	if (e->type == VEH_TRAIN) {
 		const RailVehicleInfo *rvi = RailVehInfo(eid);
 
 		assert(rvi->railtype < RAILTYPE_END);
-		SetBit(p->avail_railtypes, rvi->railtype);
+		SetBit(c->avail_railtypes, rvi->railtype);
 	} else if (e->type == VEH_ROAD) {
-		SetBit(p->avail_roadtypes, HasBit(EngInfo(eid)->misc_flags, EF_ROAD_TRAM) ? ROADTYPE_TRAM : ROADTYPE_ROAD);
+		SetBit(c->avail_roadtypes, HasBit(EngInfo(eid)->misc_flags, EF_ROAD_TRAM) ? ROADTYPE_TRAM : ROADTYPE_ROAD);
 	}
 
-	e->preview_player_rank = 0xFF;
-	if (player == _local_player) {
+	e->preview_company_rank = 0xFF;
+	if (company == _local_company) {
 		AddRemoveEngineFromAutoreplaceAndBuildWindows(e->type);
 	}
 }
 
-static PlayerID GetBestPlayer(uint8 pp)
+static CompanyID GetBestCompany(uint8 pp)
 {
-	const Player *p;
+	const Company *c;
 	int32 best_hist;
-	PlayerID best_player;
+	CompanyID best_company;
 	uint mask = 0;
 
 	do {
 		best_hist = -1;
-		best_player = PLAYER_SPECTATOR;
-		FOR_ALL_PLAYERS(p) {
-			if (p->block_preview == 0 && !HasBit(mask, p->index) &&
-					p->old_economy[0].performance_history > best_hist) {
-				best_hist = p->old_economy[0].performance_history;
-				best_player = p->index;
+		best_company = INVALID_COMPANY;
+		FOR_ALL_COMPANIES(c) {
+			if (c->block_preview == 0 && !HasBit(mask, c->index) &&
+					c->old_economy[0].performance_history > best_hist) {
+				best_hist = c->old_economy[0].performance_history;
+				best_company = c->index;
 			}
 		}
 
-		if (best_player == PLAYER_SPECTATOR) return PLAYER_SPECTATOR;
+		if (best_company == INVALID_COMPANY) return INVALID_COMPANY;
 
-		SetBit(mask, best_player);
+		SetBit(mask, best_company);
 	} while (--pp != 0);
 
-	return best_player;
+	return best_company;
 }
 
 void EnginesDailyLoop()
@@ -343,33 +343,33 @@
 		EngineID i = e->index;
 		if (e->flags & ENGINE_EXCLUSIVE_PREVIEW) {
 			if (e->flags & ENGINE_OFFER_WINDOW_OPEN) {
-				if (e->preview_player_rank != 0xFF && !--e->preview_wait) {
+				if (e->preview_company_rank != 0xFF && !--e->preview_wait) {
 					e->flags &= ~ENGINE_OFFER_WINDOW_OPEN;
 					DeleteWindowById(WC_ENGINE_PREVIEW, i);
-					e->preview_player_rank++;
+					e->preview_company_rank++;
 				}
-			} else if (e->preview_player_rank != 0xFF) {
-				PlayerID best_player = GetBestPlayer(e->preview_player_rank);
+			} else if (e->preview_company_rank != 0xFF) {
+				CompanyID best_company = GetBestCompany(e->preview_company_rank);
 
-				if (best_player == PLAYER_SPECTATOR) {
-					e->preview_player_rank = 0xFF;
+				if (best_company == INVALID_COMPANY) {
+					e->preview_company_rank = 0xFF;
 					continue;
 				}
 
-				if (!IsHumanPlayer(best_player)) {
+				if (!IsHumanCompany(best_company)) {
 					/* XXX - TTDBUG: TTD has a bug here ???? */
-					AcceptEnginePreview(i, best_player);
+					AcceptEnginePreview(i, best_company);
 				} else {
 					e->flags |= ENGINE_OFFER_WINDOW_OPEN;
 					e->preview_wait = 20;
-					if (IsInteractivePlayer(best_player)) ShowEnginePreviewWindow(i);
+					if (IsInteractiveCompany(best_company)) ShowEnginePreviewWindow(i);
 				}
 			}
 		}
 	}
 }
 
-/** Accept an engine prototype. XXX - it is possible that the top-player
+/** Accept an engine prototype. XXX - it is possible that the top-company
  * changes while you are waiting to accept the offer? Then it becomes invalid
  * @param tile unused
  * @param flags operation to perfom
@@ -382,9 +382,9 @@
 
 	if (!IsEngineIndex(p1)) return CMD_ERROR;
 	e = GetEngine(p1);
-	if (GetBestPlayer(e->preview_player_rank) != _current_player) return CMD_ERROR;
+	if (GetBestCompany(e->preview_company_rank) != _current_company) return CMD_ERROR;
 
-	if (flags & DC_EXEC) AcceptEnginePreview(p1, _current_player);
+	if (flags & DC_EXEC) AcceptEnginePreview(p1, _current_company);
 
 	return CommandCost();
 }
@@ -394,26 +394,26 @@
 static void NewVehicleAvailable(Engine *e)
 {
 	Vehicle *v;
-	Player *p;
+	Company *c;
 	EngineID index = e->index;
 
-	/* In case the player didn't build the vehicle during the intro period,
-	 * prevent that player from getting future intro periods for a while. */
+	/* In case the company didn't build the vehicle during the intro period,
+	 * prevent that company from getting future intro periods for a while. */
 	if (e->flags & ENGINE_EXCLUSIVE_PREVIEW) {
-		FOR_ALL_PLAYERS(p) {
-			uint block_preview = p->block_preview;
+		FOR_ALL_COMPANIES(c) {
+			uint block_preview = c->block_preview;
 
-			if (!HasBit(e->player_avail, p->index)) continue;
+			if (!HasBit(e->company_avail, c->index)) continue;
 
 			/* We assume the user did NOT build it.. prove me wrong ;) */
-			p->block_preview = 20;
+			c->block_preview = 20;
 
 			FOR_ALL_VEHICLES(v) {
 				if (v->type == VEH_TRAIN || v->type == VEH_ROAD || v->type == VEH_SHIP ||
 						(v->type == VEH_AIRCRAFT && IsNormalAircraft(v))) {
-					if (v->owner == p->index && v->engine_type == index) {
+					if (v->owner == c->index && v->engine_type == index) {
 						/* The user did prove me wrong, so restore old value */
-						p->block_preview = block_preview;
+						c->block_preview = block_preview;
 						break;
 					}
 				}
@@ -424,8 +424,8 @@
 	e->flags = (e->flags & ~ENGINE_EXCLUSIVE_PREVIEW) | ENGINE_AVAILABLE;
 	AddRemoveEngineFromAutoreplaceAndBuildWindows(e->type);
 
-	/* Now available for all players */
-	e->player_avail = (PlayerMask)-1;
+	/* Now available for all companies */
+	e->company_avail = (CompanyMask)-1;
 
 	/* Do not introduce new rail wagons */
 	if (IsWagon(index)) return;
@@ -434,10 +434,10 @@
 		/* maybe make another rail type available */
 		RailType railtype = e->u.rail.railtype;
 		assert(railtype < RAILTYPE_END);
-		FOR_ALL_PLAYERS(p) SetBit(p->avail_railtypes, railtype);
+		FOR_ALL_COMPANIES(c) SetBit(c->avail_railtypes, railtype);
 	} else if (e->type == VEH_ROAD) {
 		/* maybe make another road type available */
-		FOR_ALL_PLAYERS(p) SetBit(p->avail_roadtypes, HasBit(e->info.misc_flags, EF_ROAD_TRAM) ? ROADTYPE_TRAM : ROADTYPE_ROAD);
+		FOR_ALL_COMPANIES(c) SetBit(c->avail_roadtypes, HasBit(e->info.misc_flags, EF_ROAD_TRAM) ? ROADTYPE_TRAM : ROADTYPE_ROAD);
 	}
 
 	SetDParam(0, GetEngineCategoryName(index));
@@ -457,15 +457,15 @@
 			}
 
 			if (!(e->flags & ENGINE_AVAILABLE) && _date >= (e->intro_date + 365)) {
-				/* Introduce it to all players */
+				/* Introduce it to all companies */
 				NewVehicleAvailable(e);
 			} else if (!(e->flags & (ENGINE_AVAILABLE|ENGINE_EXCLUSIVE_PREVIEW)) && _date >= e->intro_date) {
-				/* Introduction date has passed.. show introducing dialog to one player. */
+				/* Introduction date has passed.. show introducing dialog to one companies. */
 				e->flags |= ENGINE_EXCLUSIVE_PREVIEW;
 
 				/* Do not introduce new rail wagons */
 				if (!IsWagon(e->index))
-					e->preview_player_rank = 1; // Give to the player with the highest rating.
+					e->preview_company_rank = 1; // Give to the company with the highest rating.
 			}
 		}
 	}
@@ -529,13 +529,13 @@
 
 
 /** Check if an engine is buildable.
- * @param engine index of the engine to check.
- * @param type   the type the engine should be.
- * @param player index of the player.
+ * @param engine  index of the engine to check.
+ * @param type    the type the engine should be.
+ * @param company index of the company.
  * @return True if an engine is valid, of the specified type, and buildable by
- *              the given player.
+ *              the given company.
  */
-bool IsEngineBuildable(EngineID engine, VehicleType type, PlayerID player)
+bool IsEngineBuildable(EngineID engine, VehicleType type, CompanyID company)
 {
 	/* check if it's an engine that is in the engine array */
 	if (!IsEngineIndex(engine)) return false;
@@ -546,12 +546,12 @@
 	if (e->type != type) return false;
 
 	/* check if it's available */
-	if (!HasBit(e->player_avail, player)) return false;
+	if (!HasBit(e->company_avail, company)) return false;
 
 	if (type == VEH_TRAIN) {
-		/* Check if the rail type is available to this player */
-		const Player *p = GetPlayer(player);
-		if (!HasBit(p->avail_railtypes, RailVehInfo(engine)->railtype)) return false;
+		/* Check if the rail type is available to this company */
+		const Company *c = GetCompany(company);
+		if (!HasBit(c->avail_railtypes, RailVehInfo(engine)->railtype)) return false;
 	}
 
 	return true;
@@ -602,10 +602,10 @@
 
 	    SLE_VAR(Engine, lifelength,          SLE_UINT8),
 	    SLE_VAR(Engine, flags,               SLE_UINT8),
-	    SLE_VAR(Engine, preview_player_rank, SLE_UINT8),
+	    SLE_VAR(Engine, preview_company_rank,SLE_UINT8),
 	    SLE_VAR(Engine, preview_wait,        SLE_UINT8),
 	SLE_CONDNULL(1, 0, 44),
-	    SLE_VAR(Engine, player_avail,        SLE_UINT8),
+	    SLE_VAR(Engine, company_avail,       SLE_UINT8),
 	SLE_CONDSTR(Engine, name,                SLE_STR, 0,                 84, SL_MAX_VERSION),
 
 	/* reserve extra space in savegame here. (currently 16 bytes) */
@@ -664,9 +664,9 @@
 		e->duration_phase_3    = se->duration_phase_3;
 		e->lifelength          = se->lifelength;
 		e->flags               = se->flags;
-		e->preview_player_rank = se->preview_player_rank;
+		e->preview_company_rank= se->preview_company_rank;
 		e->preview_wait        = se->preview_wait;
-		e->player_avail        = se->player_avail;
+		e->company_avail       = se->company_avail;
 		if (se->name != NULL) e->name = strdup(se->name);
 	}
 
--- a/src/engine_base.h	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/engine_base.h	Tue Sep 30 20:39:50 2008 +0000
@@ -20,9 +20,9 @@
 	uint16 duration_phase_1, duration_phase_2, duration_phase_3;
 	byte lifelength;
 	byte flags;
-	uint8 preview_player_rank;
+	uint8 preview_company_rank;
 	byte preview_wait;
-	PlayerMask player_avail;
+	CompanyMask company_avail;
 	uint8 image_index; ///< Original vehicle image index
 	VehicleType type; ///< type, ie VEH_ROAD, VEH_TRAIN, etc.
 
--- a/src/engine_func.h	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/engine_func.h	Tue Sep 30 20:39:50 2008 +0000
@@ -25,7 +25,7 @@
 void LoadCustomEngineNames();
 void DeleteCustomEngineNames();
 
-bool IsEngineBuildable(EngineID engine, VehicleType type, PlayerID player);
+bool IsEngineBuildable(EngineID engine, VehicleType type, CompanyID company);
 CargoID GetEngineCargoType(EngineID engine);
 void SetCachedEngineCounts();
 
--- a/src/engine_type.h	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/engine_type.h	Tue Sep 30 20:39:50 2008 +0000
@@ -134,8 +134,8 @@
  */
 enum {
 	ENGINE_AVAILABLE         = 1, ///< This vehicle is available to everyone.
-	ENGINE_EXCLUSIVE_PREVIEW = 2, ///< This vehicle is in the exclusive preview stage, either being used or being offered to a player.
-	ENGINE_OFFER_WINDOW_OPEN = 4, ///< The exclusive offer window is currently open for a player.
+	ENGINE_EXCLUSIVE_PREVIEW = 2, ///< This vehicle is in the exclusive preview stage, either being used or being offered to a company.
+	ENGINE_OFFER_WINDOW_OPEN = 4, ///< The exclusive offer window is currently open for a company.
 };
 
 enum {
--- a/src/functions.h	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/functions.h	Tue Sep 30 20:39:50 2008 +0000
@@ -15,10 +15,10 @@
 void DrawClearLandFence(const TileInfo *ti);
 void TileLoopClearHelper(TileIndex tile);
 
-/* players.cpp */
-bool CheckPlayerHasMoney(CommandCost cost);
-void SubtractMoneyFromPlayer(CommandCost cost);
-void SubtractMoneyFromPlayerFract(PlayerID player, CommandCost cost);
+/* company_cmd.cpp */
+bool CheckCompanyHasMoney(CommandCost cost);
+void SubtractMoneyFromCompany(CommandCost cost);
+void SubtractMoneyFromCompanyFract(CompanyID company, CommandCost cost);
 bool CheckOwnership(Owner owner);
 bool CheckTileOwnership(TileIndex tile);
 
--- a/src/genworld.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/genworld.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -36,7 +36,7 @@
 void GenerateTrees();
 
 void StartupEconomy();
-void StartupPlayers();
+void StartupCompanies();
 void StartupDisasters();
 
 void InitializeGame(uint size_x, uint size_y, bool reset_date);
@@ -126,7 +126,7 @@
 
 		/* These are probably pointless when inside the scenario editor. */
 		SetGeneratingWorldProgress(GWP_GAME_INIT, 3);
-		StartupPlayers();
+		StartupCompanies();
 		IncreaseGeneratingWorldProgress(GWP_GAME_INIT);
 		StartupEngines();
 		IncreaseGeneratingWorldProgress(GWP_GAME_INIT);
@@ -145,7 +145,7 @@
 		}
 
 		ResetObjectToPlace();
-		_local_player = _gw.lp;
+		_local_company = _gw.lc;
 
 		SetGeneratingWorldProgress(GWP_GAME_START, 1);
 		/* Call any callback */
@@ -259,15 +259,15 @@
 	_gw.active = true;
 	_gw.abort  = false;
 	_gw.abortp = NULL;
-	_gw.lp     = _local_player;
+	_gw.lc     = _local_company;
 	_gw.wait_for_draw = false;
 	_gw.quit_thread   = false;
 	_gw.threaded      = true;
 
 	/* This disables some commands and stuff */
-	SetLocalPlayer(PLAYER_SPECTATOR);
+	SetLocalCompany(COMPANY_SPECTATOR);
 	/* Make sure everything is done via OWNER_NONE */
-	_current_player = OWNER_NONE;
+	_current_company = OWNER_NONE;
 
 	/* Set the date before loading sprites as some newgrfs check it */
 	SetDate(ConvertYMDToDate(_settings_game.game_creation.starting_year, 0, 1));
--- a/src/genworld.h	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/genworld.h	Tue Sep 30 20:39:50 2008 +0000
@@ -36,7 +36,7 @@
 	bool quit_thread;      ///< Do we want to quit the active thread
 	bool threaded;         ///< Whether we run _GenerateWorld threaded
 	GenerateWorldMode mode;///< What mode are we making a world in
-	PlayerID lp;           ///< The local_player before generating
+	CompanyID lc;          ///< The local_company before generating
 	uint size_x;           ///< X-size of the map
 	uint size_y;           ///< Y-size of the map
 	gw_done_proc *proc;    ///< Proc that is called when done (can be NULL)
--- a/src/graph_gui.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/graph_gui.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -21,8 +21,8 @@
 #include "table/strings.h"
 #include "table/sprites.h"
 
-/* Bitmasks of player and cargo indices that shouldn't be drawn. */
-static uint _legend_excluded_players;
+/* Bitmasks of company and cargo indices that shouldn't be drawn. */
+static uint _legend_excluded_companies;
 static uint _legend_excluded_cargo;
 
 /* Apparently these don't play well with enums. */
@@ -37,7 +37,7 @@
 	GraphLegendWindow(const WindowDesc *desc, WindowNumber window_number) : Window(desc, window_number)
 	{
 		for (uint i = 3; i < this->widget_count; i++) {
-			if (!HasBit(_legend_excluded_players, i - 3)) this->LowerWidget(i);
+			if (!HasBit(_legend_excluded_companies, i - 3)) this->LowerWidget(i);
 		}
 
 		this->FindWindowPlacementAndResize(desc);
@@ -45,22 +45,22 @@
 
 	virtual void OnPaint()
 	{
-		for (PlayerID p = PLAYER_FIRST; p < MAX_PLAYERS; p++) {
-			if (IsValidPlayerID(p)) continue;
+		for (CompanyID c = COMPANY_FIRST; c < MAX_COMPANIES; c++) {
+			if (IsValidCompanyID(c)) continue;
 
-			SetBit(_legend_excluded_players, p);
-			this->RaiseWidget(p + 3);
+			SetBit(_legend_excluded_companies, c);
+			this->RaiseWidget(c + 3);
 		}
 
 		this->DrawWidgets();
 
-		const Player *p;
-		FOR_ALL_PLAYERS(p) {
-			DrawPlayerIcon(p->index, 4, 18 + p->index * 12);
+		const Company *c;
+		FOR_ALL_COMPANIES(c) {
+			DrawCompanyIcon(c->index, 4, 18 + c->index * 12);
 
-			SetDParam(0, p->index);
-			SetDParam(1, p->index);
-			DrawString(21, 17 + p->index * 12, STR_7021, HasBit(_legend_excluded_players, p->index) ? TC_BLACK : TC_WHITE);
+			SetDParam(0, c->index);
+			SetDParam(1, c->index);
+			DrawString(21, 17 + c->index * 12, STR_7021, HasBit(_legend_excluded_companies, c->index) ? TC_BLACK : TC_WHITE);
 		}
 	}
 
@@ -68,7 +68,7 @@
 	{
 		if (!IsInsideMM(widget, 3, 11)) return;
 
-		ToggleBit(_legend_excluded_players, widget - 3);
+		ToggleBit(_legend_excluded_companies, widget - 3);
 		this->ToggleWidgetLoweredState(widget);
 		this->SetDirty();
 		InvalidateWindow(WC_INCOME_GRAPH, 0);
@@ -155,8 +155,8 @@
 		int x_axis_offset;               ///< Distance from the top of the graph to the x axis.
 
 		/* the colors and cost array of GraphDrawer must accomodate
-		* both values for cargo and players. So if any are higher, quit */
-		assert(GRAPH_MAX_DATASETS >= (int)NUM_CARGO && GRAPH_MAX_DATASETS >= (int)MAX_PLAYERS);
+		* both values for cargo and companies. So if any are higher, quit */
+		assert(GRAPH_MAX_DATASETS >= (int)NUM_CARGO && GRAPH_MAX_DATASETS >= (int)MAX_COMPANIES);
 		assert(this->num_vert_lines > 0);
 
 		byte grid_colour = _colour_gradient[COLOUR_GREY][4];
@@ -354,19 +354,19 @@
 	{
 		this->DrawWidgets();
 
-		uint excluded_players = _legend_excluded_players;
+		uint excluded_companies = _legend_excluded_companies;
 
-		/* Exclude the players which aren't valid */
-		for (PlayerID p = PLAYER_FIRST; p < MAX_PLAYERS; p++) {
-			if (!IsValidPlayerID(p)) SetBit(excluded_players, p);
+		/* Exclude the companies which aren't valid */
+		for (CompanyID c = COMPANY_FIRST; c < MAX_COMPANIES; c++) {
+			if (!IsValidCompanyID(c)) SetBit(excluded_companies, c);
 		}
-		this->excluded_data = excluded_players;
+		this->excluded_data = excluded_companies;
 		this->num_vert_lines = 24;
 
 		byte nums = 0;
-		const Player *p;
-		FOR_ALL_PLAYERS(p) {
-			nums = max(nums, p->num_valid_stat_ent);
+		const Company *c;
+		FOR_ALL_COMPANIES(c) {
+			nums = max(nums, c->num_valid_stat_ent);
 		}
 		this->num_on_x_axis = min(nums, 24);
 
@@ -381,12 +381,12 @@
 		this->month = mo;
 
 		int numd = 0;
-		for (PlayerID k = PLAYER_FIRST; k < MAX_PLAYERS; k++) {
-			if (IsValidPlayerID(k)) {
-				p = GetPlayer(k);
-				this->colors[numd] = _colour_gradient[p->player_color][6];
+		for (CompanyID k = COMPANY_FIRST; k < MAX_COMPANIES; k++) {
+			if (IsValidCompanyID(k)) {
+				c = GetCompany(k);
+				this->colors[numd] = _colour_gradient[c->colour][6];
 				for (int j = this->num_on_x_axis, i = 0; --j >= 0;) {
-					this->cost[numd][i] = (j >= p->num_valid_stat_ent) ? INVALID_DATAPOINT : GetGraphData(p, j);
+					this->cost[numd][i] = (j >= c->num_valid_stat_ent) ? INVALID_DATAPOINT : GetGraphData(c, j);
 					i++;
 				}
 			}
@@ -398,7 +398,7 @@
 		this->DrawGraph();
 	}
 
-	virtual OverflowSafeInt64 GetGraphData(const Player *p, int j)
+	virtual OverflowSafeInt64 GetGraphData(const Company *c, int j)
 	{
 		return INVALID_DATAPOINT;
 	}
@@ -421,9 +421,9 @@
 		this->FindWindowPlacementAndResize(desc);
 	}
 
-	virtual OverflowSafeInt64 GetGraphData(const Player *p, int j)
+	virtual OverflowSafeInt64 GetGraphData(const Company *c, int j)
 	{
-		return p->old_economy[j].income + p->old_economy[j].expenses;
+		return c->old_economy[j].income + c->old_economy[j].expenses;
 	}
 };
 
@@ -460,9 +460,9 @@
 		this->FindWindowPlacementAndResize(desc);
 	}
 
-	virtual OverflowSafeInt64 GetGraphData(const Player *p, int j)
+	virtual OverflowSafeInt64 GetGraphData(const Company *c, int j)
 	{
-		return p->old_economy[j].income;
+		return c->old_economy[j].income;
 	}
 };
 
@@ -497,9 +497,9 @@
 		this->FindWindowPlacementAndResize(desc);
 	}
 
-	virtual OverflowSafeInt64 GetGraphData(const Player *p, int j)
+	virtual OverflowSafeInt64 GetGraphData(const Company *c, int j)
 	{
-		return p->old_economy[j].delivered_cargo;
+		return c->old_economy[j].delivered_cargo;
 	}
 };
 
@@ -534,9 +534,9 @@
 		this->FindWindowPlacementAndResize(desc);
 	}
 
-	virtual OverflowSafeInt64 GetGraphData(const Player *p, int j)
+	virtual OverflowSafeInt64 GetGraphData(const Company *c, int j)
 	{
-		return p->old_economy[j].performance_history;
+		return c->old_economy[j].performance_history;
 	}
 
 	virtual void OnClick(Point pt, int widget)
@@ -578,9 +578,9 @@
 		this->FindWindowPlacementAndResize(desc);
 	}
 
-	virtual OverflowSafeInt64 GetGraphData(const Player *p, int j)
+	virtual OverflowSafeInt64 GetGraphData(const Company *c, int j)
 	{
-		return p->old_economy[j].company_value;
+		return c->old_economy[j].company_value;
 	}
 };
 
@@ -668,13 +668,13 @@
 			if (!cs->IsValid()) continue;
 
 			/* Only draw labels for widgets that exist. If the widget doesn't
-				* exist then the local player has used the climate cheat or
-				* changed the NewGRF configuration with this window open. */
+			 * exist then the local company has used the climate cheat or
+			 * changed the NewGRF configuration with this window open. */
 			if (i + 3 < this->widget_count) {
 				/* Since the buttons have no text, no images,
-					* both the text and the colored box have to be manually painted.
-					* clk_dif will move one pixel down and one pixel to the right
-					* when the button is clicked */
+				 * both the text and the colored box have to be manually painted.
+				 * clk_dif will move one pixel down and one pixel to the right
+				 * when the button is clicked */
 				byte clk_dif = this->IsWidgetLowered(i + 3) ? 1 : 0;
 
 				GfxFillRect(x + clk_dif, y + clk_dif, x + 8 + clk_dif, y + 5 + clk_dif, 0);
@@ -759,63 +759,63 @@
 
 class CompanyLeagueWindow : public Window {
 private:
-	GUIList<const Player*> players;
+	GUIList<const Company*> companies;
 
 	/**
 	 * (Re)Build the company league list
 	 */
-	void BuildPlayerList()
+	void BuildCompanyList()
 	{
-		if (!this->players.NeedRebuild()) return;
+		if (!this->companies.NeedRebuild()) return;
 
-		this->players.Clear();
+		this->companies.Clear();
 
-		const Player *p;
-		FOR_ALL_PLAYERS(p) {
-			*this->players.Append() = p;
+		const Company *c;
+		FOR_ALL_COMPANIES(c) {
+			*this->companies.Append() = c;
 		}
 
-		this->players.Compact();
-		this->players.RebuildDone();
+		this->companies.Compact();
+		this->companies.RebuildDone();
 	}
 
 	/** Sort the company league by performance history */
-	static int CDECL PerformanceSorter(const Player* const *p1, const Player* const *p2)
+	static int CDECL PerformanceSorter(const Company* const *c1, const Company* const *c2)
 	{
-		return (*p2)->old_economy[1].performance_history - (*p1)->old_economy[1].performance_history;
+		return (*c2)->old_economy[1].performance_history - (*c1)->old_economy[1].performance_history;
 	}
 
 public:
 	CompanyLeagueWindow(const WindowDesc *desc, WindowNumber window_number) : Window(desc, window_number)
 	{
-		this->players.ForceRebuild();
-		this->players.NeedResort();
+		this->companies.ForceRebuild();
+		this->companies.NeedResort();
 
 		this->FindWindowPlacementAndResize(desc);
 	}
 
 	virtual void OnPaint()
 	{
-		this->BuildPlayerList();
-		this->players.Sort(&PerformanceSorter);
+		this->BuildCompanyList();
+		this->companies.Sort(&PerformanceSorter);
 
 		this->DrawWidgets();
 
-		for (uint i = 0; i != this->players.Length(); i++) {
-			const Player *p = this->players[i];
+		for (uint i = 0; i != this->companies.Length(); i++) {
+			const Company *c = this->companies[i];
 			SetDParam(0, i + STR_01AC_1ST);
-			SetDParam(1, p->index);
-			SetDParam(2, p->index);
-			SetDParam(3, GetPerformanceTitleFromValue(p->old_economy[1].performance_history));
+			SetDParam(1, c->index);
+			SetDParam(2, c->index);
+			SetDParam(3, GetPerformanceTitleFromValue(c->old_economy[1].performance_history));
 
 			DrawString(2, 15 + i * 10, i == 0 ? STR_7054 : STR_7055, TC_FROMSTRING);
-			DrawPlayerIcon(p->index, 27, 16 + i * 10);
+			DrawCompanyIcon(c->index, 27, 16 + i * 10);
 		}
 	}
 
 	virtual void OnTick()
 	{
-		if (this->players.NeedResort()) {
+		if (this->companies.NeedResort()) {
 			this->SetDirty();
 		}
 	}
@@ -823,9 +823,9 @@
 	virtual void OnInvalidateData(int data)
 	{
 		if (data == 0) {
-			this->players.ForceRebuild();
+			this->companies.ForceRebuild();
 		} else {
-			this->players.ForceResort();
+			this->companies.ForceResort();
 		}
 	}
 };
@@ -858,35 +858,35 @@
 struct PerformanceRatingDetailWindow : Window {
 private:
 	enum PerformanteRatingWidgets {
-		PRW_PLAYER_FIRST = 13,
-		PRW_PLAYER_LAST  = 20,
+		PRW_COMPANY_FIRST = 13,
+		PRW_COMPANY_LAST  = 20,
 	};
 
 public:
-	static PlayerID player;
+	static CompanyID company;
 	int timeout;
 
 	PerformanceRatingDetailWindow(const WindowDesc *desc, WindowNumber window_number) : Window(desc, window_number)
 	{
-		/* Disable the players who are not active */
-		for (PlayerID i = PLAYER_FIRST; i < MAX_PLAYERS; i++) {
-			this->SetWidgetDisabledState(i + PRW_PLAYER_FIRST, !IsValidPlayerID(i));
+		/* Disable the companies who are not active */
+		for (CompanyID i = COMPANY_FIRST; i < MAX_COMPANIES; i++) {
+			this->SetWidgetDisabledState(i + PRW_COMPANY_FIRST, !IsValidCompanyID(i));
 		}
 
-		this->UpdatePlayerStats();
+		this->UpdateCompanyStats();
 
-		if (player != INVALID_PLAYER) this->LowerWidget(player + PRW_PLAYER_FIRST);
+		if (company != INVALID_COMPANY) this->LowerWidget(company + PRW_COMPANY_FIRST);
 
 		this->FindWindowPlacementAndResize(desc);
 	}
 
-	void UpdatePlayerStats()
+	void UpdateCompanyStats()
 	{
-		/* Update all player stats with the current data
+		/* Update all company stats with the current data
 		 * (this is because _score_info is not saved to a savegame) */
-		Player *p;
-		FOR_ALL_PLAYERS(p) {
-			UpdateCompanyRatingAndValue(p, false);
+		Company *c;
+		FOR_ALL_COMPANIES(c) {
+			UpdateCompanyRatingAndValue(c, false);
 		}
 
 		this->timeout = DAY_TICKS * 5;
@@ -903,39 +903,39 @@
 		/* Draw standard stuff */
 		this->DrawWidgets();
 
-		/* Check if the currently selected player is still active. */
-		if (player == INVALID_PLAYER || !IsValidPlayerID(player)) {
-			if (player != INVALID_PLAYER) {
+		/* Check if the currently selected company is still active. */
+		if (company == INVALID_COMPANY || !IsValidCompanyID(company)) {
+			if (company != INVALID_COMPANY) {
 				/* Raise and disable the widget for the previous selection. */
-				this->RaiseWidget(player + PRW_PLAYER_FIRST);
-				this->DisableWidget(player + PRW_PLAYER_FIRST);
+				this->RaiseWidget(company + PRW_COMPANY_FIRST);
+				this->DisableWidget(company + PRW_COMPANY_FIRST);
 				this->SetDirty();
 
-				player = INVALID_PLAYER;
+				company = INVALID_COMPANY;
 			}
 
-			for (PlayerID i = PLAYER_FIRST; i < MAX_PLAYERS; i++) {
-				if (IsValidPlayerID(i)) {
-					/* Lower the widget corresponding to this player. */
-					this->LowerWidget(i + PRW_PLAYER_FIRST);
+			for (CompanyID i = COMPANY_FIRST; i < MAX_COMPANIES; i++) {
+				if (IsValidCompanyID(i)) {
+					/* Lower the widget corresponding to this company. */
+					this->LowerWidget(i + PRW_COMPANY_FIRST);
 					this->SetDirty();
 
-					player = i;
+					company = i;
 					break;
 				}
 			}
 		}
 
-		/* If there are no active players, don't display anything else. */
-		if (player == INVALID_PLAYER) return;
+		/* If there are no active companies, don't display anything else. */
+		if (company == INVALID_COMPANY) return;
 
-		/* Paint the player icons */
-		for (PlayerID i = PLAYER_FIRST; i < MAX_PLAYERS; i++) {
-			if (!IsValidPlayerID(i)) {
-				/* Check if we have the player as an active player */
-				if (!this->IsWidgetDisabled(i + PRW_PLAYER_FIRST)) {
-					/* Bah, player gone :( */
-					this->DisableWidget(i + PRW_PLAYER_FIRST);
+		/* Paint the company icons */
+		for (CompanyID i = COMPANY_FIRST; i < MAX_COMPANIES; i++) {
+			if (!IsValidCompanyID(i)) {
+				/* Check if we have the company as an active company */
+				if (!this->IsWidgetDisabled(i + PRW_COMPANY_FIRST)) {
+					/* Bah, company gone :( */
+					this->DisableWidget(i + PRW_COMPANY_FIRST);
 
 					/* We need a repaint */
 					this->SetDirty();
@@ -943,16 +943,16 @@
 				continue;
 			}
 
-			/* Check if we have the player marked as inactive */
-			if (this->IsWidgetDisabled(i + PRW_PLAYER_FIRST)) {
-				/* New player! Yippie :p */
-				this->EnableWidget(i + PRW_PLAYER_FIRST);
+			/* Check if we have the company marked as inactive */
+			if (this->IsWidgetDisabled(i + PRW_COMPANY_FIRST)) {
+				/* New company! Yippie :p */
+				this->EnableWidget(i + PRW_COMPANY_FIRST);
 				/* We need a repaint */
 				this->SetDirty();
 			}
 
-			x = (i == player) ? 1 : 0;
-			DrawPlayerIcon(i, i * 37 + 13 + x, 16 + x);
+			x = (i == company) ? 1 : 0;
+			DrawCompanyIcon(i, i * 37 + 13 + x, 16 + x);
 		}
 
 		/* The colors used to show how the progress is going */
@@ -961,7 +961,7 @@
 
 		/* Draw all the score parts */
 		for (ScoreID i = SCORE_BEGIN; i < SCORE_END; i++) {
-			int val    = _score_part[player][i];
+			int val    = _score_part[company][i];
 			int needed = _score_info[i].needed;
 			int score  = _score_info[i].score;
 
@@ -1024,12 +1024,12 @@
 	virtual void OnClick(Point pt, int widget)
 	{
 		/* Check which button is clicked */
-		if (IsInsideMM(widget, PRW_PLAYER_FIRST, PRW_PLAYER_LAST + 1)) {
+		if (IsInsideMM(widget, PRW_COMPANY_FIRST, PRW_COMPANY_LAST + 1)) {
 			/* Is it no on disable? */
 			if (!this->IsWidgetDisabled(widget)) {
-				this->RaiseWidget(player + PRW_PLAYER_FIRST);
-				player = (PlayerID)(widget - PRW_PLAYER_FIRST);
-				this->LowerWidget(player + PRW_PLAYER_FIRST);
+				this->RaiseWidget(company + PRW_COMPANY_FIRST);
+				company = (CompanyID)(widget - PRW_COMPANY_FIRST);
+				this->LowerWidget(company + PRW_COMPANY_FIRST);
 				this->SetDirty();
 			}
 		}
@@ -1039,15 +1039,15 @@
 	{
 		if (_pause_game != 0) return;
 
-		/* Update the player score every 5 days */
+		/* Update the company score every 5 days */
 		if (--this->timeout == 0) {
-			this->UpdatePlayerStats();
+			this->UpdateCompanyStats();
 			this->SetDirty();
 		}
 	}
 };
 
-PlayerID PerformanceRatingDetailWindow::player = INVALID_PLAYER;
+CompanyID PerformanceRatingDetailWindow::company = INVALID_COMPANY;
 
 
 static const Widget _performance_rating_detail_widgets[] = {
--- a/src/group.h	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/group.h	Tue Sep 30 20:39:50 2008 +0000
@@ -17,13 +17,13 @@
 	char *name;                             ///< Group Name
 
 	uint16 num_vehicle;                     ///< Number of vehicles wich belong to the group
-	PlayerByte owner;                       ///< Group Owner
+	OwnerByte owner;                        ///< Group Owner
 	VehicleTypeByte vehicle_type;           ///< Vehicle type of the group
 
 	bool replace_protection;                ///< If set to true, the global autoreplace have no effect on the group
-	uint16 *num_engines;                    ///< Caches the number of engines of each type the player owns (no need to save this)
+	uint16 *num_engines;                    ///< Caches the number of engines of each type the company owns (no need to save this)
 
-	Group(PlayerID owner = INVALID_PLAYER);
+	Group(CompanyID owner = INVALID_COMPANY);
 	virtual ~Group();
 
 	bool IsValid() const;
@@ -41,7 +41,7 @@
 }
 
 /**
- * Checks if a GroupID stands for all vehicles of a player
+ * Checks if a GroupID stands for all vehicles of a company
  * @param id_g The GroupID to check
  * @return true is id_g is identical to ALL_GROUP
  */
@@ -73,7 +73,7 @@
  * @param id_e The EngineID of the engine to count
  * @return The number of engines with EngineID id_e in the group
  */
-uint GetGroupNumEngines(PlayerID p, GroupID id_g, EngineID id_e);
+uint GetGroupNumEngines(CompanyID company, GroupID id_g, EngineID id_e);
 
 static inline void IncreaseGroupNumVehicle(GroupID id_g)
 {
@@ -90,6 +90,6 @@
 void SetTrainGroupID(Vehicle *v, GroupID grp);
 void UpdateTrainGroupID(Vehicle *v);
 void RemoveVehicleFromGroup(const Vehicle *v);
-void RemoveAllGroupsForPlayer(const PlayerID p);
+void RemoveAllGroupsForCompany(const CompanyID company);
 
 #endif /* GROUP_H */
--- a/src/group_cmd.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/group_cmd.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -48,7 +48,7 @@
 DEFINE_OLD_POOL_GENERIC(Group, Group)
 
 
-Group::Group(PlayerID owner)
+Group::Group(Owner owner)
 {
 	this->owner = owner;
 
@@ -58,13 +58,13 @@
 Group::~Group()
 {
 	free(this->name);
-	this->owner = INVALID_PLAYER;
+	this->owner = INVALID_OWNER;
 	free(this->num_engines);
 }
 
 bool Group::IsValid() const
 {
-	return this->owner != INVALID_PLAYER;
+	return this->owner != INVALID_OWNER;
 }
 
 void InitializeGroup(void)
@@ -83,16 +83,16 @@
 CommandCost CmdCreateGroup(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
 {
 	VehicleType vt = (VehicleType)p1;
-	if (!IsPlayerBuildableVehicleType(vt)) return CMD_ERROR;
+	if (!IsCompanyBuildableVehicleType(vt)) return CMD_ERROR;
 
 	if (!Group::CanAllocateItem()) return CMD_ERROR;
 
 	if (flags & DC_EXEC) {
-		Group *g = new Group(_current_player);
+		Group *g = new Group(_current_company);
 		g->replace_protection = false;
 		g->vehicle_type = vt;
 
-		InvalidateWindowData(GetWindowClassForVehicleType(vt), (vt << 11) | VLW_GROUP_LIST | _current_player);
+		InvalidateWindowData(GetWindowClassForVehicleType(vt), (vt << 11) | VLW_GROUP_LIST | _current_company);
 	}
 
 	return CommandCost();
@@ -111,7 +111,7 @@
 	if (!IsValidGroupID(p1)) return CMD_ERROR;
 
 	Group *g = GetGroup(p1);
-	if (g->owner != _current_player) return CMD_ERROR;
+	if (g->owner != _current_company) return CMD_ERROR;
 
 	if (flags & DC_EXEC) {
 		Vehicle *v;
@@ -125,13 +125,13 @@
 		if (_backup_orders_data.group == g->index) _backup_orders_data.group = DEFAULT_GROUP;
 
 		/* If we set an autoreplace for the group we delete, remove it. */
-		if (_current_player < MAX_PLAYERS) {
-			Player *p;
+		if (_current_company < MAX_COMPANIES) {
+			Company *c;
 			EngineRenew *er;
 
-			p = GetPlayer(_current_player);
+			c = GetCompany(_current_company);
 			FOR_ALL_ENGINE_RENEWS(er) {
-				if (er->group_id == g->index) RemoveEngineReplacementForPlayer(p, er->from, g->index, flags);
+				if (er->group_id == g->index) RemoveEngineReplacementForCompany(c, er->from, g->index, flags);
 			}
 		}
 
@@ -141,7 +141,7 @@
 		DeleteWindowById(WC_REPLACE_VEHICLE, g->vehicle_type);
 		delete g;
 
-		InvalidateWindowData(GetWindowClassForVehicleType(vt), (vt << 11) | VLW_GROUP_LIST | _current_player);
+		InvalidateWindowData(GetWindowClassForVehicleType(vt), (vt << 11) | VLW_GROUP_LIST | _current_company);
 	}
 
 	return CommandCost();
@@ -173,7 +173,7 @@
 	if (!IsValidGroupID(p1)) return CMD_ERROR;
 
 	Group *g = GetGroup(p1);
-	if (g->owner != _current_player) return CMD_ERROR;
+	if (g->owner != _current_company) return CMD_ERROR;
 
 	bool reset = StrEmpty(_cmd_text);
 
@@ -188,7 +188,7 @@
 		/* Assign the new one */
 		g->name = reset ? NULL : strdup(_cmd_text);
 
-		InvalidateWindowData(GetWindowClassForVehicleType(g->vehicle_type), (g->vehicle_type << 11) | VLW_GROUP_LIST | _current_player);
+		InvalidateWindowData(GetWindowClassForVehicleType(g->vehicle_type), (g->vehicle_type << 11) | VLW_GROUP_LIST | _current_company);
 	}
 
 	return CommandCost();
@@ -213,10 +213,10 @@
 
 	if (IsValidGroupID(new_g)) {
 		Group *g = GetGroup(new_g);
-		if (g->owner != _current_player || g->vehicle_type != v->type) return CMD_ERROR;
+		if (g->owner != _current_company || g->vehicle_type != v->type) return CMD_ERROR;
 	}
 
-	if (v->owner != _current_player || !v->IsPrimaryVehicle()) return CMD_ERROR;
+	if (v->owner != _current_company || !v->IsPrimaryVehicle()) return CMD_ERROR;
 
 	if (flags & DC_EXEC) {
 		DecreaseGroupNumVehicle(v->group_id);
@@ -237,7 +237,7 @@
 
 		/* Update the Replace Vehicle Windows */
 		InvalidateWindow(WC_REPLACE_VEHICLE, v->type);
-		InvalidateWindowData(GetWindowClassForVehicleType(v->type), (v->type << 11) | VLW_GROUP_LIST | _current_player);
+		InvalidateWindowData(GetWindowClassForVehicleType(v->type), (v->type << 11) | VLW_GROUP_LIST | _current_company);
 	}
 
 	return CommandCost();
@@ -253,7 +253,7 @@
 CommandCost CmdAddSharedVehicleGroup(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
 {
 	VehicleType type = (VehicleType)p2;
-	if (!IsValidGroupID(p1) || !IsPlayerBuildableVehicleType(type)) return CMD_ERROR;
+	if (!IsValidGroupID(p1) || !IsCompanyBuildableVehicleType(type)) return CMD_ERROR;
 
 	if (flags & DC_EXEC) {
 		Vehicle *v;
@@ -273,7 +273,7 @@
 			}
 		}
 
-		InvalidateWindowData(GetWindowClassForVehicleType(type), (type << 11) | VLW_GROUP_LIST | _current_player);
+		InvalidateWindowData(GetWindowClassForVehicleType(type), (type << 11) | VLW_GROUP_LIST | _current_company);
 	}
 
 	return CommandCost();
@@ -290,10 +290,10 @@
 CommandCost CmdRemoveAllVehiclesGroup(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
 {
 	VehicleType type = (VehicleType)p2;
-	if (!IsValidGroupID(p1) || !IsPlayerBuildableVehicleType(type)) return CMD_ERROR;
+	if (!IsValidGroupID(p1) || !IsCompanyBuildableVehicleType(type)) return CMD_ERROR;
 
 	Group *g = GetGroup(p1);
-	if (g->owner != _current_player) return CMD_ERROR;
+	if (g->owner != _current_company) return CMD_ERROR;
 
 	if (flags & DC_EXEC) {
 		GroupID old_g = p1;
@@ -309,7 +309,7 @@
 			}
 		}
 
-		InvalidateWindowData(GetWindowClassForVehicleType(type), (type << 11) | VLW_GROUP_LIST | _current_player);
+		InvalidateWindowData(GetWindowClassForVehicleType(type), (type << 11) | VLW_GROUP_LIST | _current_company);
 	}
 
 	return CommandCost();
@@ -329,12 +329,12 @@
 	if (!IsValidGroupID(p1)) return CMD_ERROR;
 
 	Group *g = GetGroup(p1);
-	if (g->owner != _current_player) return CMD_ERROR;
+	if (g->owner != _current_company) return CMD_ERROR;
 
 	if (flags & DC_EXEC) {
 		g->replace_protection = HasBit(p2, 0);
 
-		InvalidateWindowData(GetWindowClassForVehicleType(g->vehicle_type), (g->vehicle_type << 11) | VLW_GROUP_LIST | _current_player);
+		InvalidateWindowData(GetWindowClassForVehicleType(g->vehicle_type), (g->vehicle_type << 11) | VLW_GROUP_LIST | _current_company);
 	}
 
 	return CommandCost();
@@ -398,26 +398,26 @@
 	InvalidateWindow(WC_REPLACE_VEHICLE, VEH_TRAIN);
 }
 
-uint GetGroupNumEngines(PlayerID p, GroupID id_g, EngineID id_e)
+uint GetGroupNumEngines(CompanyID company, GroupID id_g, EngineID id_e)
 {
 	if (IsValidGroupID(id_g)) return GetGroup(id_g)->num_engines[id_e];
 
-	uint num = GetPlayer(p)->num_engines[id_e];
+	uint num = GetCompany(company)->num_engines[id_e];
 	if (!IsDefaultGroupID(id_g)) return num;
 
 	const Group *g;
 	FOR_ALL_GROUPS(g) {
-		if (g->owner == p) num -= g->num_engines[id_e];
+		if (g->owner == company) num -= g->num_engines[id_e];
 	}
 	return num;
 }
 
-void RemoveAllGroupsForPlayer(const PlayerID p)
+void RemoveAllGroupsForCompany(const CompanyID company)
 {
 	Group *g;
 
 	FOR_ALL_GROUPS(g) {
-		if (p == g->owner) delete g;
+		if (company == g->owner) delete g;
 	}
 }
 
--- a/src/group_gui.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/group_gui.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -132,7 +132,7 @@
 	 *
 	 * @param owner The owner of the window
 	 */
-	void BuildGroupList(PlayerID owner)
+	void BuildGroupList(Owner owner)
 	{
 		if (!this->groups.NeedRebuild()) return;
 
@@ -175,7 +175,7 @@
 public:
 	VehicleGroupWindow(const WindowDesc *desc, WindowNumber window_number) : BaseVehicleListWindow(desc, window_number)
 	{
-		const PlayerID owner = (PlayerID)GB(this->window_number, 0, 8);
+		const Owner owner = (Owner)GB(this->window_number, 0, 8);
 		this->vehicle_type = (VehicleType)GB(this->window_number, 11, 5);
 
 		this->caption_color = owner;
@@ -286,14 +286,14 @@
 
 	virtual void OnPaint()
 	{
-		const PlayerID owner = (PlayerID)GB(this->window_number, 0, 8);
+		const Owner owner = (Owner)GB(this->window_number, 0, 8);
 		int x = this->widget[GRP_WIDGET_LIST_VEHICLE].left + 2;
 		int y1 = PLY_WND_PRC__OFFSET_TOP_WIDGET + 2;
 		int max;
 		int i;
 
-		/* If we select the all vehicles, this->list will contain all vehicles of the player
-			* else this->list will contain all vehicles which belong to the selected group */
+		/* If we select the all vehicles, this->list will contain all vehicles of the owner
+		 * else this->list will contain all vehicles which belong to the selected group */
 		this->BuildVehicleList(owner, this->group_sel, IsAllGroupID(this->group_sel) ? VLW_STANDARD : VLW_GROUP_LIST);
 		this->SortVehicleList();
 
@@ -310,26 +310,26 @@
 		}
 
 		/* Disable all lists management button when the list is empty */
-		this->SetWidgetsDisabledState(this->vehicles.Length() == 0 || _local_player != owner,
+		this->SetWidgetsDisabledState(this->vehicles.Length() == 0 || _local_company != owner,
 				GRP_WIDGET_STOP_ALL,
 				GRP_WIDGET_START_ALL,
 				GRP_WIDGET_MANAGE_VEHICLES_DROPDOWN,
 				WIDGET_LIST_END);
 
 		/* Disable the group specific function when we select the default group or all vehicles */
-		this->SetWidgetsDisabledState(IsDefaultGroupID(this->group_sel) || IsAllGroupID(this->group_sel) || _local_player != owner,
+		this->SetWidgetsDisabledState(IsDefaultGroupID(this->group_sel) || IsAllGroupID(this->group_sel) || _local_company != owner,
 				GRP_WIDGET_DELETE_GROUP,
 				GRP_WIDGET_RENAME_GROUP,
 				GRP_WIDGET_REPLACE_PROTECTION,
 				WIDGET_LIST_END);
 
-		/* Disable remaining buttons for non-local player
-			* Needed while changing _local_player, eg. by cheats
-			* All procedures (eg. move vehicle to another group)
-			*  verify, whether you are the owner of the vehicle,
-			*  so it doesn't have to be disabled
-			*/
-		this->SetWidgetsDisabledState(_local_player != owner,
+		/* Disable remaining buttons for non-local companies
+		 * Needed while changing _local_company, eg. by cheats
+		 * All procedures (eg. move vehicle to another group)
+		 *  verify, whether you are the owner of the vehicle,
+		 *  so it doesn't have to be disabled
+		 */
+		this->SetWidgetsDisabledState(_local_company != owner,
 				GRP_WIDGET_CREATE_GROUP,
 				GRP_WIDGET_AVAILABLE_VEHICLES,
 				WIDGET_LIST_END);
@@ -705,11 +705,11 @@
 	_group_widgets,
 };
 
-void ShowPlayerGroup(PlayerID player, VehicleType vehicle_type)
+void ShowCompanyGroup(CompanyID company, VehicleType vehicle_type)
 {
-	if (!IsValidPlayerID(player)) return;
+	if (!IsValidCompanyID(company)) return;
 
 	_group_desc.cls = GetWindowClassForVehicleType(vehicle_type);
-	WindowNumber num = (vehicle_type << 11) | VLW_GROUP_LIST | player;
+	WindowNumber num = (vehicle_type << 11) | VLW_GROUP_LIST | company;
 	AllocateWindowDescFront<VehicleGroupWindow>(&_group_desc, num);
 }
--- a/src/group_gui.h	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/group_gui.h	Tue Sep 30 20:39:50 2008 +0000
@@ -7,6 +7,6 @@
 
 #include "vehicle_type.h"
 
-void ShowPlayerGroup(PlayerID player, VehicleType veh);
+void ShowCompanyGroup(CompanyID company, VehicleType veh);
 
 #endif /* GROUP_GUI_H */
--- a/src/industry_cmd.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/industry_cmd.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -420,10 +420,10 @@
 	 * with magic_bulldozer cheat you can destroy industries
 	 * (area around OILRIG is water, so water shouldn't flood it
 	 */
-	if ((_current_player != OWNER_WATER && _game_mode != GM_EDITOR &&
+	if ((_current_company != OWNER_WATER && _game_mode != GM_EDITOR &&
 			!_cheats.magic_bulldozer.value) ||
 			((flags & DC_AUTO) != 0) ||
-			(_current_player == OWNER_WATER &&
+			(_current_company == OWNER_WATER &&
 				((indspec->behaviour & INDUSTRYBEH_BUILT_ONWATER) ||
 				HasBit(GetIndustryTileSpec(GetIndustryGfx(tile))->slopes_refused, 5)))) {
 		SetDParam(0, indspec->name);
@@ -852,11 +852,11 @@
 	b[1] = i->produced_cargo[1];
 }
 
-static void ChangeTileOwner_Industry(TileIndex tile, PlayerID old_player, PlayerID new_player)
+static void ChangeTileOwner_Industry(TileIndex tile, Owner old_owner, Owner new_owner)
 {
 	/* If the founder merges, the industry was created by the merged company */
 	Industry *i = GetIndustryByTile(tile);
-	if (i->founder == old_player) i->founder = (new_player == PLAYER_SPECTATOR) ? OWNER_NONE : new_player;
+	if (i->founder == old_owner) i->founder = (new_owner == INVALID_OWNER) ? OWNER_NONE : new_owner;
 }
 
 static const byte _plantfarmfield_type[] = {1, 1, 1, 1, 1, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6};
@@ -976,17 +976,17 @@
 static bool SearchLumberMillTrees(TileIndex tile, void *user_data)
 {
 	if (IsTileType(tile, MP_TREES) && GetTreeGrowth(tile) > 2) { ///< 3 and up means all fully grown trees
-		PlayerID old_player = _current_player;
+		CompanyID old_company = _current_company;
 		/* found a tree */
 
-		_current_player = OWNER_NONE;
+		_current_company = OWNER_NONE;
 		_industry_sound_ctr = 1;
 		_industry_sound_tile = tile;
 		SndPlayTileFx(SND_38_CHAINSAW, tile);
 
 		DoCommand(tile, 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR);
 
-		_current_player = old_player;
+		_current_company = old_company;
 		return true;
 	}
 	return false;
@@ -1361,10 +1361,10 @@
 	/* Check if we don't leave the map */
 	if (TileX(cur_tile) == 0 || TileY(cur_tile) == 0 || TileX(cur_tile) + size_x >= MapMaxX() || TileY(cur_tile) + size_y >= MapMaxY()) return false;
 
-	/* _current_player is OWNER_NONE for randomly generated industries and in editor, or the player who funded or prospected the industry.
+	/* _current_company is OWNER_NONE for randomly generated industries and in editor, or the company who funded or prospected the industry.
 	 * Perform terraforming as OWNER_TOWN to disable autoslope. */
-	PlayerID old_player = _current_player;
-	_current_player = OWNER_TOWN;
+	CompanyID old_company = _current_company;
+	_current_company = OWNER_TOWN;
 
 	BEGIN_TILE_LOOP(tile_walk, size_x, size_y, cur_tile) {
 		curh = TileHeight(tile_walk);
@@ -1372,13 +1372,13 @@
 			/* This tile needs terraforming. Check if we can do that without
 			 *  damaging the surroundings too much. */
 			if (!CheckCanTerraformSurroundingTiles(tile_walk, h, 0)) {
-				_current_player = old_player;
+				_current_company = old_company;
 				return false;
 			}
 			/* This is not 100% correct check, but the best we can do without modifying the map.
 			 *  What is missing, is if the difference in height is more than 1.. */
 			if (CmdFailed(DoCommand(tile_walk, SLOPE_N, (curh > h) ? 0 : 1, flags & ~DC_EXEC, CMD_TERRAFORM_LAND))) {
-				_current_player = old_player;
+				_current_company = old_company;
 				return false;
 			}
 		}
@@ -1398,7 +1398,7 @@
 		} END_TILE_LOOP(tile_walk, size_x, size_y, cur_tile)
 	}
 
-	_current_player = old_player;
+	_current_company = old_company;
 	return true;
 }
 
@@ -1502,7 +1502,7 @@
 	i->last_prod_year = _cur_year;
 	i->last_month_production[0] = i->production_rate[0] * 8;
 	i->last_month_production[1] = i->production_rate[1] * 8;
-	i->founder = _current_player;
+	i->founder = _current_company;
 
 	if (HasBit(indspec->callback_flags, CBM_IND_DECIDE_COLOUR)) {
 		uint16 res = GetIndustryCallback(CBID_INDUSTRY_DECIDE_COLOUR, 0, 0, i, type, INVALID_TILE);
@@ -1734,8 +1734,8 @@
 	num = (ind_spc->check_proc == CHECK_REFINERY || ind_spc->check_proc == CHECK_OIL_RIG) ? ScaleByMapSize1D(num) : ScaleByMapSize(num);
 
 	if (_settings_game.difficulty.number_industries != 0) {
-		PlayerID old_player = _current_player;
-		_current_player = OWNER_NONE;
+		CompanyID old_company = _current_company;
+		_current_company = OWNER_NONE;
 		assert(num > 0);
 
 		do {
@@ -1748,7 +1748,7 @@
 			}
 		} while (--num);
 
-		_current_player = old_player;
+		_current_company = old_company;
 	}
 }
 
@@ -1959,7 +1959,7 @@
 *
 * @param ind: Industry being investigated.
 *
-* @return: 0 if nobody can service the industry, 2 if the local player can
+* @return: 0 if nobody can service the industry, 2 if the local company can
 * service the industry, and 1 otherwise (only competitors can service the
 * industry)
 */
@@ -1974,7 +1974,7 @@
 	int result = 0;
 	FOR_ALL_VEHICLES(v) {
 		/* Is it worthwhile to try this vehicle? */
-		if (v->owner != _local_player && result != 0) continue;
+		if (v->owner != _local_company && result != 0) continue;
 
 		/* Check whether it accepts the right kind of cargo */
 		bool c_accepts = false;
@@ -2005,7 +2005,7 @@
 				if ((o->GetUnloadType() & OUFB_UNLOAD) && !c_accepts) break;
 
 				if (stations.find(st) != stations.end()) {
-					if (v->owner == _local_player) return 2; // Player services industry
+					if (v->owner == _local_company) return 2; // Company services industry
 					result = 1; // Competitor services industry
 				}
 			}
@@ -2026,9 +2026,9 @@
 	NewsSubtype ns;
 
 	switch (WhoCanServiceIndustry(ind)) {
-		case 0: ns = NS_INDUSTRY_NOBODY; break;
-		case 1: ns = NS_INDUSTRY_OTHER;  break;
-		case 2: ns = NS_INDUSTRY_PLAYER; break;
+		case 0: ns = NS_INDUSTRY_NOBODY;  break;
+		case 1: ns = NS_INDUSTRY_OTHER;   break;
+		case 2: ns = NS_INDUSTRY_COMPANY; break;
 		default: NOT_REACHED(); break;
 	}
 	SetDParam(2, abs(percent));
@@ -2210,9 +2210,9 @@
 			ns = NS_INDUSTRY_CLOSE;
 		} else {
 			switch (WhoCanServiceIndustry(i)) {
-				case 0: ns = NS_INDUSTRY_NOBODY; break;
-				case 1: ns = NS_INDUSTRY_OTHER;  break;
-				case 2: ns = NS_INDUSTRY_PLAYER; break;
+				case 0: ns = NS_INDUSTRY_NOBODY;  break;
+				case 1: ns = NS_INDUSTRY_OTHER;   break;
+				case 2: ns = NS_INDUSTRY_COMPANY; break;
 				default: NOT_REACHED(); break;
 			}
 		}
@@ -2256,8 +2256,8 @@
 		return;  // Nothing to do? get out
 	}
 
-	PlayerID old_player = _current_player;
-	_current_player = OWNER_NONE;
+	CompanyID old_company = _current_company;
+	_current_company = OWNER_NONE;
 
 	/* perform the required industry changes for the day */
 	for (uint16 j = 0; j < change_loop; j++) {
@@ -2270,7 +2270,7 @@
 		}
 	}
 
-	_current_player = old_player;
+	_current_company = old_company;
 
 	/* production-change */
 	InvalidateWindowData(WC_INDUSTRY_DIRECTORY, 0, 1);
@@ -2279,8 +2279,8 @@
 void IndustryMonthlyLoop()
 {
 	Industry *i;
-	PlayerID old_player = _current_player;
-	_current_player = OWNER_NONE;
+	CompanyID old_company = _current_company;
+	_current_company = OWNER_NONE;
 
 	FOR_ALL_INDUSTRIES(i) {
 		UpdateIndustryStatistics(i);
@@ -2291,7 +2291,7 @@
 		}
 	}
 
-	_current_player = old_player;
+	_current_company = old_company;
 
 	/* production-change */
 	InvalidateWindowData(WC_INDUSTRY_DIRECTORY, 0, 1);
--- a/src/industry_gui.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/industry_gui.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -359,7 +359,7 @@
 				return;
 			}
 
-			_current_player = OWNER_NONE;
+			_current_company = OWNER_NONE;
 			_generating_world = true;
 			_ignore_restrictions = true;
 			success = DoCommandP(tile, (InteractiveRandomRange(indsp->num_table) << 16) | this->selected_type, seed, NULL, CMD_BUILD_INDUSTRY | CMD_MSG(STR_4830_CAN_T_CONSTRUCT_THIS_INDUSTRY));
@@ -420,7 +420,7 @@
 
 void ShowBuildIndustryWindow()
 {
-	if (_game_mode != GM_EDITOR && !IsValidPlayerID(_current_player)) return;
+	if (_game_mode != GM_EDITOR && !IsValidCompanyID(_current_company)) return;
 	if (BringWindowToFrontById(WC_BUILD_INDUSTRY, 0)) return;
 	new BuildIndustryWindow();
 }
--- a/src/landscape.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/landscape.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -473,9 +473,9 @@
 	return _tile_type_procs[GetTileType(tile)]->get_tile_track_status_proc(tile, mode, sub_mode, side);
 }
 
-void ChangeTileOwner(TileIndex tile, PlayerID old_player, PlayerID new_player)
+void ChangeTileOwner(TileIndex tile, Owner old_owner, Owner new_owner)
 {
-	_tile_type_procs[GetTileType(tile)]->change_tile_owner_proc(tile, old_player, new_player);
+	_tile_type_procs[GetTileType(tile)]->change_tile_owner_proc(tile, old_owner, new_owner);
 }
 
 void GetAcceptedCargo(TileIndex tile, AcceptedCargo ac)
@@ -895,7 +895,7 @@
 void OnTick_Station();
 void OnTick_Industry();
 
-void OnTick_Players();
+void OnTick_Companies();
 void OnTick_Train();
 
 void CallLandscapeTick()
@@ -905,7 +905,7 @@
 	OnTick_Station();
 	OnTick_Industry();
 
-	OnTick_Players();
+	OnTick_Companies();
 	OnTick_Train();
 }
 
--- a/src/livery.h	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/livery.h	Tue Sep 30 20:39:50 2008 +0000
@@ -67,10 +67,10 @@
 };
 
 /**
- * Reset the livery schemes to the player's primary colour.
- * This is used on loading games without livery information and on new player start up.
- * @param p Player to reset.
+ * Reset the livery schemes to the company's primary colour.
+ * This is used on loading games without livery information and on new company start up.
+ * @param c Company to reset.
  */
-void ResetPlayerLivery(Player *p);
+void ResetCompanyLivery(Company *c);
 
 #endif /* LIVERY_H */
--- a/src/main_gui.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/main_gui.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -49,7 +49,7 @@
 	if (!success || !_settings_game.economy.give_money) return;
 
 	char msg[20];
-	/* Inform the player of this action */
+	/* Inform the company of the action of one of it's clients (controllers). */
 	snprintf(msg, sizeof(msg), "%d", p1);
 
 	if (!_network_server) {
@@ -67,8 +67,8 @@
 	switch (_rename_what) {
 #ifdef ENABLE_NETWORK
 	case 3: { // Give money, you can only give money in excess of loan
-		const Player *p = GetPlayer(_current_player);
-		Money money = min(p->player_money - p->current_loan, (Money)(atoi(str) / _currency->rate));
+		const Company *c = GetCompany(_current_company);
+		Money money = min(c->money - c->current_loan, (Money)(atoi(str) / _currency->rate));
 
 		uint32 money_c = Clamp(ClampToI32(money), 0, 20000000); // Clamp between 20 million and 0
 
@@ -118,9 +118,9 @@
 }
 
 #ifdef ENABLE_NETWORK
-void ShowNetworkGiveMoneyWindow(PlayerID player)
+void ShowNetworkGiveMoneyWindow(CompanyID company)
 {
-	_rename_id = player;
+	_rename_id = company;
 	_rename_what = 3;
 	ShowQueryString(STR_EMPTY, STR_NETWORK_GIVE_MONEY_CAPTION, 30, 180, NULL, CS_NUMERAL, QSF_NONE);
 }
@@ -319,8 +319,8 @@
 
 					if (cio == NULL) break;
 
-					/* Only players actually playing can speak to team. Eg spectators cannot */
-					if (_settings_client.gui.prefer_teamchat && IsValidPlayerID(cio->client_playas)) {
+					/* Only companies actually playing can speak to team. Eg spectators cannot */
+					if (_settings_client.gui.prefer_teamchat && IsValidCompanyID(cio->client_playas)) {
 						const NetworkClientInfo *ci;
 						FOR_ALL_ACTIVE_CLIENT_INFOS(ci) {
 							if (ci->client_playas == cio->client_playas && ci != cio) {
@@ -334,7 +334,7 @@
 				}
 				break;
 
-			case WKC_SHIFT | WKC_RETURN: case WKC_SHIFT | 'T': // send text message to all players
+			case WKC_SHIFT | WKC_RETURN: case WKC_SHIFT | 'T': // send text message to all clients
 				if (_networking) ShowNetworkChatQueryWindow(DESTTYPE_BROADCAST, 0);
 				break;
 
--- a/src/misc.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/misc.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -52,7 +52,7 @@
 void InitializeSigns();
 void InitializeStations();
 void InitializeCargoPackets();
-void InitializePlayers();
+void InitializeCompanies();
 void InitializeCheats();
 void InitializeNPF();
 void InitializeOldNames();
@@ -101,7 +101,7 @@
 	InitializeTrains();
 	InitializeNPF();
 
-	InitializePlayers();
+	InitializeCompanies();
 	AI_Initialize();
 	InitializeCheats();
 
@@ -151,7 +151,7 @@
 	    SLEG_VAR(_random.state[1],        SLE_UINT32),
 	SLEG_CONDVAR(_cur_town_ctr,           SLE_FILE_U8  | SLE_VAR_U32,  0, 9),
 	SLEG_CONDVAR(_cur_town_ctr,           SLE_UINT32,                 10, SL_MAX_VERSION),
-	    SLEG_VAR(_cur_player_tick_index,  SLE_FILE_U8  | SLE_VAR_U32),
+	    SLEG_VAR(_cur_company_tick_index, SLE_FILE_U8  | SLE_VAR_U32),
 	    SLEG_VAR(_next_competitor_start,  SLE_FILE_U16 | SLE_VAR_U32),
 	    SLEG_VAR(_trees_tick_ctr,         SLE_UINT8),
 	SLEG_CONDVAR(_pause_game,             SLE_UINT8,                   4, SL_MAX_VERSION),
--- a/src/misc_cmd.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/misc_cmd.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -25,26 +25,26 @@
 
 #include "table/strings.h"
 
-/** Change the player's face.
+/** Change the company manager's face.
  * @param tile unused
  * @param flags operation to perform
  * @param p1 unused
  * @param p2 face bitmasked
  */
-CommandCost CmdSetPlayerFace(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
+CommandCost CmdSetCompanyManagerFace(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
 {
-	PlayerFace pf = (PlayerFace)p2;
+	CompanyManagerFace cmf = (CompanyManagerFace)p2;
 
-	if (!IsValidPlayerIDFace(pf)) return CMD_ERROR;
+	if (!IsValidCompanyManagerFace(cmf)) return CMD_ERROR;
 
 	if (flags & DC_EXEC) {
-		GetPlayer(_current_player)->face = pf;
+		GetCompany(_current_company)->face = cmf;
 		MarkWholeScreenDirty();
 	}
 	return CommandCost();
 }
 
-/** Change the player's company-colour
+/** Change the company's company-colour
  * @param tile unused
  * @param flags operation to perform
  * @param p1 bitstuffed:
@@ -52,7 +52,7 @@
  * p1 bits 8-9 set in use state or first/second colour
  * @param p2 new colour for vehicles, property, etc.
  */
-CommandCost CmdSetPlayerColor(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
+CommandCost CmdSetCompanyColor(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
 {
 	if (p2 >= 16) return CMD_ERROR; // max 16 colours
 
@@ -63,35 +63,35 @@
 
 	if (scheme >= LS_END || state >= 3) return CMD_ERROR;
 
-	Player *p = GetPlayer(_current_player);
+	Company *c = GetCompany(_current_company);
 
 	/* Ensure no two companies have the same primary colour */
 	if (scheme == LS_DEFAULT && state == 0) {
-		const Player *pp;
-		FOR_ALL_PLAYERS(pp) {
-			if (pp != p && pp->player_color == colour) return CMD_ERROR;
+		const Company *cc;
+		FOR_ALL_COMPANIES(cc) {
+			if (cc != c && cc->colour == colour) return CMD_ERROR;
 		}
 	}
 
 	if (flags & DC_EXEC) {
 		switch (state) {
 			case 0:
-				p->livery[scheme].colour1 = colour;
+				c->livery[scheme].colour1 = colour;
 
 				/* If setting the first colour of the default scheme, adjust the
-				 * original and cached player colours too. */
+				 * original and cached company colours too. */
 				if (scheme == LS_DEFAULT) {
-					_player_colors[_current_player] = colour;
-					p->player_color = colour;
+					_company_colours[_current_company] = colour;
+					c->colour = colour;
 				}
 				break;
 
 			case 1:
-				p->livery[scheme].colour2 = colour;
+				c->livery[scheme].colour2 = colour;
 				break;
 
 			case 2:
-				p->livery[scheme].in_use = colour != 0;
+				c->livery[scheme].in_use = colour != 0;
 
 				/* Now handle setting the default scheme's in_use flag.
 				 * This is different to the other schemes, as it signifies if any
@@ -101,16 +101,16 @@
 
 				/* If enabling a scheme, set the default scheme to be in use too */
 				if (colour != 0) {
-					p->livery[LS_DEFAULT].in_use = true;
+					c->livery[LS_DEFAULT].in_use = true;
 					break;
 				}
 
 				/* Else loop through all schemes to see if any are left enabled.
 				 * If not, disable the default scheme too. */
-				p->livery[LS_DEFAULT].in_use = false;
+				c->livery[LS_DEFAULT].in_use = false;
 				for (scheme = LS_DEFAULT; scheme < LS_END; scheme++) {
-					if (p->livery[scheme].in_use) {
-						p->livery[LS_DEFAULT].in_use = true;
+					if (c->livery[scheme].in_use) {
+						c->livery[LS_DEFAULT].in_use = true;
 						break;
 					}
 				}
@@ -134,9 +134,9 @@
  */
 CommandCost CmdIncreaseLoan(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
 {
-	Player *p = GetPlayer(_current_player);
+	Company *c = GetCompany(_current_company);
 
-	if (p->current_loan >= _economy.max_loan) {
+	if (c->current_loan >= _economy.max_loan) {
 		SetDParam(0, _economy.max_loan);
 		return_cmd_error(STR_702B_MAXIMUM_PERMITTED_LOAN);
 	}
@@ -145,20 +145,20 @@
 	switch (p2) {
 		default: return CMD_ERROR; // Invalid method
 		case 0: // Take some extra loan
-			loan = (IsHumanPlayer(_current_player) || _settings_game.ai.ainew_active) ? LOAN_INTERVAL : LOAN_INTERVAL_OLD_AI;
+			loan = (IsHumanCompany(_current_company) || _settings_game.ai.ainew_active) ? LOAN_INTERVAL : LOAN_INTERVAL_OLD_AI;
 			break;
 		case 1: // Take a loan as big as possible
-			loan = _economy.max_loan - p->current_loan;
+			loan = _economy.max_loan - c->current_loan;
 			break;
 	}
 
 	/* Overflow protection */
-	if (p->player_money + p->current_loan + loan < p->player_money) return CMD_ERROR;
+	if (c->money + c->current_loan + loan < c->money) return CMD_ERROR;
 
 	if (flags & DC_EXEC) {
-		p->player_money += loan;
-		p->current_loan += loan;
-		InvalidatePlayerWindows(p);
+		c->money        += loan;
+		c->current_loan += loan;
+		InvalidateCompanyWindows(c);
 	}
 
 	return CommandCost(EXPENSES_OTHER);
@@ -173,42 +173,42 @@
  */
 CommandCost CmdDecreaseLoan(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
 {
-	Player *p = GetPlayer(_current_player);
+	Company *c = GetCompany(_current_company);
 
-	if (p->current_loan == 0) return_cmd_error(STR_702D_LOAN_ALREADY_REPAYED);
+	if (c->current_loan == 0) return_cmd_error(STR_702D_LOAN_ALREADY_REPAYED);
 
 	Money loan;
 	switch (p2) {
 		default: return CMD_ERROR; // Invalid method
 		case 0: // Pay back one step
-			loan = min(p->current_loan, (Money)(IsHumanPlayer(_current_player) || _settings_game.ai.ainew_active) ? LOAN_INTERVAL : LOAN_INTERVAL_OLD_AI);
+			loan = min(c->current_loan, (Money)(IsHumanCompany(_current_company) || _settings_game.ai.ainew_active) ? LOAN_INTERVAL : LOAN_INTERVAL_OLD_AI);
 			break;
 		case 1: // Pay back as much as possible
-			loan = max(min(p->current_loan, p->player_money), (Money)LOAN_INTERVAL);
+			loan = max(min(c->current_loan, c->money), (Money)LOAN_INTERVAL);
 			loan -= loan % LOAN_INTERVAL;
 			break;
 	}
 
-	if (p->player_money < loan) {
+	if (c->money < loan) {
 		SetDParam(0, loan);
 		return_cmd_error(STR_702E_REQUIRED);
 	}
 
 	if (flags & DC_EXEC) {
-		p->player_money -= loan;
-		p->current_loan -= loan;
-		InvalidatePlayerWindows(p);
+		c->money        -= loan;
+		c->current_loan -= loan;
+		InvalidateCompanyWindows(c);
 	}
 	return CommandCost();
 }
 
 static bool IsUniqueCompanyName(const char *name)
 {
-	const Player *p;
+	const Company *c;
 	char buf[512];
 
-	FOR_ALL_PLAYERS(p) {
-		SetDParam(0, p->index);
+	FOR_ALL_COMPANIES(c) {
+		SetDParam(0, c->index);
 		GetString(buf, STR_COMPANY_NAME, lastof(buf));
 		if (strcmp(buf, name) == 0) return false;
 	}
@@ -232,9 +232,9 @@
 	}
 
 	if (flags & DC_EXEC) {
-		Player *p = GetPlayer(_current_player);
-		free(p->name);
-		p->name = reset ? NULL : strdup(_cmd_text);
+		Company *c = GetCompany(_current_company);
+		free(c->name);
+		c->name = reset ? NULL : strdup(_cmd_text);
 		MarkWholeScreenDirty();
 	}
 
@@ -243,11 +243,11 @@
 
 static bool IsUniquePresidentName(const char *name)
 {
-	const Player *p;
+	const Company *c;
 	char buf[512];
 
-	FOR_ALL_PLAYERS(p) {
-		SetDParam(0, p->index);
+	FOR_ALL_COMPANIES(c) {
+		SetDParam(0, c->index);
 		GetString(buf, STR_PLAYER_NAME, lastof(buf));
 		if (strcmp(buf, name) == 0) return false;
 	}
@@ -271,15 +271,15 @@
 	}
 
 	if (flags & DC_EXEC) {
-		Player *p = GetPlayer(_current_player);
-		free(p->president_name);
+		Company *c = GetCompany(_current_company);
+		free(c->president_name);
 
 		if (reset) {
-			p->president_name = NULL;
+			c->president_name = NULL;
 		} else {
-			p->president_name = strdup(_cmd_text);
+			c->president_name = strdup(_cmd_text);
 
-			if (p->name_1 == STR_SV_UNNAMED && p->name == NULL) {
+			if (c->name_1 == STR_SV_UNNAMED && c->name == NULL) {
 				char buf[80];
 
 				snprintf(buf, lengthof(buf), "%s Transport", _cmd_text);
@@ -358,34 +358,34 @@
 	return CommandCost(EXPENSES_OTHER, -(int32)p1);
 }
 
-/** Transfer funds (money) from one player to another.
+/** Transfer funds (money) from one company to another.
  * To prevent abuse in multiplayer games you can only send money to other
- * players if you have paid off your loan (either explicitely, or implicitely
+ * companies if you have paid off your loan (either explicitely, or implicitely
  * given the fact that you have more money than loan).
  * @param tile unused
  * @param flags operation to perform
  * @param p1 the amount of money to transfer; max 20.000.000
- * @param p2 the player to transfer the money to
+ * @param p2 the company to transfer the money to
  */
 CommandCost CmdGiveMoney(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
 {
 	if (!_settings_game.economy.give_money) return CMD_ERROR;
 
-	const Player *p = GetPlayer(_current_player);
+	const Company *c = GetCompany(_current_company);
 	CommandCost amount(EXPENSES_OTHER, min((Money)p1, (Money)20000000LL));
 
 	/* You can only transfer funds that is in excess of your loan */
-	if (p->player_money - p->current_loan < amount.GetCost() || amount.GetCost() <= 0) return CMD_ERROR;
-	if (!_networking || !IsValidPlayerID((PlayerID)p2)) return CMD_ERROR;
+	if (c->money - c->current_loan < amount.GetCost() || amount.GetCost() <= 0) return CMD_ERROR;
+	if (!_networking || !IsValidCompanyID((CompanyID)p2)) return CMD_ERROR;
 
 	if (flags & DC_EXEC) {
-		/* Add money to player */
-		PlayerID old_cp = _current_player;
-		_current_player = (PlayerID)p2;
-		SubtractMoneyFromPlayer(CommandCost(EXPENSES_OTHER, -amount.GetCost()));
-		_current_player = old_cp;
+		/* Add money to company */
+		CompanyID old_company = _current_company;
+		_current_company = (CompanyID)p2;
+		SubtractMoneyFromCompany(CommandCost(EXPENSES_OTHER, -amount.GetCost()));
+		_current_company = old_company;
 	}
 
-	/* Subtract money from local-player */
+	/* Subtract money from local-company */
 	return amount;
 }
--- a/src/misc_gui.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/misc_gui.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -104,13 +104,13 @@
 	}
 
 	LandInfoWindow(TileIndex tile) : Window(&_land_info_desc) {
-		Player *p = GetPlayer(IsValidPlayerID(_local_player) ? _local_player : PLAYER_FIRST);
+		Company *c = GetCompany(IsValidCompanyID(_local_company) ? _local_company : COMPANY_FIRST);
 		Town *t = ClosestTownFromTile(tile, _settings_game.economy.dist_local_authority);
 
-		Money old_money = p->player_money;
-		p->player_money = INT64_MAX;
+		Money old_money = c->money;
+		c->money = INT64_MAX;
 		CommandCost costclear = DoCommand(tile, 0, 0, 0, CMD_LANDSCAPE_CLEAR);
-		p->player_money = old_money;
+		c->money = old_money;
 
 		/* Because build_date is not set yet in every TileDesc, we make sure it is empty */
 		TileDesc td;
@@ -423,14 +423,14 @@
 	uint64 decode_params[20];
 	StringID message_1;
 	StringID message_2;
-	bool show_player_face;
+	bool show_company_manager_face;
 
 	int y[2];
 
 public:
-	ErrmsgWindow(Point pt, int width, int height, StringID msg1, StringID msg2, const Widget *widget, bool show_player_face) :
+	ErrmsgWindow(Point pt, int width, int height, StringID msg1, StringID msg2, const Widget *widget, bool show_company_manager_face) :
 			Window(pt.x, pt.y, width, height, WC_ERRMSG, widget),
-			show_player_face(show_player_face)
+			show_company_manager_face(show_company_manager_face)
 	{
 		this->duration = _settings_client.gui.errmsg_duration;
 		CopyOutDParam(this->decode_params, 0, lengthof(this->decode_params));
@@ -476,9 +476,9 @@
 		SwitchToErrorRefStack();
 		RewindTextRefStack();
 
-		if (this->show_player_face) {
-			const Player *p = GetPlayer((PlayerID)GetDParamX(this->decode_params, 2));
-			DrawPlayerFace(p->face, p->player_color, 2, 16);
+		if (this->show_company_manager_face) {
+			const Company *c = GetCompany((CompanyID)GetDParamX(this->decode_params, 2));
+			DrawCompanyManagerFace(c->face, c->colour, 2, 16);
 		}
 
 		DrawStringMultiCenter(this->width - 120, y[1], this->message_2, this->width - 2);
@@ -1419,10 +1419,10 @@
 	void GenerateFileName()
 	{
 		/* Check if we are not a spectator who wants to generate a name..
-		 * Let's use the name of player #0 for now. */
-		const Player *p = GetPlayer(IsValidPlayerID(_local_player) ? _local_player : PLAYER_FIRST);
+		 * Let's use the name of company #0 for now. */
+		const Company *c = GetCompany(IsValidCompanyID(_local_company) ? _local_company : COMPANY_FIRST);
 
-		SetDParam(0, p->index);
+		SetDParam(0, c->index);
 		SetDParam(1, _date);
 		GetString(this->edit_str_buf, STR_4004, &this->edit_str_buf[this->edit_str_size - 1]);
 		SanitizeFilename(this->edit_str_buf);
--- a/src/network/core/config.h	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/network/core/config.h	Tue Sep 30 20:39:50 2008 +0000
@@ -29,8 +29,8 @@
 	NETWORK_UNIQUE_ID_LENGTH      =   33, ///< The maximum length of the unique id of the clients, in bytes including '\0'
 	NETWORK_REVISION_LENGTH       =   15, ///< The maximum length of the revision, in bytes including '\0'
 	NETWORK_PASSWORD_LENGTH       =   33, ///< The maximum length of the password, in bytes including '\0' (must be >= NETWORK_UNIQUE_ID_LENGTH)
-	NETWORK_PLAYERS_LENGTH        =  200, ///< The maximum length for the list of players that controls a company, in bytes including '\0'
-	NETWORK_CLIENT_NAME_LENGTH    =   25, ///< The maximum length of a player, in bytes including '\0'
+	NETWORK_CLIENTS_LENGTH        =  200, ///< The maximum length for the list of clients that controls a company, in bytes including '\0'
+	NETWORK_CLIENT_NAME_LENGTH    =   25, ///< The maximum length of a client's name, in bytes including '\0'
 	NETWORK_RCONCOMMAND_LENGTH    =  500, ///< The maximum length of a rconsole command, in bytes including '\0'
 	NETWORK_CHAT_LENGTH           =  900, ///< The maximum length of a chat message, in bytes including '\0'
 
--- a/src/network/core/game.h	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/network/core/game.h	Tue Sep 30 20:39:50 2008 +0000
@@ -17,7 +17,7 @@
 /**
  * This is the struct used by both client and server
  * some fields will be empty on the client (like game_password) by default
- * and only filled with data a player enters.
+ * and only filled with data a client enters.
  */
 struct NetworkServerGameInfo {
 	byte clients_on;                                ///< Current count of clients on server
--- a/src/network/core/tcp.h	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/network/core/tcp.h	Tue Sep 30 20:39:50 2008 +0000
@@ -61,7 +61,7 @@
 /** Packet that wraps a command */
 struct CommandPacket {
 	CommandPacket *next; ///< the next command packet (if in queue)
-	PlayerByte player; ///< player that is executing the command
+	CompanyByte company; ///< company that is executing the command
 	uint32 cmd;        ///< command being executed
 	uint32 p1;         ///< parameter p1
 	uint32 p2;         ///< parameter p2
@@ -81,7 +81,7 @@
 	STATUS_MAP,        ///< The client is downloading the map
 	STATUS_DONE_MAP,   ///< The client has downloaded the map
 	STATUS_PRE_ACTIVE, ///< The client is catching up the delayed frames
-	STATUS_ACTIVE,     ///< The client is an active player in the game
+	STATUS_ACTIVE,     ///< The client is active within in the game
 };
 
 /** Base socket handler for all TCP sockets */
--- a/src/network/network.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/network/network.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -47,7 +47,7 @@
 bool _network_dedicated;  ///< are we a dedicated server?
 bool _is_network_server;  ///< Does this client wants to be a network-server?
 NetworkServerGameInfo _network_game_info;
-NetworkPlayerInfo _network_player_info[MAX_PLAYERS];
+NetworkCompanyInfo _network_company_info[MAX_COMPANIES];
 NetworkClientInfo _network_client_info[MAX_CLIENT_INFO];
 uint16 _network_own_client_index;
 uint16 _redirect_console_to_client;
@@ -155,7 +155,7 @@
 	byte count = 0;
 
 	FOR_ALL_CLIENTS(cs) {
-		if (DEREF_CLIENT_INFO(cs)->client_playas == PLAYER_SPECTATOR) count++;
+		if (DEREF_CLIENT_INFO(cs)->client_playas == COMPANY_SPECTATOR) count++;
 	}
 
 	return count;
@@ -335,54 +335,54 @@
 }
 
 /* Count the number of active clients connected */
-static uint NetworkCountPlayers()
+static uint NetworkCountActiveClients()
 {
 	NetworkTCPSocketHandler *cs;
 	uint count = 0;
 
 	FOR_ALL_CLIENTS(cs) {
 		const NetworkClientInfo *ci = DEREF_CLIENT_INFO(cs);
-		if (IsValidPlayerID(ci->client_playas)) count++;
+		if (IsValidCompanyID(ci->client_playas)) count++;
 	}
 
 	return count;
 }
 
-static bool _min_players_paused = false;
+static bool _min_active_clients_paused = false;
 
-/* Check if the minimum number of players has been reached and pause or unpause the game as appropriate */
-void CheckMinPlayers()
+/* Check if the minimum number of active clients has been reached and pause or unpause the game as appropriate */
+void CheckMinActiveClients()
 {
 	if (!_network_dedicated) return;
 
-	if (NetworkCountPlayers() < _settings_client.network.min_players) {
-		if (_min_players_paused) return;
+	if (NetworkCountActiveClients() < _settings_client.network.min_active_clients) {
+		if (_min_active_clients_paused) return;
 
-		_min_players_paused = true;
+		_min_active_clients_paused = true;
 		DoCommandP(0, 1, 0, NULL, CMD_PAUSE);
 		NetworkServerSendChat(NETWORK_ACTION_SERVER_MESSAGE, DESTTYPE_BROADCAST, 0, "Game paused (not enough players)", NETWORK_SERVER_INDEX);
 	} else {
-		if (!_min_players_paused) return;
+		if (!_min_active_clients_paused) return;
 
-		_min_players_paused = false;
+		_min_active_clients_paused = false;
 		DoCommandP(0, 0, 0, NULL, CMD_PAUSE);
 		NetworkServerSendChat(NETWORK_ACTION_SERVER_MESSAGE, DESTTYPE_BROADCAST, 0, "Game unpaused (enough players)", NETWORK_SERVER_INDEX);
 	}
 }
 
-/** Converts a string to ip/port/player
- *  Format: IP#player:port
+/** Converts a string to ip/port/company
+ *  Format: IP#company:port
  *
- * connection_string will be re-terminated to seperate out the hostname, and player and port will
- * be set to the player and port strings given by the user, inside the memory area originally
+ * connection_string will be re-terminated to seperate out the hostname, and company and port will
+ * be set to the company and port strings given by the user, inside the memory area originally
  * occupied by connection_string. */
-void ParseConnectionString(const char **player, const char **port, char *connection_string)
+void ParseConnectionString(const char **company, const char **port, char *connection_string)
 {
 	char *p;
 	for (p = connection_string; *p != '\0'; p++) {
 		switch (*p) {
 			case '#':
-				*player = p + 1;
+				*company = p + 1;
 				*p = '\0';
 				break;
 			case ':':
@@ -421,7 +421,7 @@
 
 		cs->index = _network_client_index++;
 		ci->client_index = cs->index;
-		ci->client_playas = PLAYER_INACTIVE_CLIENT;
+		ci->client_playas = COMPANY_INACTIVE_CLIENT;
 		ci->join_date = _date;
 
 		InvalidateWindow(WC_CLIENT_LIST, 0);
@@ -495,7 +495,7 @@
 	cs->index = NETWORK_EMPTY_INDEX;
 	ci->client_index = NETWORK_EMPTY_INDEX;
 
-	CheckMinPlayers();
+	CheckMinActiveClients();
 }
 
 // A client wants to connect to a server
@@ -688,7 +688,7 @@
 
 	// Clean the client_info memory
 	memset(&_network_client_info, 0, sizeof(_network_client_info));
-	memset(&_network_player_info, 0, sizeof(_network_player_info));
+	memset(&_network_company_info, 0, sizeof(_network_company_info));
 
 	_sync_frame = 0;
 	_network_first_time = true;
@@ -729,7 +729,7 @@
 {
 	if (*b != '\0') {
 		const char *port = NULL;
-		const char *player = NULL;
+		const char *company = NULL;
 		char host[NETWORK_HOSTNAME_LENGTH];
 		uint16 rport;
 
@@ -738,7 +738,7 @@
 		ttd_strlcpy(_settings_client.network.connect_to_ip, b, lengthof(_settings_client.network.connect_to_ip));
 		rport = NETWORK_DEFAULT_PORT;
 
-		ParseConnectionString(&player, &port, host);
+		ParseConnectionString(&company, &port, host);
 		if (port != NULL) rport = atoi(port);
 
 		NetworkUDPQueryServer(host, rport, true);
@@ -812,9 +812,9 @@
 	memset(ci, 0, sizeof(*ci));
 
 	ci->client_index = NETWORK_SERVER_INDEX;
-	ci->client_playas = _network_dedicated ? PLAYER_SPECTATOR : _local_player;
+	ci->client_playas = _network_dedicated ? COMPANY_SPECTATOR : _local_company;
 
-	ttd_strlcpy(ci->client_name, _settings_client.network.player_name, sizeof(ci->client_name));
+	ttd_strlcpy(ci->client_name, _settings_client.network.client_name, sizeof(ci->client_name));
 	ttd_strlcpy(ci->unique_id, _settings_client.network.network_id, sizeof(ci->unique_id));
 }
 
@@ -841,8 +841,8 @@
 	_last_sync_frame = 0;
 	_network_own_client_index = NETWORK_SERVER_INDEX;
 
-	/* Non-dedicated server will always be player #1 */
-	if (!_network_dedicated) _network_playas = PLAYER_FIRST;
+	/* Non-dedicated server will always be company #1 */
+	if (!_network_dedicated) _network_playas = COMPANY_FIRST;
 
 	_network_clients_connected = 0;
 
@@ -853,8 +853,8 @@
 	// if the server is dedicated ... add some other script
 	if (_network_dedicated) IConsoleCmdExec("exec scripts/on_dedicated.scr 0");
 
-	_min_players_paused = false;
-	CheckMinPlayers();
+	_min_active_clients_paused = false;
+	CheckMinActiveClients();
 
 	/* Try to register us to the master server */
 	_network_last_advertise_frame = 0;
@@ -1077,7 +1077,7 @@
 
 		while (f != NULL && !feof(f)) {
 			if (cp != NULL && _date == next_date && _date_fract == next_date_fract) {
-				_current_player = cp->player;
+				_current_company = cp->company;
 				_cmd_text = cp->text;
 				DoCommandP(cp->tile, cp->p1, cp->p2, NULL, cp->cmd);
 				free(cp);
@@ -1090,9 +1090,9 @@
 			if (fgets(buff, lengthof(buff), f) == NULL) break;
 			if (strncmp(buff, "ddc:cmd:", 8) != 0) continue;
 			cp = MallocT<CommandPacket>(1);
-			int player;
-			sscanf(&buff[8], "%d;%d;%d;%d;%d;%d;%d;%s", &next_date, &next_date_fract, &player, &cp->tile, &cp->p1, &cp->p2, &cp->cmd, cp->text);
-			cp->player = (Owner)player;
+			int company;
+			sscanf(&buff[8], "%d;%d;%d;%d;%d;%d;%d;%s", &next_date, &next_date_fract, &company, &cp->tile, &cp->p1, &cp->p2, &cp->cmd, cp->text);
+			cp->company = (CompanyID)company;
 		}
 #endif /* DEBUG_DUMP_COMMANDS */
 
@@ -1238,4 +1238,4 @@
 #endif /* ENABLE_NETWORK */
 
 /* NOTE: this variable needs to be always available */
-PlayerID _network_playas;
+CompanyID _network_playas;
--- a/src/network/network.h	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/network/network.h	Tue Sep 30 20:39:50 2008 +0000
@@ -34,7 +34,7 @@
 
 #endif /* ENABLE_NETWORK */
 
-/** As which player do we play? */
-extern PlayerID _network_playas;
+/** As which company do we play? */
+extern CompanyID _network_playas;
 
 #endif /* NETWORK_H */
--- a/src/network/network_chat_gui.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/network/network_chat_gui.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -27,7 +27,7 @@
 
 #include "table/strings.h"
 
-/* The draw buffer must be able to contain the chat message, player name and the "[All]" message,
+/* The draw buffer must be able to contain the chat message, client name and the "[All]" message,
  * some spaces and possible translations of [All] to other languages. */
 assert_compile((int)DRAW_STRING_BUFFER >= (int)NETWORK_CHAT_LENGTH + NETWORK_NAME_LENGTH + 40);
 
@@ -99,7 +99,7 @@
 		ChatMessage *cmsg = &_chatmsg_list[msg_count++];
 		ttd_strlcpy(cmsg->message, bufp, sizeof(cmsg->message));
 
-		/* The default colour for a message is player colour. Replace this with
+		/* The default colour for a message is company colour. Replace this with
 		 * white for any additional lines */
 		cmsg->color = (bufp == buf && color & IS_PALETTE_COLOR) ? color : (0x1D - 15) | IS_PALETTE_COLOR;
 		cmsg->end_date = _date + duration;
--- a/src/network/network_client.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/network/network_client.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -77,17 +77,17 @@
 }
 
 /**
- * Hash the current company password; used when the server 'player' sets his/her password.
+ * Hash the current company password; used when the server 'company' sets his/her password.
  */
 void HashCurrentCompanyPassword()
 {
-	if (StrEmpty(_network_player_info[_local_player].password)) return;
+	if (StrEmpty(_network_company_info[_local_company].password)) return;
 
 	_password_game_seed = _settings_game.game_creation.generation_seed;
 	ttd_strlcpy(_password_server_unique_id, _settings_client.network.network_id, sizeof(_password_server_unique_id));
 
-	const char *new_pw = GenerateCompanyPasswordHash(_network_player_info[_local_player].password);
-	ttd_strlcpy(_network_player_info[_local_player].password, new_pw, sizeof(_network_player_info[_local_player].password));
+	const char *new_pw = GenerateCompanyPasswordHash(_network_company_info[_local_company].password);
+	ttd_strlcpy(_network_company_info[_local_company].password, new_pw, sizeof(_network_company_info[_local_company].password));
 }
 
 
@@ -119,10 +119,10 @@
 	// Function: Try to join the server
 	// Data:
 	//    String: OpenTTD Revision (norev000 if no revision)
-	//    String: Player Name (max NETWORK_NAME_LENGTH)
-	//    uint8:  Play as Player id (1..MAX_PLAYERS)
+	//    String: Client Name (max NETWORK_NAME_LENGTH)
+	//    uint8:  Play as Company id (1..MAX_COMPANIES)
 	//    uint8:  Language ID
-	//    String: Unique id to find the player back in server-listing
+	//    String: Unique id to find the client back in server-listing
 	//
 
 	Packet *p;
@@ -131,7 +131,7 @@
 
 	p = NetworkSend_Init(PACKET_CLIENT_JOIN);
 	p->Send_string(_openttd_revision);
-	p->Send_string(_settings_client.network.player_name); // Player name
+	p->Send_string(_settings_client.network.client_name); // Client name
 	p->Send_uint8 (_network_playas);      // PlayAs
 	p->Send_uint8 (NETLANG_ANY);          // Language
 	p->Send_string(_settings_client.network.network_id);
@@ -213,7 +213,7 @@
 	// Packet: CLIENT_COMMAND
 	// Function: Send a DoCommand to the Server
 	// Data:
-	//    uint8:  PlayerID (0..MAX_PLAYERS-1)
+	//    uint8:  CompanyID (0..MAX_COMPANIES-1)
 	//    uint32: CommandID (see command.h)
 	//    uint32: P1 (free variables used in DoCommand)
 	//    uint32: P2
@@ -224,7 +224,7 @@
 
 	Packet *p = NetworkSend_Init(PACKET_CLIENT_COMMAND);
 
-	p->Send_uint8 (cp->player);
+	p->Send_uint8 (cp->company);
 	p->Send_uint32(cp->cmd);
 	p->Send_uint32(cp->p1);
 	p->Send_uint32(cp->p2);
@@ -244,7 +244,7 @@
 	// Data:
 	//    uint8:  ActionID (see network_data.h, NetworkAction)
 	//    uint8:  Destination Type (see network_data.h, DestType);
-	//    uint16: Destination Player
+	//    uint16: Destination Company/Client
 	//    String: Message (max NETWORK_CHAT_LENGTH)
 	//
 
@@ -290,7 +290,7 @@
 {
 	//
 	// Packet: PACKET_CLIENT_SET_NAME
-	// Function: Gives the player a new name
+	// Function: Gives the client a new name
 	// Data:
 	//    String: Name
 	//
@@ -359,7 +359,7 @@
 
 	if (!MY_CLIENT->has_quit && company_info_version == NETWORK_COMPANY_INFO_VERSION) {
 		byte total;
-		PlayerID current;
+		CompanyID current;
 
 		total = p->Recv_uint8();
 
@@ -367,21 +367,21 @@
 		if (total == 0) return NETWORK_RECV_STATUS_CLOSE_QUERY;
 
 		current = (Owner)p->Recv_uint8();
-		if (current >= MAX_PLAYERS) return NETWORK_RECV_STATUS_CLOSE_QUERY;
+		if (current >= MAX_COMPANIES) return NETWORK_RECV_STATUS_CLOSE_QUERY;
 
-		p->Recv_string(_network_player_info[current].company_name, sizeof(_network_player_info[current].company_name));
-		_network_player_info[current].inaugurated_year = p->Recv_uint32();
-		_network_player_info[current].company_value    = p->Recv_uint64();
-		_network_player_info[current].money            = p->Recv_uint64();
-		_network_player_info[current].income           = p->Recv_uint64();
-		_network_player_info[current].performance      = p->Recv_uint16();
-		_network_player_info[current].use_password     = p->Recv_bool();
+		p->Recv_string(_network_company_info[current].company_name, sizeof(_network_company_info[current].company_name));
+		_network_company_info[current].inaugurated_year = p->Recv_uint32();
+		_network_company_info[current].company_value    = p->Recv_uint64();
+		_network_company_info[current].money            = p->Recv_uint64();
+		_network_company_info[current].income           = p->Recv_uint64();
+		_network_company_info[current].performance      = p->Recv_uint16();
+		_network_company_info[current].use_password     = p->Recv_bool();
 		for (i = 0; i < NETWORK_VEHICLE_TYPES; i++)
-			_network_player_info[current].num_vehicle[i] = p->Recv_uint16();
+			_network_company_info[current].num_vehicle[i] = p->Recv_uint16();
 		for (i = 0; i < NETWORK_STATION_TYPES; i++)
-			_network_player_info[current].num_station[i] = p->Recv_uint16();
+			_network_company_info[current].num_station[i] = p->Recv_uint16();
 
-		p->Recv_string(_network_player_info[current].players, sizeof(_network_player_info[current].players));
+		p->Recv_string(_network_company_info[current].clients, sizeof(_network_company_info[current].clients));
 
 		InvalidateWindow(WC_NETWORK_WINDOW, 0);
 
@@ -398,7 +398,7 @@
 {
 	NetworkClientInfo *ci;
 	uint16 index = p->Recv_uint16();
-	PlayerID playas = (Owner)p->Recv_uint8();
+	CompanyID playas = (CompanyID)p->Recv_uint8();
 	char name[NETWORK_NAME_LENGTH];
 
 	p->Recv_string(name, sizeof(name));
@@ -414,7 +414,7 @@
 			// Client name changed, display the change
 			NetworkTextMessage(NETWORK_ACTION_NAME_CHANGE, CC_DEFAULT, false, ci->client_name, "%s", name);
 		} else if (playas != ci->client_playas) {
-			// The player changed from client-player..
+			// The client changed from client-player..
 			// Do not display that for now
 		}
 
@@ -451,7 +451,7 @@
 		/* We made an error in the protocol, and our connection is closed.... */
 		case NETWORK_ERROR_NOT_AUTHORIZED:
 		case NETWORK_ERROR_NOT_EXPECTED:
-		case NETWORK_ERROR_PLAYER_MISMATCH:
+		case NETWORK_ERROR_COMPANY_MISMATCH:
 			_switch_mode_errorstr = STR_NETWORK_ERR_SERVER_ERROR;
 			break;
 		case NETWORK_ERROR_FULL:
@@ -622,21 +622,21 @@
 		// Say we received the map and loaded it correctly!
 		SEND_COMMAND(PACKET_CLIENT_MAP_OK)();
 
-		/* New company/spectator (invalid player) or company we want to join is not active
-		 * Switch local player to spectator and await the server's judgement */
-		if (_network_playas == PLAYER_NEW_COMPANY || !IsValidPlayerID(_network_playas)) {
-			SetLocalPlayer(PLAYER_SPECTATOR);
+		/* New company/spectator (invalid company) or company we want to join is not active
+		 * Switch local company to spectator and await the server's judgement */
+		if (_network_playas == COMPANY_NEW_COMPANY || !IsValidCompanyID(_network_playas)) {
+			SetLocalCompany(COMPANY_SPECTATOR);
 
-			if (_network_playas != PLAYER_SPECTATOR) {
-				/* We have arrived and ready to start playing; send a command to make a new player;
+			if (_network_playas != COMPANY_SPECTATOR) {
+				/* We have arrived and ready to start playing; send a command to make a new company;
 				 * the server will give us a client-id and let us in */
 				_network_join_status = NETWORK_JOIN_STATUS_REGISTERING;
 				ShowJoinStatusWindow();
-				NetworkSend_Command(0, 0, 0, CMD_PLAYER_CTRL, NULL);
+				NetworkSend_Command(0, 0, 0, CMD_COMPANY_CTRL, NULL);
 			}
 		} else {
 			// take control over an existing company
-			SetLocalPlayer(_network_playas);
+			SetLocalCompany(_network_playas);
 		}
 	}
 
@@ -685,7 +685,7 @@
 DEF_CLIENT_RECEIVE_COMMAND(PACKET_SERVER_COMMAND)
 {
 	CommandPacket *cp = MallocT<CommandPacket>(1);
-	cp->player   = (PlayerID)p->Recv_uint8();
+	cp->company  = (CompanyID)p->Recv_uint8();
 	cp->cmd      = p->Recv_uint32();
 	cp->p1       = p->Recv_uint32();
 	cp->p2       = p->Recv_uint32();
@@ -733,12 +733,12 @@
 				ci = NetworkFindClientInfoFromIndex(_network_own_client_index);
 				break;
 
-			/* For speaking to company or giving money, we need the player-name */
+			/* For speaking to company or giving money, we need the company-name */
 			case NETWORK_ACTION_GIVE_MONEY:
-				if (!IsValidPlayerID(ci_to->client_playas)) return NETWORK_RECV_STATUS_OKAY;
+				if (!IsValidCompanyID(ci_to->client_playas)) return NETWORK_RECV_STATUS_OKAY;
 				/* fallthrough */
 			case NETWORK_ACTION_CHAT_COMPANY: {
-				StringID str = IsValidPlayerID(ci_to->client_playas) ? STR_COMPANY_NAME : STR_NETWORK_SPECTATORS;
+				StringID str = IsValidCompanyID(ci_to->client_playas) ? STR_COMPANY_NAME : STR_NETWORK_SPECTATORS;
 				SetDParam(0, ci_to->client_playas);
 
 				GetString(name, str, lastof(name));
@@ -754,7 +754,7 @@
 	}
 
 	if (ci != NULL)
-		NetworkTextMessage(action, (ConsoleColour)GetDrawStringPlayerColor(ci->client_playas), self_send, name, "%s", msg);
+		NetworkTextMessage(action, (ConsoleColour)GetDrawStringCompanyColor(ci->client_playas), self_send, name, "%s", msg);
 	return NETWORK_RECV_STATUS_OKAY;
 }
 
@@ -831,10 +831,10 @@
 DEF_CLIENT_RECEIVE_COMMAND(PACKET_SERVER_NEWGAME)
 {
 	// To trottle the reconnects a bit, every clients waits
-	//  his _local_player value before reconnecting
-	// PLAYER_SPECTATOR is currently 255, so to avoid long wait periods
+	//  his _local_company value before reconnecting
+	// COMPANY_SPECTATOR is currently 255, so to avoid long wait periods
 	//  set the max to 10.
-	_network_reconnect = min(_local_player + 1, 10);
+	_network_reconnect = min(_local_company + 1, 10);
 	_switch_mode_errorstr = STR_NETWORK_SERVER_REBOOT;
 
 	return NETWORK_RECV_STATUS_SERVER_ERROR;
@@ -938,20 +938,20 @@
 	SEND_COMMAND(PACKET_CLIENT_RCON)(password, command);
 }
 
-void NetworkUpdatePlayerName()
+void NetworkUpdateClientName()
 {
 	NetworkClientInfo *ci = NetworkFindClientInfoFromIndex(_network_own_client_index);
 
 	if (ci == NULL) return;
 
 	/* Don't change the name if it is the same as the old name */
-	if (strcmp(ci->client_name, _settings_client.network.player_name) != 0) {
+	if (strcmp(ci->client_name, _settings_client.network.client_name) != 0) {
 		if (!_network_server) {
-			SEND_COMMAND(PACKET_CLIENT_SET_NAME)(_settings_client.network.player_name);
+			SEND_COMMAND(PACKET_CLIENT_SET_NAME)(_settings_client.network.client_name);
 		} else {
-			if (NetworkFindName(_settings_client.network.player_name)) {
-				NetworkTextMessage(NETWORK_ACTION_NAME_CHANGE, CC_DEFAULT, false, ci->client_name, "%s", _settings_client.network.player_name);
-				ttd_strlcpy(ci->client_name, _settings_client.network.player_name, sizeof(ci->client_name));
+			if (NetworkFindName(_settings_client.network.client_name)) {
+				NetworkTextMessage(NETWORK_ACTION_NAME_CHANGE, CC_DEFAULT, false, ci->client_name, "%s", _settings_client.network.client_name);
+				ttd_strlcpy(ci->client_name, _settings_client.network.client_name, sizeof(ci->client_name));
 				NetworkUpdateClientInfo(NETWORK_SERVER_INDEX);
 			}
 		}
@@ -965,7 +965,7 @@
 
 void NetworkClientSetPassword()
 {
-	SEND_COMMAND(PACKET_CLIENT_SET_PASSWORD)(_network_player_info[_local_player].password);
+	SEND_COMMAND(PACKET_CLIENT_SET_PASSWORD)(_network_company_info[_local_company].password);
 }
 
 #endif /* ENABLE_NETWORK */
--- a/src/network/network_data.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/network/network_data.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -36,12 +36,12 @@
 {
 	CommandPacket c;
 
-	c.player = _local_player;
-	c.next   = NULL;
-	c.tile   = tile;
-	c.p1     = p1;
-	c.p2     = p2;
-	c.cmd    = cmd;
+	c.company = _local_company;
+	c.next    = NULL;
+	c.tile    = tile;
+	c.p1      = p1;
+	c.p2      = p2;
+	c.cmd     = cmd;
 
 	c.callback = 0;
 	while (c.callback < _callback_table_count && _callback_table[c.callback] != callback) {
@@ -95,7 +95,7 @@
 // Execute a DoCommand we received from the network
 void NetworkExecuteCommand(CommandPacket *cp)
 {
-	_current_player = cp->player;
+	_current_company = cp->company;
 	_cmd_text = cp->text;
 	/* cp->callback is unsigned. so we don't need to do lower bounds checking. */
 	if (cp->callback > _callback_table_count) {
@@ -103,7 +103,7 @@
 		cp->callback = 0;
 	}
 
-	DebugDumpCommands("ddc:cmd:%d;%d;%d;%d;%d;%d;%d;%s\n", _date, _date_fract, (int)cp->player, cp->tile, cp->p1, cp->p2, cp->cmd, cp->text);
+	DebugDumpCommands("ddc:cmd:%d;%d;%d;%d;%d;%d;%d;%s\n", _date, _date_fract, (int)cp->company, cp->tile, cp->p1, cp->p2, cp->cmd, cp->text);
 
 	DoCommandP(cp->tile, cp->p1, cp->p2, _callback_table[cp->callback], cp->cmd | CMD_NETWORK_COMMAND, cp->my_cmd);
 }
--- a/src/network/network_func.h	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/network/network_func.h	Tue Sep 30 20:39:50 2008 +0000
@@ -11,7 +11,7 @@
 #include "../console_type.h"
 
 extern NetworkServerGameInfo _network_game_info;
-extern NetworkPlayerInfo _network_player_info[MAX_PLAYERS];
+extern NetworkCompanyInfo _network_company_info[MAX_COMPANIES];
 extern NetworkClientInfo _network_client_info[MAX_CLIENT_INFO];
 
 extern uint16 _network_own_client_index;
@@ -23,16 +23,16 @@
 extern char *_network_ban_list[25];
 
 byte NetworkSpectatorCount();
-void CheckMinPlayers();
-void NetworkUpdatePlayerName();
-bool NetworkCompanyHasPlayers(PlayerID company);
+void CheckMinActiveClients();
+void NetworkUpdateClientName();
+bool NetworkCompanyHasClients(CompanyID company);
 bool NetworkChangeCompanyPassword(byte argc, char *argv[]);
 void NetworkReboot();
 void NetworkDisconnect();
 void NetworkGameLoop();
 void NetworkUDPGameLoop();
 void NetworkUDPCloseAll();
-void ParseConnectionString(const char **player, const char **port, char *connection_string);
+void ParseConnectionString(const char **company, const char **port, char *connection_string);
 void NetworkStartDebugLog(const char *hostname, uint16 port);
 void NetworkPopulateCompanyInfo();
 
@@ -45,13 +45,13 @@
 /*** Commands ran by the server ***/
 void NetworkServerMonthlyLoop();
 void NetworkServerYearlyLoop();
-void NetworkServerChangeOwner(PlayerID current_player, PlayerID new_player);
+void NetworkServerChangeOwner(Owner current_owner, Owner new_owner);
 void NetworkServerShowStatusToConsole();
 bool NetworkServerStart();
 
 NetworkClientInfo *NetworkFindClientInfoFromIndex(uint16 client_index);
 NetworkClientInfo *NetworkFindClientInfoFromIP(const char *ip);
-const char* GetPlayerIP(const NetworkClientInfo *ci);
+const char* GetClientIP(const NetworkClientInfo *ci);
 
 void NetworkServerSendRcon(uint16 client_index, ConsoleColour colour_code, const char *string);
 void NetworkServerSendError(uint16 client_index, NetworkErrorCode error);
--- a/src/network/network_gui.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/network/network_gui.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -87,7 +87,7 @@
 
 	NGWW_CONNECTION,    ///< Label in from of connection droplist
 	NGWW_CONN_BTN,      ///< 'Connection' droplist button
-	NGWW_PLAYER,        ///< Panel with editbox to set player name
+	NGWW_CLIENT,        ///< Panel with editbox to set client name
 
 	NGWW_NAME,          ///< 'Name' button
 	NGWW_CLIENTS,       ///< 'Clients' button
@@ -286,7 +286,7 @@
 public:
 	NetworkGameWindow(const WindowDesc *desc) : QueryStringBaseWindow(NETWORK_NAME_LENGTH, desc)
 	{
-		ttd_strlcpy(this->edit_str_buf, _settings_client.network.player_name, this->edit_str_size);
+		ttd_strlcpy(this->edit_str_buf, _settings_client.network.client_name, this->edit_str_size);
 		this->afilter = CS_ALPHANUMERAL;
 		InitializeTextBuffer(&this->text, this->edit_str_buf, this->edit_str_size, 120);
 
@@ -295,7 +295,7 @@
 		this->vscroll.cap = 11;
 		this->resize.step_height = NET_PRC__SIZE_OF_ROW;
 
-		this->field = NGWW_PLAYER;
+		this->field = NGWW_CLIENT;
 		this->server = NULL;
 
 		this->servers.SetListing(this->last_sorting);
@@ -339,10 +339,10 @@
 		SetDParam(1, _lan_internet_types_dropdown[_settings_client.network.lan_internet]);
 		this->DrawWidgets();
 
-		/* Edit box to set player name */
-		this->DrawEditBox(NGWW_PLAYER);
+		/* Edit box to set client name */
+		this->DrawEditBox(NGWW_CLIENT);
 
-		DrawString(this->widget[NGWW_PLAYER].left - 100, 23, STR_NETWORK_PLAYER_NAME, TC_GOLD);
+		DrawString(this->widget[NGWW_CLIENT].left - 100, 23, STR_NETWORK_PLAYER_NAME, TC_GOLD);
 
 		/* Sort based on widgets: name, clients, compatibility */
 		switch (this->servers.SortType()) {
@@ -446,8 +446,8 @@
 	{
 		this->field = widget;
 		switch (widget) {
-			case NGWW_PLAYER:
-				ShowOnScreenKeyboard(this, NGWW_PLAYER, 0, 0);
+			case NGWW_CLIENT:
+				ShowOnScreenKeyboard(this, NGWW_CLIENT, 0, 0);
 				break;
 
 			case NGWW_CANCEL: // Cancel button
@@ -554,7 +554,7 @@
 
 	virtual void OnMouseLoop()
 	{
-		if (this->field == NGWW_PLAYER) this->HandleEditBox(NGWW_PLAYER);
+		if (this->field == NGWW_CLIENT) this->HandleEditBox(NGWW_CLIENT);
 	}
 
 	virtual void OnInvalidateData(int data)
@@ -567,7 +567,7 @@
 	virtual EventState OnKeyPress(uint16 key, uint16 keycode)
 	{
 		EventState state = ES_NOT_HANDLED;
-		if (this->field != NGWW_PLAYER) {
+		if (this->field != NGWW_CLIENT) {
 			if (this->server != NULL) {
 				if (keycode == WKC_DELETE) { // Press 'delete' to remove servers
 					NetworkGameListRemoveItem(this->server);
@@ -578,13 +578,13 @@
 			return state;
 		}
 
-		if (this->HandleEditBoxKey(NGWW_PLAYER, key, keycode, state) == 1) return state; // enter pressed
+		if (this->HandleEditBoxKey(NGWW_CLIENT, key, keycode, state) == 1) return state; // enter pressed
 
 		/* The name is only allowed when it starts with a letter! */
 		if (!StrEmpty(this->edit_str_buf) && this->edit_str_buf[0] != ' ') {
-			ttd_strlcpy(_settings_client.network.player_name, this->edit_str_buf, lengthof(_settings_client.network.player_name));
+			ttd_strlcpy(_settings_client.network.client_name, this->edit_str_buf, lengthof(_settings_client.network.client_name));
 		} else {
-			ttd_strlcpy(_settings_client.network.player_name, "Player", lengthof(_settings_client.network.player_name));
+			ttd_strlcpy(_settings_client.network.client_name, "Player", lengthof(_settings_client.network.client_name));
 		}
 		return state;
 	}
@@ -670,7 +670,7 @@
 {       WWT_TEXT,   RESIZE_NONE,   COLOUR_LIGHT_BLUE,     9,    85,    23,    35, STR_NETWORK_CONNECTION,           STR_NULL},                         // NGWW_CONNECTION
 { WWT_DROPDOWNIN,   RESIZE_NONE,   COLOUR_LIGHT_BLUE,    90,   181,    22,    33, STR_NETWORK_LAN_INTERNET_COMBO,   STR_NETWORK_CONNECTION_TIP},       // NGWW_CONN_BTN
 
-{    WWT_EDITBOX,   RESIZE_LR,     COLOUR_LIGHT_BLUE,   290,   440,    22,    33, STR_NETWORK_PLAYER_NAME_OSKTITLE, STR_NETWORK_ENTER_NAME_TIP},       // NGWW_PLAYER
+{    WWT_EDITBOX,   RESIZE_LR,     COLOUR_LIGHT_BLUE,   290,   440,    22,    33, STR_NETWORK_PLAYER_NAME_OSKTITLE, STR_NETWORK_ENTER_NAME_TIP},       // NGWW_CLIENT
 
 /* LEFT SIDE */
 { WWT_PUSHTXTBTN,   RESIZE_NONE,   COLOUR_WHITE,         10,    70,    42,    53, STR_NETWORK_GAME_NAME,            STR_NETWORK_GAME_NAME_TIP},        // NGWW_NAME
@@ -864,7 +864,7 @@
 							_settings_client.network.max_clients    = Clamp(_settings_client.network.max_clients    + widget - NSSW_CLIENTS_TXT,    2, MAX_CLIENTS);
 							break;
 						case NSSW_COMPANIES_BTND: case NSSW_COMPANIES_BTNU:
-							_settings_client.network.max_companies  = Clamp(_settings_client.network.max_companies  + widget - NSSW_COMPANIES_TXT,  1, MAX_PLAYERS);
+							_settings_client.network.max_companies  = Clamp(_settings_client.network.max_companies  + widget - NSSW_COMPANIES_TXT,  1, MAX_COMPANIES);
 							break;
 						case NSSW_SPECTATORS_BTND: case NSSW_SPECTATORS_BTNU:
 							_settings_client.network.max_spectators = Clamp(_settings_client.network.max_spectators + widget - NSSW_SPECTATORS_TXT, 0, MAX_CLIENTS);
@@ -874,7 +874,7 @@
 				_left_button_clicked = false;
 				break;
 
-			case NSSW_CLIENTS_TXT:    // Click on number of players
+			case NSSW_CLIENTS_TXT:    // Click on number of clients
 				this->widget_id = NSSW_CLIENTS_TXT;
 				SetDParam(0, _settings_client.network.max_clients);
 				ShowQueryString(STR_CONFIG_PATCHES_INT32, STR_NETWORK_NUMBER_OF_CLIENTS,    3, 50, this, CS_NUMERAL, QSF_NONE);
@@ -977,7 +977,7 @@
 			switch (this->widget_id) {
 				default: NOT_REACHED();
 				case NSSW_CLIENTS_TXT:    _settings_client.network.max_clients    = Clamp(value, 2, MAX_CLIENTS); break;
-				case NSSW_COMPANIES_TXT:  _settings_client.network.max_companies  = Clamp(value, 1, MAX_PLAYERS); break;
+				case NSSW_COMPANIES_TXT:  _settings_client.network.max_companies  = Clamp(value, 1, MAX_COMPANIES); break;
 				case NSSW_SPECTATORS_TXT: _settings_client.network.max_spectators = Clamp(value, 0, MAX_CLIENTS); break;
 			}
 		}
@@ -1046,16 +1046,16 @@
 	new NetworkStartServerWindow(&_network_start_server_window_desc);
 }
 
-static PlayerID NetworkLobbyFindCompanyIndex(byte pos)
+static CompanyID NetworkLobbyFindCompanyIndex(byte pos)
 {
-	/* Scroll through all _network_player_info and get the 'pos' item that is not empty */
-	for (PlayerID i = PLAYER_FIRST; i < MAX_PLAYERS; i++) {
-		if (_network_player_info[i].company_name[0] != '\0') {
+	/* Scroll through all _network_company_info and get the 'pos' item that is not empty */
+	for (CompanyID i = COMPANY_FIRST; i < MAX_COMPANIES; i++) {
+		if (!StrEmpty(_network_company_info[i].company_name)) {
 			if (pos-- == 0) return i;
 		}
 	}
 
-	return PLAYER_FIRST;
+	return COMPANY_FIRST;
 }
 
 /** Enum for NetworkLobbyWindow, referring to _network_lobby_window_widgets */
@@ -1071,11 +1071,11 @@
 };
 
 struct NetworkLobbyWindow : public Window {
-	PlayerID company;        ///< Select company
+	CompanyID company;       ///< Select company
 	NetworkGameList *server; ///< Selected server
 
 	NetworkLobbyWindow(const WindowDesc *desc, NetworkGameList *ngl) :
-			Window(desc), company(INVALID_PLAYER), server(ngl)
+			Window(desc), company(INVALID_COMPANY), server(ngl)
 	{
 		this->vscroll.cap = 10;
 
@@ -1088,7 +1088,7 @@
 		int y = NET_PRC__OFFSET_TOP_WIDGET_COMPANY, pos;
 
 		/* Join button is disabled when no company is selected */
-		this->SetWidgetDisabledState(NLWW_JOIN, this->company == INVALID_PLAYER);
+		this->SetWidgetDisabledState(NLWW_JOIN, this->company == INVALID_COMPANY);
 		/* Cannot start new company if there are too many */
 		this->SetWidgetDisabledState(NLWW_NEW, gi->companies_on >= gi->companies_max);
 		/* Cannot spectate if there are too many spectators */
@@ -1107,11 +1107,11 @@
 				GfxFillRect(11, y - 1, 154, y + 10, 10); // show highlighted item with a different colour
 			}
 
-			DoDrawStringTruncated(_network_player_info[company].company_name, 13, y, TC_BLACK, 135 - 13);
-			if (_network_player_info[company].use_password != 0) DrawSprite(SPR_LOCK, PAL_NONE, 135, y);
+			DoDrawStringTruncated(_network_company_info[company].company_name, 13, y, TC_BLACK, 135 - 13);
+			if (_network_company_info[company].use_password != 0) DrawSprite(SPR_LOCK, PAL_NONE, 135, y);
 
 			/* If the company's income was positive puts a green dot else a red dot */
-			if (_network_player_info[company].income >= 0) income = true;
+			if (_network_company_info[company].income >= 0) income = true;
 			DrawSprite(SPR_BLOT, income ? PALETTE_TO_GREEN : PALETTE_TO_RED, 145, y);
 
 			pos++;
@@ -1122,7 +1122,7 @@
 		/* Draw info about selected company when it is selected in the left window */
 		GfxFillRect(174, 39, 403, 75, 157);
 		DrawStringCentered(290, 50, STR_NETWORK_COMPANY_INFO, TC_FROMSTRING);
-		if (this->company != INVALID_PLAYER) {
+		if (this->company != INVALID_COMPANY) {
 			const uint x = 183;
 			const uint trunc_width = this->widget[NLWW_DETAILS].right - x;
 			y = 80;
@@ -1134,47 +1134,47 @@
 			DrawString(x, y, STR_NETWORK_CLIENTS, TC_GOLD);
 			y += 10;
 
-			SetDParamStr(0, _network_player_info[this->company].company_name);
+			SetDParamStr(0, _network_company_info[this->company].company_name);
 			DrawStringTruncated(x, y, STR_NETWORK_COMPANY_NAME, TC_GOLD, trunc_width);
 			y += 10;
 
-			SetDParam(0, _network_player_info[this->company].inaugurated_year);
+			SetDParam(0, _network_company_info[this->company].inaugurated_year);
 			DrawString(x, y, STR_NETWORK_INAUGURATION_YEAR, TC_GOLD); // inauguration year
 			y += 10;
 
-			SetDParam(0, _network_player_info[this->company].company_value);
+			SetDParam(0, _network_company_info[this->company].company_value);
 			DrawString(x, y, STR_NETWORK_VALUE, TC_GOLD); // company value
 			y += 10;
 
-			SetDParam(0, _network_player_info[this->company].money);
+			SetDParam(0, _network_company_info[this->company].money);
 			DrawString(x, y, STR_NETWORK_CURRENT_BALANCE, TC_GOLD); // current balance
 			y += 10;
 
-			SetDParam(0, _network_player_info[this->company].income);
+			SetDParam(0, _network_company_info[this->company].income);
 			DrawString(x, y, STR_NETWORK_LAST_YEARS_INCOME, TC_GOLD); // last year's income
 			y += 10;
 
-			SetDParam(0, _network_player_info[this->company].performance);
+			SetDParam(0, _network_company_info[this->company].performance);
 			DrawString(x, y, STR_NETWORK_PERFORMANCE, TC_GOLD); // performance
 			y += 10;
 
-			SetDParam(0, _network_player_info[this->company].num_vehicle[0]);
-			SetDParam(1, _network_player_info[this->company].num_vehicle[1]);
-			SetDParam(2, _network_player_info[this->company].num_vehicle[2]);
-			SetDParam(3, _network_player_info[this->company].num_vehicle[3]);
-			SetDParam(4, _network_player_info[this->company].num_vehicle[4]);
+			SetDParam(0, _network_company_info[this->company].num_vehicle[0]);
+			SetDParam(1, _network_company_info[this->company].num_vehicle[1]);
+			SetDParam(2, _network_company_info[this->company].num_vehicle[2]);
+			SetDParam(3, _network_company_info[this->company].num_vehicle[3]);
+			SetDParam(4, _network_company_info[this->company].num_vehicle[4]);
 			DrawString(x, y, STR_NETWORK_VEHICLES, TC_GOLD); // vehicles
 			y += 10;
 
-			SetDParam(0, _network_player_info[this->company].num_station[0]);
-			SetDParam(1, _network_player_info[this->company].num_station[1]);
-			SetDParam(2, _network_player_info[this->company].num_station[2]);
-			SetDParam(3, _network_player_info[this->company].num_station[3]);
-			SetDParam(4, _network_player_info[this->company].num_station[4]);
+			SetDParam(0, _network_company_info[this->company].num_station[0]);
+			SetDParam(1, _network_company_info[this->company].num_station[1]);
+			SetDParam(2, _network_company_info[this->company].num_station[2]);
+			SetDParam(3, _network_company_info[this->company].num_station[3]);
+			SetDParam(4, _network_company_info[this->company].num_station[4]);
 			DrawString(x, y, STR_NETWORK_STATIONS, TC_GOLD); // stations
 			y += 10;
 
-			SetDParamStr(0, _network_player_info[this->company].players);
+			SetDParamStr(0, _network_company_info[this->company].clients);
 			DrawStringTruncated(x, y, STR_NETWORK_PLAYERS, TC_GOLD, trunc_width); // players
 		}
 	}
@@ -1193,7 +1193,7 @@
 				if (id_v >= this->vscroll.cap) break;
 
 				id_v += this->vscroll.pos;
-				this->company = (id_v >= this->server->info.companies_on) ? INVALID_PLAYER : NetworkLobbyFindCompanyIndex(id_v);
+				this->company = (id_v >= this->server->info.companies_on) ? INVALID_COMPANY : NetworkLobbyFindCompanyIndex(id_v);
 				this->SetDirty();
 			} break;
 
@@ -1204,12 +1204,12 @@
 				break;
 
 			case NLWW_NEW:      // New company
-				_network_playas = PLAYER_NEW_COMPANY;
+				_network_playas = COMPANY_NEW_COMPANY;
 				NetworkClientConnectGame(_settings_client.network.last_host, _settings_client.network.last_port);
 				break;
 
 			case NLWW_SPECTATE: // Spectate game
-				_network_playas = PLAYER_SPECTATOR;
+				_network_playas = COMPANY_SPECTATOR;
 				NetworkClientConnectGame(_settings_client.network.last_host, _settings_client.network.last_port);
 				break;
 
@@ -1240,7 +1240,7 @@
 {     WWT_MATRIX,   RESIZE_NONE,   COLOUR_LIGHT_BLUE,    10,   155,    50,   190, (10 << 8) + 1,               STR_NETWORK_COMPANY_LIST_TIP},     // NLWW_MATRIX
 {  WWT_SCROLLBAR,   RESIZE_NONE,   COLOUR_LIGHT_BLUE,   156,   167,    38,   190, 0x0,                         STR_0190_SCROLL_BAR_SCROLLS_LIST},
 
-/* company/player info */
+/* company info */
 {      WWT_PANEL,   RESIZE_NONE,   COLOUR_LIGHT_BLUE,   173,   404,    38,   190, 0x0,                         STR_NULL},                         // NLWW_DETAILS
 
 /* buttons */
@@ -1276,7 +1276,7 @@
 //  and also makes able to give money to them, kick them (if server)
 //  and stuff like that.
 
-extern void DrawPlayerIcon(PlayerID pid, int x, int y);
+extern void DrawCompanyIcon(CompanyID cid, int x, int y);
 
 // Every action must be of this form
 typedef void ClientList_Action_Proc(byte client_no);
@@ -1326,7 +1326,7 @@
 // Here we start to define the options out of the menu
 static void ClientList_Kick(byte client_no)
 {
-	if (client_no < MAX_PLAYERS)
+	if (client_no < MAX_COMPANIES)
 		SEND_COMMAND(PACKET_SERVER_ERROR)(DEREF_CLIENT(client_no), NETWORK_ERROR_KICKED);
 }
 
@@ -1341,7 +1341,7 @@
 		}
 	}
 
-	if (client_no < MAX_PLAYERS) {
+	if (client_no < MAX_COMPANIES) {
 		SEND_COMMAND(PACKET_SERVER_ERROR)(DEREF_CLIENT(client_no), NETWORK_ERROR_KICKED);
 	}
 }
@@ -1402,7 +1402,7 @@
 			this->proc[i++] = &ClientList_SpeakToClient;
 		}
 
-		if (IsValidPlayerID(ci->client_playas) || ci->client_playas == PLAYER_SPECTATOR) {
+		if (IsValidCompanyID(ci->client_playas) || ci->client_playas == COMPANY_SPECTATOR) {
 			GetString(this->action[i], STR_NETWORK_CLIENTLIST_SPEAK_TO_COMPANY, lastof(this->action[i]));
 			this->proc[i++] = &ClientList_SpeakToCompany;
 		}
@@ -1410,8 +1410,8 @@
 		this->proc[i++] = &ClientList_SpeakToAll;
 
 		if (_network_own_client_index != ci->client_index) {
-			/* We are no spectator and the player we want to give money to is no spectator and money gifts are allowed */
-			if (IsValidPlayerID(_network_playas) && IsValidPlayerID(ci->client_playas) && _settings_game.economy.give_money) {
+			/* We are no spectator and the company we want to give money to is no spectator and money gifts are allowed */
+			if (IsValidCompanyID(_network_playas) && IsValidCompanyID(ci->client_playas) && _settings_game.economy.give_money) {
 				GetString(this->action[i], STR_NETWORK_CLIENTLIST_GIVE_MONEY, lastof(this->action[i]));
 				this->proc[i++] = &ClientList_GiveMoney;
 			}
@@ -1600,7 +1600,7 @@
 			}
 
 			/* Filter out spectators */
-			if (IsValidPlayerID(ci->client_playas)) DrawPlayerIcon(ci->client_playas, 64, y + 1);
+			if (IsValidCompanyID(ci->client_playas)) DrawCompanyIcon(ci->client_playas, 64, y + 1);
 
 			DoDrawString(ci->client_name, 81, y, colour);
 
--- a/src/network/network_gui.h	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/network/network_gui.h	Tue Sep 30 20:39:50 2008 +0000
@@ -11,7 +11,7 @@
 #include "network_type.h"
 
 void ShowNetworkNeedPassword(NetworkPasswordType npt);
-void ShowNetworkGiveMoneyWindow(PlayerID player); // PlayerID
+void ShowNetworkGiveMoneyWindow(CompanyID company);
 void ShowNetworkChatQueryWindow(DestType type, int dest);
 void ShowJoinStatusWindow();
 void ShowNetworkGameWindow();
--- a/src/network/network_internal.h	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/network/network_internal.h	Tue Sep 30 20:39:50 2008 +0000
@@ -91,7 +91,7 @@
 	NETLANG_COUNT
 };
 
-extern NetworkPlayerInfo _network_player_info[MAX_PLAYERS];
+extern NetworkCompanyInfo _network_company_info[MAX_COMPANIES];
 
 extern uint32 _frame_counter_server; // The frame_counter of the server, if in network-mode
 extern uint32 _frame_counter_max; // To where we may go with our clients
--- a/src/network/network_server.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/network/network_server.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -47,7 +47,7 @@
 	// Function: Sends info about a client
 	// Data:
 	//    uint16:  The index of the client (always unique on a server. 1 = server)
-	//    uint8:  As which player the client is playing
+	//    uint8:  As which company the client is playing
 	//    String: The name of the client
 	//
 
@@ -71,10 +71,10 @@
 
 	int i;
 
-	Player *player;
+	Company *company;
 	Packet *p;
 
-	byte active = ActivePlayerCount();
+	byte active = ActiveCompanyCount();
 
 	if (active == 0) {
 		p = NetworkSend_Init(PACKET_SERVER_COMPANY_INFO);
@@ -88,35 +88,35 @@
 
 	NetworkPopulateCompanyInfo();
 
-	FOR_ALL_PLAYERS(player) {
+	FOR_ALL_COMPANIES(company) {
 		p = NetworkSend_Init(PACKET_SERVER_COMPANY_INFO);
 
 		p->Send_uint8 (NETWORK_COMPANY_INFO_VERSION);
 		p->Send_uint8 (active);
-		p->Send_uint8 (player->index);
+		p->Send_uint8 (company->index);
 
-		p->Send_string(_network_player_info[player->index].company_name);
-		p->Send_uint32(_network_player_info[player->index].inaugurated_year);
-		p->Send_uint64(_network_player_info[player->index].company_value);
-		p->Send_uint64(_network_player_info[player->index].money);
-		p->Send_uint64(_network_player_info[player->index].income);
-		p->Send_uint16(_network_player_info[player->index].performance);
+		p->Send_string(_network_company_info[company->index].company_name);
+		p->Send_uint32(_network_company_info[company->index].inaugurated_year);
+		p->Send_uint64(_network_company_info[company->index].company_value);
+		p->Send_uint64(_network_company_info[company->index].money);
+		p->Send_uint64(_network_company_info[company->index].income);
+		p->Send_uint16(_network_company_info[company->index].performance);
 
 		/* Send 1 if there is a passord for the company else send 0 */
-		p->Send_bool(!StrEmpty(_network_player_info[player->index].password));
+		p->Send_bool(!StrEmpty(_network_company_info[company->index].password));
 
 		for (i = 0; i < NETWORK_VEHICLE_TYPES; i++) {
-			p->Send_uint16(_network_player_info[player->index].num_vehicle[i]);
+			p->Send_uint16(_network_company_info[company->index].num_vehicle[i]);
 		}
 
 		for (i = 0; i < NETWORK_STATION_TYPES; i++) {
-			p->Send_uint16(_network_player_info[player->index].num_station[i]);
+			p->Send_uint16(_network_company_info[company->index].num_station[i]);
 		}
 
-		if (_network_player_info[player->index].players[0] == '\0') {
+		if (StrEmpty(_network_company_info[company->index].clients)) {
 			p->Send_string("<none>");
 		} else {
-			p->Send_string(_network_player_info[player->index].players);
+			p->Send_string(_network_company_info[company->index].clients);
 		}
 
 		cs->Send_Packet(p);
@@ -276,7 +276,7 @@
 	NetworkTCPSocketHandler *new_cs;
 	Packet *p;
 
-	// Count how many players are waiting in the queue
+	// Count how many clients are waiting in the queue
 	FOR_ALL_CLIENTS(new_cs) {
 		if (new_cs->status == STATUS_MAP_WAIT) waiting++;
 	}
@@ -300,9 +300,7 @@
 	//  if MAP_PACKET_NORMAL:
 	//    piece of the map (till max-size of packet)
 	//  if MAP_PACKET_END:
-	//    uint32: seed0 of player
-	//    uint32: seed1 of player
-	//      last 2 are repeated MAX_PLAYERS time
+	//    nothing
 	//
 
 	static FILE *file_pointer;
@@ -476,7 +474,7 @@
 	// Packet: SERVER_COMMAND
 	// Function: Sends a DoCommand to the client
 	// Data:
-	//    uint8:  PlayerID (0..MAX_PLAYERS-1)
+	//    uint8:  CompanyID (0..MAX_COMPANIES-1)
 	//    uint32: CommandID (see command.h)
 	//    uint32: P1 (free variables used in DoCommand)
 	//    uint32: P2
@@ -488,7 +486,7 @@
 
 	Packet *p = NetworkSend_Init(PACKET_SERVER_COMMAND);
 
-	p->Send_uint8 (cp->player);
+	p->Send_uint8 (cp->company);
 	p->Send_uint32(cp->cmd);
 	p->Send_uint32(cp->p1);
 	p->Send_uint32(cp->p2);
@@ -619,7 +617,7 @@
 	if (!StrEmpty(_settings_client.network.server_password)) {
 		SEND_COMMAND(PACKET_SERVER_NEED_PASSWORD)(cs, NETWORK_GAME_PASSWORD);
 	} else {
-		if (IsValidPlayerID(ci->client_playas) && _network_player_info[ci->client_playas].password[0] != '\0') {
+		if (IsValidCompanyID(ci->client_playas) && _network_company_info[ci->client_playas].password[0] != '\0') {
 			SEND_COMMAND(PACKET_SERVER_NEED_PASSWORD)(cs, NETWORK_COMPANY_PASSWORD);
 		} else {
 			SEND_COMMAND(PACKET_SERVER_WELCOME)(cs);
@@ -638,7 +636,7 @@
 	char name[NETWORK_CLIENT_NAME_LENGTH];
 	char unique_id[NETWORK_UNIQUE_ID_LENGTH];
 	NetworkClientInfo *ci;
-	PlayerID playas;
+	CompanyID playas;
 	NetworkLanguage client_lang;
 	char client_revision[NETWORK_REVISION_LENGTH];
 
@@ -660,31 +658,31 @@
 
 	// join another company does not affect these values
 	switch (playas) {
-		case PLAYER_NEW_COMPANY: /* New company */
-			if (ActivePlayerCount() >= _settings_client.network.max_companies) {
+		case COMPANY_NEW_COMPANY: /* New company */
+			if (ActiveCompanyCount() >= _settings_client.network.max_companies) {
 				SEND_COMMAND(PACKET_SERVER_ERROR)(cs, NETWORK_ERROR_FULL);
 				return;
 			}
 			break;
-		case PLAYER_SPECTATOR: /* Spectator */
+		case COMPANY_SPECTATOR: /* Spectator */
 			if (NetworkSpectatorCount() >= _settings_client.network.max_spectators) {
 				SEND_COMMAND(PACKET_SERVER_ERROR)(cs, NETWORK_ERROR_FULL);
 				return;
 			}
 			break;
 		default: /* Join another company (companies 1-8 (index 0-7)) */
-			if (!IsValidPlayerID(playas)) {
-				SEND_COMMAND(PACKET_SERVER_ERROR)(cs, NETWORK_ERROR_PLAYER_MISMATCH);
+			if (!IsValidCompanyID(playas)) {
+				SEND_COMMAND(PACKET_SERVER_ERROR)(cs, NETWORK_ERROR_COMPANY_MISMATCH);
 				return;
 			}
 			break;
 	}
 
 	// We need a valid name.. make it Player
-	if (*name == '\0') ttd_strlcpy(name, "Player", sizeof(name));
+	if (StrEmpty(name)) ttd_strlcpy(name, "Player", sizeof(name));
 
 	if (!NetworkFindName(name)) { // Change name if duplicate
-		// We could not create a name for this player
+		// We could not create a name for this client
 		SEND_COMMAND(PACKET_SERVER_ERROR)(cs, NETWORK_ERROR_NAME_IN_USE);
 		return;
 	}
@@ -697,7 +695,7 @@
 	ci->client_lang = client_lang;
 
 	/* Make sure companies to which people try to join are not autocleaned */
-	if (IsValidPlayerID(playas)) _network_player_info[playas].months_empty = 0;
+	if (IsValidCompanyID(playas)) _network_company_info[playas].months_empty = 0;
 
 	if (_grfconfig == NULL) {
 		RECEIVE_COMMAND(PACKET_CLIENT_NEWGRFS_CHECKED)(cs, NULL);
@@ -725,7 +723,7 @@
 
 		ci = DEREF_CLIENT_INFO(cs);
 
-		if (IsValidPlayerID(ci->client_playas) && _network_player_info[ci->client_playas].password[0] != '\0') {
+		if (IsValidCompanyID(ci->client_playas) && _network_company_info[ci->client_playas].password[0] != '\0') {
 			SEND_COMMAND(PACKET_SERVER_NEED_PASSWORD)(cs, NETWORK_COMPANY_PASSWORD);
 			return;
 		}
@@ -736,7 +734,7 @@
 	} else if (cs->status == STATUS_AUTHORIZING && type == NETWORK_COMPANY_PASSWORD) {
 		ci = DEREF_CLIENT_INFO(cs);
 
-		if (strcmp(password, _network_player_info[ci->client_playas].password) != 0) {
+		if (strcmp(password, _network_company_info[ci->client_playas].password) != 0) {
 			// Password is invalid
 			SEND_COMMAND(PACKET_SERVER_ERROR)(cs, NETWORK_ERROR_WRONG_PASSWORD);
 			return;
@@ -828,17 +826,17 @@
 	byte flags = GetCommandFlags(cp->cmd);
 
 	if (flags & CMD_SERVER && ci->client_index != NETWORK_SERVER_INDEX) {
-		IConsolePrintF(CC_ERROR, "WARNING: server only command from client %d (IP: %s), kicking...", ci->client_index, GetPlayerIP(ci));
+		IConsolePrintF(CC_ERROR, "WARNING: server only command from client %d (IP: %s), kicking...", ci->client_index, GetClientIP(ci));
 		return false;
 	}
 
 	if (flags & CMD_OFFLINE) {
-		IConsolePrintF(CC_ERROR, "WARNING: offline only command from client %d (IP: %s), kicking...", ci->client_index, GetPlayerIP(ci));
+		IConsolePrintF(CC_ERROR, "WARNING: offline only command from client %d (IP: %s), kicking...", ci->client_index, GetClientIP(ci));
 		return false;
 	}
 
-	if (cp->cmd != CMD_PLAYER_CTRL && !IsValidPlayerID(cp->player) && ci->client_index != NETWORK_SERVER_INDEX) {
-		IConsolePrintF(CC_ERROR, "WARNING: spectator issueing command from client %d (IP: %s), kicking...", ci->client_index, GetPlayerIP(ci));
+	if (cp->cmd != CMD_COMPANY_CTRL && !IsValidCompanyID(cp->company) && ci->client_index != NETWORK_SERVER_INDEX) {
+		IConsolePrintF(CC_ERROR, "WARNING: spectator issueing command from client %d (IP: %s), kicking...", ci->client_index, GetClientIP(ci));
 		return false;
 	}
 
@@ -863,11 +861,11 @@
 	}
 
 	CommandPacket *cp = MallocT<CommandPacket>(1);
-	cp->player = (Owner)p->Recv_uint8();
-	cp->cmd    = p->Recv_uint32();
-	cp->p1     = p->Recv_uint32();
-	cp->p2     = p->Recv_uint32();
-	cp->tile   = p->Recv_uint32();
+	cp->company = (CompanyID)p->Recv_uint8();
+	cp->cmd     = p->Recv_uint32();
+	cp->p1      = p->Recv_uint32();
+	cp->p2      = p->Recv_uint32();
+	cp->tile    = p->Recv_uint32();
 	p->Recv_string(cp->text, lengthof(cp->text));
 
 	callback = p->Recv_uint8();
@@ -881,7 +879,7 @@
 
 	/* Check if cp->cmd is valid */
 	if (!IsValidCommand(cp->cmd)) {
-		IConsolePrintF(CC_ERROR, "WARNING: invalid command from client %d (IP: %s).", ci->client_index, GetPlayerIP(ci));
+		IConsolePrintF(CC_ERROR, "WARNING: invalid command from client %d (IP: %s).", ci->client_index, GetClientIP(ci));
 		SEND_COMMAND(PACKET_SERVER_ERROR)(cs, NETWORK_ERROR_NOT_EXPECTED);
 		free(cp);
 		return;
@@ -893,35 +891,35 @@
 		return;
 	}
 
-	/** Only CMD_PLAYER_CTRL is always allowed, for the rest, playas needs
-	 * to match the player in the packet. If it doesn't, the client has done
+	/** Only CMD_COMPANY_CTRL is always allowed, for the rest, playas needs
+	 * to match the company in the packet. If it doesn't, the client has done
 	 * something pretty naughty (or a bug), and will be kicked
 	 */
-	if (!(cp->cmd == CMD_PLAYER_CTRL && cp->p1 == 0 && ci->client_playas == PLAYER_NEW_COMPANY) && ci->client_playas != cp->player) {
-		IConsolePrintF(CC_ERROR, "WARNING: player %d (IP: %s) tried to execute a command as player %d, kicking...",
-		               ci->client_playas + 1, GetPlayerIP(ci), cp->player + 1);
-		SEND_COMMAND(PACKET_SERVER_ERROR)(cs, NETWORK_ERROR_PLAYER_MISMATCH);
+	if (!(cp->cmd == CMD_COMPANY_CTRL && cp->p1 == 0 && ci->client_playas == COMPANY_NEW_COMPANY) && ci->client_playas != cp->company) {
+		IConsolePrintF(CC_ERROR, "WARNING: client %d (IP: %s) tried to execute a command as company %d, kicking...",
+		               ci->client_playas + 1, GetClientIP(ci), cp->company + 1);
+		SEND_COMMAND(PACKET_SERVER_ERROR)(cs, NETWORK_ERROR_COMPANY_MISMATCH);
 		free(cp);
 		return;
 	}
 
-	/** @todo CMD_PLAYER_CTRL with p1 = 0 announces a new player to the server. To give the
-	 * player the correct ID, the server injects p2 and executes the command. Any other p1
+	/** @todo CMD_COMPANY_CTRL with p1 = 0 announces a new company to the server. To give the
+	 * company the correct ID, the server injects p2 and executes the command. Any other p1
 	 * is prohibited. Pretty ugly and should be redone together with its function.
-	 * @see CmdPlayerCtrl() players.c:655
+	 * @see CmdCompanyCtrl()
 	 */
-	if (cp->cmd == CMD_PLAYER_CTRL) {
+	if (cp->cmd == CMD_COMPANY_CTRL) {
 		if (cp->p1 != 0) {
 			SEND_COMMAND(PACKET_SERVER_ERROR)(cs, NETWORK_ERROR_CHEATER);
 			free(cp);
 			return;
 		}
 
-		/* XXX - Execute the command as a valid player. Normally this would be done by a
+		/* XXX - Execute the command as a valid company. Normally this would be done by a
 		 * spectator, but that is not allowed any commands. So do an impersonation. The drawback
 		 * of this is that the first company's last_built_tile is also updated... */
-		cp->player = OWNER_BEGIN;
-		cp->p2 = cs - _clients; // XXX - UGLY! p2 is mis-used to get the client-id in CmdPlayerCtrl
+		cp->company = OWNER_BEGIN;
+		cp->p2 = cs - _clients; // XXX - UGLY! p2 is mis-used to get the client-id in CmdCompanyCtrl
 	}
 
 	// The frame can be executed in the same frame as the next frame-packet
@@ -1038,7 +1036,7 @@
 			NetworkServerSendChat(NETWORK_ACTION_SERVER_MESSAGE, DESTTYPE_BROADCAST, 0, "Game unpaused (client connected)", NETWORK_SERVER_INDEX);
 		}
 
-		CheckMinPlayers();
+		CheckMinActiveClients();
 
 		/* Execute script for, e.g. MOTD */
 		IConsoleCmdExec("exec scripts/on_server_connect.scr 0");
@@ -1064,7 +1062,7 @@
 			ci = NetworkFindClientInfoFromIndex(from_index);
 			/* Display the text locally, and that is it */
 			if (ci != NULL)
-				NetworkTextMessage(action, (ConsoleColour)GetDrawStringPlayerColor(ci->client_playas), false, ci->client_name, "%s", msg);
+				NetworkTextMessage(action, (ConsoleColour)GetDrawStringCompanyColor(ci->client_playas), false, ci->client_name, "%s", msg);
 		} else {
 			/* Else find the client to send the message to */
 			FOR_ALL_CLIENTS(cs) {
@@ -1081,7 +1079,7 @@
 				ci = NetworkFindClientInfoFromIndex(from_index);
 				ci_to = NetworkFindClientInfoFromIndex(dest);
 				if (ci != NULL && ci_to != NULL)
-					NetworkTextMessage(action, (ConsoleColour)GetDrawStringPlayerColor(ci->client_playas), true, ci_to->client_name, "%s", msg);
+					NetworkTextMessage(action, (ConsoleColour)GetDrawStringCompanyColor(ci->client_playas), true, ci_to->client_name, "%s", msg);
 			} else {
 				FOR_ALL_CLIENTS(cs) {
 					if (cs->index == from_index) {
@@ -1095,7 +1093,7 @@
 	case DESTTYPE_TEAM: {
 		bool show_local = true; // If this is false, the message is already displayed
 														// on the client who did sent it.
-		/* Find all clients that belong to this player */
+		/* Find all clients that belong to this company */
 		ci_to = NULL;
 		FOR_ALL_CLIENTS(cs) {
 			ci = DEREF_CLIENT_INFO(cs);
@@ -1109,22 +1107,22 @@
 		ci = NetworkFindClientInfoFromIndex(from_index);
 		ci_own = NetworkFindClientInfoFromIndex(NETWORK_SERVER_INDEX);
 		if (ci != NULL && ci_own != NULL && ci_own->client_playas == dest) {
-			NetworkTextMessage(action, (ConsoleColour)GetDrawStringPlayerColor(ci->client_playas), false, ci->client_name, "%s", msg);
+			NetworkTextMessage(action, (ConsoleColour)GetDrawStringCompanyColor(ci->client_playas), false, ci->client_name, "%s", msg);
 			if (from_index == NETWORK_SERVER_INDEX) show_local = false;
 			ci_to = ci_own;
 		}
 
-		/* There is no such player */
+		/* There is no such client */
 		if (ci_to == NULL) break;
 
 		// Display the message locally (so you know you have sent it)
 		if (ci != NULL && show_local) {
 			if (from_index == NETWORK_SERVER_INDEX) {
 				char name[NETWORK_NAME_LENGTH];
-				StringID str = IsValidPlayerID(ci_to->client_playas) ? STR_COMPANY_NAME : STR_NETWORK_SPECTATORS;
+				StringID str = IsValidCompanyID(ci_to->client_playas) ? STR_COMPANY_NAME : STR_NETWORK_SPECTATORS;
 				SetDParam(0, ci_to->client_playas);
 				GetString(name, str, lastof(name));
-				NetworkTextMessage(action, (ConsoleColour)GetDrawStringPlayerColor(ci_own->client_playas), true, name, "%s", msg);
+				NetworkTextMessage(action, (ConsoleColour)GetDrawStringCompanyColor(ci_own->client_playas), true, name, "%s", msg);
 			} else {
 				FOR_ALL_CLIENTS(cs) {
 					if (cs->index == from_index) {
@@ -1144,7 +1142,7 @@
 		}
 		ci = NetworkFindClientInfoFromIndex(from_index);
 		if (ci != NULL)
-			NetworkTextMessage(action, (ConsoleColour)GetDrawStringPlayerColor(ci->client_playas), false, ci->client_name, "%s", msg);
+			NetworkTextMessage(action, (ConsoleColour)GetDrawStringCompanyColor(ci->client_playas), false, ci->client_name, "%s", msg);
 		break;
 	}
 }
@@ -1167,7 +1165,7 @@
 	const NetworkClientInfo *ci = DEREF_CLIENT_INFO(cs);
 	switch (action) {
 		case NETWORK_ACTION_GIVE_MONEY:
-			if (!IsValidPlayerID(ci->client_playas)) break;
+			if (!IsValidCompanyID(ci->client_playas)) break;
 			/* Fall-through */
 		case NETWORK_ACTION_CHAT:
 		case NETWORK_ACTION_CHAT_CLIENT:
@@ -1175,7 +1173,7 @@
 			NetworkServerSendChat(action, desttype, dest, msg, cs->index);
 			break;
 		default:
-			IConsolePrintF(CC_ERROR, "WARNING: invalid chat action from client %d (IP: %s).", ci->client_index, GetPlayerIP(ci));
+			IConsolePrintF(CC_ERROR, "WARNING: invalid chat action from client %d (IP: %s).", ci->client_index, GetClientIP(ci));
 			SEND_COMMAND(PACKET_SERVER_ERROR)(cs, NETWORK_ERROR_NOT_EXPECTED);
 			break;
 	}
@@ -1195,8 +1193,8 @@
 	p->Recv_string(password, sizeof(password));
 	ci = DEREF_CLIENT_INFO(cs);
 
-	if (IsValidPlayerID(ci->client_playas)) {
-		ttd_strlcpy(_network_player_info[ci->client_playas].password, password, sizeof(_network_player_info[0].password));
+	if (IsValidCompanyID(ci->client_playas)) {
+		ttd_strlcpy(_network_company_info[ci->client_playas].password, password, sizeof(_network_company_info[0].password));
 	}
 }
 
@@ -1301,7 +1299,7 @@
 void NetworkPopulateCompanyInfo()
 {
 	char password[NETWORK_PASSWORD_LENGTH];
-	const Player *p;
+	const Company *c;
 	const Vehicle *v;
 	const Station *s;
 	NetworkTCPSocketHandler *cs;
@@ -1309,44 +1307,44 @@
 	uint i;
 	uint16 months_empty;
 
-	for (PlayerID pid = PLAYER_FIRST; pid < MAX_PLAYERS; pid++) {
-		if (!IsValidPlayerID(pid)) memset(&_network_player_info[pid], 0, sizeof(NetworkPlayerInfo));
+	for (CompanyID cid = COMPANY_FIRST; cid < MAX_COMPANIES; cid++) {
+		if (!IsValidCompanyID(cid)) memset(&_network_company_info[cid], 0, sizeof(NetworkCompanyInfo));
 	}
 
-	FOR_ALL_PLAYERS(p) {
+	FOR_ALL_COMPANIES(c) {
 		// Clean the info but not the password
-		ttd_strlcpy(password, _network_player_info[p->index].password, sizeof(password));
-		months_empty = _network_player_info[p->index].months_empty;
-		memset(&_network_player_info[p->index], 0, sizeof(NetworkPlayerInfo));
-		_network_player_info[p->index].months_empty = months_empty;
-		ttd_strlcpy(_network_player_info[p->index].password, password, sizeof(_network_player_info[p->index].password));
+		ttd_strlcpy(password, _network_company_info[c->index].password, sizeof(password));
+		months_empty = _network_company_info[c->index].months_empty;
+		memset(&_network_company_info[c->index], 0, sizeof(NetworkCompanyInfo));
+		_network_company_info[c->index].months_empty = months_empty;
+		ttd_strlcpy(_network_company_info[c->index].password, password, sizeof(_network_company_info[c->index].password));
 
 		// Grap the company name
-		SetDParam(0, p->index);
-		GetString(_network_player_info[p->index].company_name, STR_COMPANY_NAME, lastof(_network_player_info[p->index].company_name));
+		SetDParam(0, c->index);
+		GetString(_network_company_info[c->index].company_name, STR_COMPANY_NAME, lastof(_network_company_info[c->index].company_name));
 
 		// Check the income
-		if (_cur_year - 1 == p->inaugurated_year) {
-			// The player is here just 1 year, so display [2], else display[1]
-			for (i = 0; i < lengthof(p->yearly_expenses[2]); i++) {
-				_network_player_info[p->index].income -= p->yearly_expenses[2][i];
+		if (_cur_year - 1 == c->inaugurated_year) {
+			// The company is here just 1 year, so display [2], else display[1]
+			for (i = 0; i < lengthof(c->yearly_expenses[2]); i++) {
+				_network_company_info[c->index].income -= c->yearly_expenses[2][i];
 			}
 		} else {
-			for (i = 0; i < lengthof(p->yearly_expenses[1]); i++) {
-				_network_player_info[p->index].income -= p->yearly_expenses[1][i];
+			for (i = 0; i < lengthof(c->yearly_expenses[1]); i++) {
+				_network_company_info[c->index].income -= c->yearly_expenses[1][i];
 			}
 		}
 
 		// Set some general stuff
-		_network_player_info[p->index].inaugurated_year = p->inaugurated_year;
-		_network_player_info[p->index].company_value = p->old_economy[0].company_value;
-		_network_player_info[p->index].money = p->player_money;
-		_network_player_info[p->index].performance = p->old_economy[0].performance_history;
+		_network_company_info[c->index].inaugurated_year = c->inaugurated_year;
+		_network_company_info[c->index].company_value = c->old_economy[0].company_value;
+		_network_company_info[c->index].money = c->money;
+		_network_company_info[c->index].performance = c->old_economy[0].performance_history;
 	}
 
 	// Go through all vehicles and count the type of vehicles
 	FOR_ALL_VEHICLES(v) {
-		if (!IsValidPlayerID(v->owner) || !v->IsPrimaryVehicle()) continue;
+		if (!IsValidCompanyID(v->owner) || !v->IsPrimaryVehicle()) continue;
 		byte type = 0;
 		switch (v->type) {
 			case VEH_TRAIN: type = 0; break;
@@ -1355,13 +1353,13 @@
 			case VEH_SHIP: type = 4; break;
 			default: continue;
 		}
-		_network_player_info[v->owner].num_vehicle[type]++;
+		_network_company_info[v->owner].num_vehicle[type]++;
 	}
 
 	// Go through all stations and count the types of stations
 	FOR_ALL_STATIONS(s) {
-		if (IsValidPlayerID(s->owner)) {
-			NetworkPlayerInfo *npi = &_network_player_info[s->owner];
+		if (IsValidCompanyID(s->owner)) {
+			NetworkCompanyInfo *npi = &_network_company_info[s->owner];
 
 			if (s->facilities & FACIL_TRAIN)      npi->num_station[0]++;
 			if (s->facilities & FACIL_TRUCK_STOP) npi->num_station[1]++;
@@ -1372,9 +1370,9 @@
 	}
 
 	ci = NetworkFindClientInfoFromIndex(NETWORK_SERVER_INDEX);
-	// Register local player (if not dedicated)
-	if (ci != NULL && IsValidPlayerID(ci->client_playas))
-		ttd_strlcpy(_network_player_info[ci->client_playas].players, ci->client_name, sizeof(_network_player_info[0].players));
+	// Register local company (if not dedicated)
+	if (ci != NULL && IsValidCompanyID(ci->client_playas))
+		ttd_strlcpy(_network_company_info[ci->client_playas].clients, ci->client_name, sizeof(_network_company_info[0].clients));
 
 	FOR_ALL_CLIENTS(cs) {
 		char client_name[NETWORK_CLIENT_NAME_LENGTH];
@@ -1382,12 +1380,12 @@
 		NetworkGetClientName(client_name, sizeof(client_name), cs);
 
 		ci = DEREF_CLIENT_INFO(cs);
-		if (ci != NULL && IsValidPlayerID(ci->client_playas)) {
-			if (!StrEmpty(_network_player_info[ci->client_playas].players)) {
-				ttd_strlcat(_network_player_info[ci->client_playas].players, ", ", lengthof(_network_player_info[0].players));
+		if (ci != NULL && IsValidCompanyID(ci->client_playas)) {
+			if (!StrEmpty(_network_company_info[ci->client_playas].clients)) {
+				ttd_strlcat(_network_company_info[ci->client_playas].clients, ", ", lengthof(_network_company_info[0].clients));
 			}
 
-			ttd_strlcat(_network_player_info[ci->client_playas].players, client_name, lengthof(_network_player_info[0].players));
+			ttd_strlcat(_network_company_info[ci->client_playas].clients, client_name, lengthof(_network_company_info[0].clients));
 		}
 	}
 }
@@ -1424,8 +1422,8 @@
 {
 	NetworkTCPSocketHandler *cs;
 	const NetworkClientInfo *ci;
-	const Player *p;
-	bool clients_in_company[MAX_PLAYERS];
+	const Company *c;
+	bool clients_in_company[MAX_COMPANIES];
 
 	if (!_settings_client.network.autoclean_companies) return;
 
@@ -1434,39 +1432,39 @@
 	/* Detect the active companies */
 	FOR_ALL_CLIENTS(cs) {
 		ci = DEREF_CLIENT_INFO(cs);
-		if (IsValidPlayerID(ci->client_playas)) clients_in_company[ci->client_playas] = true;
+		if (IsValidCompanyID(ci->client_playas)) clients_in_company[ci->client_playas] = true;
 	}
 
 	if (!_network_dedicated) {
 		ci = NetworkFindClientInfoFromIndex(NETWORK_SERVER_INDEX);
-		if (IsValidPlayerID(ci->client_playas)) clients_in_company[ci->client_playas] = true;
+		if (IsValidCompanyID(ci->client_playas)) clients_in_company[ci->client_playas] = true;
 	}
 
 	/* Go through all the comapnies */
-	FOR_ALL_PLAYERS(p) {
+	FOR_ALL_COMPANIES(c) {
 		/* Skip the non-active once */
-		if (p->is_ai) continue;
+		if (c->is_ai) continue;
 
-		if (!clients_in_company[p->index]) {
+		if (!clients_in_company[c->index]) {
 			/* The company is empty for one month more */
-			_network_player_info[p->index].months_empty++;
+			_network_company_info[c->index].months_empty++;
 
 			/* Is the company empty for autoclean_unprotected-months, and is there no protection? */
-			if (_settings_client.network.autoclean_unprotected != 0 && _network_player_info[p->index].months_empty > _settings_client.network.autoclean_unprotected && _network_player_info[p->index].password[0] == '\0') {
+			if (_settings_client.network.autoclean_unprotected != 0 && _network_company_info[c->index].months_empty > _settings_client.network.autoclean_unprotected && StrEmpty(_network_company_info[c->index].password)) {
 				/* Shut the company down */
-				DoCommandP(0, 2, p->index, NULL, CMD_PLAYER_CTRL);
-				IConsolePrintF(CC_DEFAULT, "Auto-cleaned company #%d", p->index + 1);
+				DoCommandP(0, 2, c->index, NULL, CMD_COMPANY_CTRL);
+				IConsolePrintF(CC_DEFAULT, "Auto-cleaned company #%d", c->index + 1);
 			}
-			/* Is the compnay empty for autoclean_protected-months, and there is a protection? */
-			if (_settings_client.network.autoclean_protected != 0 && _network_player_info[p->index].months_empty > _settings_client.network.autoclean_protected && _network_player_info[p->index].password[0] != '\0') {
+			/* Is the company empty for autoclean_protected-months, and there is a protection? */
+			if (_settings_client.network.autoclean_protected != 0 && _network_company_info[c->index].months_empty > _settings_client.network.autoclean_protected && !StrEmpty(_network_company_info[c->index].password)) {
 				/* Unprotect the company */
-				_network_player_info[p->index].password[0] = '\0';
-				IConsolePrintF(CC_DEFAULT, "Auto-removed protection from company #%d", p->index+1);
-				_network_player_info[p->index].months_empty = 0;
+				_network_company_info[c->index].password[0] = '\0';
+				IConsolePrintF(CC_DEFAULT, "Auto-removed protection from company #%d", c->index + 1);
+				_network_company_info[c->index].months_empty = 0;
 			}
 		} else {
 			/* It is not empty, reset the date */
-			_network_player_info[p->index].months_empty = 0;
+			_network_company_info[c->index].months_empty = 0;
 		}
 	}
 }
@@ -1625,30 +1623,30 @@
 	NetworkAutoCleanCompanies();
 }
 
-void NetworkServerChangeOwner(PlayerID current_player, PlayerID new_player)
+void NetworkServerChangeOwner(Owner current_owner, Owner new_owner)
 {
 	/* The server has to handle all administrative issues, for example
 	 * updating and notifying all clients of what has happened */
 	NetworkTCPSocketHandler *cs;
 	NetworkClientInfo *ci = NetworkFindClientInfoFromIndex(NETWORK_SERVER_INDEX);
 
-	/* The server has just changed from player */
-	if (current_player == ci->client_playas) {
-		ci->client_playas = new_player;
+	/* The server has just changed from owner */
+	if (current_owner == ci->client_playas) {
+		ci->client_playas = new_owner;
 		NetworkUpdateClientInfo(NETWORK_SERVER_INDEX);
 	}
 
-	/* Find all clients that were in control of this company, and mark them as new_player */
+	/* Find all clients that were in control of this company, and mark them as new_owner */
 	FOR_ALL_CLIENTS(cs) {
 		ci = DEREF_CLIENT_INFO(cs);
-		if (current_player == ci->client_playas) {
-			ci->client_playas = new_player;
+		if (current_owner == ci->client_playas) {
+			ci->client_playas = new_owner;
 			NetworkUpdateClientInfo(ci->client_index);
 		}
 	}
 }
 
-const char* GetPlayerIP(const NetworkClientInfo* ci)
+const char* GetClientIP(const NetworkClientInfo* ci)
 {
 	struct in_addr addr;
 
@@ -1678,8 +1676,8 @@
 		status = (cs->status < (ptrdiff_t)lengthof(stat_str) ? stat_str[cs->status] : "unknown");
 		IConsolePrintF(CC_INFO, "Client #%1d  name: '%s'  status: '%s'  frame-lag: %3d  company: %1d  IP: %s  unique-id: '%s'",
 			cs->index, ci->client_name, status, lag,
-			ci->client_playas + (IsValidPlayerID(ci->client_playas) ? 1 : 0),
-			GetPlayerIP(ci), ci->unique_id);
+			ci->client_playas + (IsValidCompanyID(ci->client_playas) ? 1 : 0),
+			GetClientIP(ci), ci->unique_id);
 	}
 }
 
@@ -1693,7 +1691,7 @@
 	SEND_COMMAND(PACKET_SERVER_ERROR)(NetworkFindClientStateFromIndex(client_index), error);
 }
 
-bool NetworkCompanyHasPlayers(PlayerID company)
+bool NetworkCompanyHasClients(CompanyID company)
 {
 	const NetworkTCPSocketHandler *cs;
 	const NetworkClientInfo *ci;
--- a/src/network/network_type.h	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/network/network_type.h	Tue Sep 30 20:39:50 2008 +0000
@@ -14,11 +14,11 @@
 
 enum {
 	/**
-	 * How many clients can we have? Like.. MAX_PLAYERS - 1 is the amount of
-	 *  players that can really play.. so.. a max of 4 spectators.. gives us..
-	 *  MAX_PLAYERS + 3
+	 * How many clients can we have? Like.. MAX_COMPANIES is the amount of
+	 *  companies that can really play.. so.. a max of 3 spectators.. gives us..
+	 *  MAX_COMPANIES + 3
 	 */
-	MAX_CLIENTS = MAX_PLAYERS + 3,
+	MAX_CLIENTS = MAX_COMPANIES + 3,
 
 	/** Do not change this next line. It should _ALWAYS_ be MAX_CLIENTS + 1 */
 	MAX_CLIENT_INFO = MAX_CLIENTS + 1,
@@ -34,9 +34,9 @@
 	NETWORK_EMPTY_INDEX  = 0,
 };
 
-struct NetworkPlayerInfo {
+struct NetworkCompanyInfo {
 	char company_name[NETWORK_COMPANY_NAME_LENGTH]; ///< Company name
-	char password[NETWORK_PASSWORD_LENGTH];         ///< The password for the player
+	char password[NETWORK_PASSWORD_LENGTH];         ///< The password for the company
 	Year inaugurated_year;                          ///< What year the company started in
 	Money company_value;                            ///< The company value
 	Money money;                                    ///< The amount of money the company has
@@ -45,7 +45,7 @@
 	bool use_password;                              ///< Is there a password
 	uint16 num_vehicle[NETWORK_VEHICLE_TYPES];      ///< How many vehicles are there of this type?
 	uint16 num_station[NETWORK_STATION_TYPES];      ///< How many stations are there of this type?
-	char players[NETWORK_PLAYERS_LENGTH];           ///< The players that control this company (Name1, name2, ..)
+	char clients[NETWORK_CLIENTS_LENGTH];           ///< The clients that control this company (Name1, name2, ..)
 	uint16 months_empty;                            ///< How many months the company is empty
 };
 
@@ -53,9 +53,9 @@
 	uint16 client_index;                            ///< Index of the client (same as ClientState->index)
 	char client_name[NETWORK_CLIENT_NAME_LENGTH];   ///< Name of the client
 	byte client_lang;                               ///< The language of the client
-	PlayerID client_playas;                         ///< As which player is this client playing (PlayerID)
+	CompanyID client_playas;                        ///< As which company is this client playing (CompanyID)
 	uint32 client_ip;                               ///< IP-address of the client (so he can be banned)
-	Date join_date;                                 ///< Gamedate the player has joined
+	Date join_date;                                 ///< Gamedate the client has joined
 	char unique_id[NETWORK_UNIQUE_ID_LENGTH];       ///< Every play sends an unique id so we can indentify him
 };
 
@@ -65,9 +65,9 @@
 };
 
 enum DestType {
-	DESTTYPE_BROADCAST, ///< Send message/notice to all players (All)
+	DESTTYPE_BROADCAST, ///< Send message/notice to all clients (All)
 	DESTTYPE_TEAM,      ///< Send message/notice to everyone playing the same company (Team)
-	DESTTYPE_CLIENT,    ///< Send message/notice to only a certain player (Private)
+	DESTTYPE_CLIENT,    ///< Send message/notice to only a certain client (Private)
 };
 
 /** Actions that can be used for NetworkTextMessage */
@@ -98,7 +98,7 @@
 	NETWORK_ERROR_WRONG_REVISION,
 	NETWORK_ERROR_NAME_IN_USE,
 	NETWORK_ERROR_WRONG_PASSWORD,
-	NETWORK_ERROR_PLAYER_MISMATCH, // Happens in CLIENT_COMMAND
+	NETWORK_ERROR_COMPANY_MISMATCH, // Happens in CLIENT_COMMAND
 	NETWORK_ERROR_KICKED,
 	NETWORK_ERROR_CHEATER,
 	NETWORK_ERROR_FULL,
--- a/src/network/network_udp.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/network/network_udp.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -83,7 +83,7 @@
 	ngi.server_lang    = _settings_client.network.server_lang;
 	ngi.use_password   = !StrEmpty(_settings_client.network.server_password);
 	ngi.clients_max    = _settings_client.network.max_clients;
-	ngi.companies_on   = ActivePlayerCount();
+	ngi.companies_on   = ActiveCompanyCount();
 	ngi.companies_max  = _settings_client.network.max_companies;
 	ngi.spectators_on  = NetworkSpectatorCount();
 	ngi.spectators_max = _settings_client.network.max_spectators;
@@ -116,36 +116,36 @@
 
 	/* Send the amount of active companies */
 	packet.Send_uint8 (NETWORK_COMPANY_INFO_VERSION);
-	packet.Send_uint8 (ActivePlayerCount());
+	packet.Send_uint8 (ActiveCompanyCount());
 
 	/* Fetch the latest version of everything */
 	NetworkPopulateCompanyInfo();
 
-	Player *player;
+	Company *company;
 	byte current = 0;
-	/* Go through all the players */
-	FOR_ALL_PLAYERS(player) {
+	/* Go through all the companies */
+	FOR_ALL_COMPANIES(company) {
 		current++;
 
 		/* Send the information */
 		packet.Send_uint8 (current);
 
-		packet.Send_string(_network_player_info[player->index].company_name);
-		packet.Send_uint32(_network_player_info[player->index].inaugurated_year);
-		packet.Send_uint64(_network_player_info[player->index].company_value);
-		packet.Send_uint64(_network_player_info[player->index].money);
-		packet.Send_uint64(_network_player_info[player->index].income);
-		packet.Send_uint16(_network_player_info[player->index].performance);
+		packet.Send_string(_network_company_info[company->index].company_name);
+		packet.Send_uint32(_network_company_info[company->index].inaugurated_year);
+		packet.Send_uint64(_network_company_info[company->index].company_value);
+		packet.Send_uint64(_network_company_info[company->index].money);
+		packet.Send_uint64(_network_company_info[company->index].income);
+		packet.Send_uint16(_network_company_info[company->index].performance);
 
 		/* Send 1 if there is a passord for the company else send 0 */
-		packet.Send_bool  (!StrEmpty(_network_player_info[player->index].password));
+		packet.Send_bool  (!StrEmpty(_network_company_info[company->index].password));
 
 		for (int i = 0; i < NETWORK_VEHICLE_TYPES; i++) {
-			packet.Send_uint16(_network_player_info[player->index].num_vehicle[i]);
+			packet.Send_uint16(_network_company_info[company->index].num_vehicle[i]);
 		}
 
 		for (int i = 0; i < NETWORK_STATION_TYPES; i++) {
-			packet.Send_uint16(_network_player_info[player->index].num_station[i]);
+			packet.Send_uint16(_network_company_info[company->index].num_station[i]);
 		}
 	}
 
--- a/src/newgrf_callbacks.h	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/newgrf_callbacks.h	Tue Sep 30 20:39:50 2008 +0000
@@ -127,7 +127,7 @@
 	/** Called to determine the type (if any) of foundation to draw for industry tile. */
 	CBID_INDUSTRY_DRAW_FOUNDATIONS       = 0x30, // 15 bit callback
 
-	/** Called when the player (or AI) tries to start or stop a vehicle. Mainly
+	/** Called when the company (or AI) tries to start or stop a vehicle. Mainly
 	 * used for preventing a vehicle from leaving the depot. */
 	CBID_VEHICLE_START_STOP_CHECK        = 0x31, // 15 bit callback, but 0xFF test is done with 8 bit
 
--- a/src/newgrf_engine.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/newgrf_engine.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -445,8 +445,8 @@
 	const Livery *l;
 
 	if (v == NULL) {
-		if (!IsValidPlayerID(_current_player)) return 0;
-		l = GetEngineLivery(engine, _current_player, INVALID_ENGINE, NULL);
+		if (!IsValidCompanyID(_current_company)) return 0;
+		l = GetEngineLivery(engine, _current_company, INVALID_ENGINE, NULL);
 	} else if (v->type == VEH_TRAIN) {
 		l = GetEngineLivery((v->u.rail.first_engine != INVALID_ENGINE && (IsArticulatedPart(v) || UsesWagonOverride(v))) ? v->u.rail.first_engine : v->engine_type, v->owner, v->u.rail.first_engine, v);
 	} else {
@@ -464,7 +464,7 @@
 	if (v == NULL) {
 		/* Vehicle does not exist, so we're in a purchase list */
 		switch (variable) {
-			case 0x43: return _current_player | (LiveryHelper(object->u.vehicle.self_type, NULL) << 24); // Owner information
+			case 0x43: return _current_company | (LiveryHelper(object->u.vehicle.self_type, NULL) << 24); // Owner information
 			case 0x46: return 0;               // Motion counter
 			case 0x48: return GetEngine(object->u.vehicle.self_type)->flags; // Vehicle Type Info
 			case 0x49: return _cur_year; // 'Long' format build year
@@ -542,8 +542,8 @@
 			return cargo_classes | (common_cargo_type << 8) | (common_subtype << 16) | (user_def_data << 24);
 		}
 
-		case 0x43: // Player information
-			return v->owner | (GetPlayer(v->owner)->is_ai ? 0x10000 : 0) | (LiveryHelper(v->engine_type, v) << 24);
+		case 0x43: // Company information
+			return v->owner | (GetCompany(v->owner)->is_ai ? 0x10000 : 0) | (LiveryHelper(v->engine_type, v) << 24);
 
 		case 0x44: // Aircraft information
 			if (v->type != VEH_AIRCRAFT) return UINT_MAX;
--- a/src/newgrf_house.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/newgrf_house.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -579,10 +579,10 @@
 {
 	const HouseSpec *hs = GetHouseSpecs(GetHouseType(tile));
 
-	/* Human players are always allowed to remove buildings, as is water and
+	/* Humans are always allowed to remove buildings, as is water and
 	 * anyone using the scenario editor. */
-	if ((IsValidPlayerID(_current_player) && IsHumanPlayer(_current_player))
-			|| _current_player == OWNER_WATER || _current_player == OWNER_NONE) return true;
+	if ((IsValidCompanyID(_current_company) && IsHumanCompany(_current_company))
+			|| _current_company == OWNER_WATER || _current_company == OWNER_NONE) return true;
 
 	if (HasBit(hs->callback_mask, CBM_HOUSE_DENY_DESTRUCTION)) {
 		uint16 callback_res = GetHouseCallback(CBID_HOUSE_DENY_DESTRUCTION, 0, 0, GetHouseType(tile), GetTownByTile(tile), tile);
--- a/src/newgrf_industries.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/newgrf_industries.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -267,16 +267,16 @@
 		/* Layout number */
 		case 0x44: return industry->selected_layout;
 
-		/* player info */
+		/* Company info */
 		case 0x45: {
 			byte colours;
 			bool is_ai = false;
 
-			if (IsValidPlayerID(industry->founder)) {
-				const Player *p = GetPlayer(industry->founder);
-				const Livery *l = &p->livery[LS_DEFAULT];
+			if (IsValidCompanyID(industry->founder)) {
+				const Company *c = GetCompany(industry->founder);
+				const Livery *l = &c->livery[LS_DEFAULT];
 
-				is_ai = p->is_ai;
+				is_ai = c->is_ai;
 				colours = l->colour1 + l->colour2 * 16;
 			} else {
 				colours = GB(Random(), 0, 8);
--- a/src/newgrf_station.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/newgrf_station.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -382,10 +382,10 @@
 			case 0x41:
 			case 0x46:
 			case 0x47:
-			case 0x49: return 0x2110000;       // Platforms, tracks & position
-			case 0x42: return 0;               // Rail type (XXX Get current type from GUI?)
-			case 0x43: return _current_player; // Station owner
-			case 0x44: return 2;               // PBS status
+			case 0x49: return 0x2110000;        // Platforms, tracks & position
+			case 0x42: return 0;                // Rail type (XXX Get current type from GUI?)
+			case 0x43: return _current_company; // Station owner
+			case 0x44: return 2;                // PBS status
 			case 0xFA: return Clamp(_date - DAYS_TILL_ORIGINAL_BASE_YEAR, 0, 65535); // Build date, clamped to a 16 bit value
 		}
 
@@ -782,7 +782,7 @@
 	const RailtypeInfo *rti = GetRailTypeInfo(railtype);
 	SpriteID relocation;
 	SpriteID image;
-	SpriteID palette = PLAYER_SPRITE_COLOR(_local_player);
+	SpriteID palette = COMPANY_SPRITE_COLOR(_local_company);
 	uint tile = 2;
 
 	statspec = GetCustomStationSpec(sclass, station);
--- a/src/news_gui.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/news_gui.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -51,7 +51,7 @@
 {
 	const CompanyNewsInformation *cni = (const CompanyNewsInformation*)ni->free_data;
 
-	DrawPlayerFace(cni->face, cni->colour, 2, 23);
+	DrawCompanyManagerFace(cni->face, cni->colour, 2, 23);
 	GfxFillRect(3, 23, 3 + 91, 23 + 118, PALETTE_TO_STRUCT_GREY, FILLRECT_RECOLOR);
 
 	SetDParamStr(0, cni->president_name);
@@ -123,26 +123,26 @@
  * Data common to all news items of a given subtype (actual data)
  */
 static const struct NewsSubtypeData _news_subtype_data[NS_END] = {
-	/* type,             display_mode, flags,                  callback */
-	{ NT_ARRIVAL_PLAYER,  NM_THIN,     NF_VIEWPORT|NF_VEHICLE, NULL                    }, ///< NS_ARRIVAL_PLAYER
-	{ NT_ARRIVAL_OTHER,   NM_THIN,     NF_VIEWPORT|NF_VEHICLE, NULL                    }, ///< NS_ARRIVAL_OTHER
-	{ NT_ACCIDENT,        NM_THIN,     NF_VIEWPORT|NF_TILE,    NULL                    }, ///< NS_ACCIDENT_TILE
-	{ NT_ACCIDENT,        NM_THIN,     NF_VIEWPORT|NF_VEHICLE, NULL                    }, ///< NS_ACCIDENT_VEHICLE
-	{ NT_COMPANY_INFO,    NM_NORMAL,   NF_NONE,                DrawNewsBankrupcy       }, ///< NS_COMPANY_TROUBLE
-	{ NT_COMPANY_INFO,    NM_NORMAL,   NF_NONE,                DrawNewsBankrupcy       }, ///< NS_COMPANY_MERGER
-	{ NT_COMPANY_INFO,    NM_NORMAL,   NF_NONE,                DrawNewsBankrupcy       }, ///< NS_COMPANY_BANKRUPT
-	{ NT_COMPANY_INFO,    NM_NORMAL,   NF_TILE,                DrawNewsBankrupcy       }, ///< NS_COMPANY_NEW
-	{ NT_INDUSTRY_OPEN,   NM_THIN,     NF_VIEWPORT|NF_TILE,    NULL                    }, ///< NS_INDUSTRY_OPEN
-	{ NT_INDUSTRY_CLOSE,  NM_THIN,     NF_VIEWPORT|NF_TILE,    NULL                    }, ///< NS_INDUSTRY_CLOSE
-	{ NT_ECONOMY,         NM_NORMAL,   NF_NONE,                NULL                    }, ///< NS_ECONOMY
-	{ NT_INDUSTRY_PLAYER, NM_THIN,     NF_VIEWPORT|NF_TILE,    NULL                    }, ///< NS_INDUSTRY_PLAYER
-	{ NT_INDUSTRY_OTHER,  NM_THIN,     NF_VIEWPORT|NF_TILE,    NULL                    }, ///< NS_INDUSTRY_OTHER
-	{ NT_INDUSTRY_NOBODY, NM_THIN,     NF_VIEWPORT|NF_TILE,    NULL                    }, ///< NS_INDUSTRY_NOBODY
-	{ NT_ADVICE,          NM_SMALL,    NF_VIEWPORT|NF_VEHICLE, NULL                    }, ///< NS_ADVICE
-	{ NT_NEW_VEHICLES,    NM_NORMAL,   NF_NONE,                DrawNewsNewVehicleAvail }, ///< NS_NEW_VEHICLES
-	{ NT_ACCEPTANCE,      NM_SMALL,    NF_VIEWPORT|NF_TILE,    NULL                    }, ///< NS_ACCEPTANCE
-	{ NT_SUBSIDIES,       NM_NORMAL,   NF_TILE|NF_TILE2,       NULL                    }, ///< NS_SUBSIDIES
-	{ NT_GENERAL,         NM_NORMAL,   NF_TILE,                NULL                    }, ///< NS_GENERAL
+	/* type,               display_mode, flags,                  callback */
+	{ NT_ARRIVAL_COMPANY,  NM_THIN,     NF_VIEWPORT|NF_VEHICLE, NULL                    }, ///< NS_ARRIVAL_COMPANY
+	{ NT_ARRIVAL_OTHER,    NM_THIN,     NF_VIEWPORT|NF_VEHICLE, NULL                    }, ///< NS_ARRIVAL_OTHER
+	{ NT_ACCIDENT,         NM_THIN,     NF_VIEWPORT|NF_TILE,    NULL                    }, ///< NS_ACCIDENT_TILE
+	{ NT_ACCIDENT,         NM_THIN,     NF_VIEWPORT|NF_VEHICLE, NULL                    }, ///< NS_ACCIDENT_VEHICLE
+	{ NT_COMPANY_INFO,     NM_NORMAL,   NF_NONE,                DrawNewsBankrupcy       }, ///< NS_COMPANY_TROUBLE
+	{ NT_COMPANY_INFO,     NM_NORMAL,   NF_NONE,                DrawNewsBankrupcy       }, ///< NS_COMPANY_MERGER
+	{ NT_COMPANY_INFO,     NM_NORMAL,   NF_NONE,                DrawNewsBankrupcy       }, ///< NS_COMPANY_BANKRUPT
+	{ NT_COMPANY_INFO,     NM_NORMAL,   NF_TILE,                DrawNewsBankrupcy       }, ///< NS_COMPANY_NEW
+	{ NT_INDUSTRY_OPEN,    NM_THIN,     NF_VIEWPORT|NF_TILE,    NULL                    }, ///< NS_INDUSTRY_OPEN
+	{ NT_INDUSTRY_CLOSE,   NM_THIN,     NF_VIEWPORT|NF_TILE,    NULL                    }, ///< NS_INDUSTRY_CLOSE
+	{ NT_ECONOMY,          NM_NORMAL,   NF_NONE,                NULL                    }, ///< NS_ECONOMY
+	{ NT_INDUSTRY_COMPANY, NM_THIN,     NF_VIEWPORT|NF_TILE,    NULL                    }, ///< NS_INDUSTRY_COMPANY
+	{ NT_INDUSTRY_OTHER,   NM_THIN,     NF_VIEWPORT|NF_TILE,    NULL                    }, ///< NS_INDUSTRY_OTHER
+	{ NT_INDUSTRY_NOBODY,  NM_THIN,     NF_VIEWPORT|NF_TILE,    NULL                    }, ///< NS_INDUSTRY_NOBODY
+	{ NT_ADVICE,           NM_SMALL,    NF_VIEWPORT|NF_VEHICLE, NULL                    }, ///< NS_ADVICE
+	{ NT_NEW_VEHICLES,     NM_NORMAL,   NF_NONE,                DrawNewsNewVehicleAvail }, ///< NS_NEW_VEHICLES
+	{ NT_ACCEPTANCE,       NM_SMALL,    NF_VIEWPORT|NF_TILE,    NULL                    }, ///< NS_ACCEPTANCE
+	{ NT_SUBSIDIES,        NM_NORMAL,   NF_TILE|NF_TILE2,       NULL                    }, ///< NS_SUBSIDIES
+	{ NT_GENERAL,          NM_NORMAL,   NF_TILE,                NULL                    }, ///< NS_GENERAL
 };
 
 /**
@@ -150,14 +150,14 @@
  */
 NewsTypeData _news_type_data[NT_END] = {
 	/* name,              age, sound,           display */
-	{ "arrival_player",    60, SND_1D_APPLAUSE, ND_FULL },  ///< NT_ARRIVAL_PLAYER
+	{ "arrival_player",    60, SND_1D_APPLAUSE, ND_FULL },  ///< NT_ARRIVAL_COMPANY
 	{ "arrival_other",     60, SND_1D_APPLAUSE, ND_FULL },  ///< NT_ARRIVAL_OTHER
 	{ "accident",          90, SND_BEGIN,       ND_FULL },  ///< NT_ACCIDENT
 	{ "company_info",      60, SND_BEGIN,       ND_FULL },  ///< NT_COMPANY_INFO
 	{ "open",              90, SND_BEGIN,       ND_FULL },  ///< NT_INDUSTRY_OPEN
 	{ "close",             90, SND_BEGIN,       ND_FULL },  ///< NT_INDUSTRY_CLOSE
 	{ "economy",           30, SND_BEGIN,       ND_FULL },  ///< NT_ECONOMY
-	{ "production_player", 30, SND_BEGIN,       ND_FULL },  ///< NT_INDUSTRY_PLAYER
+	{ "production_player", 30, SND_BEGIN,       ND_FULL },  ///< NT_INDUSTRY_COMPANY
 	{ "production_other",  30, SND_BEGIN,       ND_FULL },  ///< NT_INDUSTRY_OTHER
 	{ "production_nobody", 30, SND_BEGIN,       ND_FULL },  ///< NT_INDUSTRY_NOBODY
 	{ "advice",           150, SND_BEGIN,       ND_FULL },  ///< NT_ADVICE
@@ -590,7 +590,7 @@
 	while (ni != NULL) {
 		NewsItem *next = ni->next;
 		switch (ni->subtype) {
-			case NS_ARRIVAL_PLAYER:
+			case NS_ARRIVAL_COMPANY:
 			case NS_ARRIVAL_OTHER:
 			case NS_ACCEPTANCE:
 				if (ni->data_b == sid) DeleteNewsItem(ni);
@@ -968,21 +968,21 @@
 /* List of news-setting lines (4 widgets for each line).
  * First widget must be number WIDGET_NEWSOPT_START_OPTION
  */
-NEWS_SETTINGS_LINE(26, NT_ARRIVAL_PLAYER,  STR_0206_ARRIVAL_OF_FIRST_VEHICLE),
-NEWS_SETTINGS_LINE(26, NT_ARRIVAL_OTHER,   STR_0207_ARRIVAL_OF_FIRST_VEHICLE),
-NEWS_SETTINGS_LINE(26, NT_ACCIDENT,        STR_0208_ACCIDENTS_DISASTERS),
-NEWS_SETTINGS_LINE(26, NT_COMPANY_INFO,    STR_0209_COMPANY_INFORMATION),
-NEWS_SETTINGS_LINE(26, NT_INDUSTRY_OPEN,   STR_NEWS_INDUSTRY_OPEN),
-NEWS_SETTINGS_LINE(26, NT_INDUSTRY_CLOSE,  STR_NEWS_INDUSTRY_CLOSE),
-NEWS_SETTINGS_LINE(26, NT_ECONOMY,         STR_020A_ECONOMY_CHANGES),
-NEWS_SETTINGS_LINE(26, NT_INDUSTRY_PLAYER, STR_INDUSTRY_CHANGES_SERVED_BY_PLAYER),
-NEWS_SETTINGS_LINE(26, NT_INDUSTRY_OTHER,  STR_INDUSTRY_CHANGES_SERVED_BY_OTHER),
-NEWS_SETTINGS_LINE(26, NT_INDUSTRY_NOBODY, STR_OTHER_INDUSTRY_PRODUCTION_CHANGES),
-NEWS_SETTINGS_LINE(26, NT_ADVICE,          STR_020B_ADVICE_INFORMATION_ON_PLAYER),
-NEWS_SETTINGS_LINE(26, NT_NEW_VEHICLES,    STR_020C_NEW_VEHICLES),
-NEWS_SETTINGS_LINE(26, NT_ACCEPTANCE,      STR_020D_CHANGES_OF_CARGO_ACCEPTANCE),
-NEWS_SETTINGS_LINE(26, NT_SUBSIDIES,       STR_020E_SUBSIDIES),
-NEWS_SETTINGS_LINE(26, NT_GENERAL,         STR_020F_GENERAL_INFORMATION),
+NEWS_SETTINGS_LINE(26, NT_ARRIVAL_COMPANY,  STR_0206_ARRIVAL_OF_FIRST_VEHICLE),
+NEWS_SETTINGS_LINE(26, NT_ARRIVAL_OTHER,    STR_0207_ARRIVAL_OF_FIRST_VEHICLE),
+NEWS_SETTINGS_LINE(26, NT_ACCIDENT,         STR_0208_ACCIDENTS_DISASTERS),
+NEWS_SETTINGS_LINE(26, NT_COMPANY_INFO,     STR_0209_COMPANY_INFORMATION),
+NEWS_SETTINGS_LINE(26, NT_INDUSTRY_OPEN,    STR_NEWS_INDUSTRY_OPEN),
+NEWS_SETTINGS_LINE(26, NT_INDUSTRY_CLOSE,   STR_NEWS_INDUSTRY_CLOSE),
+NEWS_SETTINGS_LINE(26, NT_ECONOMY,          STR_020A_ECONOMY_CHANGES),
+NEWS_SETTINGS_LINE(26, NT_INDUSTRY_COMPANY, STR_INDUSTRY_CHANGES_SERVED_BY_PLAYER),
+NEWS_SETTINGS_LINE(26, NT_INDUSTRY_OTHER,   STR_INDUSTRY_CHANGES_SERVED_BY_OTHER),
+NEWS_SETTINGS_LINE(26, NT_INDUSTRY_NOBODY,  STR_OTHER_INDUSTRY_PRODUCTION_CHANGES),
+NEWS_SETTINGS_LINE(26, NT_ADVICE,           STR_020B_ADVICE_INFORMATION_ON_PLAYER),
+NEWS_SETTINGS_LINE(26, NT_NEW_VEHICLES,     STR_020C_NEW_VEHICLES),
+NEWS_SETTINGS_LINE(26, NT_ACCEPTANCE,       STR_020D_CHANGES_OF_CARGO_ACCEPTANCE),
+NEWS_SETTINGS_LINE(26, NT_SUBSIDIES,        STR_020E_SUBSIDIES),
+NEWS_SETTINGS_LINE(26, NT_GENERAL,          STR_020F_GENERAL_INFORMATION),
 
 {   WIDGETS_END},
 };
--- a/src/news_type.h	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/news_type.h	Tue Sep 30 20:39:50 2008 +0000
@@ -13,17 +13,17 @@
  * Type of news.
  */
 enum NewsType {
-	NT_ARRIVAL_PLAYER,  ///< Cargo arrived for player
+	NT_ARRIVAL_COMPANY, ///< Cargo arrived for company
 	NT_ARRIVAL_OTHER,   ///< Cargo arrived for competitor
 	NT_ACCIDENT,        ///< An accident or disaster has occurred
 	NT_COMPANY_INFO,    ///< Company info (new companies, bankrupcy messages)
 	NT_INDUSTRY_OPEN,   ///< Opening of industries
 	NT_INDUSTRY_CLOSE,  ///< Closing of industries
 	NT_ECONOMY,         ///< Economic changes (recession, industry up/dowm)
-	NT_INDUSTRY_PLAYER, ///< Production changes of industry serviced by local player
+	NT_INDUSTRY_COMPANY,///< Production changes of industry serviced by local company
 	NT_INDUSTRY_OTHER,  ///< Production changes of industry serviced by competitor(s)
 	NT_INDUSTRY_NOBODY, ///< Other industry production changes
-	NT_ADVICE,          ///< Bits of news about vehicles of the player
+	NT_ADVICE,          ///< Bits of news about vehicles of the company
 	NT_NEW_VEHICLES,    ///< New vehicle has become available
 	NT_ACCEPTANCE,      ///< A type of cargo is (no longer) accepted
 	NT_SUBSIDIES,       ///< News about subsidies (announcements, expirations, acceptance)
@@ -35,7 +35,7 @@
  * News subtypes.
  */
 enum NewsSubtype {
-	NS_ARRIVAL_PLAYER,   ///< NT_ARRIVAL_PLAYER
+	NS_ARRIVAL_COMPANY,  ///< NT_ARRIVAL_COMPANY
 	NS_ARRIVAL_OTHER,    ///< NT_ARRIVAL_OTHER
 	NS_ACCIDENT_TILE,    ///< NT_ACCIDENT (tile)
 	NS_ACCIDENT_VEHICLE, ///< NT_ACCIDENT (vehicle)
@@ -46,7 +46,7 @@
 	NS_INDUSTRY_OPEN,    ///< NT_INDUSTRY_OPEN
 	NS_INDUSTRY_CLOSE,   ///< NT_INDUSTRY_CLOSE
 	NS_ECONOMY,          ///< NT_ECONOMY
-	NS_INDUSTRY_PLAYER,  ///< NT_INDUSTRY_PLAYER
+	NS_INDUSTRY_COMPANY, ///< NT_INDUSTRY_COMPANY
 	NS_INDUSTRY_OTHER,   ///< NT_INDUSTRY_OTHER
 	NS_INDUSTRY_NOBODY,  ///< NT_INDUSTRY_NOBODY
 	NS_ADVICE,           ///< NT_ADVICE
@@ -130,7 +130,7 @@
 	uint32 face; ///< The face of the president
 	byte colour; ///< The colour related to the company
 
-	void FillData(const struct Player *p, const struct Player *other = NULL);
+	void FillData(const struct Company *c, const struct Company *other = NULL);
 };
 
 #endif /* NEWS_TYPE_H */
--- a/src/npf.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/npf.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -573,7 +573,7 @@
 }
 
 /**
- * Finds out if a given player's vehicles are allowed to enter a given tile.
+ * Finds out if a given company's vehicles are allowed to enter a given tile.
  * @param owner    The owner of the vehicle.
  * @param tile     The tile that is about to be entered.
  * @param enterdir The direction in which the vehicle wants to enter the tile.
--- a/src/oldloader.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/oldloader.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -363,7 +363,7 @@
 		 * or vehicles that could not have an order would still have a
 		 * (loading) order which causes assertions and the like later on.
 		 */
-		if (!IsPlayerBuildableVehicleType(v) ||
+		if (!IsCompanyBuildableVehicleType(v) ||
 				(v->IsPrimaryVehicle() && v->current_order.IsType(OT_NOTHING))) {
 			v->current_order.MakeDummy();
 		}
@@ -770,60 +770,60 @@
 	return true;
 }
 
-static PlayerID _current_player_id;
+static CompanyID _current_company_id;
 static int32 _old_yearly;
 
-static const OldChunks player_yearly_chunk[] = {
+static const OldChunks _company_yearly_chunk[] = {
 	OCL_VAR(  OC_INT32,   1, &_old_yearly ),
 	OCL_END()
 };
 
-static bool OldPlayerYearly(LoadgameState *ls, int num)
+static bool OldCompanyYearly(LoadgameState *ls, int num)
 {
 	int i;
-	Player *p = GetPlayer(_current_player_id);
+	Company *c = GetCompany(_current_company_id);
 
 	for (i = 0; i < 13; i++) {
-		if (!LoadChunk(ls, NULL, player_yearly_chunk)) return false;
+		if (!LoadChunk(ls, NULL, _company_yearly_chunk)) return false;
 
-		p->yearly_expenses[num][i] = _old_yearly;
+		c->yearly_expenses[num][i] = _old_yearly;
 	}
 
 	return true;
 }
 
-static const OldChunks player_economy_chunk[] = {
-	OCL_SVAR( OC_FILE_I32 | OC_VAR_I64, PlayerEconomyEntry, income ),
-	OCL_SVAR( OC_FILE_I32 | OC_VAR_I64, PlayerEconomyEntry, expenses ),
-	OCL_SVAR( OC_INT32, PlayerEconomyEntry, delivered_cargo ),
-	OCL_SVAR( OC_INT32, PlayerEconomyEntry, performance_history ),
-	OCL_SVAR( OC_FILE_I32 | OC_VAR_I64, PlayerEconomyEntry, company_value ),
+static const OldChunks _company_economy_chunk[] = {
+	OCL_SVAR( OC_FILE_I32 | OC_VAR_I64, CompanyEconomyEntry, income ),
+	OCL_SVAR( OC_FILE_I32 | OC_VAR_I64, CompanyEconomyEntry, expenses ),
+	OCL_SVAR( OC_INT32,                 CompanyEconomyEntry, delivered_cargo ),
+	OCL_SVAR( OC_INT32,                 CompanyEconomyEntry, performance_history ),
+	OCL_SVAR( OC_FILE_I32 | OC_VAR_I64, CompanyEconomyEntry, company_value ),
 
 	OCL_END()
 };
 
-static bool OldPlayerEconomy(LoadgameState *ls, int num)
+static bool OldCompanyEconomy(LoadgameState *ls, int num)
 {
 	int i;
-	Player *p = GetPlayer(_current_player_id);
+	Company *c = GetCompany(_current_company_id);
 
-	if (!LoadChunk(ls, &p->cur_economy, player_economy_chunk)) return false;
+	if (!LoadChunk(ls, &c->cur_economy, _company_economy_chunk)) return false;
 
 	/* Don't ask, but the number in TTD(Patch) are inversed to OpenTTD */
-	p->cur_economy.income   = -p->cur_economy.income;
-	p->cur_economy.expenses = -p->cur_economy.expenses;
+	c->cur_economy.income   = -c->cur_economy.income;
+	c->cur_economy.expenses = -c->cur_economy.expenses;
 
 	for (i = 0; i < 24; i++) {
-		if (!LoadChunk(ls, &p->old_economy[i], player_economy_chunk)) return false;
+		if (!LoadChunk(ls, &c->old_economy[i], _company_economy_chunk)) return false;
 
-		p->old_economy[i].income   = -p->old_economy[i].income;
-		p->old_economy[i].expenses = -p->old_economy[i].expenses;
+		c->old_economy[i].income   = -c->old_economy[i].income;
+		c->old_economy[i].expenses = -c->old_economy[i].expenses;
 	}
 
 	return true;
 }
 
-static const OldChunks player_ai_build_rec_chunk[] = {
+static const OldChunks _company_ai_build_rec_chunk[] = {
 	OCL_SVAR(   OC_TILE, AiBuildRec, spec_tile ),
 	OCL_SVAR(   OC_TILE, AiBuildRec, use_tile ),
 	OCL_SVAR(  OC_UINT8, AiBuildRec, rand_rng ),
@@ -842,216 +842,215 @@
 
 static bool OldLoadAIBuildRec(LoadgameState *ls, int num)
 {
-	Player *p = GetPlayer(_current_player_id);
+	Company *c = GetCompany(_current_company_id);
 
 	switch (num) {
-		case 0: return LoadChunk(ls, &_players_ai[p->index].src, player_ai_build_rec_chunk);
-		case 1: return LoadChunk(ls, &_players_ai[p->index].dst, player_ai_build_rec_chunk);
-		case 2: return LoadChunk(ls, &_players_ai[p->index].mid1, player_ai_build_rec_chunk);
-		case 3: return LoadChunk(ls, &_players_ai[p->index].mid2, player_ai_build_rec_chunk);
+		case 0: return LoadChunk(ls, &_companies_ai[c->index].src,  _company_ai_build_rec_chunk);
+		case 1: return LoadChunk(ls, &_companies_ai[c->index].dst,  _company_ai_build_rec_chunk);
+		case 2: return LoadChunk(ls, &_companies_ai[c->index].mid1, _company_ai_build_rec_chunk);
+		case 3: return LoadChunk(ls, &_companies_ai[c->index].mid2, _company_ai_build_rec_chunk);
 	}
 
 	return false;
 }
-static const OldChunks player_ai_chunk[] = {
-	OCL_SVAR(  OC_UINT8, PlayerAI, state ),
+static const OldChunks _company_ai_chunk[] = {
+	OCL_SVAR(  OC_UINT8, CompanyAI, state ),
 	OCL_NULL( 1 ),         ///< Junk
-	OCL_SVAR(  OC_UINT8, PlayerAI, state_mode ),
-	OCL_SVAR( OC_UINT16, PlayerAI, state_counter ),
-	OCL_SVAR( OC_UINT16, PlayerAI, timeout_counter ),
+	OCL_SVAR(  OC_UINT8, CompanyAI, state_mode ),
+	OCL_SVAR( OC_UINT16, CompanyAI, state_counter ),
+	OCL_SVAR( OC_UINT16, CompanyAI, timeout_counter ),
 
 	OCL_CHUNK( 4, OldLoadAIBuildRec ),
 
 	OCL_NULL( 20 ),        ///< More junk
 
-	OCL_SVAR(  OC_UINT8, PlayerAI, cargo_type ),
-	OCL_SVAR(  OC_UINT8, PlayerAI, num_wagons ),
-	OCL_SVAR(  OC_UINT8, PlayerAI, build_kind ),
-	OCL_SVAR(  OC_UINT8, PlayerAI, num_build_rec ),
-	OCL_SVAR(  OC_UINT8, PlayerAI, num_loco_to_build ),
-	OCL_SVAR(  OC_UINT8, PlayerAI, num_want_fullload ),
+	OCL_SVAR(  OC_UINT8, CompanyAI, cargo_type ),
+	OCL_SVAR(  OC_UINT8, CompanyAI, num_wagons ),
+	OCL_SVAR(  OC_UINT8, CompanyAI, build_kind ),
+	OCL_SVAR(  OC_UINT8, CompanyAI, num_build_rec ),
+	OCL_SVAR(  OC_UINT8, CompanyAI, num_loco_to_build ),
+	OCL_SVAR(  OC_UINT8, CompanyAI, num_want_fullload ),
 
 	OCL_NULL( 14 ),        ///< Oh no more junk :|
 
 	OCL_NULL( 2 ),         ///< Loco-id, not used
 
-	OCL_SVAR( OC_UINT16, PlayerAI, wagon_list[0] ),
-	OCL_SVAR( OC_UINT16, PlayerAI, wagon_list[1] ),
-	OCL_SVAR( OC_UINT16, PlayerAI, wagon_list[2] ),
-	OCL_SVAR( OC_UINT16, PlayerAI, wagon_list[3] ),
-	OCL_SVAR( OC_UINT16, PlayerAI, wagon_list[4] ),
-	OCL_SVAR( OC_UINT16, PlayerAI, wagon_list[5] ),
-	OCL_SVAR( OC_UINT16, PlayerAI, wagon_list[6] ),
-	OCL_SVAR( OC_UINT16, PlayerAI, wagon_list[7] ),
-	OCL_SVAR( OC_UINT16, PlayerAI, wagon_list[8] ),
-	OCL_SVAR(  OC_UINT8, PlayerAI, order_list_blocks[0] ),
-	OCL_SVAR(  OC_UINT8, PlayerAI, order_list_blocks[1] ),
-	OCL_SVAR(  OC_UINT8, PlayerAI, order_list_blocks[2] ),
-	OCL_SVAR(  OC_UINT8, PlayerAI, order_list_blocks[3] ),
-	OCL_SVAR(  OC_UINT8, PlayerAI, order_list_blocks[4] ),
-	OCL_SVAR(  OC_UINT8, PlayerAI, order_list_blocks[5] ),
-	OCL_SVAR(  OC_UINT8, PlayerAI, order_list_blocks[6] ),
-	OCL_SVAR(  OC_UINT8, PlayerAI, order_list_blocks[7] ),
-	OCL_SVAR(  OC_UINT8, PlayerAI, order_list_blocks[8] ),
-	OCL_SVAR(  OC_UINT8, PlayerAI, order_list_blocks[9] ),
-	OCL_SVAR(  OC_UINT8, PlayerAI, order_list_blocks[10] ),
-	OCL_SVAR(  OC_UINT8, PlayerAI, order_list_blocks[11] ),
-	OCL_SVAR(  OC_UINT8, PlayerAI, order_list_blocks[12] ),
-	OCL_SVAR(  OC_UINT8, PlayerAI, order_list_blocks[13] ),
-	OCL_SVAR(  OC_UINT8, PlayerAI, order_list_blocks[14] ),
-	OCL_SVAR(  OC_UINT8, PlayerAI, order_list_blocks[15] ),
-	OCL_SVAR(  OC_UINT8, PlayerAI, order_list_blocks[16] ),
-	OCL_SVAR(  OC_UINT8, PlayerAI, order_list_blocks[17] ),
-	OCL_SVAR(  OC_UINT8, PlayerAI, order_list_blocks[18] ),
-	OCL_SVAR(  OC_UINT8, PlayerAI, order_list_blocks[19] ),
-
-	OCL_SVAR( OC_UINT16, PlayerAI, start_tile_a ),
-	OCL_SVAR( OC_UINT16, PlayerAI, start_tile_b ),
-	OCL_SVAR( OC_UINT16, PlayerAI, cur_tile_a ),
-	OCL_SVAR( OC_UINT16, PlayerAI, cur_tile_b ),
+	OCL_SVAR( OC_UINT16, CompanyAI, wagon_list[0] ),
+	OCL_SVAR( OC_UINT16, CompanyAI, wagon_list[1] ),
+	OCL_SVAR( OC_UINT16, CompanyAI, wagon_list[2] ),
+	OCL_SVAR( OC_UINT16, CompanyAI, wagon_list[3] ),
+	OCL_SVAR( OC_UINT16, CompanyAI, wagon_list[4] ),
+	OCL_SVAR( OC_UINT16, CompanyAI, wagon_list[5] ),
+	OCL_SVAR( OC_UINT16, CompanyAI, wagon_list[6] ),
+	OCL_SVAR( OC_UINT16, CompanyAI, wagon_list[7] ),
+	OCL_SVAR( OC_UINT16, CompanyAI, wagon_list[8] ),
+	OCL_SVAR(  OC_UINT8, CompanyAI, order_list_blocks[0] ),
+	OCL_SVAR(  OC_UINT8, CompanyAI, order_list_blocks[1] ),
+	OCL_SVAR(  OC_UINT8, CompanyAI, order_list_blocks[2] ),
+	OCL_SVAR(  OC_UINT8, CompanyAI, order_list_blocks[3] ),
+	OCL_SVAR(  OC_UINT8, CompanyAI, order_list_blocks[4] ),
+	OCL_SVAR(  OC_UINT8, CompanyAI, order_list_blocks[5] ),
+	OCL_SVAR(  OC_UINT8, CompanyAI, order_list_blocks[6] ),
+	OCL_SVAR(  OC_UINT8, CompanyAI, order_list_blocks[7] ),
+	OCL_SVAR(  OC_UINT8, CompanyAI, order_list_blocks[8] ),
+	OCL_SVAR(  OC_UINT8, CompanyAI, order_list_blocks[9] ),
+	OCL_SVAR(  OC_UINT8, CompanyAI, order_list_blocks[10] ),
+	OCL_SVAR(  OC_UINT8, CompanyAI, order_list_blocks[11] ),
+	OCL_SVAR(  OC_UINT8, CompanyAI, order_list_blocks[12] ),
+	OCL_SVAR(  OC_UINT8, CompanyAI, order_list_blocks[13] ),
+	OCL_SVAR(  OC_UINT8, CompanyAI, order_list_blocks[14] ),
+	OCL_SVAR(  OC_UINT8, CompanyAI, order_list_blocks[15] ),
+	OCL_SVAR(  OC_UINT8, CompanyAI, order_list_blocks[16] ),
+	OCL_SVAR(  OC_UINT8, CompanyAI, order_list_blocks[17] ),
+	OCL_SVAR(  OC_UINT8, CompanyAI, order_list_blocks[18] ),
+	OCL_SVAR(  OC_UINT8, CompanyAI, order_list_blocks[19] ),
 
-	OCL_SVAR(  OC_UINT8, PlayerAI, start_dir_a ),
-	OCL_SVAR(  OC_UINT8, PlayerAI, start_dir_b ),
-	OCL_SVAR(  OC_UINT8, PlayerAI, cur_dir_a ),
-	OCL_SVAR(  OC_UINT8, PlayerAI, cur_dir_b ),
-
-	OCL_SVAR(  OC_UINT8, PlayerAI, banned_tile_count ),
+	OCL_SVAR( OC_UINT16, CompanyAI, start_tile_a ),
+	OCL_SVAR( OC_UINT16, CompanyAI, start_tile_b ),
+	OCL_SVAR( OC_UINT16, CompanyAI, cur_tile_a ),
+	OCL_SVAR( OC_UINT16, CompanyAI, cur_tile_b ),
 
-	OCL_SVAR(   OC_TILE, PlayerAI, banned_tiles[0] ),
-	OCL_SVAR(  OC_UINT8, PlayerAI, banned_val[0] ),
-	OCL_SVAR(   OC_TILE, PlayerAI, banned_tiles[1] ),
-	OCL_SVAR(  OC_UINT8, PlayerAI, banned_val[1] ),
-	OCL_SVAR(   OC_TILE, PlayerAI, banned_tiles[2] ),
-	OCL_SVAR(  OC_UINT8, PlayerAI, banned_val[2] ),
-	OCL_SVAR(   OC_TILE, PlayerAI, banned_tiles[3] ),
-	OCL_SVAR(  OC_UINT8, PlayerAI, banned_val[3] ),
-	OCL_SVAR(   OC_TILE, PlayerAI, banned_tiles[4] ),
-	OCL_SVAR(  OC_UINT8, PlayerAI, banned_val[4] ),
-	OCL_SVAR(   OC_TILE, PlayerAI, banned_tiles[5] ),
-	OCL_SVAR(  OC_UINT8, PlayerAI, banned_val[5] ),
-	OCL_SVAR(   OC_TILE, PlayerAI, banned_tiles[6] ),
-	OCL_SVAR(  OC_UINT8, PlayerAI, banned_val[6] ),
-	OCL_SVAR(   OC_TILE, PlayerAI, banned_tiles[7] ),
-	OCL_SVAR(  OC_UINT8, PlayerAI, banned_val[7] ),
-	OCL_SVAR(   OC_TILE, PlayerAI, banned_tiles[8] ),
-	OCL_SVAR(  OC_UINT8, PlayerAI, banned_val[8] ),
-	OCL_SVAR(   OC_TILE, PlayerAI, banned_tiles[9] ),
-	OCL_SVAR(  OC_UINT8, PlayerAI, banned_val[9] ),
-	OCL_SVAR(   OC_TILE, PlayerAI, banned_tiles[10] ),
-	OCL_SVAR(  OC_UINT8, PlayerAI, banned_val[10] ),
-	OCL_SVAR(   OC_TILE, PlayerAI, banned_tiles[11] ),
-	OCL_SVAR(  OC_UINT8, PlayerAI, banned_val[11] ),
-	OCL_SVAR(   OC_TILE, PlayerAI, banned_tiles[12] ),
-	OCL_SVAR(  OC_UINT8, PlayerAI, banned_val[12] ),
-	OCL_SVAR(   OC_TILE, PlayerAI, banned_tiles[13] ),
-	OCL_SVAR(  OC_UINT8, PlayerAI, banned_val[13] ),
-	OCL_SVAR(   OC_TILE, PlayerAI, banned_tiles[14] ),
-	OCL_SVAR(  OC_UINT8, PlayerAI, banned_val[14] ),
-	OCL_SVAR(   OC_TILE, PlayerAI, banned_tiles[15] ),
-	OCL_SVAR(  OC_UINT8, PlayerAI, banned_val[15] ),
+	OCL_SVAR(  OC_UINT8, CompanyAI, start_dir_a ),
+	OCL_SVAR(  OC_UINT8, CompanyAI, start_dir_b ),
+	OCL_SVAR(  OC_UINT8, CompanyAI, cur_dir_a ),
+	OCL_SVAR(  OC_UINT8, CompanyAI, cur_dir_b ),
 
-	OCL_SVAR(  OC_UINT8, PlayerAI, railtype_to_use ),
-	OCL_SVAR(  OC_UINT8, PlayerAI, route_type_mask ),
+	OCL_SVAR(  OC_UINT8, CompanyAI, banned_tile_count ),
+
+	OCL_SVAR(   OC_TILE, CompanyAI, banned_tiles[0] ),
+	OCL_SVAR(  OC_UINT8, CompanyAI, banned_val[0] ),
+	OCL_SVAR(   OC_TILE, CompanyAI, banned_tiles[1] ),
+	OCL_SVAR(  OC_UINT8, CompanyAI, banned_val[1] ),
+	OCL_SVAR(   OC_TILE, CompanyAI, banned_tiles[2] ),
+	OCL_SVAR(  OC_UINT8, CompanyAI, banned_val[2] ),
+	OCL_SVAR(   OC_TILE, CompanyAI, banned_tiles[3] ),
+	OCL_SVAR(  OC_UINT8, CompanyAI, banned_val[3] ),
+	OCL_SVAR(   OC_TILE, CompanyAI, banned_tiles[4] ),
+	OCL_SVAR(  OC_UINT8, CompanyAI, banned_val[4] ),
+	OCL_SVAR(   OC_TILE, CompanyAI, banned_tiles[5] ),
+	OCL_SVAR(  OC_UINT8, CompanyAI, banned_val[5] ),
+	OCL_SVAR(   OC_TILE, CompanyAI, banned_tiles[6] ),
+	OCL_SVAR(  OC_UINT8, CompanyAI, banned_val[6] ),
+	OCL_SVAR(   OC_TILE, CompanyAI, banned_tiles[7] ),
+	OCL_SVAR(  OC_UINT8, CompanyAI, banned_val[7] ),
+	OCL_SVAR(   OC_TILE, CompanyAI, banned_tiles[8] ),
+	OCL_SVAR(  OC_UINT8, CompanyAI, banned_val[8] ),
+	OCL_SVAR(   OC_TILE, CompanyAI, banned_tiles[9] ),
+	OCL_SVAR(  OC_UINT8, CompanyAI, banned_val[9] ),
+	OCL_SVAR(   OC_TILE, CompanyAI, banned_tiles[10] ),
+	OCL_SVAR(  OC_UINT8, CompanyAI, banned_val[10] ),
+	OCL_SVAR(   OC_TILE, CompanyAI, banned_tiles[11] ),
+	OCL_SVAR(  OC_UINT8, CompanyAI, banned_val[11] ),
+	OCL_SVAR(   OC_TILE, CompanyAI, banned_tiles[12] ),
+	OCL_SVAR(  OC_UINT8, CompanyAI, banned_val[12] ),
+	OCL_SVAR(   OC_TILE, CompanyAI, banned_tiles[13] ),
+	OCL_SVAR(  OC_UINT8, CompanyAI, banned_val[13] ),
+	OCL_SVAR(   OC_TILE, CompanyAI, banned_tiles[14] ),
+	OCL_SVAR(  OC_UINT8, CompanyAI, banned_val[14] ),
+	OCL_SVAR(   OC_TILE, CompanyAI, banned_tiles[15] ),
+	OCL_SVAR(  OC_UINT8, CompanyAI, banned_val[15] ),
+
+	OCL_SVAR(  OC_UINT8, CompanyAI, railtype_to_use ),
+	OCL_SVAR(  OC_UINT8, CompanyAI, route_type_mask ),
 
 	OCL_END()
 };
 
-static bool OldPlayerAI(LoadgameState *ls, int num)
+static bool OldCompanyAI(LoadgameState *ls, int num)
 {
-	return LoadChunk(ls, &_players_ai[_current_player_id], player_ai_chunk);
+	return LoadChunk(ls, &_companies_ai[_current_company_id], _company_ai_chunk);
 }
 
 uint8 ai_tick;
-static const OldChunks player_chunk[] = {
+static const OldChunks _company_chunk[] = {
 	OCL_VAR ( OC_UINT16,   1, &_old_string_id ),
-	OCL_SVAR( OC_UINT32, Player, name_2 ),
-	OCL_SVAR( OC_UINT32, Player, face ),
+	OCL_SVAR( OC_UINT32, Company, name_2 ),
+	OCL_SVAR( OC_UINT32, Company, face ),
 	OCL_VAR ( OC_UINT16,   1, &_old_string_id_2 ),
-	OCL_SVAR( OC_UINT32, Player, president_name_2 ),
-
-	OCL_SVAR(  OC_INT32, Player, player_money ),
-	OCL_SVAR(  OC_INT32, Player, current_loan ),
-
-	OCL_SVAR(  OC_UINT8, Player, player_color ),
-	OCL_SVAR(  OC_UINT8, Player, player_money_fraction ),
-	OCL_SVAR(  OC_UINT8, Player, quarters_of_bankrupcy ),
-	OCL_SVAR(  OC_UINT8, Player, bankrupt_asked ),
-	OCL_SVAR( OC_FILE_U32 | OC_VAR_I64, Player, bankrupt_value ),
-	OCL_SVAR( OC_UINT16, Player, bankrupt_timeout ),
+	OCL_SVAR( OC_UINT32, Company, president_name_2 ),
 
-	OCL_SVAR( OC_UINT32, Player, cargo_types ),
-
-	OCL_CHUNK( 3, OldPlayerYearly ),
-	OCL_CHUNK( 1, OldPlayerEconomy ),
-
-	OCL_SVAR( OC_FILE_U16 | OC_VAR_I32, Player, inaugurated_year),
-	OCL_SVAR(                  OC_TILE, Player, last_build_coordinate ),
-	OCL_SVAR(                 OC_UINT8, Player, num_valid_stat_ent ),
+	OCL_SVAR(  OC_INT32, Company, money ),
+	OCL_SVAR(  OC_INT32, Company, current_loan ),
 
-	OCL_CHUNK( 1, OldPlayerAI ),
+	OCL_SVAR(  OC_UINT8, Company, colour ),
+	OCL_SVAR(  OC_UINT8, Company, money_fraction ),
+	OCL_SVAR(  OC_UINT8, Company, quarters_of_bankrupcy ),
+	OCL_SVAR(  OC_UINT8, Company, bankrupt_asked ),
+	OCL_SVAR( OC_FILE_U32 | OC_VAR_I64, Company, bankrupt_value ),
+	OCL_SVAR( OC_UINT16, Company, bankrupt_timeout ),
 
-	OCL_SVAR(  OC_UINT8, Player, block_preview ),
+	OCL_SVAR( OC_UINT32, Company, cargo_types ),
+
+	OCL_CHUNK( 3, OldCompanyYearly ),
+	OCL_CHUNK( 1, OldCompanyEconomy ),
+
+	OCL_SVAR( OC_FILE_U16 | OC_VAR_I32, Company, inaugurated_year),
+	OCL_SVAR(                  OC_TILE, Company, last_build_coordinate ),
+	OCL_SVAR(                 OC_UINT8, Company, num_valid_stat_ent ),
+
+	OCL_CHUNK( 1, OldCompanyAI ),
+
+	OCL_SVAR(  OC_UINT8, Company, block_preview ),
 	 OCL_VAR(  OC_UINT8,   1, &ai_tick ),
-	OCL_SVAR(  OC_UINT8, Player, avail_railtypes ),
-	OCL_SVAR(   OC_TILE, Player, location_of_HQ ),
-	OCL_SVAR(  OC_UINT8, Player, share_owners[0] ),
-	OCL_SVAR(  OC_UINT8, Player, share_owners[1] ),
-	OCL_SVAR(  OC_UINT8, Player, share_owners[2] ),
-	OCL_SVAR(  OC_UINT8, Player, share_owners[3] ),
+	OCL_SVAR(  OC_UINT8, Company, avail_railtypes ),
+	OCL_SVAR(   OC_TILE, Company, location_of_HQ ),
+	OCL_SVAR(  OC_UINT8, Company, share_owners[0] ),
+	OCL_SVAR(  OC_UINT8, Company, share_owners[1] ),
+	OCL_SVAR(  OC_UINT8, Company, share_owners[2] ),
+	OCL_SVAR(  OC_UINT8, Company, share_owners[3] ),
 
 	OCL_NULL( 8 ), ///< junk at end of chunk
 
 	OCL_END()
 };
 
-static bool LoadOldPlayer(LoadgameState *ls, int num)
+static bool LoadOldCompany(LoadgameState *ls, int num)
 {
-	Player *p = new (num) Player();
+	Company *c = new (num) Company();
 
-	_current_player_id = (PlayerID)num;
+	_current_company_id = (CompanyID)num;
 
-	if (!LoadChunk(ls, p, player_chunk)) return false;
+	if (!LoadChunk(ls, c, _company_chunk)) return false;
 
 	if (_old_string_id == 0) {
-		delete p;
+		delete c;
 		return true;
 	}
 
-	p->name_1 = RemapOldStringID(_old_string_id);
-	p->president_name_1 = RemapOldStringID(_old_string_id_2);
-	_players_ai[_current_player_id].tick = ai_tick;
+	c->name_1 = RemapOldStringID(_old_string_id);
+	c->president_name_1 = RemapOldStringID(_old_string_id_2);
+	_companies_ai[_current_company_id].tick = ai_tick;
 
 	if (num == 0) {
-		/* If the first player has no name, make sure we call it UNNAMED */
-		if (p->name_1 == 0)
-			p->name_1 = STR_SV_UNNAMED;
+		/* If the first company has no name, make sure we call it UNNAMED */
+		if (c->name_1 == 0)
+			c->name_1 = STR_SV_UNNAMED;
 	} else {
 		/* Beside some multiplayer maps (1 on 1), which we don't official support,
-		all other players are an AI.. mark them as such */
-		p->is_ai = true;
+		 * all other companys are an AI.. mark them as such */
+		c->is_ai = true;
 	}
 
 	/* Sometimes it is better to not ask.. in old scenarios, the money
-	was always 893288 pounds. In the newer versions this is correct,
-	but correct for those oldies
-	Ps: this also means that if you had exact 893288 pounds, you will go back
-	to 10000.. this is a very VERY small chance ;) */
-	if (p->player_money == 893288)
-		p->player_money = p->current_loan = 100000;
+	 * was always 893288 pounds. In the newer versions this is correct,
+	 * but correct for those oldies
+	 * Ps: this also means that if you had exact 893288 pounds, you will go back
+	 * to 10000.. this is a very VERY small chance ;) */
+	if (c->money == 893288) c->money = c->current_loan = 100000;
 
-	_player_colors[num] = p->player_color;
-	p->inaugurated_year -= ORIGINAL_BASE_YEAR;
-	if (p->location_of_HQ == 0xFFFF)
-		p->location_of_HQ = 0;
+	_company_colours[num] = c->colour;
+	c->inaugurated_year -= ORIGINAL_BASE_YEAR;
+	if (c->location_of_HQ == 0xFFFF)
+		c->location_of_HQ = 0;
 
-	/* State 20 for AI players is sell vehicle. Since the AI struct is not
-	 * really figured out as of now, _players_ai[p->index].cur_veh; needed for 'sell vehicle'
+	/* State 20 for AI companies is sell vehicle. Since the AI struct is not
+	 * really figured out as of now, _companies_ai[c->index].cur_veh; needed for 'sell vehicle'
 	 * is NULL and the function will crash. To fix this, just change the state
 	 * to some harmless state, like 'loop vehicle'; 1 */
-	if (!IsHumanPlayer((PlayerID)num) && _players_ai[p->index].state == 20) _players_ai[p->index].state = 1;
+	if (!IsHumanCompany((CompanyID)num) && _companies_ai[c->index].state == 20) _companies_ai[c->index].state = 1;
 
-	if (p->is_ai && (!_networking || _network_server) && _ai.enabled)
-		AI_StartNewAI(p->index);
+	if (c->is_ai && (!_networking || _network_server) && _ai.enabled)
+		AI_StartNewAI(c->index);
 
 	return true;
 }
@@ -1323,7 +1322,7 @@
 }
 
 static const OldChunks engine_chunk[] = {
-	OCL_SVAR( OC_UINT16, Engine, player_avail ),
+	OCL_SVAR( OC_UINT16, Engine, company_avail ),
 	OCL_SVAR( OC_FILE_U16 | OC_VAR_U32, Engine, intro_date ),
 	OCL_SVAR( OC_FILE_U16 | OC_VAR_U32, Engine, age ),
 	OCL_SVAR( OC_UINT16, Engine, reliability ),
@@ -1337,7 +1336,7 @@
 
 	OCL_SVAR(  OC_UINT8, Engine, lifelength ),
 	OCL_SVAR(  OC_UINT8, Engine, flags ),
-	OCL_SVAR(  OC_UINT8, Engine, preview_player_rank ),
+	OCL_SVAR(  OC_UINT8, Engine, preview_company_rank ),
 	OCL_SVAR(  OC_UINT8, Engine, preview_wait ),
 
 	OCL_NULL( 2 ), ///< Junk
@@ -1542,7 +1541,7 @@
 
 	OCL_CHUNK(250, LoadOldStation ),
 	OCL_CHUNK( 90, LoadOldIndustry ),
-	OCL_CHUNK(  8, LoadOldPlayer ),
+	OCL_CHUNK(  8, LoadOldCompany ),
 
 	OCL_ASSERT( 0x547F2 ),
 
@@ -1577,16 +1576,16 @@
 	OCL_CHUNK(256, LoadOldEngineName ),
 
 	OCL_NULL( 144 ),             ///< AI cargo-stuff, calculated in InitializeLandscapeVariables
-	OCL_NULL( 2 ),               ///< Company indexes of players, no longer in use
+	OCL_NULL( 2 ),               ///< Company indexes of companies, no longer in use
 
 	OCL_VAR ( OC_FILE_U8 | OC_VAR_U16,    1, &_station_tick_ctr ),
 
 	OCL_VAR (  OC_UINT8,    1, &_settings_game.locale.currency ),
 	OCL_VAR (  OC_UINT8,    1, &_settings_game.locale.units ),
-	OCL_VAR ( OC_FILE_U8 | OC_VAR_U32,    1, &_cur_player_tick_index ),
+	OCL_VAR ( OC_FILE_U8 | OC_VAR_U32,    1, &_cur_company_tick_index ),
 
 	OCL_NULL( 2 ),               ///< Date stuff, calculated automatically
-	OCL_NULL( 8 ),               ///< Player colors, calculated automatically
+	OCL_NULL( 8 ),               ///< Company colors, calculated automatically
 
 	OCL_VAR (  OC_UINT8,    1, &_economy.infl_amount ),
 	OCL_VAR (  OC_UINT8,    1, &_economy.infl_amount_pr ),
@@ -1693,7 +1692,7 @@
 	FOR_ALL_ENGINES(e) {
 		if (_date >= (e->intro_date + 365)) {
 			e->flags = (e->flags & ~ENGINE_EXCLUSIVE_PREVIEW) | ENGINE_AVAILABLE;
-			e->player_avail = (byte)-1;
+			e->company_avail = (CompanyMask)-1;
 		}
 	}
 
--- a/src/openttd.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/openttd.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -98,7 +98,7 @@
 void CallWindowTickEvent();
 
 extern void SetDifficultyLevel(int mode, DifficultySettings *gm_opt);
-extern Player* DoStartupNewPlayer(bool is_ai);
+extern Company *DoStartupNewCompany(bool is_ai);
 extern void ShowOSErrorBox(const char *buf, bool system);
 extern void InitializeRailGUI();
 
@@ -182,7 +182,7 @@
 		"  -g [savegame]       = Start new/save game immediately\n"
 		"  -G seed             = Set random seed\n"
 #if defined(ENABLE_NETWORK)
-		"  -n [ip:port#player] = Start networkgame\n"
+		"  -n [ip:port#company]= Start networkgame\n"
 		"  -D [ip][:port]      = Start dedicated server\n"
 		"  -l ip[:port]        = Redirect DEBUG()\n"
 #if !defined(__MORPHOS__) && !defined(__AMIGA__) && !defined(WIN32)
@@ -307,7 +307,7 @@
 	/* Dynamic stuff needs to be initialized somewhere... */
 	_industry_mngr.ResetMapping();
 	_industile_mngr.ResetMapping();
-	_Player_pool.AddBlockToPool();
+	_Company_pool.AddBlockToPool();
 }
 
 
@@ -341,7 +341,7 @@
 	_Group_pool.CleanPool();
 	_CargoPacket_pool.CleanPool();
 	_Engine_pool.CleanPool();
-	_Player_pool.CleanPool();
+	_Company_pool.CleanPool();
 
 	free(_config_file);
 
@@ -363,9 +363,9 @@
 	if (SaveOrLoad("opntitle.dat", SL_LOAD, DATA_DIR) != SL_OK) {
 		GenerateWorld(GW_EMPTY, 64, 64); // if failed loading, make empty world.
 		WaitTillGeneratedWorld();
-		SetLocalPlayer(PLAYER_SPECTATOR);
+		SetLocalCompany(COMPANY_SPECTATOR);
 	} else {
-		SetLocalPlayer(PLAYER_FIRST);
+		SetLocalCompany(COMPANY_FIRST);
 	}
 
 	_pause_game = 0;
@@ -437,7 +437,7 @@
 			dedicated = true;
 			if (mgo.opt != NULL) {
 				/* Use the existing method for parsing (openttd -n).
-				 * However, we do ignore the #player part. */
+				 * However, we do ignore the #company part. */
 				const char *temp = NULL;
 				const char *port = NULL;
 				ParseConnectionString(&temp, &port, mgo.opt);
@@ -649,20 +649,20 @@
 	if (network && _network_available) {
 		if (network_conn != NULL) {
 			const char *port = NULL;
-			const char *player = NULL;
+			const char *company = NULL;
 			uint16 rport;
 
 			rport = NETWORK_DEFAULT_PORT;
-			_network_playas = PLAYER_NEW_COMPANY;
-
-			ParseConnectionString(&player, &port, network_conn);
+			_network_playas = COMPANY_NEW_COMPANY;
 
-			if (player != NULL) {
-				_network_playas = (PlayerID)atoi(player);
+			ParseConnectionString(&company, &port, network_conn);
 
-				if (_network_playas != PLAYER_SPECTATOR) {
+			if (company != NULL) {
+				_network_playas = (CompanyID)atoi(company);
+
+				if (_network_playas != COMPANY_SPECTATOR) {
 					_network_playas--;
-					if (_network_playas >= MAX_PLAYERS) return false;
+					if (_network_playas >= MAX_COMPANIES) return false;
 				}
 			}
 			if (port != NULL) rport = atoi(port);
@@ -719,21 +719,21 @@
 
 	/* In a dedicated server, the server does not play */
 	if (_network_dedicated) {
-		SetLocalPlayer(PLAYER_SPECTATOR);
+		SetLocalCompany(COMPANY_SPECTATOR);
 		return;
 	}
 
-	/* Create a single player */
-	DoStartupNewPlayer(false);
+	/* Create a single company */
+	DoStartupNewCompany(false);
 
-	SetLocalPlayer(PLAYER_FIRST);
-	_current_player = _local_player;
+	SetLocalCompany(COMPANY_FIRST);
+	_current_company = _local_company;
 	DoCommandP(0, (_settings_client.gui.autorenew << 15 ) | (_settings_client.gui.autorenew_months << 16) | 4, _settings_client.gui.autorenew_money, NULL, CMD_SET_AUTOREPLACE);
 
 	InitializeRailGUI();
 
 #ifdef ENABLE_NETWORK
-	/* We are the server, we start a new player (not dedicated),
+	/* We are the server, we start a new company (not dedicated),
 	 * so set the default password *if* needed. */
 	if (_network_server && !StrEmpty(_settings_client.network.default_company_pass)) {
 		char *password = _settings_client.network.default_company_pass;
@@ -759,7 +759,7 @@
 
 static void MakeNewEditorWorldDone()
 {
-	SetLocalPlayer(OWNER_NONE);
+	SetLocalCompany(OWNER_NONE);
 
 	MarkWholeScreenDirty();
 }
@@ -774,7 +774,7 @@
 	GenerateWorld(GW_EMPTY, 1 << _settings_game.game_creation.map_x, 1 << _settings_game.game_creation.map_y);
 }
 
-void StartupPlayers();
+void StartupCompanies();
 void StartupDisasters();
 extern void StartupEconomy();
 
@@ -816,12 +816,12 @@
 
 	/* Inititalize data */
 	StartupEconomy();
-	StartupPlayers();
+	StartupCompanies();
 	StartupEngines();
 	StartupDisasters();
 
-	SetLocalPlayer(PLAYER_FIRST);
-	_current_player = _local_player;
+	SetLocalCompany(COMPANY_FIRST);
+	_current_company = _local_company;
 	DoCommandP(0, (_settings_client.gui.autorenew << 15 ) | (_settings_client.gui.autorenew_months << 16) | 4, _settings_client.gui.autorenew_money, NULL, CMD_SET_AUTOREPLACE);
 
 	MarkWholeScreenDirty();
@@ -927,9 +927,9 @@
 				if (_saveload_mode == SLD_LOAD_SCENARIO) {
 					StartupEngines();
 				}
-				/* Update the local player for a loaded game. It is either always
-				* player #1 (eg 0) or in the case of a dedicated server a spectator */
-				SetLocalPlayer(_network_dedicated ? PLAYER_SPECTATOR : PLAYER_FIRST);
+				/* Update the local company for a loaded game. It is either always
+				* company #1 (eg 0) or in the case of a dedicated server a spectator */
+				SetLocalCompany(_network_dedicated ? COMPANY_SPECTATOR : COMPANY_FIRST);
 				/* Decrease pause counter (was increased from opening load dialog) */
 				DoCommandP(0, 0, 0, NULL, CMD_PAUSE);
 #ifdef ENABLE_NETWORK
@@ -951,7 +951,7 @@
 			break;
 
 		case SM_LOAD_HEIGHTMAP: /* Load heightmap from scenario editor */
-			SetLocalPlayer(OWNER_NONE);
+			SetLocalCompany(OWNER_NONE);
 
 			GenerateWorld(GW_HEIGHTMAP, 1 << _settings_game.game_creation.map_x, 1 << _settings_game.game_creation.map_y);
 			MarkWholeScreenDirty();
@@ -959,7 +959,7 @@
 
 		case SM_LOAD_SCENARIO: { /* Load scenario from scenario editor */
 			if (SafeSaveOrLoad(_file_to_saveload.name, _file_to_saveload.mode, GM_EDITOR, NO_DIRECTORY)) {
-				SetLocalPlayer(OWNER_NONE);
+				SetLocalCompany(OWNER_NONE);
 				_settings_newgame.game_creation.starting_year = _cur_year;
 			} else {
 				SetDParam(0, STR_JUST_RAW_STRING);
@@ -987,7 +987,7 @@
 			break;
 
 		case SM_GENRANDLAND: /* Generate random land within scenario editor */
-			SetLocalPlayer(OWNER_NONE);
+			SetLocalCompany(OWNER_NONE);
 			GenerateWorld(GW_RANDOM, 1 << _settings_game.game_creation.map_x, 1 << _settings_game.game_creation.map_y);
 			/* XXX: set date */
 			MarkWholeScreenDirty();
@@ -1034,7 +1034,7 @@
 				case VEH_ROAD: {
 					extern byte GetRoadVehLength(const Vehicle *v);
 					if (GetRoadVehLength(v) != v->u.road.cached_veh_length) {
-						printf("cache mismatch: vehicle %i, player %i, unit number %i\n", v->index, (int)v->owner, v->unitnumber);
+						printf("cache mismatch: vehicle %i, company %i, unit number %i\n", v->index, (int)v->owner, v->unitnumber);
 					}
 				} break;
 
@@ -1051,7 +1051,7 @@
 					length = 0;
 					for (Vehicle *u = v; u != NULL; u = u->Next()) {
 						if (memcmp(&wagons[length], &u->u.rail, sizeof(VehicleRail)) != 0) {
-							printf("cache mismatch: vehicle %i, player %i, unit number %i, wagon %i\n", v->index, (int)v->owner, v->unitnumber, length);
+							printf("cache mismatch: vehicle %i, company %i, unit number %i, wagon %i\n", v->index, (int)v->owner, v->unitnumber, length);
 						}
 						length++;
 					}
@@ -1063,7 +1063,7 @@
 					uint speed = v->u.air.cached_max_speed;
 					UpdateAircraftCache(v);
 					if (speed != v->u.air.cached_max_speed) {
-						printf("cache mismatch: vehicle %i, player %i, unit number %i\n", v->index, (int)v->owner, v->unitnumber);
+						printf("cache mismatch: vehicle %i, company %i, unit number %i\n", v->index, (int)v->owner, v->unitnumber);
 					}
 				} break;
 
@@ -1075,8 +1075,8 @@
 
 		/* All these actions has to be done from OWNER_NONE
 		 *  for multiplayer compatibility */
-		PlayerID p = _current_player;
-		_current_player = OWNER_NONE;
+		CompanyID old_company = _current_company;
+		_current_company = OWNER_NONE;
 
 		AnimateAnimatedTiles();
 		IncreaseDate();
@@ -1089,7 +1089,7 @@
 
 		CallWindowTickEvent();
 		NewsLoop();
-		_current_player = p;
+		_current_company = old_company;
 	}
 }
 
@@ -1104,8 +1104,8 @@
 	if (_networking) return;
 #endif /* PSP */
 
-	if (_settings_client.gui.keep_all_autosave && _local_player != PLAYER_SPECTATOR) {
-		SetDParam(0, _local_player);
+	if (_settings_client.gui.keep_all_autosave && _local_company != COMPANY_SPECTATOR) {
+		SetDParam(0, _local_company);
 		SetDParam(1, _date);
 		GetString(buf, STR_4004, lastof(buf));
 		ttd_strlcat(buf, ".sav", lengthof(buf));
@@ -1203,16 +1203,16 @@
 	Town *t;
 
 	FOR_ALL_TOWNS(t) {
-		t->exclusivity = INVALID_PLAYER;
+		t->exclusivity = INVALID_COMPANY;
 	}
 
 	/* FIXME old exclusive rights status is not being imported (stored in s->blocked_months_obsolete)
 	 *   could be implemented this way:
 	 * 1.) Go through all stations
-	 *     Build an array town_blocked[ town_id ][ player_id ]
-	 *     that stores if at least one station in that town is blocked for a player
+	 *     Build an array town_blocked[ town_id ][ company_id ]
+	 *     that stores if at least one station in that town is blocked for a company
 	 * 2.) Go through that array, if you find a town that is not blocked for
-	 *     one player, but for all others, then give him exclusivity.
+	 *     one company, but for all others, then give him exclusivity.
 	 */
 }
 
@@ -1282,13 +1282,13 @@
 	UpdateAllTownVirtCoords();
 	UpdateAllWaypointSigns();
 
-	Player *p;
-	FOR_ALL_PLAYERS(p) {
-		/* For each player, verify (while loading a scenario) that the inauguration date is the current year and set it
-		 * accordingly if it is not the case.  No need to set it on players that are not been used already,
+	Company *c;
+	FOR_ALL_COMPANIES(c) {
+		/* For each company, verify (while loading a scenario) that the inauguration date is the current year and set it
+		 * accordingly if it is not the case.  No need to set it on companies that are not been used already,
 		 * thus the MIN_YEAR (which is really nothing more than Zero, initialized value) test */
-		if (_file_to_saveload.filetype == FT_SCENARIO && p->inaugurated_year != MIN_YEAR) {
-			p->inaugurated_year = _cur_year;
+		if (_file_to_saveload.filetype == FT_SCENARIO && c->inaugurated_year != MIN_YEAR) {
+			c->inaugurated_year = _cur_year;
 		}
 	}
 
@@ -1307,7 +1307,7 @@
 bool AfterLoadGame()
 {
 	TileIndex map_size = MapSize();
-	Player *p;
+	Company *c;
 
 	if (CheckSavegameVersion(98)) GamelogOldver();
 
@@ -1334,19 +1334,18 @@
 	 * walk through the whole map.. */
 	if (CheckSavegameVersionOldStyle(4, 3)) {
 		for (TileIndex t = 0; t < map_size; t++) {
-			if (IsTileType(t, MP_WATER) && GetTileOwner(t) >= MAX_PLAYERS) {
+			if (IsTileType(t, MP_WATER) && GetTileOwner(t) >= MAX_COMPANIES) {
 				SetTileOwner(t, OWNER_WATER);
 			}
 		}
 	}
 
 	if (CheckSavegameVersion(84)) {
-		Player *p;
-		FOR_ALL_PLAYERS(p) {
-			p->name = CopyFromOldName(p->name_1);
-			if (p->name != NULL) p->name_1 = STR_SV_UNNAMED;
-			p->president_name = CopyFromOldName(p->president_name_1);
-			if (p->president_name != NULL) p->president_name_1 = SPECSTR_PRESIDENT_NAME;
+		FOR_ALL_COMPANIES(c) {
+			c->name = CopyFromOldName(c->name_1);
+			if (c->name != NULL) c->name_1 = STR_SV_UNNAMED;
+			c->president_name = CopyFromOldName(c->president_name_1);
+			if (c->president_name != NULL) c->president_name_1 = SPECSTR_PRESIDENT_NAME;
 		}
 
 		Station *st;
@@ -1369,7 +1368,7 @@
 		}
 
 		for (uint i = 0; i < GetSignPoolSize(); i++) {
-			/* invalid signs are determined by si->ower == INVALID_PLAYER now */
+			/* invalid signs are determined by si->ower == INVALID_COMPANY now */
 			Sign *si = GetSign(i);
 			if (!si->IsValid() && si->name != NULL) {
 				si->owner = OWNER_NONE;
@@ -1444,11 +1443,11 @@
 	if (CheckSavegameVersion(87)) UpdateVoidTiles();
 
 	/* If Load Scenario / New (Scenario) Game is used,
-	 *  a player does not exist yet. So create one here.
-	 * 1 exeption: network-games. Those can have 0 players
+	 *  a company does not exist yet. So create one here.
+	 * 1 exeption: network-games. Those can have 0 companies
 	 *   But this exeption is not true for non dedicated network_servers! */
-	if (!IsValidPlayerID(PLAYER_FIRST) && (!_networking || (_networking && _network_server && !_network_dedicated)))
-		DoStartupNewPlayer(false);
+	if (!IsValidCompanyID(COMPANY_FIRST) && (!_networking || (_networking && _network_server && !_network_dedicated)))
+		DoStartupNewCompany(false);
 
 	if (CheckSavegameVersion(72)) {
 		/* Locks/shiplifts in very old savegames had OWNER_WATER as owner */
@@ -1589,24 +1588,24 @@
 	/* From version 16.0, we included autorenew on engines, which are now saved, but
 	 *  of course, we do need to initialize them for older savegames. */
 	if (CheckSavegameVersion(16)) {
-		FOR_ALL_PLAYERS(p) {
-			p->engine_renew_list   = NULL;
-			p->engine_renew        = false;
-			p->engine_renew_months = -6;
-			p->engine_renew_money  = 100000;
+		FOR_ALL_COMPANIES(c) {
+			c->engine_renew_list   = NULL;
+			c->engine_renew        = false;
+			c->engine_renew_months = -6;
+			c->engine_renew_money  = 100000;
 		}
 
-		/* When loading a game, _local_player is not yet set to the correct value.
+		/* When loading a game, _local_company is not yet set to the correct value.
 		 * However, in a dedicated server we are a spectator, so nothing needs to
-		 * happen. In case we are not a dedicated server, the local player always
-		 * becomes player 0, unless we are in the scenario editor where all the
-		 * players are 'invalid'.
+		 * happen. In case we are not a dedicated server, the local company always
+		 * becomes company 0, unless we are in the scenario editor where all the
+		 * companies are 'invalid'.
 		 */
-		if (!_network_dedicated && IsValidPlayerID(PLAYER_FIRST)) {
-			p = GetPlayer(PLAYER_FIRST);
-			p->engine_renew        = _settings_client.gui.autorenew;
-			p->engine_renew_months = _settings_client.gui.autorenew_months;
-			p->engine_renew_money  = _settings_client.gui.autorenew_money;
+		if (!_network_dedicated && IsValidCompanyID(COMPANY_FIRST)) {
+			c = GetCompany(COMPANY_FIRST);
+			c->engine_renew        = _settings_client.gui.autorenew;
+			c->engine_renew_months = _settings_client.gui.autorenew_months;
+			c->engine_renew_money  = _settings_client.gui.autorenew_money;
 		}
 	}
 
@@ -1808,11 +1807,11 @@
 
 	}
 
-	/* In version 16.1 of the savegame a player can decide if trains, which get
+	/* In version 16.1 of the savegame a company can decide if trains, which get
 	 * replaced, shall keep their old length. In all prior versions, just default
 	 * to false */
 	if (CheckSavegameVersionOldStyle(16, 1)) {
-		FOR_ALL_PLAYERS(p) p->renew_keep_length = false;
+		FOR_ALL_COMPANIES(c) c->renew_keep_length = false;
 	}
 
 	/* In version 17, ground type is moved from m2 to m4 for depots and
@@ -1913,11 +1912,11 @@
 
 	YapfNotifyTrackLayoutChange(INVALID_TILE, INVALID_TRACK);
 
-	if (CheckSavegameVersion(34)) FOR_ALL_PLAYERS(p) ResetPlayerLivery(p);
+	if (CheckSavegameVersion(34)) FOR_ALL_COMPANIES(c) ResetCompanyLivery(c);
 
-	FOR_ALL_PLAYERS(p) {
-		p->avail_railtypes = GetPlayerRailtypes(p->index);
-		p->avail_roadtypes = GetPlayerRoadtypes(p->index);
+	FOR_ALL_COMPANIES(c) {
+		c->avail_railtypes = GetCompanyRailtypes(c->index);
+		c->avail_roadtypes = GetCompanyRoadtypes(c->index);
 	}
 
 	if (!CheckSavegameVersion(27)) AfterLoadStations();
@@ -1928,18 +1927,17 @@
 		Station *st;
 		Waypoint *wp;
 		Engine *e;
-		Player *player;
 		Industry *i;
 		Vehicle *v;
 
 		_date += DAYS_TILL_ORIGINAL_BASE_YEAR;
 		_cur_year += ORIGINAL_BASE_YEAR;
 
-		FOR_ALL_STATIONS(st)    st->build_date += DAYS_TILL_ORIGINAL_BASE_YEAR;
-		FOR_ALL_WAYPOINTS(wp)   wp->build_date += DAYS_TILL_ORIGINAL_BASE_YEAR;
-		FOR_ALL_ENGINES(e)      e->intro_date  += DAYS_TILL_ORIGINAL_BASE_YEAR;
-		FOR_ALL_PLAYERS(player) player->inaugurated_year += ORIGINAL_BASE_YEAR;
-		FOR_ALL_INDUSTRIES(i)   i->last_prod_year        += ORIGINAL_BASE_YEAR;
+		FOR_ALL_STATIONS(st)  st->build_date      += DAYS_TILL_ORIGINAL_BASE_YEAR;
+		FOR_ALL_WAYPOINTS(wp) wp->build_date      += DAYS_TILL_ORIGINAL_BASE_YEAR;
+		FOR_ALL_ENGINES(e)    e->intro_date       += DAYS_TILL_ORIGINAL_BASE_YEAR;
+		FOR_ALL_COMPANIES(c)  c->inaugurated_year += ORIGINAL_BASE_YEAR;
+		FOR_ALL_INDUSTRIES(i) i->last_prod_year   += ORIGINAL_BASE_YEAR;
 
 		FOR_ALL_VEHICLES(v) {
 			v->date_of_last_service += DAYS_TILL_ORIGINAL_BASE_YEAR;
@@ -2139,7 +2137,7 @@
 		}
 	}
 
-	if (CheckSavegameVersion(49)) FOR_ALL_PLAYERS(p) p->face = ConvertFromOldPlayerFace(p->face);
+	if (CheckSavegameVersion(49)) FOR_ALL_COMPANIES(c) c->face = ConvertFromOldCompanyManagerFace(c->face);
 
 	if (CheckSavegameVersion(52)) {
 		for (TileIndex t = 0; t < map_size; t++) {
@@ -2337,18 +2335,17 @@
 			}
 		}
 
-		/* Set all share owners to PLAYER_SPECTATOR for
-		 * 1) all inactive players
-		 *     (when inactive players were stored in the savegame - TTD, TTDP and some
-		 *      *really* old revisions of OTTD; else it is already set in InitializePlayers())
-		 * 2) shares that are owned by inactive players or self
-		 *     (caused by cheating players in earlier revisions) */
-		Player *p;
-		FOR_ALL_PLAYERS(p) {
+		/* Set all share owners to INVALID_COMPANY for
+		 * 1) all inactive companies
+		 *     (when inactive companies were stored in the savegame - TTD, TTDP and some
+		 *      *really* old revisions of OTTD; else it is already set in InitializeCompanies())
+		 * 2) shares that are owned by inactive companies or self
+		 *     (caused by cheating clients in earlier revisions) */
+		FOR_ALL_COMPANIES(c) {
 			for (uint i = 0; i < 4; i++) {
-				PlayerID o = p->share_owners[i];
-				if (o == PLAYER_SPECTATOR) continue;
-				if (!IsValidPlayerID(o) || o == p->index) p->share_owners[i] = PLAYER_SPECTATOR;
+				CompanyID company = c->share_owners[i];
+				if (company == INVALID_COMPANY) continue;
+				if (!IsValidCompanyID(company) || company == c->index) c->share_owners[i] = INVALID_COMPANY;
 			}
 		}
 	}
@@ -2396,13 +2393,13 @@
 
 			if (IsBuoyTile(t) || IsDriveThroughStopTile(t) || IsTileType(t, MP_WATER)) {
 				Owner o = GetTileOwner(t);
-				if (o < MAX_PLAYERS && !IsValidPlayerID(o)) {
-					_current_player = o;
-					ChangeTileOwner(t, o, PLAYER_SPECTATOR);
+				if (o < MAX_COMPANIES && !IsValidCompanyID(o)) {
+					_current_company = o;
+					ChangeTileOwner(t, o, INVALID_OWNER);
 				}
 				if (IsBuoyTile(t)) {
 					/* reset buoy owner to OWNER_NONE in the station struct
-					 * (even if it is owned by active player) */
+					 * (even if it is owned by active company) */
 					GetStationByTile(t)->owner = OWNER_NONE;
 				}
 			} else if (IsTileType(t, MP_ROAD)) {
@@ -2410,13 +2407,13 @@
 				for (RoadType rt = ROADTYPE_ROAD; rt < ROADTYPE_END; rt++) {
 					/* update even non-existing road types to update tile owner too */
 					Owner o = GetRoadOwner(t, rt);
-					if (o < MAX_PLAYERS && !IsValidPlayerID(o)) SetRoadOwner(t, rt, OWNER_NONE);
+					if (o < MAX_COMPANIES && !IsValidCompanyID(o)) SetRoadOwner(t, rt, OWNER_NONE);
 				}
 				if (IsLevelCrossing(t)) {
 					Owner o = GetTileOwner(t);
-					if (!IsValidPlayerID(o)) {
+					if (!IsValidCompanyID(o)) {
 						/* remove leftover rail piece from crossing (from very old savegames) */
-						_current_player = o;
+						_current_company = o;
 						DoCommand(t, 0, GetCrossingRailTrack(t), DC_EXEC | DC_BANKRUPT, CMD_REMOVE_SINGLE_RAIL);
 					}
 				}
@@ -2551,7 +2548,7 @@
 		Waypoint *wp;
 		FOR_ALL_WAYPOINTS(wp) {
 			Owner owner = (IsRailWaypointTile(wp->xy) ? GetTileOwner(wp->xy) : OWNER_NONE);
-			wp->owner = IsValidPlayerID(owner) ? owner : OWNER_NONE;
+			wp->owner = IsValidCompanyID(owner) ? owner : OWNER_NONE;
 		}
 	}
 
@@ -2566,7 +2563,7 @@
 		/* signs with invalid owner left from older savegames */
 		Sign *si;
 		FOR_ALL_SIGNS(si) {
-			if (si->owner != OWNER_NONE && !IsValidPlayerID(si->owner)) si->owner = OWNER_NONE;
+			if (si->owner != OWNER_NONE && !IsValidCompanyID(si->owner)) si->owner = OWNER_NONE;
 		}
 	}
 
@@ -2598,7 +2595,7 @@
 	/* Check and update house and town values */
 	UpdateHousesAndTowns();
 	/* Update livery selection windows */
-	for (PlayerID i = PLAYER_FIRST; i < MAX_PLAYERS; i++) InvalidateWindowData(WC_PLAYER_COLOR, i, _loaded_newgrf_features.has_2CC);
+	for (CompanyID i = COMPANY_FIRST; i < MAX_COMPANIES; i++) InvalidateWindowData(WC_COMPANY_COLOR, i, _loaded_newgrf_features.has_2CC);
 	/* redraw the whole screen */
 	MarkWholeScreenDirty();
 	CheckTrainsLengths();
--- a/src/order_cmd.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/order_cmd.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -285,7 +285,7 @@
 /**
  * Delete all news items regarding defective orders about a vehicle
  * This could kill still valid warnings (for example about void order when just
- * another order gets added), but assume the player will notice the problems,
+ * another order gets added), but assume the company will notice the problems,
  * when (s)he's changing the orders.
  */
 static void DeleteOrderWarnings(const Vehicle* v)
@@ -437,7 +437,7 @@
 					}
 				}
 			} else {
-				if (!IsPlayerBuildableVehicleType(v)) return CMD_ERROR;
+				if (!IsCompanyBuildableVehicleType(v)) return CMD_ERROR;
 			}
 
 			if (new_order.GetNonStopType() != ONSF_STOP_EVERYWHERE && v->type != VEH_TRAIN && v->type != VEH_ROAD) return CMD_ERROR;
@@ -495,7 +495,7 @@
 
 	if (!HasOrderPoolFree(1)) return_cmd_error(STR_8831_NO_MORE_SPACE_FOR_ORDERS);
 
-	if (v->type == VEH_SHIP && IsHumanPlayer(v->owner) && _settings_game.pf.pathfinder_for_ships != VPF_NPF) {
+	if (v->type == VEH_SHIP && IsHumanCompany(v->owner) && _settings_game.pf.pathfinder_for_ships != VPF_NPF) {
 		/* Make sure the new destination is not too far away from the previous */
 		const Order *prev = NULL;
 		uint n = 0;
@@ -1390,7 +1390,7 @@
 	if (v->FirstShared() != v) return;
 
 	/* Only check every 20 days, so that we don't flood the message log */
-	if (v->owner == _local_player && v->day_counter % 20 == 0) {
+	if (v->owner == _local_company && v->day_counter % 20 == 0) {
 		int n_st, problem_type = -1;
 		const Order *order;
 		int message = 0;
--- a/src/order_gui.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/order_gui.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -279,7 +279,7 @@
 	if (_settings_game.order.gotodepot) {
 		switch (GetTileType(tile)) {
 			case MP_RAILWAY:
-				if (v->type == VEH_TRAIN && IsTileOwner(tile, _local_player)) {
+				if (v->type == VEH_TRAIN && IsTileOwner(tile, _local_company)) {
 					if (IsRailDepot(tile)) {
 						order.MakeGoToDepot(GetDepotByTile(tile)->index, ODTFB_PART_OF_ORDERS);
 						if (_settings_client.gui.new_nonstop) order.SetNonStopType(ONSF_NO_STOP_AT_INTERMEDIATE_STATIONS);
@@ -289,7 +289,7 @@
 				break;
 
 			case MP_ROAD:
-				if (IsRoadDepot(tile) && v->type == VEH_ROAD && IsTileOwner(tile, _local_player)) {
+				if (IsRoadDepot(tile) && v->type == VEH_ROAD && IsTileOwner(tile, _local_company)) {
 					order.MakeGoToDepot(GetDepotByTile(tile)->index, ODTFB_PART_OF_ORDERS);
 					if (_settings_client.gui.new_nonstop) order.SetNonStopType(ONSF_NO_STOP_AT_INTERMEDIATE_STATIONS);
 					return order;
@@ -298,7 +298,7 @@
 
 			case MP_STATION:
 				if (v->type != VEH_AIRCRAFT) break;
-				if (IsHangar(tile) && IsTileOwner(tile, _local_player)) {
+				if (IsHangar(tile) && IsTileOwner(tile, _local_company)) {
 					order.MakeGoToDepot(GetStationIndex(tile), ODTFB_PART_OF_ORDERS);
 					return order;
 				}
@@ -306,7 +306,7 @@
 
 			case MP_WATER:
 				if (v->type != VEH_SHIP) break;
-				if (IsShipDepot(tile) && IsTileOwner(tile, _local_player)) {
+				if (IsShipDepot(tile) && IsTileOwner(tile, _local_company)) {
 					TileIndex tile2 = GetOtherShipDepotTile(tile);
 
 					order.MakeGoToDepot(GetDepotByTile(tile < tile2 ? tile : tile2)->index, ODTFB_PART_OF_ORDERS);
@@ -321,7 +321,7 @@
 	/* check waypoint */
 	if (IsRailWaypointTile(tile) &&
 			v->type == VEH_TRAIN &&
-			IsTileOwner(tile, _local_player)) {
+			IsTileOwner(tile, _local_company)) {
 		order.MakeGoToWaypoint(GetWaypointByTile(tile)->index);
 		if (_settings_client.gui.new_nonstop) order.SetNonStopType(ONSF_NO_STOP_AT_INTERMEDIATE_STATIONS);
 		return order;
@@ -331,7 +331,7 @@
 		StationID st_index = GetStationIndex(tile);
 		const Station *st = GetStation(st_index);
 
-		if (st->owner == _current_player || st->owner == OWNER_NONE) {
+		if (st->owner == _current_company || st->owner == OWNER_NONE) {
 			byte facil;
 			(facil = FACIL_DOCK, v->type == VEH_SHIP) ||
 			(facil = FACIL_TRAIN, v->type == VEH_TRAIN) ||
@@ -668,7 +668,7 @@
 		int sel = OrderGetSel();
 		const Order *order = GetVehicleOrder(this->vehicle, sel);
 
-		if (this->vehicle->owner == _local_player) {
+		if (this->vehicle->owner == _local_company) {
 			/* Set the strings for the dropdown boxes. */
 			this->widget[ORDER_WIDGET_COND_VARIABLE].data   = _order_conditional_variable[order == NULL ? 0 : order->GetConditionVariable()];
 			this->widget[ORDER_WIDGET_COND_COMPARATOR].data = _order_conditional_condition[order == NULL ? 0 : order->GetConditionComparator()];
@@ -833,7 +833,7 @@
 					/* Select clicked order */
 					this->selected_order = sel;
 
-					if (this->vehicle->owner == _local_player) {
+					if (this->vehicle->owner == _local_company) {
 						/* Activate drag and drop */
 						SetObjectToPlaceWnd(SPR_CURSOR_MOUSE, PAL_NONE, VHM_DRAG, this);
 					}
@@ -1007,7 +1007,7 @@
 			//('?', OrderClick_Service},
 		};
 
-		if (this->vehicle->owner != _local_player) return ES_NOT_HANDLED;
+		if (this->vehicle->owner != _local_company) return ES_NOT_HANDLED;
 
 		for (uint i = 0; i < lengthof(keytoevent); i++) {
 			if (keycode == keytoevent[i].keycode) {
@@ -1093,7 +1093,7 @@
 };
 
 /**
- * Widget definition for player train orders
+ * Widget definition for "your" train orders
  */
 static const Widget _orders_train_widgets[] = {
 	{   WWT_CLOSEBOX,   RESIZE_NONE,   COLOUR_GREY,     0,    10,     0,    13, STR_00C5,                STR_018B_CLOSE_WINDOW},               // ORDER_WIDGET_CLOSEBOX
@@ -1136,7 +1136,7 @@
 };
 
 /**
- * Widget definition for player orders (!train)
+ * Widget definition for "your" orders (!train)
  */
 static const Widget _orders_widgets[] = {
 	{   WWT_CLOSEBOX,   RESIZE_NONE,   COLOUR_GREY,     0,    10,     0,    13, STR_00C5,                STR_018B_CLOSE_WINDOW},               // ORDER_WIDGET_CLOSEBOX
@@ -1228,7 +1228,7 @@
 	DeleteWindowById(WC_VEHICLE_ORDERS, veh);
 	DeleteWindowById(WC_VEHICLE_DETAILS, veh);
 
-	if (v->owner != _local_player) {
+	if (v->owner != _local_company) {
 		new OrdersWindow(&_other_orders_desc, v);
 	} else {
 		new OrdersWindow((v->type == VEH_TRAIN || v->type == VEH_ROAD) ? &_orders_train_desc : &_orders_desc, v);
--- a/src/order_type.h	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/order_type.h	Tue Sep 30 20:39:50 2008 +0000
@@ -72,7 +72,7 @@
  * Reasons that could cause us to go to the depot.
  */
 enum OrderDepotTypeFlags {
-	ODTF_MANUAL          = 0,      ///< The player initiated this order manually.
+	ODTF_MANUAL          = 0,      ///< Manually initiated order.
 	ODTFB_SERVICE        = 1 << 0, ///< This depot order is because of the servicing limit.
 	ODTFB_PART_OF_ORDERS = 1 << 1, ///< This depot order is because of a regular order.
 };
--- a/src/player_base.h	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/player_base.h	Tue Sep 30 20:39:50 2008 +0000
@@ -1,9 +1,9 @@
 /* $Id$ */
 
-/** @file player_base.h Definition of stuff that is very close to a player, like the player struct itself. */
+/** @file company_base.h Definition of stuff that is very close to a company, like the company struct itself. */
 
-#ifndef PLAYER_BASE_H
-#define PLAYER_BASE_H
+#ifndef COMPANY_BASE_H
+#define COMPANY_BASE_H
 
 #include "player_type.h"
 #include "oldpool.h"
@@ -16,23 +16,23 @@
 #include "economy_type.h"
 #include "tile_type.h"
 
-struct PlayerEconomyEntry {
+struct CompanyEconomyEntry {
 	Money income;
 	Money expenses;
 	int32 delivered_cargo;
-	int32 performance_history; ///< player score (scale 0-1000)
+	int32 performance_history; ///< company score (scale 0-1000)
 	Money company_value;
 };
 
 /* The third parameter and the number after >> MUST be the same,
- * otherwise more (or less) players will be allowed to be
- * created than what MAX_PLAYER specifies!
+ * otherwise more (or less) companies will be allowed to be
+ * created than what MAX_COMPANIES specifies!
  */
-DECLARE_OLD_POOL(Player, Player, 1, MAX_PLAYERS >> 1)
+DECLARE_OLD_POOL(Company, Company, 1, MAX_COMPANIES >> 1)
 
-struct Player : PoolItem<Player, PlayerByte, &_Player_pool> {
-	Player(uint16 name_1 = 0, bool is_ai = false);
-	~Player();
+struct Company : PoolItem<Company, CompanyByte, &_Company_pool> {
+	Company(uint16 name_1 = 0, bool is_ai = false);
+	~Company();
 
 	uint32 name_2;
 	uint16 name_1;
@@ -42,14 +42,14 @@
 	uint32 president_name_2;
 	char *president_name;
 
-	PlayerFace face;
+	CompanyManagerFace face;
 
-	Money player_money;
+	Money money;
+	byte money_fraction;
 	Money current_loan;
 
-	byte player_color;
+	byte colour;
 	Livery livery[LS_END];
-	byte player_money_fraction;
 	RailTypes avail_railtypes;
 	RoadTypes avail_roadtypes;
 	byte block_preview;
@@ -59,49 +59,49 @@
 	TileIndex location_of_HQ;
 	TileIndex last_build_coordinate;
 
-	PlayerByte share_owners[4];
+	OwnerByte share_owners[4];
 
 	Year inaugurated_year;
 	byte num_valid_stat_ent;
 
 	byte quarters_of_bankrupcy;
-	byte bankrupt_asked; ///< which players were asked about buying it?
+	byte bankrupt_asked; ///< which companies were asked about buying it?
 	int16 bankrupt_timeout;
 	Money bankrupt_value;
 
 	bool is_ai;
 
 	Money yearly_expenses[3][EXPENSES_END];
-	PlayerEconomyEntry cur_economy;
-	PlayerEconomyEntry old_economy[24];
+	CompanyEconomyEntry cur_economy;
+	CompanyEconomyEntry old_economy[24];
 	EngineRenewList engine_renew_list; ///< Defined later
 	bool engine_renew;
 	bool renew_keep_length;
 	int16 engine_renew_months;
 	uint32 engine_renew_money;
-	uint16 *num_engines; ///< caches the number of engines of each type the player owns (no need to save this)
+	uint16 *num_engines; ///< caches the number of engines of each type the company owns (no need to save this)
 
 	inline bool IsValid() const { return this->name_1 != 0; }
 };
 
-static inline bool IsValidPlayerID(PlayerID index)
+static inline bool IsValidCompanyID(CompanyID company)
 {
-	return (uint)index < GetPlayerPoolSize() && GetPlayer(index)->IsValid();
+	return (uint)company < GetCompanyPoolSize() && GetCompany(company)->IsValid();
 }
 
-#define FOR_ALL_PLAYERS_FROM(d, start) for (d = GetPlayer(start); d != NULL; d = (d->index + 1U < GetPlayerPoolSize()) ? GetPlayer(d->index + 1U) : NULL) if (d->IsValid())
-#define FOR_ALL_PLAYERS(d) FOR_ALL_PLAYERS_FROM(d, 0)
+#define FOR_ALL_COMPANIES_FROM(d, start) for (d = GetCompany(start); d != NULL; d = (d->index + 1U < GetCompanyPoolSize()) ? GetCompany(d->index + 1U) : NULL) if (d->IsValid())
+#define FOR_ALL_COMPANIES(d) FOR_ALL_COMPANIES_FROM(d, 0)
 
-static inline byte ActivePlayerCount()
+static inline byte ActiveCompanyCount()
 {
-	const Player *p;
+	const Company *c;
 	byte count = 0;
 
-	FOR_ALL_PLAYERS(p) count++;
+	FOR_ALL_COMPANIES(c) count++;
 
 	return count;
 }
 
-Money CalculateCompanyValue(const Player *p);
+Money CalculateCompanyValue(const Company *c);
 
-#endif /* PLAYER_BASE_H */
+#endif /* COMPANY_BASE_H */
--- a/src/player_face.h	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/player_face.h	Tue Sep 30 20:39:50 2008 +0000
@@ -1,9 +1,9 @@
 /* $Id$ */
 
-/** @file player_face.h Functionality related to the player's face */
+/** @file company_manager_face.h Functionality related to the company manager's face */
 
-#ifndef PLAYER_FACE_H
-#define PLAYER_FACE_H
+#ifndef COMPANY_MANAGER_FACE_H
+#define COMPANY_MANAGER_FACE_H
 
 #include "core/random_func.hpp"
 #include "core/bitmath_func.hpp"
@@ -21,214 +21,214 @@
 };
 DECLARE_ENUM_AS_BIT_SET(GenderEthnicity); ///< See GenderRace as a bitset
 
-/** Bitgroups of the PlayerFace variable */
-enum PlayerFaceVariable {
-	PFV_GENDER,
-	PFV_ETHNICITY,
-	PFV_GEN_ETHN,
-	PFV_HAS_MOUSTACHE,
-	PFV_HAS_TIE_EARRING,
-	PFV_HAS_GLASSES,
-	PFV_EYE_COLOUR,
-	PFV_CHEEKS,
-	PFV_CHIN,
-	PFV_EYEBROWS,
-	PFV_MOUSTACHE,
-	PFV_LIPS,
-	PFV_NOSE,
-	PFV_HAIR,
-	PFV_JACKET,
-	PFV_COLLAR,
-	PFV_TIE_EARRING,
-	PFV_GLASSES,
-	PFV_END
+/** Bitgroups of the CompanyManagerFace variable */
+enum CompanyManagerFaceVariable {
+	CMFV_GENDER,
+	CMFV_ETHNICITY,
+	CMFV_GEN_ETHN,
+	CMFV_HAS_MOUSTACHE,
+	CMFV_HAS_TIE_EARRING,
+	CMFV_HAS_GLASSES,
+	CMFV_EYE_COLOUR,
+	CMFV_CHEEKS,
+	CMFV_CHIN,
+	CMFV_EYEBROWS,
+	CMFV_MOUSTACHE,
+	CMFV_LIPS,
+	CMFV_NOSE,
+	CMFV_HAIR,
+	CMFV_JACKET,
+	CMFV_COLLAR,
+	CMFV_TIE_EARRING,
+	CMFV_GLASSES,
+	CMFV_END
 };
-DECLARE_POSTFIX_INCREMENT(PlayerFaceVariable);
+DECLARE_POSTFIX_INCREMENT(CompanyManagerFaceVariable);
 
-/** Information about the valid values of PlayerFace bitgroups as well as the sprites to draw */
-struct PlayerFaceBitsInfo {
-	byte     offset;               ///< Offset in bits into the PlayerFace
-	byte     length;               ///< Number of bits used in the PlayerFace
+/** Information about the valid values of CompanyManagerFace bitgroups as well as the sprites to draw */
+struct CompanyManagerFaceBitsInfo {
+	byte     offset;               ///< Offset in bits into the CompanyManagerFace
+	byte     length;               ///< Number of bits used in the CompanyManagerFace
 	byte     valid_values[GE_END]; ///< The number of valid values per gender/ethnicity
 	SpriteID first_sprite[GE_END]; ///< The first sprite per gender/ethnicity
 };
 
-/** Lookup table for indices into the PlayerFace, valid ranges and sprites */
-static const PlayerFaceBitsInfo _pf_info[] = {
+/** Lookup table for indices into the CompanyManagerFace, valid ranges and sprites */
+static const CompanyManagerFaceBitsInfo _cmf_info[] = {
 	/* Index                   off len   WM  WF  BM  BF         WM     WF     BM     BF */
-	/* PFV_GENDER          */ {  0, 1, {  2,  2,  2,  2 }, {     0,     0,     0,     0 } }, ///< 0 = male, 1 = female
-	/* PFV_ETHNICITY       */ {  1, 2, {  2,  2,  2,  2 }, {     0,     0,     0,     0 } }, ///< 0 = (Western-)Caucasian, 1 = African(-American)/Black
-	/* PFV_GEN_ETHN        */ {  0, 3, {  4,  4,  4,  4 }, {     0,     0,     0,     0 } }, ///< Shortcut to get/set gender _and_ ethnicity
-	/* PFV_HAS_MOUSTACHE   */ {  3, 1, {  2,  0,  2,  0 }, {     0,     0,     0,     0 } }, ///< Females do not have a moustache
-	/* PFV_HAS_TIE_EARRING */ {  3, 1, {  0,  2,  0,  2 }, {     0,     0,     0,     0 } }, ///< Draw the earring for females or not. For males the tie is always drawn.
-	/* PFV_HAS_GLASSES     */ {  4, 1, {  2,  2,  2,  2 }, {     0,     0,     0,     0 } }, ///< Whether to draw glasses or not
-	/* PFV_EYE_COLOUR      */ {  5, 2, {  3,  3,  1,  1 }, {     0,     0,     0,     0 } }, ///< Palette modification
-	/* PFV_CHEEKS          */ {  0, 0, {  1,  1,  1,  1 }, { 0x325, 0x326, 0x390, 0x3B0 } }, ///< Cheeks are only indexed by their gender/ethnicity
-	/* PFV_CHIN            */ {  7, 2, {  4,  1,  2,  2 }, { 0x327, 0x327, 0x391, 0x3B1 } },
-	/* PFV_EYEBROWS        */ {  9, 4, { 12, 16, 11, 16 }, { 0x32B, 0x337, 0x39A, 0x3B8 } },
-	/* PFV_MOUSTACHE       */ { 13, 2, {  3,  0,  3,  0 }, { 0x367,     0, 0x397,     0 } }, ///< Depends on PFV_HAS_MOUSTACHE
-	/* PFV_LIPS            */ { 13, 4, { 12, 10,  9,  9 }, { 0x35B, 0x351, 0x3A5, 0x3C8 } }, ///< Depends on !PFV_HAS_MOUSTACHE
-	/* PFV_NOSE            */ { 17, 3, {  8,  4,  4,  5 }, { 0x349, 0x34C, 0x393, 0x3B3 } }, ///< Depends on !PFV_HAS_MOUSTACHE
-	/* PFV_HAIR            */ { 20, 4, {  9,  5,  5,  4 }, { 0x382, 0x38B, 0x3D4, 0x3D9 } },
-	/* PFV_JACKET          */ { 24, 2, {  3,  3,  3,  3 }, { 0x36B, 0x378, 0x36B, 0x378 } },
-	/* PFV_COLLAR          */ { 26, 2, {  4,  4,  4,  4 }, { 0x36E, 0x37B, 0x36E, 0x37B } },
-	/* PFV_TIE_EARRING     */ { 28, 3, {  6,  3,  6,  3 }, { 0x372, 0x37F, 0x372, 0x3D1 } }, ///< Depends on PFV_HAS_TIE_EARRING
-	/* PFV_GLASSES         */ { 31, 1, {  2,  2,  2,  2 }, { 0x347, 0x347, 0x3AE, 0x3AE } }  ///< Depends on PFV_HAS_GLASSES
+	/* CMFV_GENDER          */ {  0, 1, {  2,  2,  2,  2 }, {     0,     0,     0,     0 } }, ///< 0 = male, 1 = female
+	/* CMFV_ETHNICITY       */ {  1, 2, {  2,  2,  2,  2 }, {     0,     0,     0,     0 } }, ///< 0 = (Western-)Caucasian, 1 = African(-American)/Black
+	/* CMFV_GEN_ETHN        */ {  0, 3, {  4,  4,  4,  4 }, {     0,     0,     0,     0 } }, ///< Shortcut to get/set gender _and_ ethnicity
+	/* CMFV_HAS_MOUSTACHE   */ {  3, 1, {  2,  0,  2,  0 }, {     0,     0,     0,     0 } }, ///< Females do not have a moustache
+	/* CMFV_HAS_TIE_EARRING */ {  3, 1, {  0,  2,  0,  2 }, {     0,     0,     0,     0 } }, ///< Draw the earring for females or not. For males the tie is always drawn.
+	/* CMFV_HAS_GLASSES     */ {  4, 1, {  2,  2,  2,  2 }, {     0,     0,     0,     0 } }, ///< Whether to draw glasses or not
+	/* CMFV_EYE_COLOUR      */ {  5, 2, {  3,  3,  1,  1 }, {     0,     0,     0,     0 } }, ///< Palette modification
+	/* CMFV_CHEEKS          */ {  0, 0, {  1,  1,  1,  1 }, { 0x325, 0x326, 0x390, 0x3B0 } }, ///< Cheeks are only indexed by their gender/ethnicity
+	/* CMFV_CHIN            */ {  7, 2, {  4,  1,  2,  2 }, { 0x327, 0x327, 0x391, 0x3B1 } },
+	/* CMFV_EYEBROWS        */ {  9, 4, { 12, 16, 11, 16 }, { 0x32B, 0x337, 0x39A, 0x3B8 } },
+	/* CMFV_MOUSTACHE       */ { 13, 2, {  3,  0,  3,  0 }, { 0x367,     0, 0x397,     0 } }, ///< Depends on CMFV_HAS_MOUSTACHE
+	/* CMFV_LIPS            */ { 13, 4, { 12, 10,  9,  9 }, { 0x35B, 0x351, 0x3A5, 0x3C8 } }, ///< Depends on !CMFV_HAS_MOUSTACHE
+	/* CMFV_NOSE            */ { 17, 3, {  8,  4,  4,  5 }, { 0x349, 0x34C, 0x393, 0x3B3 } }, ///< Depends on !CMFV_HAS_MOUSTACHE
+	/* CMFV_HAIR            */ { 20, 4, {  9,  5,  5,  4 }, { 0x382, 0x38B, 0x3D4, 0x3D9 } },
+	/* CMFV_JACKET          */ { 24, 2, {  3,  3,  3,  3 }, { 0x36B, 0x378, 0x36B, 0x378 } },
+	/* CMFV_COLLAR          */ { 26, 2, {  4,  4,  4,  4 }, { 0x36E, 0x37B, 0x36E, 0x37B } },
+	/* CMFV_TIE_EARRING     */ { 28, 3, {  6,  3,  6,  3 }, { 0x372, 0x37F, 0x372, 0x3D1 } }, ///< Depends on CMFV_HAS_TIE_EARRING
+	/* CMFV_GLASSES         */ { 31, 1, {  2,  2,  2,  2 }, { 0x347, 0x347, 0x3AE, 0x3AE } }  ///< Depends on CMFV_HAS_GLASSES
 };
-assert_compile(lengthof(_pf_info) == PFV_END);
+assert_compile(lengthof(_cmf_info) == CMFV_END);
 
 /**
- * Gets the player's face bits for the given player face variable
- * @param pf  the face to extract the bits from
- * @param pfv the face variable to get the data of
- * @param ge  the gender and ethnicity of the face
- * @pre _pf_info[pfv].valid_values[ge] != 0
+ * Gets the company manager's face bits for the given company manager's face variable
+ * @param cmf  the face to extract the bits from
+ * @param cmfv the face variable to get the data of
+ * @param ge   the gender and ethnicity of the face
+ * @pre _cmf_info[cmfv].valid_values[ge] != 0
  * @return the requested bits
  */
-static inline uint GetPlayerFaceBits(PlayerFace pf, PlayerFaceVariable pfv, GenderEthnicity ge)
+static inline uint GetCompanyManagerFaceBits(CompanyManagerFace cmf, CompanyManagerFaceVariable cmfv, GenderEthnicity ge)
 {
-	assert(_pf_info[pfv].valid_values[ge] != 0);
+	assert(_cmf_info[cmfv].valid_values[ge] != 0);
 
-	return GB(pf, _pf_info[pfv].offset, _pf_info[pfv].length);
+	return GB(cmf, _cmf_info[cmfv].offset, _cmf_info[cmfv].length);
 }
 
 /**
- * Sets the player's face bits for the given player face variable
- * @param pf  the face to write the bits to
- * @param pfv the face variable to write the data of
- * @param ge  the gender and ethnicity of the face
- * @param val the new value
- * @pre val < _pf_info[pfv].valid_values[ge]
+ * Sets the company manager's face bits for the given company manager's face variable
+ * @param cmf  the face to write the bits to
+ * @param cmfv the face variable to write the data of
+ * @param ge   the gender and ethnicity of the face
+ * @param val  the new value
+ * @pre val < _cmf_info[cmfv].valid_values[ge]
  */
-static inline void SetPlayerFaceBits(PlayerFace &pf, PlayerFaceVariable pfv, GenderEthnicity ge, uint val)
+static inline void SetCompanyManagerFaceBits(CompanyManagerFace &cmf, CompanyManagerFaceVariable cmfv, GenderEthnicity ge, uint val)
 {
-	assert(val < _pf_info[pfv].valid_values[ge]);
+	assert(val < _cmf_info[cmfv].valid_values[ge]);
 
-	SB(pf, _pf_info[pfv].offset, _pf_info[pfv].length, val);
+	SB(cmf, _cmf_info[cmfv].offset, _cmf_info[cmfv].length, val);
 }
 
 /**
- * Increase/Decrease the player face variable by the given amount.
+ * Increase/Decrease the company manager's face variable by the given amount.
  * If the new value greater than the max value for this variable it will be set to 0.
  * Or is it negativ (< 0) it will be set to max value.
  *
- * @param pf     the player face to write the bits to
- * @param pfv    the player face variable to write the data of
- * @param ge     the gender and ethnicity of the player face
+ * @param cmf    the company manager face to write the bits to
+ * @param cmfv   the company manager face variable to write the data of
+ * @param ge     the gender and ethnicity of the company manager's face
  * @param amount the amount which change the value
  *
- * @pre 0 <= val < _pf_info[pfv].valid_values[ge]
+ * @pre 0 <= val < _cmf_info[cmfv].valid_values[ge]
  */
-static inline void IncreasePlayerFaceBits(PlayerFace &pf, PlayerFaceVariable pfv, GenderEthnicity ge, int8 amount)
+static inline void IncreaseCompanyManagerFaceBits(CompanyManagerFace &cmf, CompanyManagerFaceVariable cmfv, GenderEthnicity ge, int8 amount)
 {
-	int8 val = GetPlayerFaceBits(pf, pfv, ge) + amount; // the new value for the pfv
+	int8 val = GetCompanyManagerFaceBits(cmf, cmfv, ge) + amount; // the new value for the cmfv
 
 	/* scales the new value to the correct scope */
-	if (val >= _pf_info[pfv].valid_values[ge]) {
+	if (val >= _cmf_info[cmfv].valid_values[ge]) {
 		val = 0;
 	} else if (val < 0) {
-		val = _pf_info[pfv].valid_values[ge] - 1;
+		val = _cmf_info[cmfv].valid_values[ge] - 1;
 	}
 
-	SetPlayerFaceBits(pf, pfv, ge, val); // save the new value
+	SetCompanyManagerFaceBits(cmf, cmfv, ge, val); // save the new value
 }
 
 /**
- * Checks whether the player bits have a valid range
- * @param pf  the face to extract the bits from
- * @param pfv the face variable to get the data of
- * @param ge  the gender and ethnicity of the face
+ * Checks whether the company manager's face bits have a valid range
+ * @param cmf  the face to extract the bits from
+ * @param cmfv the face variable to get the data of
+ * @param ge   the gender and ethnicity of the face
  * @return true if and only if the bits are valid
  */
-static inline bool ArePlayerFaceBitsValid(PlayerFace pf, PlayerFaceVariable pfv, GenderEthnicity ge)
+static inline bool AreCompanyManagerFaceBitsValid(CompanyManagerFace cmf, CompanyManagerFaceVariable cmfv, GenderEthnicity ge)
 {
-	return GB(pf, _pf_info[pfv].offset, _pf_info[pfv].length) < _pf_info[pfv].valid_values[ge];
+	return GB(cmf, _cmf_info[cmfv].offset, _cmf_info[cmfv].length) < _cmf_info[cmfv].valid_values[ge];
 }
 
 /**
- * Scales a player face bits variable to the correct scope
- * @param pfv the face variable to write the data of
+ * Scales a company manager's face bits variable to the correct scope
+ * @param cmfv the face variable to write the data of
  * @param ge  the gender and ethnicity of the face
  * @param val the to value to scale
- * @pre val < (1U << _pf_info[pfv].length), i.e. val has a value of 0..2^(bits used for this variable)-1
+ * @pre val < (1U << _cmf_info[cmfv].length), i.e. val has a value of 0..2^(bits used for this variable)-1
  * @return the scaled value
  */
-static inline uint ScalePlayerFaceValue(PlayerFaceVariable pfv, GenderEthnicity ge, uint val)
+static inline uint ScaleCompanyManagerFaceValue(CompanyManagerFaceVariable cmfv, GenderEthnicity ge, uint val)
 {
-	assert(val < (1U << _pf_info[pfv].length));
+	assert(val < (1U << _cmf_info[cmfv].length));
 
-	return (val * _pf_info[pfv].valid_values[ge]) >> _pf_info[pfv].length;
+	return (val * _cmf_info[cmfv].valid_values[ge]) >> _cmf_info[cmfv].length;
 }
 
 /**
- * Scales all player face bits to the correct scope
+ * Scales all company manager's face bits to the correct scope
  *
- * @param pf the player face to write the bits to
+ * @param cmf the company manager's face to write the bits to
  */
-static inline void ScaleAllPlayerFaceBits(PlayerFace &pf)
+static inline void ScaleAllCompanyManagerFaceBits(CompanyManagerFace &cmf)
 {
-	IncreasePlayerFaceBits(pf, PFV_ETHNICITY, GE_WM, 0); // scales the ethnicity
+	IncreaseCompanyManagerFaceBits(cmf, CMFV_ETHNICITY, GE_WM, 0); // scales the ethnicity
 
-	GenderEthnicity ge = (GenderEthnicity)GB(pf, _pf_info[PFV_GEN_ETHN].offset, _pf_info[PFV_GEN_ETHN].length); // gender & ethnicity of the face
+	GenderEthnicity ge = (GenderEthnicity)GB(cmf, _cmf_info[CMFV_GEN_ETHN].offset, _cmf_info[CMFV_GEN_ETHN].length); // gender & ethnicity of the face
 
 	/* Is a male face with moustache. Need to reduce CPU load in the loop. */
-	bool is_moust_male = !HasBit(ge, GENDER_FEMALE) && GetPlayerFaceBits(pf, PFV_HAS_MOUSTACHE, ge) != 0;
+	bool is_moust_male = !HasBit(ge, GENDER_FEMALE) && GetCompanyManagerFaceBits(cmf, CMFV_HAS_MOUSTACHE, ge) != 0;
 
-	for (PlayerFaceVariable pfv = PFV_EYE_COLOUR; pfv < PFV_END; pfv++) { // scales all other variables
+	for (CompanyManagerFaceVariable cmfv = CMFV_EYE_COLOUR; cmfv < CMFV_END; cmfv++) { // scales all other variables
 
 		/* The moustache variable will be scaled only if it is a male face with has a moustache */
-		if (pfv != PFV_MOUSTACHE || is_moust_male) {
-			IncreasePlayerFaceBits(pf, pfv, ge, 0);
+		if (cmfv != CMFV_MOUSTACHE || is_moust_male) {
+			IncreaseCompanyManagerFaceBits(cmf, cmfv, ge, 0);
 		}
 	}
 }
 
 /**
  * Make a random new face.
- * If it is for the advanced player face window then the new face have the same gender
+ * If it is for the advanced company manager's face window then the new face have the same gender
  * and ethnicity as the old one, else the gender is equal and the ethnicity is random.
  *
- * @param pf  the player face to write the bits to
- * @param ge  the gender and ethnicity of the old player face
- * @param adv if it for the advanced player face window
+ * @param cmf the company manager's face to write the bits to
+ * @param ge  the gender and ethnicity of the old company manager's face
+ * @param adv if it for the advanced company manager's face window
  *
  * @pre scale 'ge' to a valid gender/ethnicity combination
  */
-static inline void RandomPlayerFaceBits(PlayerFace &pf, GenderEthnicity ge, bool adv)
+static inline void RandomCompanyManagerFaceBits(CompanyManagerFace &cmf, GenderEthnicity ge, bool adv)
 {
-	pf = InteractiveRandom(); // random all player face bits
+	cmf = InteractiveRandom(); // random all company manager's face bits
 
 	/* scale ge: 0 == GE_WM, 1 == GE_WF, 2 == GE_BM, 3 == GE_BF (and maybe in future: ...) */
 	ge = (GenderEthnicity)((uint)ge % GE_END);
 
-	/* set the gender (and ethnicity) for the new player face */
+	/* set the gender (and ethnicity) for the new company manager's face */
 	if (adv) {
-		SetPlayerFaceBits(pf, PFV_GEN_ETHN, ge, ge);
+		SetCompanyManagerFaceBits(cmf, CMFV_GEN_ETHN, ge, ge);
 	} else {
-		SetPlayerFaceBits(pf, PFV_GENDER, ge, HasBit(ge, GENDER_FEMALE));
+		SetCompanyManagerFaceBits(cmf, CMFV_GENDER, ge, HasBit(ge, GENDER_FEMALE));
 	}
 
-	/* scales all player face bits to the correct scope */
-	ScaleAllPlayerFaceBits(pf);
+	/* scales all company manager's face bits to the correct scope */
+	ScaleAllCompanyManagerFaceBits(cmf);
 }
 
 /**
- * Gets the sprite to draw for the given player face variable
- * @param pf  the face to extract the data from
- * @param pfv the face variable to get the sprite of
- * @param ge  the gender and ethnicity of the face
- * @pre _pf_info[pfv].valid_values[ge] != 0
+ * Gets the sprite to draw for the given company manager's face variable
+ * @param cmf  the face to extract the data from
+ * @param cmfv the face variable to get the sprite of
+ * @param ge   the gender and ethnicity of the face
+ * @pre _cmf_info[cmfv].valid_values[ge] != 0
  * @return sprite to draw
  */
-static inline SpriteID GetPlayerFaceSprite(PlayerFace pf, PlayerFaceVariable pfv, GenderEthnicity ge)
+static inline SpriteID GetCompanyManagerFaceSprite(CompanyManagerFace cmf, CompanyManagerFaceVariable cmfv, GenderEthnicity ge)
 {
-	assert(_pf_info[pfv].valid_values[ge] != 0);
+	assert(_cmf_info[cmfv].valid_values[ge] != 0);
 
-	return _pf_info[pfv].first_sprite[ge] + GB(pf, _pf_info[pfv].offset, _pf_info[pfv].length);
+	return _cmf_info[cmfv].first_sprite[ge] + GB(cmf, _cmf_info[cmfv].offset, _cmf_info[cmfv].length);
 }
 
-void DrawPlayerFace(PlayerFace face, int color, int x, int y);
-PlayerFace ConvertFromOldPlayerFace(uint32 face);
-bool IsValidPlayerIDFace(PlayerFace pf);
+void DrawCompanyManagerFace(CompanyManagerFace face, int color, int x, int y);
+CompanyManagerFace ConvertFromOldCompanyManagerFace(uint32 face);
+bool IsValidCompanyManagerFace(CompanyManagerFace cmf);
 
-#endif /* PLAYER_FACE_H */
+#endif /* COMPANY_MANAGER_FACE_H */
--- a/src/player_func.h	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/player_func.h	Tue Sep 30 20:39:50 2008 +0000
@@ -1,49 +1,49 @@
 /* $Id$ */
 
-/** @file player_func.h Functions related to players. */
+/** @file company_func.h Functions related to companies. */
 
-#ifndef PLAYER_FUNC_H
-#define PLAYER_FUNC_H
+#ifndef COMPANY_FUNC_H
+#define COMPANY_FUNC_H
 
 #include "core/math_func.hpp"
 #include "player_type.h"
 #include "tile_type.h"
 #include "strings_type.h"
 
-void ChangeOwnershipOfPlayerItems(PlayerID old_player, PlayerID new_player);
+void ChangeOwnershipOfCompanyItems(Owner old_owner, Owner new_owner);
 void GetNameOfOwner(Owner owner, TileIndex tile);
-void SetLocalPlayer(PlayerID new_player);
+void SetLocalCompany(CompanyID new_company);
 
-extern PlayerByte _local_player;
-extern PlayerByte _current_player;
-/* NOSAVE: can be determined from player structs */
-extern byte _player_colors[MAX_PLAYERS];
-extern PlayerFace _player_face; ///< for player face storage in openttd.cfg
+extern CompanyByte _local_company;
+extern CompanyByte _current_company;
 
-bool IsHumanPlayer(PlayerID pi);
+extern byte _company_colours[MAX_COMPANIES];     ///< NOSAVE: can be determined from company structs
+extern CompanyManagerFace _company_manager_face; ///< for company manager face storage in openttd.cfg
 
-static inline bool IsLocalPlayer()
+bool IsHumanCompany(CompanyID company);
+
+static inline bool IsLocalCompany()
 {
-	return _local_player == _current_player;
+	return _local_company == _current_company;
 }
 
-static inline bool IsInteractivePlayer(PlayerID pi)
+static inline bool IsInteractiveCompany(CompanyID company)
 {
-	return pi == _local_player;
+	return company == _local_company;
 }
 
 
 
 struct HighScore {
 	char company[100];
-	StringID title; ///< NO_SAVE, has troubles with changing string-numbers.
+	StringID title; ///< NOSAVE, has troubles with changing string-numbers.
 	uint16 score;   ///< do NOT change type, will break hs.dat
 };
 
 extern HighScore _highscore_table[5][5]; // 4 difficulty-settings (+ network); top 5
 void SaveToHighScore();
 void LoadFromHighScore();
-int8 SaveHighScoreValue(const Player *p);
+int8 SaveHighScoreValue(const Company *p);
 int8 SaveHighScoreValueNetwork();
 
-#endif /* PLAYER_FUNC_H */
+#endif /* COMPANY_FUNC_H */
--- a/src/player_gui.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/player_gui.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -1,6 +1,6 @@
 /* $Id$ */
 
-/** @file player_gui.cpp Player related GUIs. */
+/** @file company_gui.cpp Company related GUIs. */
 
 #include "stdafx.h"
 #include "openttd.h"
@@ -37,10 +37,10 @@
 	FIRST_GUI_CALL = INT_MAX,  ///< default value to specify thuis is the first call of the resizable gui
 };
 
-static void DoShowPlayerFinances(PlayerID player, bool show_small, bool show_stickied, int top = FIRST_GUI_CALL, int left = FIRST_GUI_CALL);
-static void DoSelectPlayerFace(Window *parent, bool show_big, int top =  FIRST_GUI_CALL, int left = FIRST_GUI_CALL);
+static void DoShowCompanyFinances(CompanyID company, bool show_small, bool show_stickied, int top = FIRST_GUI_CALL, int left = FIRST_GUI_CALL);
+static void DoSelectCompanyManagerFace(Window *parent, bool show_big, int top =  FIRST_GUI_CALL, int left = FIRST_GUI_CALL);
 
-static void DrawPlayerEconomyStats(const Player *p, bool small)
+static void DrawCompanyEconomyStats(const Company *c, bool small)
 {
 	int x, y, i, j, year;
 	const Money (*tbl)[EXPENSES_END];
@@ -58,9 +58,9 @@
 		year = _cur_year - 2;
 		j = 3;
 		x = 215;
-		tbl = p->yearly_expenses + 2;
+		tbl = c->yearly_expenses + 2;
 		do {
-			if (year >= p->inaugurated_year) {
+			if (year >= c->inaugurated_year) {
 				SetDParam(0, year);
 				DrawStringRightAlignedUnderline(x, 15, STR_7010, TC_FROMSTRING);
 				sum = 0;
@@ -99,30 +99,30 @@
 	}
 
 	DrawString(2, y, STR_7026_BANK_BALANCE, TC_FROMSTRING);
-	SetDParam(0, p->player_money);
+	SetDParam(0, c->money);
 	DrawStringRightAligned(182, y, STR_7028, TC_FROMSTRING);
 
 	y += 10;
 
 	DrawString(2, y, STR_7027_LOAN, TC_FROMSTRING);
-	SetDParam(0, p->current_loan);
+	SetDParam(0, c->current_loan);
 	DrawStringRightAligned(182, y, STR_7028, TC_FROMSTRING);
 
 	y += 12;
 
 	GfxFillRect(182 - 75, y - 2, 182, y - 2, 215);
 
-	SetDParam(0, p->player_money - p->current_loan);
+	SetDParam(0, c->money - c->current_loan);
 	DrawStringRightAligned(182, y, STR_7028, TC_FROMSTRING);
 }
 
-enum PlayerFinancesWindowWidgets {
-	PFW_WIDGET_TOGGLE_SIZE   = 2,
-	PFW_WIDGET_INCREASE_LOAN = 6,
-	PFW_WIDGET_REPAY_LOAN    = 7,
+enum CompanyFinancesWindowWidgets {
+	CFW_WIDGET_TOGGLE_SIZE   = 2,
+	CFW_WIDGET_INCREASE_LOAN = 6,
+	CFW_WIDGET_REPAY_LOAN    = 7,
 };
 
-static const Widget _player_finances_widgets[] = {
+static const Widget _company_finances_widgets[] = {
 {   WWT_CLOSEBOX,   RESIZE_NONE,  COLOUR_GREY,     0,    10,     0,    13, STR_00C5,               STR_018B_CLOSE_WINDOW},
 {    WWT_CAPTION,   RESIZE_NONE,  COLOUR_GREY,    11,   379,     0,    13, STR_700E_FINANCES,      STR_018C_WINDOW_TITLE_DRAG_THIS},
 {     WWT_IMGBTN,   RESIZE_NONE,  COLOUR_GREY,   380,   394,     0,    13, SPR_LARGE_SMALL_WINDOW, STR_7075_TOGGLE_LARGE_SMALL_WINDOW},
@@ -134,7 +134,7 @@
 {   WIDGETS_END},
 };
 
-static const Widget _player_finances_small_widgets[] = {
+static const Widget _company_finances_small_widgets[] = {
 {   WWT_CLOSEBOX,   RESIZE_NONE,  COLOUR_GREY,     0,    10,     0,    13, STR_00C5,               STR_018B_CLOSE_WINDOW},
 {    WWT_CAPTION,   RESIZE_NONE,  COLOUR_GREY,    11,   253,     0,    13, STR_700E_FINANCES,      STR_018C_WINDOW_TITLE_DRAG_THIS},
 {     WWT_IMGBTN,   RESIZE_NONE,  COLOUR_GREY,   254,   267,     0,    13, SPR_LARGE_SMALL_WINDOW, STR_7075_TOGGLE_LARGE_SMALL_WINDOW},
@@ -146,12 +146,12 @@
 {   WIDGETS_END},
 };
 
-struct PlayerFinancesWindow : Window {
+struct CompanyFinancesWindow : Window {
 	bool small;
 
-	PlayerFinancesWindow(const WindowDesc *desc, PlayerID player, bool show_small,
+	CompanyFinancesWindow(const WindowDesc *desc, CompanyID company, bool show_small,
 					bool show_stickied, int top, int left) :
-			Window(desc, player),
+			Window(desc, company),
 			small(show_small)
 	{
 		this->caption_color = this->window_number;
@@ -169,98 +169,98 @@
 
 	virtual void OnPaint()
 	{
-		PlayerID player = (PlayerID)this->window_number;
-		const Player *p = GetPlayer(player);
+		CompanyID company = (CompanyID)this->window_number;
+		const Company *c = GetCompany(company);
 
-		/* Recheck the size of the window as it might need to be resized due to the local player changing */
-		int new_height = ((player != _local_player) ? 0 : 12) + ((this->small != 0) ? 48 : 74 + 10 * EXPENSES_END);
+		/* Recheck the size of the window as it might need to be resized due to the local company changing */
+		int new_height = ((company != _local_company) ? 0 : 12) + ((this->small != 0) ? 48 : 74 + 10 * EXPENSES_END);
 		if (this->height != new_height) {
 			/* Make window dirty before and after resizing */
 			this->SetDirty();
 			this->height = new_height;
 			this->SetDirty();
 
-			this->SetWidgetHiddenState(PFW_WIDGET_INCREASE_LOAN, player != _local_player);
-			this->SetWidgetHiddenState(PFW_WIDGET_REPAY_LOAN,    player != _local_player);
+			this->SetWidgetHiddenState(CFW_WIDGET_INCREASE_LOAN, company != _local_company);
+			this->SetWidgetHiddenState(CFW_WIDGET_REPAY_LOAN,    company != _local_company);
 		}
 
 		/* Borrow button only shows when there is any more money to loan */
-		this->SetWidgetDisabledState(PFW_WIDGET_INCREASE_LOAN, p->current_loan == _economy.max_loan);
+		this->SetWidgetDisabledState(CFW_WIDGET_INCREASE_LOAN, c->current_loan == _economy.max_loan);
 
 		/* Repay button only shows when there is any more money to repay */
-		this->SetWidgetDisabledState(PFW_WIDGET_REPAY_LOAN, player != _local_player || p->current_loan == 0);
+		this->SetWidgetDisabledState(CFW_WIDGET_REPAY_LOAN, company != _local_company || c->current_loan == 0);
 
-		SetDParam(0, p->index);
-		SetDParam(1, p->index);
+		SetDParam(0, c->index);
+		SetDParam(1, c->index);
 		SetDParam(2, LOAN_INTERVAL);
 		this->DrawWidgets();
 
-		DrawPlayerEconomyStats(p, this->small);
+		DrawCompanyEconomyStats(c, this->small);
 	}
 
 	virtual void OnClick(Point pt, int widget)
 	{
 		switch (widget) {
-			case PFW_WIDGET_TOGGLE_SIZE: {/* toggle size */
+			case CFW_WIDGET_TOGGLE_SIZE: {/* toggle size */
 				bool new_mode = !this->small;
 				bool stickied = !!(this->flags4 & WF_STICKY);
 				int oldtop = this->top;   ///< current top position of the window before closing it
 				int oldleft = this->left; ///< current left position of the window before closing it
-				PlayerID player = (PlayerID)this->window_number;
+				CompanyID company = (CompanyID)this->window_number;
 
 				delete this;
 				/* Open up the (toggled size) Finance window at the same position as the previous */
-				DoShowPlayerFinances(player, new_mode, stickied, oldtop, oldleft);
+				DoShowCompanyFinances(company, new_mode, stickied, oldtop, oldleft);
 			}
 			break;
 
-			case PFW_WIDGET_INCREASE_LOAN: /* increase loan */
+			case CFW_WIDGET_INCREASE_LOAN: /* increase loan */
 				DoCommandP(0, 0, _ctrl_pressed, NULL, CMD_INCREASE_LOAN | CMD_MSG(STR_702C_CAN_T_BORROW_ANY_MORE_MONEY));
 				break;
 
-			case PFW_WIDGET_REPAY_LOAN: /* repay loan */
+			case CFW_WIDGET_REPAY_LOAN: /* repay loan */
 				DoCommandP(0, 0, _ctrl_pressed, NULL, CMD_DECREASE_LOAN | CMD_MSG(STR_702F_CAN_T_REPAY_LOAN));
 				break;
 		}
 	}
 };
 
-static const WindowDesc _player_finances_desc = {
+static const WindowDesc _company_finances_desc = {
 	WDP_AUTO, WDP_AUTO, 407, 86 + 10 * EXPENSES_END, 407, 86 + 10 * EXPENSES_END,
 	WC_FINANCES, WC_NONE,
 	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON,
-	_player_finances_widgets,
+	_company_finances_widgets,
 };
 
-static const WindowDesc _player_finances_small_desc = {
+static const WindowDesc _company_finances_small_desc = {
 	WDP_AUTO, WDP_AUTO, 280, 60, 280, 60,
 	WC_FINANCES, WC_NONE,
 	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON,
-	_player_finances_small_widgets,
+	_company_finances_small_widgets,
 };
 
 /**
- * Open the small/large finance window of the player
+ * Open the small/large finance window of the company
  *
- * @param player         the player who's finances are requested to be seen
+ * @param company        the company who's finances are requested to be seen
  * @param show_small     show large or small version opf the window
  * @param show_stickied  previous "stickyness" of the window
  * @param top            previous top position of the window
  * @param left           previous left position of the window
  *
- * @pre is player a valid player
+ * @pre is company a valid company
  */
-static void DoShowPlayerFinances(PlayerID player, bool show_small, bool show_stickied, int top, int left)
+static void DoShowCompanyFinances(CompanyID company, bool show_small, bool show_stickied, int top, int left)
 {
-	if (!IsValidPlayerID(player)) return;
+	if (!IsValidCompanyID(company)) return;
 
-	if (BringWindowToFrontById(WC_FINANCES, player)) return;
-	new PlayerFinancesWindow(show_small ? &_player_finances_small_desc : &_player_finances_desc, player, show_small, show_stickied, top, left);
+	if (BringWindowToFrontById(WC_FINANCES, company)) return;
+	new CompanyFinancesWindow(show_small ? &_company_finances_small_desc : &_company_finances_desc, company, show_small, show_stickied, top, left);
 }
 
-void ShowPlayerFinances(PlayerID player)
+void ShowCompanyFinances(CompanyID company)
 {
-	DoShowPlayerFinances(player, false, false);
+	DoShowCompanyFinances(company, false, false);
 }
 
 /* List of colours for the livery window */
@@ -321,24 +321,24 @@
 	}
 };
 
-struct SelectPlayerLiveryWindow : public Window {
+struct SelectCompanyLiveryWindow : public Window {
 private:
 	uint32 sel;
 	LiveryClass livery_class;
 
-	enum PlayerLiveryWindowWidgets {
-		PLW_WIDGET_CLOSE,
-		PLW_WIDGET_CAPTION,
-		PLW_WIDGET_CLASS_GENERAL,
-		PLW_WIDGET_CLASS_RAIL,
-		PLW_WIDGET_CLASS_ROAD,
-		PLW_WIDGET_CLASS_SHIP,
-		PLW_WIDGET_CLASS_AIRCRAFT,
-		PLW_WIDGET_SPACER_CLASS,
-		PLW_WIDGET_SPACER_DROPDOWN,
-		PLW_WIDGET_PRI_COL_DROPDOWN,
-		PLW_WIDGET_SEC_COL_DROPDOWN,
-		PLW_WIDGET_MATRIX,
+	enum SelectCompanyLiveryWindowWidgets {
+		SCLW_WIDGET_CLOSE,
+		SCLW_WIDGET_CAPTION,
+		SCLW_WIDGET_CLASS_GENERAL,
+		SCLW_WIDGET_CLASS_RAIL,
+		SCLW_WIDGET_CLASS_ROAD,
+		SCLW_WIDGET_CLASS_SHIP,
+		SCLW_WIDGET_CLASS_AIRCRAFT,
+		SCLW_WIDGET_SPACER_CLASS,
+		SCLW_WIDGET_SPACER_DROPDOWN,
+		SCLW_WIDGET_PRI_COL_DROPDOWN,
+		SCLW_WIDGET_SEC_COL_DROPDOWN,
+		SCLW_WIDGET_MATRIX,
 	};
 
 	void ShowColourDropDownMenu(uint32 widget)
@@ -347,11 +347,11 @@
 		const Livery *livery;
 		LiveryScheme scheme;
 
-		/* Disallow other player colours for the primary colour */
-		if (HasBit(this->sel, LS_DEFAULT) && widget == PLW_WIDGET_PRI_COL_DROPDOWN) {
-			const Player *p;
-			FOR_ALL_PLAYERS(p) {
-				if (p->index != _local_player) SetBit(used_colours, p->player_color);
+		/* Disallow other company colours for the primary colour */
+		if (HasBit(this->sel, LS_DEFAULT) && widget == SCLW_WIDGET_PRI_COL_DROPDOWN) {
+			const Company *c;
+			FOR_ALL_COMPANIES(c) {
+				if (c->index != _local_company) SetBit(used_colours, c->colour);
 			}
 		}
 
@@ -360,36 +360,36 @@
 			if (HasBit(this->sel, scheme)) break;
 		}
 		if (scheme == LS_END) scheme = LS_DEFAULT;
-		livery = &GetPlayer((PlayerID)this->window_number)->livery[scheme];
+		livery = &GetCompany((CompanyID)this->window_number)->livery[scheme];
 
 		DropDownList *list = new DropDownList();
 		for (uint i = 0; i < lengthof(_colour_dropdown); i++) {
 			list->push_back(new DropDownListColourItem(i, HasBit(used_colours, i)));
 		}
 
-		ShowDropDownList(this, list, widget == PLW_WIDGET_PRI_COL_DROPDOWN ? livery->colour1 : livery->colour2, widget);
+		ShowDropDownList(this, list, widget == SCLW_WIDGET_PRI_COL_DROPDOWN ? livery->colour1 : livery->colour2, widget);
 	}
 
 public:
-	SelectPlayerLiveryWindow(const WindowDesc *desc, PlayerID player) : Window(desc, player)
+	SelectCompanyLiveryWindow(const WindowDesc *desc, CompanyID company) : Window(desc, company)
 	{
-		this->caption_color = player;
+		this->caption_color = company;
 		this->livery_class = LC_OTHER;
 		this->sel = 1;
-		this->LowerWidget(PLW_WIDGET_CLASS_GENERAL);
+		this->LowerWidget(SCLW_WIDGET_CLASS_GENERAL);
 		this->OnInvalidateData(_loaded_newgrf_features.has_2CC);
 		this->FindWindowPlacementAndResize(desc);
 	}
 
 	virtual void OnPaint()
 	{
-		const Player *p = GetPlayer((PlayerID)this->window_number);
+		const Company *c = GetCompany((CompanyID)this->window_number);
 		LiveryScheme scheme = LS_DEFAULT;
 		int y = 51;
 
 		/* Disable dropdown controls if no scheme is selected */
-		this->SetWidgetDisabledState(PLW_WIDGET_PRI_COL_DROPDOWN, this->sel == 0);
-		this->SetWidgetDisabledState(PLW_WIDGET_SEC_COL_DROPDOWN, this->sel == 0);
+		this->SetWidgetDisabledState(SCLW_WIDGET_PRI_COL_DROPDOWN, this->sel == 0);
+		this->SetWidgetDisabledState(SCLW_WIDGET_SEC_COL_DROPDOWN, this->sel == 0);
 
 		if (this->sel != 0) {
 			for (scheme = LS_BEGIN; scheme < LS_END; scheme++) {
@@ -398,8 +398,8 @@
 			if (scheme == LS_END) scheme = LS_DEFAULT;
 		}
 
-		SetDParam(0, STR_00D1_DARK_BLUE + p->livery[scheme].colour1);
-		SetDParam(1, STR_00D1_DARK_BLUE + p->livery[scheme].colour2);
+		SetDParam(0, STR_00D1_DARK_BLUE + c->livery[scheme].colour1);
+		SetDParam(1, STR_00D1_DARK_BLUE + c->livery[scheme].colour2);
 
 		this->DrawWidgets();
 
@@ -408,17 +408,17 @@
 				bool sel = HasBit(this->sel, scheme) != 0;
 
 				if (scheme != LS_DEFAULT) {
-					DrawSprite(p->livery[scheme].in_use ? SPR_BOX_CHECKED : SPR_BOX_EMPTY, PAL_NONE, 2, y);
+					DrawSprite(c->livery[scheme].in_use ? SPR_BOX_CHECKED : SPR_BOX_EMPTY, PAL_NONE, 2, y);
 				}
 
 				DrawString(15, y, STR_LIVERY_DEFAULT + scheme, sel ? TC_WHITE : TC_BLACK);
 
-				DrawSprite(SPR_SQUARE, GENERAL_SPRITE_COLOR(p->livery[scheme].colour1), 152, y);
-				DrawString(165, y, STR_00D1_DARK_BLUE + p->livery[scheme].colour1, sel ? TC_WHITE : TC_GOLD);
+				DrawSprite(SPR_SQUARE, GENERAL_SPRITE_COLOR(c->livery[scheme].colour1), 152, y);
+				DrawString(165, y, STR_00D1_DARK_BLUE + c->livery[scheme].colour1, sel ? TC_WHITE : TC_GOLD);
 
-				if (!this->IsWidgetHidden(PLW_WIDGET_SEC_COL_DROPDOWN)) {
-					DrawSprite(SPR_SQUARE, GENERAL_SPRITE_COLOR(p->livery[scheme].colour2), 277, y);
-					DrawString(290, y, STR_00D1_DARK_BLUE + p->livery[scheme].colour2, sel ? TC_WHITE : TC_GOLD);
+				if (!this->IsWidgetHidden(SCLW_WIDGET_SEC_COL_DROPDOWN)) {
+					DrawSprite(SPR_SQUARE, GENERAL_SPRITE_COLOR(c->livery[scheme].colour2), 277, y);
+					DrawString(290, y, STR_00D1_DARK_BLUE + c->livery[scheme].colour2, sel ? TC_WHITE : TC_GOLD);
 				}
 
 				y += 14;
@@ -439,17 +439,17 @@
 
 		switch (widget) {
 			/* Livery Class buttons */
-			case PLW_WIDGET_CLASS_GENERAL:
-			case PLW_WIDGET_CLASS_RAIL:
-			case PLW_WIDGET_CLASS_ROAD:
-			case PLW_WIDGET_CLASS_SHIP:
-			case PLW_WIDGET_CLASS_AIRCRAFT: {
+			case SCLW_WIDGET_CLASS_GENERAL:
+			case SCLW_WIDGET_CLASS_RAIL:
+			case SCLW_WIDGET_CLASS_ROAD:
+			case SCLW_WIDGET_CLASS_SHIP:
+			case SCLW_WIDGET_CLASS_AIRCRAFT: {
 				LiveryScheme scheme;
 
-				this->RaiseWidget(this->livery_class + PLW_WIDGET_CLASS_GENERAL);
-				this->livery_class = (LiveryClass)(widget - PLW_WIDGET_CLASS_GENERAL);
+				this->RaiseWidget(this->livery_class + SCLW_WIDGET_CLASS_GENERAL);
+				this->livery_class = (LiveryClass)(widget - SCLW_WIDGET_CLASS_GENERAL);
 				this->sel = 0;
-				this->LowerWidget(this->livery_class + PLW_WIDGET_CLASS_GENERAL);
+				this->LowerWidget(this->livery_class + SCLW_WIDGET_CLASS_GENERAL);
 
 				/* Select the first item in the list */
 				for (scheme = LS_DEFAULT; scheme < LS_END; scheme++) {
@@ -459,21 +459,21 @@
 					}
 				}
 				this->height = 49 + livery_height[this->livery_class] * 14;
-				this->widget[PLW_WIDGET_MATRIX].bottom = this->height - 1;
-				this->widget[PLW_WIDGET_MATRIX].data = livery_height[this->livery_class] << 8 | 1;
+				this->widget[SCLW_WIDGET_MATRIX].bottom = this->height - 1;
+				this->widget[SCLW_WIDGET_MATRIX].data = livery_height[this->livery_class] << 8 | 1;
 				MarkWholeScreenDirty();
 				break;
 			}
 
-			case PLW_WIDGET_PRI_COL_DROPDOWN: /* First colour dropdown */
-				ShowColourDropDownMenu(PLW_WIDGET_PRI_COL_DROPDOWN);
+			case SCLW_WIDGET_PRI_COL_DROPDOWN: /* First colour dropdown */
+				ShowColourDropDownMenu(SCLW_WIDGET_PRI_COL_DROPDOWN);
 				break;
 
-			case PLW_WIDGET_SEC_COL_DROPDOWN: /* Second colour dropdown */
-				ShowColourDropDownMenu(PLW_WIDGET_SEC_COL_DROPDOWN);
+			case SCLW_WIDGET_SEC_COL_DROPDOWN: /* Second colour dropdown */
+				ShowColourDropDownMenu(SCLW_WIDGET_SEC_COL_DROPDOWN);
 				break;
 
-			case PLW_WIDGET_MATRIX: {
+			case SCLW_WIDGET_MATRIX: {
 				LiveryScheme scheme;
 				LiveryScheme j = (LiveryScheme)((pt.y - 48) / 14);
 
@@ -485,7 +485,7 @@
 
 				/* If clicking on the left edge, toggle using the livery */
 				if (pt.x < 10) {
-					DoCommandP(0, j | (2 << 8), !GetPlayer((PlayerID)this->window_number)->livery[j].in_use, NULL, CMD_SET_PLAYER_COLOR);
+					DoCommandP(0, j | (2 << 8), !GetCompany((CompanyID)this->window_number)->livery[j].in_use, NULL, CMD_SET_COMPANY_COLOR);
 				}
 
 				if (_ctrl_pressed) {
@@ -503,7 +503,7 @@
 	{
 		for (LiveryScheme scheme = LS_DEFAULT; scheme < LS_END; scheme++) {
 			if (HasBit(this->sel, scheme)) {
-				DoCommandP(0, scheme | (widget == PLW_WIDGET_PRI_COL_DROPDOWN ? 0 : 256), index, NULL, CMD_SET_PLAYER_COLOR);
+				DoCommandP(0, scheme | (widget == SCLW_WIDGET_PRI_COL_DROPDOWN ? 0 : 256), index, NULL, CMD_SET_COMPANY_COLOR);
 			}
 		}
 	}
@@ -516,16 +516,16 @@
 
 		has2cc = !!data;
 
-		int r = this->widget[has2cc ? PLW_WIDGET_SEC_COL_DROPDOWN : PLW_WIDGET_PRI_COL_DROPDOWN].right;
-		this->SetWidgetHiddenState(PLW_WIDGET_SEC_COL_DROPDOWN, !has2cc);
-		this->widget[PLW_WIDGET_CAPTION].right = r;
-		this->widget[PLW_WIDGET_SPACER_CLASS].right = r;
-		this->widget[PLW_WIDGET_MATRIX].right = r;
+		int r = this->widget[has2cc ? SCLW_WIDGET_SEC_COL_DROPDOWN : SCLW_WIDGET_PRI_COL_DROPDOWN].right;
+		this->SetWidgetHiddenState(SCLW_WIDGET_SEC_COL_DROPDOWN, !has2cc);
+		this->widget[SCLW_WIDGET_CAPTION].right = r;
+		this->widget[SCLW_WIDGET_SPACER_CLASS].right = r;
+		this->widget[SCLW_WIDGET_MATRIX].right = r;
 		this->width = r + 1;
 	}
 };
 
-static const Widget _select_player_livery_widgets[] = {
+static const Widget _select_company_livery_widgets[] = {
 { WWT_CLOSEBOX, RESIZE_NONE,  COLOUR_GREY,   0,  10,   0,  13, STR_00C5,                  STR_018B_CLOSE_WINDOW },
 {  WWT_CAPTION, RESIZE_NONE,  COLOUR_GREY,  11, 399,   0,  13, STR_7007_NEW_COLOR_SCHEME, STR_018C_WINDOW_TITLE_DRAG_THIS },
 {   WWT_IMGBTN, RESIZE_NONE,  COLOUR_GREY,   0,  21,  14,  35, SPR_IMG_COMPANY_GENERAL,   STR_LIVERY_GENERAL_TIP },
@@ -541,34 +541,34 @@
 { WIDGETS_END },
 };
 
-static const WindowDesc _select_player_livery_desc = {
+static const WindowDesc _select_company_livery_desc = {
 	WDP_AUTO, WDP_AUTO, 400, 49 + 1 * 14, 400, 49 + 1 * 14,
-	WC_PLAYER_COLOR, WC_NONE,
+	WC_COMPANY_COLOR, WC_NONE,
 	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET,
-	_select_player_livery_widgets,
+	_select_company_livery_widgets,
 };
 
 /**
- * Draws the face of a player.
- * @param pf    the player's face
+ * Draws the face of a company manager's face.
+ * @param cmf   the company manager's face
  * @param color the (background) color of the gradient
  * @param x     x-position to draw the face
  * @param y     y-position to draw the face
  */
-void DrawPlayerFace(PlayerFace pf, int color, int x, int y)
+void DrawCompanyManagerFace(CompanyManagerFace cmf, int color, int x, int y)
 {
-	GenderEthnicity ge = (GenderEthnicity)GetPlayerFaceBits(pf, PFV_GEN_ETHN, GE_WM);
+	GenderEthnicity ge = (GenderEthnicity)GetCompanyManagerFaceBits(cmf, CMFV_GEN_ETHN, GE_WM);
 
-	bool has_moustache   = !HasBit(ge, GENDER_FEMALE) && GetPlayerFaceBits(pf, PFV_HAS_MOUSTACHE,   ge) != 0;
-	bool has_tie_earring = !HasBit(ge, GENDER_FEMALE) || GetPlayerFaceBits(pf, PFV_HAS_TIE_EARRING, ge) != 0;
-	bool has_glasses     = GetPlayerFaceBits(pf, PFV_HAS_GLASSES, ge) != 0;
+	bool has_moustache   = !HasBit(ge, GENDER_FEMALE) && GetCompanyManagerFaceBits(cmf, CMFV_HAS_MOUSTACHE,   ge) != 0;
+	bool has_tie_earring = !HasBit(ge, GENDER_FEMALE) || GetCompanyManagerFaceBits(cmf, CMFV_HAS_TIE_EARRING, ge) != 0;
+	bool has_glasses     = GetCompanyManagerFaceBits(cmf, CMFV_HAS_GLASSES, ge) != 0;
 	SpriteID pal;
 
 	/* Modify eye colour palette only if 2 or more valid values exist */
-	if (_pf_info[PFV_EYE_COLOUR].valid_values[ge] < 2) {
+	if (_cmf_info[CMFV_EYE_COLOUR].valid_values[ge] < 2) {
 		pal = PAL_NONE;
 	} else {
-		switch (GetPlayerFaceBits(pf, PFV_EYE_COLOUR, ge)) {
+		switch (GetCompanyManagerFaceBits(cmf, CMFV_EYE_COLOUR, ge)) {
 			default: NOT_REACHED();
 			case 0: pal = PALETTE_TO_BROWN; break;
 			case 1: pal = PALETTE_TO_BLUE;  break;
@@ -579,90 +579,90 @@
 	/* Draw the gradient (background) */
 	DrawSprite(SPR_GRADIENT, GENERAL_SPRITE_COLOR(color), x, y);
 
-	for (PlayerFaceVariable pfv = PFV_CHEEKS; pfv < PFV_END; pfv++) {
-		switch (pfv) {
-			case PFV_MOUSTACHE:   if (!has_moustache)   continue; break;
-			case PFV_LIPS:        /* FALL THROUGH */
-			case PFV_NOSE:        if (has_moustache)    continue; break;
-			case PFV_TIE_EARRING: if (!has_tie_earring) continue; break;
-			case PFV_GLASSES:     if (!has_glasses)     continue; break;
+	for (CompanyManagerFaceVariable cmfv = CMFV_CHEEKS; cmfv < CMFV_END; cmfv++) {
+		switch (cmfv) {
+			case CMFV_MOUSTACHE:   if (!has_moustache)   continue; break;
+			case CMFV_LIPS:        /* FALL THROUGH */
+			case CMFV_NOSE:        if (has_moustache)    continue; break;
+			case CMFV_TIE_EARRING: if (!has_tie_earring) continue; break;
+			case CMFV_GLASSES:     if (!has_glasses)     continue; break;
 			default: break;
 		}
-		DrawSprite(GetPlayerFaceSprite(pf, pfv, ge), (pfv == PFV_EYEBROWS) ? pal : PAL_NONE, x, y);
+		DrawSprite(GetCompanyManagerFaceSprite(cmf, cmfv, ge), (cmfv == CMFV_EYEBROWS) ? pal : PAL_NONE, x, y);
 	}
 }
 
-/** Widget description for the normal/simple player face selection dialog */
-static const Widget _select_player_face_widgets[] = {
-{   WWT_CLOSEBOX,   RESIZE_NONE,  COLOUR_GREY,     0,    10,     0,    13, STR_00C5,                STR_018B_CLOSE_WINDOW},              // PFW_WIDGET_CLOSEBOX
-{    WWT_CAPTION,   RESIZE_NONE,  COLOUR_GREY,    11,   174,     0,    13, STR_7043_FACE_SELECTION, STR_018C_WINDOW_TITLE_DRAG_THIS},    // PFW_WIDGET_CAPTION
-{     WWT_IMGBTN,   RESIZE_NONE,  COLOUR_GREY,   175,   189,     0,    13, SPR_LARGE_SMALL_WINDOW,  STR_FACE_ADVANCED_TIP},              // PFW_WIDGET_TOGGLE_LARGE_SMALL
-{      WWT_PANEL,   RESIZE_NONE,  COLOUR_GREY,     0,   189,    14,   150, 0x0,                     STR_NULL},                           // PFW_WIDGET_SELECT_FACE
-{ WWT_PUSHTXTBTN,   RESIZE_NONE,  COLOUR_GREY,     0,    94,   151,   162, STR_012E_CANCEL,         STR_7047_CANCEL_NEW_FACE_SELECTION}, // PFW_WIDGET_CANCEL
-{ WWT_PUSHTXTBTN,   RESIZE_NONE,  COLOUR_GREY,    95,   189,   151,   162, STR_012F_OK,             STR_7048_ACCEPT_NEW_FACE_SELECTION}, // PFW_WIDGET_ACCEPT
-{    WWT_TEXTBTN,   RESIZE_NONE,  COLOUR_GREY,    95,   187,    75,    86, STR_7044_MALE,           STR_7049_SELECT_MALE_FACES},         // PFW_WIDGET_MALE
-{    WWT_TEXTBTN,   RESIZE_NONE,  COLOUR_GREY,    95,   187,    87,    98, STR_7045_FEMALE,         STR_704A_SELECT_FEMALE_FACES},       // PFW_WIDGET_FEMALE
-{ WWT_PUSHTXTBTN,   RESIZE_NONE,  COLOUR_GREY,     2,    93,   137,   148, STR_7046_NEW_FACE,       STR_704B_GENERATE_RANDOM_NEW_FACE},  // PFW_WIDGET_RANDOM_NEW_FACE
-{ WWT_PUSHTXTBTN,   RESIZE_NONE,  COLOUR_GREY,    95,   187,    16,    27, STR_FACE_ADVANCED,       STR_FACE_ADVANCED_TIP},              // PFW_WIDGET_TOGGLE_LARGE_SMALL_BUTTON
+/** Widget description for the normal/simple company manager face selection dialog */
+static const Widget _select_company_manager_face_widgets[] = {
+{   WWT_CLOSEBOX,   RESIZE_NONE,  COLOUR_GREY,     0,    10,     0,    13, STR_00C5,                STR_018B_CLOSE_WINDOW},              // SCMFW_WIDGET_CLOSEBOX
+{    WWT_CAPTION,   RESIZE_NONE,  COLOUR_GREY,    11,   174,     0,    13, STR_7043_FACE_SELECTION, STR_018C_WINDOW_TITLE_DRAG_THIS},    // SCMFW_WIDGET_CAPTION
+{     WWT_IMGBTN,   RESIZE_NONE,  COLOUR_GREY,   175,   189,     0,    13, SPR_LARGE_SMALL_WINDOW,  STR_FACE_ADVANCED_TIP},              // SCMFW_WIDGET_TOGGLE_LARGE_SMALL
+{      WWT_PANEL,   RESIZE_NONE,  COLOUR_GREY,     0,   189,    14,   150, 0x0,                     STR_NULL},                           // SCMFW_WIDGET_SELECT_FACE
+{ WWT_PUSHTXTBTN,   RESIZE_NONE,  COLOUR_GREY,     0,    94,   151,   162, STR_012E_CANCEL,         STR_7047_CANCEL_NEW_FACE_SELECTION}, // SCMFW_WIDGET_CANCEL
+{ WWT_PUSHTXTBTN,   RESIZE_NONE,  COLOUR_GREY,    95,   189,   151,   162, STR_012F_OK,             STR_7048_ACCEPT_NEW_FACE_SELECTION}, // SCMFW_WIDGET_ACCEPT
+{    WWT_TEXTBTN,   RESIZE_NONE,  COLOUR_GREY,    95,   187,    75,    86, STR_7044_MALE,           STR_7049_SELECT_MALE_FACES},         // SCMFW_WIDGET_MALE
+{    WWT_TEXTBTN,   RESIZE_NONE,  COLOUR_GREY,    95,   187,    87,    98, STR_7045_FEMALE,         STR_704A_SELECT_FEMALE_FACES},       // SCMFW_WIDGET_FEMALE
+{ WWT_PUSHTXTBTN,   RESIZE_NONE,  COLOUR_GREY,     2,    93,   137,   148, STR_7046_NEW_FACE,       STR_704B_GENERATE_RANDOM_NEW_FACE},  // SCMFW_WIDGET_RANDOM_NEW_FACE
+{ WWT_PUSHTXTBTN,   RESIZE_NONE,  COLOUR_GREY,    95,   187,    16,    27, STR_FACE_ADVANCED,       STR_FACE_ADVANCED_TIP},              // SCMFW_WIDGET_TOGGLE_LARGE_SMALL_BUTTON
 {   WIDGETS_END},
 };
 
-/** Widget description for the advanced player face selection dialog */
-static const Widget _select_player_face_adv_widgets[] = {
-{   WWT_CLOSEBOX,   RESIZE_NONE,  COLOUR_GREY,     0,    10,     0,    13, STR_00C5,                STR_018B_CLOSE_WINDOW},              // PFW_WIDGET_CLOSEBOX
-{    WWT_CAPTION,   RESIZE_NONE,  COLOUR_GREY,    11,   204,     0,    13, STR_7043_FACE_SELECTION, STR_018C_WINDOW_TITLE_DRAG_THIS},    // PFW_WIDGET_CAPTION
-{     WWT_IMGBTN,   RESIZE_NONE,  COLOUR_GREY,   205,   219,     0,    13, SPR_LARGE_SMALL_WINDOW,  STR_FACE_SIMPLE_TIP},                // PFW_WIDGET_TOGGLE_LARGE_SMALL
-{      WWT_PANEL,   RESIZE_NONE,  COLOUR_GREY,     0,   219,    14,   207, 0x0,                     STR_NULL},                           // PFW_WIDGET_SELECT_FACE
-{ WWT_PUSHTXTBTN,   RESIZE_NONE,  COLOUR_GREY,     0,    94,   208,   219, STR_012E_CANCEL,         STR_7047_CANCEL_NEW_FACE_SELECTION}, // PFW_WIDGET_CANCEL
-{ WWT_PUSHTXTBTN,   RESIZE_NONE,  COLOUR_GREY,    95,   219,   208,   219, STR_012F_OK,             STR_7048_ACCEPT_NEW_FACE_SELECTION}, // PFW_WIDGET_ACCEPT
-{    WWT_TEXTBTN,   RESIZE_NONE,  COLOUR_GREY,    96,   156,    32,    43, STR_7044_MALE,           STR_7049_SELECT_MALE_FACES},         // PFW_WIDGET_MALE
-{    WWT_TEXTBTN,   RESIZE_NONE,  COLOUR_GREY,   157,   217,    32,    43, STR_7045_FEMALE,         STR_704A_SELECT_FEMALE_FACES},       // PFW_WIDGET_FEMALE
-{ WWT_PUSHTXTBTN,   RESIZE_NONE,  COLOUR_GREY,     2,    93,   137,   148, STR_RANDOM,              STR_704B_GENERATE_RANDOM_NEW_FACE},  // PFW_WIDGET_RANDOM_NEW_FACE
-{ WWT_PUSHTXTBTN,   RESIZE_NONE,  COLOUR_GREY,    95,   217,    16,    27, STR_FACE_SIMPLE,         STR_FACE_SIMPLE_TIP},                // PFW_WIDGET_TOGGLE_LARGE_SMALL_BUTTON
-{ WWT_PUSHTXTBTN,   RESIZE_NONE,  COLOUR_GREY,     2,    93,   158,   169, STR_FACE_LOAD,           STR_FACE_LOAD_TIP},                  // PFW_WIDGET_LOAD
-{ WWT_PUSHTXTBTN,   RESIZE_NONE,  COLOUR_GREY,     2,    93,   170,   181, STR_FACE_FACECODE,       STR_FACE_FACECODE_TIP},              // PFW_WIDGET_FACECODE
-{ WWT_PUSHTXTBTN,   RESIZE_NONE,  COLOUR_GREY,     2,    93,   182,   193, STR_FACE_SAVE,           STR_FACE_SAVE_TIP},                  // PFW_WIDGET_SAVE
-{    WWT_TEXTBTN,   RESIZE_NONE,  COLOUR_GREY,    96,   156,    46,    57, STR_FACE_EUROPEAN,       STR_FACE_SELECT_EUROPEAN},           // PFW_WIDGET_ETHNICITY_EUR
-{    WWT_TEXTBTN,   RESIZE_NONE,  COLOUR_GREY,   157,   217,    46,    57, STR_FACE_AFRICAN,        STR_FACE_SELECT_AFRICAN},            // PFW_WIDGET_ETHNICITY_AFR
-{ WWT_PUSHTXTBTN,   RESIZE_NONE,  COLOUR_GREY,   175,   217,    60,    71, STR_EMPTY,               STR_FACE_MOUSTACHE_EARRING_TIP},     // PFW_WIDGET_HAS_MOUSTACHE_EARRING
-{ WWT_PUSHTXTBTN,   RESIZE_NONE,  COLOUR_GREY,   175,   217,    72,    83, STR_EMPTY,               STR_FACE_GLASSES_TIP},               // PFW_WIDGET_HAS_GLASSES
-{ WWT_PUSHIMGBTN,   RESIZE_NONE,  COLOUR_GREY,    175,  183,   110,   121, SPR_ARROW_LEFT,          STR_FACE_EYECOLOUR_TIP},             // PFW_WIDGET_EYECOLOUR_L
-{ WWT_PUSHTXTBTN,   RESIZE_NONE,  COLOUR_GREY,    184,  208,   110,   121, STR_EMPTY,               STR_FACE_EYECOLOUR_TIP},             // PFW_WIDGET_EYECOLOUR
-{ WWT_PUSHIMGBTN,   RESIZE_NONE,  COLOUR_GREY,    209,  217,   110,   121, SPR_ARROW_RIGHT,         STR_FACE_EYECOLOUR_TIP},             // PFW_WIDGET_EYECOLOUR_R
-{ WWT_PUSHIMGBTN,   RESIZE_NONE,  COLOUR_GREY,    175,  183,   158,   169, SPR_ARROW_LEFT,          STR_FACE_CHIN_TIP},                  // PFW_WIDGET_CHIN_L
-{ WWT_PUSHTXTBTN,   RESIZE_NONE,  COLOUR_GREY,    184,  208,   158,   169, STR_EMPTY,               STR_FACE_CHIN_TIP},                  // PFW_WIDGET_CHIN
-{ WWT_PUSHIMGBTN,   RESIZE_NONE,  COLOUR_GREY,    209,  217,   158,   169, SPR_ARROW_RIGHT,         STR_FACE_CHIN_TIP},                  // PFW_WIDGET_CHIN_R
-{ WWT_PUSHIMGBTN,   RESIZE_NONE,  COLOUR_GREY,    175,  183,    98,   109, SPR_ARROW_LEFT,          STR_FACE_EYEBROWS_TIP},              // PFW_WIDGET_EYEBROWS_L
-{ WWT_PUSHTXTBTN,   RESIZE_NONE,  COLOUR_GREY,    184,  208,    98,   109, STR_EMPTY,               STR_FACE_EYEBROWS_TIP},              // PFW_WIDGET_EYEBROWS
-{ WWT_PUSHIMGBTN,   RESIZE_NONE,  COLOUR_GREY,    209,  217,    98,   109, SPR_ARROW_RIGHT,         STR_FACE_EYEBROWS_TIP},              // PFW_WIDGET_EYEBROWS_R
-{ WWT_PUSHIMGBTN,   RESIZE_NONE,  COLOUR_GREY,    175,  183,   146,   157, SPR_ARROW_LEFT,          STR_FACE_LIPS_MOUSTACHE_TIP},        // PFW_WIDGET_LIPS_MOUSTACHE_L
-{ WWT_PUSHTXTBTN,   RESIZE_NONE,  COLOUR_GREY,    184,  208,   146,   157, STR_EMPTY,               STR_FACE_LIPS_MOUSTACHE_TIP},        // PFW_WIDGET_LIPS_MOUSTACHE
-{ WWT_PUSHIMGBTN,   RESIZE_NONE,  COLOUR_GREY,    209,  217,   146,   157, SPR_ARROW_RIGHT,         STR_FACE_LIPS_MOUSTACHE_TIP},        // PFW_WIDGET_LIPS_MOUSTACHE_R
-{ WWT_PUSHIMGBTN,   RESIZE_NONE,  COLOUR_GREY,    175,  183,   134,   145, SPR_ARROW_LEFT,          STR_FACE_NOSE_TIP},                  // PFW_WIDGET_NOSE_L
-{ WWT_PUSHTXTBTN,   RESIZE_NONE,  COLOUR_GREY,    184,  208,   134,   145, STR_EMPTY,               STR_FACE_NOSE_TIP},                  // PFW_WIDGET_NOSE
-{ WWT_PUSHIMGBTN,   RESIZE_NONE,  COLOUR_GREY,    209,  217,   134,   145, SPR_ARROW_RIGHT,         STR_FACE_NOSE_TIP},                  // PFW_WIDGET_NOSE_R
-{ WWT_PUSHIMGBTN,   RESIZE_NONE,  COLOUR_GREY,    175,  183,    86,    97, SPR_ARROW_LEFT,          STR_FACE_HAIR_TIP},                  // PFW_WIDGET_HAIR_L
-{ WWT_PUSHTXTBTN,   RESIZE_NONE,  COLOUR_GREY,    184,  208,    86,    97, STR_EMPTY,               STR_FACE_HAIR_TIP},                  // PFW_WIDGET_HAIR
-{ WWT_PUSHIMGBTN,   RESIZE_NONE,  COLOUR_GREY,    209,  217,    86,    97, SPR_ARROW_RIGHT,         STR_FACE_HAIR_TIP},                  // PFW_WIDGET_HAIR_R
-{ WWT_PUSHIMGBTN,   RESIZE_NONE,  COLOUR_GREY,    175,  183,   170,   181, SPR_ARROW_LEFT,          STR_FACE_JACKET_TIP},                // PFW_WIDGET_JACKET_L
-{ WWT_PUSHTXTBTN,   RESIZE_NONE,  COLOUR_GREY,    184,  208,   170,   181, STR_EMPTY,               STR_FACE_JACKET_TIP},                // PFW_WIDGET_JACKET
-{ WWT_PUSHIMGBTN,   RESIZE_NONE,  COLOUR_GREY,    209,  217,   170,   181, SPR_ARROW_RIGHT,         STR_FACE_JACKET_TIP},                // PFW_WIDGET_JACKET_R
-{ WWT_PUSHIMGBTN,   RESIZE_NONE,  COLOUR_GREY,    175,  183,   182,   193, SPR_ARROW_LEFT,          STR_FACE_COLLAR_TIP},                // PFW_WIDGET_COLLAR_L
-{ WWT_PUSHTXTBTN,   RESIZE_NONE,  COLOUR_GREY,    184,  208,   182,   193, STR_EMPTY,               STR_FACE_COLLAR_TIP},                // PFW_WIDGET_COLLAR
-{ WWT_PUSHIMGBTN,   RESIZE_NONE,  COLOUR_GREY,    209,  217,   182,   193, SPR_ARROW_RIGHT,         STR_FACE_COLLAR_TIP},                // PFW_WIDGET_COLLAR_R
-{ WWT_PUSHIMGBTN,   RESIZE_NONE,  COLOUR_GREY,    175,  183,   194,   205, SPR_ARROW_LEFT,          STR_FACE_TIE_EARRING_TIP},           // PFW_WIDGET_TIE_EARRING_L
-{ WWT_PUSHTXTBTN,   RESIZE_NONE,  COLOUR_GREY,    184,  208,   194,   205, STR_EMPTY,               STR_FACE_TIE_EARRING_TIP},           // PFW_WIDGET_TIE_EARRING
-{ WWT_PUSHIMGBTN,   RESIZE_NONE,  COLOUR_GREY,    209,  217,   194,   205, SPR_ARROW_RIGHT,         STR_FACE_TIE_EARRING_TIP},           // PFW_WIDGET_TIE_EARRING_R
-{ WWT_PUSHIMGBTN,   RESIZE_NONE,  COLOUR_GREY,    175,  183,   122,   133, SPR_ARROW_LEFT,          STR_FACE_GLASSES_TIP_2},             // PFW_WIDGET_GLASSES_L
-{ WWT_PUSHTXTBTN,   RESIZE_NONE,  COLOUR_GREY,    184,  208,   122,   133, STR_EMPTY,               STR_FACE_GLASSES_TIP_2},             // PFW_WIDGET_GLASSES
-{ WWT_PUSHIMGBTN,   RESIZE_NONE,  COLOUR_GREY,    209,  217,   122,   133, SPR_ARROW_RIGHT,         STR_FACE_GLASSES_TIP_2},             // PFW_WIDGET_GLASSES_R
+/** Widget description for the advanced company manager face selection dialog */
+static const Widget _select_company_manager_face_adv_widgets[] = {
+{   WWT_CLOSEBOX,   RESIZE_NONE,  COLOUR_GREY,     0,    10,     0,    13, STR_00C5,                STR_018B_CLOSE_WINDOW},              // SCMFW_WIDGET_CLOSEBOX
+{    WWT_CAPTION,   RESIZE_NONE,  COLOUR_GREY,    11,   204,     0,    13, STR_7043_FACE_SELECTION, STR_018C_WINDOW_TITLE_DRAG_THIS},    // SCMFW_WIDGET_CAPTION
+{     WWT_IMGBTN,   RESIZE_NONE,  COLOUR_GREY,   205,   219,     0,    13, SPR_LARGE_SMALL_WINDOW,  STR_FACE_SIMPLE_TIP},                // SCMFW_WIDGET_TOGGLE_LARGE_SMALL
+{      WWT_PANEL,   RESIZE_NONE,  COLOUR_GREY,     0,   219,    14,   207, 0x0,                     STR_NULL},                           // SCMFW_WIDGET_SELECT_FACE
+{ WWT_PUSHTXTBTN,   RESIZE_NONE,  COLOUR_GREY,     0,    94,   208,   219, STR_012E_CANCEL,         STR_7047_CANCEL_NEW_FACE_SELECTION}, // SCMFW_WIDGET_CANCEL
+{ WWT_PUSHTXTBTN,   RESIZE_NONE,  COLOUR_GREY,    95,   219,   208,   219, STR_012F_OK,             STR_7048_ACCEPT_NEW_FACE_SELECTION}, // SCMFW_WIDGET_ACCEPT
+{    WWT_TEXTBTN,   RESIZE_NONE,  COLOUR_GREY,    96,   156,    32,    43, STR_7044_MALE,           STR_7049_SELECT_MALE_FACES},         // SCMFW_WIDGET_MALE
+{    WWT_TEXTBTN,   RESIZE_NONE,  COLOUR_GREY,   157,   217,    32,    43, STR_7045_FEMALE,         STR_704A_SELECT_FEMALE_FACES},       // SCMFW_WIDGET_FEMALE
+{ WWT_PUSHTXTBTN,   RESIZE_NONE,  COLOUR_GREY,     2,    93,   137,   148, STR_RANDOM,              STR_704B_GENERATE_RANDOM_NEW_FACE},  // SCMFW_WIDGET_RANDOM_NEW_FACE
+{ WWT_PUSHTXTBTN,   RESIZE_NONE,  COLOUR_GREY,    95,   217,    16,    27, STR_FACE_SIMPLE,         STR_FACE_SIMPLE_TIP},                // SCMFW_WIDGET_TOGGLE_LARGE_SMALL_BUTTON
+{ WWT_PUSHTXTBTN,   RESIZE_NONE,  COLOUR_GREY,     2,    93,   158,   169, STR_FACE_LOAD,           STR_FACE_LOAD_TIP},                  // SCMFW_WIDGET_LOAD
+{ WWT_PUSHTXTBTN,   RESIZE_NONE,  COLOUR_GREY,     2,    93,   170,   181, STR_FACE_FACECODE,       STR_FACE_FACECODE_TIP},              // SCMFW_WIDGET_FACECODE
+{ WWT_PUSHTXTBTN,   RESIZE_NONE,  COLOUR_GREY,     2,    93,   182,   193, STR_FACE_SAVE,           STR_FACE_SAVE_TIP},                  // SCMFW_WIDGET_SAVE
+{    WWT_TEXTBTN,   RESIZE_NONE,  COLOUR_GREY,    96,   156,    46,    57, STR_FACE_EUROPEAN,       STR_FACE_SELECT_EUROPEAN},           // SCMFW_WIDGET_ETHNICITY_EUR
+{    WWT_TEXTBTN,   RESIZE_NONE,  COLOUR_GREY,   157,   217,    46,    57, STR_FACE_AFRICAN,        STR_FACE_SELECT_AFRICAN},            // SCMFW_WIDGET_ETHNICITY_AFR
+{ WWT_PUSHTXTBTN,   RESIZE_NONE,  COLOUR_GREY,   175,   217,    60,    71, STR_EMPTY,               STR_FACE_MOUSTACHE_EARRING_TIP},     // SCMFW_WIDGET_HAS_MOUSTACHE_EARRING
+{ WWT_PUSHTXTBTN,   RESIZE_NONE,  COLOUR_GREY,   175,   217,    72,    83, STR_EMPTY,               STR_FACE_GLASSES_TIP},               // SCMFW_WIDGET_HAS_GLASSES
+{ WWT_PUSHIMGBTN,   RESIZE_NONE,  COLOUR_GREY,    175,  183,   110,   121, SPR_ARROW_LEFT,          STR_FACE_EYECOLOUR_TIP},             // SCMFW_WIDGET_EYECOLOUR_L
+{ WWT_PUSHTXTBTN,   RESIZE_NONE,  COLOUR_GREY,    184,  208,   110,   121, STR_EMPTY,               STR_FACE_EYECOLOUR_TIP},             // SCMFW_WIDGET_EYECOLOUR
+{ WWT_PUSHIMGBTN,   RESIZE_NONE,  COLOUR_GREY,    209,  217,   110,   121, SPR_ARROW_RIGHT,         STR_FACE_EYECOLOUR_TIP},             // SCMFW_WIDGET_EYECOLOUR_R
+{ WWT_PUSHIMGBTN,   RESIZE_NONE,  COLOUR_GREY,    175,  183,   158,   169, SPR_ARROW_LEFT,          STR_FACE_CHIN_TIP},                  // SCMFW_WIDGET_CHIN_L
+{ WWT_PUSHTXTBTN,   RESIZE_NONE,  COLOUR_GREY,    184,  208,   158,   169, STR_EMPTY,               STR_FACE_CHIN_TIP},                  // SCMFW_WIDGET_CHIN
+{ WWT_PUSHIMGBTN,   RESIZE_NONE,  COLOUR_GREY,    209,  217,   158,   169, SPR_ARROW_RIGHT,         STR_FACE_CHIN_TIP},                  // SCMFW_WIDGET_CHIN_R
+{ WWT_PUSHIMGBTN,   RESIZE_NONE,  COLOUR_GREY,    175,  183,    98,   109, SPR_ARROW_LEFT,          STR_FACE_EYEBROWS_TIP},              // SCMFW_WIDGET_EYEBROWS_L
+{ WWT_PUSHTXTBTN,   RESIZE_NONE,  COLOUR_GREY,    184,  208,    98,   109, STR_EMPTY,               STR_FACE_EYEBROWS_TIP},              // SCMFW_WIDGET_EYEBROWS
+{ WWT_PUSHIMGBTN,   RESIZE_NONE,  COLOUR_GREY,    209,  217,    98,   109, SPR_ARROW_RIGHT,         STR_FACE_EYEBROWS_TIP},              // SCMFW_WIDGET_EYEBROWS_R
+{ WWT_PUSHIMGBTN,   RESIZE_NONE,  COLOUR_GREY,    175,  183,   146,   157, SPR_ARROW_LEFT,          STR_FACE_LIPS_MOUSTACHE_TIP},        // SCMFW_WIDGET_LIPS_MOUSTACHE_L
+{ WWT_PUSHTXTBTN,   RESIZE_NONE,  COLOUR_GREY,    184,  208,   146,   157, STR_EMPTY,               STR_FACE_LIPS_MOUSTACHE_TIP},        // SCMFW_WIDGET_LIPS_MOUSTACHE
+{ WWT_PUSHIMGBTN,   RESIZE_NONE,  COLOUR_GREY,    209,  217,   146,   157, SPR_ARROW_RIGHT,         STR_FACE_LIPS_MOUSTACHE_TIP},        // SCMFW_WIDGET_LIPS_MOUSTACHE_R
+{ WWT_PUSHIMGBTN,   RESIZE_NONE,  COLOUR_GREY,    175,  183,   134,   145, SPR_ARROW_LEFT,          STR_FACE_NOSE_TIP},                  // SCMFW_WIDGET_NOSE_L
+{ WWT_PUSHTXTBTN,   RESIZE_NONE,  COLOUR_GREY,    184,  208,   134,   145, STR_EMPTY,               STR_FACE_NOSE_TIP},                  // SCMFW_WIDGET_NOSE
+{ WWT_PUSHIMGBTN,   RESIZE_NONE,  COLOUR_GREY,    209,  217,   134,   145, SPR_ARROW_RIGHT,         STR_FACE_NOSE_TIP},                  // SCMFW_WIDGET_NOSE_R
+{ WWT_PUSHIMGBTN,   RESIZE_NONE,  COLOUR_GREY,    175,  183,    86,    97, SPR_ARROW_LEFT,          STR_FACE_HAIR_TIP},                  // SCMFW_WIDGET_HAIR_L
+{ WWT_PUSHTXTBTN,   RESIZE_NONE,  COLOUR_GREY,    184,  208,    86,    97, STR_EMPTY,               STR_FACE_HAIR_TIP},                  // SCMFW_WIDGET_HAIR
+{ WWT_PUSHIMGBTN,   RESIZE_NONE,  COLOUR_GREY,    209,  217,    86,    97, SPR_ARROW_RIGHT,         STR_FACE_HAIR_TIP},                  // SCMFW_WIDGET_HAIR_R
+{ WWT_PUSHIMGBTN,   RESIZE_NONE,  COLOUR_GREY,    175,  183,   170,   181, SPR_ARROW_LEFT,          STR_FACE_JACKET_TIP},                // SCMFW_WIDGET_JACKET_L
+{ WWT_PUSHTXTBTN,   RESIZE_NONE,  COLOUR_GREY,    184,  208,   170,   181, STR_EMPTY,               STR_FACE_JACKET_TIP},                // SCMFW_WIDGET_JACKET
+{ WWT_PUSHIMGBTN,   RESIZE_NONE,  COLOUR_GREY,    209,  217,   170,   181, SPR_ARROW_RIGHT,         STR_FACE_JACKET_TIP},                // SCMFW_WIDGET_JACKET_R
+{ WWT_PUSHIMGBTN,   RESIZE_NONE,  COLOUR_GREY,    175,  183,   182,   193, SPR_ARROW_LEFT,          STR_FACE_COLLAR_TIP},                // SCMFW_WIDGET_COLLAR_L
+{ WWT_PUSHTXTBTN,   RESIZE_NONE,  COLOUR_GREY,    184,  208,   182,   193, STR_EMPTY,               STR_FACE_COLLAR_TIP},                // SCMFW_WIDGET_COLLAR
+{ WWT_PUSHIMGBTN,   RESIZE_NONE,  COLOUR_GREY,    209,  217,   182,   193, SPR_ARROW_RIGHT,         STR_FACE_COLLAR_TIP},                // SCMFW_WIDGET_COLLAR_R
+{ WWT_PUSHIMGBTN,   RESIZE_NONE,  COLOUR_GREY,    175,  183,   194,   205, SPR_ARROW_LEFT,          STR_FACE_TIE_EARRING_TIP},           // SCMFW_WIDGET_TIE_EARRING_L
+{ WWT_PUSHTXTBTN,   RESIZE_NONE,  COLOUR_GREY,    184,  208,   194,   205, STR_EMPTY,               STR_FACE_TIE_EARRING_TIP},           // SCMFW_WIDGET_TIE_EARRING
+{ WWT_PUSHIMGBTN,   RESIZE_NONE,  COLOUR_GREY,    209,  217,   194,   205, SPR_ARROW_RIGHT,         STR_FACE_TIE_EARRING_TIP},           // SCMFW_WIDGET_TIE_EARRING_R
+{ WWT_PUSHIMGBTN,   RESIZE_NONE,  COLOUR_GREY,    175,  183,   122,   133, SPR_ARROW_LEFT,          STR_FACE_GLASSES_TIP_2},             // SCMFW_WIDGET_GLASSES_L
+{ WWT_PUSHTXTBTN,   RESIZE_NONE,  COLOUR_GREY,    184,  208,   122,   133, STR_EMPTY,               STR_FACE_GLASSES_TIP_2},             // SCMFW_WIDGET_GLASSES
+{ WWT_PUSHIMGBTN,   RESIZE_NONE,  COLOUR_GREY,    209,  217,   122,   133, SPR_ARROW_RIGHT,         STR_FACE_GLASSES_TIP_2},             // SCMFW_WIDGET_GLASSES_R
 {   WIDGETS_END},
 };
 
-class SelectPlayerFaceWindow : public Window
+class SelectCompanyManagerFaceWindow : public Window
 {
-	PlayerFace face; // player face bits
-	bool advanced;   // advance player face selection window
+	CompanyManagerFace face; ///< company manager face bits
+	bool advanced; ///< advanced company manager face selection window
 
 	GenderEthnicity ge;
 	bool is_female;
@@ -670,58 +670,58 @@
 
 	/**
 	 * Names of the widgets. Keep them in the same order as in the widget array.
-	 * Do not change the order of the widgets from PFW_WIDGET_HAS_MOUSTACHE_EARRING to PFW_WIDGET_GLASSES_R,
+	 * Do not change the order of the widgets from SCMFW_WIDGET_HAS_MOUSTACHE_EARRING to SCMFW_WIDGET_GLASSES_R,
 	 * this order is needed for the WE_CLICK event of DrawFaceStringLabel().
 	 */
-	enum PlayerFaceWindowWidgets {
-		PFW_WIDGET_CLOSEBOX = 0,
-		PFW_WIDGET_CAPTION,
-		PFW_WIDGET_TOGGLE_LARGE_SMALL,
-		PFW_WIDGET_SELECT_FACE,
-		PFW_WIDGET_CANCEL,
-		PFW_WIDGET_ACCEPT,
-		PFW_WIDGET_MALE,
-		PFW_WIDGET_FEMALE,
-		PFW_WIDGET_RANDOM_NEW_FACE,
-		PFW_WIDGET_TOGGLE_LARGE_SMALL_BUTTON,
-		/* from here is the advanced player face selection window */
-		PFW_WIDGET_LOAD,
-		PFW_WIDGET_FACECODE,
-		PFW_WIDGET_SAVE,
-		PFW_WIDGET_ETHNICITY_EUR,
-		PFW_WIDGET_ETHNICITY_AFR,
-		PFW_WIDGET_HAS_MOUSTACHE_EARRING,
-		PFW_WIDGET_HAS_GLASSES,
-		PFW_WIDGET_EYECOLOUR_L,
-		PFW_WIDGET_EYECOLOUR,
-		PFW_WIDGET_EYECOLOUR_R,
-		PFW_WIDGET_CHIN_L,
-		PFW_WIDGET_CHIN,
-		PFW_WIDGET_CHIN_R,
-		PFW_WIDGET_EYEBROWS_L,
-		PFW_WIDGET_EYEBROWS,
-		PFW_WIDGET_EYEBROWS_R,
-		PFW_WIDGET_LIPS_MOUSTACHE_L,
-		PFW_WIDGET_LIPS_MOUSTACHE,
-		PFW_WIDGET_LIPS_MOUSTACHE_R,
-		PFW_WIDGET_NOSE_L,
-		PFW_WIDGET_NOSE,
-		PFW_WIDGET_NOSE_R,
-		PFW_WIDGET_HAIR_L,
-		PFW_WIDGET_HAIR,
-		PFW_WIDGET_HAIR_R,
-		PFW_WIDGET_JACKET_L,
-		PFW_WIDGET_JACKET,
-		PFW_WIDGET_JACKET_R,
-		PFW_WIDGET_COLLAR_L,
-		PFW_WIDGET_COLLAR,
-		PFW_WIDGET_COLLAR_R,
-		PFW_WIDGET_TIE_EARRING_L,
-		PFW_WIDGET_TIE_EARRING,
-		PFW_WIDGET_TIE_EARRING_R,
-		PFW_WIDGET_GLASSES_L,
-		PFW_WIDGET_GLASSES,
-		PFW_WIDGET_GLASSES_R,
+	enum SelectCompanyManagerFaceWidgets {
+		SCMFW_WIDGET_CLOSEBOX = 0,
+		SCMFW_WIDGET_CAPTION,
+		SCMFW_WIDGET_TOGGLE_LARGE_SMALL,
+		SCMFW_WIDGET_SELECT_FACE,
+		SCMFW_WIDGET_CANCEL,
+		SCMFW_WIDGET_ACCEPT,
+		SCMFW_WIDGET_MALE,
+		SCMFW_WIDGET_FEMALE,
+		SCMFW_WIDGET_RANDOM_NEW_FACE,
+		SCMFW_WIDGET_TOGGLE_LARGE_SMALL_BUTTON,
+		/* from here is the advanced company manager face selection window */
+		SCMFW_WIDGET_LOAD,
+		SCMFW_WIDGET_FACECODE,
+		SCMFW_WIDGET_SAVE,
+		SCMFW_WIDGET_ETHNICITY_EUR,
+		SCMFW_WIDGET_ETHNICITY_AFR,
+		SCMFW_WIDGET_HAS_MOUSTACHE_EARRING,
+		SCMFW_WIDGET_HAS_GLASSES,
+		SCMFW_WIDGET_EYECOLOUR_L,
+		SCMFW_WIDGET_EYECOLOUR,
+		SCMFW_WIDGET_EYECOLOUR_R,
+		SCMFW_WIDGET_CHIN_L,
+		SCMFW_WIDGET_CHIN,
+		SCMFW_WIDGET_CHIN_R,
+		SCMFW_WIDGET_EYEBROWS_L,
+		SCMFW_WIDGET_EYEBROWS,
+		SCMFW_WIDGET_EYEBROWS_R,
+		SCMFW_WIDGET_LIPS_MOUSTACHE_L,
+		SCMFW_WIDGET_LIPS_MOUSTACHE,
+		SCMFW_WIDGET_LIPS_MOUSTACHE_R,
+		SCMFW_WIDGET_NOSE_L,
+		SCMFW_WIDGET_NOSE,
+		SCMFW_WIDGET_NOSE_R,
+		SCMFW_WIDGET_HAIR_L,
+		SCMFW_WIDGET_HAIR,
+		SCMFW_WIDGET_HAIR_R,
+		SCMFW_WIDGET_JACKET_L,
+		SCMFW_WIDGET_JACKET,
+		SCMFW_WIDGET_JACKET_R,
+		SCMFW_WIDGET_COLLAR_L,
+		SCMFW_WIDGET_COLLAR,
+		SCMFW_WIDGET_COLLAR_R,
+		SCMFW_WIDGET_TIE_EARRING_L,
+		SCMFW_WIDGET_TIE_EARRING,
+		SCMFW_WIDGET_TIE_EARRING_R,
+		SCMFW_WIDGET_GLASSES_L,
+		SCMFW_WIDGET_GLASSES,
+		SCMFW_WIDGET_GLASSES_R,
 	};
 	/**
 	 * Draw dynamic a label to the left of the button and a value in the button
@@ -754,17 +754,17 @@
 
 	void UpdateData()
 	{
-		this->ge = (GenderEthnicity)GB(this->face, _pf_info[PFV_GEN_ETHN].offset, _pf_info[PFV_GEN_ETHN].length); // get the gender and ethnicity
+		this->ge = (GenderEthnicity)GB(this->face, _cmf_info[CMFV_GEN_ETHN].offset, _cmf_info[CMFV_GEN_ETHN].length); // get the gender and ethnicity
 		this->is_female = HasBit(this->ge, GENDER_FEMALE); // get the gender: 0 == male and 1 == female
-		this->is_moust_male = !is_female && GetPlayerFaceBits(this->face, PFV_HAS_MOUSTACHE, this->ge) != 0; // is a male face with moustache
+		this->is_moust_male = !is_female && GetCompanyManagerFaceBits(this->face, CMFV_HAS_MOUSTACHE, this->ge) != 0; // is a male face with moustache
 	}
 
 public:
-	SelectPlayerFaceWindow(const WindowDesc *desc, Window *parent, bool advanced, int top, int left) : Window(desc, parent->window_number)
+	SelectCompanyManagerFaceWindow(const WindowDesc *desc, Window *parent, bool advanced, int top, int left) : Window(desc, parent->window_number)
 	{
 		this->parent = parent;
 		this->caption_color = this->window_number;
-		this->face = GetPlayer((PlayerID)this->window_number)->face;
+		this->face = GetCompany((CompanyID)this->window_number)->face;
 		this->advanced = advanced;
 
 		this->UpdateData();
@@ -781,105 +781,105 @@
 	virtual void OnPaint()
 	{
 		/* lower the non-selected gender button */
-		this->SetWidgetLoweredState(PFW_WIDGET_MALE,  !this->is_female);
-		this->SetWidgetLoweredState(PFW_WIDGET_FEMALE, this->is_female);
+		this->SetWidgetLoweredState(SCMFW_WIDGET_MALE,  !this->is_female);
+		this->SetWidgetLoweredState(SCMFW_WIDGET_FEMALE, this->is_female);
 
-		/* advanced player face selection window */
+		/* advanced company manager face selection window */
 		if (this->advanced) {
 			/* lower the non-selected ethnicity button */
-			this->SetWidgetLoweredState(PFW_WIDGET_ETHNICITY_EUR, !HasBit(this->ge, ETHNICITY_BLACK));
-			this->SetWidgetLoweredState(PFW_WIDGET_ETHNICITY_AFR,  HasBit(this->ge, ETHNICITY_BLACK));
+			this->SetWidgetLoweredState(SCMFW_WIDGET_ETHNICITY_EUR, !HasBit(this->ge, ETHNICITY_BLACK));
+			this->SetWidgetLoweredState(SCMFW_WIDGET_ETHNICITY_AFR,  HasBit(this->ge, ETHNICITY_BLACK));
 
 
-			/* Disable dynamically the widgets which PlayerFaceVariable has less than 2 options
+			/* Disable dynamically the widgets which CompanyManagerFaceVariable has less than 2 options
 			* (or in other words you haven't any choice).
 			* If the widgets depend on a HAS-variable and this is false the widgets will be disabled, too. */
 
 			/* Eye colour buttons */
-			this->SetWidgetsDisabledState(_pf_info[PFV_EYE_COLOUR].valid_values[this->ge] < 2,
-				PFW_WIDGET_EYECOLOUR, PFW_WIDGET_EYECOLOUR_L, PFW_WIDGET_EYECOLOUR_R, WIDGET_LIST_END);
+			this->SetWidgetsDisabledState(_cmf_info[CMFV_EYE_COLOUR].valid_values[this->ge] < 2,
+				SCMFW_WIDGET_EYECOLOUR, SCMFW_WIDGET_EYECOLOUR_L, SCMFW_WIDGET_EYECOLOUR_R, WIDGET_LIST_END);
 
 			/* Chin buttons */
-			this->SetWidgetsDisabledState(_pf_info[PFV_CHIN].valid_values[this->ge] < 2,
-				PFW_WIDGET_CHIN, PFW_WIDGET_CHIN_L, PFW_WIDGET_CHIN_R, WIDGET_LIST_END);
+			this->SetWidgetsDisabledState(_cmf_info[CMFV_CHIN].valid_values[this->ge] < 2,
+				SCMFW_WIDGET_CHIN, SCMFW_WIDGET_CHIN_L, SCMFW_WIDGET_CHIN_R, WIDGET_LIST_END);
 
 			/* Eyebrows buttons */
-			this->SetWidgetsDisabledState(_pf_info[PFV_EYEBROWS].valid_values[this->ge] < 2,
-				PFW_WIDGET_EYEBROWS, PFW_WIDGET_EYEBROWS_L, PFW_WIDGET_EYEBROWS_R, WIDGET_LIST_END);
+			this->SetWidgetsDisabledState(_cmf_info[CMFV_EYEBROWS].valid_values[this->ge] < 2,
+				SCMFW_WIDGET_EYEBROWS, SCMFW_WIDGET_EYEBROWS_L, SCMFW_WIDGET_EYEBROWS_R, WIDGET_LIST_END);
 
 			/* Lips or (if it a male face with a moustache) moustache buttons */
-			this->SetWidgetsDisabledState(_pf_info[this->is_moust_male ? PFV_MOUSTACHE : PFV_LIPS].valid_values[this->ge] < 2,
-				PFW_WIDGET_LIPS_MOUSTACHE, PFW_WIDGET_LIPS_MOUSTACHE_L, PFW_WIDGET_LIPS_MOUSTACHE_R, WIDGET_LIST_END);
+			this->SetWidgetsDisabledState(_cmf_info[this->is_moust_male ? CMFV_MOUSTACHE : CMFV_LIPS].valid_values[this->ge] < 2,
+				SCMFW_WIDGET_LIPS_MOUSTACHE, SCMFW_WIDGET_LIPS_MOUSTACHE_L, SCMFW_WIDGET_LIPS_MOUSTACHE_R, WIDGET_LIST_END);
 
 			/* Nose buttons | male faces with moustache haven't any nose options */
-			this->SetWidgetsDisabledState(_pf_info[PFV_NOSE].valid_values[this->ge] < 2 || this->is_moust_male,
-				PFW_WIDGET_NOSE, PFW_WIDGET_NOSE_L, PFW_WIDGET_NOSE_R, WIDGET_LIST_END);
+			this->SetWidgetsDisabledState(_cmf_info[CMFV_NOSE].valid_values[this->ge] < 2 || this->is_moust_male,
+				SCMFW_WIDGET_NOSE, SCMFW_WIDGET_NOSE_L, SCMFW_WIDGET_NOSE_R, WIDGET_LIST_END);
 
 			/* Hair buttons */
-			this->SetWidgetsDisabledState(_pf_info[PFV_HAIR].valid_values[this->ge] < 2,
-				PFW_WIDGET_HAIR, PFW_WIDGET_HAIR_L, PFW_WIDGET_HAIR_R, WIDGET_LIST_END);
+			this->SetWidgetsDisabledState(_cmf_info[CMFV_HAIR].valid_values[this->ge] < 2,
+				SCMFW_WIDGET_HAIR, SCMFW_WIDGET_HAIR_L, SCMFW_WIDGET_HAIR_R, WIDGET_LIST_END);
 
 			/* Jacket buttons */
-			this->SetWidgetsDisabledState(_pf_info[PFV_JACKET].valid_values[this->ge] < 2,
-				PFW_WIDGET_JACKET, PFW_WIDGET_JACKET_L, PFW_WIDGET_JACKET_R, WIDGET_LIST_END);
+			this->SetWidgetsDisabledState(_cmf_info[CMFV_JACKET].valid_values[this->ge] < 2,
+				SCMFW_WIDGET_JACKET, SCMFW_WIDGET_JACKET_L, SCMFW_WIDGET_JACKET_R, WIDGET_LIST_END);
 
 			/* Collar buttons */
-			this->SetWidgetsDisabledState(_pf_info[PFV_COLLAR].valid_values[this->ge] < 2,
-				PFW_WIDGET_COLLAR, PFW_WIDGET_COLLAR_L, PFW_WIDGET_COLLAR_R, WIDGET_LIST_END);
+			this->SetWidgetsDisabledState(_cmf_info[CMFV_COLLAR].valid_values[this->ge] < 2,
+				SCMFW_WIDGET_COLLAR, SCMFW_WIDGET_COLLAR_L, SCMFW_WIDGET_COLLAR_R, WIDGET_LIST_END);
 
 			/* Tie/earring buttons | female faces without earring haven't any earring options */
-			this->SetWidgetsDisabledState(_pf_info[PFV_TIE_EARRING].valid_values[this->ge] < 2 ||
-					(this->is_female && GetPlayerFaceBits(this->face, PFV_HAS_TIE_EARRING, this->ge) == 0),
-				PFW_WIDGET_TIE_EARRING, PFW_WIDGET_TIE_EARRING_L, PFW_WIDGET_TIE_EARRING_R, WIDGET_LIST_END);
+			this->SetWidgetsDisabledState(_cmf_info[CMFV_TIE_EARRING].valid_values[this->ge] < 2 ||
+					(this->is_female && GetCompanyManagerFaceBits(this->face, CMFV_HAS_TIE_EARRING, this->ge) == 0),
+				SCMFW_WIDGET_TIE_EARRING, SCMFW_WIDGET_TIE_EARRING_L, SCMFW_WIDGET_TIE_EARRING_R, WIDGET_LIST_END);
 
 			/* Glasses buttons | faces without glasses haven't any glasses options */
-			this->SetWidgetsDisabledState(_pf_info[PFV_GLASSES].valid_values[this->ge] < 2 || GetPlayerFaceBits(this->face, PFV_HAS_GLASSES, this->ge) == 0,
-				PFW_WIDGET_GLASSES, PFW_WIDGET_GLASSES_L, PFW_WIDGET_GLASSES_R, WIDGET_LIST_END);
+			this->SetWidgetsDisabledState(_cmf_info[CMFV_GLASSES].valid_values[this->ge] < 2 || GetCompanyManagerFaceBits(this->face, CMFV_HAS_GLASSES, this->ge) == 0,
+				SCMFW_WIDGET_GLASSES, SCMFW_WIDGET_GLASSES_L, SCMFW_WIDGET_GLASSES_R, WIDGET_LIST_END);
 		}
 
 		this->DrawWidgets();
 
-		/* Draw dynamic button value and labels for the advanced player face selection window */
+		/* Draw dynamic button value and labels for the advanced company manager face selection window */
 		if (this->advanced) {
 			if (this->is_female) {
 				/* Only for female faces */
-				this->DrawFaceStringLabel(PFW_WIDGET_HAS_MOUSTACHE_EARRING, STR_FACE_EARRING,   GetPlayerFaceBits(this->face, PFV_HAS_TIE_EARRING, this->ge), true );
-				this->DrawFaceStringLabel(PFW_WIDGET_TIE_EARRING,           STR_FACE_EARRING,   GetPlayerFaceBits(this->face, PFV_TIE_EARRING,     this->ge), false);
+				this->DrawFaceStringLabel(SCMFW_WIDGET_HAS_MOUSTACHE_EARRING, STR_FACE_EARRING,   GetCompanyManagerFaceBits(this->face, CMFV_HAS_TIE_EARRING, this->ge), true );
+				this->DrawFaceStringLabel(SCMFW_WIDGET_TIE_EARRING,           STR_FACE_EARRING,   GetCompanyManagerFaceBits(this->face, CMFV_TIE_EARRING,     this->ge), false);
 			} else {
 				/* Only for male faces */
-				this->DrawFaceStringLabel(PFW_WIDGET_HAS_MOUSTACHE_EARRING, STR_FACE_MOUSTACHE, GetPlayerFaceBits(this->face, PFV_HAS_MOUSTACHE,   this->ge), true );
-				this->DrawFaceStringLabel(PFW_WIDGET_TIE_EARRING,           STR_FACE_TIE,       GetPlayerFaceBits(this->face, PFV_TIE_EARRING,     this->ge), false);
+				this->DrawFaceStringLabel(SCMFW_WIDGET_HAS_MOUSTACHE_EARRING, STR_FACE_MOUSTACHE, GetCompanyManagerFaceBits(this->face, CMFV_HAS_MOUSTACHE,   this->ge), true );
+				this->DrawFaceStringLabel(SCMFW_WIDGET_TIE_EARRING,           STR_FACE_TIE,       GetCompanyManagerFaceBits(this->face, CMFV_TIE_EARRING,     this->ge), false);
 			}
 			if (this->is_moust_male) {
 				/* Only for male faces with moustache */
-				this->DrawFaceStringLabel(PFW_WIDGET_LIPS_MOUSTACHE,        STR_FACE_MOUSTACHE, GetPlayerFaceBits(this->face, PFV_MOUSTACHE,       this->ge), false);
+				this->DrawFaceStringLabel(SCMFW_WIDGET_LIPS_MOUSTACHE,        STR_FACE_MOUSTACHE, GetCompanyManagerFaceBits(this->face, CMFV_MOUSTACHE,       this->ge), false);
 			} else {
 				/* Only for female faces or male faces without moustache */
-				this->DrawFaceStringLabel(PFW_WIDGET_LIPS_MOUSTACHE,        STR_FACE_LIPS,      GetPlayerFaceBits(this->face, PFV_LIPS,            this->ge), false);
+				this->DrawFaceStringLabel(SCMFW_WIDGET_LIPS_MOUSTACHE,        STR_FACE_LIPS,      GetCompanyManagerFaceBits(this->face, CMFV_LIPS,            this->ge), false);
 			}
 			/* For all faces */
-			this->DrawFaceStringLabel(PFW_WIDGET_HAS_GLASSES,           STR_FACE_GLASSES,     GetPlayerFaceBits(this->face, PFV_HAS_GLASSES,     this->ge), true );
-			this->DrawFaceStringLabel(PFW_WIDGET_HAIR,                  STR_FACE_HAIR,        GetPlayerFaceBits(this->face, PFV_HAIR,            this->ge), false);
-			this->DrawFaceStringLabel(PFW_WIDGET_EYEBROWS,              STR_FACE_EYEBROWS,    GetPlayerFaceBits(this->face, PFV_EYEBROWS,        this->ge), false);
-			this->DrawFaceStringLabel(PFW_WIDGET_EYECOLOUR,             STR_FACE_EYECOLOUR,   GetPlayerFaceBits(this->face, PFV_EYE_COLOUR,      this->ge), false);
-			this->DrawFaceStringLabel(PFW_WIDGET_GLASSES,               STR_FACE_GLASSES,     GetPlayerFaceBits(this->face, PFV_GLASSES,         this->ge), false);
-			this->DrawFaceStringLabel(PFW_WIDGET_NOSE,                  STR_FACE_NOSE,        GetPlayerFaceBits(this->face, PFV_NOSE,            this->ge), false);
-			this->DrawFaceStringLabel(PFW_WIDGET_CHIN,                  STR_FACE_CHIN,        GetPlayerFaceBits(this->face, PFV_CHIN,            this->ge), false);
-			this->DrawFaceStringLabel(PFW_WIDGET_JACKET,                STR_FACE_JACKET,      GetPlayerFaceBits(this->face, PFV_JACKET,          this->ge), false);
-			this->DrawFaceStringLabel(PFW_WIDGET_COLLAR,                STR_FACE_COLLAR,      GetPlayerFaceBits(this->face, PFV_COLLAR,          this->ge), false);
+			this->DrawFaceStringLabel(SCMFW_WIDGET_HAS_GLASSES,           STR_FACE_GLASSES,     GetCompanyManagerFaceBits(this->face, CMFV_HAS_GLASSES,     this->ge), true );
+			this->DrawFaceStringLabel(SCMFW_WIDGET_HAIR,                  STR_FACE_HAIR,        GetCompanyManagerFaceBits(this->face, CMFV_HAIR,            this->ge), false);
+			this->DrawFaceStringLabel(SCMFW_WIDGET_EYEBROWS,              STR_FACE_EYEBROWS,    GetCompanyManagerFaceBits(this->face, CMFV_EYEBROWS,        this->ge), false);
+			this->DrawFaceStringLabel(SCMFW_WIDGET_EYECOLOUR,             STR_FACE_EYECOLOUR,   GetCompanyManagerFaceBits(this->face, CMFV_EYE_COLOUR,      this->ge), false);
+			this->DrawFaceStringLabel(SCMFW_WIDGET_GLASSES,               STR_FACE_GLASSES,     GetCompanyManagerFaceBits(this->face, CMFV_GLASSES,         this->ge), false);
+			this->DrawFaceStringLabel(SCMFW_WIDGET_NOSE,                  STR_FACE_NOSE,        GetCompanyManagerFaceBits(this->face, CMFV_NOSE,            this->ge), false);
+			this->DrawFaceStringLabel(SCMFW_WIDGET_CHIN,                  STR_FACE_CHIN,        GetCompanyManagerFaceBits(this->face, CMFV_CHIN,            this->ge), false);
+			this->DrawFaceStringLabel(SCMFW_WIDGET_JACKET,                STR_FACE_JACKET,      GetCompanyManagerFaceBits(this->face, CMFV_JACKET,          this->ge), false);
+			this->DrawFaceStringLabel(SCMFW_WIDGET_COLLAR,                STR_FACE_COLLAR,      GetCompanyManagerFaceBits(this->face, CMFV_COLLAR,          this->ge), false);
 		}
 
-		/* Draw the player face picture */
-		DrawPlayerFace(this->face, GetPlayer((PlayerID)this->window_number)->player_color, 2, 16);
+		/* Draw the company manager face picture */
+		DrawCompanyManagerFace(this->face, GetCompany((CompanyID)this->window_number)->colour, 2, 16);
 	}
 
 	virtual void OnClick(Point pt, int widget)
 	{
 		switch (widget) {
 			/* Toggle size, advanced/simple face selection */
-			case PFW_WIDGET_TOGGLE_LARGE_SMALL:
-			case PFW_WIDGET_TOGGLE_LARGE_SMALL_BUTTON: {
-				DoCommandP(0, 0, this->face, NULL, CMD_SET_PLAYER_FACE);
+			case SCMFW_WIDGET_TOGGLE_LARGE_SMALL:
+			case SCMFW_WIDGET_TOGGLE_LARGE_SMALL_BUTTON: {
+				DoCommandP(0, 0, this->face, NULL, CMD_SET_COMPANY_MANAGER_FACE);
 
 				/* Backup some data before deletion */
 				int oldtop = this->top;     ///< current top position of the window before closing it
@@ -890,99 +890,99 @@
 				delete this;
 
 				/* Open up the (toggled size) Face selection window at the same position as the previous */
-				DoSelectPlayerFace(parent, adv, oldtop, oldleft);
+				DoSelectCompanyManagerFace(parent, adv, oldtop, oldleft);
 			} break;
 
 
 			/* OK button */
-			case PFW_WIDGET_ACCEPT:
-				DoCommandP(0, 0, this->face, NULL, CMD_SET_PLAYER_FACE);
+			case SCMFW_WIDGET_ACCEPT:
+				DoCommandP(0, 0, this->face, NULL, CMD_SET_COMPANY_MANAGER_FACE);
 				/* Fall-Through */
 
 			/* Cancel button */
-			case PFW_WIDGET_CANCEL:
+			case SCMFW_WIDGET_CANCEL:
 				delete this;
 				break;
 
 			/* Load button */
-			case PFW_WIDGET_LOAD:
-				this->face = _player_face;
-				ScaleAllPlayerFaceBits(this->face);
+			case SCMFW_WIDGET_LOAD:
+				this->face = _company_manager_face;
+				ScaleAllCompanyManagerFaceBits(this->face);
 				ShowErrorMessage(INVALID_STRING_ID, STR_FACE_LOAD_DONE, 0, 0);
 				this->UpdateData();
 				this->SetDirty();
 				break;
 
-			/* 'Player face number' button, view and/or set player face number */
-			case PFW_WIDGET_FACECODE:
+			/* 'Company manager face number' button, view and/or set company manager face number */
+			case SCMFW_WIDGET_FACECODE:
 				SetDParam(0, this->face);
 				ShowQueryString(STR_JUST_INT, STR_FACE_FACECODE_CAPTION, 10 + 1, 0, this, CS_NUMERAL, QSF_NONE);
 				break;
 
 			/* Save button */
-			case PFW_WIDGET_SAVE:
-				_player_face = this->face;
+			case SCMFW_WIDGET_SAVE:
+				_company_manager_face = this->face;
 				ShowErrorMessage(INVALID_STRING_ID, STR_FACE_SAVE_DONE, 0, 0);
 				break;
 
 			/* Toggle gender (male/female) button */
-			case PFW_WIDGET_MALE:
-			case PFW_WIDGET_FEMALE:
-				SetPlayerFaceBits(this->face, PFV_GENDER, this->ge, widget - PFW_WIDGET_MALE);
-				ScaleAllPlayerFaceBits(this->face);
+			case SCMFW_WIDGET_MALE:
+			case SCMFW_WIDGET_FEMALE:
+				SetCompanyManagerFaceBits(this->face, CMFV_GENDER, this->ge, widget - SCMFW_WIDGET_MALE);
+				ScaleAllCompanyManagerFaceBits(this->face);
 				this->UpdateData();
 				this->SetDirty();
 				break;
 
 			/* Randomize face button */
-			case PFW_WIDGET_RANDOM_NEW_FACE:
-				RandomPlayerFaceBits(this->face, this->ge, this->advanced);
+			case SCMFW_WIDGET_RANDOM_NEW_FACE:
+				RandomCompanyManagerFaceBits(this->face, this->ge, this->advanced);
 				this->UpdateData();
 				this->SetDirty();
 				break;
 
 			/* Toggle ethnicity (european/african) button */
-			case PFW_WIDGET_ETHNICITY_EUR:
-			case PFW_WIDGET_ETHNICITY_AFR:
-				SetPlayerFaceBits(this->face, PFV_ETHNICITY, this->ge, widget - PFW_WIDGET_ETHNICITY_EUR);
-				ScaleAllPlayerFaceBits(this->face);
+			case SCMFW_WIDGET_ETHNICITY_EUR:
+			case SCMFW_WIDGET_ETHNICITY_AFR:
+				SetCompanyManagerFaceBits(this->face, CMFV_ETHNICITY, this->ge, widget - SCMFW_WIDGET_ETHNICITY_EUR);
+				ScaleAllCompanyManagerFaceBits(this->face);
 				this->UpdateData();
 				this->SetDirty();
 				break;
 
 			default:
-				/* For all buttons from PFW_WIDGET_HAS_MOUSTACHE_EARRING to PFW_WIDGET_GLASSES_R is the same function.
+				/* For all buttons from SCMFW_WIDGET_HAS_MOUSTACHE_EARRING to SCMFW_WIDGET_GLASSES_R is the same function.
 				* Therefor is this combined function.
-				* First it checks which PlayerFaceVariable will be change and then
+				* First it checks which CompanyManagerFaceVariable will be change and then
 				* a: invert the value for boolean variables
-				* or b: it checks inside of IncreasePlayerFaceBits() if a left (_L) butten is pressed and then decrease else increase the variable */
-				if (this->advanced && widget >= PFW_WIDGET_HAS_MOUSTACHE_EARRING && widget <= PFW_WIDGET_GLASSES_R) {
-					PlayerFaceVariable pfv; // which PlayerFaceVariable shall be edited
+				* or b: it checks inside of IncreaseCompanyManagerFaceBits() if a left (_L) butten is pressed and then decrease else increase the variable */
+				if (this->advanced && widget >= SCMFW_WIDGET_HAS_MOUSTACHE_EARRING && widget <= SCMFW_WIDGET_GLASSES_R) {
+					CompanyManagerFaceVariable cmfv; // which CompanyManagerFaceVariable shall be edited
 
-					if (widget < PFW_WIDGET_EYECOLOUR_L) { // Bool buttons
-						switch (widget - PFW_WIDGET_HAS_MOUSTACHE_EARRING) {
+					if (widget < SCMFW_WIDGET_EYECOLOUR_L) { // Bool buttons
+						switch (widget - SCMFW_WIDGET_HAS_MOUSTACHE_EARRING) {
 							default: NOT_REACHED();
-							case 0: pfv = this->is_female ? PFV_HAS_TIE_EARRING : PFV_HAS_MOUSTACHE; break; // Has earring/moustache button
-							case 1: pfv = PFV_HAS_GLASSES; break; // Has glasses button
+							case 0: cmfv = this->is_female ? CMFV_HAS_TIE_EARRING : CMFV_HAS_MOUSTACHE; break; // Has earring/moustache button
+							case 1: cmfv = CMFV_HAS_GLASSES; break; // Has glasses button
 						}
-						SetPlayerFaceBits(this->face, pfv, this->ge, !GetPlayerFaceBits(this->face, pfv, this->ge));
-						ScaleAllPlayerFaceBits(this->face);
+						SetCompanyManagerFaceBits(this->face, cmfv, this->ge, !GetCompanyManagerFaceBits(this->face, cmfv, this->ge));
+						ScaleAllCompanyManagerFaceBits(this->face);
 					} else { // Value buttons
-						switch ((widget - PFW_WIDGET_EYECOLOUR_L) / 3) {
+						switch ((widget - SCMFW_WIDGET_EYECOLOUR_L) / 3) {
 							default: NOT_REACHED();
-							case 0: pfv = PFV_EYE_COLOUR; break;  // Eye colour buttons
-							case 1: pfv = PFV_CHIN; break;        // Chin buttons
-							case 2: pfv = PFV_EYEBROWS; break;    // Eyebrows buttons
-							case 3: pfv = this->is_moust_male ? PFV_MOUSTACHE : PFV_LIPS; break; // Moustache or lips buttons
-							case 4: pfv = PFV_NOSE; break;        // Nose buttons
-							case 5: pfv = PFV_HAIR; break;        // Hair buttons
-							case 6: pfv = PFV_JACKET; break;      // Jacket buttons
-							case 7: pfv = PFV_COLLAR; break;      // Collar buttons
-							case 8: pfv = PFV_TIE_EARRING; break; // Tie/earring buttons
-							case 9: pfv = PFV_GLASSES; break;     // Glasses buttons
+							case 0: cmfv = CMFV_EYE_COLOUR; break;  // Eye colour buttons
+							case 1: cmfv = CMFV_CHIN; break;        // Chin buttons
+							case 2: cmfv = CMFV_EYEBROWS; break;    // Eyebrows buttons
+							case 3: cmfv = this->is_moust_male ? CMFV_MOUSTACHE : CMFV_LIPS; break; // Moustache or lips buttons
+							case 4: cmfv = CMFV_NOSE; break;        // Nose buttons
+							case 5: cmfv = CMFV_HAIR; break;        // Hair buttons
+							case 6: cmfv = CMFV_JACKET; break;      // Jacket buttons
+							case 7: cmfv = CMFV_COLLAR; break;      // Collar buttons
+							case 8: cmfv = CMFV_TIE_EARRING; break; // Tie/earring buttons
+							case 9: cmfv = CMFV_GLASSES; break;     // Glasses buttons
 						}
 						/* 0 == left (_L), 1 == middle or 2 == right (_R) - button click */
-						IncreasePlayerFaceBits(this->face, pfv, this->ge, (((widget - PFW_WIDGET_EYECOLOUR_L) % 3) != 0) ? 1 : -1);
+						IncreaseCompanyManagerFaceBits(this->face, cmfv, this->ge, (((widget - SCMFW_WIDGET_EYECOLOUR_L) % 3) != 0) ? 1 : -1);
 					}
 					this->UpdateData();
 					this->SetDirty();
@@ -994,10 +994,10 @@
 	virtual void OnQueryTextFinished(char *str)
 	{
 		if (str == NULL) return;
-		/* Set a new player face number */
+		/* Set a new company manager face number */
 		if (!StrEmpty(str)) {
 			this->face = strtoul(str, NULL, 10);
-			ScaleAllPlayerFaceBits(this->face);
+			ScaleAllCompanyManagerFaceBits(this->face);
 			ShowErrorMessage(INVALID_STRING_ID, STR_FACE_FACECODE_SET, 0, 0);
 			this->UpdateData();
 			this->SetDirty();
@@ -1007,58 +1007,56 @@
 	}
 };
 
-/** normal/simple player face selection window description */
-static const WindowDesc _select_player_face_desc = {
+/** normal/simple company manager face selection window description */
+static const WindowDesc _select_company_manager_face_desc = {
 	WDP_AUTO, WDP_AUTO, 190, 163, 190, 163,
-	WC_PLAYER_FACE, WC_NONE,
+	WC_COMPANY_MANAGER_FACE, WC_NONE,
 	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS,
-	_select_player_face_widgets,
+	_select_company_manager_face_widgets,
 };
 
-/** advanced player face selection window description */
-static const WindowDesc _select_player_face_adv_desc = {
+/** advanced company manager face selection window description */
+static const WindowDesc _select_company_manager_face_adv_desc = {
 	WDP_AUTO, WDP_AUTO, 220, 220, 220, 220,
-	WC_PLAYER_FACE, WC_NONE,
+	WC_COMPANY_MANAGER_FACE, WC_NONE,
 	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS,
-	_select_player_face_adv_widgets,
+	_select_company_manager_face_adv_widgets,
 };
 
 /**
- * Open the simple/advanced player face selection window
+ * Open the simple/advanced company manager face selection window
  *
- * @param player the player which face shall be edited
- * @param adv    simple or advanced player face selection window
+ * @param parent the parent company window
+ * @param adv    simple or advanced face selection window
  * @param top    previous top position of the window
  * @param left   previous left position of the window
- *
- * @pre is player a valid player
  */
-static void DoSelectPlayerFace(Window *parent, bool adv, int top, int left)
+static void DoSelectCompanyManagerFace(Window *parent, bool adv, int top, int left)
 {
-	if (!IsValidPlayerID((PlayerID)parent->window_number)) return;
+	if (!IsValidCompanyID((CompanyID)parent->window_number)) return;
 
-	if (BringWindowToFrontById(WC_PLAYER_FACE, parent->window_number)) return;
-	new SelectPlayerFaceWindow(adv ? &_select_player_face_adv_desc : &_select_player_face_desc, parent, adv, top, left); // simple or advanced window
+	if (BringWindowToFrontById(WC_COMPANY_MANAGER_FACE, parent->window_number)) return;
+	new SelectCompanyManagerFaceWindow(adv ? &_select_company_manager_face_adv_desc : &_select_company_manager_face_desc, parent, adv, top, left); // simple or advanced window
 }
 
 
 /* Names of the widgets. Keep them in the same order as in the widget array */
-enum PlayerCompanyWindowWidgets {
-	PCW_WIDGET_CLOSEBOX = 0,
-	PCW_WIDGET_CAPTION,
-	PCW_WIDGET_FACE,
-	PCW_WIDGET_NEW_FACE,
-	PCW_WIDGET_COLOR_SCHEME,
-	PCW_WIDGET_PRESIDENT_NAME,
-	PCW_WIDGET_COMPANY_NAME,
-	PCW_WIDGET_BUILD_VIEW_HQ,
-	PCW_WIDGET_RELOCATE_HQ,
-	PCW_WIDGET_BUY_SHARE,
-	PCW_WIDGET_SELL_SHARE,
-	PCW_WIDGET_COMPANY_PASSWORD,
+enum CompanyWindowWidgets {
+	CW_WIDGET_CLOSEBOX = 0,
+	CW_WIDGET_CAPTION,
+	CW_WIDGET_FACE,
+	CW_WIDGET_NEW_FACE,
+	CW_WIDGET_COLOR_SCHEME,
+	CW_WIDGET_PRESIDENT_NAME,
+	CW_WIDGET_COMPANY_NAME,
+	CW_WIDGET_BUILD_VIEW_HQ,
+	CW_WIDGET_RELOCATE_HQ,
+	CW_WIDGET_BUY_SHARE,
+	CW_WIDGET_SELL_SHARE,
+	CW_WIDGET_COMPANY_PASSWORD,
 };
 
-static const Widget _player_company_widgets[] = {
+static const Widget _company_widgets[] = {
 {   WWT_CLOSEBOX,   RESIZE_NONE,  COLOUR_GREY,     0,    10,     0,    13, STR_00C5,                          STR_018B_CLOSE_WINDOW},
 {    WWT_CAPTION,   RESIZE_NONE,  COLOUR_GREY,    11,   359,     0,    13, STR_7001,                          STR_018C_WINDOW_TITLE_DRAG_THIS},
 {      WWT_PANEL,   RESIZE_NONE,  COLOUR_GREY,     0,   359,    14,   157, 0x0,                               STR_NULL},
@@ -1077,9 +1075,9 @@
 
 /**
  * Draws text "Vehicles:" and number of all vehicle types, or "(none)"
- * @param player ID of player to print statistics of
+ * @param company ID of company to print statistics of
  */
-static void DrawPlayerVehiclesAmount(PlayerID player)
+static void DrawCompanyVehiclesAmount(CompanyID company)
 {
 	const int x = 110;
 	int y = 63;
@@ -1092,7 +1090,7 @@
 	DrawString(x, y, STR_7039_VEHICLES, TC_FROMSTRING);
 
 	FOR_ALL_VEHICLES(v) {
-		if (v->owner == player) {
+		if (v->owner == company) {
 			switch (v->type) {
 				case VEH_TRAIN:    if (IsFrontEngine(v)) train++; break;
 				case VEH_ROAD:     if (IsRoadVehFront(v)) road++; break;
@@ -1131,29 +1129,29 @@
 	}
 }
 
-int GetAmountOwnedBy(const Player *p, PlayerID owner)
+int GetAmountOwnedBy(const Company *c, Owner owner)
 {
-	return (p->share_owners[0] == owner) +
-				 (p->share_owners[1] == owner) +
-				 (p->share_owners[2] == owner) +
-				 (p->share_owners[3] == owner);
+	return (c->share_owners[0] == owner) +
+				 (c->share_owners[1] == owner) +
+				 (c->share_owners[2] == owner) +
+				 (c->share_owners[3] == owner);
 }
 
 /**
  * Draws list of all companies with shares
- * @param p pointer to the Player structure
+ * @param c pointer to the Company structure
  */
-static void DrawCompanyOwnerText(const Player *p)
+static void DrawCompanyOwnerText(const Company *c)
 {
-	const Player *p2;
+	const Company *c2;
 	uint num = 0;
 	const byte height = GetCharacterHeight(FS_NORMAL);
 
-	FOR_ALL_PLAYERS(p2) {
-		uint amt = GetAmountOwnedBy(p, p2->index);
+	FOR_ALL_COMPANIES(c2) {
+		uint amt = GetAmountOwnedBy(c, c2->index);
 		if (amt != 0) {
 			SetDParam(0, amt * 25);
-			SetDParam(1, p2->index);
+			SetDParam(1, c2->index);
 
 			DrawString(120, (num++) * height + 116, STR_707D_OWNED_BY, TC_FROMSTRING);
 		}
@@ -1161,16 +1159,13 @@
 }
 
 /**
- * Player company window event definition
- *
- * @param w window pointer
- * @param e event been triggered
+ * Window with general information about a company
  */
-struct PlayerCompanyWindow : Window
+struct CompanyWindow : Window
 {
-	PlayerCompanyWindowWidgets query_widget;
+	CompanyWindowWidgets query_widget;
 
-	PlayerCompanyWindow(const WindowDesc *desc, WindowNumber window_number) : Window(desc, window_number)
+	CompanyWindow(const WindowDesc *desc, WindowNumber window_number) : Window(desc, window_number)
 	{
 		this->caption_color = this->window_number;
 		this->FindWindowPlacementAndResize(desc);
@@ -1178,102 +1173,102 @@
 
 	virtual void OnPaint()
 	{
-		const Player *p = GetPlayer((PlayerID)this->window_number);
-		bool local = this->window_number == _local_player;
+		const Company *c = GetCompany((CompanyID)this->window_number);
+		bool local = this->window_number == _local_company;
 
-		this->SetWidgetHiddenState(PCW_WIDGET_NEW_FACE,       !local);
-		this->SetWidgetHiddenState(PCW_WIDGET_COLOR_SCHEME,   !local);
-		this->SetWidgetHiddenState(PCW_WIDGET_PRESIDENT_NAME, !local);
-		this->SetWidgetHiddenState(PCW_WIDGET_COMPANY_NAME,   !local);
-		this->widget[PCW_WIDGET_BUILD_VIEW_HQ].data = (local && p->location_of_HQ == 0) ? STR_706F_BUILD_HQ : STR_7072_VIEW_HQ;
-		if (local && p->location_of_HQ != 0) this->widget[PCW_WIDGET_BUILD_VIEW_HQ].type = WWT_PUSHTXTBTN; //HQ is already built.
-		this->SetWidgetDisabledState(PCW_WIDGET_BUILD_VIEW_HQ, !local && p->location_of_HQ == 0);
-		this->SetWidgetHiddenState(PCW_WIDGET_RELOCATE_HQ,      !local || p->location_of_HQ == 0);
-		this->SetWidgetHiddenState(PCW_WIDGET_BUY_SHARE,        local);
-		this->SetWidgetHiddenState(PCW_WIDGET_SELL_SHARE,       local);
-		this->SetWidgetHiddenState(PCW_WIDGET_COMPANY_PASSWORD, !local || !_networking);
+		this->SetWidgetHiddenState(CW_WIDGET_NEW_FACE,       !local);
+		this->SetWidgetHiddenState(CW_WIDGET_COLOR_SCHEME,   !local);
+		this->SetWidgetHiddenState(CW_WIDGET_PRESIDENT_NAME, !local);
+		this->SetWidgetHiddenState(CW_WIDGET_COMPANY_NAME,   !local);
+		this->widget[CW_WIDGET_BUILD_VIEW_HQ].data = (local && c->location_of_HQ == 0) ? STR_706F_BUILD_HQ : STR_7072_VIEW_HQ;
+		if (local && c->location_of_HQ != 0) this->widget[CW_WIDGET_BUILD_VIEW_HQ].type = WWT_PUSHTXTBTN; //HQ is already built.
+		this->SetWidgetDisabledState(CW_WIDGET_BUILD_VIEW_HQ, !local && c->location_of_HQ == 0);
+		this->SetWidgetHiddenState(CW_WIDGET_RELOCATE_HQ,      !local || c->location_of_HQ == 0);
+		this->SetWidgetHiddenState(CW_WIDGET_BUY_SHARE,        local);
+		this->SetWidgetHiddenState(CW_WIDGET_SELL_SHARE,       local);
+		this->SetWidgetHiddenState(CW_WIDGET_COMPANY_PASSWORD, !local || !_networking);
 
 		if (!local) {
 			if (_settings_game.economy.allow_shares) { // Shares are allowed
 				/* If all shares are owned by someone (none by nobody), disable buy button */
-				this->SetWidgetDisabledState(PCW_WIDGET_BUY_SHARE, GetAmountOwnedBy(p, PLAYER_SPECTATOR) == 0 ||
-						/* Only 25% left to buy. If the player is human, disable buying it up.. TODO issues! */
-						(GetAmountOwnedBy(p, PLAYER_SPECTATOR) == 1 && !p->is_ai) ||
+				this->SetWidgetDisabledState(CW_WIDGET_BUY_SHARE, GetAmountOwnedBy(c, INVALID_OWNER) == 0 ||
+						/* Only 25% left to buy. If the company is human, disable buying it up.. TODO issues! */
+						(GetAmountOwnedBy(c, INVALID_OWNER) == 1 && !c->is_ai) ||
 						/* Spectators cannot do anything of course */
-						_local_player == PLAYER_SPECTATOR);
+						_local_company == COMPANY_SPECTATOR);
 
-				/* If the player doesn't own any shares, disable sell button */
-				this->SetWidgetDisabledState(PCW_WIDGET_SELL_SHARE, (GetAmountOwnedBy(p, _local_player) == 0) ||
+				/* If the company doesn't own any shares, disable sell button */
+				this->SetWidgetDisabledState(CW_WIDGET_SELL_SHARE, (GetAmountOwnedBy(c, _local_company) == 0) ||
 						/* Spectators cannot do anything of course */
-						_local_player == PLAYER_SPECTATOR);
+						_local_company == COMPANY_SPECTATOR);
 			} else { // Shares are not allowed, disable buy/sell buttons
-				this->DisableWidget(PCW_WIDGET_BUY_SHARE);
-				this->DisableWidget(PCW_WIDGET_SELL_SHARE);
+				this->DisableWidget(CW_WIDGET_BUY_SHARE);
+				this->DisableWidget(CW_WIDGET_SELL_SHARE);
 			}
 		}
 
-		SetDParam(0, p->index);
-		SetDParam(1, p->index);
+		SetDParam(0, c->index);
+		SetDParam(1, c->index);
 
 		this->DrawWidgets();
 
-		/* Player face */
-		DrawPlayerFace(p->face, p->player_color, 2, 16);
+		/* Company manager's face */
+		DrawCompanyManagerFace(c->face, c->colour, 2, 16);
 
 		/* "xxx (Manager)" */
-		SetDParam(0, p->index);
+		SetDParam(0, c->index);
 		DrawStringMultiCenter(48, 141, STR_7037_PRESIDENT, MAX_LENGTH_PRESIDENT_NAME_PIXELS);
 
 		/* "Inaugurated:" */
-		SetDParam(0, p->inaugurated_year);
+		SetDParam(0, c->inaugurated_year);
 		DrawString(110, 23, STR_7038_INAUGURATED, TC_FROMSTRING);
 
 		/* "Colour scheme:" */
 		DrawString(110, 43, STR_7006_COLOR_SCHEME, TC_FROMSTRING);
 		/* Draw company-colour bus */
-		DrawSprite(SPR_VEH_BUS_SW_VIEW, PLAYER_SPRITE_COLOR(p->index), 215, 44);
+		DrawSprite(SPR_VEH_BUS_SW_VIEW, COMPANY_SPRITE_COLOR(c->index), 215, 44);
 
 		/* "Vehicles:" */
-		DrawPlayerVehiclesAmount((PlayerID)this->window_number);
+		DrawCompanyVehiclesAmount((CompanyID)this->window_number);
 
 		/* "Company value:" */
-		SetDParam(0, CalculateCompanyValue(p));
+		SetDParam(0, CalculateCompanyValue(c));
 		DrawString(110, 106, STR_7076_COMPANY_VALUE, TC_FROMSTRING);
 
 		/* Shares list */
-		DrawCompanyOwnerText(p);
+		DrawCompanyOwnerText(c);
 	}
 
 	virtual void OnClick(Point pt, int widget)
 	{
 		switch (widget) {
-			case PCW_WIDGET_NEW_FACE: DoSelectPlayerFace(this, false); break;
+			case CW_WIDGET_NEW_FACE: DoSelectCompanyManagerFace(this, false); break;
 
-			case PCW_WIDGET_COLOR_SCHEME:
-				if (BringWindowToFrontById(WC_PLAYER_COLOR, this->window_number)) break;
-				new SelectPlayerLiveryWindow(&_select_player_livery_desc, (PlayerID)this->window_number);
+			case CW_WIDGET_COLOR_SCHEME:
+				if (BringWindowToFrontById(WC_COMPANY_COLOR, this->window_number)) break;
+				new SelectCompanyLiveryWindow(&_select_company_livery_desc, (CompanyID)this->window_number);
 				break;
 
-			case PCW_WIDGET_PRESIDENT_NAME:
-				this->query_widget = PCW_WIDGET_PRESIDENT_NAME;
+			case CW_WIDGET_PRESIDENT_NAME:
+				this->query_widget = CW_WIDGET_PRESIDENT_NAME;
 				SetDParam(0, this->window_number);
 				ShowQueryString(STR_PLAYER_NAME, STR_700B_PRESIDENT_S_NAME, MAX_LENGTH_PRESIDENT_NAME_BYTES, MAX_LENGTH_PRESIDENT_NAME_PIXELS, this, CS_ALPHANUMERAL, QSF_ENABLE_DEFAULT);
 				break;
 
-			case PCW_WIDGET_COMPANY_NAME:
-				this->query_widget = PCW_WIDGET_COMPANY_NAME;
+			case CW_WIDGET_COMPANY_NAME:
+				this->query_widget = CW_WIDGET_COMPANY_NAME;
 				SetDParam(0, this->window_number);
 				ShowQueryString(STR_COMPANY_NAME, STR_700A_COMPANY_NAME, MAX_LENGTH_COMPANY_NAME_BYTES, MAX_LENGTH_COMPANY_NAME_PIXELS, this, CS_ALPHANUMERAL, QSF_ENABLE_DEFAULT);
 				break;
 
-			case PCW_WIDGET_BUILD_VIEW_HQ: {
-				TileIndex tile = GetPlayer((PlayerID)this->window_number)->location_of_HQ;
+			case CW_WIDGET_BUILD_VIEW_HQ: {
+				TileIndex tile = GetCompany((CompanyID)this->window_number)->location_of_HQ;
 				if (tile == 0) {
-					if ((byte)this->window_number != _local_player) return;
+					if ((byte)this->window_number != _local_company) return;
 					SetObjectToPlaceWnd(SPR_CURSOR_HQ, PAL_NONE, VHM_RECT, this);
 					SetTileSelectSize(2, 2);
-					this->LowerWidget(PCW_WIDGET_BUILD_VIEW_HQ);
-					this->InvalidateWidget(PCW_WIDGET_BUILD_VIEW_HQ);
+					this->LowerWidget(CW_WIDGET_BUILD_VIEW_HQ);
+					this->InvalidateWidget(CW_WIDGET_BUILD_VIEW_HQ);
 				} else {
 					if (_ctrl_pressed) {
 						ShowExtraViewPortWindow(tile);
@@ -1284,24 +1279,24 @@
 				break;
 			}
 
-			case PCW_WIDGET_RELOCATE_HQ:
+			case CW_WIDGET_RELOCATE_HQ:
 				SetObjectToPlaceWnd(SPR_CURSOR_HQ, PAL_NONE, VHM_RECT, this);
 				SetTileSelectSize(2, 2);
-				this->LowerWidget(PCW_WIDGET_RELOCATE_HQ);
-				this->InvalidateWidget(PCW_WIDGET_RELOCATE_HQ);
+				this->LowerWidget(CW_WIDGET_RELOCATE_HQ);
+				this->InvalidateWidget(CW_WIDGET_RELOCATE_HQ);
 				break;
 
-			case PCW_WIDGET_BUY_SHARE:
+			case CW_WIDGET_BUY_SHARE:
 				DoCommandP(0, this->window_number, 0, NULL, CMD_BUY_SHARE_IN_COMPANY | CMD_MSG(STR_707B_CAN_T_BUY_25_SHARE_IN_THIS));
 				break;
 
-			case PCW_WIDGET_SELL_SHARE:
+			case CW_WIDGET_SELL_SHARE:
 				DoCommandP(0, this->window_number, 0, NULL, CMD_SELL_SHARE_IN_COMPANY | CMD_MSG(STR_707C_CAN_T_SELL_25_SHARE_IN));
 				break;
 
 #ifdef ENABLE_NETWORK
-			case PCW_WIDGET_COMPANY_PASSWORD:
-				if (this->window_number == _local_player) ShowNetworkCompanyPasswordWindow(this);
+			case CW_WIDGET_COMPANY_PASSWORD:
+				if (this->window_number == _local_company) ShowNetworkCompanyPasswordWindow(this);
 				break;
 #endif /* ENABLE_NETWORK */
 		}
@@ -1317,7 +1312,7 @@
 	{
 		if (DoCommandP(tile, 0, 0, NULL, CMD_BUILD_COMPANY_HQ | CMD_NO_WATER | CMD_MSG(STR_7071_CAN_T_BUILD_COMPANY_HEADQUARTERS)))
 			ResetObjectToPlace();
-			this->widget[PCW_WIDGET_BUILD_VIEW_HQ].type = WWT_PUSHTXTBTN; // this button can now behave as a normal push button
+			this->widget[CW_WIDGET_BUILD_VIEW_HQ].type = WWT_PUSHTXTBTN; // this button can now behave as a normal push button
 			this->RaiseButtons();
 	}
 
@@ -1334,29 +1329,29 @@
 		switch (this->query_widget) {
 			default: NOT_REACHED();
 
-			case PCW_WIDGET_PRESIDENT_NAME:
+			case CW_WIDGET_PRESIDENT_NAME:
 				DoCommandP(0, 0, 0, NULL, CMD_RENAME_PRESIDENT | CMD_MSG(STR_700D_CAN_T_CHANGE_PRESIDENT));
 				break;
 
-			case PCW_WIDGET_COMPANY_NAME:
+			case CW_WIDGET_COMPANY_NAME:
 				DoCommandP(0, 0, 0, NULL, CMD_RENAME_COMPANY | CMD_MSG(STR_700C_CAN_T_CHANGE_COMPANY_NAME));
 				break;
 		}
 	}
 };
 
-static const WindowDesc _player_company_desc = {
+static const WindowDesc _company_desc = {
 	WDP_AUTO, WDP_AUTO, 360, 170, 360, 170,
 	WC_COMPANY, WC_NONE,
 	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS,
-	_player_company_widgets,
+	_company_widgets,
 };
 
-void ShowPlayerCompany(PlayerID player)
+void ShowCompany(CompanyID company)
 {
-	if (!IsValidPlayerID(player)) return;
+	if (!IsValidCompanyID(company)) return;
 
-	AllocateWindowDescFront<PlayerCompanyWindow>(&_player_company_desc, player);
+	AllocateWindowDescFront<CompanyWindow>(&_company_desc, company);
 }
 
 
@@ -1369,15 +1364,15 @@
 
 	virtual void OnPaint()
 	{
-		Player *p = GetPlayer((PlayerID)this->window_number);
+		Company *c = GetCompany((CompanyID)this->window_number);
 		SetDParam(0, STR_COMPANY_NAME);
-		SetDParam(1, p->index);
+		SetDParam(1, c->index);
 		this->DrawWidgets();
 
-		DrawPlayerFace(p->face, p->player_color, 2, 16);
+		DrawCompanyManagerFace(c->face, c->colour, 2, 16);
 
-		SetDParam(0, p->index);
-		SetDParam(1, p->bankrupt_value);
+		SetDParam(0, c->index);
+		SetDParam(1, c->bankrupt_value);
 		DrawStringMultiCenter(214, 65, STR_705B_WE_ARE_LOOKING_FOR_A_TRANSPORT, 238);
 	}
 
@@ -1412,9 +1407,9 @@
 };
 
 
-void ShowBuyCompanyDialog(uint player)
+void ShowBuyCompanyDialog(CompanyID company)
 {
-	AllocateWindowDescFront<BuyCompanyWindow>(&_buy_company_desc, player);
+	AllocateWindowDescFront<BuyCompanyWindow>(&_buy_company_desc, company);
 }
 
 /********** HIGHSCORE and ENDGAME windows */
@@ -1465,9 +1460,9 @@
 
 		this->background_img = SPR_TYCOON_IMG1_BEGIN;
 
-		if (_local_player != PLAYER_SPECTATOR) {
-			const Player *p = GetPlayer(_local_player);
-			if (p->old_economy[0].performance_history == SCORE_MAX) {
+		if (_local_company != COMPANY_SPECTATOR) {
+			const Company *c = GetCompany(_local_company);
+			if (c->old_economy[0].performance_history == SCORE_MAX) {
 				this->background_img = SPR_TYCOON_IMG2_BEGIN;
 			}
 		}
@@ -1478,10 +1473,10 @@
 			this->window_number = lengthof(_highscore_table) - 1;
 			this->rank = SaveHighScoreValueNetwork();
 		} else {
-			/* in single player _local player is always valid */
-			const Player *p = GetPlayer(_local_player);
+			/* in single player _local company is always valid */
+			const Company *c = GetCompany(_local_company);
 			this->window_number = _settings_game.difficulty.diff_level;
-			this->rank = SaveHighScoreValue(p);
+			this->rank = SaveHighScoreValue(c);
 		}
 
 		MarkWholeScreenDirty();
@@ -1495,24 +1490,24 @@
 
 	virtual void OnPaint()
 	{
-		const Player *p;
+		const Company *c;
 		uint x, y;
 
 		this->SetupHighScoreEndWindow(&x, &y);
 
-		if (!IsValidPlayerID(_local_player)) return;
+		if (!IsValidCompanyID(_local_company)) return;
 
-		p = GetPlayer(_local_player);
+		c = GetCompany(_local_company);
 		/* We need to get performance from last year because the image is shown
 		 * at the start of the new year when these things have already been copied */
 		if (this->background_img == SPR_TYCOON_IMG2_BEGIN) { // Tycoon of the century \o/
-			SetDParam(0, p->index);
-			SetDParam(1, p->index);
-			SetDParam(2, EndGameGetPerformanceTitleFromValue(p->old_economy[0].performance_history));
+			SetDParam(0, c->index);
+			SetDParam(1, c->index);
+			SetDParam(2, EndGameGetPerformanceTitleFromValue(c->old_economy[0].performance_history));
 			DrawStringMultiCenter(x + (640 / 2), y + 107, STR_021C_OF_ACHIEVES_STATUS, 640);
 		} else {
-			SetDParam(0, p->index);
-			SetDParam(1, EndGameGetPerformanceTitleFromValue(p->old_economy[0].performance_history));
+			SetDParam(0, c->index);
+			SetDParam(1, EndGameGetPerformanceTitleFromValue(c->old_economy[0].performance_history));
 			DrawStringMultiCenter(x + (640 / 2), y + 157, STR_021B_ACHIEVES_STATUS, 640);
 		}
 	}
--- a/src/player_gui.h	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/player_gui.h	Tue Sep 30 20:39:50 2008 +0000
@@ -1,20 +1,20 @@
 /* $Id$ */
 
-/** @file player_gui.h GUI Functions related to players. */
+/** @file company_gui.h GUI Functions related to companies. */
 
-#ifndef PLAYER_GUI_H
-#define PLAYER_GUI_H
+#ifndef COMPANY_GUI_H
+#define COMPANY_GUI_H
 
 #include "player_type.h"
 
-uint16 GetDrawStringPlayerColor(PlayerID player);
-void DrawPlayerIcon(PlayerID p, int x, int y);
+uint16 GetDrawStringCompanyColor(CompanyID company);
+void DrawCompanyIcon(CompanyID p, int x, int y);
 
-void ShowPlayerStations(PlayerID player);
-void ShowPlayerFinances(PlayerID player);
-void ShowPlayerCompany(PlayerID player);
+void ShowCompanyStations(CompanyID company);
+void ShowCompanyFinances(CompanyID company);
+void ShowCompany(CompanyID company);
 
-void InvalidatePlayerWindows(const Player *p);
-void DeletePlayerWindows(PlayerID pi);
+void InvalidateCompanyWindows(const Company *c);
+void DeleteCompanyWindows(CompanyID company);
 
-#endif /* PLAYER_GUI_H */
+#endif /* COMPANY_GUI_H */
--- a/src/player_type.h	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/player_type.h	Tue Sep 30 20:39:50 2008 +0000
@@ -1,32 +1,32 @@
 /* $Id$ */
 
-/** @file player_type.h Types related to players. */
+/** @file company_type.h Types related to companies. */
 
-#ifndef PLAYER_TYPE_H
-#define PLAYER_TYPE_H
+#ifndef COMPANY_TYPE_H
+#define COMPANY_TYPE_H
 
 #include "core/enum_type.hpp"
 
 /**
- * Enum for all players/owners.
+ * Enum for all companies/owners.
  */
 enum Owner {
-	/* Player identifiers All players below MAX_PLAYERS are playable
-	 * players, above, they are special, computer controlled players */
-	OWNER_BEGIN     = 0x00, ///< First Owner
-	PLAYER_FIRST    = 0x00, ///< First Player, same as owner
-	MAX_PLAYERS     = 0x08, ///< Maximum numbe rof players
+	/* All companies below MAX_COMPANIES are playable
+	 * companies, above, they are special, computer controlled 'companies' */
+	OWNER_BEGIN     = 0x00, ///< First owner
+	COMPANY_FIRST   = 0x00, ///< First company, same as owner
+	MAX_COMPANIES   = 0x08, ///< Maximum number of companies
 	OWNER_TOWN      = 0x0F, ///< A town owns the tile, or a town is expanding
 	OWNER_NONE      = 0x10, ///< The tile has no ownership
 	OWNER_WATER     = 0x11, ///< The tile/execution is done by "water"
 	OWNER_END,              ///< Last + 1 owner
 	INVALID_OWNER   = 0xFF, ///< An invalid owner
-	INVALID_PLAYER  = 0xFF, ///< And a valid owner
+	INVALID_COMPANY = 0xFF, ///< An invalid company
 
-	/* 'Fake' Players used for networks */
-	PLAYER_INACTIVE_CLIENT = 253, ///< The client is joining
-	PLAYER_NEW_COMPANY     = 254, ///< The client wants a new company
-	PLAYER_SPECTATOR       = 255, ///< The client is spectating
+	/* 'Fake' companies used for networks */
+	COMPANY_INACTIVE_CLIENT = 253, ///< The client is joining
+	COMPANY_NEW_COMPANY     = 254, ///< The client wants a new company
+	COMPANY_SPECTATOR       = 255, ///< The client is spectating
 };
 DECLARE_POSTFIX_INCREMENT(Owner);
 
@@ -41,12 +41,12 @@
 template <> struct EnumPropsT<Owner> : MakeEnumPropsT<Owner, byte, OWNER_BEGIN, OWNER_END, INVALID_OWNER> {};
 typedef TinyEnumT<Owner> OwnerByte;
 
-typedef Owner PlayerID;
-typedef OwnerByte PlayerByte;
+typedef Owner CompanyID;
+typedef OwnerByte CompanyByte;
 
-typedef uint8 PlayerMask;
+typedef uint8 CompanyMask;
 
-struct Player;
-typedef uint32 PlayerFace; ///< player face bits, info see in player_face.h
+struct Company;
+typedef uint32 CompanyManagerFace; ///< Company manager face bits, info see in company_manager_face.h
 
-#endif /* PLAYER_TYPE_H */
+#endif /* COMPANY_TYPE_H */
--- a/src/players.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/players.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -1,6 +1,6 @@
 /* $Id$ */
 
-/** @file players.cpp Handling of players. */
+/** @file company_cmd.cpp Handling of companies. */
 
 #include "stdafx.h"
 #include "openttd.h"
@@ -43,21 +43,21 @@
 #include "table/strings.h"
 #include "table/sprites.h"
 
-PlayerByte _local_player;
-PlayerByte _current_player;
-/* NOSAVE: can be determined from player structs */
-byte _player_colors[MAX_PLAYERS];
-PlayerFace _player_face; ///< for player face storage in openttd.cfg
+CompanyByte _local_company;
+CompanyByte _current_company;
+/* NOSAVE: can be determined from company structs */
+byte _company_colours[MAX_COMPANIES];
+CompanyManagerFace _company_manager_face; ///< for company manager face storage in openttd.cfg
 HighScore _highscore_table[5][5]; // 4 difficulty-settings (+ network); top 5
 
-DEFINE_OLD_POOL_GENERIC(Player, Player)
+DEFINE_OLD_POOL_GENERIC(Company, Company)
 
-Player::Player(uint16 name_1, bool is_ai) : name_1(name_1), is_ai(is_ai)
+Company::Company(uint16 name_1, bool is_ai) : name_1(name_1), is_ai(is_ai)
 {
-	for (uint j = 0; j < 4; j++) this->share_owners[j] = PLAYER_SPECTATOR;
+	for (uint j = 0; j < 4; j++) this->share_owners[j] = COMPANY_SPECTATOR;
 }
 
-Player::~Player()
+Company::~Company()
 {
 	free(this->name);
 	free(this->president_name);
@@ -65,26 +65,26 @@
 
 	if (CleaningPool()) return;
 
-	DeletePlayerWindows(this->index);
+	DeleteCompanyWindows(this->index);
 	this->name_1 = 0;
 }
 
 /**
- * Sets the local player and updates the patch settings that are set on a
- * per-company (player) basis to reflect the core's state in the GUI.
- * @param new_player the new player
- * @pre IsValidPlayerID(new_player) || new_player == PLAYER_SPECTATOR || new_player == OWNER_NONE
+ * Sets the local company and updates the patch settings that are set on a
+ * per-company basis to reflect the core's state in the GUI.
+ * @param new_company the new company
+ * @pre IsValidCompanyID(new_company) || new_company == COMPANY_SPECTATOR || new_company == OWNER_NONE
  */
-void SetLocalPlayer(PlayerID new_player)
+void SetLocalCompany(CompanyID new_company)
 {
-	/* Player could also be PLAYER_SPECTATOR or OWNER_NONE */
-	assert(IsValidPlayerID(new_player) || new_player == PLAYER_SPECTATOR || new_player == OWNER_NONE);
+	/* company could also be COMPANY_SPECTATOR or OWNER_NONE */
+	assert(IsValidCompanyID(new_company) || new_company == COMPANY_SPECTATOR || new_company == OWNER_NONE);
 
-	_local_player = new_player;
+	_local_company = new_company;
 
 	/* Do not update the patches if we are in the intro GUI */
-	if (IsValidPlayerID(new_player) && _game_mode != GM_MENU) {
-		const Player *p = GetPlayer(new_player);
+	if (IsValidCompanyID(new_company) && _game_mode != GM_MENU) {
+		const Company *p = GetCompany(new_company);
 		_settings_client.gui.autorenew        = p->engine_renew;
 		_settings_client.gui.autorenew_months = p->engine_renew_months;
 		_settings_client.gui.autorenew_money  = p->engine_renew_money;
@@ -92,27 +92,27 @@
 	}
 }
 
-bool IsHumanPlayer(PlayerID pi)
+bool IsHumanCompany(CompanyID company)
 {
-	return !GetPlayer(pi)->is_ai;
+	return !GetCompany(company)->is_ai;
 }
 
 
-uint16 GetDrawStringPlayerColor(PlayerID player)
+uint16 GetDrawStringCompanyColor(CompanyID company)
 {
 	/* Get the color for DrawString-subroutines which matches the color
-	 * of the player */
-	if (!IsValidPlayerID(player)) return _colour_gradient[COLOUR_WHITE][4] | IS_PALETTE_COLOR;
-	return (_colour_gradient[_player_colors[player]][4]) | IS_PALETTE_COLOR;
+	 * of the company */
+	if (!IsValidCompanyID(company)) return _colour_gradient[COLOUR_WHITE][4] | IS_PALETTE_COLOR;
+	return (_colour_gradient[_company_colours[company]][4]) | IS_PALETTE_COLOR;
 }
 
-void DrawPlayerIcon(PlayerID p, int x, int y)
+void DrawCompanyIcon(CompanyID p, int x, int y)
 {
-	DrawSprite(SPR_PLAYER_ICON, PLAYER_SPRITE_COLOR(p), x, y);
+	DrawSprite(SPR_PLAYER_ICON, COMPANY_SPRITE_COLOR(p), x, y);
 }
 
 /**
- * Converts an old player face format to the new player face format
+ * Converts an old company manager's face format to the new company manager's face format
  *
  * Meaning of the bits in the old face (some bits are used in several times):
  * - 4 and 5: chin
@@ -129,100 +129,100 @@
  * @param face the face in the old format
  * @return the face in the new format
  */
-PlayerFace ConvertFromOldPlayerFace(uint32 face)
+CompanyManagerFace ConvertFromOldCompanyManagerFace(uint32 face)
 {
-	PlayerFace pf = 0;
+	CompanyManagerFace cmf = 0;
 	GenderEthnicity ge = GE_WM;
 
 	if (HasBit(face, 31)) SetBit(ge, GENDER_FEMALE);
 	if (HasBit(face, 27) && (HasBit(face, 26) == HasBit(face, 19))) SetBit(ge, ETHNICITY_BLACK);
 
-	SetPlayerFaceBits(pf, PFV_GEN_ETHN,    ge, ge);
-	SetPlayerFaceBits(pf, PFV_HAS_GLASSES, ge, GB(face, 28, 3) <= 1);
-	SetPlayerFaceBits(pf, PFV_EYE_COLOUR,  ge, HasBit(ge, ETHNICITY_BLACK) ? 0 : ClampU(GB(face, 20, 3), 5, 7) - 5);
-	SetPlayerFaceBits(pf, PFV_CHIN,        ge, ScalePlayerFaceValue(PFV_CHIN,     ge, GB(face,  4, 2)));
-	SetPlayerFaceBits(pf, PFV_EYEBROWS,    ge, ScalePlayerFaceValue(PFV_EYEBROWS, ge, GB(face,  6, 4)));
-	SetPlayerFaceBits(pf, PFV_HAIR,        ge, ScalePlayerFaceValue(PFV_HAIR,     ge, GB(face, 16, 4)));
-	SetPlayerFaceBits(pf, PFV_JACKET,      ge, ScalePlayerFaceValue(PFV_JACKET,   ge, GB(face, 20, 2)));
-	SetPlayerFaceBits(pf, PFV_COLLAR,      ge, ScalePlayerFaceValue(PFV_COLLAR,   ge, GB(face, 22, 2)));
-	SetPlayerFaceBits(pf, PFV_GLASSES,     ge, GB(face, 28, 1));
+	SetCompanyManagerFaceBits(cmf, CMFV_GEN_ETHN,    ge, ge);
+	SetCompanyManagerFaceBits(cmf, CMFV_HAS_GLASSES, ge, GB(face, 28, 3) <= 1);
+	SetCompanyManagerFaceBits(cmf, CMFV_EYE_COLOUR,  ge, HasBit(ge, ETHNICITY_BLACK) ? 0 : ClampU(GB(face, 20, 3), 5, 7) - 5);
+	SetCompanyManagerFaceBits(cmf, CMFV_CHIN,        ge, ScaleCompanyManagerFaceValue(CMFV_CHIN,     ge, GB(face,  4, 2)));
+	SetCompanyManagerFaceBits(cmf, CMFV_EYEBROWS,    ge, ScaleCompanyManagerFaceValue(CMFV_EYEBROWS, ge, GB(face,  6, 4)));
+	SetCompanyManagerFaceBits(cmf, CMFV_HAIR,        ge, ScaleCompanyManagerFaceValue(CMFV_HAIR,     ge, GB(face, 16, 4)));
+	SetCompanyManagerFaceBits(cmf, CMFV_JACKET,      ge, ScaleCompanyManagerFaceValue(CMFV_JACKET,   ge, GB(face, 20, 2)));
+	SetCompanyManagerFaceBits(cmf, CMFV_COLLAR,      ge, ScaleCompanyManagerFaceValue(CMFV_COLLAR,   ge, GB(face, 22, 2)));
+	SetCompanyManagerFaceBits(cmf, CMFV_GLASSES,     ge, GB(face, 28, 1));
 
 	uint lips = GB(face, 10, 4);
 	if (!HasBit(ge, GENDER_FEMALE) && lips < 4) {
-		SetPlayerFaceBits(pf, PFV_HAS_MOUSTACHE, ge, true);
-		SetPlayerFaceBits(pf, PFV_MOUSTACHE,     ge, max(lips, 1U) - 1);
+		SetCompanyManagerFaceBits(cmf, CMFV_HAS_MOUSTACHE, ge, true);
+		SetCompanyManagerFaceBits(cmf, CMFV_MOUSTACHE,     ge, max(lips, 1U) - 1);
 	} else {
 		if (!HasBit(ge, GENDER_FEMALE)) {
 			lips = lips * 15 / 16;
 			lips -= 3;
 			if (HasBit(ge, ETHNICITY_BLACK) && lips > 8) lips = 0;
 		} else {
-			lips = ScalePlayerFaceValue(PFV_LIPS, ge, lips);
+			lips = ScaleCompanyManagerFaceValue(CMFV_LIPS, ge, lips);
 		}
-		SetPlayerFaceBits(pf, PFV_LIPS, ge, lips);
+		SetCompanyManagerFaceBits(cmf, CMFV_LIPS, ge, lips);
 
 		uint nose = GB(face, 13, 3);
 		if (ge == GE_WF) {
 			nose = (nose * 3 >> 3) * 3 >> 2; // There is 'hole' in the nose sprites for females
 		} else {
-			nose = ScalePlayerFaceValue(PFV_NOSE, ge, nose);
+			nose = ScaleCompanyManagerFaceValue(CMFV_NOSE, ge, nose);
 		}
-		SetPlayerFaceBits(pf, PFV_NOSE, ge, nose);
+		SetCompanyManagerFaceBits(cmf, CMFV_NOSE, ge, nose);
 	}
 
 	uint tie_earring = GB(face, 24, 4);
 	if (!HasBit(ge, GENDER_FEMALE) || tie_earring < 3) { // Not all females have an earring
-		if (HasBit(ge, GENDER_FEMALE)) SetPlayerFaceBits(pf, PFV_HAS_TIE_EARRING, ge, true);
-		SetPlayerFaceBits(pf, PFV_TIE_EARRING, ge, HasBit(ge, GENDER_FEMALE) ? tie_earring : ScalePlayerFaceValue(PFV_TIE_EARRING, ge, tie_earring / 2));
+		if (HasBit(ge, GENDER_FEMALE)) SetCompanyManagerFaceBits(cmf, CMFV_HAS_TIE_EARRING, ge, true);
+		SetCompanyManagerFaceBits(cmf, CMFV_TIE_EARRING, ge, HasBit(ge, GENDER_FEMALE) ? tie_earring : ScaleCompanyManagerFaceValue(CMFV_TIE_EARRING, ge, tie_earring / 2));
 	}
 
-	return pf;
+	return cmf;
 }
 
 /**
- * Checks whether a player's face is a valid encoding.
+ * Checks whether a company manager's face is a valid encoding.
  * Unused bits are not enforced to be 0.
- * @param pf the fact to check
+ * @param cmf the fact to check
  * @return true if and only if the face is valid
  */
-bool IsValidPlayerIDFace(PlayerFace pf)
+bool IsValidCompanyManagerFace(CompanyManagerFace cmf)
 {
-	if (!ArePlayerFaceBitsValid(pf, PFV_GEN_ETHN, GE_WM)) return false;
+	if (!AreCompanyManagerFaceBitsValid(cmf, CMFV_GEN_ETHN, GE_WM)) return false;
 
-	GenderEthnicity ge   = (GenderEthnicity)GetPlayerFaceBits(pf, PFV_GEN_ETHN, GE_WM);
-	bool has_moustache   = !HasBit(ge, GENDER_FEMALE) && GetPlayerFaceBits(pf, PFV_HAS_MOUSTACHE,   ge) != 0;
-	bool has_tie_earring = !HasBit(ge, GENDER_FEMALE) || GetPlayerFaceBits(pf, PFV_HAS_TIE_EARRING, ge) != 0;
-	bool has_glasses     = GetPlayerFaceBits(pf, PFV_HAS_GLASSES, ge) != 0;
+	GenderEthnicity ge   = (GenderEthnicity)GetCompanyManagerFaceBits(cmf, CMFV_GEN_ETHN, GE_WM);
+	bool has_moustache   = !HasBit(ge, GENDER_FEMALE) && GetCompanyManagerFaceBits(cmf, CMFV_HAS_MOUSTACHE,   ge) != 0;
+	bool has_tie_earring = !HasBit(ge, GENDER_FEMALE) || GetCompanyManagerFaceBits(cmf, CMFV_HAS_TIE_EARRING, ge) != 0;
+	bool has_glasses     = GetCompanyManagerFaceBits(cmf, CMFV_HAS_GLASSES, ge) != 0;
 
-	if (!ArePlayerFaceBitsValid(pf, PFV_EYE_COLOUR, ge)) return false;
-	for (PlayerFaceVariable pfv = PFV_CHEEKS; pfv < PFV_END; pfv++) {
-		switch (pfv) {
-			case PFV_MOUSTACHE:   if (!has_moustache)   continue; break;
-			case PFV_LIPS:        /* FALL THROUGH */
-			case PFV_NOSE:        if (has_moustache)    continue; break;
-			case PFV_TIE_EARRING: if (!has_tie_earring) continue; break;
-			case PFV_GLASSES:     if (!has_glasses)     continue; break;
+	if (!AreCompanyManagerFaceBitsValid(cmf, CMFV_EYE_COLOUR, ge)) return false;
+	for (CompanyManagerFaceVariable cmfv = CMFV_CHEEKS; cmfv < CMFV_END; cmfv++) {
+		switch (cmfv) {
+			case CMFV_MOUSTACHE:   if (!has_moustache)   continue; break;
+			case CMFV_LIPS:        /* FALL THROUGH */
+			case CMFV_NOSE:        if (has_moustache)    continue; break;
+			case CMFV_TIE_EARRING: if (!has_tie_earring) continue; break;
+			case CMFV_GLASSES:     if (!has_glasses)     continue; break;
 			default: break;
 		}
-		if (!ArePlayerFaceBitsValid(pf, pfv, ge)) return false;
+		if (!AreCompanyManagerFaceBitsValid(cmf, cmfv, ge)) return false;
 	}
 
 	return true;
 }
 
-void InvalidatePlayerWindows(const Player *p)
+void InvalidateCompanyWindows(const Company *company)
 {
-	PlayerID pid = p->index;
+	CompanyID cid = company->index;
 
-	if (pid == _local_player) InvalidateWindow(WC_STATUS_BAR, 0);
-	InvalidateWindow(WC_FINANCES, pid);
+	if (cid == _local_company) InvalidateWindow(WC_STATUS_BAR, 0);
+	InvalidateWindow(WC_FINANCES, cid);
 }
 
-bool CheckPlayerHasMoney(CommandCost cost)
+bool CheckCompanyHasMoney(CommandCost cost)
 {
 	if (cost.GetCost() > 0) {
-		PlayerID pid = _current_player;
-		if (IsValidPlayerID(pid) && cost.GetCost() > GetPlayer(pid)->player_money) {
+		CompanyID company = _current_company;
+		if (IsValidCompanyID(company) && cost.GetCost() > GetCompany(company)->money) {
 			SetDParam(0, cost.GetCost());
 			_error_message = STR_0003_NOT_ENOUGH_CASH_REQUIRES;
 			return false;
@@ -231,48 +231,48 @@
 	return true;
 }
 
-static void SubtractMoneyFromAnyPlayer(Player *p, CommandCost cost)
+static void SubtractMoneyFromAnyCompany(Company *c, CommandCost cost)
 {
 	if (cost.GetCost() == 0) return;
 	assert(cost.GetExpensesType() != INVALID_EXPENSES);
 
-	p->player_money -= cost.GetCost();
-	p->yearly_expenses[0][cost.GetExpensesType()] += cost.GetCost();
+	c->money -= cost.GetCost();
+	c->yearly_expenses[0][cost.GetExpensesType()] += cost.GetCost();
 
 	if (HasBit(1 << EXPENSES_TRAIN_INC    |
 	           1 << EXPENSES_ROADVEH_INC  |
 	           1 << EXPENSES_AIRCRAFT_INC |
 	           1 << EXPENSES_SHIP_INC, cost.GetExpensesType())) {
-		p->cur_economy.income -= cost.GetCost();
+		c->cur_economy.income -= cost.GetCost();
 	} else if (HasBit(1 << EXPENSES_TRAIN_RUN    |
 	                  1 << EXPENSES_ROADVEH_RUN  |
 	                  1 << EXPENSES_AIRCRAFT_RUN |
 	                  1 << EXPENSES_SHIP_RUN     |
 	                  1 << EXPENSES_PROPERTY     |
 	                  1 << EXPENSES_LOAN_INT, cost.GetExpensesType())) {
-		p->cur_economy.expenses -= cost.GetCost();
+		c->cur_economy.expenses -= cost.GetCost();
 	}
 
-	InvalidatePlayerWindows(p);
+	InvalidateCompanyWindows(c);
 }
 
-void SubtractMoneyFromPlayer(CommandCost cost)
+void SubtractMoneyFromCompany(CommandCost cost)
 {
-	PlayerID pid = _current_player;
+	CompanyID cid = _current_company;
 
-	if (IsValidPlayerID(pid)) SubtractMoneyFromAnyPlayer(GetPlayer(pid), cost);
+	if (IsValidCompanyID(cid)) SubtractMoneyFromAnyCompany(GetCompany(cid), cost);
 }
 
-void SubtractMoneyFromPlayerFract(PlayerID player, CommandCost cst)
+void SubtractMoneyFromCompanyFract(CompanyID company, CommandCost cst)
 {
-	Player *p = GetPlayer(player);
-	byte m = p->player_money_fraction;
+	Company *c = GetCompany(company);
+	byte m = c->money_fraction;
 	Money cost = cst.GetCost();
 
-	p->player_money_fraction = m - (byte)cost;
+	c->money_fraction = m - (byte)cost;
 	cost >>= 8;
-	if (p->player_money_fraction > m) cost++;
-	if (cost != 0) SubtractMoneyFromAnyPlayer(p, CommandCost(cst.GetExpensesType(), cost));
+	if (c->money_fraction > m) cost++;
+	if (cost != 0) SubtractMoneyFromAnyCompany(c, CommandCost(cst.GetExpensesType(), cost));
 }
 
 void GetNameOfOwner(Owner owner, TileIndex tile)
@@ -280,16 +280,14 @@
 	SetDParam(2, owner);
 
 	if (owner != OWNER_TOWN) {
-		if (!IsValidPlayerID(owner)) {
+		if (!IsValidCompanyID(owner)) {
 			SetDParam(0, STR_0150_SOMEONE);
 		} else {
-			const Player* p = GetPlayer(owner);
-
 			SetDParam(0, STR_COMPANY_NAME);
-			SetDParam(1, p->index);
+			SetDParam(1, owner);
 		}
 	} else {
-		const Town* t = ClosestTownFromTile(tile, (uint)-1);
+		const Town *t = ClosestTownFromTile(tile, (uint)-1);
 
 		SetDParam(0, STR_TOWN);
 		SetDParam(1, t->index);
@@ -297,11 +295,11 @@
 }
 
 
-bool CheckOwnership(PlayerID owner)
+bool CheckOwnership(Owner owner)
 {
 	assert(owner < OWNER_END);
 
-	if (owner == _current_player) return true;
+	if (owner == _current_company) return true;
 	_error_message = STR_013B_OWNED_BY;
 	GetNameOfOwner(owner, 0);
 	return false;
@@ -313,26 +311,26 @@
 
 	assert(owner < OWNER_END);
 
-	if (owner == _current_player) return true;
+	if (owner == _current_company) return true;
 	_error_message = STR_013B_OWNED_BY;
 
-	/* no need to get the name of the owner unless we're the local player (saves some time) */
-	if (IsLocalPlayer()) GetNameOfOwner(owner, tile);
+	/* no need to get the name of the owner unless we're the local company (saves some time) */
+	if (IsLocalCompany()) GetNameOfOwner(owner, tile);
 	return false;
 }
 
-static void GenerateCompanyName(Player *p)
+static void GenerateCompanyName(Company *c)
 {
 	TileIndex tile;
 	Town *t;
 	StringID str;
-	Player *pp;
+	Company *cc;
 	uint32 strp;
 	char buffer[100];
 
-	if (p->name_1 != STR_SV_UNNAMED) return;
+	if (c->name_1 != STR_SV_UNNAMED) return;
 
-	tile = p->last_build_coordinate;
+	tile = c->last_build_coordinate;
 	if (tile == 0) return;
 
 	t = ClosestTownFromTile(tile, (uint)-1);
@@ -342,36 +340,36 @@
 		strp = t->townnameparts;
 
 verify_name:;
-		/* No player must have this name already */
-		FOR_ALL_PLAYERS(pp) {
-			if (pp->name_1 == str && pp->name_2 == strp) goto bad_town_name;
+		/* No companies must have this name already */
+		FOR_ALL_COMPANIES(cc) {
+			if (cc->name_1 == str && cc->name_2 == strp) goto bad_town_name;
 		}
 
 		GetString(buffer, str, lastof(buffer));
 		if (strlen(buffer) >= MAX_LENGTH_COMPANY_NAME_BYTES) goto bad_town_name;
 
 set_name:;
-		p->name_1 = str;
-		p->name_2 = strp;
+		c->name_1 = str;
+		c->name_2 = strp;
 
 		MarkWholeScreenDirty();
 
-		if (!IsHumanPlayer(p->index)) {
+		if (!IsHumanCompany(c->index)) {
 			CompanyNewsInformation *cni = MallocT<CompanyNewsInformation>(1);
-			cni->FillData(p);
+			cni->FillData(c);
 			SetDParam(0, STR_705E_NEW_TRANSPORT_COMPANY_LAUNCHED);
 			SetDParam(1, STR_705F_STARTS_CONSTRUCTION_NEAR);
 			SetDParamStr(2, cni->company_name);
 			SetDParam(3, t->index);
-			AddNewsItem(STR_02B6, NS_COMPANY_NEW, p->last_build_coordinate, 0, cni);
+			AddNewsItem(STR_02B6, NS_COMPANY_NEW, c->last_build_coordinate, 0, cni);
 		}
 		return;
 	}
 bad_town_name:;
 
-	if (p->president_name_1 == SPECSTR_PRESIDENT_NAME) {
+	if (c->president_name_1 == SPECSTR_PRESIDENT_NAME) {
 		str = SPECSTR_ANDCO_NAME;
-		strp = p->president_name_2;
+		strp = c->president_name_2;
 		goto set_name;
 	} else {
 		str = SPECSTR_ANDCO_NAME;
@@ -400,7 +398,7 @@
 	{ COLOUR_GREY,       INVALID_COLOUR    }, // COLOUR_WHITE
 };
 
-static byte GeneratePlayerColour()
+static byte GenerateCompanyColour()
 {
 	Colours colours[COLOUR_END];
 
@@ -422,10 +420,10 @@
 		}
 	};
 
-	/* Move the colors that look similar to each player's color to the side */
-	Player *p;
-	FOR_ALL_PLAYERS(p) {
-		Colours pcolour = (Colours)p->player_color;
+	/* Move the colors that look similar to each company's color to the side */
+	Company *c;
+	FOR_ALL_COMPANIES(c) {
+		Colours pcolour = (Colours)c->colour;
 
 		for (uint i = 0; i < COLOUR_END; i++) {
 			if (colours[i] == pcolour) {
@@ -452,25 +450,25 @@
 	NOT_REACHED();
 }
 
-static void GeneratePresidentName(Player *p)
+static void GeneratePresidentName(Company *c)
 {
-	Player *pp;
+	Company *cc;
 	char buffer[100], buffer2[40];
 
 	for (;;) {
 restart:;
 
-		p->president_name_2 = Random();
-		p->president_name_1 = SPECSTR_PRESIDENT_NAME;
+		c->president_name_2 = Random();
+		c->president_name_1 = SPECSTR_PRESIDENT_NAME;
 
-		SetDParam(0, p->index);
+		SetDParam(0, c->index);
 		GetString(buffer, STR_PLAYER_NAME, lastof(buffer));
 		if (strlen(buffer) >= 32 || GetStringBoundingBox(buffer).width >= 94)
 			continue;
 
-		FOR_ALL_PLAYERS(pp) {
-			if (p != pp) {
-				SetDParam(0, pp->index);
+		FOR_ALL_COMPANIES(cc) {
+			if (c != cc) {
+				SetDParam(0, cc->index);
 				GetString(buffer2, STR_PLAYER_NAME, lastof(buffer2));
 				if (strcmp(buffer2, buffer) == 0)
 					goto restart;
@@ -480,81 +478,81 @@
 	}
 }
 
-void ResetPlayerLivery(Player *p)
+void ResetCompanyLivery(Company *c)
 {
 	for (LiveryScheme scheme = LS_BEGIN; scheme < LS_END; scheme++) {
-		p->livery[scheme].in_use  = false;
-		p->livery[scheme].colour1 = p->player_color;
-		p->livery[scheme].colour2 = p->player_color;
+		c->livery[scheme].in_use  = false;
+		c->livery[scheme].colour1 = c->colour;
+		c->livery[scheme].colour2 = c->colour;
 	}
 }
 
 /**
- * Create a new player and sets all player variables default values
+ * Create a new company and sets all company variables default values
  *
- * @param is_ai is a ai player?
- * @return the player struct
+ * @param is_ai is a ai company?
+ * @return the company struct
  */
-Player *DoStartupNewPlayer(bool is_ai)
+Company *DoStartupNewCompany(bool is_ai)
 {
-	if (!Player::CanAllocateItem()) return NULL;
+	if (!Company::CanAllocateItem()) return NULL;
 
-	Player *p = new Player(STR_SV_UNNAMED, is_ai);
+	Company *c = new Company(STR_SV_UNNAMED, is_ai);
 
-	memset(&_players_ai[p->index], 0, sizeof(PlayerAI));
-	memset(&_players_ainew[p->index], 0, sizeof(PlayerAiNew));
+	memset(&_companies_ai[c->index], 0, sizeof(CompanyAI));
+	memset(&_companies_ainew[c->index], 0, sizeof(CompanyAiNew));
 
 	/* Make a color */
-	p->player_color = GeneratePlayerColour();
-	ResetPlayerLivery(p);
-	_player_colors[p->index] = p->player_color;
-
-	p->player_money = p->current_loan = 100000;
+	c->colour = GenerateCompanyColour();
+	ResetCompanyLivery(c);
+	_company_colours[c->index] = c->colour;
 
-	_players_ai[p->index].state = 5; // AIS_WANT_NEW_ROUTE
-	p->share_owners[0] = p->share_owners[1] = p->share_owners[2] = p->share_owners[3] = PLAYER_SPECTATOR;
+	c->money = c->current_loan = 100000;
 
-	p->avail_railtypes = GetPlayerRailtypes(p->index);
-	p->avail_roadtypes = GetPlayerRoadtypes(p->index);
-	p->inaugurated_year = _cur_year;
-	RandomPlayerFaceBits(p->face, (GenderEthnicity)Random(), false); // create a random player face
+	_companies_ai[c->index].state = 5; // AIS_WANT_NEW_ROUTE
+	c->share_owners[0] = c->share_owners[1] = c->share_owners[2] = c->share_owners[3] = INVALID_OWNER;
+
+	c->avail_railtypes = GetCompanyRailtypes(c->index);
+	c->avail_roadtypes = GetCompanyRoadtypes(c->index);
+	c->inaugurated_year = _cur_year;
+	RandomCompanyManagerFaceBits(c->face, (GenderEthnicity)Random(), false); // create a random company manager face
 
 	/* Engine renewal settings */
-	p->engine_renew_list = NULL;
-	p->renew_keep_length = false;
-	p->engine_renew = _settings_client.gui.autorenew;
-	p->engine_renew_months = _settings_client.gui.autorenew_months;
-	p->engine_renew_money = _settings_client.gui.autorenew_money;
+	c->engine_renew_list = NULL;
+	c->renew_keep_length = false;
+	c->engine_renew = _settings_client.gui.autorenew;
+	c->engine_renew_months = _settings_client.gui.autorenew_months;
+	c->engine_renew_money = _settings_client.gui.autorenew_money;
 
-	GeneratePresidentName(p);
+	GeneratePresidentName(c);
 
 	InvalidateWindow(WC_GRAPH_LEGEND, 0);
 	InvalidateWindow(WC_TOOLBAR_MENU, 0);
 	InvalidateWindow(WC_CLIENT_LIST, 0);
 
 	if (is_ai && (!_networking || _network_server) && _ai.enabled)
-		AI_StartNewAI(p->index);
+		AI_StartNewAI(c->index);
 
-	p->num_engines = CallocT<uint16>(GetEnginePoolSize());
+	c->num_engines = CallocT<uint16>(GetEnginePoolSize());
 
-	return p;
+	return c;
 }
 
-void StartupPlayers()
+void StartupCompanies()
 {
 	/* The AI starts like in the setting with +2 month max */
 	_next_competitor_start = _settings_game.difficulty.competitor_start_time * 90 * DAY_TICKS + RandomRange(60 * DAY_TICKS) + 1;
 }
 
-static void MaybeStartNewPlayer()
+static void MaybeStartNewCompany()
 {
 	uint n;
-	Player *p;
+	Company *c;
 
 	/* count number of competitors */
 	n = 0;
-	FOR_ALL_PLAYERS(p) {
-		if (p->is_ai) n++;
+	FOR_ALL_COMPANIES(c) {
+		if (c->is_ai) n++;
 	}
 
 	/* when there's a lot of computers in game, the probability that a new one starts is lower */
@@ -565,7 +563,7 @@
 			)) {
 		/* Send a command to all clients to start up a new AI.
 		 * Works fine for Multiplayer and Singleplayer */
-		DoCommandP(0, 1, 0, NULL, CMD_PLAYER_CTRL);
+		DoCommandP(0, 1, 0, NULL, CMD_COMPANY_CTRL);
 	}
 
 	/* The next AI starts like the difficulty setting said, with +2 month max */
@@ -573,44 +571,44 @@
 	_next_competitor_start += _network_server ? InteractiveRandomRange(60 * DAY_TICKS) : RandomRange(60 * DAY_TICKS);
 }
 
-void InitializePlayers()
+void InitializeCompanies()
 {
-	_Player_pool.CleanPool();
-	_Player_pool.AddBlockToPool();
-	_cur_player_tick_index = 0;
+	_Company_pool.CleanPool();
+	_Company_pool.AddBlockToPool();
+	_cur_company_tick_index = 0;
 }
 
-void OnTick_Players()
+void OnTick_Companies()
 {
 	if (_game_mode == GM_EDITOR) return;
 
-	if (IsValidPlayerID((PlayerID)_cur_player_tick_index)) {
-		Player *p = GetPlayer((PlayerID)_cur_player_tick_index);
-		if (p->name_1 != 0) GenerateCompanyName(p);
+	if (IsValidCompanyID((CompanyID)_cur_company_tick_index)) {
+		Company *c = GetCompany((CompanyID)_cur_company_tick_index);
+		if (c->name_1 != 0) GenerateCompanyName(c);
 
 		if (AI_AllowNewAI() && _game_mode != GM_MENU && !--_next_competitor_start) {
-			MaybeStartNewPlayer();
+			MaybeStartNewCompany();
 		}
 	}
 
-	_cur_player_tick_index = (_cur_player_tick_index + 1) % MAX_PLAYERS;
+	_cur_company_tick_index = (_cur_company_tick_index + 1) % MAX_COMPANIES;
 }
 
-void PlayersYearlyLoop()
+void CompaniesYearlyLoop()
 {
-	Player *p;
+	Company *c;
 
 	/* Copy statistics */
-	FOR_ALL_PLAYERS(p) {
-		memmove(&p->yearly_expenses[1], &p->yearly_expenses[0], sizeof(p->yearly_expenses) - sizeof(p->yearly_expenses[0]));
-		memset(&p->yearly_expenses[0], 0, sizeof(p->yearly_expenses[0]));
-		InvalidateWindow(WC_FINANCES, p->index);
+	FOR_ALL_COMPANIES(c) {
+		memmove(&c->yearly_expenses[1], &c->yearly_expenses[0], sizeof(c->yearly_expenses) - sizeof(c->yearly_expenses[0]));
+		memset(&c->yearly_expenses[0], 0, sizeof(c->yearly_expenses[0]));
+		InvalidateWindow(WC_FINANCES, c->index);
 	}
 
-	if (_settings_client.gui.show_finances && _local_player != PLAYER_SPECTATOR) {
-		ShowPlayerFinances(_local_player);
-		p = GetPlayer(_local_player);
-		if (p->num_valid_stat_ent > 5 && p->old_economy[0].performance_history < p->old_economy[4].performance_history) {
+	if (_settings_client.gui.show_finances && _local_company != COMPANY_SPECTATOR) {
+		ShowCompanyFinances(_local_company);
+		c = GetCompany(_local_company);
+		if (c->num_valid_stat_ent > 5 && c->old_economy[0].performance_history < c->old_economy[4].performance_history) {
 			SndPlayFx(SND_01_BAD_YEAR);
 		} else {
 			SndPlayFx(SND_00_GOOD_YEAR);
@@ -648,17 +646,17 @@
  */
 CommandCost CmdSetAutoReplace(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
 {
-	if (!IsValidPlayerID(_current_player)) return CMD_ERROR;
+	if (!IsValidCompanyID(_current_company)) return CMD_ERROR;
 
-	Player *p = GetPlayer(_current_player);
+	Company *c = GetCompany(_current_company);
 	switch (GB(p1, 0, 3)) {
 		case 0:
-			if (p->engine_renew == HasBit(p2, 0)) return CMD_ERROR;
+			if (c->engine_renew == HasBit(p2, 0)) return CMD_ERROR;
 
 			if (flags & DC_EXEC) {
-				p->engine_renew = HasBit(p2, 0);
-				if (IsLocalPlayer()) {
-					_settings_client.gui.autorenew = p->engine_renew;
+				c->engine_renew = HasBit(p2, 0);
+				if (IsLocalCompany()) {
+					_settings_client.gui.autorenew = c->engine_renew;
 					InvalidateWindow(WC_GAME_OPTIONS, 0);
 				}
 			}
@@ -666,12 +664,12 @@
 
 		case 1:
 			if (Clamp((int16)p2, -12, 12) != (int16)p2) return CMD_ERROR;
-			if (p->engine_renew_months == (int16)p2) return CMD_ERROR;
+			if (c->engine_renew_months == (int16)p2) return CMD_ERROR;
 
 			if (flags & DC_EXEC) {
-				p->engine_renew_months = (int16)p2;
-				if (IsLocalPlayer()) {
-					_settings_client.gui.autorenew_months = p->engine_renew_months;
+				c->engine_renew_months = (int16)p2;
+				if (IsLocalCompany()) {
+					_settings_client.gui.autorenew_months = c->engine_renew_months;
 					InvalidateWindow(WC_GAME_OPTIONS, 0);
 				}
 			}
@@ -679,12 +677,12 @@
 
 		case 2:
 			if (ClampU(p2, 0, 2000000) != p2) return CMD_ERROR;
-			if (p->engine_renew_money == p2) return CMD_ERROR;
+			if (c->engine_renew_money == p2) return CMD_ERROR;
 
 			if (flags & DC_EXEC) {
-				p->engine_renew_money = p2;
-				if (IsLocalPlayer()) {
-					_settings_client.gui.autorenew_money = p->engine_renew_money;
+				c->engine_renew_money = p2;
+				if (IsLocalCompany()) {
+					_settings_client.gui.autorenew_money = c->engine_renew_money;
 					InvalidateWindow(WC_GAME_OPTIONS, 0);
 				}
 			}
@@ -698,14 +696,14 @@
 
 			if (!IsValidGroupID(id_g) && !IsAllGroupID(id_g) && !IsDefaultGroupID(id_g)) return CMD_ERROR;
 			if (new_engine_type != INVALID_ENGINE) {
-				if (!CheckAutoreplaceValidity(old_engine_type, new_engine_type, _current_player)) return CMD_ERROR;
+				if (!CheckAutoreplaceValidity(old_engine_type, new_engine_type, _current_company)) return CMD_ERROR;
 
-				cost = AddEngineReplacementForPlayer(p, old_engine_type, new_engine_type, id_g, flags);
+				cost = AddEngineReplacementForCompany(c, old_engine_type, new_engine_type, id_g, flags);
 			} else {
-				cost = RemoveEngineReplacementForPlayer(p, old_engine_type, id_g, flags);
+				cost = RemoveEngineReplacementForCompany(c, old_engine_type, id_g, flags);
 			}
 
-			if (IsLocalPlayer()) InvalidateAutoreplaceWindow(old_engine_type, id_g);
+			if (IsLocalCompany()) InvalidateAutoreplaceWindow(old_engine_type, id_g);
 
 			return cost;
 		}
@@ -715,25 +713,25 @@
 			if (ClampU(p2, 0, 2000000) != p2) return CMD_ERROR;
 
 			if (flags & DC_EXEC) {
-				p->engine_renew = HasBit(p1, 15);
-				p->engine_renew_months = (int16)GB(p1, 16, 16);
-				p->engine_renew_money = p2;
+				c->engine_renew = HasBit(p1, 15);
+				c->engine_renew_months = (int16)GB(p1, 16, 16);
+				c->engine_renew_money = p2;
 
-				if (IsLocalPlayer()) {
-					_settings_client.gui.autorenew = p->engine_renew;
-					_settings_client.gui.autorenew_months = p->engine_renew_months;
-					_settings_client.gui.autorenew_money = p->engine_renew_money;
+				if (IsLocalCompany()) {
+					_settings_client.gui.autorenew = c->engine_renew;
+					_settings_client.gui.autorenew_months = c->engine_renew_months;
+					_settings_client.gui.autorenew_money = c->engine_renew_money;
 					InvalidateWindow(WC_GAME_OPTIONS, 0);
 				}
 			}
 			break;
 
 		case 5:
-			if (p->renew_keep_length == HasBit(p2, 0)) return CMD_ERROR;
+			if (c->renew_keep_length == HasBit(p2, 0)) return CMD_ERROR;
 
 			if (flags & DC_EXEC) {
-				p->renew_keep_length = HasBit(p2, 0);
-				if (IsLocalPlayer()) {
+				c->renew_keep_length = HasBit(p2, 0);
+				if (IsLocalCompany()) {
 					InvalidateWindow(WC_REPLACE_VEHICLE, VEH_TRAIN);
 				}
 			}
@@ -748,9 +746,9 @@
  * @param p the current company.
  * @param other the other company.
  */
-void CompanyNewsInformation::FillData(const Player *p, const Player *other)
+void CompanyNewsInformation::FillData(const Company *c, const Company *other)
 {
-	SetDParam(0, p->index);
+	SetDParam(0, c->index);
 	GetString(this->company_name, STR_COMPANY_NAME, lastof(this->company_name));
 
 	if (other == NULL) {
@@ -758,184 +756,184 @@
 	} else {
 		SetDParam(0, other->index);
 		GetString(this->other_company_name, STR_COMPANY_NAME, lastof(this->other_company_name));
-		p = other;
+		c = other;
 	}
 
-	SetDParam(0, p->index);
+	SetDParam(0, c->index);
 	GetString(this->president_name, STR_7058_PRESIDENT, lastof(this->president_name));
 
-	this->colour = p->player_color;
-	this->face = p->face;
+	this->colour = c->colour;
+	this->face = c->face;
 
 }
 
-/** Control the players: add, delete, etc.
+/** Control the companies: add, delete, etc.
  * @param tile unused
  * @param flags operation to perform
  * @param p1 various functionality
- * - p1 = 0 - create a new player, Which player (network) it will be is in p2
- * - p1 = 1 - create a new AI player
- * - p1 = 2 - delete a player. Player is identified by p2
- * - p1 = 3 - merge two companies together. Player to merge #1 with player #2. Identified by p2
+ * - p1 = 0 - create a new company, Which company (network) it will be is in p2
+ * - p1 = 1 - create a new AI company
+ * - p1 = 2 - delete a company. Company is identified by p2
+ * - p1 = 3 - merge two companies together. merge #1 with #2. Identified by p2
  * @param p2 various functionality, dictated by p1
- * - p1 = 0 - ClientID of the newly created player
- * - p1 = 2 - PlayerID of the that is getting deleted
- * - p1 = 3 - #1 p2 = (bit  0-15) - player to merge (p2 & 0xFFFF)
- *          - #2 p2 = (bit 16-31) - player to be merged into ((p2>>16)&0xFFFF)
- * @todo In the case of p1=0, create new player, the clientID of the new player is in parameter
+ * - p1 = 0 - ClientID of the newly created client
+ * - p1 = 2 - CompanyID of the that is getting deleted
+ * - p1 = 3 - #1 p2 = (bit  0-15) - company to merge (p2 & 0xFFFF)
+ *          - #2 p2 = (bit 16-31) - company to be merged into ((p2>>16)&0xFFFF)
+ * @todo In the case of p1=0, create new company, the clientID of the new client is in parameter
  * p2. This parameter is passed in at function DEF_SERVER_RECEIVE_COMMAND(PACKET_CLIENT_COMMAND)
  * on the server itself. First of all this is unbelievably ugly; second of all, well,
  * it IS ugly! <b>Someone fix this up :)</b> So where to fix?@n
  * @arg - network_server.c:838 DEF_SERVER_RECEIVE_COMMAND(PACKET_CLIENT_COMMAND)@n
  * @arg - network_client.c:536 DEF_CLIENT_RECEIVE_COMMAND(PACKET_SERVER_MAP) from where the map has been received
  */
-CommandCost CmdPlayerCtrl(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
+CommandCost CmdCompanyCtrl(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
 {
-	if (flags & DC_EXEC) _current_player = OWNER_NONE;
+	if (flags & DC_EXEC) _current_company = OWNER_NONE;
 
 	InvalidateWindowData(WC_COMPANY_LEAGUE, 0, 0);
 
 	switch (p1) {
-	case 0: { /* Create a new player */
-		/* This command is only executed in a multiplayer game */
-		if (!_networking) return CMD_ERROR;
+		case 0: { /* Create a new company */
+			/* This command is only executed in a multiplayer game */
+			if (!_networking) return CMD_ERROR;
 
 #ifdef ENABLE_NETWORK
 
-		/* Joining Client:
-		 * _local_player: PLAYER_SPECTATOR
-		 * _network_playas/cid = requested company/player
-		 *
-		 * Other client(s)/server:
-		 * _local_player/_network_playas: what they play as
-		 * cid = requested company/player of joining client */
-		uint16 cid = p2; // ClientID
-
-		/* Has the network client a correct ClientID? */
-		if (!(flags & DC_EXEC)) return CommandCost();
-		if (cid >= MAX_CLIENT_INFO) return CommandCost();
-
-		/* Delete multiplayer progress bar */
-		DeleteWindowById(WC_NETWORK_STATUS_WINDOW, 0);
-
-		Player *p = DoStartupNewPlayer(false);
+			/* Joining Client:
+			* _local_company: COMPANY_SPECTATOR
+			* _network_playas/cid = requested company/clientid
+			*
+			* Other client(s)/server:
+			* _local_company/_network_playas: what they play as
+			* cid = requested company/company of joining client */
+			uint16 cid = p2; // ClientID
 
-		/* A new player could not be created, revert to being a spectator */
-		if (p == NULL) {
-			if (_network_server) {
-				NetworkClientInfo *ci = &_network_client_info[cid];
-				ci->client_playas = PLAYER_SPECTATOR;
-				NetworkUpdateClientInfo(ci->client_index);
-			} else if (_local_player == PLAYER_SPECTATOR) {
-				_network_playas = PLAYER_SPECTATOR;
-			}
-			break;
-		}
+			/* Has the network client a correct ClientID? */
+			if (!(flags & DC_EXEC)) return CommandCost();
+			if (cid >= MAX_CLIENT_INFO) return CommandCost();
 
-		/* This is the joining client who wants a new company */
-		if (_local_player != _network_playas && _network_playas == p->index) {
-			assert(_local_player == PLAYER_SPECTATOR);
-			SetLocalPlayer(p->index);
-			if (!StrEmpty(_settings_client.network.default_company_pass)) {
-				char *password = _settings_client.network.default_company_pass;
-				NetworkChangeCompanyPassword(1, &password);
+			/* Delete multiplayer progress bar */
+			DeleteWindowById(WC_NETWORK_STATUS_WINDOW, 0);
+
+			Company *c = DoStartupNewCompany(false);
+
+			/* A new company could not be created, revert to being a spectator */
+			if (c == NULL) {
+				if (_network_server) {
+					NetworkClientInfo *ci = &_network_client_info[cid];
+					ci->client_playas = COMPANY_SPECTATOR;
+					NetworkUpdateClientInfo(ci->client_index);
+				} else if (_local_company == COMPANY_SPECTATOR) {
+					_network_playas = COMPANY_SPECTATOR;
+				}
+				break;
 			}
 
-			_current_player = _local_player;
-
-			/* Now that we have a new player, broadcast our autorenew settings to
-			 * all clients so everything is in sync */
-			NetworkSend_Command(0,
-				(_settings_client.gui.autorenew << 15 ) | (_settings_client.gui.autorenew_months << 16) | 4,
-				_settings_client.gui.autorenew_money,
-				CMD_SET_AUTOREPLACE,
-				NULL
-			);
-
-			MarkWholeScreenDirty();
-		}
-
-		if (_network_server) {
-			/* XXX - UGLY! p2 (pid) is mis-used to fetch the client-id, done at
-			 * server-side in network_server.c:838, function
-			 * DEF_SERVER_RECEIVE_COMMAND(PACKET_CLIENT_COMMAND) */
-			NetworkClientInfo *ci = &_network_client_info[cid];
-			ci->client_playas = p->index;
-			NetworkUpdateClientInfo(ci->client_index);
-
-			if (IsValidPlayerID(ci->client_playas)) {
-				PlayerID player_backup = _local_player;
-				_network_player_info[p->index].months_empty = 0;
-
-				/* XXX - When a client joins, we automatically set its name to the
-				 * player's name (for some reason). As it stands now only the server
-				 * knows the client's name, so it needs to send out a "broadcast" to
-				 * do this. To achieve this we send a network command. However, it
-				 * uses _local_player to execute the command as.  To prevent abuse
-				 * (eg. only yourself can change your name/company), we 'cheat' by
-				 * impersonation _local_player as the server. Not the best solution;
-				 * but it works.
-				 * TODO: Perhaps this could be improved by when the client is ready
-				 * with joining to let it send itself the command, and not the server?
-				 * For example in network_client.c:534? */
-				_cmd_text = ci->client_name;
-				_local_player = ci->client_playas;
-				NetworkSend_Command(0, 0, 0, CMD_RENAME_PRESIDENT, NULL);
-				_local_player = player_backup;
-			}
-		}
-#endif /* ENABLE_NETWORK */
-	} break;
+			/* This is the joining client who wants a new company */
+			if (_local_company != _network_playas && _network_playas == c->index) {
+				assert(_local_company == COMPANY_SPECTATOR);
+				SetLocalCompany(c->index);
+				if (!StrEmpty(_settings_client.network.default_company_pass)) {
+					char *password = _settings_client.network.default_company_pass;
+					NetworkChangeCompanyPassword(1, &password);
+				}
 
-	case 1: /* Make a new AI player */
-		if (!(flags & DC_EXEC)) return CommandCost();
-
-		DoStartupNewPlayer(true);
-		break;
-
-	case 2: { /* Delete a player */
-		Player *p;
-
-		if (!IsValidPlayerID((PlayerID)p2)) return CMD_ERROR;
-
-		if (!(flags & DC_EXEC)) return CommandCost();
-
-		p = GetPlayer((PlayerID)p2);
-
-		/* Only allow removal of HUMAN companies */
-		if (IsHumanPlayer(p->index)) {
-			/* Delete any open window of the company */
-			DeletePlayerWindows(p->index);
-
-			CompanyNewsInformation *cni = MallocT<CompanyNewsInformation>(1);
-			cni->FillData(p);
+				_current_company = _local_company;
 
-			/* Show the bankrupt news */
-			SetDParam(0, STR_705C_BANKRUPT);
-			SetDParam(1, STR_705D_HAS_BEEN_CLOSED_DOWN_BY);
-			SetDParamStr(2, cni->company_name);
-			AddNewsItem(STR_02B6, NS_COMPANY_BANKRUPT, 0, 0, cni);
-
-			/* Remove the company */
-			ChangeOwnershipOfPlayerItems(p->index, PLAYER_SPECTATOR);
-
-			delete p;
-		}
-	} break;
+				/* Now that we have a new company, broadcast our autorenew settings to
+				* all clients so everything is in sync */
+				NetworkSend_Command(0,
+					(_settings_client.gui.autorenew << 15 ) | (_settings_client.gui.autorenew_months << 16) | 4,
+					_settings_client.gui.autorenew_money,
+					CMD_SET_AUTOREPLACE,
+					NULL
+				);
 
-	case 3: { /* Merge a company (#1) into another company (#2), elimination company #1 */
-		PlayerID pid_old = (PlayerID)GB(p2,  0, 16);
-		PlayerID pid_new = (PlayerID)GB(p2, 16, 16);
-
-		if (!IsValidPlayerID(pid_old) || !IsValidPlayerID(pid_new)) return CMD_ERROR;
+				MarkWholeScreenDirty();
+			}
 
-		if (!(flags & DC_EXEC)) return CMD_ERROR;
+			if (_network_server) {
+				/* XXX - UGLY! p2 (pid) is mis-used to fetch the client-id, done at
+				* server-side in network_server.c:838, function
+				* DEF_SERVER_RECEIVE_COMMAND(PACKET_CLIENT_COMMAND) */
+				NetworkClientInfo *ci = &_network_client_info[cid];
+				ci->client_playas = c->index;
+				NetworkUpdateClientInfo(ci->client_index);
 
-		ChangeOwnershipOfPlayerItems(pid_old, pid_new);
-		delete GetPlayer(pid_old);
-	} break;
+				if (IsValidCompanyID(ci->client_playas)) {
+					CompanyID company_backup = _local_company;
+					_network_company_info[c->index].months_empty = 0;
 
-	default: return CMD_ERROR;
+					/* XXX - When a client joins, we automatically set its name to the
+					* client's name (for some reason). As it stands now only the server
+					* knows the client's name, so it needs to send out a "broadcast" to
+					* do this. To achieve this we send a network command. However, it
+					* uses _local_company to execute the command as.  To prevent abuse
+					* (eg. only yourself can change your name/company), we 'cheat' by
+					* impersonation _local_company as the server. Not the best solution;
+					* but it works.
+					* TODO: Perhaps this could be improved by when the client is ready
+					* with joining to let it send itself the command, and not the server?
+					* For example in network_client.c:534? */
+					_cmd_text = ci->client_name;
+					_local_company = ci->client_playas;
+					NetworkSend_Command(0, 0, 0, CMD_RENAME_PRESIDENT, NULL);
+					_local_company = company_backup;
+				}
+			}
+#endif /* ENABLE_NETWORK */
+		} break;
+
+		case 1: /* Make a new AI company */
+			if (!(flags & DC_EXEC)) return CommandCost();
+
+			DoStartupNewCompany(true);
+			break;
+
+		case 2: { /* Delete a company */
+			Company *c;
+
+			if (!IsValidCompanyID((CompanyID)p2)) return CMD_ERROR;
+
+			if (!(flags & DC_EXEC)) return CommandCost();
+
+			c = GetCompany((CompanyID)p2);
+
+			/* Only allow removal of HUMAN companies */
+			if (IsHumanCompany(c->index)) {
+				/* Delete any open window of the company */
+				DeleteCompanyWindows(c->index);
+
+				CompanyNewsInformation *cni = MallocT<CompanyNewsInformation>(1);
+				cni->FillData(c);
+
+				/* Show the bankrupt news */
+				SetDParam(0, STR_705C_BANKRUPT);
+				SetDParam(1, STR_705D_HAS_BEEN_CLOSED_DOWN_BY);
+				SetDParamStr(2, cni->company_name);
+				AddNewsItem(STR_02B6, NS_COMPANY_BANKRUPT, 0, 0, cni);
+
+				/* Remove the company */
+				ChangeOwnershipOfCompanyItems(c->index, INVALID_OWNER);
+
+				delete c;
+			}
+		} break;
+
+		case 3: { /* Merge a company (#1) into another company (#2), elimination company #1 */
+			CompanyID cid_old = (CompanyID)GB(p2,  0, 16);
+			CompanyID cid_new = (CompanyID)GB(p2, 16, 16);
+
+			if (!IsValidCompanyID(cid_old) || !IsValidCompanyID(cid_new)) return CMD_ERROR;
+
+			if (!(flags & DC_EXEC)) return CMD_ERROR;
+
+			ChangeOwnershipOfCompanyItems(cid_old, cid_new);
+			delete GetCompany(cid_old);
+		} break;
+
+		default: return CMD_ERROR;
 	}
 
 	return CommandCost();
@@ -967,12 +965,12 @@
 	return _endgame_perf_titles[value];
 }
 
-/** Save the highscore for the player */
-int8 SaveHighScoreValue(const Player *p)
+/** Save the highscore for the company */
+int8 SaveHighScoreValue(const Company *c)
 {
 	HighScore *hs = _highscore_table[_settings_game.difficulty.diff_level];
 	uint i;
-	uint16 score = p->old_economy[0].performance_history;
+	uint16 score = c->old_economy[0].performance_history;
 
 	/* Exclude cheaters from the honour of being in the highscore table */
 	if (CheatHasBeenUsed()) return -1;
@@ -982,8 +980,8 @@
 		if (hs[i].score <= score) {
 			/* move all elements one down starting from the replaced one */
 			memmove(&hs[i + 1], &hs[i], sizeof(HighScore) * (lengthof(_highscore_table[0]) - i - 1));
-			SetDParam(0, p->index);
-			SetDParam(1, p->index);
+			SetDParam(0, c->index);
+			SetDParam(1, c->index);
 			GetString(hs[i].company, STR_HIGHSCORE_NAME, lastof(hs[i].company)); // get manager/company name string
 			hs[i].score = score;
 			hs[i].title = EndGameGetPerformanceTitleFromValue(score);
@@ -994,8 +992,8 @@
 	return -1; // too bad; we did not make it into the top5
 }
 
-/** Sort all players given their performance */
-static int CDECL HighScoreSorter(const Player* const *a, const Player* const *b)
+/** Sort all companies given their performance */
+static int CDECL HighScoreSorter(const Company* const *a, const Company* const *b)
 {
 	return (*b)->old_economy[0].performance_history - (*a)->old_economy[0].performance_history;
 }
@@ -1004,15 +1002,15 @@
 #define LAST_HS_ITEM lengthof(_highscore_table) - 1
 int8 SaveHighScoreValueNetwork()
 {
-	const Player* p;
-	const Player* pl[MAX_PLAYERS];
+	const Company *c;
+	const Company *cl[MAX_COMPANIES];
 	uint count = 0;
-	int8 player = -1;
+	int8 company = -1;
 
-	/* Sort all active players with the highest score first */
-	FOR_ALL_PLAYERS(p) pl[count++] = p;
+	/* Sort all active companies with the highest score first */
+	FOR_ALL_COMPANIES(c) cl[count++] = c;
 
-	GSortT(pl, count, &HighScoreSorter);
+	GSortT(cl, count, &HighScoreSorter);
 
 	{
 		uint i;
@@ -1023,19 +1021,19 @@
 		for (i = 0; i < lengthof(_highscore_table[LAST_HS_ITEM]) && i < count; i++) {
 			HighScore* hs = &_highscore_table[LAST_HS_ITEM][i];
 
-			SetDParam(0, pl[i]->index);
-			SetDParam(1, pl[i]->index);
+			SetDParam(0, cl[i]->index);
+			SetDParam(1, cl[i]->index);
 			GetString(hs->company, STR_HIGHSCORE_NAME, lastof(hs->company)); // get manager/company name string
-			hs->score = pl[i]->old_economy[0].performance_history;
+			hs->score = cl[i]->old_economy[0].performance_history;
 			hs->title = EndGameGetPerformanceTitleFromValue(hs->score);
 
-			/* get the ranking of the local player */
-			if (pl[i]->index == _local_player) player = i;
+			/* get the ranking of the local company */
+			if (cl[i]->index == _local_company) company = i;
 		}
 	}
 
-	/* Add top5 players to highscore table */
-	return player;
+	/* Add top5 companys to highscore table */
+	return company;
 }
 
 /** Save HighScore table to file */
@@ -1099,63 +1097,63 @@
 	_settings_client.gui.ending_year = 2051;
 }
 
-/* Save/load of players */
-static const SaveLoad _player_desc[] = {
-	    SLE_VAR(Player, name_2,          SLE_UINT32),
-	    SLE_VAR(Player, name_1,          SLE_STRINGID),
-	SLE_CONDSTR(Player, name,            SLE_STR, 0,                       84, SL_MAX_VERSION),
+/* Save/load of companies */
+static const SaveLoad _company_desc[] = {
+	    SLE_VAR(Company, name_2,          SLE_UINT32),
+	    SLE_VAR(Company, name_1,          SLE_STRINGID),
+	SLE_CONDSTR(Company, name,            SLE_STR, 0,                       84, SL_MAX_VERSION),
 
-	    SLE_VAR(Player, president_name_1, SLE_UINT16),
-	    SLE_VAR(Player, president_name_2, SLE_UINT32),
-	SLE_CONDSTR(Player, president_name,  SLE_STR, 0,                       84, SL_MAX_VERSION),
+	    SLE_VAR(Company, president_name_1, SLE_UINT16),
+	    SLE_VAR(Company, president_name_2, SLE_UINT32),
+	SLE_CONDSTR(Company, president_name,  SLE_STR, 0,                       84, SL_MAX_VERSION),
 
-	    SLE_VAR(Player, face,            SLE_UINT32),
+	    SLE_VAR(Company, face,            SLE_UINT32),
 
 	/* money was changed to a 64 bit field in savegame version 1. */
-	SLE_CONDVAR(Player, player_money,          SLE_VAR_I64 | SLE_FILE_I32,  0, 0),
-	SLE_CONDVAR(Player, player_money,          SLE_INT64,                   1, SL_MAX_VERSION),
-
-	SLE_CONDVAR(Player, current_loan,          SLE_VAR_I64 | SLE_FILE_I32,  0, 64),
-	SLE_CONDVAR(Player, current_loan,          SLE_INT64,                  65, SL_MAX_VERSION),
-
-	    SLE_VAR(Player, player_color,          SLE_UINT8),
-	    SLE_VAR(Player, player_money_fraction, SLE_UINT8),
-	SLE_CONDVAR(Player, avail_railtypes,       SLE_UINT8,                   0, 57),
-	    SLE_VAR(Player, block_preview,         SLE_UINT8),
+	SLE_CONDVAR(Company, money,                 SLE_VAR_I64 | SLE_FILE_I32,  0, 0),
+	SLE_CONDVAR(Company, money,                 SLE_INT64,                   1, SL_MAX_VERSION),
 
-	SLE_CONDVAR(Player, cargo_types,           SLE_FILE_U16 | SLE_VAR_U32,  0, 93),
-	SLE_CONDVAR(Player, cargo_types,           SLE_UINT32,                 94, SL_MAX_VERSION),
-	SLE_CONDVAR(Player, location_of_HQ,        SLE_FILE_U16 | SLE_VAR_U32,  0,  5),
-	SLE_CONDVAR(Player, location_of_HQ,        SLE_UINT32,                  6, SL_MAX_VERSION),
-	SLE_CONDVAR(Player, last_build_coordinate, SLE_FILE_U16 | SLE_VAR_U32,  0,  5),
-	SLE_CONDVAR(Player, last_build_coordinate, SLE_UINT32,                  6, SL_MAX_VERSION),
-	SLE_CONDVAR(Player, inaugurated_year,      SLE_FILE_U8  | SLE_VAR_I32,  0, 30),
-	SLE_CONDVAR(Player, inaugurated_year,      SLE_INT32,                  31, SL_MAX_VERSION),
+	SLE_CONDVAR(Company, current_loan,          SLE_VAR_I64 | SLE_FILE_I32,  0, 64),
+	SLE_CONDVAR(Company, current_loan,          SLE_INT64,                  65, SL_MAX_VERSION),
 
-	    SLE_ARR(Player, share_owners,          SLE_UINT8, 4),
-
-	    SLE_VAR(Player, num_valid_stat_ent,    SLE_UINT8),
+	    SLE_VAR(Company, colour,                SLE_UINT8),
+	    SLE_VAR(Company, money_fraction,        SLE_UINT8),
+	SLE_CONDVAR(Company, avail_railtypes,       SLE_UINT8,                   0, 57),
+	    SLE_VAR(Company, block_preview,         SLE_UINT8),
 
-	    SLE_VAR(Player, quarters_of_bankrupcy, SLE_UINT8),
-	    SLE_VAR(Player, bankrupt_asked,        SLE_UINT8),
-	    SLE_VAR(Player, bankrupt_timeout,      SLE_INT16),
-	SLE_CONDVAR(Player, bankrupt_value,        SLE_VAR_I64 | SLE_FILE_I32,  0, 64),
-	SLE_CONDVAR(Player, bankrupt_value,        SLE_INT64,                  65, SL_MAX_VERSION),
+	SLE_CONDVAR(Company, cargo_types,           SLE_FILE_U16 | SLE_VAR_U32,  0, 93),
+	SLE_CONDVAR(Company, cargo_types,           SLE_UINT32,                 94, SL_MAX_VERSION),
+	SLE_CONDVAR(Company, location_of_HQ,        SLE_FILE_U16 | SLE_VAR_U32,  0,  5),
+	SLE_CONDVAR(Company, location_of_HQ,        SLE_UINT32,                  6, SL_MAX_VERSION),
+	SLE_CONDVAR(Company, last_build_coordinate, SLE_FILE_U16 | SLE_VAR_U32,  0,  5),
+	SLE_CONDVAR(Company, last_build_coordinate, SLE_UINT32,                  6, SL_MAX_VERSION),
+	SLE_CONDVAR(Company, inaugurated_year,      SLE_FILE_U8  | SLE_VAR_I32,  0, 30),
+	SLE_CONDVAR(Company, inaugurated_year,      SLE_INT32,                  31, SL_MAX_VERSION),
+
+	    SLE_ARR(Company, share_owners,          SLE_UINT8, 4),
+
+	    SLE_VAR(Company, num_valid_stat_ent,    SLE_UINT8),
+
+	    SLE_VAR(Company, quarters_of_bankrupcy, SLE_UINT8),
+	    SLE_VAR(Company, bankrupt_asked,        SLE_UINT8),
+	    SLE_VAR(Company, bankrupt_timeout,      SLE_INT16),
+	SLE_CONDVAR(Company, bankrupt_value,        SLE_VAR_I64 | SLE_FILE_I32,  0, 64),
+	SLE_CONDVAR(Company, bankrupt_value,        SLE_INT64,                  65, SL_MAX_VERSION),
 
 	/* yearly expenses was changed to 64-bit in savegame version 2. */
-	SLE_CONDARR(Player, yearly_expenses,       SLE_FILE_I32 | SLE_VAR_I64, 3 * 13, 0, 1),
-	SLE_CONDARR(Player, yearly_expenses,       SLE_INT64, 3 * 13,                  2, SL_MAX_VERSION),
+	SLE_CONDARR(Company, yearly_expenses,       SLE_FILE_I32 | SLE_VAR_I64, 3 * 13, 0, 1),
+	SLE_CONDARR(Company, yearly_expenses,       SLE_INT64, 3 * 13,                  2, SL_MAX_VERSION),
 
-	SLE_CONDVAR(Player, is_ai,                 SLE_BOOL, 2, SL_MAX_VERSION),
+	SLE_CONDVAR(Company, is_ai,                 SLE_BOOL, 2, SL_MAX_VERSION),
 	SLE_CONDNULL(1, 4, 99),
 
 	/* Engine renewal settings */
 	SLE_CONDNULL(512, 16, 18),
-	SLE_CONDREF(Player, engine_renew_list,     REF_ENGINE_RENEWS,          19, SL_MAX_VERSION),
-	SLE_CONDVAR(Player, engine_renew,          SLE_BOOL,                   16, SL_MAX_VERSION),
-	SLE_CONDVAR(Player, engine_renew_months,   SLE_INT16,                  16, SL_MAX_VERSION),
-	SLE_CONDVAR(Player, engine_renew_money,    SLE_UINT32,                 16, SL_MAX_VERSION),
-	SLE_CONDVAR(Player, renew_keep_length,     SLE_BOOL,                    2, SL_MAX_VERSION), // added with 16.1, but was blank since 2
+	SLE_CONDREF(Company, engine_renew_list,     REF_ENGINE_RENEWS,          19, SL_MAX_VERSION),
+	SLE_CONDVAR(Company, engine_renew,          SLE_BOOL,                   16, SL_MAX_VERSION),
+	SLE_CONDVAR(Company, engine_renew_months,   SLE_INT16,                  16, SL_MAX_VERSION),
+	SLE_CONDVAR(Company, engine_renew_money,    SLE_UINT32,                 16, SL_MAX_VERSION),
+	SLE_CONDVAR(Company, renew_keep_length,     SLE_BOOL,                    2, SL_MAX_VERSION), // added with 16.1, but was blank since 2
 
 	/* reserve extra space in savegame here. (currently 63 bytes) */
 	SLE_CONDNULL(63, 2, SL_MAX_VERSION),
@@ -1163,73 +1161,73 @@
 	SLE_END()
 };
 
-static const SaveLoad _player_economy_desc[] = {
+static const SaveLoad _company_economy_desc[] = {
 	/* these were changed to 64-bit in savegame format 2 */
-	SLE_CONDVAR(PlayerEconomyEntry, income,              SLE_FILE_I32 | SLE_VAR_I64, 0, 1),
-	SLE_CONDVAR(PlayerEconomyEntry, income,              SLE_INT64,                  2, SL_MAX_VERSION),
-	SLE_CONDVAR(PlayerEconomyEntry, expenses,            SLE_FILE_I32 | SLE_VAR_I64, 0, 1),
-	SLE_CONDVAR(PlayerEconomyEntry, expenses,            SLE_INT64,                  2, SL_MAX_VERSION),
-	SLE_CONDVAR(PlayerEconomyEntry, company_value,       SLE_FILE_I32 | SLE_VAR_I64, 0, 1),
-	SLE_CONDVAR(PlayerEconomyEntry, company_value,       SLE_INT64,                  2, SL_MAX_VERSION),
+	SLE_CONDVAR(CompanyEconomyEntry, income,              SLE_FILE_I32 | SLE_VAR_I64, 0, 1),
+	SLE_CONDVAR(CompanyEconomyEntry, income,              SLE_INT64,                  2, SL_MAX_VERSION),
+	SLE_CONDVAR(CompanyEconomyEntry, expenses,            SLE_FILE_I32 | SLE_VAR_I64, 0, 1),
+	SLE_CONDVAR(CompanyEconomyEntry, expenses,            SLE_INT64,                  2, SL_MAX_VERSION),
+	SLE_CONDVAR(CompanyEconomyEntry, company_value,       SLE_FILE_I32 | SLE_VAR_I64, 0, 1),
+	SLE_CONDVAR(CompanyEconomyEntry, company_value,       SLE_INT64,                  2, SL_MAX_VERSION),
 
-	    SLE_VAR(PlayerEconomyEntry, delivered_cargo,     SLE_INT32),
-	    SLE_VAR(PlayerEconomyEntry, performance_history, SLE_INT32),
+	    SLE_VAR(CompanyEconomyEntry, delivered_cargo,     SLE_INT32),
+	    SLE_VAR(CompanyEconomyEntry, performance_history, SLE_INT32),
 
 	SLE_END()
 };
 
-static const SaveLoad _player_livery_desc[] = {
+static const SaveLoad _company_livery_desc[] = {
 	SLE_CONDVAR(Livery, in_use,  SLE_BOOL,  34, SL_MAX_VERSION),
 	SLE_CONDVAR(Livery, colour1, SLE_UINT8, 34, SL_MAX_VERSION),
 	SLE_CONDVAR(Livery, colour2, SLE_UINT8, 34, SL_MAX_VERSION),
 	SLE_END()
 };
 
-static void SaveLoad_PLYR(Player* p)
+static void SaveLoad_PLYR(Company *c)
 {
 	int i;
 
-	SlObject(p, _player_desc);
+	SlObject(c, _company_desc);
 
 	/* Write AI? */
-	if (!IsHumanPlayer(p->index)) {
-		SaveLoad_AI(p->index);
+	if (!IsHumanCompany(c->index)) {
+		SaveLoad_AI(c->index);
 	}
 
 	/* Write economy */
-	SlObject(&p->cur_economy, _player_economy_desc);
+	SlObject(&c->cur_economy, _company_economy_desc);
 
 	/* Write old economy entries. */
-	for (i = 0; i < p->num_valid_stat_ent; i++) {
-		SlObject(&p->old_economy[i], _player_economy_desc);
+	for (i = 0; i < c->num_valid_stat_ent; i++) {
+		SlObject(&c->old_economy[i], _company_economy_desc);
 	}
 
 	/* Write each livery entry. */
 	int num_liveries = CheckSavegameVersion(63) ? LS_END - 4 : (CheckSavegameVersion(85) ? LS_END - 2: LS_END);
 	for (i = 0; i < num_liveries; i++) {
-		SlObject(&p->livery[i], _player_livery_desc);
+		SlObject(&c->livery[i], _company_livery_desc);
 	}
 
 	if (num_liveries < LS_END) {
 		/* We want to insert some liveries somewhere in between. This means some have to be moved. */
-		memmove(&p->livery[LS_FREIGHT_WAGON], &p->livery[LS_PASSENGER_WAGON_MONORAIL], (LS_END - LS_FREIGHT_WAGON) * sizeof(p->livery[0]));
-		p->livery[LS_PASSENGER_WAGON_MONORAIL] = p->livery[LS_MONORAIL];
-		p->livery[LS_PASSENGER_WAGON_MAGLEV]   = p->livery[LS_MAGLEV];
+		memmove(&c->livery[LS_FREIGHT_WAGON], &c->livery[LS_PASSENGER_WAGON_MONORAIL], (LS_END - LS_FREIGHT_WAGON) * sizeof(c->livery[0]));
+		c->livery[LS_PASSENGER_WAGON_MONORAIL] = c->livery[LS_MONORAIL];
+		c->livery[LS_PASSENGER_WAGON_MAGLEV]   = c->livery[LS_MAGLEV];
 	}
 
 	if (num_liveries == LS_END - 4) {
 		/* Copy bus/truck liveries over to trams */
-		p->livery[LS_PASSENGER_TRAM] = p->livery[LS_BUS];
-		p->livery[LS_FREIGHT_TRAM]   = p->livery[LS_TRUCK];
+		c->livery[LS_PASSENGER_TRAM] = c->livery[LS_BUS];
+		c->livery[LS_FREIGHT_TRAM]   = c->livery[LS_TRUCK];
 	}
 }
 
 static void Save_PLYR()
 {
-	Player *p;
-	FOR_ALL_PLAYERS(p) {
-		SlSetArrayIndex(p->index);
-		SlAutolength((AutolengthProc*)SaveLoad_PLYR, p);
+	Company *c;
+	FOR_ALL_COMPANIES(c) {
+		SlSetArrayIndex(c->index);
+		SlAutolength((AutolengthProc*)SaveLoad_PLYR, c);
 	}
 }
 
@@ -1237,19 +1235,19 @@
 {
 	int index;
 	while ((index = SlIterateArray()) != -1) {
-		Player *p = new (index) Player();
-		SaveLoad_PLYR(p);
-		_player_colors[index] = p->player_color;
+		Company *c = new (index) Company();
+		SaveLoad_PLYR(c);
+		_company_colours[index] = c->colour;
 
 		/* This is needed so an AI is attached to a loaded AI */
-		if (p->is_ai && (!_networking || _network_server) && _ai.enabled) {
+		if (c->is_ai && (!_networking || _network_server) && _ai.enabled) {
 			/* Clear the memory of the new AI, otherwise we might be doing wrong things. */
-			memset(&_players_ainew[index], 0, sizeof(PlayerAiNew));
-			AI_StartNewAI(p->index);
+			memset(&_companies_ainew[index], 0, sizeof(CompanyAiNew));
+			AI_StartNewAI(c->index);
 		}
 	}
 }
 
-extern const ChunkHandler _player_chunk_handlers[] = {
+extern const ChunkHandler _company_chunk_handlers[] = {
 	{ 'PLYR', Save_PLYR, Load_PLYR, CH_ARRAY | CH_LAST},
 };
--- a/src/rail.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/rail.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -174,25 +174,25 @@
 	return INVALID_RAILTYPE;
 }
 
-bool HasRailtypeAvail(const PlayerID p, const RailType railtype)
+bool HasRailtypeAvail(const CompanyID company, const RailType railtype)
 {
-	return HasBit(GetPlayer(p)->avail_railtypes, railtype);
+	return HasBit(GetCompany(company)->avail_railtypes, railtype);
 }
 
 bool ValParamRailtype(const RailType rail)
 {
-	return HasRailtypeAvail(_current_player, rail);
+	return HasRailtypeAvail(_current_company, rail);
 }
 
-RailType GetBestRailtype(const PlayerID p)
+RailType GetBestRailtype(const CompanyID company)
 {
-	if (HasRailtypeAvail(p, RAILTYPE_MAGLEV)) return RAILTYPE_MAGLEV;
-	if (HasRailtypeAvail(p, RAILTYPE_MONO)) return RAILTYPE_MONO;
-	if (HasRailtypeAvail(p, RAILTYPE_ELECTRIC)) return RAILTYPE_ELECTRIC;
+	if (HasRailtypeAvail(company, RAILTYPE_MAGLEV)) return RAILTYPE_MAGLEV;
+	if (HasRailtypeAvail(company, RAILTYPE_MONO)) return RAILTYPE_MONO;
+	if (HasRailtypeAvail(company, RAILTYPE_ELECTRIC)) return RAILTYPE_ELECTRIC;
 	return RAILTYPE_RAIL;
 }
 
-RailTypes GetPlayerRailtypes(PlayerID p)
+RailTypes GetCompanyRailtypes(CompanyID company)
 {
 	RailTypes rt = RAILTYPES_NONE;
 
@@ -201,7 +201,7 @@
 		const EngineInfo *ei = &e->info;
 
 		if (HasBit(ei->climates, _settings_game.game_creation.landscape) &&
-				(HasBit(e->player_avail, p) || _date >= e->intro_date + 365)) {
+				(HasBit(e->company_avail, company) || _date >= e->intro_date + 365)) {
 			const RailVehicleInfo *rvi = &e->u.rail;
 
 			if (rvi->railveh_type != RAILVEH_WAGON) {
--- a/src/rail.h	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/rail.h	Tue Sep 30 20:39:50 2008 +0000
@@ -210,35 +210,35 @@
 
 
 /**
- * Finds out if a Player has a certain railtype available
- * @param p Player in question
+ * Finds out if a company has a certain railtype available
+ * @param company the company in question
  * @param railtype requested RailType
- * @return true if player has requested RailType available
+ * @return true if company has requested RailType available
  */
-bool HasRailtypeAvail(const PlayerID p, const RailType railtype);
+bool HasRailtypeAvail(const CompanyID company, const RailType railtype);
 
 /**
  * Validate functions for rail building.
  * @param rail the railtype to check.
- * @return true if the current player may build the rail.
+ * @return true if the current company may build the rail.
  */
 bool ValParamRailtype(const RailType rail);
 
 /**
- * Returns the "best" railtype a player can build.
+ * Returns the "best" railtype a company can build.
  * As the AI doesn't know what the BEST one is, we have our own priority list
  * here. When adding new railtypes, modify this function
- * @param p the player "in action"
- * @return The "best" railtype a player has available
+ * @param company the company "in action"
+ * @return The "best" railtype a company has available
  */
-RailType GetBestRailtype(const PlayerID p);
+RailType GetBestRailtype(const CompanyID company);
 
 /**
- * Get the rail types the given player can build.
- * @param p the player to get the rail types for.
+ * Get the rail types the given company can build.
+ * @param company the company to get the rail types for.
  * @return the rail types.
  */
-RailTypes GetPlayerRailtypes(const PlayerID p);
+RailTypes GetCompanyRailtypes(const CompanyID p);
 
 /**
  * Reset all rail type information to its default values.
--- a/src/rail_cmd.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/rail_cmd.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -155,7 +155,7 @@
 
 	/* Let's see if we may build this */
 	if (flags & DC_NO_RAIL_OVERLAP || HasSignals(tile)) {
-		/* If we are not allowed to overlap (flag is on for ai players or we have
+		/* If we are not allowed to overlap (flag is on for ai companies or we have
 		 * signals on the tile), check that */
 		return future == TRACK_BIT_HORZ || future == TRACK_BIT_VERT;
 	} else {
@@ -307,7 +307,7 @@
 
 	/* check track/slope combination */
 	if ((f_new == FOUNDATION_INVALID) ||
-			((f_new != FOUNDATION_NONE) && (!_settings_game.construction.build_on_slopes || _is_old_ai_player))) {
+			((f_new != FOUNDATION_NONE) && (!_settings_game.construction.build_on_slopes || _is_old_ai_company))) {
 		return_cmd_error(STR_1000_LAND_SLOPED_IN_WRONG_DIRECTION);
 	}
 
@@ -344,7 +344,7 @@
 					!EnsureNoTrainOnTrack(tile, track)) {
 				return CMD_ERROR;
 			}
-			if (!IsTileOwner(tile, _current_player) ||
+			if (!IsTileOwner(tile, _current_company) ||
 					!IsCompatibleRail(GetRailType(tile), railtype)) {
 				/* Get detailed error message */
 				return DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
@@ -395,7 +395,7 @@
 					default: break;
 					case ROADTYPES_TRAM:
 						/* Tram crossings must always have road. */
-						if (flags & DC_EXEC) SetRoadOwner(tile, ROADTYPE_ROAD, _current_player);
+						if (flags & DC_EXEC) SetRoadOwner(tile, ROADTYPE_ROAD, _current_company);
 						roadtypes |= ROADTYPES_ROAD;
 						break;
 
@@ -412,7 +412,7 @@
 				if ((track == TRACK_X && road == ROAD_Y) ||
 						(track == TRACK_Y && road == ROAD_X)) {
 					if (flags & DC_EXEC) {
-						MakeRoadCrossing(tile, GetRoadOwner(tile, ROADTYPE_ROAD), GetRoadOwner(tile, ROADTYPE_TRAM), GetRoadOwner(tile, ROADTYPE_HWAY), _current_player, (track == TRACK_X ? AXIS_Y : AXIS_X), railtype, roadtypes, GetTownIndex(tile));
+						MakeRoadCrossing(tile, GetRoadOwner(tile, ROADTYPE_ROAD), GetRoadOwner(tile, ROADTYPE_TRAM), GetRoadOwner(tile, ROADTYPE_HWAY), _current_company, (track == TRACK_X ? AXIS_Y : AXIS_X), railtype, roadtypes, GetTownIndex(tile));
 						UpdateLevelCrossing(tile, false);
 					}
 					break;
@@ -442,7 +442,7 @@
 			}
 
 			if (flags & DC_EXEC) {
-				MakeRailNormal(tile, _current_player, trackbit, railtype);
+				MakeRailNormal(tile, _current_company, trackbit, railtype);
 				if (water_ground) SetRailGroundType(tile, RAIL_GROUND_WATER);
 			}
 			break;
@@ -450,7 +450,7 @@
 
 	if (flags & DC_EXEC) {
 		MarkTileDirtyByTile(tile);
-		AddTrackToSignalBuffer(tile, track, _current_player);
+		AddTrackToSignalBuffer(tile, track, _current_company);
 		YapfNotifyTrackLayoutChange(tile, track);
 	}
 
@@ -474,7 +474,7 @@
 	trackbit = TrackToTrackBits(track);
 
 	/* Need to read tile owner now because it may change when the rail is removed
-	 * Also, in case of floods, _current_player != owner
+	 * Also, in case of floods, _current_company != owner
 	 * There may be invalid tiletype even in exec run (when removing long track),
 	 * so do not call GetTileOwner(tile) in any case here */
 	Owner owner = INVALID_OWNER;
@@ -485,7 +485,7 @@
 		case MP_ROAD: {
 			if (!IsLevelCrossing(tile) ||
 					GetCrossingRailBits(tile) != trackbit ||
-					(_current_player != OWNER_WATER && !CheckTileOwnership(tile)) ||
+					(_current_company != OWNER_WATER && !CheckTileOwnership(tile)) ||
 					(!(flags & DC_BANKRUPT) && !EnsureNoVehicleOnGround(tile))) {
 				return CMD_ERROR;
 			}
@@ -505,7 +505,7 @@
 			TrackBits present;
 
 			if (!IsPlainRailTile(tile) ||
-					(_current_player != OWNER_WATER && !CheckTileOwnership(tile)) ||
+					(_current_company != OWNER_WATER && !CheckTileOwnership(tile)) ||
 					!EnsureNoTrainOnTrack(tile, track)) {
 				return CMD_ERROR;
 			}
@@ -546,7 +546,7 @@
 
 	if (flags & DC_EXEC) {
 		/* if we got that far, 'owner' variable is set correctly */
-		assert(IsValidPlayerID(owner));
+		assert(IsValidCompanyID(owner));
 
 		MarkTileDirtyByTile(tile);
 		if (crossing) {
@@ -590,7 +590,7 @@
 
 		TrackBits to_remove = lower_track & rail_bits;
 		if (to_remove != 0) {
-			_current_player = OWNER_WATER;
+			_current_company = OWNER_WATER;
 			if (CmdFailed(DoCommand(t, 0, FIND_FIRST_BIT(to_remove), DC_EXEC, CMD_REMOVE_SINGLE_RAIL))) return flooded; // not yet floodable
 			flooded = true;
 			rail_bits = rail_bits & ~to_remove;
@@ -789,7 +789,7 @@
 	 */
 
 	if (tileh != SLOPE_FLAT && (
-				_is_old_ai_player ||
+				_is_old_ai_company ||
 				!_settings_game.construction.build_on_slopes ||
 				IsSteepSlope(tileh) ||
 				!CanBuildDepotByTileh(dir, tileh)
@@ -806,12 +806,12 @@
 
 	if (flags & DC_EXEC) {
 		Depot *d = new Depot(tile);
-		MakeRailDepot(tile, _current_player, dir, (RailType)p1);
+		MakeRailDepot(tile, _current_company, dir, (RailType)p1);
 		MarkTileDirtyByTile(tile);
 
 		d->town_index = ClosestTownFromTile(tile, (uint)-1)->index;
 
-		AddSideToSignalBuffer(tile, INVALID_DIAGDIR, _current_player);
+		AddSideToSignalBuffer(tile, INVALID_DIAGDIR, _current_company);
 		YapfNotifyTrackLayoutChange(tile, DiagDirToDiagTrack(dir));
 	}
 
@@ -971,7 +971,7 @@
 			SetSignalStates(tile, (GetSignalStates(tile) & ~mask) | ((HasBit(GetTrackReservation(tile), track) ? (uint)-1 : 0) & mask));
 		}
 		MarkTileDirtyByTile(tile);
-		AddTrackToSignalBuffer(tile, track, _current_player);
+		AddTrackToSignalBuffer(tile, track, _current_company);
 		YapfNotifyTrackLayoutChange(tile, track);
 		if (v != NULL) TryPathReserve(v, true);
 	}
@@ -1200,7 +1200,7 @@
 	}
 
 	/* Only water can remove signals from anyone */
-	if (_current_player != OWNER_WATER && !CheckTileOwnership(tile)) return CMD_ERROR;
+	if (_current_company != OWNER_WATER && !CheckTileOwnership(tile)) return CMD_ERROR;
 
 	/* Do it? */
 	if (flags & DC_EXEC) {
@@ -1441,7 +1441,7 @@
 
 static CommandCost RemoveTrainDepot(TileIndex tile, uint32 flags)
 {
-	if (!CheckTileOwnership(tile) && _current_player != OWNER_WATER)
+	if (!CheckTileOwnership(tile) && _current_company != OWNER_WATER)
 		return CMD_ERROR;
 
 	if (!EnsureNoVehicleOnGround(tile))
@@ -1474,7 +1474,7 @@
 	CommandCost ret;
 
 	if (flags & DC_AUTO) {
-		if (!IsTileOwner(tile, _current_player))
+		if (!IsTileOwner(tile, _current_company))
 			return_cmd_error(STR_1024_AREA_IS_OWNED_BY_ANOTHER);
 
 		if (IsPlainRailTile(tile)) {
@@ -1902,7 +1902,7 @@
 	const RailtypeInfo *rti = GetRailTypeInfo(GetRailType(ti->tile));
 	SpriteID image;
 
-	_drawtile_track_palette = PLAYER_SPRITE_COLOR(GetTileOwner(ti->tile));
+	_drawtile_track_palette = COMPANY_SPRITE_COLOR(GetTileOwner(ti->tile));
 
 	if (IsPlainRailTile(ti->tile)) {
 		TrackBits rails = GetTrackBits(ti->tile);
@@ -2039,7 +2039,7 @@
 
 static void DrawTileSequence(int x, int y, SpriteID ground, const DrawTileSeqStruct* dtss, uint32 offset)
 {
-	SpriteID palette = PLAYER_SPRITE_COLOR(_local_player);
+	SpriteID palette = COMPANY_SPRITE_COLOR(_local_company);
 
 	DrawSprite(ground, PAL_NONE, x, y);
 	for (; dtss->image.sprite != 0; dtss++) {
@@ -2188,7 +2188,7 @@
 			case TRACK_BIT_RIGHT: new_ground = RAIL_GROUND_FENCE_VERT2;  break;
 
 			default: {
-				PlayerID owner = GetTileOwner(tile);
+				Owner owner = GetTileOwner(tile);
 
 				if (rail == (TRACK_BIT_LOWER | TRACK_BIT_RIGHT) || (
 							(rail & TRACK_BIT_3WAY_NW) == 0 &&
@@ -2414,12 +2414,12 @@
 	}
 }
 
-static void ChangeTileOwner_Track(TileIndex tile, PlayerID old_player, PlayerID new_player)
+static void ChangeTileOwner_Track(TileIndex tile, Owner old_owner, Owner new_owner)
 {
-	if (!IsTileOwner(tile, old_player)) return;
-
-	if (new_player != PLAYER_SPECTATOR) {
-		SetTileOwner(tile, new_player);
+	if (!IsTileOwner(tile, old_owner)) return;
+
+	if (new_owner != INVALID_OWNER) {
+		SetTileOwner(tile, new_owner);
 	} else {
 		DoCommand(tile, 0, 0, DC_EXEC | DC_BANKRUPT, CMD_LANDSCAPE_CLEAR);
 	}
--- a/src/rail_gui.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/rail_gui.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -843,7 +843,7 @@
 {
 	BuildRailToolbarWindow *w;
 
-	if (!IsValidPlayerID(_current_player)) return;
+	if (!IsValidCompanyID(_current_company)) return;
 	if (!ValParamRailtype(railtype)) return;
 
 	// don't recreate the window if we're clicking on a button and the window exists.
@@ -1718,7 +1718,7 @@
 /** Set the initial (default) railtype to use */
 static void SetDefaultRailGui()
 {
-	if (_local_player == PLAYER_SPECTATOR || !IsValidPlayerID(_local_player)) return;
+	if (_local_company == COMPANY_SPECTATOR || !IsValidCompanyID(_local_company)) return;
 
 	extern RailType _last_built_railtype;
 	RailType rt = (RailType)_settings_client.gui.default_rail_type;
@@ -1745,11 +1745,11 @@
 		switch (rt) {
 			case RAILTYPE_END + 0:
 				rt = RAILTYPE_RAIL;
-				while (rt < RAILTYPE_END && !HasRailtypeAvail(_local_player, rt)) rt++;
+				while (rt < RAILTYPE_END && !HasRailtypeAvail(_local_company, rt)) rt++;
 				break;
 
 			case RAILTYPE_END + 1:
-				rt = GetBestRailtype(_local_player);
+				rt = GetBestRailtype(_local_company);
 				break;
 
 			default:
--- a/src/road.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/road.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -77,25 +77,25 @@
 	return org_rb;
 }
 
-bool HasRoadTypesAvail(const PlayerID p, const RoadTypes rts)
+bool HasRoadTypesAvail(const CompanyID company, const RoadTypes rts)
 {
 	RoadTypes avail_roadtypes;
 
-	if (p == OWNER_TOWN || _game_mode == GM_EDITOR || IsGeneratingWorld()) {
+	if (company == OWNER_TOWN || _game_mode == GM_EDITOR || IsGeneratingWorld()) {
 		avail_roadtypes = ROADTYPES_ROAD;
 	} else {
-		if (!IsValidPlayerID(p)) return false;
-		avail_roadtypes = (RoadTypes)GetPlayer(p)->avail_roadtypes | ROADTYPES_ROAD; // road is available for always for everybody
+		if (!IsValidCompanyID(company)) return false;
+		avail_roadtypes = (RoadTypes)GetCompany(company)->avail_roadtypes | ROADTYPES_ROAD; // road is available for always for everybody
 	}
 	return (rts & ~avail_roadtypes) == 0;
 }
 
 bool ValParamRoadType(const RoadType rt)
 {
-	return HasRoadTypesAvail(_current_player, RoadTypeToRoadTypes(rt));
+	return HasRoadTypesAvail(_current_company, RoadTypeToRoadTypes(rt));
 }
 
-RoadTypes GetPlayerRoadtypes(PlayerID p)
+RoadTypes GetCompanyRoadtypes(CompanyID company)
 {
 	RoadTypes rt = ROADTYPES_NONE;
 
@@ -104,7 +104,7 @@
 		const EngineInfo *ei = &e->info;
 
 		if (HasBit(ei->climates, _settings_game.game_creation.landscape) &&
-				(HasBit(e->player_avail, p) || _date >= e->intro_date + 365)) {
+				(HasBit(e->company_avail, company) || _date >= e->intro_date + 365)) {
 			SetBit(rt, HasBit(ei->misc_flags, EF_ROAD_TRAM) ? ROADTYPE_TRAM : ROADTYPE_ROAD);
 		}
 	}
--- a/src/road_cmd.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/road_cmd.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -151,8 +151,8 @@
 	/* Water can always flood and towns can always remove "normal" road pieces.
 	 * Towns are not be allowed to remove non "normal" road pieces, like tram
 	 * tracks as that would result in trams that cannot turn. */
-	if (_current_player == OWNER_WATER ||
-			(rt == ROADTYPE_ROAD && !IsValidPlayerID(_current_player))) return true;
+	if (_current_company == OWNER_WATER ||
+			(rt == ROADTYPE_ROAD && !IsValidCompanyID(_current_company))) return true;
 
 	/* Only do the special processing if the road is owned
 	 * by a town */
@@ -272,7 +272,7 @@
 			const RoadBits other = GetOtherRoadBits(tile, rt);
 			const Foundation f = GetRoadFoundation(tileh, present);
 
-			if (HasRoadWorks(tile) && _current_player != OWNER_WATER) return_cmd_error(STR_ROAD_WORKS_IN_PROGRESS);
+			if (HasRoadWorks(tile) && _current_company != OWNER_WATER) return_cmd_error(STR_ROAD_WORKS_IN_PROGRESS);
 
 			/* Autocomplete to a straight road
 			 * @li on steep slopes
@@ -300,7 +300,7 @@
 			if (flags & DC_EXEC) {
 				if (HasRoadWorks(tile)) {
 					/* flooding tile with road works, don't forget to remove the effect vehicle too */
-					assert(_current_player == OWNER_WATER);
+					assert(_current_company == OWNER_WATER);
 					Vehicle *v;
 					FOR_ALL_VEHICLES(v) {
 						if (v->type == VEH_EFFECT && TileVirtXY(v->x_pos, v->y_pos) == tile) {
@@ -474,8 +474,8 @@
 	RoadBits other_bits = ROAD_NONE;
 
 	/* Road pieces are max 4 bitset values (NE, NW, SE, SW) and town can only be non-zero
-	 * if a non-player is building the road */
-	if ((IsValidPlayerID(_current_player) && p2 != 0) || (_current_player == OWNER_TOWN && !IsValidTownID(p2))) return CMD_ERROR;
+	 * if a non-company is building the road */
+	if ((IsValidCompanyID(_current_company) && p2 != 0) || (_current_company == OWNER_TOWN && !IsValidTownID(p2))) return CMD_ERROR;
 
 	RoadBits pieces = Extract<RoadBits, 0>(p1);
 
@@ -506,7 +506,7 @@
 					}
 					if ((existing & pieces) == pieces) {
 						/* We only want to set the (dis)allowed road directions */
-						if (toggle_drd != DRD_NONE && rt != ROADTYPE_TRAM && IsRoadOwner(tile, ROADTYPE_ROAD, _current_player)) {
+						if (toggle_drd != DRD_NONE && rt != ROADTYPE_TRAM && IsRoadOwner(tile, ROADTYPE_ROAD, _current_company)) {
 							if (crossing) return_cmd_error(STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION);
 
 							if (!EnsureNoVehicleOnGround(tile)) return CMD_ERROR;
@@ -569,7 +569,7 @@
 				YapfNotifyTrackLayoutChange(tile, FindFirstTrack(GetTrackBits(tile)));
 				/* Always add road to the roadtypes (can't draw without it) */
 				bool reserved = HasBit(GetTrackReservation(tile), AxisToTrack(OtherAxis(roaddir)));
-				MakeRoadCrossing(tile, _current_player, _current_player, _current_player, GetTileOwner(tile), roaddir, GetRailType(tile), RoadTypeToRoadTypes(rt) | ROADTYPES_ROAD, p2);
+				MakeRoadCrossing(tile, _current_company, _current_company, _current_company, GetTileOwner(tile), roaddir, GetRailType(tile), RoadTypeToRoadTypes(rt) | ROADTYPES_ROAD, p2);
 				SetCrossingReservation(tile, reserved);
 				UpdateLevelCrossing(tile, false);
 				MarkTileDirtyByTile(tile);
@@ -650,8 +650,8 @@
 				RoadTileType rtt = GetRoadTileType(tile);
 				if (existing == ROAD_NONE || rtt == ROAD_TILE_CROSSING) {
 					SetRoadTypes(tile, GetRoadTypes(tile) | RoadTypeToRoadTypes(rt));
-					SetRoadOwner(tile, rt, _current_player);
-					if (_current_player == OWNER_TOWN && rt == ROADTYPE_ROAD) SetTownIndex(tile, p2);
+					SetRoadOwner(tile, rt, _current_company);
+					if (_current_company == OWNER_TOWN && rt == ROADTYPE_ROAD) SetTownIndex(tile, p2);
 				}
 				if (rtt != ROAD_TILE_CROSSING) SetRoadBits(tile, existing | pieces, rt);
 			} break;
@@ -679,7 +679,7 @@
 				break;
 
 			default:
-				MakeRoadNormal(tile, pieces, RoadTypeToRoadTypes(rt), p2, _current_player, _current_player, _current_player);
+				MakeRoadNormal(tile, pieces, RoadTypeToRoadTypes(rt), p2, _current_company, _current_company, _current_company);
 				break;
 		}
 
@@ -883,7 +883,7 @@
 		Depot *dep = new Depot(tile);
 		dep->town_index = ClosestTownFromTile(tile, (uint)-1)->index;
 
-		MakeRoadDepot(tile, _current_player, dir, rt);
+		MakeRoadDepot(tile, _current_company, dir, rt);
 		MarkTileDirtyByTile(tile);
 	}
 	return cost.AddCost(_price.build_road_depot);
@@ -891,7 +891,7 @@
 
 static CommandCost RemoveRoadDepot(TileIndex tile, uint32 flags)
 {
-	if (!CheckTileOwnership(tile) && _current_player != OWNER_WATER) return CMD_ERROR;
+	if (!CheckTileOwnership(tile) && _current_company != OWNER_WATER) return CMD_ERROR;
 
 	if (!EnsureNoVehicleOnGround(tile)) return CMD_ERROR;
 
@@ -1203,7 +1203,7 @@
 		case ROAD_TILE_DEPOT: {
 			if (ti->tileh != SLOPE_FLAT) DrawFoundation(ti, FOUNDATION_LEVELED);
 
-			SpriteID palette = PLAYER_SPRITE_COLOR(GetTileOwner(ti->tile));
+			SpriteID palette = COMPANY_SPRITE_COLOR(GetTileOwner(ti->tile));
 
 			const DrawTileSprites *dts;
 			if (HasTileRoadType(ti->tile, ROADTYPE_TRAM)) {
@@ -1243,7 +1243,7 @@
 
 void DrawRoadDepotSprite(int x, int y, DiagDirection dir, RoadType rt)
 {
-	SpriteID palette = PLAYER_SPRITE_COLOR(_local_player);
+	SpriteID palette = COMPANY_SPRITE_COLOR(_local_company);
 	const DrawTileSprites *dts = (rt == ROADTYPE_TRAM) ? &_tram_depot[dir] : &_road_depot[dir];
 
 	x += 33;
@@ -1559,14 +1559,14 @@
 }
 
 
-static void ChangeTileOwner_Road(TileIndex tile, PlayerID old_player, PlayerID new_player)
+static void ChangeTileOwner_Road(TileIndex tile, Owner old_owner, Owner new_owner)
 {
 	if (IsRoadDepot(tile)) {
-		if (GetTileOwner(tile) == old_player) {
-			if (new_player == PLAYER_SPECTATOR) {
+		if (GetTileOwner(tile) == old_owner) {
+			if (new_owner == INVALID_OWNER) {
 				DoCommand(tile, 0, 0, DC_EXEC | DC_BANKRUPT, CMD_LANDSCAPE_CLEAR);
 			} else {
-				SetTileOwner(tile, new_player);
+				SetTileOwner(tile, new_owner);
 			}
 		}
 		return;
@@ -1574,17 +1574,17 @@
 
 	for (RoadType rt = ROADTYPE_ROAD; rt < ROADTYPE_END; rt++) {
 		/* Update all roadtypes, no matter if they are present */
-		if (GetRoadOwner(tile, rt) == old_player) {
-			SetRoadOwner(tile, rt, new_player == PLAYER_SPECTATOR ? OWNER_NONE : new_player);
+		if (GetRoadOwner(tile, rt) == old_owner) {
+			SetRoadOwner(tile, rt, new_owner == INVALID_OWNER ? OWNER_NONE : new_owner);
 		}
 	}
 
 	if (IsLevelCrossing(tile)) {
-		if (GetTileOwner(tile) == old_player) {
-			if (new_player == PLAYER_SPECTATOR) {
+		if (GetTileOwner(tile) == old_owner) {
+			if (new_owner == INVALID_OWNER) {
 				DoCommand(tile, 0, GetCrossingRailTrack(tile), DC_EXEC | DC_BANKRUPT, CMD_REMOVE_SINGLE_RAIL);
 			} else {
-				SetTileOwner(tile, new_player);
+				SetTileOwner(tile, new_owner);
 			}
 		}
 	}
--- a/src/road_func.h	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/road_func.h	Tue Sep 30 20:39:50 2008 +0000
@@ -140,26 +140,26 @@
 }
 
 /**
- * Finds out, whether given player has all given RoadTypes available
- * @param PlayerID ID of player
+ * Finds out, whether given company has all given RoadTypes available
+ * @param company ID of company
  * @param rts RoadTypes to test
- * @return true if player has all requested RoadTypes available
+ * @return true if company has all requested RoadTypes available
  */
-bool HasRoadTypesAvail(const PlayerID p, const RoadTypes rts);
+bool HasRoadTypesAvail(const CompanyID company, const RoadTypes rts);
 
 /**
  * Validate functions for rail building.
  * @param rt road type to check.
- * @return true if the current player may build the road.
+ * @return true if the current company may build the road.
  */
 bool ValParamRoadType(const RoadType rt);
 
 /**
- * Get the road types the given player can build.
- * @param p the player to get the roadtypes for.
+ * Get the road types the given company can build.
+ * @param company the company to get the roadtypes for.
  * @return the road types.
  */
-RoadTypes GetPlayerRoadtypes(const PlayerID p);
+RoadTypes GetCompanyRoadtypes(const CompanyID company);
 
 void UpdateLevelCrossing(TileIndex tile, bool sound = true);
 
--- a/src/road_gui.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/road_gui.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -421,7 +421,7 @@
 	/**
 	 * Update the remove button lowered state of the road toolbar
 	 *
-	 * @param clicked_widget The widget which the player clicked just now
+	 * @param clicked_widget The widget which the client clicked just now
 	 */
 	void UpdateOptionWidgetStatus(RoadToolbarWidgets clicked_widget)
 	{
@@ -676,7 +676,7 @@
 
 void ShowBuildRoadToolbar(RoadType roadtype)
 {
-	if (!IsValidPlayerID(_current_player)) return;
+	if (!IsValidCompanyID(_current_company)) return;
 	_cur_roadtype = roadtype;
 
 	DeleteWindowByClass(WC_BUILD_TOOLBAR);
--- a/src/roadveh_cmd.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/roadveh_cmd.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -180,7 +180,7 @@
 	UnitID unit_num;
 	Engine *e;
 
-	if (!IsEngineBuildable(p1, VEH_ROAD, _current_player)) return_cmd_error(STR_ROAD_VEHICLE_NOT_AVAILABLE);
+	if (!IsEngineBuildable(p1, VEH_ROAD, _current_company)) return_cmd_error(STR_ROAD_VEHICLE_NOT_AVAILABLE);
 
 	cost = EstimateRoadVehCost(p1);
 	if (flags & DC_QUERY_COST) return cost;
@@ -188,7 +188,7 @@
 	/* The ai_new queries the vehicle cost before building the route,
 	 * so we must check against cheaters no sooner than now. --pasky */
 	if (!IsRoadDepotTile(tile)) return CMD_ERROR;
-	if (!IsTileOwner(tile, _current_player)) return CMD_ERROR;
+	if (!IsTileOwner(tile, _current_company)) return CMD_ERROR;
 
 	if (HasTileRoadType(tile, ROADTYPE_TRAM) != HasBit(EngInfo(p1)->misc_flags, EF_ROAD_TRAM)) return_cmd_error(STR_DEPOT_WRONG_DEPOT_TYPE);
 
@@ -218,7 +218,7 @@
 		v = new (v) RoadVehicle();
 		v->unitnumber = unit_num;
 		v->direction = DiagDirToDir(GetRoadDepotDirection(tile));
-		v->owner = _current_player;
+		v->owner = _current_company;
 
 		v->tile = tile;
 		x = TileX(tile) * TILE_SIZE + TILE_SIZE / 2;
@@ -283,10 +283,10 @@
 		InvalidateWindowData(WC_VEHICLE_DEPOT, v->tile);
 		InvalidateWindowClassesData(WC_ROADVEH_LIST, 0);
 		InvalidateWindow(WC_COMPANY, v->owner);
-		if (IsLocalPlayer())
+		if (IsLocalCompany())
 			InvalidateAutoreplaceWindow(v->engine_type, v->group_id); // updates the replace Road window
 
-		GetPlayer(_current_player)->num_engines[p1]++;
+		GetCompany(_current_company)->num_engines[p1]++;
 	}
 
 	return cost;
@@ -441,7 +441,7 @@
 	if (p2 & DEPOT_MASS_SEND) {
 		/* Mass goto depot requested */
 		if (!ValidVLWFlags(p2 & VLW_MASK)) return CMD_ERROR;
-		return SendAllVehiclesToDepot(VEH_ROAD, flags, p2 & DEPOT_SERVICE, _current_player, (p2 & VLW_MASK), p1);
+		return SendAllVehiclesToDepot(VEH_ROAD, flags, p2 & DEPOT_SERVICE, _current_company, (p2 & VLW_MASK), p1);
 	}
 
 	if (!IsValidVehicleID(p1)) return CMD_ERROR;
@@ -805,7 +805,7 @@
 			SetDParam(0, st->index);
 			AddNewsItem(
 				v->u.road.roadtype == ROADTYPE_ROAD ? STR_902F_CITIZENS_CELEBRATE_FIRST : STR_CITIZENS_CELEBRATE_FIRST_PASSENGER_TRAM,
-				(v->owner == _local_player) ? NS_ARRIVAL_PLAYER : NS_ARRIVAL_OTHER,
+				(v->owner == _local_company) ? NS_ARRIVAL_COMPANY : NS_ARRIVAL_OTHER,
 				v->index,
 				st->index
 			);
@@ -817,7 +817,7 @@
 			SetDParam(0, st->index);
 			AddNewsItem(
 				v->u.road.roadtype == ROADTYPE_ROAD ? STR_9030_CITIZENS_CELEBRATE_FIRST : STR_CITIZENS_CELEBRATE_FIRST_CARGO_TRAM,
-				(v->owner == _local_player) ? NS_ARRIVAL_PLAYER : NS_ARRIVAL_OTHER,
+				(v->owner == _local_company) ? NS_ARRIVAL_COMPANY : NS_ARRIVAL_OTHER,
 				v->index,
 				st->index
 			);
@@ -1043,7 +1043,7 @@
 
 	if (IsTileType(tile, MP_ROAD)) {
 		if (IsRoadDepot(tile) && (!IsTileOwner(tile, v->owner) || GetRoadDepotDirection(tile) == enterdir || (GetRoadTypes(tile) & v->u.road.compatible_roadtypes) == 0)) {
-			/* Road depot owned by another player or with the wrong orientation */
+			/* Road depot owned by another company or with the wrong orientation */
 			trackdirs = TRACKDIR_BIT_NONE;
 		}
 	} else if (IsTileType(tile, MP_STATION) && IsStandardRoadStopTile(tile)) {
@@ -1358,20 +1358,20 @@
 
 /**
  * Can a tram track build without destruction on the given tile?
- * @param p the player that would be building the tram tracks
+ * @param c the company that would be building the tram tracks
  * @param t the tile to build on.
  * @param r the road bits needed.
  * @return true when a track track can be build on 't'
  */
-static bool CanBuildTramTrackOnTile(PlayerID p, TileIndex t, RoadBits r)
+static bool CanBuildTramTrackOnTile(CompanyID c, TileIndex t, RoadBits r)
 {
-	/* The 'current' player is not necessarily the owner of the vehicle. */
-	PlayerID original_player = _current_player;
-	_current_player = p;
+	/* The 'current' company is not necessarily the owner of the vehicle. */
+	CompanyID original_company = _current_company;
+	_current_company = c;
 
 	CommandCost ret = DoCommand(t, ROADTYPE_TRAM << 4 | r, 0, 0, CMD_BUILD_ROAD);
 
-	_current_player = original_player;
+	_current_company = original_company;
 	return CmdSucceeded(ret);
 }
 
@@ -1491,7 +1491,7 @@
 					/*
 					 * Taking the 'small' corner for trams only happens when:
 					 * - We are not the from vehicle of an articulated tram.
-					 * - Or when the player cannot build on the next tile.
+					 * - Or when the company cannot build on the next tile.
 					 *
 					 * The 'small' corner means that the vehicle is on the end of a
 					 * tram track and needs to start turning there. To do this properly
@@ -1502,7 +1502,7 @@
 					tile = v->tile;
 					start_frame = RVC_TURN_AROUND_START_FRAME_SHORT_TRAM;
 				} else {
-					/* The player can build on the next tile, so wait till (s)he does. */
+					/* The company can build on the next tile, so wait till (s)he does. */
 					v->cur_speed = 0;
 					return false;
 				}
@@ -1985,7 +1985,7 @@
 	this->profit_this_year -= cost.GetCost();
 	this->running_ticks = 0;
 
-	SubtractMoneyFromPlayerFract(this->owner, cost);
+	SubtractMoneyFromCompanyFract(this->owner, cost);
 
 	InvalidateWindow(WC_VEHICLE_DETAILS, this->index);
 	InvalidateWindowClasses(WC_ROADVEH_LIST);
@@ -2086,7 +2086,7 @@
 
 		total_capacity += capacity;
 
-		if (IsHumanPlayer(v->owner) && new_cid != v->cargo_type) {
+		if (IsHumanCompany(v->owner) && new_cid != v->cargo_type) {
 			cost.AddCost(GetRefitCost(v->engine_type));
 		}
 
--- a/src/saveload.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/saveload.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -1300,7 +1300,7 @@
 extern const ChunkHandler _name_chunk_handlers[];
 extern const ChunkHandler _cheat_chunk_handlers[] ;
 extern const ChunkHandler _setting_chunk_handlers[];
-extern const ChunkHandler _player_chunk_handlers[];
+extern const ChunkHandler _company_chunk_handlers[];
 extern const ChunkHandler _engine_chunk_handlers[];
 extern const ChunkHandler _veh_chunk_handlers[];
 extern const ChunkHandler _waypoint_chunk_handlers[];
@@ -1333,7 +1333,7 @@
 	_town_chunk_handlers,
 	_sign_chunk_handlers,
 	_station_chunk_handlers,
-	_player_chunk_handlers,
+	_company_chunk_handlers,
 	_animated_tile_chunk_handlers,
 	_newgrf_chunk_handlers,
 	_group_chunk_handlers,
--- a/src/saveload.h	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/saveload.h	Tue Sep 30 20:39:50 2008 +0000
@@ -160,7 +160,7 @@
 
 	/* 8 bytes allocated for a maximum of 8 flags
 	 * Flags directing saving/loading of a variable */
-	SLF_SAVE_NO      = 1 <<  8, ///< do not save with savegame, basically player-based
+	SLF_SAVE_NO      = 1 <<  8, ///< do not save with savegame, basically client-based
 	SLF_CONFIG_NO    = 1 <<  9, ///< do not save to config file
 	SLF_NETWORK_NO   = 1 << 10, ///< do not synchronize over network (but it is saved if SSF_SAVE_NO is not set)
 	/* 5 more possible flags */
--- a/src/screenshot.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/screenshot.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -547,10 +547,10 @@
 	int serial;
 	size_t len;
 
-	if (_game_mode == GM_EDITOR || _game_mode == GM_MENU || _local_player == PLAYER_SPECTATOR) {
+	if (_game_mode == GM_EDITOR || _game_mode == GM_MENU || _local_company == COMPANY_SPECTATOR) {
 		ttd_strlcpy(_screenshot_name, "screenshot", lengthof(_screenshot_name));
 	} else {
-		SetDParam(0, _local_player);
+		SetDParam(0, _local_company);
 		SetDParam(1, _date);
 		GetString(_screenshot_name, STR_4004, lastof(_screenshot_name));
 	}
--- a/src/settings.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/settings.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -1089,15 +1089,15 @@
 
 #ifdef ENABLE_NETWORK
 
-static int32 UpdateMinPlayers(int32 p1)
+static int32 UpdateMinActiveClients(int32 p1)
 {
-	CheckMinPlayers();
+	CheckMinActiveClients();
 	return 0;
 }
 
-static int32 UpdatePlayerName(int32 p1)
+static int32 UpdateClientName(int32 p1)
 {
-	NetworkUpdatePlayerName();
+	NetworkUpdateClientName();
 	return 0;
 }
 
@@ -1180,7 +1180,7 @@
 	 SDTG_BOOL("large_aa",                   S, 0, _freetype.large_aa,    false,    STR_NULL, NULL),
 #endif
 	  SDTG_VAR("sprite_cache_size",SLE_UINT, S, 0, _sprite_cache_size,     4, 1, 64, 0, STR_NULL, NULL),
-	  SDTG_VAR("player_face",    SLE_UINT32, S, 0, _player_face,      0,0,0xFFFFFFFF,0, STR_NULL, NULL),
+	  SDTG_VAR("player_face",    SLE_UINT32, S, 0, _company_manager_face,0,0,0xFFFFFFFF,0, STR_NULL, NULL),
 	  SDTG_VAR("transparency_options", SLE_UINT, S, 0, _transparency_opt,  0,0,0x1FF,0, STR_NULL, NULL),
 	  SDTG_VAR("transparency_locks", SLE_UINT, S, 0, _transparency_lock,   0,0,0x1FF,0, STR_NULL, NULL),
 	  SDTG_VAR("invisibility_options", SLE_UINT, S, 0, _invisibility_opt,  0,0, 0xFF,0, STR_NULL, NULL),
@@ -1224,7 +1224,7 @@
  * It is also a bit tricky since you would think that service_interval
  * for example doesn't need to be synched. Every client assigns the
  * service_interval value to the v->service_interval, meaning that every client
- * assigns his value. If the setting was player-based, that would mean that
+ * assigns his value. If the setting was company-based, that would mean that
  * vehicles could decide on different moments that they are heading back to a
  * service depot, causing desyncs on a massive scale. */
 const SettingDesc _patch_settings[] = {
@@ -1470,7 +1470,7 @@
 	  SDTC_VAR(network.server_port,          SLE_UINT16, S, NO,NETWORK_DEFAULT_PORT,0,65535,0,STR_NULL,                                       NULL),
 	 SDTC_BOOL(network.server_advertise,                 S, NO, false,                        STR_NULL,                                       NULL),
 	  SDTC_VAR(network.lan_internet,          SLE_UINT8, S, NO,     0,        0,        1, 0, STR_NULL,                                       NULL),
-	  SDTC_STR(network.player_name,            SLE_STRB, S,  0,  NULL,                        STR_NULL,                                       UpdatePlayerName),
+	  SDTC_STR(network.client_name,            SLE_STRB, S,  0,  NULL,                        STR_NULL,                                       UpdateClientName),
 	  SDTC_STR(network.server_password,        SLE_STRB, S, NO,  NULL,                        STR_NULL,                                       UpdateServerPassword),
 	  SDTC_STR(network.rcon_password,          SLE_STRB, S, NO,  NULL,                        STR_NULL,                                       UpdateRconPassword),
 	  SDTC_STR(network.default_company_pass,   SLE_STRB, S,  0,  NULL,                        STR_NULL,                                       NULL),
@@ -1480,11 +1480,11 @@
 	 SDTC_BOOL(network.autoclean_companies,              S, NO, false,                        STR_NULL,                                       NULL),
 	  SDTC_VAR(network.autoclean_unprotected, SLE_UINT8, S,D0|NO,  12,     0,         240, 0, STR_NULL,                                       NULL),
 	  SDTC_VAR(network.autoclean_protected,   SLE_UINT8, S,D0|NO,  36,     0,         240, 0, STR_NULL,                                       NULL),
-	  SDTC_VAR(network.max_companies,         SLE_UINT8, S, NO,     8,     1, MAX_PLAYERS, 0, STR_NULL,                                       NULL),
+	  SDTC_VAR(network.max_companies,         SLE_UINT8, S, NO,     8,     1,MAX_COMPANIES,0, STR_NULL,                                       NULL),
 	  SDTC_VAR(network.max_clients,           SLE_UINT8, S, NO,    10,     2, MAX_CLIENTS, 0, STR_NULL,                                       NULL),
 	  SDTC_VAR(network.max_spectators,        SLE_UINT8, S, NO,    10,     0, MAX_CLIENTS, 0, STR_NULL,                                       NULL),
 	  SDTC_VAR(network.restart_game_year,     SLE_INT32, S,D0|NO|NC,0, MIN_YEAR, MAX_YEAR, 1, STR_NULL,                                       NULL),
-	  SDTC_VAR(network.min_players,           SLE_UINT8, S, NO,     0,     0,        10,   0, STR_NULL,                                       UpdateMinPlayers),
+	  SDTC_VAR(network.min_active_clients,    SLE_UINT8, S, NO,     0,     0,        10,   0, STR_NULL,                                       UpdateMinActiveClients),
 	SDTC_OMANY(network.server_lang,           SLE_UINT8, S, NO,     0,    35, "ANY|ENGLISH|GERMAN|FRENCH|BRAZILIAN|BULGARIAN|CHINESE|CZECH|DANISH|DUTCH|ESPERANTO|FINNISH|HUNGARIAN|ICELANDIC|ITALIAN|JAPANESE|KOREAN|LITHUANIAN|NORWEGIAN|POLISH|PORTUGUESE|ROMANIAN|RUSSIAN|SLOVAK|SLOVENIAN|SPANISH|SWEDISH|TURKISH|UKRAINIAN|AFRIKAANS|CROATIAN|CATALAN|ESTONIAN|GALICIAN|GREEK|LATVIAN", STR_NULL, NULL),
 	 SDTC_BOOL(network.reload_cfg,                       S, NO, false,                        STR_NULL,                                       NULL),
 	  SDTC_STR(network.last_host,              SLE_STRB, S,  0, "0.0.0.0",                    STR_NULL,                                       NULL),
@@ -1899,9 +1899,9 @@
 bool SetPatchValue(uint index, int32 value)
 {
 	const SettingDesc *sd = &_patch_settings[index];
-	/* If an item is player-based, we do not send it over the network
+	/* If an item is company-based, we do not send it over the network
 	 * (if any) to change. Also *hack*hack* we update the _newgame version
-	 * of patches because changing a player-based setting in a game also
+	 * of patches because changing a company-based setting in a game also
 	 * changes its defaults. At least that is the convention we have chosen */
 	if (sd->save.conv & SLF_NETWORK_NO) {
 		void *var = GetVariableAddress((_game_mode == GM_MENU) ? &_settings_newgame : &_settings_game, &sd->save);
@@ -1916,7 +1916,7 @@
 		return true;
 	}
 
-	/* send non-player-based settings over the network */
+	/* send non-company-based settings over the network */
 	if (!_networking || (_networking && _network_server)) {
 		return DoCommandP(0, index, value, NULL, CMD_CHANGE_PATCH_SETTING);
 	}
--- a/src/settings_type.h	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/settings_type.h	Tue Sep 30 20:39:50 2008 +0000
@@ -51,7 +51,7 @@
 	bool   smooth_scroll;                    ///< smooth scroll viewports
 	bool   measure_tooltip;                  ///< show a permanent tooltip when dragging tools
 	byte   liveries;                         ///< options for displaying company liveries, 0=none, 1=self, 2=all
-	bool   prefer_teamchat;                  ///< choose the chat message target with <ENTER>, true=all players, false=your team
+	bool   prefer_teamchat;                  ///< choose the chat message target with <ENTER>, true=all clients, false=your team
 	uint8  advanced_vehicle_list;            ///< use the "advanced" vehicle list
 	uint8  loading_indicators;               ///< show loading indicators
 	uint8  default_rail_type;                ///< the default rail type for the rail GUI
@@ -111,7 +111,7 @@
 	char   rcon_password[NETWORK_PASSWORD_LENGTH];        ///< passowrd for rconsole (server side)
 	bool   server_advertise;                              ///< advertise the server to the masterserver
 	uint8  lan_internet;                                  ///< search on the LAN or internet for servers
-	char   player_name[NETWORK_NAME_LENGTH];              ///< name of the player
+	char   client_name[NETWORK_NAME_LENGTH];              ///< name of the player (as client)
 	char   default_company_pass[NETWORK_PASSWORD_LENGTH]; ///< default password for new companies in encrypted form
 	char   connect_to_ip[NETWORK_HOSTNAME_LENGTH];        ///< default for the "Add server" query
 	char   network_id[NETWORK_UNIQUE_ID_LENGTH];          ///< semi-unique ID of the client
@@ -122,7 +122,7 @@
 	uint8  max_clients;                                   ///< maximum amount of clients
 	uint8  max_spectators;                                ///< maximum amount of spectators
 	Year   restart_game_year;                             ///< year the server restarts
-	uint8  min_players;                                   ///< minimum amount of players to unpause the game
+	uint8  min_active_clients;                            ///< minimum amount of active clients to unpause the game
 	uint8  server_lang;                                   ///< language of the server
 	bool   reload_cfg;                                    ///< reload the config file before restarting
 	char   last_host[NETWORK_HOSTNAME_LENGTH];            ///< IP address of the last joined server
@@ -277,10 +277,10 @@
 	bool   realistic_acceleration;           ///< realistic acceleration for trains
 	bool   wagon_speed_limits;               ///< enable wagon speed limits
 	bool   disable_elrails;                  ///< when true, the elrails are disabled
-	UnitID max_trains;                       ///< max trains in game per player
-	UnitID max_roadveh;                      ///< max trucks in game per player
-	UnitID max_aircraft;                     ///< max planes in game per player
-	UnitID max_ships;                        ///< max ships in game per player
+	UnitID max_trains;                       ///< max trains in game per company
+	UnitID max_roadveh;                      ///< max trucks in game per company
+	UnitID max_aircraft;                     ///< max planes in game per company
+	UnitID max_ships;                        ///< max ships in game per company
 	bool   servint_ispercent;                ///< service intervals are in percents
 	uint16 servint_trains;                   ///< service interval for trains
 	uint16 servint_roadveh;                  ///< service interval for road vehicles
@@ -302,7 +302,7 @@
 	bool   allow_shares;                     ///< allow the buying/selling of shares
 	byte   dist_local_authority;             ///< distance for town local authority, default 20
 	bool   exclusive_rights;                 ///< allow buying exclusive rights
-	bool   give_money;                       ///< allow giving other players money
+	bool   give_money;                       ///< allow giving other companies money
 	bool   mod_road_rebuild;                 ///< roadworks remove unneccesary RoadBits
 	bool   multiple_industry_per_town;       ///< allow many industries of the same type per town
 	bool   same_industry_close;              ///< allow same type industries to be built close to each other
--- a/src/ship_cmd.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/ship_cmd.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -176,7 +176,7 @@
 	this->profit_this_year -= cost.GetCost();
 	this->running_ticks = 0;
 
-	SubtractMoneyFromPlayerFract(this->owner, cost);
+	SubtractMoneyFromCompanyFract(this->owner, cost);
 
 	InvalidateWindow(WC_VEHICLE_DETAILS, this->index);
 	/* we need this for the profit */
@@ -349,7 +349,7 @@
 		SetDParam(0, st->index);
 		AddNewsItem(
 			STR_9833_CITIZENS_CELEBRATE_FIRST,
-			(v->owner == _local_player) ? NS_ARRIVAL_PLAYER : NS_ARRIVAL_OTHER,
+			(v->owner == _local_company) ? NS_ARRIVAL_COMPANY : NS_ARRIVAL_OTHER,
 			v->index,
 			st->index
 		);
@@ -757,7 +757,7 @@
 	UnitID unit_num;
 	Engine *e;
 
-	if (!IsEngineBuildable(p1, VEH_SHIP, _current_player)) return_cmd_error(STR_SHIP_NOT_AVAILABLE);
+	if (!IsEngineBuildable(p1, VEH_SHIP, _current_company)) return_cmd_error(STR_SHIP_NOT_AVAILABLE);
 
 	value = EstimateShipCost(p1);
 	if (flags & DC_QUERY_COST) return value;
@@ -765,7 +765,7 @@
 	/* The ai_new queries the vehicle cost before building the route,
 	 * so we must check against cheaters no sooner than now. --pasky */
 	if (!IsShipDepotTile(tile)) return CMD_ERROR;
-	if (!IsTileOwner(tile, _current_player)) return CMD_ERROR;
+	if (!IsTileOwner(tile, _current_company)) return CMD_ERROR;
 
 	unit_num = (flags & DC_AUTOREPLACE) ? 0 : GetFreeUnitNumber(VEH_SHIP);
 
@@ -781,7 +781,7 @@
 		Vehicle *v = new Ship();
 		v->unitnumber = unit_num;
 
-		v->owner = _current_player;
+		v->owner = _current_company;
 		v->tile = tile;
 		x = TileX(tile) * TILE_SIZE + TILE_SIZE / 2;
 		y = TileY(tile) * TILE_SIZE + TILE_SIZE / 2;
@@ -829,10 +829,10 @@
 		InvalidateWindowData(WC_VEHICLE_DEPOT, v->tile);
 		InvalidateWindowClassesData(WC_SHIPS_LIST, 0);
 		InvalidateWindow(WC_COMPANY, v->owner);
-		if (IsLocalPlayer())
+		if (IsLocalCompany())
 			InvalidateAutoreplaceWindow(v->engine_type, v->group_id); // updates the replace Ship window
 
-		GetPlayer(_current_player)->num_engines[p1]++;
+		GetCompany(_current_company)->num_engines[p1]++;
 	}
 
 	return value;
@@ -899,7 +899,7 @@
 	if (p2 & DEPOT_MASS_SEND) {
 		/* Mass goto depot requested */
 		if (!ValidVLWFlags(p2 & VLW_MASK)) return CMD_ERROR;
-		return SendAllVehiclesToDepot(VEH_SHIP, flags, p2 & DEPOT_SERVICE, _current_player, (p2 & VLW_MASK), p1);
+		return SendAllVehiclesToDepot(VEH_SHIP, flags, p2 & DEPOT_SERVICE, _current_company, (p2 & VLW_MASK), p1);
 	}
 
 	if (!IsValidVehicleID(p1)) return CMD_ERROR;
@@ -962,7 +962,7 @@
 	}
 	_returned_refit_capacity = capacity;
 
-	if (IsHumanPlayer(v->owner) && new_cid != v->cargo_type) {
+	if (IsHumanCompany(v->owner) && new_cid != v->cargo_type) {
 		cost = GetRefitCost(v->engine_type);
 	}
 
--- a/src/signal.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/signal.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -473,13 +473,13 @@
 /**
  * Updates blocks in _globset buffer
  *
- * @param owner player whose signals we are updating
+ * @param owner company whose signals we are updating
  * @return state of the first block from _globset
- * @pre IsValidPlayerID(owner)
+ * @pre IsValidCompanyID(owner)
  */
 static SigSegState UpdateSignalsInBuffer(Owner owner)
 {
-	assert(IsValidPlayerID(owner));
+	assert(IsValidCompanyID(owner));
 
 	bool first = true;  // first block?
 	SigSegState state = SIGSEG_FREE; // value to return
@@ -594,7 +594,7 @@
 		DIAGDIR_SW, DIAGDIR_NW, DIAGDIR_NW, DIAGDIR_SW, DIAGDIR_NW, DIAGDIR_NE
 	};
 
-	/* do not allow signal updates for two players in one run */
+	/* do not allow signal updates for two companies in one run */
 	assert(_globset.IsEmpty() || owner == _last_owner);
 
 	_last_owner = owner;
@@ -619,7 +619,7 @@
  */
 void AddSideToSignalBuffer(TileIndex tile, DiagDirection side, Owner owner)
 {
-	/* do not allow signal updates for two players in one run */
+	/* do not allow signal updates for two companies in one run */
 	assert(_globset.IsEmpty() || owner == _last_owner);
 
 	_last_owner = owner;
--- a/src/signs.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/signs.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -28,7 +28,7 @@
 /* Initialize the sign-pool */
 DEFINE_OLD_POOL_GENERIC(Sign, Sign)
 
-Sign::Sign(PlayerID owner)
+Sign::Sign(Owner owner)
 {
 	this->owner = owner;
 }
@@ -40,7 +40,7 @@
 	if (CleaningPool()) return;
 
 	DeleteRenameSignWindow(this->index);
-	this->owner = INVALID_PLAYER;
+	this->owner = INVALID_OWNER;
 }
 
 /**
@@ -105,7 +105,7 @@
 
 	/* When we execute, really make the sign */
 	if (flags & DC_EXEC) {
-		Sign *si = new Sign(_current_player);
+		Sign *si = new Sign(_current_company);
 		int x = TileX(tile) * TILE_SIZE;
 		int y = TileY(tile) * TILE_SIZE;
 
@@ -146,7 +146,7 @@
 			free(si->name);
 			/* Assign the new one */
 			si->name = strdup(_cmd_text);
-			si->owner = _current_player;
+			si->owner = _current_company;
 
 			/* Update; mark sign dirty twice, because it can either becom longer, or shorter */
 			MarkSignDirty(si);
--- a/src/signs_base.h	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/signs_base.h	Tue Sep 30 20:39:50 2008 +0000
@@ -17,17 +17,17 @@
 	int32        x;
 	int32        y;
 	byte         z;
-	PlayerByte   owner; // placed by this player. Anyone can delete them though. OWNER_NONE for gray signs from old games.
+	OwnerByte    owner; // placed by this company. Anyone can delete them though. OWNER_NONE for gray signs from old games.
 
 	/**
 	 * Creates a new sign
 	 */
-	Sign(PlayerID owner = INVALID_PLAYER);
+	Sign(Owner owner = INVALID_OWNER);
 
 	/** Destroy the sign */
 	~Sign();
 
-	inline bool IsValid() const { return this->owner != INVALID_PLAYER; }
+	inline bool IsValid() const { return this->owner != INVALID_OWNER; }
 };
 
 static inline SignID GetMaxSignIndex()
--- a/src/signs_gui.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/signs_gui.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -111,7 +111,7 @@
 		for (uint16 i = this->vscroll.pos; i < this->vscroll.cap + this->vscroll.pos && i < this->vscroll.count; i++) {
 			const Sign *si = this->signs[i];
 
-			if (si->owner != OWNER_NONE) DrawPlayerIcon(si->owner, 4, y + 1);
+			if (si->owner != OWNER_NONE) DrawCompanyIcon(si->owner, 4, y + 1);
 
 			SetDParam(0, si->index);
 			DrawString(22, y, STR_SIGN_NAME, TC_YELLOW);
@@ -349,7 +349,7 @@
 
 void HandleClickOnSign(const Sign *si)
 {
-	if (_ctrl_pressed && si->owner == _local_player) {
+	if (_ctrl_pressed && si->owner == _local_company) {
 		RenameSign(si->index, NULL);
 		return;
 	}
--- a/src/smallmap_gui.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/smallmap_gui.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -597,7 +597,7 @@
 
 		/* setup owner table */
 		if (this->map_type == SMT_OWNER) {
-			const Player *p;
+			const Company *c;
 
 			/* fill with some special colors */
 			_owner_colors[OWNER_TOWN] = MKCOLOR(0xB4B4B4B4);
@@ -605,10 +605,10 @@
 			_owner_colors[OWNER_WATER] = MKCOLOR(0xCACACACA);
 			_owner_colors[OWNER_END]   = MKCOLOR(0x20202020); /* industry */
 
-			/* now fill with the player colors */
-			FOR_ALL_PLAYERS(p) {
-				_owner_colors[p->index] =
-					_colour_gradient[p->player_color][5] * 0x01010101;
+			/* now fill with the company colours */
+			FOR_ALL_COMPANIES(c) {
+				_owner_colors[c->index] =
+					_colour_gradient[c->colour][5] * 0x01010101;
 			}
 		}
 
--- a/src/sprite.h	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/sprite.h	Tue Sep 30 20:39:50 2008 +0000
@@ -8,7 +8,7 @@
 #include "gfx_type.h"
 
 #define GENERAL_SPRITE_COLOR(color) ((color) + PALETTE_RECOLOR_START)
-#define PLAYER_SPRITE_COLOR(owner) (GENERAL_SPRITE_COLOR(_player_colors[owner]))
+#define COMPANY_SPRITE_COLOR(owner) (GENERAL_SPRITE_COLOR(_company_colours[owner]))
 
 /**
  * Whether a sprite comes from the original graphics files or a new grf file
--- a/src/station.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/station.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -135,7 +135,7 @@
 		random_bits = Random();
 	}
 	facilities |= new_facility_bit;
-	owner = _current_player;
+	owner = _current_company;
 	build_date = _date;
 }
 
--- a/src/station_base.h	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/station_base.h	Tue Sep 30 20:39:50 2008 +0000
@@ -139,7 +139,7 @@
 	byte time_since_load;
 	byte time_since_unload;
 	byte delete_ctr;
-	PlayerByte owner;
+	OwnerByte owner;
 	byte facilities;
 	byte airport_type;
 
--- a/src/station_cmd.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/station_cmd.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -334,7 +334,7 @@
 	Station *st;
 
 	FOR_ALL_STATIONS(st) {
-		if (st->facilities == 0 && st->owner == _current_player) {
+		if (st->facilities == 0 && st->owner == _current_company) {
 			uint cur_dist = DistanceManhattan(tile, st->xy);
 
 			if (cur_dist < threshold) {
@@ -590,7 +590,7 @@
 	if (old_acc == new_acc) return;
 
 	/* show a message to report that the acceptance was changed? */
-	if (show_msg && st->owner == _local_player && st->facilities) {
+	if (show_msg && st->owner == _local_company && st->facilities) {
 		/* List of accept and reject strings for different number of
 		 * cargo types */
 		static const StringID accept_msg[] = {
@@ -689,12 +689,12 @@
 		 *   1) The tile is "steep" (i.e. stretches two height levels)
 		 * -OR-
 		 *   2) The tile is non-flat if
-		 *     a) the player building is an "old-school" AI
+		 *     a) the company building is an "old-school" AI
 		 *   -OR-
 		 *     b) the build_on_slopes switch is disabled
 		 */
 		if (IsSteepSlope(tileh) ||
-				((_is_old_ai_player || !_settings_game.construction.build_on_slopes) && tileh != SLOPE_FLAT)) {
+				((_is_old_ai_company || !_settings_game.construction.build_on_slopes) && tileh != SLOPE_FLAT)) {
 			return_cmd_error(STR_0007_FLAT_LAND_REQUIRED);
 		}
 
@@ -919,7 +919,7 @@
 			}
 		} else {
 			/* There's no station here. Don't check the tiles surrounding this
-			 * one if the player wanted to build an adjacent station. */
+			 * one if the company wanted to build an adjacent station. */
 			if (HasBit(p1, 24)) check_surrounding = false;
 		}
 	}
@@ -935,12 +935,12 @@
 
 	if (st != NULL) {
 		/* Reuse an existing station. */
-		if (st->owner != _current_player)
+		if (st->owner != _current_company)
 			return_cmd_error(STR_3009_TOO_CLOSE_TO_ANOTHER_STATION);
 
 		if (st->train_tile != 0) {
 			/* check if we want to expanding an already existing station? */
-			if (_is_old_ai_player || !_settings_game.station.join_stations)
+			if (_is_old_ai_company || !_settings_game.station.join_stations)
 				return_cmd_error(STR_3005_TOO_CLOSE_TO_ANOTHER_RAILROAD);
 			if (!CanExpandRailroadStation(st, finalvalues, axis))
 				return CMD_ERROR;
@@ -958,8 +958,8 @@
 			st->town = ClosestTownFromTile(tile_org, UINT_MAX);
 			st->string_id = GenerateStationName(st, tile_org, STATIONNAMING_RAIL);
 
-			if (IsValidPlayerID(_current_player)) {
-				SetBit(st->town->have_ratings, _current_player);
+			if (IsValidCompanyID(_current_company)) {
+				SetBit(st->town->have_ratings, _current_company);
 			}
 		}
 	}
@@ -1057,7 +1057,7 @@
 
 				tile += tile_delta;
 			} while (--w);
-			AddTrackToSignalBuffer(tile_org, track, _current_player);
+			AddTrackToSignalBuffer(tile_org, track, _current_company);
 			YapfNotifyTrackLayoutChange(tile_org, track);
 			tile_org += tile_delta ^ TileDiffXY(1, 1); // perpendicular to tile_delta
 		} while (--numtracks);
@@ -1179,7 +1179,7 @@
 
 		/* Check ownership of station */
 		Station *st = GetStationByTile(tile2);
-		if (_current_player != OWNER_WATER && !CheckOwnership(st->owner)) {
+		if (_current_company != OWNER_WATER && !CheckOwnership(st->owner)) {
 			continue;
 		}
 
@@ -1252,12 +1252,12 @@
 static CommandCost RemoveRailroadStation(Station *st, TileIndex tile, uint32 flags)
 {
 	/* if there is flooding and non-uniform stations are enabled, remove platforms tile by tile */
-	if (_current_player == OWNER_WATER && _settings_game.station.nonuniform_stations) {
+	if (_current_company == OWNER_WATER && _settings_game.station.nonuniform_stations) {
 		return DoCommand(tile, 0, 0, DC_EXEC, CMD_REMOVE_FROM_RAILROAD_STATION);
 	}
 
-	/* Current player owns the station? */
-	if (_current_player != OWNER_WATER && !CheckOwnership(st->owner)) return CMD_ERROR;
+	/* Current company owns the station? */
+	if (_current_company != OWNER_WATER && !CheckOwnership(st->owner)) return CMD_ERROR;
 
 	/* determine width and height of platforms */
 	tile = st->train_tile;
@@ -1279,7 +1279,7 @@
 				if (flags & DC_EXEC) {
 					/* read variables before the station tile is removed */
 					Track track = GetRailStationTrack(tile);
-					Owner owner = GetTileOwner(tile); // _current_player can be OWNER_WATER
+					Owner owner = GetTileOwner(tile); // _current_company can be OWNER_WATER
 					Vehicle *v = NULL;
 					if (GetRailwayStationReservation(tile)) {
 						v = GetTrainForReservation(tile, track);
@@ -1354,7 +1354,7 @@
 	bool town_owned_road  = false;
 	RoadTypes rts = (RoadTypes)GB(p2, 2, 3);
 
-	if (!AreValidRoadTypes(rts) || !HasRoadTypesAvail(_current_player, rts)) return CMD_ERROR;
+	if (!AreValidRoadTypes(rts) || !HasRoadTypesAvail(_current_company, rts)) return CMD_ERROR;
 
 	/* Trams only have drive through stops */
 	if (!is_drive_through && HasBit(rts, ROADTYPE_TRAM)) return CMD_ERROR;
@@ -1422,7 +1422,7 @@
 	}
 
 	if (st != NULL) {
-		if (st->owner != _current_player) {
+		if (st->owner != _current_company) {
 			return_cmd_error(STR_3009_TOO_CLOSE_TO_ANOTHER_STATION);
 		}
 
@@ -1437,8 +1437,8 @@
 			st->town = ClosestTownFromTile(tile, UINT_MAX);
 			st->string_id = GenerateStationName(st, tile, STATIONNAMING_ROAD);
 
-			if (IsValidPlayerID(_current_player)) {
-				SetBit(st->town->have_ratings, _current_player);
+			if (IsValidCompanyID(_current_company)) {
+				SetBit(st->town->have_ratings, _current_company);
 			}
 			st->sign.width_1 = 0;
 		}
@@ -1489,7 +1489,7 @@
  */
 static CommandCost RemoveRoadStop(Station *st, uint32 flags, TileIndex tile)
 {
-	if (_current_player != OWNER_WATER && !CheckOwnership(st->owner)) {
+	if (_current_company != OWNER_WATER && !CheckOwnership(st->owner)) {
 		return CMD_ERROR;
 	}
 
@@ -1566,10 +1566,10 @@
 	/* If the stop was a drive-through stop replace the road */
 	if ((flags & DC_EXEC) && CmdSucceeded(ret) && is_drive_through) {
 		/* Rebuild the drive throuhg road stop. As a road stop can only be
-		 * removed by the owner of the roadstop, _current_player is the
+		 * removed by the owner of the roadstop, _current_company is the
 		 * owner of the road stop. */
 		MakeRoadNormal(tile, road_bits, rts, is_towns_road ? ClosestTownFromTile(tile, UINT_MAX)->index : 0,
-				is_towns_road ? OWNER_TOWN : _current_player, _current_player, _current_player);
+				is_towns_road ? OWNER_TOWN : _current_company, _current_company, _current_company);
 	}
 
 	return ret;
@@ -1815,7 +1815,7 @@
 	if (st == NULL) st = GetClosestStationFromTile(tile);
 
 	if (st != NULL) {
-		if (st->owner != _current_player) {
+		if (st->owner != _current_company) {
 			return_cmd_error(STR_3009_TOO_CLOSE_TO_ANOTHER_STATION);
 		}
 
@@ -1836,8 +1836,8 @@
 			st->town = t;
 			st->string_id = GenerateStationName(st, tile, !(afc->flags & AirportFTAClass::AIRPLANES) ? STATIONNAMING_HELIPORT : STATIONNAMING_AIRPORT);
 
-			if (IsValidPlayerID(_current_player)) {
-				SetBit(st->town->have_ratings, _current_player);
+			if (IsValidCompanyID(_current_company)) {
+				SetBit(st->town->have_ratings, _current_company);
 			}
 			st->sign.width_1 = 0;
 		}
@@ -1889,7 +1889,7 @@
 
 static CommandCost RemoveAirport(Station *st, uint32 flags)
 {
-	if (_current_player != OWNER_WATER && !CheckOwnership(st->owner)) {
+	if (_current_company != OWNER_WATER && !CheckOwnership(st->owner)) {
 		return CMD_ERROR;
 	}
 
@@ -1969,8 +1969,8 @@
 		st->town = ClosestTownFromTile(tile, UINT_MAX);
 		st->string_id = GenerateStationName(st, tile, STATIONNAMING_BUOY);
 
-		if (IsValidPlayerID(_current_player)) {
-			SetBit(st->town->have_ratings, _current_player);
+		if (IsValidCompanyID(_current_company)) {
+			SetBit(st->town->have_ratings, _current_company);
 		}
 		st->sign.width_1 = 0;
 		st->dock_tile = tile;
@@ -1994,16 +1994,16 @@
 }
 
 /**
- * Tests whether the player's vehicles have this station in orders
- * When player == INVALID_PLAYER, then check all vehicles
+ * Tests whether the company's vehicles have this station in orders
+ * When company == INVALID_COMPANY, then check all vehicles
  * @param station station ID
- * @param player player ID, INVALID_PLAYER to disable the check
+ * @param company company ID, INVALID_COMPANY to disable the check
  */
-bool HasStationInUse(StationID station, PlayerID player)
+bool HasStationInUse(StationID station, CompanyID company)
 {
 	const Vehicle *v;
 	FOR_ALL_VEHICLES(v) {
-		if (player == INVALID_PLAYER || v->owner == player) {
+		if (company == INVALID_COMPANY || v->owner == company) {
 			const Order *order;
 			FOR_VEHICLE_ORDERS(v, order) {
 				if (order->IsType(OT_GOTO_STATION) && order->GetDestination() == station) {
@@ -2018,11 +2018,11 @@
 static CommandCost RemoveBuoy(Station *st, uint32 flags)
 {
 	/* XXX: strange stuff */
-	if (!IsValidPlayerID(_current_player)) return_cmd_error(INVALID_STRING_ID);
+	if (!IsValidCompanyID(_current_company)) return_cmd_error(INVALID_STRING_ID);
 
 	TileIndex tile = st->dock_tile;
 
-	if (HasStationInUse(st->index, INVALID_PLAYER)) return_cmd_error(STR_BUOY_IS_IN_USE);
+	if (HasStationInUse(st->index, INVALID_COMPANY)) return_cmd_error(STR_BUOY_IS_IN_USE);
 	/* remove the buoy if there is a ship on tile when company goes bankrupt... */
 	if (!(flags & DC_BANKRUPT) && !EnsureNoVehicleOnGround(tile)) return CMD_ERROR;
 
@@ -2110,7 +2110,7 @@
 	if (st == NULL) st = GetClosestStationFromTile(tile);
 
 	if (st != NULL) {
-		if (st->owner != _current_player) {
+		if (st->owner != _current_company) {
 			return_cmd_error(STR_3009_TOO_CLOSE_TO_ANOTHER_STATION);
 		}
 
@@ -2128,8 +2128,8 @@
 			st->town = ClosestTownFromTile(tile, UINT_MAX);
 			st->string_id = GenerateStationName(st, tile, STATIONNAMING_DOCK);
 
-			if (IsValidPlayerID(_current_player)) {
-				SetBit(st->town->have_ratings, _current_player);
+			if (IsValidCompanyID(_current_company)) {
+				SetBit(st->town->have_ratings, _current_company);
 			}
 		}
 	}
@@ -2208,13 +2208,13 @@
 	uint32 relocation = 0;
 	const Station *st = NULL;
 	const StationSpec *statspec = NULL;
-	PlayerID owner = GetTileOwner(ti->tile);
+	Owner owner = GetTileOwner(ti->tile);
 
 	SpriteID palette;
-	if (IsValidPlayerID(owner)) {
-		palette = PLAYER_SPRITE_COLOR(owner);
+	if (IsValidCompanyID(owner)) {
+		palette = COMPANY_SPRITE_COLOR(owner);
 	} else {
-		/* Some stations are not owner by a player, namely oil rigs */
+		/* Some stations are not owner by a company, namely oil rigs */
 		palette = PALETTE_TO_GREY;
 	}
 
@@ -2326,7 +2326,7 @@
 void StationPickerDrawSprite(int x, int y, StationType st, RailType railtype, RoadType roadtype, int image)
 {
 	int32 total_offset = 0;
-	SpriteID pal = PLAYER_SPRITE_COLOR(_local_player);
+	SpriteID pal = COMPANY_SPRITE_COLOR(_local_company);
 	const DrawTileSprites *t = &_station_display_datas[st][image];
 
 	if (railtype != INVALID_RAILTYPE) {
@@ -2649,7 +2649,7 @@
 				(rating += 13, true);
 			}
 
-			if (IsValidPlayerID(st->owner) && HasBit(st->town->statues, st->owner)) rating += 26;
+			if (IsValidCompanyID(st->owner) && HasBit(st->town->statues, st->owner)) rating += 26;
 
 			{
 				byte days = ge->days_since_pickup;
@@ -2762,7 +2762,7 @@
 }
 
 
-void ModifyStationRatingAround(TileIndex tile, PlayerID owner, int amount, uint radius)
+void ModifyStationRatingAround(TileIndex tile, Owner owner, int amount, uint radius)
 {
 	Station *st;
 
@@ -3044,15 +3044,15 @@
 	if (st->facilities == 0) delete st;
 }
 
-static void ChangeTileOwner_Station(TileIndex tile, PlayerID old_player, PlayerID new_player)
+static void ChangeTileOwner_Station(TileIndex tile, Owner old_owner, Owner new_owner)
 {
-	if (!IsTileOwner(tile, old_player)) return;
-
-	if (new_player != PLAYER_SPECTATOR) {
+	if (!IsTileOwner(tile, old_owner)) return;
+
+	if (new_owner != INVALID_OWNER) {
 		Station *st = GetStationByTile(tile);
 
-		SetTileOwner(tile, new_player);
-		if (!IsBuoy(tile)) st->owner = new_player; // do not set st->owner for buoys
+		SetTileOwner(tile, new_owner);
+		if (!IsBuoy(tile)) st->owner = new_owner; // do not set st->owner for buoys
 		InvalidateWindowClassesData(WC_STATION_LIST, 0);
 	} else {
 		if (IsDriveThroughStopTile(tile)) {
@@ -3060,13 +3060,13 @@
 			DoCommand(tile, 0, (GetStationType(tile) == STATION_TRUCK) ? ROADSTOP_TRUCK : ROADSTOP_BUS, DC_EXEC | DC_BANKRUPT, CMD_REMOVE_ROAD_STOP);
 			assert(IsTileType(tile, MP_ROAD));
 			/* Change owner of tile and all roadtypes */
-			ChangeTileOwner(tile, old_player, new_player);
+			ChangeTileOwner(tile, old_owner, new_owner);
 		} else {
 			DoCommand(tile, 0, 0, DC_EXEC | DC_BANKRUPT, CMD_LANDSCAPE_CLEAR);
 			/* Set tile owner of water under (now removed) buoy and dock to OWNER_NONE.
 			 * Update owner of buoy if it was not removed (was in orders).
 			 * Do not update when owned by OWNER_WATER (sea and rivers). */
-			if ((IsTileType(tile, MP_WATER) || IsBuoyTile(tile)) && IsTileOwner(tile, old_player)) SetTileOwner(tile, OWNER_NONE);
+			if ((IsTileType(tile, MP_WATER) || IsBuoyTile(tile)) && IsTileOwner(tile, old_owner)) SetTileOwner(tile, OWNER_NONE);
 		}
 	}
 }
--- a/src/station_func.h	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/station_func.h	Tue Sep 30 20:39:50 2008 +0000
@@ -14,7 +14,7 @@
 #include "vehicle_type.h"
 #include <set>
 
-void ModifyStationRatingAround(TileIndex tile, PlayerID owner, int amount, uint radius);
+void ModifyStationRatingAround(TileIndex tile, Owner owner, int amount, uint radius);
 
 /** A set of stations (\c const \c Station* ) */
 typedef std::set<Station*> StationSet;
@@ -31,7 +31,7 @@
 const DrawTileSprites *GetStationTileLayout(StationType st, byte gfx);
 void StationPickerDrawSprite(int x, int y, StationType st, RailType railtype, RoadType roadtype, int image);
 
-bool HasStationInUse(StationID station, PlayerID player);
+bool HasStationInUse(StationID station, CompanyID company);
 
 RoadStop * GetRoadStopByTile(TileIndex tile, RoadStopType type);
 uint GetNumRoadStops(const Station* st, RoadStopType type);
--- a/src/station_gui.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/station_gui.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -84,9 +84,9 @@
 typedef GUIList<const Station*> GUIStationList;
 
 /**
- * The list of stations per player.
+ * The list of stations per company.
  */
-class PlayerStationsWindow : public Window
+class CompanyStationsWindow : public Window
 {
 protected:
 	/* Runtime saved values */
@@ -107,13 +107,13 @@
 	/**
 	 * (Re)Build station list
 	 *
-	 * @param owner player whose stations are to be in list
+	 * @param owner company whose stations are to be in list
 	 */
-	void BuildStationsList(const PlayerID owner)
+	void BuildStationsList(const Owner owner)
 	{
 		if (!this->stations.NeedRebuild()) return;
 
-		DEBUG(misc, 3, "Building station list for player %d", owner);
+		DEBUG(misc, 3, "Building station list for company %d", owner);
 
 		this->stations.Clear();
 
@@ -208,7 +208,7 @@
 	}
 
 public:
-	PlayerStationsWindow(const WindowDesc *desc, WindowNumber window_number) : Window(desc, window_number)
+	CompanyStationsWindow(const WindowDesc *desc, WindowNumber window_number) : Window(desc, window_number)
 	{
 		this->caption_color = (byte)this->window_number;
 		this->vscroll.cap = 12;
@@ -276,21 +276,21 @@
 		this->FindWindowPlacementAndResize(desc);
 	}
 
-	~PlayerStationsWindow()
+	~CompanyStationsWindow()
 	{
 		this->last_sorting = this->stations.GetListing();
 	}
 
 	virtual void OnPaint()
 	{
-		const PlayerID owner = (PlayerID)this->window_number;
+		const Owner owner = (Owner)this->window_number;
 
 		this->BuildStationsList(owner);
 		this->SortStationsList();
 
 		SetVScrollCount(this, this->stations.Length());
 
-		/* draw widgets, with player's name in the caption */
+		/* draw widgets, with company's name in the caption */
 		SetDParam(0, owner);
 		SetDParam(1, this->vscroll.count);
 
@@ -326,7 +326,7 @@
 		cg_ofst = this->IsWidgetLowered(SLW_FACILALL) ? 2 : 1;
 		DrawString(71 + cg_ofst, y + cg_ofst, STR_ABBREV_ALL, TC_BLACK);
 
-		if (this->vscroll.count == 0) { // player has no stations
+		if (this->vscroll.count == 0) { // company has no stations
 			DrawString(xb, 40, STR_304A_NONE, TC_FROMSTRING);
 			return;
 		}
@@ -373,7 +373,7 @@
 
 				const Station *st = this->stations[id_v];
 				/* do not check HasStationInUse - it is slow and may be invalid */
-				assert(st->owner == (PlayerID)this->window_number || (st->owner == OWNER_NONE && !st->IsBuoy()));
+				assert(st->owner == (Owner)this->window_number || (st->owner == OWNER_NONE && !st->IsBuoy()));
 
 				if (_ctrl_pressed) {
 					ShowExtraViewPortWindow(st->xy);
@@ -512,7 +512,7 @@
 	{
 		if (_pause_game != 0) return;
 		if (this->stations.NeedResort()) {
-			DEBUG(misc, 3, "Periodic rebuild station list player %d", this->window_number);
+			DEBUG(misc, 3, "Periodic rebuild station list company %d", this->window_number);
 			this->SetDirty();
 		}
 	}
@@ -538,15 +538,15 @@
 	}
 };
 
-Listing PlayerStationsWindow::last_sorting = {false, 0};
-byte PlayerStationsWindow::facilities = FACIL_TRAIN | FACIL_TRUCK_STOP | FACIL_BUS_STOP | FACIL_AIRPORT | FACIL_DOCK;
-bool PlayerStationsWindow::include_empty = true;
-const uint32 PlayerStationsWindow::cargo_filter_max = UINT32_MAX;
-uint32 PlayerStationsWindow::cargo_filter = UINT32_MAX;
-const Station *PlayerStationsWindow::last_station = NULL;
+Listing CompanyStationsWindow::last_sorting = {false, 0};
+byte CompanyStationsWindow::facilities = FACIL_TRAIN | FACIL_TRUCK_STOP | FACIL_BUS_STOP | FACIL_AIRPORT | FACIL_DOCK;
+bool CompanyStationsWindow::include_empty = true;
+const uint32 CompanyStationsWindow::cargo_filter_max = UINT32_MAX;
+uint32 CompanyStationsWindow::cargo_filter = UINT32_MAX;
+const Station *CompanyStationsWindow::last_station = NULL;
 
 /* Availible station sorting functions */
-GUIStationList::SortFunction *const PlayerStationsWindow::sorter_funcs[] = {
+GUIStationList::SortFunction *const CompanyStationsWindow::sorter_funcs[] = {
 	&StationNameSorter,
 	&StationTypeSorter,
 	&StationWaitingSorter,
@@ -554,7 +554,7 @@
 };
 
 /* Names of the sorting functions */
-const StringID PlayerStationsWindow::sorter_names[] = {
+const StringID CompanyStationsWindow::sorter_names[] = {
 	STR_SORT_BY_DROPDOWN_NAME,
 	STR_SORT_BY_FACILITY,
 	STR_SORT_BY_WAITING,
@@ -563,7 +563,7 @@
 };
 
 
-static const Widget _player_stations_widgets[] = {
+static const Widget _company_stations_widgets[] = {
 {   WWT_CLOSEBOX,   RESIZE_NONE,  COLOUR_GREY,     0,    10,     0,    13, STR_00C5,          STR_018B_CLOSE_WINDOW},            // SLW_CLOSEBOX
 {    WWT_CAPTION,  RESIZE_RIGHT,  COLOUR_GREY,    11,   345,     0,    13, STR_3048_STATIONS, STR_018C_WINDOW_TITLE_DRAG_THIS},
 {  WWT_STICKYBOX,     RESIZE_LR,  COLOUR_GREY,   346,   357,     0,    13, 0x0,               STR_STICKY_BUTTON},
@@ -589,23 +589,23 @@
 {   WIDGETS_END},
 };
 
-static const WindowDesc _player_stations_desc = {
+static const WindowDesc _company_stations_desc = {
 	WDP_AUTO, WDP_AUTO, 358, 162, 358, 162,
 	WC_STATION_LIST, WC_NONE,
 	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_STICKY_BUTTON | WDF_RESIZABLE,
-	_player_stations_widgets,
+	_company_stations_widgets,
 };
 
 /**
- * Opens window with list of player's stations
+ * Opens window with list of company's stations
  *
- * @param player player whose stations' list show
+ * @param company whose stations' list show
  */
-void ShowPlayerStations(PlayerID player)
+void ShowCompanyStations(CompanyID company)
 {
-	if (!IsValidPlayerID(player)) return;
+	if (!IsValidCompanyID(company)) return;
 
-	AllocateWindowDescFront<PlayerStationsWindow>(&_player_stations_desc, player);
+	AllocateWindowDescFront<CompanyStationsWindow>(&_company_stations_desc, company);
 }
 
 static const Widget _station_view_widgets[] = {
@@ -687,7 +687,7 @@
 
 	StationViewWindow(const WindowDesc *desc, WindowNumber window_number) : Window(desc, window_number)
 	{
-		PlayerID owner = GetStation(window_number)->owner;
+		Owner owner = GetStation(window_number)->owner;
 		if (owner != OWNER_NONE) this->caption_color = owner;
 		this->vscroll.cap = 5;
 		this->resize.step_height = 10;
@@ -755,7 +755,7 @@
 		SetVScrollCount(this, (int)cargolist.size() + 1); // update scrollbar
 
 		/* disable some buttons */
-		this->SetWidgetDisabledState(SVW_RENAME,   st->owner != _local_player);
+		this->SetWidgetDisabledState(SVW_RENAME,   st->owner != _local_company);
 		this->SetWidgetDisabledState(SVW_TRAINS,   !(st->facilities & FACIL_TRAIN));
 		this->SetWidgetDisabledState(SVW_ROADVEHS, !(st->facilities & FACIL_TRUCK_STOP) && !(st->facilities & FACIL_BUS_STOP));
 		this->SetWidgetDisabledState(SVW_PLANES,   !(st->facilities & FACIL_AIRPORT));
@@ -929,16 +929,16 @@
 
 			case SVW_PLANES: { // Show a list of scheduled aircraft to this station
 				const Station *st = GetStation(this->window_number);
-				/* Since oilrigs have no owners, show the scheduled aircraft of current player */
-				PlayerID owner = (st->owner == OWNER_NONE) ? _current_player : st->owner;
+				/* Since oilrigs have no owners, show the scheduled aircraft of current company */
+				Owner owner = (st->owner == OWNER_NONE) ? _current_company : st->owner;
 				ShowVehicleListWindow(owner, VEH_AIRCRAFT, (StationID)this->window_number);
 				break;
 			}
 
 			case SVW_SHIPS: { // Show a list of scheduled ships to this station
 				const Station *st = GetStation(this->window_number);
-				/* Since oilrigs/bouys have no owners, show the scheduled ships of current player */
-				PlayerID owner = (st->owner == OWNER_NONE) ? _current_player : st->owner;
+				/* Since oilrigs/bouys have no owners, show the scheduled ships of current company */
+				Owner owner = (st->owner == OWNER_NONE) ? _current_company : st->owner;
 				ShowVehicleListWindow(owner, VEH_SHIP, (StationID)this->window_number);
 				break;
 			}
--- a/src/station_gui.h	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/station_gui.h	Tue Sep 30 20:39:50 2008 +0000
@@ -5,7 +5,7 @@
 #ifndef STATION_GUI_H
 #define STATION_GUI_H
 
-/** Enum for PlayerStations, referring to _player_stations_widgets */
+/** Enum for CompanyStations, referring to _company_stations_widgets */
 enum StationListWidgets {
 	SLW_CLOSEBOX       =  0, ///< Close 'X' button
 
@@ -27,7 +27,7 @@
 	SLW_SORTDROPBTN    = 17, ///< Dropdown button
 	SLW_PAN_SORT_RIGHT = 18, ///< Panel right of sorting options
 
-	SLW_CARGOSTART     = 19, ///< Widget numbers used for list of cargo types (not present in _player_stations_widgets)
+	SLW_CARGOSTART     = 19, ///< Widget numbers used for list of cargo types (not present in _company_stations_widgets)
 };
 
 /** Enum for StationView, referring to _station_view_widgets and _station_view_expanded_widgets */
--- a/src/statusbar_gui.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/statusbar_gui.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -78,15 +78,15 @@
 
 	virtual void OnPaint()
 	{
-		const Player *p = (_local_player == PLAYER_SPECTATOR) ? NULL : GetPlayer(_local_player);
+		const Company *c = (_local_company == COMPANY_SPECTATOR) ? NULL : GetCompany(_local_company);
 
 		this->DrawWidgets();
 		SetDParam(0, _date);
 		DrawStringCentered(70, 1, (_pause_game || _settings_client.gui.status_long_date) ? STR_00AF : STR_00AE, TC_FROMSTRING);
 
-		if (p != NULL) {
-			/* Draw player money */
-			SetDParam(0, p->player_money);
+		if (c != NULL) {
+			/* Draw company money */
+			SetDParam(0, c->money);
 			DrawStringCentered(this->widget[2].left + 70, 1, STR_0004, TC_FROMSTRING);
 		}
 
@@ -101,16 +101,16 @@
 			/* Draw the scrolling news text */
 			if (!DrawScrollingStatusText(&_statusbar_news_item, this->ticker_scroll, this->widget[1].right - this->widget[1].left - 2)) {
 				this->ticker_scroll = -1280;
-				if (p != NULL) {
+				if (c != NULL) {
 					/* This is the default text */
-					SetDParam(0, p->index);
+					SetDParam(0, c->index);
 					DrawStringCenteredTruncated(this->widget[1].left + 1, this->widget[1].right - 1, 1, STR_02BA, TC_FROMSTRING);
 				}
 			}
 		} else {
-			if (p != NULL) {
+			if (c != NULL) {
 				/* This is the default text */
-				SetDParam(0, p->index);
+				SetDParam(0, c->index);
 				DrawStringCenteredTruncated(this->widget[1].left + 1, this->widget[1].right - 1, 1, STR_02BA, TC_FROMSTRING);
 			}
 		}
@@ -133,7 +133,7 @@
 	{
 		switch (widget) {
 			case 1: ShowLastNewsMessage(); break;
-			case 2: if (_local_player != PLAYER_SPECTATOR) ShowPlayerFinances(_local_player); break;
+			case 2: if (_local_company != COMPANY_SPECTATOR) ShowCompanyFinances(_local_company); break;
 			default: ResetObjectToPlace();
 		}
 	}
--- a/src/strings.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/strings.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -49,7 +49,7 @@
 
 static char *StationGetSpecialString(char *buff, int x, const char* last);
 static char *GetSpecialTownNameString(char *buff, int ind, uint32 seed, const char* last);
-static char *GetSpecialPlayerNameString(char *buff, int ind, const int64 *argv, const char* last);
+static char *GetSpecialNameString(char *buff, int ind, const int64 *argv, const char* last);
 
 static char *FormatString(char *buff, const char *str, const int64 *argv, uint casei, const char* last);
 
@@ -130,7 +130,7 @@
 
 		case 14:
 			if (index >= 0xE4)
-				return GetSpecialPlayerNameString(buffr, index - 0xE4, argv, last);
+				return GetSpecialNameString(buffr, index - 0xE4, argv, last);
 			break;
 
 		case 15:
@@ -959,39 +959,39 @@
 			}
 
 			case SCC_COMPANY_NAME: { // {COMPANY}
-				const Player *p = GetPlayer((PlayerID)GetInt32(&argv));
+				const Company *c = GetCompany((CompanyID)GetInt32(&argv));
 
-				if (p->name != NULL) {
-					buff = strecpy(buff, p->name, last);
+				if (c->name != NULL) {
+					buff = strecpy(buff, c->name, last);
 				} else {
 					int64 args[1];
-					args[0] = p->name_2;
-					buff = GetStringWithArgs(buff, p->name_1, args, last);
+					args[0] = c->name_2;
+					buff = GetStringWithArgs(buff, c->name_1, args, last);
 				}
 				break;
 			}
 
 			case SCC_COMPANY_NUM: { // {COMPANYNUM}
-				PlayerID player = (PlayerID)GetInt32(&argv);
+				CompanyID company = (CompanyID)GetInt32(&argv);
 
-				/* Nothing is added for AI or inactive players */
-				if (IsValidPlayerID(player) && IsHumanPlayer(player)) {
+				/* Nothing is added for AI or inactive companies */
+				if (IsValidCompanyID(company) && IsHumanCompany(company)) {
 					int64 args[1];
-					args[0] = player + 1;
+					args[0] = company + 1;
 					buff = GetStringWithArgs(buff, STR_7002_PLAYER, args, last);
 				}
 				break;
 			}
 
 			case SCC_PLAYER_NAME: { // {PLAYERNAME}
-				const Player *p = GetPlayer((PlayerID)GetInt32(&argv));
+				const Company *c = GetCompany((CompanyID)GetInt32(&argv));
 
-				if (p->president_name != NULL) {
-					buff = strecpy(buff, p->president_name, last);
+				if (c->president_name != NULL) {
+					buff = strecpy(buff, c->president_name, last);
 				} else {
 					int64 args[1];
-					args[0] = p->president_name_2;
-					buff = GetStringWithArgs(buff, p->president_name_1, args, last);
+					args[0] = c->president_name_2;
+					buff = GetStringWithArgs(buff, c->president_name_1, args, last);
 				}
 				break;
 			}
@@ -1165,7 +1165,7 @@
 	return buff;
 }
 
-static char *GetSpecialPlayerNameString(char *buff, int ind, const int64 *argv, const char* last)
+static char *GetSpecialNameString(char *buff, int ind, const int64 *argv, const char* last)
 {
 	switch (ind) {
 		case 1: // not used
--- a/src/subsidy_gui.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/subsidy_gui.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -153,8 +153,7 @@
 
 				SetupSubsidyDecodeParam(s, 1);
 
-				PlayerID player = GetStation(s->to)->owner;
-				SetDParam(3, player);
+				SetDParam(3, GetStation(s->to)->owner);
 
 				/* Displays the two connected stations */
 				xt = DrawStringTruncated(x + 2, y, STR_202C_FROM_TO, TC_FROMSTRING, width - 2);
--- a/src/table/sprites.h	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/table/sprites.h	Tue Sep 30 20:39:50 2008 +0000
@@ -242,7 +242,7 @@
 	/* Manager face sprites */
 	SPR_GRADIENT = 874, // background gradient behind manager face
 
-	/* Icon showing player colour. */
+	/* Icon showing company colour. */
 	SPR_PLAYER_ICON = 747,
 
 	/* is itself no foundation sprite, because tileh 0 has no foundation */
@@ -1530,7 +1530,7 @@
 	PALETTE_TO_DARK_GREEN       = 0x30E,
 	PALETTE_TO_BLUE             = 0x30F,
 	PALETTE_TO_CREAM            = 0x310,
-	//maybe don't use as player color because it doesn't display in the graphs?
+	//maybe don't use as company color because it doesn't display in the graphs?
 	PALETTE_TO_MAUVE            = 0x311,
 	PALETTE_TO_PURPLE           = 0x312,
 	PALETTE_TO_ORANGE           = 0x313,
--- a/src/terraform_gui.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/terraform_gui.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -327,7 +327,7 @@
 
 void ShowTerraformToolbar(Window *link)
 {
-	if (!IsValidPlayerID(_current_player)) return;
+	if (!IsValidCompanyID(_current_company)) return;
 	Window *w = AllocateWindowDescFront<TerraformToolbarWindow>(&_terraform_desc, 0);
 	if (w != NULL && link != NULL) {
 		/* Align the terraform toolbar under the main toolbar and put the linked
@@ -487,7 +487,7 @@
 	ETTW_INCREASE_SIZE = ETTW_BUTTONS_END, ///< Upwards arrow button to increase terraforming size
 	ETTW_DECREASE_SIZE,                    ///< Downwards arrow button to decrease terraforming size
 	ETTW_NEW_SCENARIO,                     ///< Button for generating a new scenario
-	ETTW_RESET_LANDSCAPE,                  ///< Button for removing all player-owned property
+	ETTW_RESET_LANDSCAPE,                  ///< Button for removing all company-owned property
 };
 
 /**
@@ -557,22 +557,22 @@
 static void ResetLandscapeConfirmationCallback(Window *w, bool confirmed)
 {
 	if (confirmed) {
-		Player *p;
+		Company *c;
 
 		/* Set generating_world to true to get instant-green grass after removing
-		 * player property. */
+		 * company property. */
 		_generating_world = true;
 
-		/* Delete all stations owned by a player */
+		/* Delete all stations owned by a company */
 		Station *st;
 		FOR_ALL_STATIONS(st) {
-			if (IsValidPlayerID(st->owner)) delete st;
+			if (IsValidCompanyID(st->owner)) delete st;
 		}
 
-		/* Delete all players */
-		FOR_ALL_PLAYERS(p) {
-			ChangeOwnershipOfPlayerItems(p->index, PLAYER_SPECTATOR);
-			delete p;
+		/* Delete all companies */
+		FOR_ALL_COMPANIES(c) {
+			ChangeOwnershipOfCompanyItems(c->index, INVALID_OWNER);
+			delete c;
 		}
 		_generating_world = false;
 	}
--- a/src/tile_cmd.h	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/tile_cmd.h	Tue Sep 30 20:39:50 2008 +0000
@@ -81,7 +81,7 @@
 typedef void ClickTileProc(TileIndex tile);
 typedef void AnimateTileProc(TileIndex tile);
 typedef void TileLoopProc(TileIndex tile);
-typedef void ChangeTileOwnerProc(TileIndex tile, PlayerID old_player, PlayerID new_player);
+typedef void ChangeTileOwnerProc(TileIndex tile, Owner old_owner, Owner new_owner);
 
 /** @see VehicleEnterTileStatus to see what the return values mean */
 typedef VehicleEnterTileStatus VehicleEnterTileProc(Vehicle *v, TileIndex tile, int x, int y);
@@ -123,7 +123,7 @@
 
 TrackStatus GetTileTrackStatus(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side = INVALID_DIAGDIR);
 void GetAcceptedCargo(TileIndex tile, AcceptedCargo ac);
-void ChangeTileOwner(TileIndex tile, PlayerID old_player, PlayerID new_player);
+void ChangeTileOwner(TileIndex tile, Owner old_owner, Owner new_owner);
 void AnimateTile(TileIndex tile);
 void ClickTile(TileIndex tile);
 void GetTileDesc(TileIndex tile, TileDesc *td);
--- a/src/tile_map.h	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/tile_map.h	Tue Sep 30 20:39:50 2008 +0000
@@ -122,7 +122,7 @@
  *
  * This function returns the owner of a tile. This cannot used
  * for tiles which type is one of MP_HOUSE, MP_VOID and MP_INDUSTRY
- * as no player owned any of these buildings.
+ * as no company owned any of these buildings.
  *
  * @param tile The tile to check
  * @return The owner of the tile
--- a/src/timetable_gui.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/timetable_gui.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -146,7 +146,7 @@
 
 		SetVScrollCount(this, v->num_orders * 2);
 
-		if (v->owner == _local_player) {
+		if (v->owner == _local_company) {
 			bool disable = true;
 			if (selected != -1) {
 				const Order *order = GetVehicleOrder(v, ((selected + 1) / 2) % v->num_orders);
--- a/src/toolbar_gui.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/toolbar_gui.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -80,7 +80,7 @@
 	TBN_SUBSIDIES,
 	TBN_STATIONS,
 	TBN_FINANCES,
-	TBN_PLAYERS,
+	TBN_COMPANIES,
 	TBN_GRAPHICS,
 	TBN_LEAGUE,
 	TBN_INDUSTRIES,
@@ -143,7 +143,7 @@
 };
 
 /**
- * Drop down list entry for showing a company entry, with player 'blob'.
+ * Drop down list entry for showing a company entry, with companies 'blob'.
  */
 class DropDownListCompanyItem : public DropDownListItem {
 public:
@@ -161,20 +161,20 @@
 	uint Width() const
 	{
 		char buffer[512];
-		PlayerID player = (PlayerID)result;
-		SetDParam(0, player);
-		SetDParam(1, player);
+		CompanyID company = (CompanyID)result;
+		SetDParam(0, company);
+		SetDParam(1, company);
 		GetString(buffer, STR_7021, lastof(buffer));
 		return GetStringBoundingBox(buffer).width + 19;
 	}
 
 	void Draw(int x, int y, uint width, uint height, bool sel, int bg_colour) const
 	{
-		PlayerID player = (PlayerID)result;
-		DrawPlayerIcon(player, x + 2, y + 1);
+		CompanyID company = (CompanyID)result;
+		DrawCompanyIcon(company, x + 2, y + 1);
 
-		SetDParam(0, player);
-		SetDParam(1, player);
+		SetDParam(0, company);
+		SetDParam(1, company);
 		int col;
 		if (this->greyed) {
 			col = TC_GREY;
@@ -201,21 +201,21 @@
 /**
  * Pop up a generic company list menu.
  */
-static void PopupMainPlayerToolbMenu(Window *w, int widget, int grey = 0)
+static void PopupMainCompanyToolbMenu(Window *w, int widget, int grey = 0)
 {
 	DropDownList *list = new DropDownList();
 
-	if (widget == TBN_PLAYERS && _networking) {
-		/* Add the client list button for the Players menu */
+	if (widget == TBN_COMPANIES && _networking) {
+		/* Add the client list button for the companies menu */
 		list->push_back(new DropDownListStringItem(STR_NETWORK_CLIENT_LIST, -1, false));
 	}
 
-	for (PlayerID p = PLAYER_FIRST; p < MAX_PLAYERS; p++) {
-		if (!IsValidPlayerID(p)) continue;
-		list->push_back(new DropDownListCompanyItem(p, false, HasBit(grey, p)));
+	for (CompanyID c = COMPANY_FIRST; c < MAX_COMPANIES; c++) {
+		if (!IsValidCompanyID(c)) continue;
+		list->push_back(new DropDownListCompanyItem(c, false, HasBit(grey, c)));
 	}
 
-	ShowDropDownList(w, list, _local_player == PLAYER_SPECTATOR ? -1 : _local_player, widget, 240, true, true);
+	ShowDropDownList(w, list, _local_company == COMPANY_SPECTATOR ? -1 : _local_company, widget, 240, true, true);
 	SndPlayFx(SND_15_BEEP);
 }
 
@@ -418,31 +418,31 @@
 
 static void ToolbarStationsClick(Window *w)
 {
-	PopupMainPlayerToolbMenu(w, TBN_STATIONS);
+	PopupMainCompanyToolbMenu(w, TBN_STATIONS);
 }
 
 static void MenuClickStations(int index)
 {
-	ShowPlayerStations((PlayerID)index);
+	ShowCompanyStations((CompanyID)index);
 }
 
 /* --- Finances button menu --- */
 
 static void ToolbarFinancesClick(Window *w)
 {
-	PopupMainPlayerToolbMenu(w, TBN_FINANCES);
+	PopupMainCompanyToolbMenu(w, TBN_FINANCES);
 }
 
 static void MenuClickFinances(int index)
 {
-	ShowPlayerFinances((PlayerID)index);
+	ShowCompanyFinances((CompanyID)index);
 }
 
 /* --- Company's button menu --- */
 
-static void ToolbarPlayersClick(Window *w)
+static void ToolbarCompaniesClick(Window *w)
 {
-	PopupMainPlayerToolbMenu(w, TBN_PLAYERS);
+	PopupMainCompanyToolbMenu(w, TBN_COMPANIES);
 }
 
 static void MenuClickCompany(int index)
@@ -450,7 +450,7 @@
 	if (_networking && index == -1) {
 		ShowClientList();
 	} else {
-		ShowPlayerCompany((PlayerID)index);
+		ShowCompany((CompanyID)index);
 	}
 }
 
@@ -496,7 +496,7 @@
 static void ToolbarIndustryClick(Window *w)
 {
 	/* Disable build-industry menu if we are a spectator */
-	PopupMainToolbMenu(w, TBN_INDUSTRIES, STR_INDUSTRY_DIR, (_current_player == PLAYER_SPECTATOR) ? 1 : 2);
+	PopupMainToolbMenu(w, TBN_INDUSTRIES, STR_INDUSTRY_DIR, (_current_company == COMPANY_SPECTATOR) ? 1 : 2);
 }
 
 static void MenuClickIndustry(int index)
@@ -517,7 +517,7 @@
 	FOR_ALL_VEHICLES(v) {
 		if (v->type == veh && v->IsPrimaryVehicle()) ClrBit(dis, v->owner);
 	}
-	PopupMainPlayerToolbMenu(w, TBN_VEHICLESTART + veh, dis);
+	PopupMainCompanyToolbMenu(w, TBN_VEHICLESTART + veh, dis);
 }
 
 
@@ -528,7 +528,7 @@
 
 static void MenuClickShowTrains(int index)
 {
-	ShowVehicleListWindow((PlayerID)index, VEH_TRAIN);
+	ShowVehicleListWindow((CompanyID)index, VEH_TRAIN);
 }
 
 /* --- Road vehicle button menu --- */
@@ -540,7 +540,7 @@
 
 static void MenuClickShowRoad(int index)
 {
-	ShowVehicleListWindow((PlayerID)index, VEH_ROAD);
+	ShowVehicleListWindow((CompanyID)index, VEH_ROAD);
 }
 
 /* --- Ship button menu --- */
@@ -552,7 +552,7 @@
 
 static void MenuClickShowShips(int index)
 {
-	ShowVehicleListWindow((PlayerID)index, VEH_SHIP);
+	ShowVehicleListWindow((CompanyID)index, VEH_SHIP);
 }
 
 /* --- Aircraft button menu --- */
@@ -564,7 +564,7 @@
 
 static void MenuClickShowAir(int index)
 {
-	ShowVehicleListWindow((PlayerID)index, VEH_AIRCRAFT);
+	ShowVehicleListWindow((CompanyID)index, VEH_AIRCRAFT);
 }
 
 /* --- Zoom in button --- */
@@ -591,11 +591,11 @@
 
 static void ToolbarBuildRailClick(Window *w)
 {
-	const Player *p = GetPlayer(_local_player);
+	const Company *c = GetCompany(_local_company);
 	DropDownList *list = new DropDownList();
 	for (RailType rt = RAILTYPE_BEGIN; rt != RAILTYPE_END; rt++) {
 		const RailtypeInfo *rti = GetRailTypeInfo(rt);
-		list->push_back(new DropDownListStringItem(rti->strings.menu_text, rt, !HasBit(p->avail_railtypes, rt)));
+		list->push_back(new DropDownListStringItem(rti->strings.menu_text, rt, !HasBit(c->avail_railtypes, rt)));
 	}
 	ShowDropDownList(w, list, _last_built_railtype, TBN_RAILS, 140, true, true);
 	SndPlayFx(SND_15_BEEP);
@@ -611,14 +611,14 @@
 
 static void ToolbarBuildRoadClick(Window *w)
 {
-	const Player *p = GetPlayer(_local_player);
+	const Company *c = GetCompany(_local_company);
 	DropDownList *list = new DropDownList();
 	for (RoadType rt = ROADTYPE_BEGIN; rt != ROADTYPE_END; rt++) {
 		/* Highways don't exist */
 		if (rt == ROADTYPE_HWAY) continue;
 
 		/* The standard road button is *always* available */
-		list->push_back(new DropDownListStringItem(STR_180A_ROAD_CONSTRUCTION + rt, rt, !(HasBit(p->avail_roadtypes, rt) || rt == ROADTYPE_ROAD)));
+		list->push_back(new DropDownListStringItem(STR_180A_ROAD_CONSTRUCTION + rt, rt, !(HasBit(c->avail_roadtypes, rt) || rt == ROADTYPE_ROAD)));
 	}
 	ShowDropDownList(w, list, _last_built_roadtype, TBN_ROADS, 140, true, true);
 	SndPlayFx(SND_15_BEEP);
@@ -958,7 +958,7 @@
 	ToolbarSubsidiesClick,
 	ToolbarStationsClick,
 	ToolbarFinancesClick,
-	ToolbarPlayersClick,
+	ToolbarCompaniesClick,
 	ToolbarGraphsClick,
 	ToolbarLeagueClick,
 	ToolbarIndustryClick,
@@ -1001,9 +1001,9 @@
 		/* If spectator, disable all construction buttons
 		* ie : Build road, rail, ships, airports and landscaping
 		* Since enabled state is the default, just disable when needed */
-		this->SetWidgetsDisabledState(_current_player == PLAYER_SPECTATOR, TBN_RAILS, TBN_ROADS, TBN_WATER, TBN_AIR, TBN_LANDSCAPE, WIDGET_LIST_END);
+		this->SetWidgetsDisabledState(_current_company == COMPANY_SPECTATOR, TBN_RAILS, TBN_ROADS, TBN_WATER, TBN_AIR, TBN_LANDSCAPE, WIDGET_LIST_END);
 		/* disable company list drop downs, if there are no companies */
-		this->SetWidgetsDisabledState(ActivePlayerCount() == TBN_PAUSE, TBN_STATIONS, TBN_FINANCES, TBN_TRAINS, TBN_ROADVEHS, TBN_SHIPS, TBN_AIRCRAFTS, WIDGET_LIST_END);
+		this->SetWidgetsDisabledState(ActiveCompanyCount() == TBN_PAUSE, TBN_STATIONS, TBN_FINANCES, TBN_TRAINS, TBN_ROADVEHS, TBN_SHIPS, TBN_AIRCRAFTS, WIDGET_LIST_END);
 
 		this->SetWidgetDisabledState(TBN_RAILS, !CanBuildVehicleInfrastructure(VEH_TRAIN));
 		this->SetWidgetDisabledState(TBN_AIR, !CanBuildVehicleInfrastructure(VEH_AIRCRAFT));
@@ -1030,16 +1030,16 @@
 			case WKC_F4: ShowSmallMap(); break;
 			case WKC_F5: ShowTownDirectory(); break;
 			case WKC_F6: ShowSubsidiesList(); break;
-			case WKC_F7: ShowPlayerStations(_local_player); break;
-			case WKC_F8: ShowPlayerFinances(_local_player); break;
-			case WKC_F9: ShowPlayerCompany(_local_player); break;
+			case WKC_F7: ShowCompanyStations(_local_company); break;
+			case WKC_F8: ShowCompanyFinances(_local_company); break;
+			case WKC_F9: ShowCompany(_local_company); break;
 			case WKC_F10: ShowOperatingProfitGraph(); break;
 			case WKC_F11: ShowCompanyLeagueTable(); break;
 			case WKC_F12: ShowBuildIndustryWindow(); break;
-			case WKC_SHIFT | WKC_F1: ShowVehicleListWindow(_local_player, VEH_TRAIN); break;
-			case WKC_SHIFT | WKC_F2: ShowVehicleListWindow(_local_player, VEH_ROAD); break;
-			case WKC_SHIFT | WKC_F3: ShowVehicleListWindow(_local_player, VEH_SHIP); break;
-			case WKC_SHIFT | WKC_F4: ShowVehicleListWindow(_local_player, VEH_AIRCRAFT); break;
+			case WKC_SHIFT | WKC_F1: ShowVehicleListWindow(_local_company, VEH_TRAIN); break;
+			case WKC_SHIFT | WKC_F2: ShowVehicleListWindow(_local_company, VEH_ROAD); break;
+			case WKC_SHIFT | WKC_F3: ShowVehicleListWindow(_local_company, VEH_SHIP); break;
+			case WKC_SHIFT | WKC_F4: ShowVehicleListWindow(_local_company, VEH_AIRCRAFT); break;
 			case WKC_NUM_PLUS: // Fall through
 			case WKC_EQUALS: // Fall through
 			case WKC_SHIFT | WKC_EQUALS: // Fall through
@@ -1121,7 +1121,7 @@
 {     WWT_IMGBTN,   RESIZE_NONE,  COLOUR_GREY,     0,     0,     0,    21, SPR_IMG_COMPANY_LIST,    STR_0173_DISPLAY_LIST_OF_COMPANY},  // TBN_STATIONS
 
 {     WWT_IMGBTN,   RESIZE_NONE,  COLOUR_GREY,     0,     0,     0,    21, SPR_IMG_COMPANY_FINANCE, STR_0177_DISPLAY_COMPANY_FINANCES}, // TBN_FINANCES
-{     WWT_IMGBTN,   RESIZE_NONE,  COLOUR_GREY,     0,     0,     0,    21, SPR_IMG_COMPANY_GENERAL, STR_0178_DISPLAY_COMPANY_GENERAL},  // TBN_PLAYERS
+{     WWT_IMGBTN,   RESIZE_NONE,  COLOUR_GREY,     0,     0,     0,    21, SPR_IMG_COMPANY_GENERAL, STR_0178_DISPLAY_COMPANY_GENERAL},  // TBN_COMPANIES
 {     WWT_IMGBTN,   RESIZE_NONE,  COLOUR_GREY,     0,     0,     0,    21, SPR_IMG_GRAPHS,          STR_0179_DISPLAY_GRAPHS},           // TBN_GRAPHICS
 {     WWT_IMGBTN,   RESIZE_NONE,  COLOUR_GREY,     0,     0,     0,    21, SPR_IMG_COMPANY_LEAGUE,  STR_017A_DISPLAY_COMPANY_LEAGUE},   // TBN_LEAGUE
 {     WWT_IMGBTN,   RESIZE_NONE,  COLOUR_GREY,     0,     0,     0,    21, SPR_IMG_INDUSTRY,        STR_0312_FUND_CONSTRUCTION_OF_NEW}, // TBN_INDUSTRIES
--- a/src/town.h	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/town.h	Tue Sep 30 20:39:50 2008 +0000
@@ -81,7 +81,7 @@
 enum HouseExtraFlags {
 	NO_EXTRA_FLAG            =       0,
 	BUILDING_IS_HISTORICAL   = 1U << 0,  ///< this house will only appear during town generation in random games, thus the historical
-	BUILDING_IS_PROTECTED    = 1U << 1,  ///< towns and AI will not remove this house, while human players will be able tp
+	BUILDING_IS_PROTECTED    = 1U << 1,  ///< towns and AI will not remove this house, while human players will be able to
 	SYNCHRONISED_CALLBACK_1B = 1U << 2,  ///< synchronized callback 1B will be performed, on multi tile houses
 	CALLBACK_1A_RANDOM_BITS  = 1U << 3,  ///< callback 1A needs random bits
 };
@@ -120,15 +120,15 @@
 	/* level of noise that all the airports are generating */
 	uint16 noise_reached;
 
-	/* Which players have a statue? */
+	/* Which companies have a statue? */
 	byte statues;
 
-	/* Player ratings as well as a mask that determines which players have a rating. */
-	PlayerMask have_ratings;
-	uint8 unwanted[MAX_PLAYERS]; ///< how many months companies aren't wanted by towns (bribe)
-	PlayerByte exclusivity;      ///< which player has exslusivity
-	uint8 exclusive_counter;     ///< months till the exclusivity expires
-	int16 ratings[MAX_PLAYERS];
+	/* Company ratings as well as a mask that determines which companies have a rating. */
+	CompanyMask have_ratings;
+	uint8 unwanted[MAX_COMPANIES]; ///< how many months companies aren't wanted by towns (bribe)
+	CompanyByte exclusivity;       ///< which company has exclusivity
+	uint8 exclusive_counter;       ///< months till the exclusivity expires
+	int16 ratings[MAX_COMPANIES];
 
 	/* Maximum amount of passengers and mail that can be transported. */
 	uint32 max_pass;
--- a/src/town_cmd.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/town_cmd.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -488,7 +488,7 @@
 		}
 	}
 
-	_current_player = OWNER_TOWN;
+	_current_company = OWNER_TOWN;
 
 	if (hs->building_flags & BUILDING_HAS_1_TILE &&
 			HasBit(t->flags12, TOWN_IS_FUNDED) &&
@@ -503,7 +503,7 @@
 		if (GB(r, 24, 8) >= 12) BuildTownHouse(t, tile);
 	}
 
-	_current_player = OWNER_NONE;
+	_current_company = OWNER_NONE;
 }
 
 /**
@@ -529,8 +529,8 @@
 	_cleared_town_rating += rating;
 	Town *t = _cleared_town = GetTownByTile(tile);
 
-	if (IsValidPlayerID(_current_player)) {
-		if (rating > t->ratings[_current_player] && !(flags & DC_NO_TOWN_RATING) && !_cheats.magic_bulldozer.value) {
+	if (IsValidCompanyID(_current_company)) {
+		if (rating > t->ratings[_current_company] && !(flags & DC_NO_TOWN_RATING) && !_cheats.magic_bulldozer.value) {
 			SetDParam(0, t->index);
 			return_cmd_error(STR_2009_LOCAL_AUTHORITY_REFUSES);
 		}
@@ -638,7 +638,7 @@
 	return 0;
 }
 
-static void ChangeTileOwner_Town(TileIndex tile, PlayerID old_player, PlayerID new_player)
+static void ChangeTileOwner_Town(TileIndex tile, Owner old_owner, Owner new_owner)
 {
 	/* not used */
 }
@@ -1284,9 +1284,9 @@
 		{ 0,  0}
 	};
 
-	/* Current player is a town */
-	PlayerID old_player = _current_player;
-	_current_player = OWNER_TOWN;
+	/* Current "company" is a town */
+	CompanyID old_company = _current_company;
+	_current_company = OWNER_TOWN;
 
 	TileIndex tile = t->xy; // The tile we are working with ATM
 
@@ -1295,7 +1295,7 @@
 	for (ptr = _town_coord_mod; ptr != endof(_town_coord_mod); ++ptr) {
 		if (GetTownRoadBits(tile) != ROAD_NONE) {
 			int r = GrowTownAtRoad(t, tile);
-			_current_player = old_player;
+			_current_company = old_company;
 			return r != 0;
 		}
 		tile = TILE_ADD(tile, ToTileIndexDiff(*ptr));
@@ -1309,14 +1309,14 @@
 		if (!IsTileType(tile, MP_HOUSE) && GetTileSlope(tile, NULL) == SLOPE_FLAT) {
 			if (CmdSucceeded(DoCommand(tile, 0, 0, DC_AUTO | DC_NO_WATER, CMD_LANDSCAPE_CLEAR))) {
 				DoCommand(tile, GenRandomRoadBits(), t->index, DC_EXEC | DC_AUTO, CMD_BUILD_ROAD);
-				_current_player = old_player;
+				_current_company = old_company;
 				return true;
 			}
 		}
 		tile = TILE_ADD(tile, ToTileIndexDiff(*ptr));
 	}
 
-	_current_player = old_player;
+	_current_company = old_company;
 	return false;
 }
 
@@ -1455,10 +1455,10 @@
 	t->act_food = 0;
 	t->act_water = 0;
 
-	for (uint i = 0; i != MAX_PLAYERS; i++) t->ratings[i] = RATING_INITIAL;
+	for (uint i = 0; i != MAX_COMPANIES; i++) t->ratings[i] = RATING_INITIAL;
 
 	t->have_ratings = 0;
-	t->exclusivity = INVALID_PLAYER;
+	t->exclusivity = INVALID_COMPANY;
 	t->exclusive_counter = 0;
 	t->statues = 0;
 
@@ -2143,17 +2143,17 @@
 
 static void TownActionAdvertiseSmall(Town *t)
 {
-	ModifyStationRatingAround(t->xy, _current_player, 0x40, 10);
+	ModifyStationRatingAround(t->xy, _current_company, 0x40, 10);
 }
 
 static void TownActionAdvertiseMedium(Town *t)
 {
-	ModifyStationRatingAround(t->xy, _current_player, 0x70, 15);
+	ModifyStationRatingAround(t->xy, _current_company, 0x70, 15);
 }
 
 static void TownActionAdvertiseLarge(Town *t)
 {
-	ModifyStationRatingAround(t->xy, _current_player, 0xA0, 20);
+	ModifyStationRatingAround(t->xy, _current_company, 0xA0, 20);
 }
 
 static void TownActionRoadRebuild(Town *t)
@@ -2161,7 +2161,7 @@
 	t->road_build_months = 6;
 
 	char *company_name = MallocT<char>(64);
-	SetDParam(0, _current_player);
+	SetDParam(0, _current_company);
 	GetString(company_name, STR_COMPANY_NAME, company_name + 64);
 
 	SetDParam(0, t->index);
@@ -2182,14 +2182,14 @@
 		return false;
 	}
 
-	PlayerID old = _current_player;
-	_current_player = OWNER_NONE;
+	CompanyID old = _current_company;
+	_current_company = OWNER_NONE;
 	CommandCost r = DoCommand(tile, 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR);
-	_current_player = old;
+	_current_company = old;
 
 	if (CmdFailed(r)) return false;
 
-	MakeStatue(tile, _current_player, town_id);
+	MakeStatue(tile, _current_company, town_id);
 	MarkTileDirtyByTile(tile);
 
 	return true;
@@ -2217,7 +2217,7 @@
 	TileIndex tile = t->xy;
 
 	if (CircularTileSearch(&tile, 9, SearchTileForStatue, &t->index)) {
-		SetBit(t->statues, _current_player); // Once found and built, "inform" the Town
+		SetBit(t->statues, _current_company); // Once found and built, "inform" the Town
 	}
 }
 
@@ -2237,35 +2237,35 @@
 	if (!_settings_game.economy.exclusive_rights) return;
 
 	t->exclusive_counter = 12;
-	t->exclusivity = _current_player;
-
-	ModifyStationRatingAround(t->xy, _current_player, 130, 17);
+	t->exclusivity = _current_company;
+
+	ModifyStationRatingAround(t->xy, _current_company, 130, 17);
 }
 
 static void TownActionBribe(Town *t)
 {
 	if (Chance16(1, 14)) {
 		/* set as unwanted for 6 months */
-		t->unwanted[_current_player] = 6;
+		t->unwanted[_current_company] = 6;
 
 		/* set all close by station ratings to 0 */
 		Station *st;
 		FOR_ALL_STATIONS(st) {
-			if (st->town == t && st->owner == _current_player) {
+			if (st->town == t && st->owner == _current_company) {
 				for (CargoID i = 0; i < NUM_CARGO; i++) st->goods[i].rating = 0;
 			}
 		}
 
 		/* only show errormessage to the executing player. All errors are handled command.c
 		 * but this is special, because it can only 'fail' on a DC_EXEC */
-		if (IsLocalPlayer()) ShowErrorMessage(STR_BRIBE_FAILED_2, STR_BRIBE_FAILED, 0, 0);
+		if (IsLocalCompany()) ShowErrorMessage(STR_BRIBE_FAILED_2, STR_BRIBE_FAILED, 0, 0);
 
 		/* decrease by a lot!
 		 * ChangeTownRating is only for stuff in demolishing. Bribe failure should
 		 * be independent of any cheat settings
 		 */
-		if (t->ratings[_current_player] > RATING_BRIBE_DOWN_TO) {
-			t->ratings[_current_player] = RATING_BRIBE_DOWN_TO;
+		if (t->ratings[_current_company] > RATING_BRIBE_DOWN_TO) {
+			t->ratings[_current_company] = RATING_BRIBE_DOWN_TO;
 			InvalidateWindow(WC_TOWN_AUTHORITY, t->index);
 		}
 	} else {
@@ -2285,7 +2285,7 @@
 	TownActionBribe
 };
 
-extern uint GetMaskOfTownActions(int *nump, PlayerID pid, const Town *t);
+extern uint GetMaskOfTownActions(int *nump, CompanyID cid, const Town *t);
 
 /** Do a town action.
  * This performs an action such as advertising, building a statue, funding buildings,
@@ -2301,7 +2301,7 @@
 
 	Town *t = GetTown(p1);
 
-	if (!HasBit(GetMaskOfTownActions(NULL, _current_player, t), p2)) return CMD_ERROR;
+	if (!HasBit(GetMaskOfTownActions(NULL, _current_company, t), p2)) return CMD_ERROR;
 
 	CommandCost cost(EXPENSES_OTHER, (_price.build_industry >> 8) * _town_action_costs[p2]);
 
@@ -2315,11 +2315,11 @@
 
 static void UpdateTownGrowRate(Town *t)
 {
-	/* Increase player ratings if they're low */
-	const Player *p;
-	FOR_ALL_PLAYERS(p) {
-		if (t->ratings[p->index] < RATING_GROWTH_MAXIMUM) {
-			t->ratings[p->index] = min((int)RATING_GROWTH_MAXIMUM, t->ratings[p->index] + RATING_GROWTH_UP_STEP);
+	/* Increase company ratings if they're low */
+	const Company *c;
+	FOR_ALL_COMPANIES(c) {
+		if (t->ratings[c->index] < RATING_GROWTH_MAXIMUM) {
+			t->ratings[c->index] = min((int)RATING_GROWTH_MAXIMUM, t->ratings[c->index] + RATING_GROWTH_UP_STEP);
 		}
 	}
 
@@ -2330,12 +2330,12 @@
 		if (DistanceSquare(st->xy, t->xy) <= t->squared_town_zone_radius[0]) {
 			if (st->time_since_load <= 20 || st->time_since_unload <= 20) {
 				n++;
-				if (IsValidPlayerID(st->owner)) {
+				if (IsValidCompanyID(st->owner)) {
 					int new_rating = t->ratings[st->owner] + RATING_STATION_UP_STEP;
 					t->ratings[st->owner] = min(new_rating, INT16_MAX); // do not let it overflow
 				}
 			} else {
-				if (IsValidPlayerID(st->owner)) {
+				if (IsValidCompanyID(st->owner)) {
 					int new_rating = t->ratings[st->owner] + RATING_STATION_DOWN_STEP;
 					t->ratings[st->owner] = max(new_rating, INT16_MIN);
 				}
@@ -2344,7 +2344,7 @@
 	}
 
 	/* clamp all ratings to valid values */
-	for (uint i = 0; i < MAX_PLAYERS; i++) {
+	for (uint i = 0; i < MAX_COMPANIES; i++) {
 		t->ratings[i] = Clamp(t->ratings[i], RATING_MINIMUM, RATING_MAXIMUM);
 	}
 
@@ -2412,21 +2412,21 @@
 
 static void UpdateTownUnwanted(Town *t)
 {
-	const Player *p;
-
-	FOR_ALL_PLAYERS(p) {
-		if (t->unwanted[p->index] > 0) t->unwanted[p->index]--;
+	const Company *c;
+
+	FOR_ALL_COMPANIES(c) {
+		if (t->unwanted[c->index] > 0) t->unwanted[c->index]--;
 	}
 }
 
 bool CheckIfAuthorityAllows(TileIndex tile)
 {
-	if (!IsValidPlayerID(_current_player)) return true;
+	if (!IsValidCompanyID(_current_company)) return true;
 
 	Town *t = ClosestTownFromTile(tile, _settings_game.economy.dist_local_authority);
 	if (t == NULL) return true;
 
-	if (t->ratings[_current_player] > RATING_VERYPOOR) return true;
+	if (t->ratings[_current_company] > RATING_VERYPOOR) return true;
 
 	_error_message = STR_2009_LOCAL_AUTHORITY_REFUSES;
 	SetDParam(0, t->index);
@@ -2491,19 +2491,19 @@
 			return (*it).second;
 		}
 	}
-	return t->ratings[_current_player];
+	return t->ratings[_current_company];
 }
 
 void ChangeTownRating(Town *t, int add, int max)
 {
 	/* if magic_bulldozer cheat is active, town doesn't penaltize for removing stuff */
 	if (t == NULL ||
-			!IsValidPlayerID(_current_player) ||
+			!IsValidCompanyID(_current_company) ||
 			(_cheats.magic_bulldozer.value && add < 0)) {
 		return;
 	}
 
-	SetBit(t->have_ratings, _current_player);
+	SetBit(t->have_ratings, _current_company);
 
 	int rating = GetRating(t);
 	if (add < 0) {
@@ -2520,7 +2520,7 @@
 	if (_town_rating_test) {
 		_town_test_ratings[t] = rating;
 	} else {
-		t->ratings[_current_player] = rating;
+		t->ratings[_current_company] = rating;
 		InvalidateWindow(WC_TOWN_AUTHORITY, t->index);
 	}
 }
@@ -2536,7 +2536,7 @@
 bool CheckforTownRating(uint32 flags, Town *t, byte type)
 {
 	/* if magic_bulldozer cheat is active, town doesn't restrict your destructive actions */
-	if (t == NULL || !IsValidPlayerID(_current_player) || _cheats.magic_bulldozer.value)
+	if (t == NULL || !IsValidCompanyID(_current_company) || _cheats.magic_bulldozer.value)
 		return true;
 
 	/* check if you're allowed to remove the street/bridge/tunnel/industry
@@ -2562,7 +2562,7 @@
 		if (t->road_build_months != 0) t->road_build_months--;
 
 		if (t->exclusive_counter != 0)
-			if (--t->exclusive_counter == 0) t->exclusivity = INVALID_PLAYER;
+			if (--t->exclusive_counter == 0) t->exclusivity = INVALID_COMPANY;
 
 		UpdateTownGrowRate(t);
 		UpdateTownAmounts(t);
--- a/src/town_gui.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/town_gui.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -69,20 +69,20 @@
 
 /** Get a list of available actions to do at a town.
  * @param nump if not NULL add put the number of available actions in it
- * @param pid the player that is querying the town
+ * @param cid the company that is querying the town
  * @param t the town that is queried
  * @return bitmasked value of enabled actions
  */
-uint GetMaskOfTownActions(int *nump, PlayerID pid, const Town *t)
+uint GetMaskOfTownActions(int *nump, CompanyID cid, const Town *t)
 {
 	int num = 0;
 	TownActions buttons = TACT_NONE;
 
 	/* Spectators and unwanted have no options */
-	if (pid != PLAYER_SPECTATOR && !(_settings_game.economy.bribe && t->unwanted[pid])) {
+	if (cid != COMPANY_SPECTATOR && !(_settings_game.economy.bribe && t->unwanted[cid])) {
 
 		/* Things worth more than this are not shown */
-		Money avail = GetPlayer(pid)->player_money + _price.station_value * 200;
+		Money avail = GetCompany(cid)->money + _price.station_value * 200;
 		Money ref = _price.build_industry >> 8;
 
 		/* Check the action bits for validity and
@@ -90,16 +90,16 @@
 		for (uint i = 0; i != lengthof(_town_action_costs); i++) {
 			const TownActions cur = (TownActions)(1 << i);
 
-			/* Is the player not able to bribe ? */
-			if (cur == TACT_BRIBE && (!_settings_game.economy.bribe || t->ratings[pid] >= RATING_BRIBE_MAXIMUM))
+			/* Is the company not able to bribe ? */
+			if (cur == TACT_BRIBE && (!_settings_game.economy.bribe || t->ratings[cid] >= RATING_BRIBE_MAXIMUM))
 				continue;
 
-			/* Is the player not able to buy exclusive rights ? */
+			/* Is the company not able to buy exclusive rights ? */
 			if (cur == TACT_BUY_RIGHTS && !_settings_game.economy.exclusive_rights)
 				continue;
 
-			/* Is the player not able to build a statue ? */
-			if (cur == TACT_BUILD_STATUE && HasBit(t->statues, pid))
+			/* Is the company not able to build a statue ? */
+			if (cur == TACT_BUILD_STATUE && HasBit(t->statues, cid))
 				continue;
 
 			if (avail >= _town_action_costs[i] * ref) {
@@ -162,7 +162,7 @@
 	virtual void OnPaint()
 	{
 		int numact;
-		uint buttons = GetMaskOfTownActions(&numact, _local_player, this->town);
+		uint buttons = GetMaskOfTownActions(&numact, _local_company, this->town);
 
 		SetVScrollCount(this, numact + 1);
 
@@ -177,18 +177,18 @@
 
 		DrawString(2, 15, STR_2023_TRANSPORT_COMPANY_RATINGS, TC_FROMSTRING);
 
-		/* Draw list of players */
+		/* Draw list of companies */
 		int y = 25;
 
-		const Player *p;
-		FOR_ALL_PLAYERS(p) {
-			if ((HasBit(this->town->have_ratings, p->index) || this->town->exclusivity == p->index)) {
-				DrawPlayerIcon(p->index, 2, y);
+		const Company *c;
+		FOR_ALL_COMPANIES(c) {
+			if ((HasBit(this->town->have_ratings, c->index) || this->town->exclusivity == c->index)) {
+				DrawCompanyIcon(c->index, 2, y);
 
-				SetDParam(0, p->index);
-				SetDParam(1, p->index);
+				SetDParam(0, c->index);
+				SetDParam(1, c->index);
 
-				int r = this->town->ratings[p->index];
+				int r = this->town->ratings[c->index];
 				StringID str;
 				(str = STR_3035_APPALLING, r <= RATING_APPALLING) || // Apalling
 				(str++,                    r <= RATING_VERYPOOR)  || // Very Poor
@@ -200,7 +200,7 @@
 				(str++,                    true);                    // Outstanding
 
 				SetDParam(2, str);
-				if (this->town->exclusivity == p->index) { // red icon for player with exclusive rights
+				if (this->town->exclusivity == c->index) { // red icon for company with exclusive rights
 					DrawSprite(SPR_BLOT, PALETTE_TO_RED, 18, y);
 				}
 
@@ -243,7 +243,7 @@
 
 				if (!IsInsideMM(y, 0, 5)) return;
 
-				y = GetNthSetBit(GetMaskOfTownActions(NULL, _local_player, this->town), y + this->vscroll.pos - 1);
+				y = GetNthSetBit(GetMaskOfTownActions(NULL, _local_company, this->town), y + this->vscroll.pos - 1);
 				if (y >= 0) {
 					this->sel_index = y;
 					this->SetDirty();
@@ -780,7 +780,7 @@
 
 void ShowBuildTownWindow()
 {
-	if (_game_mode != GM_EDITOR && !IsValidPlayerID(_current_player)) return;
+	if (_game_mode != GM_EDITOR && !IsValidCompanyID(_current_company)) return;
 	AllocateWindowDescFront<ScenarioEditorTownGenerationWindow>(&_scen_edit_town_gen_desc, 0);
 }
 
--- a/src/train_cmd.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/train_cmd.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -655,7 +655,7 @@
 			v->x_pos = x;
 			v->y_pos = y;
 			v->z_pos = GetSlopeZ(x, y);
-			v->owner = _current_player;
+			v->owner = _current_company;
 			v->u.rail.track = TRACK_BIT_DEPOT;
 			v->vehstatus = VS_HIDDEN | VS_DEFPAL;
 
@@ -692,10 +692,10 @@
 			UpdateTrainGroupID(v->First());
 
 			InvalidateWindow(WC_VEHICLE_DEPOT, v->tile);
-			if (IsLocalPlayer()) {
+			if (IsLocalCompany()) {
 				InvalidateAutoreplaceWindow(v->engine_type, v->group_id); // updates the replace Train window
 			}
-			GetPlayer(_current_player)->num_engines[engine]++;
+			GetCompany(_current_company)->num_engines[engine]++;
 		}
 	}
 
@@ -759,14 +759,14 @@
  */
 CommandCost CmdBuildRailVehicle(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
 {
-	/* Check if the engine-type is valid (for the player) */
-	if (!IsEngineBuildable(p1, VEH_TRAIN, _current_player)) return_cmd_error(STR_RAIL_VEHICLE_NOT_AVAILABLE);
+	/* Check if the engine-type is valid (for the company) */
+	if (!IsEngineBuildable(p1, VEH_TRAIN, _current_company)) return_cmd_error(STR_RAIL_VEHICLE_NOT_AVAILABLE);
 
 	/* Check if the train is actually being built in a depot belonging
-	 * to the player. Doesn't matter if only the cost is queried */
+	 * to the company. Doesn't matter if only the cost is queried */
 	if (!(flags & DC_QUERY_COST)) {
 		if (!IsRailDepotTile(tile)) return CMD_ERROR;
-		if (!IsTileOwner(tile, _current_player)) return CMD_ERROR;
+		if (!IsTileOwner(tile, _current_company)) return CMD_ERROR;
 	}
 
 	const RailVehicleInfo *rvi = RailVehInfo(p1);
@@ -807,7 +807,7 @@
 			v->unitnumber = unit_num;
 			v->direction = DiagDirToDir(dir);
 			v->tile = tile;
-			v->owner = _current_player;
+			v->owner = _current_company;
 			v->x_pos = x;
 			v->y_pos = y;
 			v->z_pos = GetSlopeZ(x, y);
@@ -874,11 +874,11 @@
 			InvalidateWindowData(WC_VEHICLE_DEPOT, v->tile);
 			InvalidateWindowClassesData(WC_TRAINS_LIST, 0);
 			InvalidateWindow(WC_COMPANY, v->owner);
-			if (IsLocalPlayer()) {
+			if (IsLocalCompany()) {
 				InvalidateAutoreplaceWindow(v->engine_type, v->group_id); // updates the replace Train window
 			}
 
-			GetPlayer(_current_player)->num_engines[p1]++;
+			GetCompany(_current_company)->num_engines[p1]++;
 		}
 	}
 
@@ -1450,7 +1450,7 @@
 							new_f->CopyVehicleConfigAndStatistics(first);
 
 							/* If we deleted a window then open a new one for the 'new' train */
-							if (IsLocalPlayer() && w != NULL) ShowVehicleViewWindow(new_f);
+							if (IsLocalCompany() && w != NULL) ShowVehicleViewWindow(new_f);
 						}
 					} else {
 						/* We are selling a free wagon, and construct a new train at the same time.
@@ -2110,7 +2110,7 @@
 struct TrainFindDepotData {
 	uint best_length;
 	TileIndex tile;
-	PlayerID owner;
+	Owner owner;
 	/**
 	 * true if reversing is necessary for the train to get to this depot
 	 * This value is unused when new depot finding and NPF are both disabled
@@ -2227,7 +2227,7 @@
 	if (p2 & DEPOT_MASS_SEND) {
 		/* Mass goto depot requested */
 		if (!ValidVLWFlags(p2 & VLW_MASK)) return CMD_ERROR;
-		return SendAllVehiclesToDepot(VEH_TRAIN, flags, p2 & DEPOT_SERVICE, _current_player, (p2 & VLW_MASK), p1);
+		return SendAllVehiclesToDepot(VEH_TRAIN, flags, p2 & DEPOT_SERVICE, _current_company, (p2 & VLW_MASK), p1);
 	}
 
 	if (!IsValidVehicleID(p1)) return CMD_ERROR;
@@ -2916,7 +2916,7 @@
 				/* it is first time the problem occurred, set the "path not found" flag */
 				SetBit(v->u.rail.flags, VRF_NO_PATH_TO_DESTINATION);
 				/* and notify user about the event */
-				if (_settings_client.gui.lost_train_warn && v->owner == _local_player) {
+				if (_settings_client.gui.lost_train_warn && v->owner == _local_company) {
 					SetDParam(0, v->unitnumber);
 					AddNewsItem(
 						STR_TRAIN_IS_LOST,
@@ -3272,7 +3272,7 @@
 		SetDParam(0, st->index);
 		AddNewsItem(
 			STR_8801_CITIZENS_CELEBRATE_FIRST,
-			v->owner == _local_player ? NS_ARRIVAL_PLAYER : NS_ARRIVAL_OTHER,
+			v->owner == _local_company ? NS_ARRIVAL_COMPANY : NS_ARRIVAL_OTHER,
 			v->index,
 			st->index
 		);
@@ -4254,7 +4254,7 @@
 
 			if (HasBit(v->u.rail.flags, VRF_TRAIN_STUCK) && v->load_unload_time_rem > 2 * _settings_game.pf.wait_for_pbs_path * DAY_TICKS) {
 				/* Show message to player. */
-				if (_settings_client.gui.lost_train_warn && v->owner == _local_player) {
+				if (_settings_client.gui.lost_train_warn && v->owner == _local_company) {
 					SetDParam(0, v->unitnumber);
 					AddNewsItem(
 						STR_TRAIN_IS_STUCK,
@@ -4401,7 +4401,7 @@
 			this->profit_this_year -= cost.GetCost();
 			this->running_ticks = 0;
 
-			SubtractMoneyFromPlayerFract(this->owner, cost);
+			SubtractMoneyFromCompanyFract(this->owner, cost);
 
 			InvalidateWindow(WC_VEHICLE_DETAILS, this->index);
 			InvalidateWindowClasses(WC_TRAINS_LIST);
@@ -4419,7 +4419,7 @@
 	FOR_ALL_VEHICLES(v) {
 		if (v->type == VEH_TRAIN && IsFrontEngine(v)) {
 			/* show warning if train is not generating enough income last 2 years (corresponds to a red icon in the vehicle list) */
-			if (_settings_client.gui.train_income_warn && v->owner == _local_player && v->age >= 730 && v->GetDisplayProfitThisYear() < 0) {
+			if (_settings_client.gui.train_income_warn && v->owner == _local_company && v->age >= 730 && v->GetDisplayProfitThisYear() < 0) {
 				SetDParam(1, v->GetDisplayProfitThisYear());
 				SetDParam(0, v->unitnumber);
 				AddNewsItem(
--- a/src/transparency.h	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/transparency.h	Tue Sep 30 20:39:50 2008 +0000
@@ -17,7 +17,7 @@
 	TO_TREES,      ///< trees
 	TO_HOUSES,     ///< town buildings
 	TO_INDUSTRIES, ///< industries
-	TO_BUILDINGS,  ///< player buildings - depots, stations, HQ, ...
+	TO_BUILDINGS,  ///< company buildings - depots, stations, HQ, ...
 	TO_BRIDGES,    ///< bridges
 	TO_STRUCTURES, ///< unmovable structures
 	TO_CATENARY,   ///< catenary
--- a/src/transparency_gui.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/transparency_gui.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -24,7 +24,7 @@
 		TTW_WIDGET_TREES,        ///< Make trees transparent
 		TTW_WIDGET_HOUSES,       ///< Make houses transparent
 		TTW_WIDGET_INDUSTRIES,   ///< Make Industries transparent
-		TTW_WIDGET_BUILDINGS,    ///< Make player buildings and structures transparent
+		TTW_WIDGET_BUILDINGS,    ///< Make company buildings and structures transparent
 		TTW_WIDGET_BRIDGES,      ///< Make bridges transparent
 		TTW_WIDGET_STRUCTURES,   ///< Make unmovable structures transparent
 		TTW_WIDGET_CATENARY,     ///< Make catenary transparent
@@ -99,7 +99,7 @@
 {WWT_STICKYBOX,   RESIZE_NONE,  COLOUR_DARK_GREEN, 207, 218,   0,  13, STR_NULL,                 STR_STICKY_BUTTON},
 
 /* transparency widgets:
- * transparent signs, trees, houses, industries, player's buildings, bridges, unmovable structures, catenary and loading indicators */
+ * transparent signs, trees, houses, industries, company's buildings, bridges, unmovable structures, catenary and loading indicators */
 {   WWT_IMGBTN,   RESIZE_NONE,  COLOUR_DARK_GREEN,   0,  21,  14,  35, SPR_IMG_SIGN,         STR_TRANSPARENT_SIGNS_DESC},
 {   WWT_IMGBTN,   RESIZE_NONE,  COLOUR_DARK_GREEN,  22,  43,  14,  35, SPR_IMG_PLANTTREES,   STR_TRANSPARENT_TREES_DESC},
 {   WWT_IMGBTN,   RESIZE_NONE,  COLOUR_DARK_GREEN,  44,  65,  14,  35, SPR_IMG_TOWN,         STR_TRANSPARENT_HOUSES_DESC},
--- a/src/tree_cmd.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/tree_cmd.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -390,7 +390,7 @@
 						}
 					}
 
-					if (_game_mode != GM_EDITOR && IsValidPlayerID(_current_player)) {
+					if (_game_mode != GM_EDITOR && IsValidCompanyID(_current_company)) {
 						Town *t = ClosestTownFromTile(tile, _settings_game.economy.dist_local_authority);
 						if (t != NULL) ChangeTownRating(t, RATING_TREE_UP_STEP, RATING_TREE_MAXIMUM);
 					}
@@ -533,7 +533,7 @@
 {
 	uint num;
 
-	if (IsValidPlayerID(_current_player)) {
+	if (IsValidCompanyID(_current_company)) {
 		Town *t = ClosestTownFromTile(tile, _settings_game.economy.dist_local_authority);
 		if (t != NULL) ChangeTownRating(t, RATING_TREE_DOWN_STEP, RATING_TREE_MINIMUM);
 	}
@@ -754,7 +754,7 @@
 	return 0;
 }
 
-static void ChangeTileOwner_Trees(TileIndex tile, PlayerID old_player, PlayerID new_player)
+static void ChangeTileOwner_Trees(TileIndex tile, Owner old_owner, Owner new_owner)
 {
 	/* not used */
 }
--- a/src/tree_gui.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/tree_gui.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -180,6 +180,6 @@
 
 void ShowBuildTreesToolbar()
 {
-	if (_game_mode != GM_EDITOR && !IsValidPlayerID(_current_player)) return;
+	if (_game_mode != GM_EDITOR && !IsValidCompanyID(_current_company)) return;
 	AllocateWindowDescFront<BuildTreesWindow>(&_build_trees_desc, 0);
 }
--- a/src/tunnelbridge_cmd.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/tunnelbridge_cmd.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -222,7 +222,7 @@
 	switch (transport_type) {
 		case TRANSPORT_ROAD:
 			roadtypes = (RoadTypes)GB(p2, 8, 3);
-			if (!AreValidRoadTypes(roadtypes) || !HasRoadTypesAvail(_current_player, roadtypes)) return CMD_ERROR;
+			if (!AreValidRoadTypes(roadtypes) || !HasRoadTypesAvail(_current_company, roadtypes)) return CMD_ERROR;
 			break;
 
 		case TRANSPORT_RAIL:
@@ -304,8 +304,8 @@
 			return_cmd_error(STR_1007_ALREADY_BUILT);
 		}
 
-		/* Do not allow replacing another player's bridges. */
-		if (!IsTileOwner(tile_start, _current_player) && !IsTileOwner(tile_start, OWNER_TOWN)) {
+		/* Do not allow replacing another company's bridges. */
+		if (!IsTileOwner(tile_start, _current_company) && !IsTileOwner(tile_start, OWNER_TOWN)) {
 			return_cmd_error(STR_1024_AREA_IS_OWNED_BY_ANOTHER);
 		}
 
@@ -318,7 +318,7 @@
 	} else {
 		/* Build a new bridge. */
 
-		bool allow_on_slopes = (!_is_old_ai_player && _settings_game.construction.build_on_slopes && transport_type != TRANSPORT_WATER);
+		bool allow_on_slopes = (!_is_old_ai_company && _settings_game.construction.build_on_slopes && transport_type != TRANSPORT_WATER);
 
 		/* Try and clear the start landscape */
 		ret = DoCommand(tile_start, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
@@ -364,7 +364,7 @@
 	/* do the drill? */
 	if (flags & DC_EXEC) {
 		DiagDirection dir = AxisToDiagDir(direction);
-		Owner owner = (replace_bridge && IsTileOwner(tile_start, OWNER_TOWN)) ? OWNER_TOWN : _current_player;
+		Owner owner = (replace_bridge && IsTileOwner(tile_start, OWNER_TOWN)) ? OWNER_TOWN : _current_company;
 
 		switch (transport_type) {
 			case TRANSPORT_RAIL:
@@ -443,7 +443,7 @@
 
 	if (flags & DC_EXEC && transport_type == TRANSPORT_RAIL) {
 		Track track = AxisToTrack(direction);
-		AddSideToSignalBuffer(tile_start, INVALID_DIAGDIR, _current_player);
+		AddSideToSignalBuffer(tile_start, INVALID_DIAGDIR, _current_company);
 		YapfNotifyTrackLayoutChange(tile_start, track);
 	}
 
@@ -451,10 +451,10 @@
 	 * It's unnecessary to execute this command every time for every bridge. So it is done only
 	 * and cost is computed in "bridge_gui.c". For AI, Towns this has to be of course calculated
 	 */
-	if (!(flags & DC_QUERY_COST) || (IsValidPlayerID(_current_player) && GetPlayer(_current_player)->is_ai)) {
+	if (!(flags & DC_QUERY_COST) || (IsValidCompanyID(_current_company) && GetCompany(_current_company)->is_ai)) {
 		bridge_len += 2; // begin and end tiles/ramps
 
-		if (IsValidPlayerID(_current_player) && !_is_old_ai_player)
+		if (IsValidCompanyID(_current_company) && !_is_old_ai_company)
 			bridge_len = CalcBridgeLenCostFactor(bridge_len);
 
 		cost.AddCost((int64)bridge_len * _price.build_bridge * GetBridgeSpec(bridge_type)->price >> 8);
@@ -491,7 +491,7 @@
 		if (!ValParamRailtype((RailType)p1)) return CMD_ERROR;
 	} else {
 		const RoadTypes rts = (RoadTypes)GB(p1, 0, 3);
-		if (!AreValidRoadTypes(rts) || !HasRoadTypesAvail(_current_player, rts)) return CMD_ERROR;
+		if (!AreValidRoadTypes(rts) || !HasRoadTypesAvail(_current_company, rts)) return CMD_ERROR;
 	}
 
 	start_tileh = GetTileSlope(start_tile, &start_z);
@@ -571,13 +571,13 @@
 
 	if (flags & DC_EXEC) {
 		if (transport_type == TRANSPORT_RAIL) {
-			MakeRailTunnel(start_tile, _current_player, direction,                 (RailType)GB(p1, 0, 4));
-			MakeRailTunnel(end_tile,   _current_player, ReverseDiagDir(direction), (RailType)GB(p1, 0, 4));
-			AddSideToSignalBuffer(start_tile, INVALID_DIAGDIR, _current_player);
+			MakeRailTunnel(start_tile, _current_company, direction,                 (RailType)GB(p1, 0, 4));
+			MakeRailTunnel(end_tile,   _current_company, ReverseDiagDir(direction), (RailType)GB(p1, 0, 4));
+			AddSideToSignalBuffer(start_tile, INVALID_DIAGDIR, _current_company);
 			YapfNotifyTrackLayoutChange(start_tile, DiagDirToDiagTrack(direction));
 		} else {
-			MakeRoadTunnel(start_tile, _current_player, direction,                 (RoadTypes)GB(p1, 0, 3));
-			MakeRoadTunnel(end_tile,   _current_player, ReverseDiagDir(direction), (RoadTypes)GB(p1, 0, 3));
+			MakeRoadTunnel(start_tile, _current_company, direction,                 (RoadTypes)GB(p1, 0, 3));
+			MakeRoadTunnel(end_tile,   _current_company, ReverseDiagDir(direction), (RoadTypes)GB(p1, 0, 3));
 		}
 	}
 
@@ -588,7 +588,7 @@
 static inline bool CheckAllowRemoveTunnelBridge(TileIndex tile)
 {
 	/* Floods can remove anything as well as the scenario editor */
-	if (_current_player == OWNER_WATER || _game_mode == GM_EDITOR) return true;
+	if (_current_company == OWNER_WATER || _game_mode == GM_EDITOR) return true;
 	/* Obviously if the bridge/tunnel belongs to us, or no-one, we can remove it */
 	if (CheckTileOwnership(tile) || IsTileOwner(tile, OWNER_NONE)) return true;
 	/* Otherwise we can only remove town-owned stuff with extra patch-settings, or cheat */
@@ -1295,12 +1295,12 @@
 	return CombineTrackStatus(TrackBitsToTrackdirBits(DiagDirToDiagTrackBits(dir)), TRACKDIR_BIT_NONE);
 }
 
-static void ChangeTileOwner_TunnelBridge(TileIndex tile, PlayerID old_player, PlayerID new_player)
+static void ChangeTileOwner_TunnelBridge(TileIndex tile, Owner old_owner, Owner new_owner)
 {
-	if (!IsTileOwner(tile, old_player)) return;
+	if (!IsTileOwner(tile, old_owner)) return;
 
-	if (new_player != PLAYER_SPECTATOR) {
-		SetTileOwner(tile, new_player);
+	if (new_owner != INVALID_OWNER) {
+		SetTileOwner(tile, new_owner);
 	} else {
 		if (CmdFailed(DoCommand(tile, 0, 0, DC_EXEC | DC_BANKRUPT, CMD_LANDSCAPE_CLEAR))) {
 			/* When clearing the bridge/tunnel failed there are still vehicles on/in
--- a/src/unmovable.h	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/unmovable.h	Tue Sep 30 20:39:50 2008 +0000
@@ -5,6 +5,6 @@
 #ifndef UNMOVABLE_H
 #define UNMOVABLE_H
 
-void UpdateCompanyHQ(Player *p, uint score);
+void UpdateCompanyHQ(Company *c, uint score);
 
 #endif /* UNMOVABLE_H */
--- a/src/unmovable_cmd.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/unmovable_cmd.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -36,33 +36,33 @@
 /** Destroy a HQ.
  * During normal gameplay you can only implicitely destroy a HQ when you are
  * rebuilding it. Otherwise, only water can destroy it.
- * @param pid Player requesting the destruction of his HQ
+ * @param cid Company requesting the destruction of his HQ
  * @param flags docommand flags of calling function
  * @return cost of the operation
  */
-static CommandCost DestroyCompanyHQ(PlayerID pid, uint32 flags)
+static CommandCost DestroyCompanyHQ(CompanyID cid, uint32 flags)
 {
-	Player *p = GetPlayer(pid);
+	Company *c = GetCompany(cid);
 
 	if (flags & DC_EXEC) {
-		TileIndex t = p->location_of_HQ;
+		TileIndex t = c->location_of_HQ;
 
 		DoClearSquare(t + TileDiffXY(0, 0));
 		DoClearSquare(t + TileDiffXY(0, 1));
 		DoClearSquare(t + TileDiffXY(1, 0));
 		DoClearSquare(t + TileDiffXY(1, 1));
-		p->location_of_HQ = 0; // reset HQ position
-		InvalidateWindow(WC_COMPANY, pid);
+		c->location_of_HQ = 0; // reset HQ position
+		InvalidateWindow(WC_COMPANY, cid);
 	}
 
 	/* cost of relocating company is 1% of company value */
-	return CommandCost(EXPENSES_PROPERTY, CalculateCompanyValue(p) / 100);
+	return CommandCost(EXPENSES_PROPERTY, CalculateCompanyValue(c) / 100);
 }
 
-void UpdateCompanyHQ(Player *p, uint score)
+void UpdateCompanyHQ(Company *c, uint score)
 {
 	byte val;
-	TileIndex tile = p->location_of_HQ;
+	TileIndex tile = c->location_of_HQ;
 
 	if (tile == 0) return;
 
@@ -90,25 +90,25 @@
  */
 CommandCost CmdBuildCompanyHQ(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
 {
-	Player *p = GetPlayer(_current_player);
+	Company *c = GetCompany(_current_company);
 	CommandCost cost(EXPENSES_PROPERTY);
 
 	cost = CheckFlatLandBelow(tile, 2, 2, flags, 0, NULL);
 	if (CmdFailed(cost)) return cost;
 
-	if (p->location_of_HQ != 0) { // Moving HQ
-		cost.AddCost(DestroyCompanyHQ(_current_player, flags));
+	if (c->location_of_HQ != 0) { // Moving HQ
+		cost.AddCost(DestroyCompanyHQ(_current_company, flags));
 	}
 
 	if (flags & DC_EXEC) {
-		int score = UpdateCompanyRatingAndValue(p, false);
-
-		p->location_of_HQ = tile;
+		int score = UpdateCompanyRatingAndValue(c, false);
 
-		MakeCompanyHQ(tile, _current_player);
+		c->location_of_HQ = tile;
 
-		UpdateCompanyHQ(p, score);
-		InvalidateWindow(WC_COMPANY, p->index);
+		MakeCompanyHQ(tile, _current_company);
+
+		UpdateCompanyHQ(c, score);
+		InvalidateWindow(WC_COMPANY, c->index);
 	}
 
 	return cost;
@@ -116,7 +116,7 @@
 
 /** Purchase a land area. Actually you only purchase one tile, so
  * the name is a bit confusing ;p
- * @param tile the tile the player is purchasing
+ * @param tile the tile the company is purchasing
  * @param flags for this command type
  * @param p1 unused
  * @param p2 unused
@@ -126,7 +126,7 @@
 {
 	CommandCost cost(EXPENSES_CONSTRUCTION);
 
-	if (IsOwnedLandTile(tile) && IsTileOwner(tile, _current_player)) {
+	if (IsOwnedLandTile(tile) && IsTileOwner(tile, _current_company)) {
 		return_cmd_error(STR_5807_YOU_ALREADY_OWN_IT);
 	}
 
@@ -134,7 +134,7 @@
 	if (CmdFailed(cost)) return CMD_ERROR;
 
 	if (flags & DC_EXEC) {
-		MakeOwnedLand(tile, _current_player);
+		MakeOwnedLand(tile, _current_company);
 		MarkTileDirtyByTile(tile);
 	}
 
@@ -143,7 +143,7 @@
 
 /** Sell a land area. Actually you only sell one tile, so
  * the name is a bit confusing ;p
- * @param tile the tile the player is selling
+ * @param tile the tile the company is selling
  * @param flags for this command type
  * @param p1 unused
  * @param p2 unused
@@ -152,7 +152,7 @@
 CommandCost CmdSellLandArea(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
 {
 	if (!IsOwnedLandTile(tile)) return CMD_ERROR;
-	if (!CheckTileOwnership(tile) && _current_player != OWNER_WATER) return CMD_ERROR;
+	if (!CheckTileOwnership(tile) && _current_company != OWNER_WATER) return CMD_ERROR;
 
 	if (!EnsureNoVehicleOnGround(tile)) return CMD_ERROR;
 
@@ -192,14 +192,14 @@
 
 			if (IsInvisibilitySet(TO_STRUCTURES)) break;
 
-			AddSortableSpriteToDraw(SPR_STATUE_COMPANY, PLAYER_SPRITE_COLOR(GetTileOwner(ti->tile)), ti->x, ti->y, 16, 16, 25, ti->z, IsTransparencySet(TO_STRUCTURES));
+			AddSortableSpriteToDraw(SPR_STATUE_COMPANY, COMPANY_SPRITE_COLOR(GetTileOwner(ti->tile)), ti->x, ti->y, 16, 16, 25, ti->z, IsTransparencySet(TO_STRUCTURES));
 			break;
 
 		case UNMOVABLE_OWNED_LAND:
 			DrawClearLandTile(ti, 0);
 
 			AddSortableSpriteToDraw(
-				SPR_BOUGHT_LAND, PLAYER_SPRITE_COLOR(GetTileOwner(ti->tile)),
+				SPR_BOUGHT_LAND, COMPANY_SPRITE_COLOR(GetTileOwner(ti->tile)),
 				ti->x + TILE_SIZE / 2, ti->y + TILE_SIZE / 2, 1, 1, BB_HEIGHT_UNDER_BRIDGE, GetSlopeZ(ti->x + TILE_SIZE / 2, ti->y + TILE_SIZE / 2)
 			);
 			DrawBridgeMiddle(ti);
@@ -209,7 +209,7 @@
 			assert(IsCompanyHQ(ti->tile));
 			if (ti->tileh != SLOPE_FLAT) DrawFoundation(ti, FOUNDATION_LEVELED);
 
-			SpriteID palette = PLAYER_SPRITE_COLOR(GetTileOwner(ti->tile));
+			SpriteID palette = COMPANY_SPRITE_COLOR(GetTileOwner(ti->tile));
 
 			const DrawTileSprites *t = &_unmovable_display_datas[GetCompanyHQSection(ti->tile)];
 			DrawGroundSprite(t->ground.sprite, palette);
@@ -251,7 +251,7 @@
 static CommandCost ClearTile_Unmovable(TileIndex tile, byte flags)
 {
 	if (IsCompanyHQ(tile)) {
-		if (_current_player == OWNER_WATER) {
+		if (_current_company == OWNER_WATER) {
 			return DestroyCompanyHQ(GetTileOwner(tile), DC_EXEC);
 		} else {
 			return_cmd_error(STR_5804_COMPANY_HEADQUARTERS_IN);
@@ -263,7 +263,7 @@
 	}
 
 	/* checks if you're allowed to remove unmovable things */
-	if (_game_mode != GM_EDITOR && _current_player != OWNER_WATER && ((flags & DC_AUTO || !_cheats.magic_bulldozer.value)) )
+	if (_game_mode != GM_EDITOR && _current_company != OWNER_WATER && ((flags & DC_AUTO || !_cheats.magic_bulldozer.value)) )
 		return_cmd_error(STR_5800_OBJECT_IN_THE_WAY);
 
 	if (IsStatue(tile)) {
@@ -357,7 +357,7 @@
 
 static void ClickTile_Unmovable(TileIndex tile)
 {
-	if (IsCompanyHQ(tile)) ShowPlayerCompany(GetTileOwner(tile));
+	if (IsCompanyHQ(tile)) ShowCompany(GetTileOwner(tile));
 }
 
 
@@ -433,20 +433,20 @@
 	}
 }
 
-static void ChangeTileOwner_Unmovable(TileIndex tile, PlayerID old_player, PlayerID new_player)
+static void ChangeTileOwner_Unmovable(TileIndex tile, Owner old_owner, Owner new_owner)
 {
-	if (!IsTileOwner(tile, old_player)) return;
+	if (!IsTileOwner(tile, old_owner)) return;
 
-	if (IsOwnedLand(tile) && new_player != PLAYER_SPECTATOR) {
-		SetTileOwner(tile, new_player);
+	if (IsOwnedLand(tile) && new_owner != INVALID_OWNER) {
+		SetTileOwner(tile, new_owner);
 	} else if (IsStatueTile(tile)) {
 		TownID town = GetStatueTownID(tile);
 		Town *t = GetTown(town);
-		ClrBit(t->statues, old_player);
-		if (new_player != PLAYER_SPECTATOR && !HasBit(t->statues, new_player)) {
+		ClrBit(t->statues, old_owner);
+		if (new_owner != INVALID_OWNER && !HasBit(t->statues, new_owner)) {
 			/* Transfer ownership to the new company */
-			SetBit(t->statues, new_player);
-			SetTileOwner(tile, new_player);
+			SetBit(t->statues, new_owner);
+			SetTileOwner(tile, new_owner);
 		} else {
 			DoClearSquare(tile);
 		}
--- a/src/variables.h	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/variables.h	Tue Sep 30 20:39:50 2008 +0000
@@ -27,7 +27,7 @@
 /* Frequency iterator at the same place */
 VARDEF uint32 _cur_town_iter;
 
-VARDEF uint _cur_player_tick_index;
+VARDEF uint _cur_company_tick_index;
 VARDEF uint _next_competitor_start;
 
 /* Determines how often to run the tree loop */
@@ -44,7 +44,7 @@
 VARDEF uint32 _frame_counter;
 VARDEF uint32 _realtime_tick;
 
-VARDEF bool _is_old_ai_player; // current player is an oldAI player? (enables a lot of cheats..)
+VARDEF bool _is_old_ai_company; // current company is an oldAI company? (enables a lot of cheats..)
 
 VARDEF bool _do_autosave;
 VARDEF int _autosave_ctr;
--- a/src/vehicle.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/vehicle.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -101,16 +101,16 @@
  * @param *p The vehicle owner
  * @return true if the vehicle is old enough for replacement
  */
-bool Vehicle::NeedsAutorenewing(const Player *p) const
+bool Vehicle::NeedsAutorenewing(const Company *c) const
 {
-	/* We can always generate the Player pointer when we have the vehicle.
-	 * However this takes time and since the Player pointer is often present
+	/* We can always generate the Company pointer when we have the vehicle.
+	 * However this takes time and since the Company pointer is often present
 	 * when this function is called then it's faster to pass the pointer as an
 	 * argument rather than finding it again. */
-	assert(p == GetPlayer(this->owner));
-
-	if (!p->engine_renew) return false;
-	if (this->age - this->max_age < (p->engine_renew_months * 30)) return false;
+	assert(c == GetCompany(this->owner));
+
+	if (!c->engine_renew) return false;
+	if (this->age - this->max_age < (c->engine_renew_months * 30)) return false;
 	if (this->age == 0) return false; // rail cars don't age and lacks a max age
 
 	return true;
@@ -131,7 +131,7 @@
 	if (_settings_game.order.no_servicing_if_no_breakdowns && _settings_game.difficulty.vehicle_breakdowns == 0) {
 		/* Vehicles set for autoreplacing needs to go to a depot even if breakdowns are turned off.
 		 * Note: If servicing is enabled, we postpone replacement till next service. */
-		return EngineHasReplacementForPlayer(GetPlayer(this->owner), this->engine_type, this->group_id);
+		return EngineHasReplacementForCompany(GetCompany(this->owner), this->engine_type, this->group_id);
 	}
 
 	return _settings_game.vehicle.servint_ispercent ?
@@ -619,7 +619,7 @@
 	return count;
 }
 
-/** Check if a vehicle is counted in num_engines in each player struct
+/** Check if a vehicle is counted in num_engines in each company struct
  * @param *v Vehicle to test
  * @return true if the vehicle is counted in num_engines
  */
@@ -632,7 +632,7 @@
 			!IsRearDualheaded(v); // rear parts of multiheaded engines
 		case VEH_ROAD: return IsRoadVehFront(v);
 		case VEH_SHIP: return true;
-		default: return false; // Only count player buildable vehicles
+		default: return false; // Only count company buildable vehicles
 	}
 }
 
@@ -647,8 +647,8 @@
 	}
 
 	if (IsEngineCountable(this)) {
-		GetPlayer(this->owner)->num_engines[this->engine_type]--;
-		if (this->owner == _local_player) InvalidateAutoreplaceWindow(this->engine_type, this->group_id);
+		GetCompany(this->owner)->num_engines[this->engine_type]--;
+		if (this->owner == _local_company) InvalidateAutoreplaceWindow(this->engine_type, this->group_id);
 
 		if (IsValidGroupID(this->group_id)) GetGroup(this->group_id)->num_engines[this->engine_type]--;
 		if (this->IsPrimaryVehicle()) DecreaseGroupNumVehicle(this->group_id);
@@ -781,8 +781,8 @@
 	v = _first_veh_in_depot_list;
 	if (v != NULL) {
 		while (v != NULL) {
-			/* Autoreplace needs the current player set as the vehicle owner */
-			_current_player = v->owner;
+			/* Autoreplace needs the current company set as the vehicle owner */
+			_current_company = v->owner;
 
 			/* Buffer v->depot_list and clear it.
 			 * Autoreplace might clear this so it has to be buffered. */
@@ -802,13 +802,13 @@
 			int y = v->y_pos;
 			int z = v->z_pos;
 
-			const Player *p = GetPlayer(_current_player);
-			SubtractMoneyFromPlayer(CommandCost(EXPENSES_NEW_VEHICLES, (Money)p->engine_renew_money));
+			const Company *c = GetCompany(_current_company);
+			SubtractMoneyFromCompany(CommandCost(EXPENSES_NEW_VEHICLES, (Money)c->engine_renew_money));
 			CommandCost res = DoCommand(0, v->index, 0, DC_EXEC, CMD_AUTOREPLACE_VEHICLE);
 			if (res.Succeeded()) v = NULL; // no longer valid
-			SubtractMoneyFromPlayer(CommandCost(EXPENSES_NEW_VEHICLES, -(Money)p->engine_renew_money));
-
-			if (IsLocalPlayer()) {
+			SubtractMoneyFromCompany(CommandCost(EXPENSES_NEW_VEHICLES, -(Money)c->engine_renew_money));
+
+			if (IsLocalCompany()) {
 				if (res.Succeeded()) {
 					ShowCostOrIncomeAnimation(x, y, z, res.GetCost());
 				} else {
@@ -839,7 +839,7 @@
 
 			v = w;
 		}
-		_current_player = OWNER_NONE;
+		_current_company = OWNER_NONE;
 	}
 }
 
@@ -1069,10 +1069,10 @@
 
 static void ShowVehicleGettingOld(Vehicle *v, StringID msg)
 {
-	if (v->owner != _local_player) return;
+	if (v->owner != _local_company) return;
 
 	/* Do not show getting-old message if autorenew is active (and it can replace the vehicle) */
-	if (GetPlayer(v->owner)->engine_renew && GetEngine(v->engine_type)->player_avail != 0) return;
+	if (GetCompany(v->owner)->engine_renew && GetEngine(v->engine_type)->company_avail != 0) return;
 
 	SetDParam(0, _vehicle_type_names[v->type]);
 	SetDParam(1, v->unitnumber);
@@ -1189,7 +1189,7 @@
 		uint32 id = p1;
 		uint16 window_type = p2 & VLW_MASK;
 
-		GenerateVehicleSortList(&list, vehicle_type, _current_player, id, window_type);
+		GenerateVehicleSortList(&list, vehicle_type, _current_company, id, window_type);
 	} else {
 		/* Get the list of vehicles in the depot */
 		BuildDepotVehicleList(vehicle_type, tile, &list, NULL);
@@ -1271,7 +1271,7 @@
 	VehicleType vehicle_type = (VehicleType)GB(p1, 0, 8);
 	bool all_or_nothing = HasBit(p2, 0);
 
-	if (!IsDepotTile(tile) || !IsTileOwner(tile, _current_player)) return CMD_ERROR;
+	if (!IsDepotTile(tile) || !IsTileOwner(tile, _current_company)) return CMD_ERROR;
 
 	/* Get the list of vehicles in the depot */
 	BuildDepotVehicleList(vehicle_type, tile, &list, &list, true);
@@ -1463,8 +1463,8 @@
 	}
 
 	/* Since we can't estimate the cost of cloning a vehicle accurately we must
-	 * check whether the player has enough money manually. */
-	if (!CheckPlayerHasMoney(total_cost)) {
+	 * check whether the company has enough money manually. */
+	if (!CheckCompanyHasMoney(total_cost)) {
 		if (flags & DC_EXEC) {
 			/* The vehicle has already been bought, so now it must be sold again. */
 			DoCommand(w_front->tile, w_front->index, 1, flags, GetCmdSellVeh(w_front));
@@ -1480,11 +1480,11 @@
  * @param type type of vehicle
  * @param flags the flags used for DoCommand()
  * @param service should the vehicles only get service in the depots
- * @param owner PlayerID of owner of the vehicles to send
+ * @param owner owner of the vehicles to send
  * @param vlw_flag tells what kind of list requested the goto depot
  * @return 0 for success and CMD_ERROR if no vehicle is able to go to depot
  */
-CommandCost SendAllVehiclesToDepot(VehicleType type, uint32 flags, bool service, PlayerID owner, uint16 vlw_flag, uint32 id)
+CommandCost SendAllVehiclesToDepot(VehicleType type, uint32 flags, bool service, Owner owner, uint16 vlw_flag, uint32 id)
 {
 	VehicleList list;
 
@@ -1603,18 +1603,18 @@
 		v->current_order.MakeDummy();
 
 		if (t.IsRefit()) {
-			_current_player = v->owner;
+			_current_company = v->owner;
 			CommandCost cost = DoCommand(v->tile, v->index, t.GetRefitCargo() | t.GetRefitSubtype() << 8, DC_EXEC, GetCmdRefitVeh(v));
 
 			if (CmdFailed(cost)) {
 				v->leave_depot_instantly = false; // We ensure that the vehicle stays in the depot
-				if (v->owner == _local_player) {
+				if (v->owner == _local_company) {
 					/* Notify the user that we stopped the vehicle */
 					SetDParam(0, _vehicle_type_names[v->type]);
 					SetDParam(1, v->unitnumber);
 					AddNewsItem(STR_ORDER_REFIT_FAILED, NS_ADVICE, v->index, 0);
 				}
-			} else if (v->owner == _local_player && cost.GetCost() != 0) {
+			} else if (v->owner == _local_company && cost.GetCost() != 0) {
 				ShowCostOrIncomeAnimation(v->x_pos, v->y_pos, v->z_pos, cost.GetCost());
 			}
 		}
@@ -1626,7 +1626,7 @@
 		} else if (t.GetDepotActionType() & ODATFB_HALT) {
 			/* Force depot visit */
 			v->vehstatus |= VS_STOPPED;
-			if (v->owner == _local_player) {
+			if (v->owner == _local_company) {
 				StringID string;
 
 				switch (v->type) {
@@ -1912,7 +1912,7 @@
 
 	/* Fill the cache */
 	FOR_ALL_VEHICLES(u) {
-		if (u->type == type && u->owner == _current_player && u->unitnumber != 0 && u->unitnumber <= max)
+		if (u->type == type && u->owner == _current_company && u->unitnumber != 0 && u->unitnumber <= max)
 			cache[u->unitnumber] = true;
 	}
 
@@ -1936,9 +1936,9 @@
  */
 bool CanBuildVehicleInfrastructure(VehicleType type)
 {
-	assert(IsPlayerBuildableVehicleType(type));
-
-	if (!IsValidPlayerID(_current_player)) return false;
+	assert(IsCompanyBuildableVehicleType(type));
+
+	if (!IsValidCompanyID(_current_company)) return false;
 	if (_settings_client.gui.always_build_infrastructure) return true;
 
 	UnitID max;
@@ -1955,7 +1955,7 @@
 		/* Can we actually build the vehicle type? */
 		const Engine *e;
 		FOR_ALL_ENGINES_OF_TYPE(e, type) {
-			if (HasBit(e->player_avail, _local_player)) return true;
+			if (HasBit(e->company_avail, _local_company)) return true;
 		}
 		return false;
 	}
@@ -1963,22 +1963,22 @@
 	/* We should be able to build infrastructure when we have the actual vehicle type */
 	const Vehicle *v;
 	FOR_ALL_VEHICLES(v) {
-		if (v->owner == _local_player && v->type == type) return true;
+		if (v->owner == _local_company && v->type == type) return true;
 	}
 
 	return false;
 }
 
 
-const Livery *GetEngineLivery(EngineID engine_type, PlayerID player, EngineID parent_engine_type, const Vehicle *v)
+const Livery *GetEngineLivery(EngineID engine_type, CompanyID company, EngineID parent_engine_type, const Vehicle *v)
 {
-	const Player *p = GetPlayer(player);
+	const Company *c = GetCompany(company);
 	LiveryScheme scheme = LS_DEFAULT;
 	CargoID cargo_type = v == NULL ? (CargoID)CT_INVALID : v->cargo_type;
 
 	/* The default livery is always available for use, but its in_use flag determines
 	 * whether any _other_ liveries are in use. */
-	if (p->livery[LS_DEFAULT].in_use && (_settings_client.gui.liveries == 2 || (_settings_client.gui.liveries == 1 && player == _local_player))) {
+	if (c->livery[LS_DEFAULT].in_use && (_settings_client.gui.liveries == 2 || (_settings_client.gui.liveries == 1 && company == _local_company))) {
 		/* Determine the livery scheme to use */
 		switch (GetEngine(engine_type)->type) {
 			default: NOT_REACHED();
@@ -2051,14 +2051,14 @@
 		}
 
 		/* Switch back to the default scheme if the resolved scheme is not in use */
-		if (!p->livery[scheme].in_use) scheme = LS_DEFAULT;
+		if (!c->livery[scheme].in_use) scheme = LS_DEFAULT;
 	}
 
-	return &p->livery[scheme];
+	return &c->livery[scheme];
 }
 
 
-static SpriteID GetEngineColourMap(EngineID engine_type, PlayerID player, EngineID parent_engine_type, const Vehicle *v)
+static SpriteID GetEngineColourMap(EngineID engine_type, CompanyID company, EngineID parent_engine_type, const Vehicle *v)
 {
 	SpriteID map = (v != NULL) ? v->colormap : PAL_NONE;
 
@@ -2086,7 +2086,7 @@
 
 	if (map == PAL_NONE) map = twocc ? (SpriteID)SPR_2CCMAP_BASE : (SpriteID)PALETTE_RECOLOR_START;
 
-	const Livery *livery = GetEngineLivery(engine_type, player, parent_engine_type, v);
+	const Livery *livery = GetEngineLivery(engine_type, company, parent_engine_type, v);
 
 	map += livery->colour1;
 	if (twocc) map += livery->colour2 * 16;
@@ -2096,9 +2096,9 @@
 	return map;
 }
 
-SpriteID GetEnginePalette(EngineID engine_type, PlayerID player)
+SpriteID GetEnginePalette(EngineID engine_type, CompanyID company)
 {
-	return GetEngineColourMap(engine_type, player, INVALID_ENGINE, NULL);
+	return GetEngineColourMap(engine_type, company, INVALID_ENGINE, NULL);
 }
 
 SpriteID GetVehiclePalette(const Vehicle *v)
@@ -2440,7 +2440,7 @@
 
 		SlObject(v, GetVehicleDescription(vtype));
 
-		if (_cargo_count != 0 && IsPlayerBuildableVehicleType(v)) {
+		if (_cargo_count != 0 && IsCompanyBuildableVehicleType(v)) {
 			/* Don't construct the packet with station here, because that'll fail with old savegames */
 			CargoPacket *cp = new CargoPacket();
 			cp->source          = _cargo_source;
--- a/src/vehicle_base.h	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/vehicle_base.h	Tue Sep 30 20:39:50 2008 +0000
@@ -256,7 +256,7 @@
 	byte z_pos;
 	DirectionByte direction; // facing
 
-	PlayerByte owner;        // which player owns the vehicle?
+	OwnerByte owner;         // which company owns the vehicle?
 	byte spritenum;          // currently displayed sprite index
 	                         // 0xfd == custom sprite, 0xfe == custom second head sprite
 	                         // 0xff == reserved for another custom sprite
@@ -532,7 +532,7 @@
 		this->service_interval = src->service_interval;
 	}
 
-	bool NeedsAutorenewing(const Player *p) const;
+	bool NeedsAutorenewing(const Company *c) const;
 
 	/**
 	 * Check if the vehicle needs to go to a depot in near future (if a opportunity presents itself) for service or replacement.
--- a/src/vehicle_func.h	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/vehicle_func.h	Tue Sep 30 20:39:50 2008 +0000
@@ -68,7 +68,7 @@
 void TrainPowerChanged(Vehicle *v);
 Money GetTrainRunningCost(const Vehicle *v);
 
-CommandCost SendAllVehiclesToDepot(VehicleType type, uint32 flags, bool service, PlayerID owner, uint16 vlw_flag, uint32 id);
+CommandCost SendAllVehiclesToDepot(VehicleType type, uint32 flags, bool service, Owner owner, uint16 vlw_flag, uint32 id);
 void VehicleEnterDepot(Vehicle *v);
 
 bool CanBuildVehicleInfrastructure(VehicleType type);
@@ -86,7 +86,7 @@
 GetNewVehiclePosResult GetNewVehiclePos(const Vehicle *v);
 Direction GetDirectionTowards(const Vehicle *v, int x, int y);
 
-static inline bool IsPlayerBuildableVehicleType(VehicleType type)
+static inline bool IsCompanyBuildableVehicleType(VehicleType type)
 {
 	switch (type) {
 		case VEH_TRAIN:
@@ -99,20 +99,20 @@
 	}
 }
 
-static inline bool IsPlayerBuildableVehicleType(const BaseVehicle *v)
+static inline bool IsCompanyBuildableVehicleType(const BaseVehicle *v)
 {
-	return IsPlayerBuildableVehicleType(v->type);
+	return IsCompanyBuildableVehicleType(v->type);
 }
 
-const struct Livery *GetEngineLivery(EngineID engine_type, PlayerID player, EngineID parent_engine_type, const Vehicle *v);
+const struct Livery *GetEngineLivery(EngineID engine_type, CompanyID company, EngineID parent_engine_type, const Vehicle *v);
 
 /**
  * Get the colour map for an engine. This used for unbuilt engines in the user interface.
  * @param engine_type ID of engine
- * @param player ID of player
+ * @param company ID of company
  * @return A ready-to-use palette modifier
  */
-SpriteID GetEnginePalette(EngineID engine_type, PlayerID player);
+SpriteID GetEnginePalette(EngineID engine_type, CompanyID company);
 
 /**
  * Get the colour map for a vehicle.
--- a/src/vehicle_gui.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/vehicle_gui.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -90,11 +90,11 @@
 	INVALID_STRING_ID
 };
 
-void BaseVehicleListWindow::BuildVehicleList(PlayerID owner, uint16 index, uint16 window_type)
+void BaseVehicleListWindow::BuildVehicleList(Owner owner, uint16 index, uint16 window_type)
 {
 	if (!this->vehicles.NeedRebuild()) return;
 
-	DEBUG(misc, 3, "Building vehicle list for player %d at station %d", owner, index);
+	DEBUG(misc, 3, "Building vehicle list for company %d at station %d", owner, index);
 
 	GenerateVehicleSortList(&this->vehicles, this->vehicle_type, owner, index, window_type);
 
@@ -684,7 +684,7 @@
 	VLW_WIDGET_EMPTY_TOP_RIGHT,
 	VLW_WIDGET_LIST,
 	VLW_WIDGET_SCROLLBAR,
-	VLW_WIDGET_OTHER_PLAYER_FILLER,
+	VLW_WIDGET_OTHER_COMPANY_FILLER,
 	VLW_WIDGET_AVAILABLE_VEHICLES,
 	VLW_WIDGET_MANAGE_VEHICLES_DROPDOWN,
 	VLW_WIDGET_STOP_ALL,
@@ -702,7 +702,7 @@
 	{      WWT_PANEL,  RESIZE_RIGHT,  COLOUR_GREY,   248,   259,    14,    25, 0x0,                  STR_NULL},
 	{     WWT_MATRIX,     RESIZE_RB,  COLOUR_GREY,     0,   247,    26,   181, 0x0,                  STR_NULL},
 	{  WWT_SCROLLBAR,    RESIZE_LRB,  COLOUR_GREY,   248,   259,    26,   181, 0x0,                  STR_0190_SCROLL_BAR_SCROLLS_LIST},
-	/* Widget to be shown for other players hiding the following 6 widgets */
+	/* Widget to be shown for other companies hiding the following 6 widgets */
 	{      WWT_PANEL,    RESIZE_RTB,  COLOUR_GREY,     0,   247,   182,   193, 0x0,                  STR_NULL},
 
 	{ WWT_PUSHTXTBTN,     RESIZE_TB,  COLOUR_GREY,     0,   105,   182,   193, 0x0,                  STR_AVAILABLE_ENGINES_TIP},
@@ -795,7 +795,7 @@
  * Window for the (old) vehicle listing.
  *
  * bitmask for w->window_number
- * 0-7 PlayerID (owner)
+ * 0-7 CompanyID (owner)
  * 8-10 window type (use flags in vehicle_gui.h)
  * 11-15 vehicle type (using VEH_, but can be compressed to fewer bytes if needed)
  * 16-31 StationID or OrderID depending on window type (bit 8-10)
@@ -805,15 +805,15 @@
 	VehicleListWindow(const WindowDesc *desc, WindowNumber window_number) : BaseVehicleListWindow(desc, window_number)
 	{
 		uint16 window_type = this->window_number & VLW_MASK;
-		PlayerID player = (PlayerID)GB(this->window_number, 0, 8);
+		CompanyID company = (CompanyID)GB(this->window_number, 0, 8);
 
 		this->vehicle_type = (VehicleType)GB(this->window_number, 11, 5);
-		this->caption_color = player;
+		this->caption_color = company;
 
 		/* Hide the widgets that we will not use in this window
 		* Some windows contains actions only fit for the owner */
-		if (player == _local_player) {
-			this->HideWidget(VLW_WIDGET_OTHER_PLAYER_FILLER);
+		if (company == _local_company) {
+			this->HideWidget(VLW_WIDGET_OTHER_COMPANY_FILLER);
 			this->SetWidgetDisabledState(VLW_WIDGET_AVAILABLE_VEHICLES, window_type != VLW_STANDARD);
 		} else {
 			this->SetWidgetsHiddenState(true,
@@ -937,7 +937,7 @@
 	virtual void OnPaint()
 	{
 		int x = 2;
-		const PlayerID owner = (PlayerID)this->caption_color;
+		const Owner owner = (Owner)this->caption_color;
 		const uint16 window_type = this->window_number & VLW_MASK;
 		const uint16 index = GB(this->window_number, 16, 16);
 
@@ -1103,9 +1103,9 @@
 		if (_pause_game != 0) return;
 		if (this->vehicles.NeedResort()) {
 			StationID station = ((this->window_number & VLW_MASK) == VLW_STATION_LIST) ? GB(this->window_number, 16, 16) : INVALID_STATION;
-			PlayerID owner = (PlayerID)this->caption_color;
+			Owner owner = (Owner)this->caption_color;
 
-			DEBUG(misc, 3, "Periodic resort %d list player %d at station %d", this->vehicle_type, owner, station);
+			DEBUG(misc, 3, "Periodic resort %d list company %d at station %d", this->vehicle_type, owner, station);
 			this->SetDirty();
 		}
 	}
@@ -1139,26 +1139,26 @@
 	_vehicle_list_widgets,
 };
 
-static void ShowVehicleListWindowLocal(PlayerID player, uint16 VLW_flag, VehicleType vehicle_type, uint16 unique_number)
+static void ShowVehicleListWindowLocal(CompanyID company, uint16 VLW_flag, VehicleType vehicle_type, uint16 unique_number)
 {
-	if (!IsValidPlayerID(player)) return;
+	if (!IsValidCompanyID(company)) return;
 
 	_vehicle_list_desc.cls = GetWindowClassForVehicleType(vehicle_type);
-	WindowNumber num = (unique_number << 16) | (vehicle_type << 11) | VLW_flag | player;
+	WindowNumber num = (unique_number << 16) | (vehicle_type << 11) | VLW_flag | company;
 	AllocateWindowDescFront<VehicleListWindow>(&_vehicle_list_desc, num);
 }
 
-void ShowVehicleListWindow(PlayerID player, VehicleType vehicle_type)
+void ShowVehicleListWindow(CompanyID company, VehicleType vehicle_type)
 {
 	/* If _settings_client.gui.advanced_vehicle_list > 1, display the Advanced list
-	 * if _settings_client.gui.advanced_vehicle_list == 1, display Advanced list only for local player
+	 * if _settings_client.gui.advanced_vehicle_list == 1, display Advanced list only for local company
 	 * if _ctrl_pressed, do the opposite action (Advanced list x Normal list)
 	 */
 
-	if ((_settings_client.gui.advanced_vehicle_list > (uint)(player != _local_player)) != _ctrl_pressed) {
-		ShowPlayerGroup(player, vehicle_type);
+	if ((_settings_client.gui.advanced_vehicle_list > (uint)(company != _local_company)) != _ctrl_pressed) {
+		ShowCompanyGroup(company, vehicle_type);
 	} else {
-		ShowVehicleListWindowLocal(player, VLW_STANDARD, vehicle_type, 0);
+		ShowVehicleListWindowLocal(company, VLW_STANDARD, vehicle_type, 0);
 	}
 }
 
@@ -1173,12 +1173,12 @@
 	ShowVehicleListWindowLocal(v->owner, VLW_SHARED_ORDERS, v->type, v->FirstShared()->index);
 }
 
-void ShowVehicleListWindow(PlayerID player, VehicleType vehicle_type, StationID station)
+void ShowVehicleListWindow(CompanyID company, VehicleType vehicle_type, StationID station)
 {
-	ShowVehicleListWindowLocal(player, VLW_STATION_LIST, vehicle_type, station);
+	ShowVehicleListWindowLocal(company, VLW_STATION_LIST, vehicle_type, station);
 }
 
-void ShowVehicleListWindow(PlayerID player, VehicleType vehicle_type, TileIndex depot_tile)
+void ShowVehicleListWindow(CompanyID company, VehicleType vehicle_type, TileIndex depot_tile)
 {
 	uint16 depot_airport_index;
 
@@ -1189,7 +1189,7 @@
 		if (depot == NULL) return; // no depot to show
 		depot_airport_index = depot->index;
 	}
-	ShowVehicleListWindowLocal(player, VLW_DEPOT_LIST, vehicle_type, depot_airport_index);
+	ShowVehicleListWindowLocal(company, VLW_DEPOT_LIST, vehicle_type, depot_airport_index);
 }
 
 
@@ -1381,7 +1381,7 @@
 		const Vehicle *v = GetVehicle(this->window_number);
 		byte det_tab = this->tab;
 
-		this->SetWidgetDisabledState(VLD_WIDGET_RENAME_VEHICLE, v->owner != _local_player);
+		this->SetWidgetDisabledState(VLD_WIDGET_RENAME_VEHICLE, v->owner != _local_company);
 
 		if (v->type == VEH_TRAIN) {
 			this->DisableWidget(det_tab + VLD_WIDGET_DETAILS_CARGO_CARRIED);
@@ -1843,21 +1843,21 @@
 
 		const Vehicle *v = GetVehicle(this->window_number);
 		StringID str;
-		bool is_localplayer = v->owner == _local_player;
+		bool is_localcompany = v->owner == _local_company;
 		bool refitable_and_stopped_in_depot = IsVehicleRefitable(v);
 
-		this->SetWidgetDisabledState(VVW_WIDGET_GOTO_DEPOT, !is_localplayer);
+		this->SetWidgetDisabledState(VVW_WIDGET_GOTO_DEPOT, !is_localcompany);
 		this->SetWidgetDisabledState(VVW_WIDGET_REFIT_VEH,
-																!refitable_and_stopped_in_depot || !is_localplayer);
-		this->SetWidgetDisabledState(VVW_WIDGET_CLONE_VEH, !is_localplayer);
+																!refitable_and_stopped_in_depot || !is_localcompany);
+		this->SetWidgetDisabledState(VVW_WIDGET_CLONE_VEH, !is_localcompany);
 
 		if (v->type == VEH_TRAIN) {
-			this->SetWidgetDisabledState(VVW_WIDGET_FORCE_PROCEED, !is_localplayer);
-			this->SetWidgetDisabledState(VVW_WIDGET_TURN_AROUND, !is_localplayer);
+			this->SetWidgetDisabledState(VVW_WIDGET_FORCE_PROCEED, !is_localcompany);
+			this->SetWidgetDisabledState(VVW_WIDGET_TURN_AROUND, !is_localcompany);
 
 			/* Cargo refit button is disabled, until we know we can enable it below. */
 
-			if (is_localplayer) {
+			if (is_localcompany) {
 				/* See if any vehicle can be refitted */
 				for (const Vehicle *u = v; u != NULL; u = u->Next()) {
 					if (EngInfo(u->engine_type)->refit_mask != 0 ||
--- a/src/vehicle_gui.h	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/vehicle_gui.h	Tue Sep 30 20:39:50 2008 +0000
@@ -65,9 +65,9 @@
 
 void ShowVehicleListWindow(const Vehicle *v);
 void ShowVehicleListWindow(const Waypoint *wp);
-void ShowVehicleListWindow(PlayerID player, VehicleType vehicle_type);
-void ShowVehicleListWindow(PlayerID player, VehicleType vehicle_type, StationID station);
-void ShowVehicleListWindow(PlayerID player, VehicleType vehicle_type, TileIndex depot_tile);
+void ShowVehicleListWindow(CompanyID company, VehicleType vehicle_type);
+void ShowVehicleListWindow(CompanyID company, VehicleType vehicle_type, StationID station);
+void ShowVehicleListWindow(CompanyID company, VehicleType vehicle_type, TileIndex depot_tile);
 
 
 /* ChangeVehicleViewWindow() moves all windows for one vehicle to another vehicle.
@@ -82,7 +82,7 @@
 /** Get WindowClass for vehicle list of given vehicle type
  * @param vt vehicle type to check
  * @return corresponding window class
- * @note works only for player buildable vehicle types
+ * @note works only for company buildable vehicle types
  */
 static inline WindowClass GetWindowClassForVehicleType(VehicleType vt)
 {
--- a/src/vehicle_gui_base.h	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/vehicle_gui_base.h	Tue Sep 30 20:39:50 2008 +0000
@@ -32,7 +32,7 @@
 
 	void DrawVehicleListItems(int x, VehicleID selected_vehicle);
 	void SortVehicleList();
-	void BuildVehicleList(PlayerID owner, uint16 index, uint16 window_type);
+	void BuildVehicleList(Owner owner, uint16 index, uint16 window_type);
 };
 
 struct Sorting {
--- a/src/vehiclelist.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/vehiclelist.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -61,7 +61,7 @@
  * Generate a list of vehicles based on window type.
  * @param list        Pointer to list to add vehicles to
  * @param type        Type of vehicle
- * @param owner       Player to generate list for
+ * @param owner       Company to generate list for
  * @param index       This parameter has different meanings depending on window_type
  *    <ul>
  *      <li>VLW_STATION_LIST:  index of station to generate a list for</li>
@@ -73,7 +73,7 @@
  *    </ul>
  * @param window_type The type of window the list is for, using the VLW_ flags in vehicle_gui.h
  */
-void GenerateVehicleSortList(VehicleList *list, VehicleType type, PlayerID owner, uint32 index, uint16 window_type)
+void GenerateVehicleSortList(VehicleList *list, VehicleType type, Owner owner, uint32 index, uint16 window_type)
 {
 	list->Clear();
 
--- a/src/vehiclelist.h	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/vehiclelist.h	Tue Sep 30 20:39:50 2008 +0000
@@ -9,7 +9,7 @@
 
 typedef SmallVector<const Vehicle *, 32> VehicleList;
 
-void GenerateVehicleSortList(VehicleList *list, VehicleType type, PlayerID owner, uint32 index, uint16 window_type);
+void GenerateVehicleSortList(VehicleList *list, VehicleType type, Owner owner, uint32 index, uint16 window_type);
 void BuildDepotVehicleList(VehicleType type, TileIndex tile, VehicleList *engine_list, VehicleList *wagon_list, bool individual_wagons = false);
 
 #endif /* VEHICLELIST_H */
--- a/src/video/dedicated_v.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/video/dedicated_v.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -260,8 +260,8 @@
 	// Load the dedicated server stuff
 	_is_network_server = true;
 	_network_dedicated = true;
-	_network_playas = PLAYER_SPECTATOR;
-	_local_player = PLAYER_SPECTATOR;
+	_network_playas = COMPANY_SPECTATOR;
+	_local_company = COMPANY_SPECTATOR;
 
 	/* If SwitchMode is SM_LOAD, it means that the user used the '-g' options */
 	if (_switch_mode != SM_LOAD) {
--- a/src/viewport.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/viewport.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -1068,7 +1068,7 @@
 
 static void AddStation(const Station *st, StringID str, uint16 width)
 {
-	AddStringToDraw(st->sign.left + 1, st->sign.top + 1, str, st->index, st->facilities, (st->owner == OWNER_NONE || st->facilities == 0) ? 0xE : _player_colors[st->owner], width);
+	AddStringToDraw(st->sign.left + 1, st->sign.top + 1, str, st->index, st->facilities, (st->owner == OWNER_NONE || st->facilities == 0) ? 0xE : _company_colours[st->owner], width);
 }
 
 
@@ -1132,7 +1132,7 @@
 
 static void AddSign(const Sign *si, StringID str, uint16 width)
 {
-	AddStringToDraw(si->sign.left + 1, si->sign.top + 1, str, si->index, 0, (si->owner == OWNER_NONE) ? 14 : _player_colors[si->owner], width);
+	AddStringToDraw(si->sign.left + 1, si->sign.top + 1, str, si->index, 0, (si->owner == OWNER_NONE) ? 14 : _company_colours[si->owner], width);
 }
 
 
@@ -1861,8 +1861,8 @@
 {
 	const Sign *si;
 
-	/* Signs are turned off, or they are transparent and invisibility is ON, or player is a spectator */
-	if (!HasBit(_display_opt, DO_SHOW_SIGNS) || IsInvisibilitySet(TO_SIGNS) || _current_player == PLAYER_SPECTATOR) return false;
+	/* Signs are turned off, or they are transparent and invisibility is ON, or company is a spectator */
+	if (!HasBit(_display_opt, DO_SHOW_SIGNS) || IsInvisibilitySet(TO_SIGNS) || _current_company == COMPANY_SPECTATOR) return false;
 
 	switch (vp->zoom) {
 		case ZOOM_LVL_NORMAL:
--- a/src/water_cmd.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/water_cmd.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -224,8 +224,8 @@
 		Depot *depot = new Depot(tile);
 		depot->town_index = ClosestTownFromTile(tile, (uint)-1)->index;
 
-		MakeShipDepot(tile,  _current_player, DEPOT_NORTH, axis, wc1);
-		MakeShipDepot(tile2, _current_player, DEPOT_SOUTH, axis, wc2);
+		MakeShipDepot(tile,  _current_company, DEPOT_NORTH, axis, wc1);
+		MakeShipDepot(tile2, _current_company, DEPOT_SOUTH, axis, wc2);
 		MarkTileDirtyByTile(tile);
 		MarkTileDirtyByTile(tile2);
 	}
@@ -314,7 +314,7 @@
 	}
 
 	if (flags & DC_EXEC) {
-		MakeLock(tile, _current_player, dir, wc_lower, wc_upper);
+		MakeLock(tile, _current_company, dir, wc_lower, wc_upper);
 		MarkTileDirtyByTile(tile);
 		MarkTileDirtyByTile(tile - delta);
 		MarkTileDirtyByTile(tile + delta);
@@ -418,7 +418,7 @@
 			} else if (p2 == 2) {
 				MakeRiver(tile, Random());
 			} else {
-				MakeCanal(tile, _current_player, Random());
+				MakeCanal(tile, _current_company, Random());
 			}
 			MarkTileDirtyByTile(tile);
 			MarkCanalsAndRiversAroundDirty(tile);
@@ -482,7 +482,7 @@
 			};
 
 			if (flags & DC_AUTO) return_cmd_error(STR_2004_BUILDING_MUST_BE_DEMOLISHED);
-			if (_current_player == OWNER_WATER) return CMD_ERROR;
+			if (_current_company == OWNER_WATER) return CMD_ERROR;
 			/* move to the middle tile.. */
 			return RemoveShiplift(tile + ToTileIndexDiff(_shiplift_tomiddle_offs[GetSection(tile)]), flags);
 		}
@@ -741,7 +741,7 @@
 
 		case WATER_TILE_DEPOT:
 			DrawWaterClassGround(ti);
-			DrawWaterStuff(ti, _shipdepot_display_seq[GetSection(ti->tile)], PLAYER_SPRITE_COLOR(GetTileOwner(ti->tile)), 0, false);
+			DrawWaterStuff(ti, _shipdepot_display_seq[GetSection(ti->tile)], COMPANY_SPRITE_COLOR(GetTileOwner(ti->tile)), 0, false);
 			break;
 	}
 }
@@ -754,7 +754,7 @@
 
 	for (; wdts->delta_x != 0x80; wdts++) {
 		Point pt = RemapCoords(wdts->delta_x, wdts->delta_y, wdts->delta_z);
-		DrawSprite(wdts->image, PLAYER_SPRITE_COLOR(_local_player), x + pt.x, y + pt.y);
+		DrawSprite(wdts->image, COMPANY_SPRITE_COLOR(_local_company), x + pt.x, y + pt.y);
 	}
 }
 
@@ -993,7 +993,7 @@
 
 	bool flooded = false; // Will be set to true if something is changed.
 
-	_current_player = OWNER_WATER;
+	_current_company = OWNER_WATER;
 
 	Slope tileh = GetTileSlope(target, NULL);
 	if (tileh != SLOPE_FLAT) {
@@ -1045,7 +1045,7 @@
 		UpdateSignalsInBuffer();
 	}
 
-	_current_player = OWNER_NONE;
+	_current_company = OWNER_NONE;
 }
 
 /**
@@ -1053,7 +1053,7 @@
  */
 static void DoDryUp(TileIndex tile)
 {
-	_current_player = OWNER_WATER;
+	_current_company = OWNER_WATER;
 
 	switch (GetTileType(tile)) {
 		case MP_RAILWAY:
@@ -1089,7 +1089,7 @@
 		default: NOT_REACHED();
 	}
 
-	_current_player = OWNER_NONE;
+	_current_company = OWNER_NONE;
 }
 
 /**
@@ -1213,12 +1213,12 @@
 	}
 }
 
-static void ChangeTileOwner_Water(TileIndex tile, PlayerID old_player, PlayerID new_player)
+static void ChangeTileOwner_Water(TileIndex tile, Owner old_owner, Owner new_owner)
 {
-	if (!IsTileOwner(tile, old_player)) return;
+	if (!IsTileOwner(tile, old_owner)) return;
 
-	if (new_player != PLAYER_SPECTATOR) {
-		SetTileOwner(tile, new_player);
+	if (new_owner != INVALID_OWNER) {
+		SetTileOwner(tile, new_owner);
 		return;
 	}
 
@@ -1227,7 +1227,7 @@
 
 	/* Set owner of canals and locks ... and also canal under dock there was before.
 	 * Check if the new owner after removing depot isn't OWNER_WATER. */
-	if (IsTileOwner(tile, old_player)) SetTileOwner(tile, OWNER_NONE);
+	if (IsTileOwner(tile, old_owner)) SetTileOwner(tile, OWNER_NONE);
 }
 
 static VehicleEnterTileStatus VehicleEnter_Water(Vehicle *v, TileIndex tile, int x, int y)
--- a/src/waypoint.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/waypoint.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -144,7 +144,7 @@
 	uint thres = 8;
 
 	FOR_ALL_WAYPOINTS(wp) {
-		if (wp->deleted && (wp->owner == OWNER_NONE || wp->owner == _current_player)) {
+		if (wp->deleted && (wp->owner == OWNER_NONE || wp->owner == _current_company)) {
 			uint cur_dist = DistanceManhattan(tile, wp->xy);
 
 			if (cur_dist < thres) {
@@ -310,7 +310,7 @@
 
 	/* Make sure it's a waypoint */
 	if (!IsRailWaypointTile(tile) ||
-			(!CheckTileOwnership(tile) && _current_player != OWNER_WATER) ||
+			(!CheckTileOwnership(tile) && _current_company != OWNER_WATER) ||
 			!EnsureNoVehicleOnGround(tile)) {
 		return CMD_ERROR;
 	}
--- a/src/waypoint.h	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/waypoint.h	Tue Sep 30 20:39:50 2008 +0000
@@ -25,7 +25,7 @@
 
 	ViewportSign sign; ///< Dimensions of sign (not saved)
 	Date build_date;   ///< Date of construction
-	PlayerByte owner;  ///< Whom this waypoint belongs to
+	OwnerByte owner;   ///< Whom this waypoint belongs to
 
 	byte stat_id;      ///< ID of waypoint within the waypoint class (not saved)
 	uint32 grfid;      ///< ID of GRF file
--- a/src/widget.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/widget.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -476,7 +476,7 @@
 			DrawFrameRect(r.left + 1, r.top + 1, r.right - 1, r.bottom - 1, wi->color, (this->caption_color == 0xFF) ? FR_LOWERED | FR_DARKENED : FR_LOWERED | FR_DARKENED | FR_BORDERONLY);
 
 			if (this->caption_color != 0xFF) {
-				GfxFillRect(r.left + 2, r.top + 2, r.right - 2, r.bottom - 2, _colour_gradient[_player_colors[this->caption_color]][4]);
+				GfxFillRect(r.left + 2, r.top + 2, r.right - 2, r.bottom - 2, _colour_gradient[_company_colours[this->caption_color]][4]);
 			}
 
 			DrawStringCenteredTruncated(r.left + 2, r.right - 2, r.top + 2, wi->data, TC_FROMSTRING);
--- a/src/window.cpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/window.cpp	Tue Sep 30 20:39:50 2008 +0000
@@ -483,11 +483,11 @@
 	}
 }
 
-/** Delete all windows of a player. We identify windows of a player
- * by looking at the caption colour. If it is equal to the player ID
- * then we say the window belongs to the player and should be deleted
- * @param id PlayerID player identifier */
-void DeletePlayerWindows(PlayerID id)
+/** Delete all windows of a company. We identify windows of a company
+ * by looking at the caption colour. If it is equal to the company ID
+ * then we say the window belongs to the company and should be deleted
+ * @param id company identifier */
+void DeleteCompanyWindows(CompanyID id)
 {
 	Window* const *wz;
 
@@ -503,26 +503,26 @@
 		}
 	}
 
-	/* Also delete the player specific windows, that don't have a player-colour */
+	/* Also delete the company specific windows, that don't have a company-colour */
 	DeleteWindowById(WC_BUY_COMPANY, id);
 }
 
-/** Change the owner of all the windows one player can take over from another
- * player in the case of a company merger. Do not change ownership of windows
+/** Change the owner of all the windows one company can take over from another
+ * company in the case of a company merger. Do not change ownership of windows
  * that need to be deleted once takeover is complete
- * @param old_player PlayerID of original owner of the window
- * @param new_player PlayerID of the new owner of the window */
-void ChangeWindowOwner(PlayerID old_player, PlayerID new_player)
+ * @param old_owner original owner of the window
+ * @param new_owner the new owner of the window */
+void ChangeWindowOwner(Owner old_owner, Owner new_owner)
 {
 	Window* const *wz;
 
 	FOR_ALL_WINDOWS(wz) {
 		Window *w = *wz;
 
-		if (w->caption_color != old_player) continue;
+		if (w->caption_color != old_owner) continue;
 
 		switch (w->window_class) {
-			case WC_PLAYER_COLOR:
+			case WC_COMPANY_COLOR:
 			case WC_FINANCES:
 			case WC_STATION_LIST:
 			case WC_TRAINS_LIST:
@@ -534,7 +534,7 @@
 				continue;
 
 			default:
-				w->caption_color = new_player;
+				w->caption_color = new_owner;
 				break;
 		}
 	}
@@ -1635,12 +1635,12 @@
 	* During the generation of the world, there might be
 	* another thread that is currently building for example
 	* a road. To not interfere with those tasks, we should
-	* NOT change the _current_player here.
+	* NOT change the _current_company here.
 	*
 	* This is not necessary either, as the only events that
 	* can be handled are the 'close application' events
 	*/
-	if (!IsGeneratingWorld()) _current_player = _local_player;
+	if (!IsGeneratingWorld()) _current_company = _local_company;
 
 	/* Setup event */
 	uint16 key     = GB(raw_key,  0, 16);
@@ -1914,12 +1914,12 @@
 	 * During the generation of the world, there might be
 	 * another thread that is currently building for example
 	 * a road. To not interfere with those tasks, we should
-	 * NOT change the _current_player here.
+	 * NOT change the _current_company here.
 	 *
 	 * This is not necessary either, as the only events that
 	 * can be handled are the 'close application' events
 	 */
-	if (!IsGeneratingWorld()) _current_player = _local_player;
+	if (!IsGeneratingWorld()) _current_company = _local_company;
 
 	/* Mouse event? */
 	MouseClick click = MC_NONE;
--- a/src/window_func.h	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/window_func.h	Tue Sep 30 20:39:50 2008 +0000
@@ -11,7 +11,7 @@
 void SetWindowDirty(const Window *w);
 
 Window *FindWindowById(WindowClass cls, WindowNumber number);
-void ChangeWindowOwner(PlayerID old_player, PlayerID new_player);
+void ChangeWindowOwner(Owner old_owner, Owner new_owner);
 
 void ResizeWindow(Window *w, int x, int y);
 int PositionMainToolbar(Window *w);
--- a/src/window_gui.h	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/window_gui.h	Tue Sep 30 20:39:50 2008 +0000
@@ -214,7 +214,7 @@
 	Scrollbar vscroll2; ///< Second vertical scroll bar
 	ResizeInfo resize;  ///< Resize information
 
-	byte caption_color; ///< Background color of the window caption, contains PlayerID
+	byte caption_color; ///< Background color of the window caption, contains CompanyID
 
 	ViewportData *viewport;      ///< Pointer to viewport data, if present
 	Widget *widget;        ///< Widgets of the window
--- a/src/window_type.h	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/window_type.h	Tue Sep 30 20:39:50 2008 +0000
@@ -40,7 +40,7 @@
 	WC_BUILD_DEPOT,
 	WC_COMPANY,
 	WC_FINANCES,
-	WC_PLAYER_COLOR,
+	WC_COMPANY_COLOR,
 	WC_QUERY_STRING,
 	WC_SAVELOAD,
 	WC_SELECT_GAME,
@@ -49,7 +49,7 @@
 	WC_OPERATING_PROFIT,
 	WC_TOOLTIPS,
 	WC_INDUSTRY_VIEW,
-	WC_PLAYER_FACE,
+	WC_COMPANY_MANAGER_FACE,
 	WC_LAND_INFO,
 	WC_TOWN_AUTHORITY,
 	WC_SUBSIDIES_LIST,
--- a/src/yapf/follow_track.hpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/yapf/follow_track.hpp	Tue Sep 30 20:39:50 2008 +0000
@@ -288,7 +288,7 @@
 				m_err = EC_NO_WAY;
 				return false;
 			}
-			// don't try to enter other player's depots
+			// don't try to enter other company's depots
 			if (GetTileOwner(m_new_tile) != m_veh_owner) {
 				m_err = EC_OWNER;
 				return false;
--- a/src/yapf/yapf_base.hpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/yapf/yapf_base.hpp	Tue Sep 30 20:39:50 2008 +0000
@@ -91,7 +91,7 @@
 	FORCEINLINE Tpf& Yapf() {return *static_cast<Tpf*>(this);}
 
 public:
-	/// return current settings (can be custom - player based - but later)
+	/// return current settings (can be custom - company based - but later)
 	FORCEINLINE const YAPFSettings& PfGetSettings() const
 	{
 		return *m_settings;
--- a/src/yapf/yapf_destrail.hpp	Tue Sep 30 17:50:21 2008 +0000
+++ b/src/yapf/yapf_destrail.hpp	Tue Sep 30 20:39:50 2008 +0000
@@ -139,13 +139,13 @@
 				Waypoint *wp = GetWaypoint(v->current_order.GetDestination());
 				if (wp == NULL) {
 					/* Invalid waypoint in orders! */
-					DEBUG(yapf, 0, "Invalid waypoint in orders == 0x%04X (train %d, player %d)", v->current_order.GetDestination(), v->unitnumber, (PlayerID)v->owner);
+					DEBUG(yapf, 0, "Invalid waypoint in orders == 0x%04X (train %d, company %d)", v->current_order.GetDestination(), v->unitnumber, (CompanyID)v->owner);
 					break;
 				}
 				m_destTile = wp->xy;
 				if (m_destTile != v->dest_tile) {
 					/* Something is wrong with orders! */
-					DEBUG(yapf, 0, "Invalid v->dest_tile == 0x%04X (train %d, player %d)", v->dest_tile, v->unitnumber, (PlayerID)v->owner);
+					DEBUG(yapf, 0, "Invalid v->dest_tile == 0x%04X (train %d, company %d)", v->dest_tile, v->unitnumber, (CompanyID)v->owner);
 				}
 				m_dest_station_id = INVALID_STATION;
 				m_destTrackdirs = TrackToTrackdirBits(AxisToTrack(GetWaypointAxis(wp->xy)));