diff --git a/src/articulated_vehicles.cpp b/src/articulated_vehicles.cpp index f1ce4dc563..04d86aa2ac 100644 --- a/src/articulated_vehicles.cpp +++ b/src/articulated_vehicles.cpp @@ -318,7 +318,7 @@ void AddArticulatedParts(Vehicle *first, VehicleType type) t->subtype = 0; t->track = front->track; t->railtype = front->railtype; - t->tcache.first_engine = front->engine_type; + t->tcache.first_engine = front->engine_type; // needs to be set before first callback t->spritenum = e_artic->u.rail.image_index; if (e_artic->CanCarryCargo()) { @@ -339,7 +339,7 @@ void AddArticulatedParts(Vehicle *first, VehicleType type) v = rv; rv->subtype = 0; - rv->rcache.first_engine = front->engine_type; + rv->rcache.first_engine = front->engine_type; // needs to be set before first callback rv->rcache.cached_veh_length = 8; // Callback is called when the consist is finished rv->state = RVSB_IN_DEPOT; diff --git a/src/roadveh.h b/src/roadveh.h index 5edd325df7..010c3e395b 100644 --- a/src/roadveh.h +++ b/src/roadveh.h @@ -89,7 +89,7 @@ void RoadVehUpdateCache(RoadVehicle *v); /** Cached oftenly queried (NewGRF) values */ struct RoadVehicleCache { byte cached_veh_length; - EngineID first_engine; + EngineID first_engine; ///< cached EngineID of the front vehicle. INVALID_VEHICLE for the front vehicle itself. }; /** diff --git a/src/roadveh_cmd.cpp b/src/roadveh_cmd.cpp index c0b511917c..52eb9387af 100644 --- a/src/roadveh_cmd.cpp +++ b/src/roadveh_cmd.cpp @@ -255,6 +255,7 @@ CommandCost CmdBuildRoadVeh(TileIndex tile, DoCommandFlag flags, uint32 p1, uint v->last_station_visited = INVALID_STATION; v->max_speed = rvi->max_speed; v->engine_type = (EngineID)p1; + v->rcache.first_engine = INVALID_ENGINE; // needs to be set before first callback v->reliability = e->reliability; v->reliability_spd_dec = e->reliability_spd_dec; diff --git a/src/train.h b/src/train.h index f75cda11c7..e1828297d5 100644 --- a/src/train.h +++ b/src/train.h @@ -96,9 +96,7 @@ struct TrainCache { byte cached_vis_effect; byte user_def_data; - /* NOSAVE: for wagon override - id of the first engine in train - * 0xffff == not in train */ - EngineID first_engine; + EngineID first_engine; ///< cached EngineID of the front vehicle. INVALID_VEHICLE for the front vehicle itself. }; /** diff --git a/src/train_cmd.cpp b/src/train_cmd.cpp index 684a789b3e..acad557a6c 100644 --- a/src/train_cmd.cpp +++ b/src/train_cmd.cpp @@ -720,6 +720,7 @@ static CommandCost CmdBuildRailWagon(EngineID engine, TileIndex tile, DoCommandF v->spritenum = rvi->image_index; v->engine_type = engine; + v->tcache.first_engine = INVALID_ENGINE; // needs to be set before first callback DiagDirection dir = GetRailDepotDirection(tile); @@ -900,6 +901,7 @@ CommandCost CmdBuildRailVehicle(TileIndex tile, DoCommandFlag flags, uint32 p1, // v->dest_tile = 0; v->engine_type = p1; + v->tcache.first_engine = INVALID_ENGINE; // needs to be set before first callback v->reliability = e->reliability; v->reliability_spd_dec = e->reliability_spd_dec;