Index: src/articulated_vehicles.cpp =================================================================== --- src/articulated_vehicles.cpp (revision 13864) +++ src/articulated_vehicles.cpp (working copy) @@ -298,6 +298,8 @@ u->cargo_type = rvi_artic->cargo_type; u->cargo_cap = rvi_artic->capacity; + u->u.road.cached_override = GetWagonOverrideSpriteSet(u->engine_type, u->cargo_type, u->u.road.first_engine); + SetRoadVehArticPart(u); } break; } Index: src/roadveh_cmd.cpp =================================================================== --- src/roadveh_cmd.cpp (revision 13864) +++ src/roadveh_cmd.cpp (working copy) @@ -163,6 +163,8 @@ /* Update the length of the vehicle. */ u->u.road.cached_veh_length = GetRoadVehLength(u); + + u->u.road.cached_override = GetWagonOverrideSpriteSet(u->engine_type, u->cargo_type, u->u.road.first_engine); } } Index: src/newgrf_engine.cpp =================================================================== --- src/newgrf_engine.cpp (revision 13864) +++ src/newgrf_engine.cpp (working copy) @@ -859,6 +859,9 @@ * as v->cargo_type is temporary changed to the new type */ group = use_cache ? v->u.rail.cached_override : GetWagonOverrideSpriteSet(v->engine_type, v->cargo_type, v->u.rail.first_engine); if (group != NULL) return group; + } else if (v->type == VEH_ROAD) { + group = use_cache ? v->u.road.cached_override : GetWagonOverrideSpriteSet(v->engine_type, v->cargo_type, v->u.road.first_engine); + if (group != NULL) return group; } } Index: src/vehicle_base.h =================================================================== --- src/vehicle_base.h (revision 13864) +++ src/vehicle_base.h (working copy) @@ -167,6 +167,9 @@ EngineID first_engine; byte cached_veh_length; + /* Cached wagon override spritegroup */ + const struct SpriteGroup *cached_override; + RoadType roadtype; RoadTypes compatible_roadtypes; };