OpenTTD AI API  20240420-master-g08140fdca3
Public Types | Static Public Member Functions | Static Public Attributes
AIVehicle Class Reference

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

Inheritance diagram for AIVehicle:

Public Types

enum  ErrorMessages {
  ERR_VEHICLE_BASE,
  ERR_VEHICLE_TOO_MANY,
  ERR_VEHICLE_NOT_AVAILABLE,
  ERR_VEHICLE_BUILD_DISABLED,
  ERR_VEHICLE_WRONG_DEPOT,
  ERR_VEHICLE_CANNOT_SEND_TO_DEPOT,
  ERR_VEHICLE_CANNOT_START_STOP,
  ERR_VEHICLE_CANNOT_TURN,
  ERR_VEHICLE_CANNOT_REFIT,
  ERR_VEHICLE_IS_DESTROYED,
  ERR_VEHICLE_NOT_IN_DEPOT,
  ERR_VEHICLE_IN_FLIGHT,
  ERR_VEHICLE_NO_POWER,
  ERR_VEHICLE_TOO_LONG
}
 All vehicle related error messages. More...
 
enum  VehicleType {
  VT_RAIL,
  VT_ROAD,
  VT_WATER,
  VT_AIR,
  VT_INVALID
}
 The type of a vehicle available in the game. More...
 
enum  VehicleState {
  VS_RUNNING,
  VS_STOPPED,
  VS_IN_DEPOT,
  VS_AT_STATION,
  VS_BROKEN,
  VS_CRASHED,
  VS_INVALID
}
 The different states a vehicle can be in. More...
 

Static Public Member Functions

static bool IsValidVehicle (VehicleID vehicle_id)
 Checks whether the given vehicle is valid and owned by you. More...
 
static bool IsPrimaryVehicle (VehicleID vehicle_id)
 Checks whether this is a primary vehicle. More...
 
static SQInteger GetNumWagons (VehicleID vehicle_id)
 Get the number of wagons a vehicle has. More...
 
static bool SetName (VehicleID vehicle_id, Text *name)
 Set the name of a vehicle. More...
 
static std::optional< std::string > GetName (VehicleID vehicle_id)
 Get the name of a vehicle. More...
 
static TileIndex GetLocation (VehicleID vehicle_id)
 Get the current location of a vehicle. More...
 
static EngineID GetEngineType (VehicleID vehicle_id)
 Get the engine-type of a vehicle. More...
 
static EngineID GetWagonEngineType (VehicleID vehicle_id, SQInteger wagon)
 Get the engine-type of a wagon. More...
 
static SQInteger GetUnitNumber (VehicleID vehicle_id)
 Get the unitnumber of a vehicle. More...
 
static SQInteger GetAge (VehicleID vehicle_id)
 Get the current age of a vehicle. More...
 
static SQInteger GetWagonAge (VehicleID vehicle_id, SQInteger wagon)
 Get the current age of a second (or third, etc.) engine in a train vehicle. More...
 
static SQInteger GetMaxAge (VehicleID vehicle_id)
 Get the maximum age of a vehicle. More...
 
static SQInteger GetAgeLeft (VehicleID vehicle_id)
 Get the age a vehicle has left (maximum - current). More...
 
static SQInteger GetCurrentSpeed (VehicleID vehicle_id)
 Get the current speed of a vehicle. More...
 
static VehicleState GetState (VehicleID vehicle_id)
 Get the current state of a vehicle. More...
 
static Money GetRunningCost (VehicleID vehicle_id)
 Get the running cost of this vehicle. More...
 
static Money GetProfitThisYear (VehicleID vehicle_id)
 Get the current profit of a vehicle. More...
 
static Money GetProfitLastYear (VehicleID vehicle_id)
 Get the profit of last year of a vehicle. More...
 
static Money GetCurrentValue (VehicleID vehicle_id)
 Get the current value of a vehicle. More...
 
static AIVehicle::VehicleType GetVehicleType (VehicleID vehicle_id)
 Get the type of vehicle. More...
 
static AIRoad::RoadType GetRoadType (VehicleID vehicle_id)
 Get the RoadType of the vehicle. More...
 
static bool IsInDepot (VehicleID vehicle_id)
 Check if a vehicle is in a depot. More...
 
