mirror of
https://github.com/JGRennison/OpenTTD-patches.git
synced 2024-11-17 21:25:40 +00:00
(svn r1640) fix: now helicopters will use a hangar in schedule to be replaced in, even if they are only set to service there. Since helicopters are serviced at helipads, they will only go there if they needs to be replaced or renewed.
This commit is contained in:
parent
eae329f332
commit
6e2abeba5e
@ -363,6 +363,8 @@ int32 CmdSendAircraftToHangar(int x, int y, uint32 flags, uint32 p1, uint32 p2)
|
|||||||
|
|
||||||
v = GetVehicle(p1);
|
v = GetVehicle(p1);
|
||||||
|
|
||||||
|
if (p2 != 0) v->set_for_replacement = true; //now all clients knows that the vehicle wants to be replaced
|
||||||
|
|
||||||
if (!CheckOwnership(v->owner))
|
if (!CheckOwnership(v->owner))
|
||||||
return CMD_ERROR;
|
return CMD_ERROR;
|
||||||
|
|
||||||
@ -1030,7 +1032,8 @@ static void ProcessAircraftOrder(Vehicle *v)
|
|||||||
|
|
||||||
if (v->current_order.type == OT_GOTO_DEPOT &&
|
if (v->current_order.type == OT_GOTO_DEPOT &&
|
||||||
(v->current_order.flags & (OF_UNLOAD | OF_FULL_LOAD)) == (OF_UNLOAD | OF_FULL_LOAD) &&
|
(v->current_order.flags & (OF_UNLOAD | OF_FULL_LOAD)) == (OF_UNLOAD | OF_FULL_LOAD) &&
|
||||||
!VehicleNeedsService(v)) {
|
!VehicleNeedsService(v) &&
|
||||||
|
v->set_for_replacement == false) {
|
||||||
v->cur_order_index++;
|
v->cur_order_index++;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1434,8 +1437,8 @@ static void AircraftEventHandler_HeliTakeOff(Vehicle *v, const AirportFTAClass *
|
|||||||
AircraftNextAirportPos_and_Order(v);
|
AircraftNextAirportPos_and_Order(v);
|
||||||
|
|
||||||
// check if the aircraft needs to be replaced or renewed and send it to a hangar if needed
|
// check if the aircraft needs to be replaced or renewed and send it to a hangar if needed
|
||||||
if ((v->owner == _local_player && _autoreplace_array[v->engine_type] != v->engine_type) ||
|
if (v->current_order.type != OT_GOTO_DEPOT && ((v->owner == _local_player && _autoreplace_array[v->engine_type] != v->engine_type) ||
|
||||||
(v->owner == _local_player && _patches.autorenew && v->age - v->max_age > (_patches.autorenew_months * 30))) {
|
(v->owner == _local_player && _patches.autorenew && v->age - v->max_age > (_patches.autorenew_months * 30)))) {
|
||||||
_current_player = _local_player;
|
_current_player = _local_player;
|
||||||
DoCommandP(v->tile, v->index, 1, NULL, CMD_SEND_AIRCRAFT_TO_HANGAR | CMD_SHOW_NO_ERROR);
|
DoCommandP(v->tile, v->index, 1, NULL, CMD_SEND_AIRCRAFT_TO_HANGAR | CMD_SHOW_NO_ERROR);
|
||||||
_current_player = OWNER_NONE;
|
_current_player = OWNER_NONE;
|
||||||
|
@ -194,6 +194,7 @@ static Vehicle *InitializeVehicle(Vehicle *v)
|
|||||||
v->string_id = 0;
|
v->string_id = 0;
|
||||||
v->next_shared = NULL;
|
v->next_shared = NULL;
|
||||||
v->prev_shared = NULL;
|
v->prev_shared = NULL;
|
||||||
|
v->set_for_replacement = false;
|
||||||
/* random_bits is used to pick out a random sprite for vehicles
|
/* random_bits is used to pick out a random sprite for vehicles
|
||||||
which are technical the same (newgrf stuff).
|
which are technical the same (newgrf stuff).
|
||||||
Because RandomRange() results in desyncs, and because it does
|
Because RandomRange() results in desyncs, and because it does
|
||||||
@ -1422,6 +1423,7 @@ int32 CmdReplaceVehicle(int x, int y, uint32 flags, uint32 p1, uint32 p2)
|
|||||||
Engine *e;
|
Engine *e;
|
||||||
e = DEREF_ENGINE(new_engine_type);
|
e = DEREF_ENGINE(new_engine_type);
|
||||||
|
|
||||||
|
v->set_for_replacement = false;
|
||||||
v->reliability = e->reliability;
|
v->reliability = e->reliability;
|
||||||
v->reliability_spd_dec = e->reliability_spd_dec;
|
v->reliability_spd_dec = e->reliability_spd_dec;
|
||||||
v->age = 0;
|
v->age = 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user