mirror of https://github.com/OpenTTD/OpenTTD.git
(svn r6697) -Fix: [order refit] if an order refit fails, the vehicle is now stopped and the player gets a message (like vehicle stopped in depot)
This should prevent a vehicle from failing to be refitted and then show up and block a station with full load. In such a case, it's better to stop in a depot (that will not stop any other vehicles) and notify the owner
This commit is contained in:
parent
ec809c5d71
commit
2e7dc02b91
|
@ -3001,6 +3001,8 @@ STR_MASS_START_LIST_TIP :{BLACK}Click to
|
|||
STR_SHORT_DATE :{WHITE}{DATE_TINY}
|
||||
STR_SIGN_LIST_CAPTION :{WHITE}Sign List - {COMMA} Sign{P "" s}
|
||||
|
||||
STR_ORDER_REFIT_FAILED :{WHITE}Order refit failure stopped {STRING} {COMMA}
|
||||
|
||||
############ Lists rail types
|
||||
|
||||
STR_RAIL_VEHICLES :Rail Vehicles
|
||||
|
|
19
vehicle.c
19
vehicle.c
|
@ -2535,7 +2535,24 @@ void VehicleEnterDepot(Vehicle *v)
|
|||
|
||||
_current_player = v->owner;
|
||||
cost = DoCommand(v->tile, v->index, t.refit_cargo | t.refit_subtype << 8, DC_EXEC, CMD_REFIT_VEH(v->type));
|
||||
if (!CmdFailed(cost) && v->owner == _local_player && cost != 0) ShowCostOrIncomeAnimation(v->x_pos, v->y_pos, v->z_pos, cost);
|
||||
|
||||
if (CmdFailed(cost)) {
|
||||
v->leave_depot_instantly = false; // We ensure that the vehicle stays in the depot
|
||||
if (v->owner == _local_player) {
|
||||
/* Notify the user that we stopped the vehicle */
|
||||
switch (v->type) {
|
||||
case VEH_Train: SetDParam(0, STR_019F_TRAIN); break;
|
||||
case VEH_Road: SetDParam(0, STR_019C_ROAD_VEHICLE); break;
|
||||
case VEH_Ship: SetDParam(0, STR_019E_SHIP); break;
|
||||
case VEH_Aircraft: SetDParam(0, STR_019D_AIRCRAFT); break;
|
||||
default: NOT_REACHED();
|
||||
}
|
||||
SetDParam(1, v->unitnumber);
|
||||
AddNewsItem(STR_ORDER_REFIT_FAILED, NEWS_FLAGS(NM_SMALL, NF_VIEWPORT|NF_VEHICLE, NT_ADVICE, 0), v->index, 0);
|
||||
}
|
||||
} else if (v->owner == _local_player && cost != 0) {
|
||||
ShowCostOrIncomeAnimation(v->x_pos, v->y_pos, v->z_pos, cost);
|
||||
}
|
||||
}
|
||||
|
||||
if (HASBIT(t.flags, OFB_PART_OF_ORDERS)) {
|
||||
|
|
Loading…
Reference in New Issue