diff --git a/train_cmd.c b/train_cmd.c index 116600dc4d..71672ca448 100644 --- a/train_cmd.c +++ b/train_cmd.c @@ -658,8 +658,7 @@ void AddRearEngineToMultiheadedTrain(Vehicle *v, Vehicle *u, bool building) /** Build a railroad vehicle. * @param x,y tile coordinates (depot) where rail-vehicle is built * @param p1 engine type id - * @param p2 bit 0 build only one engine, even if it is a dualheaded engine. - p2 bit 1 prevents any free cars from being added to the train + * @param p2 bit 0 prevents any free cars from being added to the train */ int32 CmdBuildRailVehicle(int x, int y, uint32 flags, uint32 p1, uint32 p2) { @@ -693,11 +692,7 @@ int32 CmdBuildRailVehicle(int x, int y, uint32 flags, uint32 p1, uint32 p2) value = EstimateTrainCost(rvi); - //make sure we only pay for half a dualheaded engine if we only requested half of it - if (rvi->flags&RVI_MULTIHEAD && HASBIT(p2,0)) - value /= 2; - - num_vehicles = (rvi->flags & RVI_MULTIHEAD && !HASBIT(p2, 0)) ? 2 : 1; + num_vehicles = (rvi->flags & RVI_MULTIHEAD) ? 2 : 1; num_vehicles += CountArticulatedParts(rvi, p1); if (!(flags & DC_QUERY_COST)) { @@ -761,7 +756,7 @@ int32 CmdBuildRailVehicle(int x, int y, uint32 flags, uint32 p1, uint32 p2) VehiclePositionChanged(v); - if (rvi->flags & RVI_MULTIHEAD && !HASBIT(p2, 0)) { + if (rvi->flags & RVI_MULTIHEAD) { SetMultiheaded(v); AddRearEngineToMultiheadedTrain(vl[0], vl[1], true); /* Now we need to link the front and rear engines together @@ -777,7 +772,7 @@ int32 CmdBuildRailVehicle(int x, int y, uint32 flags, uint32 p1, uint32 p2) TrainConsistChanged(v); UpdateTrainAcceleration(v); - if (!HASBIT(p2, 1)) { // check if the cars should be added to the new vehicle + if (!HASBIT(p2, 0)) { // check if the cars should be added to the new vehicle NormalizeTrainVehInDepot(v); } diff --git a/vehicle.c b/vehicle.c index 46a64994e9..5594627773 100644 --- a/vehicle.c +++ b/vehicle.c @@ -1565,7 +1565,7 @@ int32 CmdCloneVehicle(int x, int y, uint32 flags, uint32 p1, uint32 p2) continue; } - cost = DoCommand(x, y, v->engine_type, 2, flags, CMD_BUILD_VEH(v->type)); + cost = DoCommand(x, y, v->engine_type, 1, flags, CMD_BUILD_VEH(v->type)); if (CmdFailed(cost)) return cost; @@ -1650,7 +1650,7 @@ static int32 ReplaceVehicle(Vehicle **w, byte flags) new_engine_type = p->engine_replacement[old_v->engine_type] == INVALID_ENGINE ? old_v->engine_type : p->engine_replacement[old_v->engine_type]; - cost = DoCommand(old_v->x_pos, old_v->y_pos, new_engine_type, 2, flags, CMD_BUILD_VEH(old_v->type)); + cost = DoCommand(old_v->x_pos, old_v->y_pos, new_engine_type, 1, flags, CMD_BUILD_VEH(old_v->type)); if (CmdFailed(cost)) return cost; if (flags & DC_EXEC) {