Skip to content

Commit

Permalink
Fix: game scripts must not build with non-existing road types
Browse files Browse the repository at this point in the history
  • Loading branch information
rubidium42 committed Mar 5, 2023
1 parent 01ebfad commit 30ae072
Showing 1 changed file with 9 additions and 1 deletion.
10 changes: 9 additions & 1 deletion src/road.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,15 @@ RoadBits CleanUpRoadBits(const TileIndex tile, RoadBits org_rb)
bool HasRoadTypeAvail(const CompanyID company, RoadType roadtype)
{
if (company == OWNER_DEITY || company == OWNER_TOWN || _game_mode == GM_EDITOR || _generating_world) {
return true; // TODO: should there be a proper check?
const RoadTypeInfo *rti = GetRoadTypeInfo(roadtype);
if (rti->label == 0) return false;

/*
* Do not allow building hidden road types, except when a town may build it.
* The GS under deity mode, as well as anybody in the editor builds roads that are
* owned by towns. So if a town may build it, it should be buildable by them too.
*/
return (rti->flags & ROTFB_HIDDEN) == 0 || (rti->flags & ROTFB_TOWN_BUILD) != 0;
} else {
const Company *c = Company::GetIfValid(company);
if (c == nullptr) return false;
Expand Down

0 comments on commit 30ae072

Please sign in to comment.