diff --git a/src/water_cmd.cpp b/src/water_cmd.cpp --- a/src/water_cmd.cpp +++ b/src/water_cmd.cpp @@ -798,18 +798,20 @@ static void FloodVehicle(Vehicle *v) switch (v->type) { default: NOT_REACHED(); - case VEH_TRAIN: - if (IsFrontEngine(v)) { + case VEH_TRAIN: { + Train *t = Train::From(v); + if (t->IsFrontEngine()) { pass += 4; // driver /* FreeTrainTrackReservation() calls GetVehicleTrackdir() that doesn't like crashed vehicles. * In this case, v->direction matches v->u.rail.track, so we can do this (it wasn't crashed before) */ - v->vehstatus &= ~VS_CRASHED; - FreeTrainTrackReservation(Train::From(v)); - v->vehstatus |= VS_CRASHED; + t->vehstatus &= ~VS_CRASHED; + FreeTrainTrackReservation(t); + t->vehstatus |= VS_CRASHED; } - Train::From(v)->crash_anim_pos = 4000; // max 4440, disappear pretty fast + t->crash_anim_pos = 4000; // max 4440, disappear pretty fast InvalidateWindowClassesData(WC_TRAINS_LIST, 0); break; + } case VEH_ROAD: if (IsRoadVehFront(v)) pass += 1; // driver