Index: src/newgrf_engine.cpp =================================================================== --- src/newgrf_engine.cpp (Revision 24433) +++ src/newgrf_engine.cpp (Arbeitskopie) @@ -757,6 +757,7 @@ case 0x35: return GB(v->type == VEH_AIRCRAFT ? (v->cur_speed * 10) / 128 : v->cur_speed, 8, 8); case 0x36: return v->subspeed; case 0x37: return v->acceleration; + case 0x38: return (v->GetAdvanceDistance() - v->progress)*256/v->GetAdvanceDistance() - 1; case 0x39: return v->cargo_type; case 0x3A: return v->cargo_cap; case 0x3B: return GB(v->cargo_cap, 8, 8); Index: src/roadveh_cmd.cpp =================================================================== --- src/roadveh_cmd.cpp (Revision 24433) +++ src/roadveh_cmd.cpp (Arbeitskopie) @@ -1530,17 +1530,17 @@ v->SetLastSpeed(); + /* If movement is blocked, set 'progress' to its maximum, so the roadvehicle does + * not accelerate again before it can actually move. I.e. make sure it tries to advance again + * on next tick to discover whether it is still blocked. */ + if (v->progress == 0) v->progress = blocked ? adv_spd - 1 : j; + for (RoadVehicle *u = v; u != NULL; u = u->Next()) { if ((u->vehstatus & VS_HIDDEN) != 0) continue; u->UpdateViewport(false, false); } - /* If movement is blocked, set 'progress' to its maximum, so the roadvehicle does - * not accelerate again before it can actually move. I.e. make sure it tries to advance again - * on next tick to discover whether it is still blocked. */ - if (v->progress == 0) v->progress = blocked ? adv_spd - 1 : j; - return true; } Index: src/train_cmd.cpp =================================================================== --- src/train_cmd.cpp (Revision 24433) +++ src/train_cmd.cpp (Arbeitskopie) @@ -3799,14 +3799,14 @@ v->SetLastSpeed(); } + if (v->progress == 0) v->progress = j; // Save unused spd for next time, if TrainController didn't set progress + for (Train *u = v; u != NULL; u = u->Next()) { if ((u->vehstatus & VS_HIDDEN) != 0) continue; u->UpdateViewport(false, false); } - if (v->progress == 0) v->progress = j; // Save unused spd for next time, if TrainController didn't set progress - return true; }