# HG changeset patch # User SamuXarick <43006711+SamuXarick@users.noreply.github.com> # Date 2024-02-11 21:09:23 # Node ID a3e474bd6627f1bd9fdedab8bda6ef1ee7885586 # Parent b9cd8ad9a210f835ff88a9740b4197280f61996d Fix #10405, a3dd750: [Script] Test engine and vehicle type validity for ScriptGroup::GetNumEngines (#11887) diff --git a/src/script/api/script_group.cpp b/src/script/api/script_group.cpp --- a/src/script/api/script_group.cpp +++ b/src/script/api/script_group.cpp @@ -111,7 +111,10 @@ /* static */ SQInteger ScriptGroup::GetNumEngines(GroupID group_id, EngineID engine_id) { EnforceCompanyModeValid(-1); - if (!IsValidGroup(group_id) && group_id != GROUP_DEFAULT && group_id != GROUP_ALL) return -1; + if (!ScriptEngine::IsValidEngine(engine_id)) return -1; + bool valid_group = IsValidGroup(group_id); + if (!valid_group && group_id != GROUP_DEFAULT && group_id != GROUP_ALL) return -1; + if (valid_group && ScriptEngine::GetVehicleType(engine_id) != GetVehicleType(group_id)) return -1; return GetGroupNumEngines(ScriptObject::GetCompany(), group_id, engine_id); } diff --git a/src/script/api/script_group.hpp b/src/script/api/script_group.hpp --- a/src/script/api/script_group.hpp +++ b/src/script/api/script_group.hpp @@ -128,7 +128,9 @@ public: * Get the number of engines in a given group. * @param group_id The group to get the number of engines in. * @param engine_id The engine id to count. - * @pre IsValidGroup(group_id) || group_id == GROUP_ALL || group_id == GROUP_DEFAULT. + * @pre ScriptEngine::IsValidEngine(engine_id). + * @pre (IsValidGroup(group_id) && ScriptEngine::GetVehicleType(engine_id) == GetVehicleType(group_id)) || + group_id == GROUP_ALL || group_id == GROUP_DEFAULT. * @game @pre ScriptCompanyMode::IsValid(). * @return The number of engines with id engine_id in the group with id group_id. */