OpenTTD GameScript API: GSCompany Class Reference

OpenTTD GameScript API 14.1

Public Types | Static Public Member Functions
GSCompany Class Reference

Class that handles all company related functions. More...

Inheritance diagram for GSCompany:

## Public Types
enum | Quarter { CURRENT_QUARTER, EARLIEST_QUARTER }
| The range of possible quarters to get company information of. More...
enum | CompanyID { COMPANY_FIRST, COMPANY_LAST, COMPANY_INVALID, COMPANY_SELF, COMPANY_SPECTATOR }
| Different constants related to CompanyID. More...
enum | Gender { GENDER_MALE, GENDER_FEMALE, GENDER_INVALID }
| Possible genders for company presidents. More...
enum | LiveryScheme { LS_DEFAULT, LS_STEAM, LS_DIESEL, LS_ELECTRIC, LS_MONORAIL, LS_MAGLEV, LS_DMU, LS_EMU, LS_PASSENGER_WAGON_STEAM, LS_PASSENGER_WAGON_DIESEL, LS_PASSENGER_WAGON_ELECTRIC, LS_PASSENGER_WAGON_MONORAIL, LS_PASSENGER_WAGON_MAGLEV, LS_FREIGHT_WAGON, LS_BUS, LS_TRUCK, LS_PASSENGER_SHIP, LS_FREIGHT_SHIP, LS_HELICOPTER, LS_SMALL_PLANE, LS_LARGE_PLANE, LS_PASSENGER_TRAM, LS_FREIGHT_TRAM, LS_INVALID }
| List of different livery schemes. More...
enum | Colours { COLOUR_DARK_BLUE, COLOUR_PALE_GREEN, COLOUR_PINK, COLOUR_YELLOW, COLOUR_RED, COLOUR_LIGHT_BLUE, COLOUR_GREEN, COLOUR_DARK_GREEN, COLOUR_BLUE, COLOUR_CREAM, COLOUR_MAUVE, COLOUR_PURPLE, COLOUR_ORANGE, COLOUR_BROWN, COLOUR_GREY, COLOUR_WHITE, COLOUR_INVALID = ::INVALID_COLOUR }
| List of colours.
enum | ExpensesType : byte { EXPENSES_CONSTRUCTION, EXPENSES_NEW_VEHICLES, EXPENSES_TRAIN_RUN, EXPENSES_ROADVEH_RUN, EXPENSES_AIRCRAFT_RUN, EXPENSES_SHIP_RUN, EXPENSES_PROPERTY, EXPENSES_TRAIN_INC, EXPENSES_ROADVEH_INC, EXPENSES_AIRCRAFT_INC, EXPENSES_SHIP_INC, EXPENSES_LOAN_INT, EXPENSES_OTHER, EXPENSES_INVALID }
| Types of expenses. More...

