Changeset - r19926:e25755dc4678
[Not reviewed]
master
0 2 0
rubidium - 11 years ago 2013-01-02 22:20:07
rubidium@openttd.org
(svn r24882) -Fix: desync when NewGRF changes the stats related to acceleration (power, weight, tractive effort, etc) during service or 32 day triggers
2 files changed with 10 insertions and 1 deletions:
0 comments (0 inline, 0 general)
src/economy.cpp
Show inline comments
 
@@ -1637,6 +1637,9 @@ static void LoadUnloadVehicle(Vehicle *f
 
	front->load_unload_ticks = max(1, unloading_time);
 

	
 
	if (completely_emptied) {
 
		/* Make sure the vehicle is marked dirty, since we need to update the NewGRF
 
		 * properties such as weight, power and TE whenever the trigger runs. */
 
		assert(dirty_vehicle);
 
		TriggerVehicle(front, VEHICLE_TRIGGER_EMPTY);
 
	}
 

	
src/vehicle.cpp
Show inline comments
 
@@ -836,7 +836,11 @@ static void RunVehicleDayProc()
 
		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
 
				if (HasBit(callback, 0)) {
 
					/* After a vehicle trigger, the graphics and properties of the vehicle could change. */
 
					TriggerVehicle(v, VEHICLE_TRIGGER_CALLBACK_32); // Trigger vehicle trigger 10
 
					v->MarkDirty();
 
				}
 
				if (HasBit(callback, 1)) v->colourmap = PAL_NONE;
 

	
 
				if (callback & ~3) ErrorUnknownCallbackResult(v->GetGRFID(), CBID_VEHICLE_32DAY_CALLBACK, callback);
 
@@ -1340,7 +1344,9 @@ void VehicleEnterDepot(Vehicle *v)
 

	
 
	VehicleServiceInDepot(v);
 

	
 
	/* After a vehicle trigger, the graphics and properties of the vehicle could change. */
 
	TriggerVehicle(v, VEHICLE_TRIGGER_DEPOT);
 
	v->MarkDirty();
 

	
 
	if (v->current_order.IsType(OT_GOTO_DEPOT)) {
 
		SetWindowDirty(WC_VEHICLE_VIEW, v->index);
0 comments (0 inline, 0 general)