(svn r9200) [NoAI] -Sync with trunk r9138:9198. noai
authorrubidium
Thu, 15 Mar 2007 13:28:11 +0000
branchnoai
changeset 9403 0a2377009af4
parent 9402 45581b218c98
child 9404 ef9e171617a3
(svn r9200) [NoAI] -Sync with trunk r9138:9198.
Makefile.in
src/industry.h
src/industry_cmd.cpp
src/openttd.cpp
src/station_cmd.cpp
src/table/build_industry.h
src/table/industry_land.h
src/train_cmd.cpp
--- a/Makefile.in	Thu Mar 15 11:53:41 2007 +0000
+++ b/Makefile.in	Thu Mar 15 13:28:11 2007 +0000
@@ -96,6 +96,9 @@
 run: all
 	$(Q)cd !!BIN_DIR!! && ./!!TTD!! $(OPENTTD_ARGS)
 
+run-gdb: all
+	$(Q)cd !!BIN_DIR!! && gdb --ex run --args ./!!TTD!! $(OPENTTD_ARGS)
+
 %.o:
 	@for dir in $(SRC_DIRS); do \
 		$(MAKE) -C $$dir $(@:src/%=%); \
--- a/src/industry.h	Thu Mar 15 11:53:41 2007 +0000
+++ b/src/industry.h	Thu Mar 15 13:28:11 2007 +0000
@@ -12,6 +12,7 @@
 
 enum {
 	INVALID_INDUSTRY = 0xFFFF,
+	INDUTILE_NOANIM = 0xFF,        ///< flag to mark industry tiles as having no animation
 };
 
 enum IndustryLifeType {
@@ -83,6 +84,10 @@
 struct IndustryTileSpec {
 	CargoID accepts_cargo[3];             ///< Cargo accepted by this tile
 	Slope slopes_refused;                 ///< slope pattern on which this tile cannot be built
+	byte anim_production;                 ///< Animation frame to start when goods are produced
+	byte anim_next;                       ///< Next frame in an animation
+	bool anim_state;                      ///< When true, the tile has to be drawn using the animation
+                                         ///< state instead of the construction state
 };
 
 const IndustrySpec *GetIndustrySpec(IndustryType thistype);    ///< Array of industries default data
--- a/src/industry_cmd.cpp	Thu Mar 15 11:53:41 2007 +0000
+++ b/src/industry_cmd.cpp	Thu Mar 15 13:28:11 2007 +0000
@@ -233,7 +233,7 @@
 	ind = GetIndustryByTile(ti->tile);
 
 	/* Retrieve pointer to the draw industry tile struct */
-	dits = &_industry_draw_tile_data[gfx << 2 | (_industry_section_draw_animation_state[gfx] ?
+	dits = &_industry_draw_tile_data[gfx << 2 | (GetIndustryTileSpec(gfx)->anim_state ?
 			GetIndustryAnimationState(ti->tile) & 3 :
 			GetIndustryConstructionStage(ti->tile))];
 
@@ -357,9 +357,9 @@
 		am = MoveGoodsToStation(i->xy, i->width, i->height, i->produced_cargo[0], cw);
 		i->last_mo_transported[0] += am;
 		if (am != 0) {
-			uint newgfx = _industry_produce_section[GetIndustryGfx(tile)];
+			uint newgfx = GetIndustryTileSpec(GetIndustryGfx(tile))->anim_production;
 
-			if (newgfx != 0xFF) {
+			if (newgfx != INDUTILE_NOANIM) {
 				ResetIndustryConstructionStage(tile);
 				SetIndustryCompleted(tile, true);
 				SetIndustryGfx(tile, newgfx);
@@ -645,8 +645,8 @@
 
 	TransportIndustryGoods(tile);
 
-	newgfx = _industry_section_animation_next[GetIndustryGfx(tile)];
-	if (newgfx != 255) {
+	newgfx = GetIndustryTileSpec(GetIndustryGfx(tile))->anim_next;
+	if (newgfx != INDUTILE_NOANIM) {
 		ResetIndustryConstructionStage(tile);
 		SetIndustryGfx(tile, newgfx);
 		MarkTileDirtyByTile(tile);
--- a/src/openttd.cpp	Thu Mar 15 11:53:41 2007 +0000
+++ b/src/openttd.cpp	Thu Mar 15 13:28:11 2007 +0000
@@ -1792,6 +1792,25 @@
 		FOR_ALL_VEHICLES(v) {
 			v->cargo_source_xy = IsValidStationID(v->cargo_source) ? GetStation(v->cargo_source)->xy : v->tile;
 		}
+
+		/* Store position of the station where the goods come from, so there
+		 * are no very high payments when stations get removed. However, if the
+		 * station where the goods came from is already removed, the source
+		 * information is lost. In that case we set it to the position of this
+		 * station */
+		Station *st;
+		FOR_ALL_STATIONS(st) {
+			for (CargoID c = 0; c < NUM_CARGO; c++) {
+				GoodsEntry *ge = &st->goods[c];
+
+				/* In old versions, enroute_from used 0xFF as INVALID_STATION */
+				if (CheckSavegameVersion(7) && ge->enroute_from == 0xFF) {
+					ge->enroute_from = INVALID_STATION;
+				}
+
+				ge->enroute_from_xy = IsValidStationID(ge->enroute_from) ? GetStation(ge->enroute_from)->xy : st->xy;
+			}
+		}
 	}
 
 	if (CheckSavegameVersion(45)) {
--- a/src/station_cmd.cpp	Thu Mar 15 11:53:41 2007 +0000
+++ b/src/station_cmd.cpp	Thu Mar 15 13:28:11 2007 +0000
@@ -1629,6 +1629,7 @@
 	SET_EXPENSES_TYPE(EXPENSES_CONSTRUCTION);
 
 	if (!IsClearWaterTile(tile) || tile == 0) return_cmd_error(STR_304B_SITE_UNSUITABLE);
+	if (MayHaveBridgeAbove(tile) && IsBridgeAbove(tile)) return_cmd_error(STR_5007_MUST_DEMOLISH_BRIDGE_FIRST);
 
 	/* allocate and initialize new station */
 	Station *st = new Station(tile);
@@ -1748,6 +1749,8 @@
 
 	if (!(flags & DC_NO_TOWN_RATING) && !CheckIfAuthorityAllows(tile)) return CMD_ERROR;
 
+	if (MayHaveBridgeAbove(tile) && IsBridgeAbove(tile)) return_cmd_error(STR_5007_MUST_DEMOLISH_BRIDGE_FIRST);
+
 	cost = DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
 	if (CmdFailed(cost)) return CMD_ERROR;
 
@@ -1757,6 +1760,8 @@
 		return_cmd_error(STR_304B_SITE_UNSUITABLE);
 	}
 
+	if (MayHaveBridgeAbove(tile_cur) && IsBridgeAbove(tile_cur)) return_cmd_error(STR_5007_MUST_DEMOLISH_BRIDGE_FIRST);
+
 	cost = DoCommand(tile_cur, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
 	if (CmdFailed(cost)) return CMD_ERROR;
 
@@ -2797,18 +2802,6 @@
 	SlObject(st, _station_desc);
 	for (uint i = 0; i != NUM_CARGO; i++) {
 		SlObject(&st->goods[i], _goods_desc);
-
-		/* In older versions, enroute_from had 0xFF as INVALID_STATION, is now 0xFFFF */
-		if (CheckSavegameVersion(7) && st->goods[i].enroute_from == 0xFF) {
-			st->goods[i].enroute_from = INVALID_STATION;
-		}
-		if (CheckSavegameVersion(44)) {
-			/* Store position of the station where the goods come from, so there are no
-			 * very high payments when stations get removed. However, if the station
-			 * where the goods came from is already removed, the source information is
-			 * lost. In that case we set it to the position of this station */
-			st->goods[i].enroute_from_xy = IsValidStationID(st->goods[i].enroute_from) ? GetStation(st->goods[i].enroute_from)->xy : st->xy;
-		}
 	}
 
 	if (st->num_specs != 0) {
--- a/src/table/build_industry.h	Thu Mar 15 11:53:41 2007 +0000
+++ b/src/table/build_industry.h	Thu Mar 15 13:28:11 2007 +0000
@@ -1,5 +1,7 @@
 /* $Id$ */
 
+/** @file build_industry.h */
+
 #ifndef BUILD_INDUSTRY_H
 #define BUILD_INDUSTRY_H
 
@@ -1461,256 +1463,264 @@
 	_industry_create_table_3,
 };
 
-#define MK(c1, c2, c3, sl) \
-	{{c1, c2, c3}, sl}
-
+/** Writes the properties of a industry tile into the IndustryTileSpec struct.
+ * @param c1 first type of cargo accepted for this tile
+ * @param c2 second cargo
+ * @param c3 and third cargo. Those three are in an array
+ * @param s1 slope refused upon choosing a place to build
+ * @param a1 animation frame on production
+ * @param a2 next frame of animation
+ * @param a3 chosses between animation of construction state
+ */
+#define MK(c1, c2, c3, sl, a1, a2, a3) {{c1, c2, c3}, sl, a1, a2, a3}
 static const IndustryTileSpec _industry_tile_specs[] = {
 	/* Coal Mine */
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_PASSENGERS,   CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  true),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_PASSENGERS,   CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
 
 	/* Power Station */
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_PASSENGERS,   CT_INVALID,   CT_COAL,       SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_PASSENGERS,   CT_INVALID,   CT_COAL,       SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
 
 	/* Sawmill */
-	MK(CT_PASSENGERS,   CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_PASSENGERS,   CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_PASSENGERS,   CT_INVALID,   CT_WOOD,       SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
+	MK(CT_PASSENGERS,   CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_PASSENGERS,   CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_PASSENGERS,   CT_INVALID,   CT_WOOD,       SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
 
 	/* Forest Artic, temperate */
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,               17,  INDUTILE_NOANIM,   false), // Chopping forest
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,               16,   false), // Growing forest
 
 	/* Oil refinery */
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_OIL,        SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_PASSENGERS,   CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_OIL,        SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_PASSENGERS,   CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
 
 	/* oil Rig */
-	MK(CT_INVALID,      CT_INVALID,   CT_PASSENGERS, SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_MAIL,       SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
+	MK(CT_INVALID,      CT_INVALID,   CT_PASSENGERS, SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_MAIL,       SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
 
 	/* Oil Wells artic, temperate */
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  true ),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  true ),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  true ),
 
 	/* Farm tropic, arctic and temperate */
-	MK(CT_PASSENGERS,   CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_PASSENGERS,   CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
+	MK(CT_PASSENGERS,   CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_PASSENGERS,   CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
 
 	/* Factory temperate */
-	MK(CT_GRAIN,        CT_STEEL,     CT_LIVESTOCK,  SLOPE_STEEP),
-	MK(CT_GRAIN,        CT_STEEL,     CT_LIVESTOCK,  SLOPE_STEEP),
-	MK(CT_GRAIN,        CT_STEEL,     CT_LIVESTOCK,  SLOPE_STEEP),
-	MK(CT_GRAIN,        CT_STEEL,     CT_LIVESTOCK,  SLOPE_STEEP),
+	MK(CT_GRAIN,        CT_STEEL,     CT_LIVESTOCK,  SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_GRAIN,        CT_STEEL,     CT_LIVESTOCK,  SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_GRAIN,        CT_STEEL,     CT_LIVESTOCK,  SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_GRAIN,        CT_STEEL,     CT_LIVESTOCK,  SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
 
 	/* Printing works */
-	MK(CT_INVALID,      CT_INVALID,   CT_PAPER,      SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_PAPER,      SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_PAPER,      SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_PAPER,      SLOPE_STEEP),
+	MK(CT_INVALID,      CT_INVALID,   CT_PAPER,      SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_PAPER,      SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_PAPER,      SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_PAPER,      SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
 
 	/* Copper ore mine */
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_PASSENGERS,   CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_PASSENGERS,   CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  true ),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_PASSENGERS,   CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_PASSENGERS,   CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
 
 	/* Steel mill */
-	MK(CT_PASSENGERS,   CT_INVALID,   CT_IRON_ORE,   SLOPE_STEEP),
-	MK(CT_PASSENGERS,   CT_INVALID,   CT_IRON_ORE,   SLOPE_STEEP),
-	MK(CT_PASSENGERS,   CT_INVALID,   CT_IRON_ORE,   SLOPE_STEEP),
-	MK(CT_PASSENGERS,   CT_INVALID,   CT_IRON_ORE,   SLOPE_STEEP),
-	MK(CT_PASSENGERS,   CT_INVALID,   CT_IRON_ORE,   SLOPE_STEEP),
-	MK(CT_PASSENGERS,   CT_INVALID,   CT_IRON_ORE,   SLOPE_STEEP),
+	MK(CT_PASSENGERS,   CT_INVALID,   CT_IRON_ORE,   SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_PASSENGERS,   CT_INVALID,   CT_IRON_ORE,   SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_PASSENGERS,   CT_INVALID,   CT_IRON_ORE,   SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_PASSENGERS,   CT_INVALID,   CT_IRON_ORE,   SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_PASSENGERS,   CT_INVALID,   CT_IRON_ORE,   SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_PASSENGERS,   CT_INVALID,   CT_IRON_ORE,   SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_PASSENGERS,   CT_INVALID,   CT_IRON_ORE,   SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
 
 	/* Bank temperate*/
-	MK(CT_PASSENGERS,   CT_INVALID,   CT_VALUABLES,  SLOPE_E),
-	MK(CT_PASSENGERS,   CT_INVALID,   CT_VALUABLES,  SLOPE_S),
+	MK(CT_PASSENGERS,   CT_INVALID,   CT_VALUABLES,  SLOPE_E,      INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_PASSENGERS,   CT_INVALID,   CT_VALUABLES,  SLOPE_S,      INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
 
 	/* Food processing plant, tropic and arctic. CT_MAIZE or CT_WHEAT, CT_LIVESTOCK or CT_FRUIT*/
-	MK(CT_MAIZE,        CT_INVALID,   CT_LIVESTOCK,  SLOPE_STEEP),
-	MK(CT_MAIZE,        CT_INVALID,   CT_LIVESTOCK,  SLOPE_STEEP),
-	MK(CT_MAIZE,        CT_INVALID,   CT_LIVESTOCK,  SLOPE_STEEP),
-	MK(CT_MAIZE,        CT_INVALID,   CT_LIVESTOCK,  SLOPE_STEEP),
+	MK(CT_MAIZE,        CT_INVALID,   CT_LIVESTOCK,  SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_MAIZE,        CT_INVALID,   CT_LIVESTOCK,  SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_MAIZE,        CT_INVALID,   CT_LIVESTOCK,  SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_MAIZE,        CT_INVALID,   CT_LIVESTOCK,  SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
 
 	/* Paper mill */
-	MK(CT_INVALID,      CT_INVALID,   CT_WOOD,       SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_WOOD,       SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_WOOD,       SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_WOOD,       SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_WOOD,       SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_WOOD,       SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_WOOD,       SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_WOOD,       SLOPE_STEEP),
+	MK(CT_INVALID,      CT_INVALID,   CT_WOOD,       SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_WOOD,       SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_WOOD,       SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_WOOD,       SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_WOOD,       SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_WOOD,       SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_WOOD,       SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_WOOD,       SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
 
 	/* Gold mine */
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  true ),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
 
 	/* Bank Sub Arctic */
-	MK(CT_INVALID,      CT_INVALID,   CT_GOLD,       SLOPE_E),
-	MK(CT_INVALID,      CT_INVALID,   CT_GOLD,       SLOPE_S),
+	MK(CT_INVALID,      CT_INVALID,   CT_GOLD,       SLOPE_E,      INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_GOLD,       SLOPE_S,      INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
 
 	/* Diamond mine */
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
 
 	/* Iron ore Mine */
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
 
 	/* Fruit plantation */
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
 
 	/* Rubber plantation */
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
 
 	/* Water supply */
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
 
 	/* Water tower */
-	MK(CT_INVALID,      CT_INVALID,   CT_WATER,      SLOPE_STEEP),
+	MK(CT_INVALID,      CT_INVALID,   CT_WATER,      SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
 
 	/* Factory (sub-tropical) */
-	MK(CT_COPPER_ORE,   CT_WOOD,      CT_RUBBER,     SLOPE_STEEP),
-	MK(CT_COPPER_ORE,   CT_WOOD,      CT_RUBBER,     SLOPE_STEEP),
-	MK(CT_COPPER_ORE,   CT_WOOD,      CT_RUBBER,     SLOPE_STEEP),
-	MK(CT_COPPER_ORE,   CT_WOOD,      CT_RUBBER,     SLOPE_STEEP),
+	MK(CT_COPPER_ORE,   CT_WOOD,      CT_RUBBER,     SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_COPPER_ORE,   CT_WOOD,      CT_RUBBER,     SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_COPPER_ORE,   CT_WOOD,      CT_RUBBER,     SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_COPPER_ORE,   CT_WOOD,      CT_RUBBER,     SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
 
 	/* Lumber mill */
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
 
 	/* Candyfloss forest */
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,              130,   INDUTILE_NOANIM,  false), // Chopping candyfloss
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,               129,  false), // Growing candyfloss
 
 	/* Sweet factory */
-	MK(CT_COTTON_CANDY, CT_TOFFEE,    CT_SUGAR,      SLOPE_STEEP),
-	MK(CT_COTTON_CANDY, CT_TOFFEE,    CT_SUGAR,      SLOPE_STEEP),
-	MK(CT_COTTON_CANDY, CT_TOFFEE,    CT_SUGAR,      SLOPE_STEEP),
-	MK(CT_COTTON_CANDY, CT_TOFFEE,    CT_SUGAR,      SLOPE_STEEP),
+	MK(CT_COTTON_CANDY, CT_TOFFEE,    CT_SUGAR,      SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_COTTON_CANDY, CT_TOFFEE,    CT_SUGAR,      SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_COTTON_CANDY, CT_TOFFEE,    CT_SUGAR,      SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_COTTON_CANDY, CT_TOFFEE,    CT_SUGAR,      SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
 
 	/* Batter farm */
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,              136,   INDUTILE_NOANIM,  false), // Reaping batteries
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,               135,  false), // Growing batteries
 
 	/* Cola wells */
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
 
 	/* Toy shop */
-	MK(CT_INVALID,      CT_INVALID,   CT_TOYS,       SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_TOYS,       SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_TOYS,       SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_TOYS,       SLOPE_STEEP),
+	MK(CT_INVALID,      CT_INVALID,   CT_TOYS,       SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_TOYS,       SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_TOYS,       SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_TOYS,       SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
 
 	/* Toy factory */
-	MK(CT_BATTERIES,    CT_INVALID,   CT_PLASTIC,    SLOPE_STEEP),
-	MK(CT_BATTERIES,    CT_INVALID,   CT_PLASTIC,    SLOPE_STEEP),
-	MK(CT_BATTERIES,    CT_INVALID,   CT_PLASTIC,    SLOPE_STEEP),
-	MK(CT_BATTERIES,    CT_INVALID,   CT_PLASTIC,    SLOPE_STEEP),
-	MK(CT_BATTERIES,    CT_INVALID,   CT_PLASTIC,    SLOPE_STEEP),
-	MK(CT_BATTERIES,    CT_INVALID,   CT_PLASTIC,    SLOPE_STEEP),
+	MK(CT_BATTERIES,    CT_INVALID,   CT_PLASTIC,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_BATTERIES,    CT_INVALID,   CT_PLASTIC,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_BATTERIES,    CT_INVALID,   CT_PLASTIC,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_BATTERIES,    CT_INVALID,   CT_PLASTIC,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_BATTERIES,    CT_INVALID,   CT_PLASTIC,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_BATTERIES,    CT_INVALID,   CT_PLASTIC,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
 
 	/* Plastic Fountain */
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
 
 	/* Fizzy drink factory */
-	MK(CT_BUBBLES,      CT_INVALID,   CT_COLA,       SLOPE_STEEP),
-	MK(CT_BUBBLES,      CT_INVALID,   CT_COLA,       SLOPE_STEEP),
-	MK(CT_BUBBLES,      CT_INVALID,   CT_COLA,       SLOPE_STEEP),
-	MK(CT_BUBBLES,      CT_INVALID,   CT_COLA,       SLOPE_STEEP),
+	MK(CT_BUBBLES,      CT_INVALID,   CT_COLA,       SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_BUBBLES,      CT_INVALID,   CT_COLA,       SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_BUBBLES,      CT_INVALID,   CT_COLA,       SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_BUBBLES,      CT_INVALID,   CT_COLA,       SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
 
 	/* Bubble generator */
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
 
 	/* Toffee quarry */
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
 
 	/* Sugar mine */
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
-	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
+	MK(CT_INVALID,      CT_INVALID,   CT_INVALID,    SLOPE_STEEP,  INDUTILE_NOANIM,   INDUTILE_NOANIM,  false),
 };
 #undef MK
 
--- a/src/table/industry_land.h	Thu Mar 15 11:53:41 2007 +0000
+++ b/src/table/industry_land.h	Thu Mar 15 13:28:11 2007 +0000
@@ -1,5 +1,7 @@
 /* $Id$ */
 
+/** @file industry_land.h */
+
 struct DrawIndustrySpec1Struct {
 	byte x;
 	byte image_1;
@@ -718,6 +720,7 @@
 	M(     0xf8d, PAL_NONE,     0x12a5 | (1 << PALETTE_MODIFIER_COLOR), PAL_NONE,  0,  0, 16, 16,  50, 1),
 };
 
+/* this is ONLY used for Sugar Mine*/
 static const DrawIndustrySpec1Struct _draw_industry_spec1[96] = {
 	{  8,   4,   0,   0},
 	{  6,   0,   1,   0},
@@ -817,14 +820,17 @@
 	{ 10,   4,   0,   4},
 };
 
+/* this is ONLY used for Sugar Mine*/
 static const byte _drawtile_proc1_x[5] = {
 	22, 17, 14, 10, 8
 };
 
+/* this is ONLY used for Sugar Mine*/
 static const byte _drawtile_proc1_y[5] = {
 	73, 70, 69, 66, 41
 };
 
+/* this is ONLY used for Toy Factory*/
 static const DrawIndustrySpec4Struct _industry_anim_offs_3[] = {
 	{255, 255,   0},
 	{  0, 255,   0},
@@ -878,6 +884,7 @@
 	{255, 255,   0},
 };
 
+/* this is ONLY used for Toffee Quarry*/
 static const byte _industry_anim_offs[] = {
 	255,   0,   0,   0,   2,   4,   6,   8,  10,   9,
 	  7,   5,   3,   1, 255,   0,   0,   0,   2,   4,
@@ -888,6 +895,7 @@
 	  2,   4,   6,   8,  10,   9,   7,   5,   3,   1
 };
 
+/* this is ONLY used for the Bubble Generator*/
 static const byte _industry_anim_offs_2[] = {
 	68, 69, 71, 74, 77, 80, 83, 85, 86, 86,
 	86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
@@ -895,100 +903,6 @@
 	77, 76, 75, 74, 73, 72, 71, 70, 69, 68,
 };
 
+/* those are ONLY used for Power Station*/
 static const byte _coal_plant_sparks_x[] = {11, 11, 14, 13, 18, 15};
 static const byte _coal_plant_sparks_y[] = {23, 11,  6,  3,  1,  0};
-
-#define N 255
-/**
- * Next frame in an animation
- * The indices into this table are the ones as described by
- * the enum with GFX_*s in industry_map.h.
- */
-static const byte _industry_section_animation_next[NUM_INDUSTRY_GFXES] = {
-N,   N,   N,   N,   N,   N,   N,   N,
-N,   N,   N,   N,   N,   N,   N,   N,
-N,   16,  N,   N,   N,   N,   N,   N, // <- growing forest
-N,   N,   N,   N,   N,   N,   N,   N,
-N,   N,   N,   N,   N,   N,   N,   N,
-N,   N,   N,   N,   N,   N,   N,   N,
-N,   N,   N,   N,   N,   N,   N,   N,
-N,   N,   N,   N,   N,   N,   N,   N,
-N,   N,   N,   N,   N,   N,   N,   N,
-N,   N,   N,   N,   N,   N,   N,   N,
-N,   N,   N,   N,   N,   N,   N,   N,
-N,   N,   N,   N,   N,   N,   N,   N,
-N,   N,   N,   N,   N,   N,   N,   N,
-N,   N,   N,   N,   N,   N,   N,   N,
-N,   N,   N,   N,   N,   N,   N,   N,
-N,   N,   N,   N,   N,   N,   N,   N,
-N,   N,   129, N,   N,   N,   N,   N, // <- growing candyfloss
-135, N,   N,   N,   N,   N,   N,   N, // <- 'growing' batteries
-N,   N,   N,   N,   N,   N,   N,   N,
-N,   N,   N,   N,   N,   N,   N,   N,
-N,   N,   N,   N,   N,   N,   N,   N,
-N,   N,   N,   N,   N,   N,   N,
-};
-
-/**
- * Animation to start when goods is produced
- * The indices into this table are the ones as described by
- * the enum with GFX_*s in industry_map.h.
- */
-static const byte _industry_produce_section[NUM_INDUSTRY_GFXES] = {
-N,   N,   N,   N,   N,   N,   N,   N,
-N,   N,   N,   N,   N,   N,   N,   N,
-17,  N,   N,   N,   N,   N,   N,   N, // <- chopping forest
-N,   N,   N,   N,   N,   N,   N,   N,
-N,   N,   N,   N,   N,   N,   N,   N,
-N,   N,   N,   N,   N,   N,   N,   N,
-N,   N,   N,   N,   N,   N,   N,   N,
-N,   N,   N,   N,   N,   N,   N,   N,
-N,   N,   N,   N,   N,   N,   N,   N,
-N,   N,   N,   N,   N,   N,   N,   N,
-N,   N,   N,   N,   N,   N,   N,   N,
-N,   N,   N,   N,   N,   N,   N,   N,
-N,   N,   N,   N,   N,   N,   N,   N,
-N,   N,   N,   N,   N,   N,   N,   N,
-N,   N,   N,   N,   N,   N,   N,   N,
-N,   N,   N,   N,   N,   N,   N,   N,
-N,   130, N,   N,   N,   N,   N,   136,  // <- chopping candyfloss and reaping batteries
-N,   N,   N,   N,   N,   N,   N,   N,
-N,   N,   N,   N,   N,   N,   N,   N,
-N,   N,   N,   N,   N,   N,   N,   N,
-N,   N,   N,   N,   N,   N,   N,   N,
-N,   N,   N,   N,   N,   N,   N,
-};
-
-#undef N
-
-
-/**
- * When true, the tile has to be drawn using the animation
- * state instead of the construction state.
- * The indices into this table are the ones as described by
- * the enum with GFX_*s in industry_map.h.
- */
-static const bool _industry_section_draw_animation_state[NUM_INDUSTRY_GFXES] = {
-	false, true,  false, false, false, false, false, false, // <- animated wheel tower of coal mine
-	false, false, false, false, false, false, false, false,
-	false, false, false, false, false, false, false, false,
-	false, false, false, false, false, false, true,  true,  // <- animated oil well
-	true,  false, false, false, false, false, false, false, // <- animated oil well
-	false, false, false, false, false, false, false, false,
-	true,  false, false, false, false, false, false, false, // <- animated wheel tower of copper mine
-	false, false, false, false, false, false, false, false,
-	false, false, false, false, false, false, false, false,
-	false, false, false, false, false, false, false, false,
-	false, false, false, false, false, false, false, false,
-	true,  false, false, false, false, false, false, false, // <- animated wheel tower of gold mine
-	false, false, false, false, false, false, false, false,
-	false, false, false, false, false, false, false, false,
-	false, false, false, false, false, false, false, false,
-	false, false, false, false, false, false, false, false,
-	false, false, false, false, false, false, false, false,
-	false, false, false, false, false, false, false, false,
-	false, false, false, false, false, false, false, false,
-	false, false, false, false, false, false, false, false,
-	false, false, false, false, false, false, false, false,
-	false, false, false, false, false, false, false,
-};
--- a/src/train_cmd.cpp	Thu Mar 15 11:53:41 2007 +0000
+++ b/src/train_cmd.cpp	Thu Mar 15 13:28:11 2007 +0000
@@ -2158,6 +2158,7 @@
 		 * approximation of where the station is */
 		// found station
 		ttfd->best_track = track;
+		ttfd->best_bird_dist = 0;
 		return true;
 	} else {
 		// didn't find station, keep track of the best path so far.