## Static Public Member Functions
static CompanyID | ResolveCompanyID (CompanyID company)
| Resolved the given company index to the correct index for the company. More...
static bool | IsMine (CompanyID company)
| Check if a CompanyID is your CompanyID, to ease up checks. More...
static bool | SetName (Text *name)
| Set the name of your company. More...
static std::optional< std::string > | GetName (CompanyID company)
| Get the name of the given company. More...
static bool | SetPresidentName (Text *name)
| Set the name of your president. More...
static std::optional< std::string > | GetPresidentName (CompanyID company)
| Get the name of the president of the given company. More...
static bool | SetPresidentGender (Gender gender)
| Set the gender of the president of your company. More...
static Gender | GetPresidentGender (CompanyID company)
| Get the gender of the president of the given company. More...
static bool | SetLoanAmount (Money loan)
| Sets the amount to loan. More...
static bool | SetMinimumLoanAmount (Money loan)
| Sets the minimum amount to loan, i.e. More...
static Money | GetLoanAmount ()
| Gets the amount your company have loaned. More...
static Money | GetMaxLoanAmount ()
| Gets the maximum amount your company can loan. More...
static bool | SetMaxLoanAmountForCompany (CompanyID company, Money amount)
| Sets the max amount of money company can loan. More...
static bool | ResetMaxLoanAmountForCompany (CompanyID company)
| Makes the max amount of money company can loan follow the global max loan setting. More...
static Money | GetLoanInterval ()
| Gets the interval/loan step. More...
static Money | GetBankBalance (CompanyID company)
| Gets the bank balance. More...
static bool | ChangeBankBalance (CompanyID company, Money delta, ExpensesType expenses_type, TileIndex tile)
| Changes the bank balance by a delta value. More...
static Money | GetQuarterlyIncome (CompanyID company, SQInteger quarter)
| Get the income of the company in the given quarter. More...
static Money | GetQuarterlyExpenses (CompanyID company, SQInteger quarter)
| Get the expenses of the company in the given quarter. More...
static SQInteger | GetQuarterlyCargoDelivered (CompanyID company, SQInteger quarter)
| Get the amount of cargo delivered by the given company in the given quarter. More...
static SQInteger | GetQuarterlyPerformanceRating (CompanyID company, SQInteger quarter)
| Get the performance rating of the given company in the given quarter. More...
static Money | GetQuarterlyCompanyValue (CompanyID company, SQInteger quarter)
| Get the value of the company in the given quarter. More...
static bool | BuildCompanyHQ (TileIndex tile)
| Build your company's HQ on the given tile. More...
static TileIndex | GetCompanyHQ (CompanyID company)
| Return the location of a company's HQ. More...
static bool | SetAutoRenewStatus (bool autorenew)
| Set whether autorenew is enabled for your company. More...
static bool | GetAutoRenewStatus (CompanyID company)
| Return whether autorenew is enabled for a company. More...
static bool | SetAutoRenewMonths (SQInteger months)
| Set the number of months before/after max age to autorenew an engine for your company. More...
static SQInteger | GetAutoRenewMonths (CompanyID company)
| Return the number of months before/after max age to autorenew an engine for a company. More...
static bool | SetAutoRenewMoney (Money money)
| Set the minimum money needed to autorenew an engine for your company. More...
static Money | GetAutoRenewMoney (CompanyID company)
| Return the minimum money needed to autorenew an engine for a company. More...
static bool | SetPrimaryLiveryColour (LiveryScheme scheme, Colours colour)
| Set primary colour for your company. More...
static bool | SetSecondaryLiveryColour (LiveryScheme scheme, Colours colour)
| Set secondary colour for your company. More...
static GSCompany::Colours | GetPrimaryLiveryColour (LiveryScheme scheme)
| Get primary colour of a livery for your company. More...
static GSCompany::Colours | GetSecondaryLiveryColour (LiveryScheme scheme)
| Get secondary colour of a livery for your company. More...

## Detailed Description

Class that handles all company related functions.

## Member Enumeration Documentation

## ◆ CompanyID

enum GSCompany::CompanyID

Different constants related to CompanyID.

Enumerator
COMPANY_FIRST | The first available company.
COMPANY_LAST | The last available company.
COMPANY_INVALID | An invalid company.
COMPANY_SELF | Constant that gets resolved to the correct company index for your company.
COMPANY_SPECTATOR | Constant indicating that player is spectating (gets resolved to COMPANY_INVALID)

## ◆ ExpensesType

enum GSCompany::ExpensesType : byte

Types of expenses.

Enumerator
EXPENSES_CONSTRUCTION | Construction costs.
EXPENSES_NEW_VEHICLES | New vehicles.
EXPENSES_TRAIN_RUN | Running costs trains.
EXPENSES_ROADVEH_RUN | Running costs road vehicles.
EXPENSES_AIRCRAFT_RUN | Running costs aircraft.
EXPENSES_SHIP_RUN | Running costs ships.
EXPENSES_PROPERTY | Property costs.
EXPENSES_TRAIN_INC | Revenue from trains.
EXPENSES_ROADVEH_INC | Revenue from road vehicles.
EXPENSES_AIRCRAFT_INC | Revenue from aircraft.
EXPENSES_SHIP_INC | Revenue from ships.
EXPENSES_LOAN_INT | Interest payments over the loan.
EXPENSES_OTHER | Other expenses.
EXPENSES_INVALID | Invalid expense type.

## ◆ Gender

enum GSCompany::Gender

Possible genders for company presidents.

Enumerator
GENDER_MALE | A male person.
GENDER_FEMALE | A female person.
GENDER_INVALID | An invalid gender.