static bool IsStoppedInDepot (VehicleID vehicle_id)
 Check if a vehicle is in a depot and stopped. More...
 
static VehicleID BuildVehicle (TileIndex depot, EngineID engine_id)
 Builds a vehicle with the given engine at the given depot. More...
 
static VehicleID BuildVehicleWithRefit (TileIndex depot, EngineID engine_id, CargoID cargo)
 Builds a vehicle with the given engine at the given depot and refits it to the given cargo. More...
 
static SQInteger GetBuildWithRefitCapacity (TileIndex depot, EngineID engine_id, CargoID cargo)
 Gets the capacity of a vehicle built at the given depot with the given engine and refitted to the given cargo. More...
 
static VehicleID CloneVehicle (TileIndex depot, VehicleID vehicle_id, bool share_orders)
 Clones a vehicle at the given depot, copying or cloning its orders. More...
 
static bool MoveWagon (VehicleID source_vehicle_id, SQInteger source_wagon, SQInteger dest_vehicle_id, SQInteger dest_wagon)
 Move a wagon after another wagon. More...
 
static bool MoveWagonChain (VehicleID source_vehicle_id, SQInteger source_wagon, SQInteger dest_vehicle_id, SQInteger dest_wagon)
 Move a chain of wagons after another wagon. More...
 
static SQInteger GetRefitCapacity (VehicleID vehicle_id, CargoID cargo)
 Gets the capacity of the given vehicle when refitted to the given cargo type. More...
 
static bool RefitVehicle (VehicleID vehicle_id, CargoID cargo)
 Refits a vehicle to the given cargo type. More...
 
static bool SellVehicle (VehicleID vehicle_id)
 Sells the given vehicle. More...
 
static bool SellWagon (VehicleID vehicle_id, SQInteger wagon)
 Sells the given wagon from the vehicle. More...
 
static bool SellWagonChain (VehicleID vehicle_id, SQInteger wagon)
 Sells all wagons from the vehicle starting from a given position. More...
 
static bool SendVehicleToDepot (VehicleID vehicle_id)
 Sends the given vehicle to a depot. More...
 
static bool SendVehicleToDepotForServicing (VehicleID vehicle_id)
 Sends the given vehicle to a depot for servicing. More...
 
static bool StartStopVehicle (VehicleID vehicle_id)
 Starts or stops the given vehicle depending on the current state. More...
 
static bool ReverseVehicle (VehicleID vehicle_id)
 Turn the given vehicle so it'll drive the other way. More...
 
static SQInteger GetCapacity (VehicleID vehicle_id, CargoID cargo)
 Get the maximum amount of a specific cargo the given vehicle can transport. More...
 
static SQInteger GetLength (VehicleID vehicle_id)
 Get the length of a the total vehicle in 1/16's of a tile. More...
 
static SQInteger GetCargoLoad (VehicleID vehicle_id, CargoID cargo)
 Get the amount of a specific cargo the given vehicle is transporting. More...
 
static GroupID GetGroupID (VehicleID vehicle_id)
 Get the group of a given vehicle. More...
 
static bool IsArticulated (VehicleID vehicle_id)
 Check if the vehicle is articulated. More...
 
static bool HasSharedOrders (VehicleID vehicle_id)
 Check if the vehicle has shared orders. More...
 
static SQInteger GetReliability (VehicleID vehicle_id)
 Get the current reliability of a vehicle. More...
 
static SQInteger GetMaximumOrderDistance (VehicleID vehicle_id)
 Get the maximum allowed distance between two orders for a vehicle. More...
 

Static Public Attributes

static const VehicleID VEHICLE_INVALID = 0xFFFFF
 Invalid VehicleID.
 

Detailed Description

Class that handles all vehicle related functions.

Member Enumeration Documentation

◆ ErrorMessages

All vehicle related error messages.

Enumerator
ERR_VEHICLE_BASE 

Base for vehicle related errors.

ERR_VEHICLE_TOO_MANY 

Too many vehicles in the game, can't build any more.

ERR_VEHICLE_NOT_AVAILABLE 

Vehicle is not available.

ERR_VEHICLE_BUILD_DISABLED 

Vehicle can't be build due to game settigns.

ERR_VEHICLE_WRONG_DEPOT 

