Index: trunk/simconvoi.cc =================================================================== --- trunk/simconvoi.cc (Revision 9575) +++ trunk/simconvoi.cc (Arbeitskopie) @@ -2080,19 +2080,14 @@ // move one train length to the start position ... // in north/west direction, we leave the vehicle away to start as much back as possible ribi_t::ribi neue_richtung = fahr[0]->get_direction(); - if(neue_richtung==ribi_t::south || neue_richtung==ribi_t::east) { - // drive the convoi to the same position, but do not hop into next tile! - if( train_length%16==0 ) { - // any space we need => just add - train_length += fahr[anz_vehikel-1]->get_desc()->get_length(); - } - else { - // limit train to front of tile - train_length += min( (train_length%CARUNITS_PER_TILE)-1, fahr[anz_vehikel-1]->get_desc()->get_length() ); - } + // drive the convoi to the same position, but do not hop into next tile! + if( train_length%16==0 ) { + // any space we need => just add + train_length += fahr[anz_vehikel-1]->get_desc()->get_length(); } else { - train_length += 1; + // limit train to front of tile + train_length += min( (train_length%CARUNITS_PER_TILE)-1, fahr[anz_vehikel-1]->get_desc()->get_length() ); } train_length = max(1,train_length); Index: trunk/vehicle/vehicle.cc =================================================================== --- trunk/vehicle/vehicle.cc (Revision 9575) +++ trunk/vehicle/vehicle.cc (Arbeitskopie) @@ -575,9 +575,6 @@ } if( leading ) { - if( check_for_finish && (direction==ribi_t::north || direction==ribi_t::west) ) { - steps_next = (steps_next/2)+1; - } cnv->add_running_cost( weg ); cnv->must_recalc_data_front(); } Index: trunk/vehicle/vehicle_base.cc =================================================================== --- trunk/vehicle/vehicle_base.cc (Revision 9575) +++ trunk/vehicle/vehicle_base.cc (Arbeitskopie) @@ -67,6 +67,7 @@ { -12, 0 } }; + // [0]=xoff [1]=yoff sint8 vehicle_base_t::overtaking_base_offsets[8][2]; @@ -333,6 +334,21 @@ } xoff += (display_steps*dx) >> 10; yoff += ((display_steps*dy) >> 10) + (get_hoff(raster_width))/(4*16); + + if( direction == ribi_t::north ) { + xoff -= raster_width / 4; + yoff += raster_width / 8; + } + else if( direction == ribi_t::west ) { + xoff += raster_width / 4; + yoff += raster_width / 8; + } + else if( direction == ribi_t::northwest ) { + yoff += raster_width / 8; + } + else if( direction == ribi_t::northeast ) { + xoff -= raster_width / 8; + } }