## ◆ LiveryScheme

enum GSCompany::LiveryScheme

List of different livery schemes.

Enumerator
LS_DEFAULT | Default scheme.
LS_STEAM | Steam engines.
LS_DIESEL | Diesel engines.
LS_ELECTRIC | Electric engines.
LS_MONORAIL | Monorail engines.
LS_MAGLEV | Maglev engines.
LS_DMU | DMUs and their passenger wagons.
LS_EMU | EMUs and their passenger wagons.
LS_PASSENGER_WAGON_STEAM | Passenger wagons attached to steam engines.
LS_PASSENGER_WAGON_DIESEL | Passenger wagons attached to diesel engines.
LS_PASSENGER_WAGON_ELECTRIC | Passenger wagons attached to electric engines.
LS_PASSENGER_WAGON_MONORAIL | Passenger wagons attached to monorail engines.
LS_PASSENGER_WAGON_MAGLEV | Passenger wagons attached to maglev engines.
LS_FREIGHT_WAGON | Freight wagons.
LS_BUS | Buses.
LS_TRUCK | Trucks.
LS_PASSENGER_SHIP | Passenger ships.
LS_FREIGHT_SHIP | Freight ships.
LS_HELICOPTER | Helicopters.
LS_SMALL_PLANE | Small aeroplanes.
LS_LARGE_PLANE | Large aeroplanes.
LS_PASSENGER_TRAM | Passenger trams.
LS_FREIGHT_TRAM | Freight trams.

## ◆ Quarter

enum GSCompany::Quarter

The range of possible quarters to get company information of.

Enumerator
CURRENT_QUARTER | The current quarter.
EARLIEST_QUARTER | The earliest quarter company information is available for.

## Member Function Documentation

## ◆ BuildCompanyHQ()

static bool GSCompany::BuildCompanyHQ | ( | TileIndex | tile | ) |
| static

Build your company's HQ on the given tile.

Parameters

  tile | The tile to build your HQ on, this tile is the most northern tile of your HQ.

Precondition
  GSMap::IsValidTile(tile).
  GSCompanyMode::IsValid().

Exceptions

  GSError::ERR_AREA_NOT_CLEAR |
  GSError::ERR_FLAT_LAND_REQUIRED |

Returns
  True if the HQ could be build.

Note
  An HQ can not be removed, only by water or rebuilding; If an HQ is build again, the old one is removed.

## ◆ ChangeBankBalance()

static bool GSCompany::ChangeBankBalance | ( | CompanyID | company,
|  | Money | delta,
|  | ExpensesType | expenses_type,
|  | TileIndex | tile
| ) |  |
| static

Changes the bank balance by a delta value.

This method does not affect the loan but instead allows a GS to give or take money from a company.

Parameters

  company | The company to change the bank balance of.
  delta | Amount of money to give or take from the bank balance. A positive value adds money to the bank balance.
  expenses_type | The account in the finances window that will register the cost.
  tile | The tile to show text effect on or GSMap::TILE_INVALID

Returns
  True, if the bank balance was changed.

Precondition
  GSCompanyMode::IsDeity().
  ResolveCompanyID(company) != COMPANY_INVALID.

Note
  You need to create your own news message to inform about costs/gifts that you create using this command.

## ◆ GetAutoRenewMoney()

static Money GSCompany::GetAutoRenewMoney | ( | CompanyID | company | ) |
| static

Return the minimum money needed to autorenew an engine for a company.

Parameters

  company | The company to get the autorenew money of.

Precondition
  ResolveCompanyID(company) != COMPANY_INVALID.

Returns
  The minimum required money for autorenew to work.

## ◆ GetAutoRenewMonths()

static SQInteger GSCompany::GetAutoRenewMonths | ( | CompanyID | company | ) |
| static

Return the number of months before/after max age to autorenew an engine for a company.

Parameters

  company | The company to get the autorenew months of.

Precondition
  ResolveCompanyID(company) != COMPANY_INVALID.

Returns
  The months before/after max age of engine.

## ◆ GetAutoRenewStatus()

static bool GSCompany::GetAutoRenewStatus | ( | CompanyID | company | ) |
| static

