Index: obj/wayobj.cc =================================================================== --- obj/wayobj.cc (リビジョン 8163) +++ obj/wayobj.cc (作業コピー) @@ -332,13 +332,13 @@ /* better use this constrcutor for new wayobj; it will extend a matching obj or make an new one */ -void wayobj_t::extend_wayobj_t(koord3d pos, player_t *owner, ribi_t::ribi dir, const way_obj_desc_t *desc) +void wayobj_t::extend_wayobj_t(koord3d pos, player_t *owner, ribi_t::ribi dir, const way_obj_desc_t *desc, bool keep_existing_faster_way) { grund_t *gr=welt->lookup(pos); if(gr) { wayobj_t *existing_wayobj = gr->get_wayobj( desc->get_wtyp() ); if( existing_wayobj ) { - if( existing_wayobj->get_desc()->get_topspeed() < desc->get_topspeed() && player_t::check_owner(owner, existing_wayobj->get_owner()) ) { + if( ( existing_wayobj->get_desc()->get_topspeed() < desc->get_topspeed() || !keep_existing_faster_way) && player_t::check_owner(owner, existing_wayobj->get_owner()) ) { // replace slower by faster dir = dir | existing_wayobj->get_dir(); gr->set_flag(grund_t::dirty); Index: obj/wayobj.h =================================================================== --- obj/wayobj.h (リビジョン 8163) +++ obj/wayobj.h (作業コピー) @@ -115,7 +115,7 @@ static const way_obj_desc_t *default_oberleitung; // use this constructor; it will extend a matching existing wayobj - static void extend_wayobj_t(koord3d pos, player_t *owner, ribi_t::ribi dir, const way_obj_desc_t *desc); + static void extend_wayobj_t(koord3d pos, player_t *owner, ribi_t::ribi dir, const way_obj_desc_t *desc, bool keep_existing_faster_way); static bool register_desc(way_obj_desc_t *desc); static bool successfully_loaded(); Index: simtool.cc =================================================================== --- simtool.cc (リビジョン 8163) +++ simtool.cc (作業コピー) @@ -3434,11 +3434,13 @@ return "Ways not connected"; } + bool keep_existing_faster_ways = !is_ctrl_pressed(); + // built wayobj ... koord3d_vector_t const& r = verbindung.get_route(); for(uint32 i=0; ilookup(r[i]);