OpenTTD Source  1.11.0-beta2
company_cmd.cpp File Reference
#include "stdafx.h"
#include "company_base.h"
#include "company_func.h"
#include "company_gui.h"
#include "core/backup_type.hpp"
#include "town.h"
#include "news_func.h"
#include "cmd_helper.h"
#include "command_func.h"
#include "network/network.h"
#include "network/network_func.h"
#include "network/network_base.h"
#include "network/network_admin.h"
#include "ai/ai.hpp"
#include "company_manager_face.h"
#include "window_func.h"
#include "strings_func.h"
#include "date_func.h"
#include "sound_func.h"
#include "rail.h"
#include "core/pool_func.hpp"
#include "settings_func.h"
#include "vehicle_base.h"
#include "vehicle_func.h"
#include "smallmap_gui.h"
#include "game/game.hpp"
#include "goal_base.h"
#include "story_base.h"
#include "widgets/statusbar_widget.h"
#include "table/strings.h"
#include "safeguards.h"

Go to the source code of this file.

Functions

void ClearEnginesHiddenFlagOfCompany (CompanyID cid)
 Clear the 'hidden' flag for all engines of a new company. More...
 
void SetLocalCompany (CompanyID new_company)
 Sets the local company and updates the settings that are set on a per-company basis to reflect the core's state in the GUI. More...
 
TextColour GetDrawStringCompanyColour (CompanyID company)
 Get the colour for DrawString-subroutines which matches the colour of the company. More...
 
void DrawCompanyIcon (CompanyID c, int x, int y)
 Draw the icon of a company. More...
 
static bool IsValidCompanyManagerFace (CompanyManagerFace cmf)
 Checks whether a company manager's face is a valid encoding. More...
 
void InvalidateCompanyWindows (const Company *company)
 Refresh all windows owned by a company. More...
 
bool CheckCompanyHasMoney (CommandCost &cost)
 Verify whether the company can pay the bill. More...
 
static void SubtractMoneyFromAnyCompany (Company *c, const CommandCost &cost)
 Deduct costs of a command from the money of a company. More...
 
void SubtractMoneyFromCompany (const CommandCost &cost)
 Subtract money from the _current_company, if the company is valid. More...
 
void SubtractMoneyFromCompanyFract (CompanyID company, const CommandCost &cst)
 Subtract money from a company, including the money fraction. More...
 
void UpdateLandscapingLimits ()
 Update the landscaping limits per company.
 
void GetNameOfOwner (Owner owner, TileIndex tile)
 Set the right DParams to get the name of an owner. More...
 
CommandCost CheckOwnership (Owner owner, TileIndex tile)
 Check whether the current owner owns something. More...
 
CommandCost CheckTileOwnership (TileIndex tile)
 Check whether the current owner owns the stuff on the given tile. More...
 
static void GenerateCompanyName (Company *c)
 Generate the name of a company from the last build coordinate. More...
 
static Colours GenerateCompanyColour ()
 Generate a company colour. More...
 
static void GeneratePresidentName (Company *c)
 Generate a random president name of a company. More...
 
void ResetCompanyLivery (Company *c)
 Reset the livery schemes to the company's primary colour. More...
 
CompanyDoStartupNewCompany (bool is_ai, CompanyID company=INVALID_COMPANY)
 Create a new company and sets all company variables default values. More...
 
void StartupCompanies ()
 Start the next competitor now.
 
static bool MaybeStartNewCompany ()
 Start a new competitor company if possible.
 
void InitializeCompanies ()
 Initialize the pool of companies.
 
bool MayCompanyTakeOver (CompanyID cbig, CompanyID csmall)
 May company cbig buy company csmall? More...
 
static void HandleBankruptcyTakeover (Company *c)
 Handle the bankruptcy take over of a company. More...
 
void OnTick_Companies ()
 Called every tick for updating some company info.
 
void CompaniesYearlyLoop ()
 A year has passed, update the economic data of all companies, and perhaps show the financial overview window of the local company.
 
void CompanyAdminUpdate (const Company *company)
 Called whenever company related information changes in order to notify admins. More...
 
void CompanyAdminRemove (CompanyID company_id, CompanyRemoveReason reason)
 Called whenever a company is removed in order to notify admins. More...
 