Vehicle can't be build in the selected depot.

ERR_VEHICLE_CANNOT_SEND_TO_DEPOT 

Vehicle can't return to the depot.

ERR_VEHICLE_CANNOT_START_STOP 

Vehicle can't start / stop.

ERR_VEHICLE_CANNOT_TURN 

Vehicle can't turn.

ERR_VEHICLE_CANNOT_REFIT 

Vehicle can't be refit.

ERR_VEHICLE_IS_DESTROYED 

Vehicle is destroyed.

ERR_VEHICLE_NOT_IN_DEPOT 

Vehicle is not in a depot.

ERR_VEHICLE_IN_FLIGHT 

Vehicle is flying.

ERR_VEHICLE_NO_POWER 

Vehicle is without power.

ERR_VEHICLE_TOO_LONG 

Vehicle would get too long during construction.

◆ VehicleState

The different states a vehicle can be in.

Enumerator
VS_RUNNING 

The vehicle is currently running.

VS_STOPPED 

The vehicle is stopped manually.

VS_IN_DEPOT 

The vehicle is stopped in the depot.

VS_AT_STATION 

The vehicle is stopped at a station and is currently loading or unloading.

VS_BROKEN 

The vehicle has broken down and will start running again in a while.

VS_CRASHED 

The vehicle is crashed (and will never run again).

VS_INVALID 

An invalid vehicle state.

◆ VehicleType

The type of a vehicle available in the game.

Trams for example are road vehicles, as maglev is a rail vehicle.

Enumerator
VT_RAIL 

Rail type vehicle.

VT_ROAD 

Road type vehicle (bus / truck).

VT_WATER 

Water type vehicle.

VT_AIR 

Air type vehicle.

VT_INVALID 

Invalid vehicle type.

Member Function Documentation

◆ BuildVehicle()

static VehicleID AIVehicle::BuildVehicle ( TileIndex  depot,
EngineID  engine_id 
)
static

Builds a vehicle with the given engine at the given depot.

Parameters
depotThe depot where the vehicle will be build.
engine_idThe engine to use for this vehicle.
Precondition
The tile at depot has a depot that can build the engine and is owned by you.
AIEngine::IsBuildable(engine_id).
Exceptions
AIVehicle::ERR_VEHICLE_TOO_MANY
AIVehicle::ERR_VEHICLE_BUILD_DISABLED
AIVehicle::ERR_VEHICLE_WRONG_DEPOT
Returns
The VehicleID of the new vehicle, or an invalid VehicleID when it failed. Check the return value using IsValidVehicle. In test-mode 0 is returned if it was successful; any other value indicates failure.
Note
Unlike the GUI, wagons are not automatically attached to trains, only to existing free wagons. This means that BuildVehicle can sometimes return an ID indicating success, but IsValidVehicle check will fail. You should use MoveWagon to attach free wagons to trains.
In Test Mode it means you can't assign orders yet to this vehicle, as the vehicle isn't really built yet. Build it for real first before assigning orders.

◆ BuildVehicleWithRefit()

static VehicleID AIVehicle::BuildVehicleWithRefit ( TileIndex  depot,
EngineID  engine_id,
CargoID  cargo 
)
static

Builds a vehicle with the given engine at the given depot and refits it to the given cargo.

Parameters
depotThe depot where the vehicle will be build.
engine_idThe engine to use for this vehicle.
cargoThe cargo to refit to.
Precondition
The tile at depot has a depot that can build the engine and is owned by you.
AIEngine::IsBuildable(engine_id).
AICargo::IsValidCargo(cargo).
Exceptions
AIVehicle::ERR_VEHICLE_TOO_MANY
AIVehicle::ERR_VEHICLE_BUILD_DISABLED
AIVehicle::ERR_VEHICLE_WRONG_DEPOT
Returns
The VehicleID of the new vehicle, or an invalid VehicleID when it failed. Check the return value using IsValidVehicle. In test-mode 0 is returned if it was successful; any other value indicates failure.
Note
In Test Mode it means you can't assign orders yet to this vehicle, as the vehicle isn't really built yet. Build it for real first before assigning orders.

◆ CloneVehicle()

static VehicleID AIVehicle::CloneVehicle ( TileIndex  depot,
VehicleID  vehicle_id,
bool  share_orders 
)
static

