summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--aircraft_cmd.c8
-rw-r--r--ship_cmd.c2
-rw-r--r--train_cmd.c2
3 files changed, 9 insertions, 3 deletions
diff --git a/aircraft_cmd.c b/aircraft_cmd.c
index dc736e491..94411d3b2 100644
--- a/aircraft_cmd.c
+++ b/aircraft_cmd.c
@@ -538,7 +538,13 @@ int32 CmdRefitAircraft(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
u = v->next;
mail = (new_cid != CT_PASSENGERS) ? 0 : avi->mail_capacity;
u->cargo_cap = mail;
- v->cargo_count = u->cargo_count = 0;
+ if (v->cargo_type == new_cid) {
+ v->cargo_count = min(pass, v->cargo_count);
+ u->cargo_count = min(mail, u->cargo_count);
+ } else {
+ v->cargo_count = 0;
+ u->cargo_count = 0;
+ }
v->cargo_type = new_cid;
v->cargo_subtype = new_subtype;
InvalidateWindow(WC_VEHICLE_DETAILS, v->index);
diff --git a/ship_cmd.c b/ship_cmd.c
index 424d484fb..b193f954c 100644
--- a/ship_cmd.c
+++ b/ship_cmd.c
@@ -1061,7 +1061,7 @@ int32 CmdRefitShip(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
}
if (flags & DC_EXEC) {
- v->cargo_count = 0;
+ v->cargo_count = (v->cargo_type == new_cid) ? min(v->cargo_cap, v->cargo_count) : 0;
v->cargo_type = new_cid;
v->cargo_subtype = new_subtype;
InvalidateWindow(WC_VEHICLE_DETAILS, v->index);
diff --git a/train_cmd.c b/train_cmd.c
index a189a9d9a..ad0aa8965 100644
--- a/train_cmd.c
+++ b/train_cmd.c
@@ -1789,7 +1789,7 @@ int32 CmdRefitRailVehicle(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
if (new_cid != v->cargo_type) cost += _price.build_railvehicle >> 8;
num += amount;
if (flags & DC_EXEC) {
- v->cargo_count = 0;
+ v->cargo_count = (v->cargo_type == new_cid) ? min(amount, v->cargo_count) : 0;
v->cargo_type = new_cid;
v->cargo_cap = amount;
v->cargo_subtype = new_subtype;