Add: A 'class' property 0x1C for ships. Currently has no effect.

diff -r b5c43c3d5ba5 src/engine.cpp
--- a/src/engine.cpp	Tue Sep 14 17:45:13 2010 +0000
+++ b/src/engine.cpp	Tue Sep 14 20:16:31 2010 +0200
@@ -85,6 +85,8 @@
 		this->info.base_life = 0xFF;
 		/* Set road vehicle tractive effort to the default value */
 		if (type == VEH_ROAD) this->u.road.tractive_effort = 0x4C;
+		/* Set ship class to the default value */
+		if (type == VEH_SHIP) this->u.ship.shipclass = SCL_DIESEL;
 		return;
 	}
 
diff -r b5c43c3d5ba5 src/engine_type.h
--- a/src/engine_type.h	Tue Sep 14 17:45:13 2010 +0000
+++ b/src/engine_type.h	Tue Sep 14 20:16:31 2010 +0200
@@ -59,6 +59,14 @@
 	byte user_def_data;             ///< Property 0x25: "User-defined bit mask" Used only for (very few) NewGRF vehicles
 };
 
+/** Class of a ship, may be used for colouring / visual effects */
+enum ShipClass {
+	SCL_STEAM,  ///< Steam ship, may emit steam
+	SCL_DIESEL, ///< Diesel-powered ship, may emit diesel fumes (default)
+	SCL_SAIL,   ///< Sailing ship (no visual effect)
+	SCL_END,
+};
+
 struct ShipVehicleInfo {
 	byte image_index;
 	byte cost_factor;
@@ -67,6 +75,7 @@
 	byte running_cost;
 	SoundID sfx;
 	bool old_refittable;   ///< Is ship refittable; only used during initialisation. Later use EngineInfo::refit_mask.
+	ShipClass shipclass;   ///< Class of the ship (steam / diesel / sail)
 };
 
 /* AircraftVehicleInfo subtypes, bitmask type.
diff -r b5c43c3d5ba5 src/newgrf.cpp
--- a/src/newgrf.cpp	Tue Sep 14 17:45:13 2010 +0000
+++ b/src/newgrf.cpp	Tue Sep 14 20:16:31 2010 +0200
@@ -999,6 +999,12 @@
 				AlterVehicleListOrder(e->index, buf->ReadExtendedByte());
 				break;
 
+			case 0x1C: { // Ship class (steam / diesel / sail)
+				ShipClass sc = (ShipClass)buf->ReadByte();
+				if (sc < SCL_END) svi->shipclass = sc;
+				break;
+			}
+
 			default:
 				ret = CommonVehicleChangeInfo(ei, prop, buf);
 				break;
diff -r b5c43c3d5ba5 src/table/engines.h
--- a/src/table/engines.h	Tue Sep 14 17:45:13 2010 +0000
+++ b/src/table/engines.h	Tue Sep 14 20:16:31 2010 +0200
@@ -540,8 +540,9 @@
  * @param e running_cost
  * @param f sound effect
  * @param g refittable
+ * shipclass is always SCL_DIESEL, since all default ships are diesels.
  */
-#define SVI(a, b, c, d, e, f, g) { a, b, c, d, e, f, g }
+#define SVI(a, b, c, d, e, f, g) { a, b, c, d, e, f, g, SCL_DIESEL }
 static const ShipVehicleInfo _orig_ship_vehicle_info[] = {
 	/*   image_index    capacity                   refittable
 	 *   |    cost_factor    running_cost          |