Clones a vehicle at the given depot, copying or cloning its orders.

Parameters
depotThe depot where the vehicle will be build.
vehicle_idThe vehicle to use as example for the new vehicle.
share_ordersShould the orders be copied or shared?
Precondition
The tile 'depot' has a depot on it, allowing 'vehicle_id'-type vehicles.
IsPrimaryVehicle(vehicle_id).
Exceptions
AIVehicle::ERR_VEHICLE_TOO_MANY
AIVehicle::ERR_VEHICLE_BUILD_DISABLED
AIVehicle::ERR_VEHICLE_WRONG_DEPOT
Returns
The VehicleID of the new vehicle, or an invalid VehicleID when it failed. Check the return value using IsValidVehicle. In test-mode 0 is returned if it was successful; any other value indicates failure.

◆ GetAge()

static SQInteger AIVehicle::GetAge ( VehicleID  vehicle_id)
static

Get the current age of a vehicle.

Parameters
vehicle_idThe vehicle to get the age of.
Precondition
IsValidVehicle(vehicle_id).
Returns
The current age the vehicle has.
Note
The age is in days.

◆ GetAgeLeft()

static SQInteger AIVehicle::GetAgeLeft ( VehicleID  vehicle_id)
static

Get the age a vehicle has left (maximum - current).

Parameters
vehicle_idThe vehicle to get the age of.
Precondition
IsPrimaryVehicle(vehicle_id).
Returns
The age the vehicle has left.
Note
The age is in days.

◆ GetBuildWithRefitCapacity()

static SQInteger AIVehicle::GetBuildWithRefitCapacity ( TileIndex  depot,
EngineID  engine_id,
CargoID  cargo 
)
static

Gets the capacity of a vehicle built at the given depot with the given engine and refitted to the given cargo.

Parameters
depotThe depot where the vehicle will be build.
engine_idThe engine to use for this vehicle.
cargoThe cargo to refit to.
Precondition
The tile at depot has a depot that can build the engine and is owned by you.
AIEngine::IsBuildable(engine_id).
AICargo::IsValidCargo(cargo).
Returns
The capacity the vehicle will have when refited.

◆ GetCapacity()

static SQInteger AIVehicle::GetCapacity ( VehicleID  vehicle_id,
CargoID  cargo 
)
static

Get the maximum amount of a specific cargo the given vehicle can transport.

Parameters
vehicle_idThe vehicle to get the capacity of.
cargoThe cargo to get the capacity for.
Precondition
IsValidVehicle(vehicle_id).
AICargo::IsValidCargo(cargo).
Returns
The maximum amount of the given cargo the vehicle can transport.

◆ GetCargoLoad()

static SQInteger AIVehicle::GetCargoLoad ( VehicleID  vehicle_id,
CargoID  cargo 
)
static

Get the amount of a specific cargo the given vehicle is transporting.

Parameters
vehicle_idThe vehicle to get the load amount of.
cargoThe cargo to get the loaded amount for.
Precondition
IsValidVehicle(vehicle_id).
AICargo::IsValidCargo(cargo).
Returns
The amount of the given cargo the vehicle is currently transporting.

◆ GetCurrentSpeed()

static SQInteger AIVehicle::GetCurrentSpeed ( VehicleID  vehicle_id)
static

Get the current speed of a vehicle.

Parameters
vehicle_idThe vehicle to get the speed of.
Precondition
IsPrimaryVehicle(vehicle_id).
Returns
The current speed of the vehicle.
Note
The speed is in OpenTTD's internal speed unit. This is mph / 1.6, which is roughly km/h. To get km/h multiply this number by 1.00584.

◆ GetCurrentValue()

static Money AIVehicle::GetCurrentValue ( VehicleID  vehicle_id)
static

Get the current value of a vehicle.

Parameters
vehicle_idThe vehicle to get the value of.
Precondition
IsValidVehicle(vehicle_id).
Returns
The value the vehicle currently has (the amount you should get when you would sell the vehicle right now).

◆ GetEngineType()

static EngineID AIVehicle::GetEngineType ( VehicleID  vehicle_id)
static

Get the engine-type of a vehicle.

