diff --git a/src/script/api/ai_changelog.hpp b/src/script/api/ai_changelog.hpp index f76a586f07..bcab832544 100644 --- a/src/script/api/ai_changelog.hpp +++ b/src/script/api/ai_changelog.hpp @@ -28,6 +28,7 @@ * \li AICargo::CC_POTABLE * \li AICargo::CC_NON_POTABLE * \li AIVehicleList_Waypoint + * \li AIBaseStation::GetBaseStationID * * Other changes: * \li AIBridge::GetBridgeID renamed to AIBridge::GetBridgeType diff --git a/src/script/api/game_changelog.hpp b/src/script/api/game_changelog.hpp index 7bb7203d20..459928838c 100644 --- a/src/script/api/game_changelog.hpp +++ b/src/script/api/game_changelog.hpp @@ -29,6 +29,7 @@ * \li GSCargo::CC_NON_POTABLE * \li GSVehicleList_Waypoint * \li GSBaseStation::GetOwner + * \li GSBaseStation::GetBaseStationID * * Other changes: * \li GSBridge::GetBridgeID renamed to GSBridge::GetBridgeType diff --git a/src/script/api/script_basestation.cpp b/src/script/api/script_basestation.cpp index e7bea4ec29..5c133fcd57 100644 --- a/src/script/api/script_basestation.cpp +++ b/src/script/api/script_basestation.cpp @@ -34,6 +34,12 @@ return ScriptCompany::ToScriptCompanyID(::BaseStation::Get(station_id)->owner); } +/* static */ StationID ScriptBaseStation::GetBaseStationID(TileIndex tile) +{ + if (!::IsValidTile(tile) || !::IsTileType(tile, MP_STATION) || ::BaseStation::GetByTile(tile) == nullptr) return StationID::Invalid(); + return ::GetStationIndex(tile); +} + /* static */ std::optional ScriptBaseStation::GetName(StationID station_id) { if (!IsValidBaseStation(station_id)) return std::nullopt; diff --git a/src/script/api/script_basestation.hpp b/src/script/api/script_basestation.hpp index 646bec13ab..5fe8a02666 100644 --- a/src/script/api/script_basestation.hpp +++ b/src/script/api/script_basestation.hpp @@ -42,6 +42,15 @@ public: */ static ScriptCompany::CompanyID GetOwner(StationID station_id); + /** + * Get the StationID of a tile, if there is a basestation. + * @param tile The tile to find the StationID of. + * @pre IsValidTile(tile). + * @return StationID of the basestation. + * @post Use IsValidBaseStation() to see if the basestation is valid. + */ + static StationID GetBaseStationID(TileIndex tile); + /** * Get the name of a basestation. * @param station_id The basestation to get the name of.