Return whether autorenew is enabled for a company.

Parameters

  company | The company to get the autorenew status of.

Precondition
  ResolveCompanyID(company) != COMPANY_INVALID.

Returns
  True if autorenew is enabled.

## ◆ GetBankBalance()

static Money GSCompany::GetBankBalance | ( | CompanyID | company | ) |
| static

Gets the bank balance.

In other words, the amount of money the given company can spent. If infinite money is enabled, it returns INT32_MAX.

Parameters

  company | The company to get the bank balance of.

Precondition
  ResolveCompanyID(company) != COMPANY_INVALID.

Returns
  The actual bank balance or INT32_MAX.

## ◆ GetCompanyHQ()

static TileIndex GSCompany::GetCompanyHQ | ( | CompanyID | company | ) |
| static

Return the location of a company's HQ.

Parameters

  company | The company the get the HQ of.

Precondition
  ResolveCompanyID(company) != COMPANY_INVALID.

Returns
  The tile of the company's HQ, this tile is the most northern tile of that HQ, or GSMap::TILE_INVALID if there is no HQ yet.

## ◆ GetLoanAmount()

static Money GSCompany::GetLoanAmount | ( |  | ) |
| static

Gets the amount your company have loaned.

Returns
  The amount loaned money.

Postcondition
  GetLoanInterval() is always a multiplier of the return value.

## ◆ GetLoanInterval()

static Money GSCompany::GetLoanInterval | ( |  | ) |
| static

Gets the interval/loan step.

Returns
  The loan step.

Postcondition
  Return value is always positive.

## ◆ GetMaxLoanAmount()

static Money GSCompany::GetMaxLoanAmount | ( |  | ) |
| static

Gets the maximum amount your company can loan.

In deity mode returns the global max loan.

Returns
  The maximum amount your company can loan.

Postcondition
  GetLoanInterval() is always a multiplier of the return value.

## ◆ GetName()

static std::optional<std::string> GSCompany::GetName | ( | CompanyID | company | ) |
| static

Get the name of the given company.

Parameters

  company | The company to get the name for.

Precondition
  ResolveCompanyID(company) != COMPANY_INVALID.

Returns
  The name of the given company.

## ◆ GetPresidentGender()

static Gender GSCompany::GetPresidentGender | ( | CompanyID | company | ) |
| static

Get the gender of the president of the given company.

Parameters

  company | The company to get the presidents gender off.

Returns
  The gender of the president.

## ◆ GetPresidentName()

static std::optional<std::string> GSCompany::GetPresidentName | ( | CompanyID | company | ) |
| static

Get the name of the president of the given company.

Parameters

  company | The company to get the president's name for.

Precondition
  ResolveCompanyID(company) != COMPANY_INVALID.

Returns
  The name of the president of the given company.

## ◆ GetPrimaryLiveryColour()

static GSCompany::Colours GSCompany::GetPrimaryLiveryColour | ( | LiveryScheme | scheme | ) |
| static

Get primary colour of a livery for your company.

Parameters

  scheme | Livery scheme to get.

Returns
  Primary colour of livery.

## ◆ GetQuarterlyCargoDelivered()

static SQInteger GSCompany::GetQuarterlyCargoDelivered | ( | CompanyID | company,
|  | SQInteger | quarter
| ) |  |
| static

Get the amount of cargo delivered by the given company in the given quarter.

Parameters

  company | The company to get the amount of delivered cargo of.
  quarter | The quarter to get the amount of delivered cargo of.

Precondition
  ResolveCompanyID(company) != COMPANY_INVALID.
  quarter <= EARLIEST_QUARTER.

Returns
  The amount of cargo delivered by the given company in the given quarter.

## ◆ GetQuarterlyCompanyValue()

static Money GSCompany::GetQuarterlyCompanyValue | ( | CompanyID | company,
|  | SQInteger | quarter
| ) |  |
| static

Get the value of the company in the given quarter.

Parameters

  company | The company to get the value of.
  quarter | The quarter to get the value of.

Precondition
  ResolveCompanyID(company) != COMPANY_INVALID.
  quarter <= EARLIEST_QUARTER.

Returns
  The value of the company in the given quarter.

## ◆ GetQuarterlyExpenses()