Parameters
vehicle_idThe vehicle to get the engine-type of.
Precondition
IsValidVehicle(vehicle_id).
Returns
The engine type the vehicle has.

◆ GetGroupID()

static GroupID AIVehicle::GetGroupID ( VehicleID  vehicle_id)
static

Get the group of a given vehicle.

Parameters
vehicle_idThe vehicle to get the group from.
Precondition
IsPrimaryVehicle(vehicle_id).
Returns
The group of the given vehicle.

◆ GetLength()

static SQInteger AIVehicle::GetLength ( VehicleID  vehicle_id)
static

Get the length of a the total vehicle in 1/16's of a tile.

Parameters
vehicle_idThe vehicle to get the length of.
Precondition
IsValidVehicle(vehicle_id).
GetVehicleType(vehicle_id) == VT_ROAD || GetVehicleType(vehicle_id) == VT_RAIL.
Returns
The length of the engine.

◆ GetLocation()

static TileIndex AIVehicle::GetLocation ( VehicleID  vehicle_id)
static

Get the current location of a vehicle.

Parameters
vehicle_idThe vehicle to get the location of.
Precondition
IsValidVehicle(vehicle_id).
Returns
The tile the vehicle is currently on.

◆ GetMaxAge()

static SQInteger AIVehicle::GetMaxAge ( VehicleID  vehicle_id)
static

Get the maximum age of a vehicle.

Parameters
vehicle_idThe vehicle to get the age of.
Precondition
IsPrimaryVehicle(vehicle_id).
Returns
The maximum age the vehicle has.
Note
The age is in days.

◆ GetMaximumOrderDistance()

static SQInteger AIVehicle::GetMaximumOrderDistance ( VehicleID  vehicle_id)
static

Get the maximum allowed distance between two orders for a vehicle.

The distance returned is a vehicle-type specific distance independent from other map distances, you may use the result of this function to compare it with the result of AIOrder::GetOrderDistance.

Parameters
vehicle_idThe vehicle to get the distance for.
Precondition
IsPrimaryVehicle(vehicle_id).
Returns
The maximum distance between two orders for this vehicle or 0 if the distance is unlimited.
Note
The unit of the order distances is unspecified and should not be compared with map distances
See also
AIOrder::GetOrderDistance

◆ GetName()

static std::optional<std::string> AIVehicle::GetName ( VehicleID  vehicle_id)
static

Get the name of a vehicle.

Parameters
vehicle_idThe vehicle to get the name of.
Precondition
IsPrimaryVehicle(vehicle_id).
Returns
The name the vehicle has.

◆ GetNumWagons()

static SQInteger AIVehicle::GetNumWagons ( VehicleID  vehicle_id)
static

Get the number of wagons a vehicle has.

Parameters
vehicle_idThe vehicle to get the number of wagons from.
Precondition
IsValidVehicle(vehicle_id).
Returns
The number of wagons the vehicle has.

◆ GetProfitLastYear()

static Money AIVehicle::GetProfitLastYear ( VehicleID  vehicle_id)
static

Get the profit of last year of a vehicle.

Parameters
vehicle_idThe vehicle to get the profit of.
Precondition
IsPrimaryVehicle(vehicle_id).
Returns
The profit the vehicle had last year.

◆ GetProfitThisYear()

static Money AIVehicle::GetProfitThisYear ( VehicleID  vehicle_id)
static

Get the current profit of a vehicle.

Parameters
vehicle_idThe vehicle to get the profit of.
Precondition
IsPrimaryVehicle(vehicle_id).
Returns
The current profit the vehicle has.

◆ GetRefitCapacity()

static SQInteger AIVehicle::GetRefitCapacity ( VehicleID  vehicle_id,
CargoID  cargo 
)
static

Gets the capacity of the given vehicle when refitted to the given cargo type.

Parameters
vehicle_idThe vehicle to refit.
cargoThe cargo to refit to.
Precondition
IsValidVehicle(vehicle_id).
AICargo::IsValidCargo(cargo).
You must own the vehicle.
The vehicle must be stopped in the depot.
Returns
The capacity the vehicle will have when refited.

◆ GetReliability()

static SQInteger AIVehicle::GetReliability ( VehicleID  vehicle_id)
static

Get the current reliability of a vehicle.

