changeset 18122:ed51ea71bb08 draft

(svn r22947) -Fix: [NewGRF] Do not call CB 32 for disaster, effect vehicles or aircraft shadows/rotors.
author frosch <frosch@openttd.org>
date Mon, 19 Sep 2011 19:23:23 +0000
parents bbd08e01a885
children a358f635105f
files src/vehicle.cpp src/vehicle_base.h
diffstat 2 files changed, 17 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/vehicle.cpp
+++ b/src/vehicle.cpp
@@ -632,6 +632,21 @@
 }
 
 /**
+ * Check whether Vehicle::engine_type has any meaning.
+ * @return true if the vehicle has a useable engine type.
+ */
+bool Vehicle::HasEngineType() const
+{
+	switch (this->type) {
+		case VEH_AIRCRAFT: return Aircraft::From(this)->IsNormalAircraft();
+		case VEH_TRAIN:
+		case VEH_ROAD:
+		case VEH_SHIP: return true;
+		default: return false;
+	}
+}
+
+/**
  * Handle the pathfinding result, especially the lost status.
  * If the vehicle is now lost and wasn't previously fire an
  * event to the AIs and a news message to the user. If the
@@ -784,7 +799,7 @@
 		if (v == NULL) continue;
 
 		/* Call the 32-day callback if needed */
-		if ((v->day_counter & 0x1F) == 0) {
+		if ((v->day_counter & 0x1F) == 0 && v->HasEngineType()) {
 			uint16 callback = GetVehicleCallback(CBID_VEHICLE_32DAY_CALLBACK, 0, 0, v->engine_type, v);
 			if (callback != CALLBACK_FAILED) {
 				if (HasBit(callback, 0)) TriggerVehicle(v, VEHICLE_TRIGGER_CALLBACK_32); // Trigger vehicle trigger 10
--- a/src/vehicle_base.h
+++ b/src/vehicle_base.h
@@ -703,6 +703,7 @@
 	}
 
 	bool IsEngineCountable() const;
+	bool HasEngineType() const;
 	bool HasDepotOrder() const;
 	void HandlePathfindingResult(bool path_found);