Changeset - r19513:78ecb1cac672
[Not reviewed]
master
0 1 0
frosch - 12 years ago 2012-07-27 19:16:01
frosch@openttd.org
(svn r24438) -Fix [FS#5256-ish]: Make (non-refittable) vehicles with invalid default cargo unavailable.
1 file changed with 6 insertions and 3 deletions:
0 comments (0 inline, 0 general)
src/newgrf.cpp
Show inline comments
 
@@ -1041,7 +1041,7 @@ static ChangeInfoResult RailVehicleChang
 
				} else if (_cur.grffile->grf_version >= 8) {
 
					/* Use translated cargo. Might result in CT_INVALID (first refittable), if cargo is not defined. */
 
					ei->cargo_type = GetCargoTranslation(ctype, _cur.grffile);
 
				} else if (ctype < NUM_CARGO && HasBit(_cargo_mask, ctype)) {
 
				} else if (ctype < NUM_CARGO) {
 
					/* Use untranslated cargo. */
 
					ei->cargo_type = ctype;
 
				} else {
 
@@ -1276,7 +1276,7 @@ static ChangeInfoResult RoadVehicleChang
 
				} else if (_cur.grffile->grf_version >= 8) {
 
					/* Use translated cargo. Might result in CT_INVALID (first refittable), if cargo is not defined. */
 
					ei->cargo_type = GetCargoTranslation(ctype, _cur.grffile);
 
				} else if (ctype < NUM_CARGO && HasBit(_cargo_mask, ctype)) {
 
				} else if (ctype < NUM_CARGO) {
 
					/* Use untranslated cargo. */
 
					ei->cargo_type = ctype;
 
				} else {
 
@@ -1454,7 +1454,7 @@ static ChangeInfoResult ShipVehicleChang
 
				} else if (_cur.grffile->grf_version >= 8) {
 
					/* Use translated cargo. Might result in CT_INVALID (first refittable), if cargo is not defined. */
 
					ei->cargo_type = GetCargoTranslation(ctype, _cur.grffile);
 
				} else if (ctype < NUM_CARGO && HasBit(_cargo_mask, ctype)) {
 
				} else if (ctype < NUM_CARGO) {
 
					/* Use untranslated cargo. */
 
					ei->cargo_type = ctype;
 
				} else {
 
@@ -8190,6 +8190,9 @@ static void CalculateRefitMasks()
 
			only_defaultcargo = (ei->refit_mask == 0);
 
		}
 

	
 
		/* Clear invalid cargoslots (from default vehicles or pre-NewCargo GRFs) */
 
		if (!HasBit(_cargo_mask, ei->cargo_type)) ei->cargo_type = CT_INVALID;
 

	
 
		/* Ensure that the vehicle is either not refittable, or that the default cargo is one of the refittable cargoes.
 
		 * Note: Vehicles refittable to no cargo are handle differently to vehicle refittable to a single cargo. The latter might have subtypes. */
 
		if (!only_defaultcargo && (e->type != VEH_SHIP || e->u.ship.old_refittable) && ei->cargo_type != CT_INVALID && !HasBit(ei->refit_mask, ei->cargo_type)) {
0 comments (0 inline, 0 general)