static Money GSCompany::GetQuarterlyExpenses | ( | CompanyID | company,
|  | SQInteger | quarter
| ) |  |
| static

Get the expenses of the company in the given quarter.

Note that this function only considers recurring expenses from vehicle running cost, maintenance and interests; it does not include one-time expenses from construction and buying stuff.

Parameters

  company | The company to get the quarterly expenses of.
  quarter | The quarter to get the expenses of.

Precondition
  ResolveCompanyID(company) != COMPANY_INVALID.
  quarter <= EARLIEST_QUARTER.

Returns
  The expenses of the company in the given quarter.

## ◆ GetQuarterlyIncome()

static Money GSCompany::GetQuarterlyIncome | ( | CompanyID | company,
|  | SQInteger | quarter
| ) |  |
| static

Get the income of the company in the given quarter.

Note that this function only considers recurring income from vehicles; it does not include one-time income from selling stuff.

Parameters

  company | The company to get the quarterly income of.
  quarter | The quarter to get the income of.

Precondition
  ResolveCompanyID(company) != COMPANY_INVALID.
  quarter <= EARLIEST_QUARTER.

Returns
  The gross income of the company in the given quarter.

## ◆ GetQuarterlyPerformanceRating()

static SQInteger GSCompany::GetQuarterlyPerformanceRating | ( | CompanyID | company,
|  | SQInteger | quarter
| ) |  |
| static

Get the performance rating of the given company in the given quarter.

Parameters

  company | The company to get the performance rating of.
  quarter | The quarter to get the performance rating of.

Precondition
  ResolveCompanyID(company) != COMPANY_INVALID.
  quarter <= EARLIEST_QUARTER.
  quarter != CURRENT_QUARTER.

Note
  The performance rating is calculated after every quarter, so the value for CURRENT_QUARTER is undefined.

Returns
  The performance rating of the given company in the given quarter.

## ◆ GetSecondaryLiveryColour()

static GSCompany::Colours GSCompany::GetSecondaryLiveryColour | ( | LiveryScheme | scheme | ) |
| static

Get secondary colour of a livery for your company.

Parameters

  scheme | Livery scheme to get.

Returns
  Secondary colour of livery.

## ◆ IsMine()

static bool GSCompany::IsMine | ( | CompanyID | company | ) |
| static

Check if a CompanyID is your CompanyID, to ease up checks.

Parameters

  company | The company index to check.

Precondition
  GSCompanyMode::IsValid().

Returns
  True if and only if this company is your CompanyID.

## ◆ ResetMaxLoanAmountForCompany()

static bool GSCompany::ResetMaxLoanAmountForCompany | ( | CompanyID | company | ) |
| static

Makes the max amount of money company can loan follow the global max loan setting.

Parameters

  company | The company ID.

Returns
  True, if the max loan was reset.

Precondition
  GSCompanyMode::IsDeity().
  amount >= 0 && amount <= MAX_LOAN_LIMIT.
  ResolveCompanyID(company) != COMPANY_INVALID.

Note
  You need to create your own news message to inform about max loan change.

## ◆ ResolveCompanyID()

static CompanyID GSCompany::ResolveCompanyID | ( | CompanyID | company | ) |
| static

Resolved the given company index to the correct index for the company.

If the company index was COMPANY_SELF it will be resolved to the index of your company. If the company with the given index does not exist it will return COMPANY_INVALID.

Parameters

  company | The company index to resolve.

Returns
  The resolved company index.

## ◆ SetAutoRenewMoney()

static bool GSCompany::SetAutoRenewMoney | ( | Money | money | ) |
| static

Set the minimum money needed to autorenew an engine for your company.

Parameters

  money | The new minimum required money for autorenew to work.

Precondition
  GSCompanyMode::IsValid().

Returns
  True if autorenew money has been modified.

Precondition
  money >= 0
  money < 2**32

## ◆ SetAutoRenewMonths()

static bool GSCompany::SetAutoRenewMonths | ( | SQInteger | months | ) |
| static

Set the number of months before/after max age to autorenew an engine for your company.

Parameters

  months | The new months between autorenew. The value will be clamped to MIN(int16_t) .. MAX(int16_t).

Precondition
  GSCompanyMode::IsValid().