Parameters
vehicle_idThe vehicle to check.
Precondition
IsPrimaryVehicle(vehicle_id).
Returns
The current reliability (0-100%).

◆ GetRoadType()

static AIRoad::RoadType AIVehicle::GetRoadType ( VehicleID  vehicle_id)
static

Get the RoadType of the vehicle.

Parameters
vehicle_idThe vehicle to get the RoadType of.
Precondition
IsValidVehicle(vehicle_id).
GetVehicleType(vehicle_id) == VT_ROAD.
Returns
The RoadType the vehicle has.

◆ GetRunningCost()

static Money AIVehicle::GetRunningCost ( VehicleID  vehicle_id)
static

Get the running cost of this vehicle.

Parameters
vehicle_idThe vehicle to get the running cost of.
Precondition
IsPrimaryVehicle(vehicle_id).
Returns
The running cost of the vehicle per year.
Note
Cost is per year; divide by 365 to get per day.
This is not equal to AIEngine::GetRunningCost for Trains, because wagons and second engines can add up in the calculation too.

◆ GetState()

static VehicleState AIVehicle::GetState ( VehicleID  vehicle_id)
static

Get the current state of a vehicle.

Parameters
vehicle_idThe vehicle to get the state of.
Precondition
IsValidVehicle(vehicle_id).
Returns
The current state of the vehicle.

◆ GetUnitNumber()

static SQInteger AIVehicle::GetUnitNumber ( VehicleID  vehicle_id)
static

Get the unitnumber of a vehicle.

Parameters
vehicle_idThe vehicle to get the unitnumber of.
Precondition
IsPrimaryVehicle(vehicle_id).
Returns
The unitnumber the vehicle has.

◆ GetVehicleType()

static AIVehicle::VehicleType AIVehicle::GetVehicleType ( VehicleID  vehicle_id)
static

Get the type of vehicle.

Parameters
vehicle_idThe vehicle to get the type of.
Precondition
IsValidVehicle(vehicle_id).
Returns
The vehicle type.

◆ GetWagonAge()

static SQInteger AIVehicle::GetWagonAge ( VehicleID  vehicle_id,
SQInteger  wagon 
)
static

Get the current age of a second (or third, etc.) engine in a train vehicle.

Parameters
vehicle_idThe vehicle to get the age of.
wagonThe wagon in the vehicle to get the age of.
Precondition
IsValidVehicle(vehicle_id).
wagon < GetNumWagons(vehicle_id).
Returns
The current age the vehicle has.
Note
The age is in days.

◆ GetWagonEngineType()

static EngineID AIVehicle::GetWagonEngineType ( VehicleID  vehicle_id,
SQInteger  wagon 
)
static

Get the engine-type of a wagon.

Parameters
vehicle_idThe vehicle to get the engine-type of.
wagonThe wagon in the vehicle to get the engine-type of.
Precondition
IsValidVehicle(vehicle_id).
wagon < GetNumWagons(vehicle_id).
Returns
The engine type the vehicle has.

◆ HasSharedOrders()

static bool AIVehicle::HasSharedOrders ( VehicleID  vehicle_id)
static

Check if the vehicle has shared orders.

Parameters
vehicle_idThe vehicle to check.
Precondition
IsPrimaryVehicle(vehicle_id).
Returns
True if the vehicle has shared orders.

◆ IsArticulated()

static bool AIVehicle::IsArticulated ( VehicleID  vehicle_id)
static

Check if the vehicle is articulated.

Parameters
vehicle_idThe vehicle to check.
Precondition
IsValidVehicle(vehicle_id).
GetVehicleType(vehicle_id) == VT_ROAD || GetVehicleType(vehicle_id) == VT_RAIL.
Returns
True if the vehicle is articulated.

◆ IsInDepot()

static bool AIVehicle::IsInDepot ( VehicleID  vehicle_id)
static

Check if a vehicle is in a depot.

Parameters
vehicle_idThe vehicle to check.
Precondition
IsValidVehicle(vehicle_id).
Returns
True if and only if the vehicle is in a depot.

◆ IsPrimaryVehicle()

static bool AIVehicle::IsPrimaryVehicle ( VehicleID  vehicle_id)
static

Checks whether this is a primary vehicle.

