(svn r1699) - Feature [autoreplace] a plane will now go to the hangar right after landing if it needs to be replaced
authorbjarni
Thu, 27 Jan 2005 20:38:19 +0000
changeset 1195 54d50ac3311a
parent 1194 2b25b1477623
child 1196 67f7f3017d99
(svn r1699) - Feature [autoreplace] a plane will now go to the hangar right after landing if it needs to be replaced

- Fix [autoreplace] fixed a typo that could prevent autoreplaced aircraft from automatically go to a hangar
aircraft_cmd.c
--- a/aircraft_cmd.c	Thu Jan 27 15:43:44 2005 +0000
+++ b/aircraft_cmd.c	Thu Jan 27 20:38:19 2005 +0000
@@ -413,7 +413,7 @@
 	if (!CheckOwnership(v->owner))
 		return CMD_ERROR;
 
-	if (v->current_order.type == OT_GOTO_DEPOT && p2 != 0) {
+	if (v->current_order.type == OT_GOTO_DEPOT && p2 == 0) {
 		if (flags & DC_EXEC) {
 			if (v->current_order.flags & OF_UNLOAD) v->cur_order_index++;
 			v->current_order.type = OT_DUMMY;
@@ -1579,6 +1579,17 @@
 {
 	AircraftLandAirplane(v);  // maybe crash airplane
 	v->u.air.state = ENDLANDING;
+	// check if the aircraft needs to be replaced or renewed and send it to a hangar if needed
+	if (v->current_order.type != OT_GOTO_DEPOT && v->owner == _local_player) {
+		// only the vehicle owner needs to calculate the rest (locally)
+		if ((_autoreplace_array[v->engine_type] != v->engine_type) ||
+			(_patches.autorenew && v->age - v->max_age > (_patches.autorenew_months * 30))) {
+			// send the aircraft to the hangar at next airport
+			_current_player = _local_player;
+			DoCommandP(v->tile, v->index, 1 << 16, NULL, CMD_SEND_AIRCRAFT_TO_HANGAR | CMD_SHOW_NO_ERROR);
+			_current_player = OWNER_NONE;
+		}
+	}
 }
 
 static void AircraftEventHandler_HeliLanding(Vehicle *v, const AirportFTAClass *Airport)