Index: economy.c =================================================================== --- economy.c (revision 5962) +++ economy.c (working copy) @@ -1345,7 +1345,7 @@ profit += DeliverGoods(v->cargo_count, v->cargo_type, v->cargo_source, last_visited, v->cargo_days); result |= 1; v->cargo_count = 0; - } else if (u->current_order.flags & (OF_UNLOAD | OF_TRANSFER)) { + } else if ((u->current_order.flags & (OF_UNLOAD | OF_TRANSFER)) && !(u->current_order.flags & OF_FULL_LOAD)) { /* unload goods and let it wait at the station */ st->time_since_unload = 0; @@ -1381,6 +1381,9 @@ if (v->cargo_count != 0) completely_empty = false; } + /* don't unload goods that we picked up */ + if (u->current_order.flags & OF_FULL_LOAD) u->current_order.flags |= OF_TRANSFER; + /* don't pick up goods that we unloaded */ if (u->current_order.flags & OF_UNLOAD) continue;