Parameters
vehicle_idThe vehicle to check.
Precondition
IsValidVehicle(vehicle_id).
Returns
True if the vehicle is a primary vehicle.
Note
Returns false when the leading part of the vehicle is a wagon.

◆ IsStoppedInDepot()

static bool AIVehicle::IsStoppedInDepot ( VehicleID  vehicle_id)
static

Check if a vehicle is in a depot and stopped.

Parameters
vehicle_idThe vehicle to check.
Precondition
IsValidVehicle(vehicle_id).
Returns
True if and only if the vehicle is in a depot and stopped.

◆ IsValidVehicle()

static bool AIVehicle::IsValidVehicle ( VehicleID  vehicle_id)
static

Checks whether the given vehicle is valid and owned by you.

Parameters
vehicle_idThe vehicle to check.
Returns
True if and only if the vehicle is valid.
Note
Also returns true when the leading part of the vehicle is a wagon. Use IsPrimaryVehicle() to check for a valid vehicle with a leading engine.

◆ MoveWagon()

static bool AIVehicle::MoveWagon ( VehicleID  source_vehicle_id,
SQInteger  source_wagon,
SQInteger  dest_vehicle_id,
SQInteger  dest_wagon 
)
static

Move a wagon after another wagon.

Parameters
source_vehicle_idThe vehicle to move a wagon away from.
source_wagonThe wagon in source_vehicle to move.
dest_vehicle_idThe vehicle to move the wagon to, or -1 to create a new vehicle.
dest_wagonThe wagon in dest_vehicle to place source_wagon after.
Precondition
IsValidVehicle(source_vehicle_id).
source_wagon < GetNumWagons(source_vehicle_id).
dest_vehicle_id == -1 || (IsValidVehicle(dest_vehicle_id) && dest_wagon < GetNumWagons(dest_vehicle_id)).
GetVehicleType(source_vehicle_id) == VT_RAIL.
dest_vehicle_id == -1 || GetVehicleType(dest_vehicle_id) == VT_RAIL.
Returns
Whether or not moving the wagon succeeded.

◆ MoveWagonChain()

static bool AIVehicle::MoveWagonChain ( VehicleID  source_vehicle_id,
SQInteger  source_wagon,
SQInteger  dest_vehicle_id,
SQInteger  dest_wagon 
)
static

Move a chain of wagons after another wagon.

Parameters
source_vehicle_idThe vehicle to move a wagon away from.
source_wagonThe first wagon in source_vehicle to move.
dest_vehicle_idThe vehicle to move the wagons to, or -1 to create a new vehicle.
dest_wagonThe wagon in dest_vehicle to place source_wagon and following wagons after.
Precondition
IsValidVehicle(source_vehicle_id).
source_wagon < GetNumWagons(source_vehicle_id).
dest_vehicle_id == -1 || (IsValidVehicle(dest_vehicle_id) && dest_wagon < GetNumWagons(dest_vehicle_id)).
GetVehicleType(source_vehicle_id) == VT_RAIL.
dest_vehicle_id == -1 || GetVehicleType(dest_vehicle_id) == VT_RAIL.
Returns
Whether or not moving the wagons succeeded.

◆ RefitVehicle()

static bool AIVehicle::RefitVehicle ( VehicleID  vehicle_id,
CargoID  cargo 
)
static

Refits a vehicle to the given cargo type.

Parameters
vehicle_idThe vehicle to refit.
cargoThe cargo to refit to.
Precondition
IsValidVehicle(vehicle_id).
AICargo::IsValidCargo(cargo).
You must own the vehicle.
The vehicle must be stopped in the depot.
Exceptions
AIVehicle::ERR_VEHICLE_CANNOT_REFIT
AIVehicle::ERR_VEHICLE_IS_DESTROYED
AIVehicle::ERR_VEHICLE_NOT_IN_DEPOT
Returns
True if and only if the refit succeeded.

◆ ReverseVehicle()

static bool AIVehicle::ReverseVehicle ( VehicleID  vehicle_id)
static

Turn the given vehicle so it'll drive the other way.

Parameters
vehicle_idThe vehicle to turn.
Precondition
IsPrimaryVehicle(vehicle_id).
GetVehicleType(vehicle_id) == VT_ROAD || GetVehicleType(vehicle_id) == VT_RAIL.
Returns
True if and only if the vehicle has started to turn.
Note
Vehicles cannot always be reversed. For example busses and trucks need to be running and not be inside a depot.