Returns
  True if autorenew months has been modified.

## ◆ SetAutoRenewStatus()

static bool GSCompany::SetAutoRenewStatus | ( | bool | autorenew | ) |
| static

Set whether autorenew is enabled for your company.

Parameters

  autorenew | The new autorenew status.

Precondition
  GSCompanyMode::IsValid().

Returns
  True if autorenew status has been modified.

## ◆ SetLoanAmount()

static bool GSCompany::SetLoanAmount | ( | Money | loan | ) |
| static

Sets the amount to loan.

Parameters

  loan | The amount to loan (multiplier of GetLoanInterval()).

Precondition
  'loan' must be non-negative.
  GetLoanInterval() must be a multiplier of 'loan'.
  'loan' must be below GetMaxLoanAmount().
  'loan' - GetLoanAmount() + GetBankBalance() must be non-negative.
  GSCompanyMode::IsValid().

Returns
  True if the loan could be set to your requested amount.

## ◆ SetMaxLoanAmountForCompany()

static bool GSCompany::SetMaxLoanAmountForCompany | ( | CompanyID | company,
|  | Money | amount
| ) |  |
| static

Sets the max amount of money company can loan.

Parameters

  company | The company ID.
  amount | Max loan amount. Will be rounded down to a multiple of GetLoanInterval().

Returns
  True, if the max loan was changed.

Precondition
  GSCompanyMode::IsDeity().
  amount >= 0.
  ResolveCompanyID(company) != COMPANY_INVALID.

Note
  You need to create your own news message to inform about max loan change.
  Max loan value set with this method is not affected by inflation.

## ◆ SetMinimumLoanAmount()

static bool GSCompany::SetMinimumLoanAmount | ( | Money | loan | ) |
| static

Sets the minimum amount to loan, i.e.

the given amount of loan rounded up.

Parameters

  loan | The amount to loan (any positive number).

Precondition
  'loan' must be non-negative.
  'loan' must be below GetMaxLoanAmount().
  GSCompanyMode::IsValid().

Returns
  True if we could allocate a minimum of 'loan' loan.

## ◆ SetName()

static bool GSCompany::SetName | ( | Text * | name | ) |
| static

Set the name of your company.

Parameters

  name | The new name of the company (can be either a raw string, or a GSText object).

Precondition
  name != null && len(name) != 0.
  GSCompanyMode::IsValid().

Exceptions

  GSError::ERR_NAME_IS_NOT_UNIQUE |

Returns
  True if the name was changed.

## ◆ SetPresidentGender()

static bool GSCompany::SetPresidentGender | ( | Gender | gender | ) |
| static

Set the gender of the president of your company.

Parameters

  gender | The new gender for your president.

Precondition
  GetPresidentGender(GSCompany.COMPANY_SELF) != gender.
  GSCompanyMode::IsValid().

Returns
  True if the gender was changed.

Note
  When successful a random face will be created.

## ◆ SetPresidentName()

static bool GSCompany::SetPresidentName | ( | Text * | name | ) |
| static

Set the name of your president.

Parameters

  name | The new name of the president (can be either a raw string, or a GSText object).

Precondition
  name != null && len(name) != 0.
  GSCompanyMode::IsValid().

Exceptions

  GSError::ERR_NAME_IS_NOT_UNIQUE |

Returns
  True if the name was changed.

## ◆ SetPrimaryLiveryColour()

static bool GSCompany::SetPrimaryLiveryColour | ( | LiveryScheme | scheme,
|  | Colours | colour
| ) |  |
| static

Set primary colour for your company.

Parameters

  scheme | Livery scheme to set.
  colour | Colour to set.

Precondition
  GSCompanyMode::IsValid().

Returns
  False if unable to set primary colour of the livery scheme (e.g. colour in use).

## ◆ SetSecondaryLiveryColour()

static bool GSCompany::SetSecondaryLiveryColour | ( | LiveryScheme | scheme,
|  | Colours | colour
| ) |  |
| static

Set secondary colour for your company.

Parameters

  scheme | Livery scheme to set.
  colour | Colour to set.

Precondition
  GSCompanyMode::IsValid().

Returns
  False if unable to set secondary colour of the livery scheme.