diff --git a/src/script/api/game_changelog.hpp b/src/script/api/game_changelog.hpp index 59ad146d29..cadd51a9ab 100644 --- a/src/script/api/game_changelog.hpp +++ b/src/script/api/game_changelog.hpp @@ -21,6 +21,7 @@ * \li GSEventVehicleCrashed::GetVictims * \li GSEventCompanyRenamed * \li GSEventPresidentRenamed + * \li GSWaypoint::GetOwner * * Other changes: * \li GSBridge::GetBridgeID renamed to GSBridge::GetBridgeType diff --git a/src/script/api/script_waypoint.cpp b/src/script/api/script_waypoint.cpp index 84c2a4aeb6..3edde00b36 100644 --- a/src/script/api/script_waypoint.cpp +++ b/src/script/api/script_waypoint.cpp @@ -22,6 +22,13 @@ return wp != nullptr && (wp->owner == ScriptObject::GetCompany() || ScriptCompanyMode::IsDeity() || wp->owner == OWNER_NONE); } +/* static */ ScriptCompany::CompanyID ScriptWaypoint::GetOwner(StationID waypoint_id) +{ + if (!IsValidWaypoint(waypoint_id)) return ScriptCompany::COMPANY_INVALID; + + return static_cast((int)::Waypoint::Get(waypoint_id)->owner); +} + /* static */ StationID ScriptWaypoint::GetWaypointID(TileIndex tile) { if (!ScriptRail::IsRailWaypointTile(tile) && !ScriptMarine::IsBuoyTile(tile)) return STATION_INVALID; diff --git a/src/script/api/script_waypoint.hpp b/src/script/api/script_waypoint.hpp index 62f9e6c875..f5aabae324 100644 --- a/src/script/api/script_waypoint.hpp +++ b/src/script/api/script_waypoint.hpp @@ -11,6 +11,7 @@ #define SCRIPT_WAYPOINT_HPP #include "script_basestation.hpp" +#include "script_company.hpp" #include "script_error.hpp" #include "../../station_type.h" @@ -53,6 +54,15 @@ public: */ static bool IsValidWaypoint(StationID waypoint_id); + /** + * Get the owner of a waypoint. + * @param waypoint_id The waypoint to get the owner of. + * @pre IsValidWaypoint(waypoint_id). + * @return The owner the waypoint has. + * @api -ai + */ + static ScriptCompany::CompanyID GetOwner(StationID waypoint_id); + /** * Get the StationID of a tile. * @param tile The tile to find the StationID of.