◆ SellVehicle()

static bool AIVehicle::SellVehicle ( VehicleID  vehicle_id)
static

Sells the given vehicle.

Parameters
vehicle_idThe vehicle to sell.
Precondition
IsValidVehicle(vehicle_id).
You must own the vehicle.
The vehicle must be stopped in the depot.
Exceptions
AIVehicle::ERR_VEHICLE_IS_DESTROYED
AIVehicle::ERR_VEHICLE_NOT_IN_DEPOT
Returns
True if and only if the vehicle has been sold.

◆ SellWagon()

static bool AIVehicle::SellWagon ( VehicleID  vehicle_id,
SQInteger  wagon 
)
static

Sells the given wagon from the vehicle.

Parameters
vehicle_idThe vehicle to sell a wagon from.
wagonThe wagon to sell.
Precondition
IsValidVehicle(vehicle_id).
wagon < GetNumWagons(vehicle_id).
You must own the vehicle.
The vehicle must be stopped in the depot.
Exceptions
AIVehicle::ERR_VEHICLE_IS_DESTROYED
AIVehicle::ERR_VEHICLE_NOT_IN_DEPOT
Returns
True if and only if the wagon has been sold.

◆ SellWagonChain()

static bool AIVehicle::SellWagonChain ( VehicleID  vehicle_id,
SQInteger  wagon 
)
static

Sells all wagons from the vehicle starting from a given position.

Parameters
vehicle_idThe vehicle to sell a wagon from.
wagonThe wagon to sell.
Precondition
IsValidVehicle(vehicle_id).
wagon < GetNumWagons(vehicle_id).
You must own the vehicle.
The vehicle must be stopped in the depot.
Exceptions
AIVehicle::ERR_VEHICLE_IS_DESTROYED
AIVehicle::ERR_VEHICLE_NOT_IN_DEPOT
Returns
True if and only if the wagons have been sold.

◆ SendVehicleToDepot()

static bool AIVehicle::SendVehicleToDepot ( VehicleID  vehicle_id)
static

Sends the given vehicle to a depot.

If the vehicle has already been sent to a depot it continues with its normal orders instead.

Parameters
vehicle_idThe vehicle to send to a depot.
Precondition
IsPrimaryVehicle(vehicle_id).
Exceptions
AIVehicle::ERR_VEHICLE_CANNOT_SEND_TO_DEPOT
Returns
True if the current order was changed.

◆ SendVehicleToDepotForServicing()

static bool AIVehicle::SendVehicleToDepotForServicing ( VehicleID  vehicle_id)
static

Sends the given vehicle to a depot for servicing.

If the vehicle has already been sent to a depot it continues with its normal orders instead.

Parameters
vehicle_idThe vehicle to send to a depot for servicing.
Precondition
IsPrimaryVehicle(vehicle_id).
Exceptions
AIVehicle::ERR_VEHICLE_CANNOT_SEND_TO_DEPOT
Returns
True if the current order was changed.

◆ SetName()

static bool AIVehicle::SetName ( VehicleID  vehicle_id,
Text *  name 
)
static

Set the name of a vehicle.

Parameters
vehicle_idThe vehicle to set the name for.
nameThe name for the vehicle (can be either a raw string, or a AIText object).
Precondition
IsPrimaryVehicle(vehicle_id).
name != null && len(name) != 0.
Exceptions
AIError::ERR_NAME_IS_NOT_UNIQUE
Returns
True if and only if the name was changed.

◆ StartStopVehicle()

static bool AIVehicle::StartStopVehicle ( VehicleID  vehicle_id)
static

Starts or stops the given vehicle depending on the current state.

Parameters
vehicle_idThe vehicle to start/stop.
Precondition
IsPrimaryVehicle(vehicle_id).
Exceptions
AIVehicle::ERR_VEHICLE_CANNOT_START_STOP
(Foraircraft only): AIVehicle::ERR_VEHICLE_IN_FLIGHT
(Fortrains only): AIVehicle::ERR_VEHICLE_NO_POWER
Returns
True if and only if the vehicle has been started or stopped.