(svn r6738) - Fix (r2441): Only apply the virtual transfer profit if the order is a transfer order, rather than to any unload order. This fixes an issue where the AI doesn't know that a route is unprofitable.
This commit is contained in:
		@@ -1302,7 +1302,7 @@ static bool LoadWait(const Vehicle* v, const Vehicle* u)
 | 
			
		||||
int LoadUnloadVehicle(Vehicle *v)
 | 
			
		||||
{
 | 
			
		||||
	int profit = 0;
 | 
			
		||||
	int v_profit; //virtual profit for feeder systems
 | 
			
		||||
	int v_profit = 0; //virtual profit for feeder systems
 | 
			
		||||
	int v_profit_total = 0;
 | 
			
		||||
	int unloading_time = 20;
 | 
			
		||||
	Vehicle *u = v;
 | 
			
		||||
@@ -1345,6 +1345,7 @@ int LoadUnloadVehicle(Vehicle *v)
 | 
			
		||||
				/* unload goods and let it wait at the station */
 | 
			
		||||
				st->time_since_unload = 0;
 | 
			
		||||
 | 
			
		||||
				if (u->current_order.flags & OF_TRANSFER) {
 | 
			
		||||
					v_profit = GetTransportedGoodsIncome(
 | 
			
		||||
						v->cargo_count,
 | 
			
		||||
						DistanceManhattan(GetStation(v->cargo_source)->xy, GetStation(last_visited)->xy),
 | 
			
		||||
@@ -1352,6 +1353,7 @@ int LoadUnloadVehicle(Vehicle *v)
 | 
			
		||||
						v->cargo_type) * 3 / 2;
 | 
			
		||||
 | 
			
		||||
					v_profit_total += v_profit;
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				unloading_time += v->cargo_count;
 | 
			
		||||
				t = GB(ge->waiting_acceptance, 0, 12);
 | 
			
		||||
@@ -1368,8 +1370,11 @@ int LoadUnloadVehicle(Vehicle *v)
 | 
			
		||||
				}
 | 
			
		||||
				// Update amount of waiting cargo
 | 
			
		||||
				SB(ge->waiting_acceptance, 0, 12, min(v->cargo_count + t, 0xFFF));
 | 
			
		||||
 | 
			
		||||
				if (u->current_order.flags & OF_TRANSFER) {
 | 
			
		||||
					ge->feeder_profit += v_profit;
 | 
			
		||||
					u->profit_this_year += v_profit;
 | 
			
		||||
				}
 | 
			
		||||
				result |= 2;
 | 
			
		||||
				v->cargo_count = 0;
 | 
			
		||||
			}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user