CommandCost CmdCompanyCtrl (TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
 Control the companies: add, delete, etc. More...
 
CommandCost CmdSetCompanyManagerFace (TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
 Change the company manager's face. More...
 
CommandCost CmdSetCompanyColour (TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
 Change the company's company-colour. More...
 
static bool IsUniqueCompanyName (const char *name)
 Is the given name in use as name of a company? More...
 
CommandCost CmdRenameCompany (TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
 Change the name of the company. More...
 
static bool IsUniquePresidentName (const char *name)
 Is the given name in use as president name of a company? More...
 
CommandCost CmdRenamePresident (TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
 Change the name of the president. More...
 
int CompanyServiceInterval (const Company *c, VehicleType type)
 Get the service interval for the given company and vehicle type. More...
 
CommandCost CmdGiveMoney (TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
 Transfer funds (money) from one company to another. More...
 

Variables

CompanyID _local_company
 Company controlled by the human player at this client. Can also be COMPANY_SPECTATOR.
 
CompanyID _current_company
 Company currently doing an action.
 
Colours _company_colours [MAX_COMPANIES]
 NOSAVE: can be determined from company structs.
 
CompanyManagerFace _company_manager_face
 for company manager face storage in openttd.cfg
 
uint _next_competitor_start
 the number of ticks before the next AI is started
 
uint _cur_company_tick_index
 used to generate a name for one company that doesn't have a name yet per tick
 
CompanyPool _company_pool ("Company")
 Pool of companies.
 
static const byte _colour_sort [COLOUR_END] = {2, 2, 3, 2, 3, 2, 3, 2, 3, 2, 2, 2, 3, 1, 1, 1}
 Sorting weights for the company colours.
 
static const Colours _similar_colour [COLOUR_END][2]
 Similar colours, so we can try to prevent same coloured companies. More...
 

Detailed Description

Handling of companies.

Definition in file company_cmd.cpp.

Function Documentation

◆ CheckCompanyHasMoney()

bool CheckCompanyHasMoney ( CommandCost cost)

Verify whether the company can pay the bill.

Parameters
[in,out]costMoney to pay, is changed to an error if the company does not have enough money.
Returns
Function returns true if the company has enough money, else it returns false.

Definition at line 195 of file company_cmd.cpp.

References _current_company, CommandCost::GetCost(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::GetIfValid(), CommandCost::MakeError(), CompanyProperties::money, and SetDParam().

◆ CheckOwnership()

CommandCost CheckOwnership ( Owner  owner,
TileIndex  tile 
)

Check whether the current owner owns something.

If that isn't the case an appropriate error will be given.

Parameters
ownerthe owner of the thing to check.
tileoptional tile to get the right town.
Precondition
if tile == 0 then the owner can't be OWNER_TOWN.
Returns
A succeeded command iff it's owned by the current company, else a failed command.

Definition at line 310 of file company_cmd.cpp.

References _current_company, GetNameOfOwner(), OWNER_END, OWNER_TOWN, and return_cmd_error.

Referenced by CmdAutofillTimetable(), CmdAutoreplaceVehicle(), CmdChangeServiceInt(), CmdChangeTimetable(), CmdCloneOrder(), CmdCloneVehicle(), CmdDeleteOrder(), CmdForceTrainProceed(), CmdInsertOrder(), CmdMoveOrder(), CmdMoveRailVehicle(), CmdOpenCloseAirport(), CmdOrderRefit(), CmdRefitVehicle(), CmdRenameStation(), CmdRenameVehicle(), CmdRenameWaypoint(), CmdReverseTrainDirection(), CmdSellVehicle(), CmdSetTimetableStart(), CmdSetVehicleOnTime(), CmdSkipToOrder(), CmdStartStopVehicle(), CmdTurnRoadVeh(), RemoveAirport(), RemoveDock(), RemoveRoadStop(), and Vehicle::SendToDepot().

◆ CheckTileOwnership()

CommandCost CheckTileOwnership ( TileIndex  tile)

Check whether the current owner owns the stuff on the given tile.

If that isn't the case an appropriate error will be given.

Parameters
tilethe tile to check.
Returns
A succeeded command iff it's owned by the current company, else a failed command.

Definition at line 328 of file company_cmd.cpp.

References _current_company, GetNameOfOwner(), GetTileOwner(), IsLocalCompany(), OWNER_END, and return_cmd_error.

Referenced by CmdConvertRail(), CmdRenameDepot(), and RemoveLock().

◆ ClearEnginesHiddenFlagOfCompany()

void ClearEnginesHiddenFlagOfCompany ( CompanyID  cid)

Clear the 'hidden' flag for all engines of a new company.

Parameters
cidCompany being created.

Definition at line 875 of file engine.cpp.

References Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_engine_pool >::Iterate(), and SB().

◆ CmdCompanyCtrl()

CommandCost CmdCompanyCtrl ( TileIndex  tile,
DoCommandFlag  flags,
uint32  p1,
uint32  p2,
const char *  text 
)

Control the companies: add, delete, etc.

Parameters
tileunused
flagsoperation to perform
p1various functionality
  • bits 0..15: CompanyCtrlAction
  • bits 16..23: CompanyID
  • bits 24..31: CompanyRemoveReason (with CCA_DELETE)
p2ClientID
textunused
Returns
the cost of this operation or an error

Definition at line 810 of file company_cmd.cpp.

References InvalidateWindowData(), and WC_COMPANY_LEAGUE.

◆ CmdGiveMoney()

CommandCost CmdGiveMoney ( TileIndex  tile,
DoCommandFlag  flags,
uint32  p1,
uint32  p2,
const char *  text 
)

Transfer funds (money) from one company to another.

To prevent abuse in multiplayer games you can only send money to other companies if you have paid off your loan (either explicitly, or implicitly given the fact that you have more money than loan).

Parameters
tileunused
flagsoperation to perform
p1the amount of money to transfer; max 20.000.000
p2the company to transfer the money to
textunused
Returns
the cost of this operation or an error

Definition at line 1202 of file company_cmd.cpp.

References _current_company, _settings_game, CMD_ERROR, GameSettings::economy, EXPENSES_OTHER, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::Get(), and EconomySettings::give_money.

◆ CmdRenameCompany()

CommandCost CmdRenameCompany ( TileIndex  tile,
DoCommandFlag  flags,
uint32  p1,
uint32  p2,
const char *  text 
)

Change the name of the company.

Parameters
tileunused
flagsoperation to perform
p1unused
p2unused
textthe new name or an empty string when resetting to the default
Returns
the cost of this operation or an error

Definition at line 1068 of file company_cmd.cpp.

References _current_company, CMD_ERROR, CompanyAdminUpdate(), DC_EXEC, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::Get(), IsUniqueCompanyName(), MarkWholeScreenDirty(), MAX_LENGTH_COMPANY_NAME_CHARS, CompanyProperties::name, return_cmd_error, StrEmpty(), and Utf8StringLength().

◆ CmdRenamePresident()

CommandCost CmdRenamePresident ( TileIndex  tile,
DoCommandFlag  flags,
uint32  p1,
uint32  p2,
const char *  text 
)

Change the name of the president.

Parameters
tileunused
flagsoperation to perform
p1unused
p2unused
textthe new name or an empty string when resetting to the default
Returns
the cost of this operation or an error

Definition at line 1114 of file company_cmd.cpp.

References _current_company, CMD_ERROR, CMD_RENAME_COMPANY, CompanyAdminUpdate(), DC_EXEC, DoCommand(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::Get(), IsUniquePresidentName(), lastof, MarkWholeScreenDirty(), MAX_LENGTH_PRESIDENT_NAME_CHARS, CompanyProperties::name, CompanyProperties::name_1, CompanyProperties::president_name, return_cmd_error, seprintf(), StrEmpty(), and Utf8StringLength().

◆ CmdSetCompanyColour()

CommandCost CmdSetCompanyColour ( TileIndex  tile,
DoCommandFlag  flags,
uint32  p1,
uint32  p2,
const char *  text 
)

Change the company's company-colour.

Parameters
tileunused
flagsoperation to perform
p1bitstuffed: p1 bits 0-7 scheme to set p1 bit 8 set first/second colour
p2new colour for vehicles, property, etc.
textunused
Returns
the cost of this operation or an error

Definition at line 957 of file company_cmd.cpp.

References HasBit().

◆ CmdSetCompanyManagerFace()

CommandCost CmdSetCompanyManagerFace ( TileIndex  tile,
DoCommandFlag  flags,
uint32  p1,
uint32  p2,
const char *  text 
)

Change the company manager's face.

Parameters
tileunused
flagsoperation to perform
p1unused
p2face bitmasked
textunused
Returns
the cost of this operation or an error

Definition at line 933 of file company_cmd.cpp.

References _current_company, CMD_ERROR, DC_EXEC, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::Get(), IsValidCompanyManagerFace(), and MarkWholeScreenDirty().

◆ CompanyAdminRemove()

void CompanyAdminRemove ( CompanyID  company_id,
CompanyRemoveReason  reason 
)

Called whenever a company is removed in order to notify admins.

Parameters
company_idThe company that was removed.
reasonThe reason the company was removed.

Definition at line 793 of file company_cmd.cpp.

References _network_server, and NetworkAdminCompanyRemove().

◆ CompanyAdminUpdate()

void CompanyAdminUpdate ( const Company company)

Called whenever company related information changes in order to notify admins.

Parameters
companyThe company data changed of.

Definition at line 783 of file company_cmd.cpp.

References _network_server, and NetworkAdminCompanyUpdate().

Referenced by CmdRenameCompany(), and CmdRenamePresident().

◆ CompanyServiceInterval()

int CompanyServiceInterval ( const Company c,
VehicleType  type 
)

Get the service interval for the given company and vehicle type.

Parameters
cThe company, or nullptr for client-default settings.
typeThe vehicle type to get the interval for.
Returns
The service interval.

Definition at line 1152 of file company_cmd.cpp.

References _settings_client, ClientSettings::company, Company::settings, and CompanySettings::vehicle.

Referenced by CmdChangeServiceInt().

◆ DoStartupNewCompany()

◆ DrawCompanyIcon()

void DrawCompanyIcon ( CompanyID  c,
int  x,
int  y 
)

Draw the icon of a company.

Parameters
cCompany that needs its icon drawn.
xHorizontal coordinate of the icon.
yVertical coordinate of the icon.

Definition at line 142 of file company_cmd.cpp.

Referenced by AIDebugWindow::OnPaint().

◆ GenerateCompanyColour()

static Colours GenerateCompanyColour ( )
static

Generate a company colour.

Returns
Generated company colour.

Definition at line 427 of file company_cmd.cpp.

Referenced by DoStartupNewCompany().

◆ GenerateCompanyName()

static void GenerateCompanyName ( Company c)
static

Generate the name of a company from the last build coordinate.

Parameters
cCompany to give a name.

Definition at line 345 of file company_cmd.cpp.

References ClosestTownFromTile(), IsInsideMM(), CompanyProperties::last_build_coordinate, MAX_CHAR_LENGTH, MAX_LENGTH_COMPANY_NAME_CHARS, Town::name, and CompanyProperties::name_1.

◆ GeneratePresidentName()

static void GeneratePresidentName ( Company c)
static

Generate a random president name of a company.

Parameters
cCompany that needs a new president name.

Definition at line 482 of file company_cmd.cpp.

References CompanyProperties::president_name_2.

◆ GetDrawStringCompanyColour()

TextColour GetDrawStringCompanyColour ( CompanyID  company)

Get the colour for DrawString-subroutines which matches the colour of the company.

Parameters
companyCompany to get the colour of.
Returns
Colour of company.

Definition at line 130 of file company_cmd.cpp.

References _colour_gradient, and Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::IsValidID().

◆ GetNameOfOwner()

void GetNameOfOwner ( Owner  owner,
TileIndex  tile 
)

Set the right DParams to get the name of an owner.

Parameters
ownerthe owner to get the name of.
tileoptional tile to get the right town.
Precondition
if tile == 0, then owner can't be OWNER_TOWN.

Definition at line 281 of file company_cmd.cpp.

References ClosestTownFromTile(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::IsValidID(), OWNER_TOWN, and SetDParam().

Referenced by CheckOwnership(), and CheckTileOwnership().

◆ HandleBankruptcyTakeover()

static void HandleBankruptcyTakeover ( Company c)
static

Handle the bankruptcy take over of a company.

Companies going bankrupt will ask the other companies in order of their performance rating, so better performing companies get the 'do you want to merge with Y' question earlier. The question will then stay till either the company has gone bankrupt or got merged with a company.

Parameters
cthe company that is going bankrupt.

Definition at line 646 of file company_cmd.cpp.

References CompanyProperties::bankrupt_asked, CompanyProperties::bankrupt_timeout, ClampToI32(), DAY_TICKS, HasBit(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, CompanyProperties::is_ai, IsInteractiveCompany(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::Iterate(), MAX_COMPANIES, MAX_UVALUE, MayCompanyTakeOver(), AI::NewEvent(), CompanyProperties::old_economy, CompanyEconomyEntry::performance_history, SetBit(), and ShowBuyCompanyDialog().

◆ InvalidateCompanyWindows()

void InvalidateCompanyWindows ( const Company company)

Refresh all windows owned by a company.

Parameters
companyCompany that changed, and needs its windows refreshed.

Definition at line 182 of file company_cmd.cpp.

References _local_company, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, SetWindowDirty(), SetWindowWidgetDirty(), WC_FINANCES, WC_STATUS_BAR, and WID_S_RIGHT.

Referenced by SubtractMoneyFromAnyCompany().

◆ IsUniqueCompanyName()

static bool IsUniqueCompanyName ( const char *  name)
static

Is the given name in use as name of a company?

Parameters
nameName to search.
Returns
true if the name us unique (that is, not in use), else false.

Definition at line 1050 of file company_cmd.cpp.

References Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::Iterate(), and ScriptInfo::name.

Referenced by CmdRenameCompany().

◆ IsUniquePresidentName()

static bool IsUniquePresidentName ( const char *  name)
static

Is the given name in use as president name of a company?

Parameters
nameName to search.
Returns
true if the name us unique (that is, not in use), else false.

Definition at line 1096 of file company_cmd.cpp.

References Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::Iterate(), and ScriptInfo::name.

Referenced by CmdRenamePresident().

◆ IsValidCompanyManagerFace()

static bool IsValidCompanyManagerFace ( CompanyManagerFace  cmf)
static

Checks whether a company manager's face is a valid encoding.

Unused bits are not enforced to be 0.

Parameters
cmfthe fact to check
Returns
true if and only if the face is valid

Definition at line 153 of file company_cmd.cpp.

References AreCompanyManagerFaceBitsValid(), GE_WM, GENDER_FEMALE, GetCompanyManagerFaceBits(), and HasBit().

Referenced by CmdSetCompanyManagerFace().

◆ MayCompanyTakeOver()

◆ ResetCompanyLivery()

void ResetCompanyLivery ( Company c)

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.

Parameters
cCompany to reset.

Definition at line 514 of file company_cmd.cpp.

Referenced by DoStartupNewCompany().

◆ SetLocalCompany()

void SetLocalCompany ( CompanyID  new_company)

Sets the local company and updates the settings that are set on a per-company basis to reflect the core's state in the GUI.

Parameters
new_companythe new company
Precondition
Company::IsValidID(new_company) || new_company == COMPANY_SPECTATOR || new_company == OWNER_NONE

Definition at line 102 of file company_cmd.cpp.

References _current_company, _local_company, COMPANY_SPECTATOR, DeleteConstructionWindows(), DESTTYPE_TEAM, InvalidateWindowClassesData(), InvalidateWindowData(), IsLocalCompany(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::IsValidID(), MarkWholeScreenDirty(), OWNER_NONE, WC_SEND_NETWORK_MSG, and WC_SIGN_LIST.

Referenced by ClickChangeCompanyCheat(), GenerateWorld(), and NetworkServerDoMove().

◆ SubtractMoneyFromAnyCompany()

◆ SubtractMoneyFromCompany()

void SubtractMoneyFromCompany ( const CommandCost cost)

Subtract money from the _current_company, if the company is valid.

Parameters
costMoney to pay.

Definition at line 242 of file company_cmd.cpp.

References _current_company, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::GetIfValid(), and SubtractMoneyFromAnyCompany().

◆ SubtractMoneyFromCompanyFract()

void SubtractMoneyFromCompanyFract ( CompanyID  company,
const CommandCost cst 
)

Subtract money from a company, including the money fraction.

Parameters
companyCompany paying the bill.
cstCost of a command.

Definition at line 253 of file company_cmd.cpp.

References Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::Get(), CommandCost::GetCost(), and CompanyProperties::money_fraction.

Variable Documentation

◆ _similar_colour

const Colours _similar_colour[COLOUR_END][2]
static
Initial value:
= {
{ COLOUR_BLUE, COLOUR_LIGHT_BLUE },
{ COLOUR_GREEN, COLOUR_DARK_GREEN },
{ INVALID_COLOUR, INVALID_COLOUR },
{ COLOUR_ORANGE, INVALID_COLOUR },
{ INVALID_COLOUR, INVALID_COLOUR },
{ COLOUR_DARK_BLUE, COLOUR_BLUE },
{ COLOUR_PALE_GREEN, COLOUR_DARK_GREEN },
{ COLOUR_PALE_GREEN, COLOUR_GREEN },
{ COLOUR_DARK_BLUE, COLOUR_LIGHT_BLUE },
{ COLOUR_BROWN, COLOUR_ORANGE },
{ COLOUR_PURPLE, INVALID_COLOUR },
{ COLOUR_MAUVE, INVALID_COLOUR },
{ COLOUR_YELLOW, COLOUR_CREAM },
{ COLOUR_CREAM, INVALID_COLOUR },
{ COLOUR_WHITE, INVALID_COLOUR },
{ COLOUR_GREY, INVALID_COLOUR },
}

Similar colours, so we can try to prevent same coloured companies.

Definition at line 404 of file company_cmd.cpp.