From 7c083768614bfc2f48e6422fec2d0cd8912bbcb0 Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Tue, 18 Jul 2023 22:50:27 +0100 Subject: [PATCH] Do not allow mixing road/tram types in powered road type list (property 0F) --- src/newgrf.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/newgrf.cpp b/src/newgrf.cpp index 849f3d27b8..f3188dcd15 100644 --- a/src/newgrf.cpp +++ b/src/newgrf.cpp @@ -4761,7 +4761,13 @@ static ChangeInfoResult RoadTypeChangeInfo(uint id, int numinfo, int prop, const RoadType resolved_rt = GetRoadTypeByLabel(BSWAP32(label), false); if (resolved_rt != INVALID_ROADTYPE) { switch (prop) { - case 0x0F: SetBit(rti->powered_roadtypes, resolved_rt); break; + case 0x0F: + if (GetRoadTramType(resolved_rt) == rtt) { + SetBit(rti->powered_roadtypes, resolved_rt); + } else { + grfmsg(1, "RoadTypeChangeInfo: Powered road type list: Road type %u road/tram type does not match road type %u, ignoring", resolved_rt, rt); + } + break; case 0x18: SetBit(rti->introduction_required_roadtypes, resolved_rt); break; case 0x19: SetBit(rti->introduces_roadtypes, resolved_rt); break; }