# HG changeset patch # User frosch # Date 1316460203 0 # Node ID ed51ea71bb085cb41c6cb06528db402aff0d66b0 # Parent bbd08e01a8851849c3aeaed76af3d4095388a500 (svn r22947) -Fix: [NewGRF] Do not call CB 32 for disaster, effect vehicles or aircraft shadows/rotors. diff --git a/src/vehicle.cpp b/src/vehicle.cpp --- 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 diff --git a/src/vehicle_base.h b/src/vehicle_base.h --- 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);