Fix desync caused by "train too heavy" advice message.
_current_company was changed in an unsafe and non-deterministic way.
This commit is contained in:
@@ -914,15 +914,14 @@ void CallVehicleTicks()
|
|||||||
|
|
||||||
case VEH_TRAIN:
|
case VEH_TRAIN:
|
||||||
if (HasBit(Train::From(v)->flags, VRF_TOO_HEAVY)) {
|
if (HasBit(Train::From(v)->flags, VRF_TOO_HEAVY)) {
|
||||||
_current_company = v->owner;
|
if (v->owner == _local_company) {
|
||||||
if (IsLocalCompany()) {
|
|
||||||
SetDParam(0, v->index);
|
SetDParam(0, v->index);
|
||||||
SetDParam(1, STR_ERROR_TRAIN_TOO_HEAVY);
|
SetDParam(1, STR_ERROR_TRAIN_TOO_HEAVY);
|
||||||
AddVehicleNewsItem(STR_ERROR_TRAIN_TOO_HEAVY, NT_ADVICE, v->index);
|
AddVehicleNewsItem(STR_ERROR_TRAIN_TOO_HEAVY, NT_ADVICE, v->index);
|
||||||
|
}
|
||||||
ClrBit(Train::From(v)->flags, VRF_TOO_HEAVY);
|
ClrBit(Train::From(v)->flags, VRF_TOO_HEAVY);
|
||||||
}
|
}
|
||||||
_current_company = OWNER_NONE;
|
/* FALL THROUGH */
|
||||||
}
|
|
||||||
case VEH_ROAD:
|
case VEH_ROAD:
|
||||||
case VEH_AIRCRAFT:
|
case VEH_AIRCRAFT:
|
||||||
case VEH_SHIP: {
|
case VEH_SHIP: {
|
||||||
|
Reference in New Issue
Block a user