← Back to team overview

widelands-dev team mailing list archive

[Merge] lp:~widelands-dev/widelands/bug-999262_part2 into lp:widelands

 

GunChleoc has proposed merging lp:~widelands-dev/widelands/bug-999262_part2 into lp:widelands.

Requested reviews:
  Widelands Developers (widelands-dev)
Related bugs:
  Bug #999262 in widelands: "Immovable attribs (e.g. stone) are not translatable"
  https://bugs.launchpad.net/widelands/+bug/999262

For more details, see:
https://code.launchpad.net/~widelands-dev/widelands/bug-999262_part2/+merge/227348

Fixed the ugly hack in Worker::informPlayer

- Renamed the "stone" attrib to match the World's "granite" resource
- Added a new optional [resources] section to ProductionSite conf files to handle "out of resource" messages.

The following building types now use these new message texts:

- Mines
- Fishers' buildings
- Quarries
- Wells
- Hunters' buildings
- Lumberjacks'/Woodcutters' buildings
-- 
https://code.launchpad.net/~widelands-dev/widelands/bug-999262_part2/+merge/227348
Your team Widelands Developers is requested to review the proposed merge of lp:~widelands-dev/widelands/bug-999262_part2 into lp:widelands.
=== modified file 'src/ai/defaultai.cc'
--- src/ai/defaultai.cc	2014-07-17 12:34:35 +0000
+++ src/ai/defaultai.cc	2014-07-18 15:23:43 +0000
@@ -596,7 +596,7 @@
 		// stones are not renewable, we will count them only if previous state si nonzero
 		if (field.stones_nearby_ > 0) {
 
-			int32_t const stone_attr = Map_Object_Descr::get_attribute_id("stone");
+			int32_t const stone_attr = Map_Object_Descr::get_attribute_id("granite");
 			field.stones_nearby_ = 0;
 
 			for (uint32_t j = 0; j < immovables.size(); ++j) {
@@ -1872,7 +1872,7 @@
 		if (map.find_immovables(
 		       Area<FCoords>(map.get_fcoords(site.site->get_position()), radius),
 		       nullptr,
-		       FindImmovableAttribute(Map_Object_Descr::get_attribute_id("stone"))) == 0) {
+				 FindImmovableAttribute(Map_Object_Descr::get_attribute_id("granite"))) == 0) {
 			// destruct the building and it's flag (via flag destruction)
 			// the destruction of the flag avoids that defaultAI will have too many
 			// unused roads - if needed the road will be rebuild directly.

=== modified file 'src/logic/production_program.cc'
--- src/logic/production_program.cc	2014-07-16 08:23:42 +0000
+++ src/logic/production_program.cc	2014-07-18 15:23:43 +0000
@@ -1312,13 +1312,13 @@
 void ProductionProgram::ActMine::informPlayer
 	(Game & game, ProductionSite & ps) const
 {
+	assert(strcmp(ps.descr().m_needs_resource_title.c_str(), "") != 0);
+	assert(strcmp(ps.descr().m_needs_resource_message.c_str(), "") != 0);
 	ps.send_message
 		(game,
 		 "mine",
-		 _("Main Vein Exhausted"),
-		 _
-		 ("This mine’s main vein is exhausted. Expect strongly diminished returns on investment. "
-		  "You should consider enhancing, dismantling or destroying it."),
+		 ps.descr().m_needs_resource_title,
+		 ps.descr().m_needs_resource_message,
 		 true,
 		 60 * 60 * 1000,
 		 0);

=== modified file 'src/logic/productionsite.cc'
--- src/logic/productionsite.cc	2014-07-15 10:02:22 +0000
+++ src/logic/productionsite.cc	2014-07-18 15:23:43 +0000
@@ -60,6 +60,24 @@
 	:
 	Building_Descr(_name, _descname, directory, prof, global_s, _tribe)
 {
+	std::cout << "XXXXXXXXXXXXXX ";
+	std::cout << _name;
+	std::cout << "\n";
+	Section * const section = prof.get_section("resources");
+	if (section != nullptr)
+	{
+		m_needs_resource_title = section->get_string("needs_resource_title", "");
+		m_needs_resource_message = section->get_string("needs_resource_message", "");
+		std::cout << m_needs_resource_title;
+		std::cout << "\n";
+		std::cout << m_needs_resource_message;
+		std::cout << "\n";
+	}
+	else
+	{
+		m_needs_resource_title = "";
+		m_needs_resource_message = "";
+	}
 	while
 		(Section::Value const * const op = global_s.get_next_val("output"))
 		try {

=== modified file 'src/logic/productionsite.h'
--- src/logic/productionsite.h	2014-07-11 22:53:34 +0000
+++ src/logic/productionsite.h	2014-07-18 15:23:43 +0000
@@ -89,6 +89,9 @@
 	typedef std::map<std::string, ProductionProgram *> Programs;
 	const Programs & programs() const {return m_programs;}
 
+	std::string m_needs_resource_title;
+	std::string m_needs_resource_message;
+
 
 private:
 	BillOfMaterials m_working_positions;

=== modified file 'src/logic/worker.cc'
--- src/logic/worker.cc	2014-07-17 09:15:53 +0000
+++ src/logic/worker.cc	2014-07-18 15:23:43 +0000
@@ -23,8 +23,6 @@
 #include <memory>
 #include <tuple>
 
-#include <boost/format.hpp>
-
 #include "base/macros.h"
 #include "base/wexception.h"
 #include "economy/economy.h"
@@ -597,34 +595,23 @@
 void Worker::informPlayer
 	(Game & game, Building & building, std::string res_type) const
 {
-	// NOTE this is just an ugly hack for now, to avoid getting messages
-	// NOTE for farms, reed yards, vineyards, etc.
-	if ((res_type != "fish") && (res_type != "stone"))
-		return;
-	// NOTE  AND fish_breeders
-	if (building.descr().name() == "fish_breeders_house")
-		return;
-
-	// TODO "stone" is defined as "granite" in the world. But this code is
-	// erroneus anyways: it translates immovable attribute stone as resource
-	// granite. Instead, the immovable attributes should be made translatable in
-	// the world or the quarry should define its out of stone message in its
-	// configuartion.
-	if (res_type == "stone") res_type = "granite";
-
-	// Translate the Resource name (if it is defined by the world)
-	const World & world = game.world();
-	int32_t residx = world.get_resource(res_type.c_str());
-	if (residx != -1)
-		res_type = world.get_resource(residx)->descname();
-
-	building.send_message
-		(game,
-		 "mine",
-		 (boost::format(_("Out of %s")) % res_type).str(),
-		 (boost::format(_("The worker of this building cannot find any more %s.")) % res_type).str(),
-		 true,
-		 1800000, 0);
+	if(is_a(ProductionSite, &building))
+	{
+		const ProductionSite_Descr& prod_descr =
+					dynamic_cast<const ProductionSite_Descr&>(building.descr());
+
+		if(strcmp(prod_descr.m_needs_resource_title.c_str(), "") != 0)
+		{
+			assert(strcmp(prod_descr.m_needs_resource_message.c_str(), "") != 0);
+			building.send_message
+				(game,
+				 "mine",
+				 prod_descr.m_needs_resource_title,
+				 prod_descr.m_needs_resource_message,
+				 true,
+				 1800000, 0);
+		}
+	}
 }
 
 

=== modified file 'tribes/atlanteans/coalmine/conf'
--- tribes/atlanteans/coalmine/conf	2014-07-14 10:45:44 +0000
+++ tribes/atlanteans/coalmine/conf	2014-07-18 15:23:43 +0000
@@ -39,6 +39,10 @@
 mine=coal 4 100 5 2
 produce=coal:3
 
+[resources]
+needs_resource_title=_Main Coal Vein Exhausted.
+needs_resource_message=_This coal mine’s main vein is exhausted. Expect strongly diminished returns on investment. You should consider dismantling or destroying it.
+
 [idle]
 pics=coalmine_i_??.png
 hotspot=50 56

=== modified file 'tribes/atlanteans/crystalmine/conf'
--- tribes/atlanteans/crystalmine/conf	2014-07-14 10:45:44 +0000
+++ tribes/atlanteans/crystalmine/conf	2014-07-18 15:23:43 +0000
@@ -83,6 +83,10 @@
 call=mine_diamond
 return=skipped
 
+[resources]
+needs_resource_title=_Main Crystal Vein Exhausted.
+needs_resource_message=_This crystal mine’s main vein is exhausted. Expect strongly diminished returns on investment. You should consider dismantling or destroying it.
+
 [idle]
 pics=crystalmine_i_??.png
 hotspot=50 56

=== modified file 'tribes/atlanteans/fishers_house/conf'
--- tribes/atlanteans/fishers_house/conf	2014-05-27 14:14:14 +0000
+++ tribes/atlanteans/fishers_house/conf	2014-07-18 15:23:43 +0000
@@ -22,6 +22,10 @@
 sleep=16000
 worker=fish
 
+[resources]
+needs_resource_title=_Out of Fish
+needs_resource_message=_The fisher working out of this fisher’s house can’t find any fish in his working radius. Remember that you can increase the number of existing fish by building a fishbreeder’s house.
+
 [idle]
 pics=fishers_house_i_??.png  # ???
 hotspot=34 42

=== modified file 'tribes/atlanteans/goldmine/conf'
--- tribes/atlanteans/goldmine/conf	2014-07-14 10:45:44 +0000
+++ tribes/atlanteans/goldmine/conf	2014-07-18 15:23:43 +0000
@@ -40,6 +40,10 @@
 mine=gold 4 100 5 2
 produce=goldore
 
+[resources]
+needs_resource_title=_Main Gold Vein Exhausted.
+needs_resource_message=_This gold mine’s main vein is exhausted. Expect strongly diminished returns on investment. You should consider dismantling or destroying it.
+
 [idle]
 pics=goldmine_i_??.png
 hotspot=50 56

=== modified file 'tribes/atlanteans/hunters_house/conf'
--- tribes/atlanteans/hunters_house/conf	2014-05-27 14:14:14 +0000
+++ tribes/atlanteans/hunters_house/conf	2014-07-18 15:23:43 +0000
@@ -22,6 +22,11 @@
 sleep=35000
 worker=hunt
 
+[resources]
+# TRANSLATORS: "Game" means animals that you can hunt
+needs_resource_title=_Out of Game
+needs_resource_message=_The hunter working out of this hunter’s house can’t find any game in his working radius. Remember that you can increase the number of existing fish by building a fishbreeder’s house.
+
 [idle]
 pics=hunters_house_i_??.png
 hotspot=36 44

=== modified file 'tribes/atlanteans/ironmine/conf'
--- tribes/atlanteans/ironmine/conf	2014-07-14 10:45:44 +0000
+++ tribes/atlanteans/ironmine/conf	2014-07-18 15:23:43 +0000
@@ -40,6 +40,10 @@
 mine=iron 4 100 5 2
 produce=ironore:2
 
+[resources]
+needs_resource_title=_Main Iron Vein Exhausted.
+needs_resource_message=_This iron mine’s main vein is exhausted. Expect strongly diminished returns on investment. You should consider dismantling or destroying it.
+
 [idle]
 pics=ironmine_i_??.png
 hotspot=50 56

=== modified file 'tribes/atlanteans/quarry/conf'
--- tribes/atlanteans/quarry/conf	2014-07-14 10:45:44 +0000
+++ tribes/atlanteans/quarry/conf	2014-07-18 15:23:43 +0000
@@ -19,8 +19,12 @@
 work=_Work
 
 [work]
-worker=cut_stone  # This order is on purpose so that the productivity 
-sleep=25000       # drops fast once all stones are gone.     
+worker=cut_stone  # This order is on purpose so that the productivity
+sleep=25000       # drops fast once all stones are gone.
+
+[resources]
+needs_resource_title=_Out of Rocks
+needs_resource_message=_The stonecutter working at this quarry can’t find any rocks in his working radius.
 
 [idle]
 pics=quarry_i_??.png  # ???

=== modified file 'tribes/atlanteans/stonecutter/conf'
--- tribes/atlanteans/stonecutter/conf	2014-03-16 20:55:15 +0000
+++ tribes/atlanteans/stonecutter/conf	2014-07-18 15:23:43 +0000
@@ -6,7 +6,7 @@
 carrier=1
 
 [cut_stone]
-0=findobject attrib:stone radius:6
+0=findobject attrib:granite radius:6
 1=walk object
 2=playFX ../../../sound/stonecutting/stonecutter 192
 3=animation hacking 10000

=== modified file 'tribes/atlanteans/well/conf'
--- tribes/atlanteans/well/conf	2014-06-06 20:27:28 +0000
+++ tribes/atlanteans/well/conf	2014-07-18 15:23:43 +0000
@@ -22,6 +22,10 @@
 mine=water 1 100 65 2
 produce=water
 
+[resources]
+needs_resource_title=_Out of Water
+needs_resource_message=_The carrier working at this well can’t find any water in his working radius.
+
 [idle]
 pics=well_i_??.png  # ???
 hotspot=31 32

=== modified file 'tribes/atlanteans/woodcutters_house/conf'
--- tribes/atlanteans/woodcutters_house/conf	2014-05-27 14:14:14 +0000
+++ tribes/atlanteans/woodcutters_house/conf	2014-07-18 15:23:43 +0000
@@ -23,6 +23,10 @@
 sleep=30000 # Barbarian lumberjack sleeps 25000
 worker=harvest
 
+[resources]
+needs_resource_title=_Out of Trees
+needs_resource_message=_The woodcutter working at this woodcutter’s house can’t find any trees in his working radius. You should consider dismantling or destroying the building or building a forester’s house.
+
 [idle]
 pics=woodcutters_house_i_??.png
 hotspot=37 44

=== modified file 'tribes/barbarians/coalmine/conf'
--- tribes/barbarians/coalmine/conf	2014-04-13 19:23:43 +0000
+++ tribes/barbarians/coalmine/conf	2014-07-18 15:23:43 +0000
@@ -30,6 +30,10 @@
 mine=coal 2 33 5 17
 produce=coal:2
 
+[resources]
+needs_resource_title=_Main Coal Vein Exhausted
+needs_resource_message=_This coal mine’s main vein is exhausted. Expect strongly diminished returns on investment. You should consider enhancing, dismantling or destroying it.
+
 [idle]
 pics=coalmine_i_??.png
 hotspot=21 36

=== modified file 'tribes/barbarians/deep_coalmine/conf'
--- tribes/barbarians/deep_coalmine/conf	2014-04-13 19:23:43 +0000
+++ tribes/barbarians/deep_coalmine/conf	2014-07-18 15:23:43 +0000
@@ -36,6 +36,10 @@
 mine=coal 2 66 5 17
 produce=coal:2
 
+[resources]
+needs_resource_title=_Main Coal Vein Exhausted
+needs_resource_message=_This coal mine’s main vein is exhausted. Expect strongly diminished returns on investment. You should consider enhancing, dismantling or destroying it.
+
 [idle]
 pics=deep_coalmine_i_??.png
 hotspot=21 37

=== modified file 'tribes/barbarians/deep_goldmine/conf'
--- tribes/barbarians/deep_goldmine/conf	2014-04-13 19:23:43 +0000
+++ tribes/barbarians/deep_goldmine/conf	2014-07-18 15:23:43 +0000
@@ -36,6 +36,10 @@
 mine=gold 2 66 5 17
 produce=goldore:2
 
+[resources]
+needs_resource_title=_Main Gold Vein Exhausted
+needs_resource_message=_This gold mine’s main vein is exhausted. Expect strongly diminished returns on investment. You should consider enhancing, dismantling or destroying it.
+
 [idle]
 pics=deep_goldmine_i_??.png
 hotspot=21 37

=== modified file 'tribes/barbarians/deep_oremine/conf'
--- tribes/barbarians/deep_oremine/conf	2014-04-13 19:23:43 +0000
+++ tribes/barbarians/deep_oremine/conf	2014-07-18 15:23:43 +0000
@@ -36,6 +36,10 @@
 mine=iron 2 66 5 17
 produce=ironore:1
 
+[resources]
+needs_resource_title=_Main Iron Vein Exhausted
+needs_resource_message=_This iron mine’s main vein is exhausted. Expect strongly diminished returns on investment. You should consider enhancing, dismantling or destroying it.
+
 [build]
 pics=deep_oremine_b_??.png
 hotspot=21 37

=== modified file 'tribes/barbarians/deeper_coalmine/conf'
--- tribes/barbarians/deeper_coalmine/conf	2014-04-13 19:23:43 +0000
+++ tribes/barbarians/deeper_coalmine/conf	2014-07-18 15:23:43 +0000
@@ -35,6 +35,10 @@
 mine=coal 2 100 10 2
 produce=coal:3
 
+[resources]
+needs_resource_title=_Main Coal Vein Exhausted
+needs_resource_message=_This coal mine’s main vein is exhausted. Expect strongly diminished returns on investment. This mine can’t be enhanced any further, so you should consider dismantling or destroying it.
+
 [idle]
 pics=deeper_coalmine_i_??.png
 hotspot=60 37

=== modified file 'tribes/barbarians/deeper_goldmine/conf'
--- tribes/barbarians/deeper_goldmine/conf	2014-04-13 19:23:43 +0000
+++ tribes/barbarians/deeper_goldmine/conf	2014-07-18 15:23:43 +0000
@@ -35,6 +35,10 @@
 mine=gold 2 100 10 2
 produce=goldore:2
 
+[resources]
+needs_resource_title=_Main Gold Vein Exhausted
+needs_resource_message=_This gold mine’s main vein is exhausted. Expect strongly diminished returns on investment. This mine can’t be enhanced any further, so you should consider dismantling or destroying it.
+
 [idle]
 pics=deeper_goldmine_i_??.png
 hotspot=60 37

=== modified file 'tribes/barbarians/deeper_oremine/conf'
--- tribes/barbarians/deeper_oremine/conf	2014-07-14 10:45:44 +0000
+++ tribes/barbarians/deeper_oremine/conf	2014-07-18 15:23:43 +0000
@@ -38,6 +38,10 @@
 mine=iron 2 100 10 2
 produce=ironore:2
 
+[resources]
+needs_resource_title=_Main Iron Vein Exhausted
+needs_resource_message=_This iron mine’s main vein is exhausted. Expect strongly diminished returns on investment. This mine can’t be enhanced any further, so you should consider dismantling or destroying it.
+
 [idle]
 pics=deeper_oremine_i_??.png
 hotspot=60 37

=== modified file 'tribes/barbarians/fishers_hut/conf'
--- tribes/barbarians/fishers_hut/conf	2014-05-25 17:43:56 +0000
+++ tribes/barbarians/fishers_hut/conf	2014-07-18 15:23:43 +0000
@@ -21,6 +21,10 @@
 sleep=18000
 worker=fish
 
+[resources]
+needs_resource_title=_Out of Fish
+needs_resource_message=_The fisher working out of this fisher’s hut can’t find any fish in his working radius.
+
 [idle]
 pics=fishers_hut_i_??.png  # ???
 hotspot=39 40

=== modified file 'tribes/barbarians/goldmine/conf'
--- tribes/barbarians/goldmine/conf	2014-04-13 19:23:43 +0000
+++ tribes/barbarians/goldmine/conf	2014-07-18 15:23:43 +0000
@@ -31,6 +31,10 @@
 mine=gold 2 33 5 17
 produce=goldore
 
+[resources]
+needs_resource_title=_Main Gold Vein Exhausted
+needs_resource_message=_This gold mine’s main vein is exhausted. Expect strongly diminished returns on investment. You should consider enhancing, dismantling or destroying it.
+
 [idle]
 pics=goldmine_i_??.png
 hotspot=21 36

=== modified file 'tribes/barbarians/granitemine/conf'
--- tribes/barbarians/granitemine/conf	2014-07-14 10:45:44 +0000
+++ tribes/barbarians/granitemine/conf	2014-07-18 15:23:43 +0000
@@ -28,6 +28,10 @@
 mine=granite 2 100 5 17
 produce=raw_stone:2
 
+[resources]
+needs_resource_title=_Main Granite Vein Exhausted
+needs_resource_message=_This granite mine’s main vein is exhausted. Expect strongly diminished returns on investment. This mine can’t be enhanced any further, so you should consider dismantling or destroying it.
+
 [idle]
 pics=granitemine_i_??.png
 hotspot=42 35

=== modified file 'tribes/barbarians/hunters_hut/conf'
--- tribes/barbarians/hunters_hut/conf	2014-05-25 17:43:56 +0000
+++ tribes/barbarians/hunters_hut/conf	2014-07-18 15:23:43 +0000
@@ -22,6 +22,11 @@
 sleep=35000
 worker=hunt
 
+[resources]
+# TRANSLATORS: "Game" means animals that you can hunt
+needs_resource_title=_Out of Game
+needs_resource_message=_The hunter working out of this hunter’s hut can’t find any game in his working radius. Remember that you can build a gamekeeper’s hut to release more game into the wild.
+
 [idle]
 pics=hunters_hut_i_??.png
 hotspot=45 40

=== modified file 'tribes/barbarians/lumberjacks_hut/conf'
--- tribes/barbarians/lumberjacks_hut/conf	2014-03-15 11:29:32 +0000
+++ tribes/barbarians/lumberjacks_hut/conf	2014-07-18 15:23:43 +0000
@@ -21,6 +21,10 @@
 sleep=25000 # sleeps shorter than any other tribes
 worker=chop
 
+[resources]
+needs_resource_title=_Out of Trees
+needs_resource_message=_The lumberjack working at this lumberjack’s hut can’t find any trees in his working radius. You should consider dismantling or destroying the building or building a rangers’s hut.
+
 [idle]
 pics=lumberjacks_hut_i_??.png
 hotspot=40 38

=== modified file 'tribes/barbarians/oremine/conf'
--- tribes/barbarians/oremine/conf	2014-04-13 19:23:43 +0000
+++ tribes/barbarians/oremine/conf	2014-07-18 15:23:43 +0000
@@ -31,6 +31,10 @@
 mine=iron 2 33 5 17
 produce=ironore
 
+[resources]
+needs_resource_title=_Main Iron Vein Exhausted
+needs_resource_message=_This iron mine’s main vein is exhausted. Expect strongly diminished returns on investment. You should consider enhancing, dismantling or destroying it.
+
 [idle]
 pics=oremine_i_??.png
 hotspot=21 36

=== modified file 'tribes/barbarians/quarry/conf'
--- tribes/barbarians/quarry/conf	2014-07-15 10:02:22 +0000
+++ tribes/barbarians/quarry/conf	2014-07-18 15:23:43 +0000
@@ -18,9 +18,13 @@
 work=_Work
 
 [work]
-worker=cut   # This order is on purpose so that the productivity 
+worker=cut   # This order is on purpose so that the productivity
 sleep=25000  # drops fast once all stones are gone.
 
+[resources]
+needs_resource_title=_Out of Rocks
+needs_resource_message=_The stonemason working at this quarry can’t find any rocks in his working radius.
+
 [idle]
 pics=quarry_i_??.png  # ???
 hotspot=45 40

=== modified file 'tribes/barbarians/stonemason/conf'
--- tribes/barbarians/stonemason/conf	2014-03-16 20:55:15 +0000
+++ tribes/barbarians/stonemason/conf	2014-07-18 15:23:43 +0000
@@ -6,7 +6,7 @@
 carrier=1
 
 [cut]
-0=findobject attrib:stone radius:6
+0=findobject attrib:granite radius:6
 1=walk object
 2=playFX ../../../sound/stonecutting/stonecutter 192
 3=animation hacking 10000

=== modified file 'tribes/barbarians/well/conf'
--- tribes/barbarians/well/conf	2014-06-06 20:27:28 +0000
+++ tribes/barbarians/well/conf	2014-07-18 15:23:43 +0000
@@ -23,6 +23,10 @@
 mine=water 1 100 65 2
 produce=water
 
+[resources]
+needs_resource_title=_Out of Water
+needs_resource_message=_The carrier working at this well can’t find any water in his working radius.
+
 [idle]
 pics=well_i_??.png
 hotspot=19 33

=== modified file 'tribes/empire/coalmine/conf'
--- tribes/empire/coalmine/conf	2014-07-14 10:45:44 +0000
+++ tribes/empire/coalmine/conf	2014-07-18 15:23:43 +0000
@@ -36,6 +36,10 @@
 mine=coal 2 50 5 17
 produce=coal
 
+[resources]
+needs_resource_title=_Main Coal Vein Exhausted
+needs_resource_message=_This coal mine’s main vein is exhausted. Expect strongly diminished returns on investment. You should consider enhancing, dismantling or destroying it.
+
 [idle]
 pics=coalmine_i_??.png
 hotspot=49 49

=== modified file 'tribes/empire/deep_coalmine/conf'
--- tribes/empire/deep_coalmine/conf	2014-07-14 10:45:44 +0000
+++ tribes/empire/deep_coalmine/conf	2014-07-18 15:23:43 +0000
@@ -37,6 +37,10 @@
 mine=coal 2 100 5 2
 produce=coal:3
 
+[resources]
+needs_resource_title=_Main Coal Vein Exhausted
+needs_resource_message=_This coal mine’s main vein is exhausted. Expect strongly diminished returns on investment. This mine can’t be enhanced any further, so you should consider dismantling or destroying it.
+
 [idle]
 pics=deep_coalmine_i_??.png
 hotspot=49 61

=== modified file 'tribes/empire/deep_goldmine/conf'
--- tribes/empire/deep_goldmine/conf	2014-07-14 10:45:44 +0000
+++ tribes/empire/deep_goldmine/conf	2014-07-18 15:23:43 +0000
@@ -37,6 +37,10 @@
 mine=gold 2 100 5 2
 produce=goldore:2
 
+[resources]
+needs_resource_title=_Main Gold Vein Exhausted
+needs_resource_message=_This gold mine’s main vein is exhausted. Expect strongly diminished returns on investment. This mine can’t be enhanced any further, so you should consider dismantling or destroying it.
+
 [idle]
 pics=deep_goldmine_i_??.png
 hotspot=49 61

=== modified file 'tribes/empire/deep_marblemine/conf'
--- tribes/empire/deep_marblemine/conf	2014-04-18 12:43:49 +0000
+++ tribes/empire/deep_marblemine/conf	2014-07-18 15:23:43 +0000
@@ -36,6 +36,10 @@
 mine=granite 2 100 5 2
 produce=marble stone:2
 
+[resources]
+needs_resource_title=_Main Marble Vein Exhausted
+needs_resource_message=_This marble mine’s main vein is exhausted. Expect strongly diminished returns on investment. This mine can’t be enhanced any further, so you should consider dismantling or destroying it.
+
 [idle]
 pics=deep_marblemine_i_??.png
 hotspot=49 61

=== modified file 'tribes/empire/deep_oremine/conf'
--- tribes/empire/deep_oremine/conf	2014-07-14 10:45:44 +0000
+++ tribes/empire/deep_oremine/conf	2014-07-18 15:23:43 +0000
@@ -37,6 +37,10 @@
 mine=iron 2 100 5 2
 produce=ironore:2
 
+[resources]
+needs_resource_title=_Main Iron Vein Exhausted
+needs_resource_message=_This iron mine’s main vein is exhausted. Expect strongly diminished returns on investment. This mine can’t be enhanced any further, so you should consider dismantling or destroying it.
+
 [idle]
 pics=deep_oremine_i_??.png
 hotspot=49 61

=== modified file 'tribes/empire/fishers_house/conf'
--- tribes/empire/fishers_house/conf	2014-05-26 20:36:01 +0000
+++ tribes/empire/fishers_house/conf	2014-07-18 15:23:43 +0000
@@ -23,6 +23,10 @@
 sleep=17000
 worker=fish
 
+[resources]
+needs_resource_title=_Out of Fish
+needs_resource_message=_The fisher working in this fisher’s house can’t find any fish in his working radius.
+
 [idle]
 pics=fishers_house_i_??.png  # ???
 hotspot=42 60

=== modified file 'tribes/empire/goldmine/conf'
--- tribes/empire/goldmine/conf	2014-07-14 10:45:44 +0000
+++ tribes/empire/goldmine/conf	2014-07-18 15:23:43 +0000
@@ -37,6 +37,10 @@
 mine=gold 2 50 5 17
 produce=goldore
 
+[resources]
+needs_resource_title=_Main Gold Vein Exhausted
+needs_resource_message=_This gold mine’s main vein is exhausted. Expect strongly diminished returns on investment. You should consider enhancing, dismantling or destroying it.
+
 [idle]
 pics=goldmine_i_??.png
 hotspot=49 49

=== modified file 'tribes/empire/hunters_house/conf'
--- tribes/empire/hunters_house/conf	2014-05-26 20:36:01 +0000
+++ tribes/empire/hunters_house/conf	2014-07-18 15:23:43 +0000
@@ -22,6 +22,11 @@
 sleep=35000
 worker=hunt
 
+[resources]
+# TRANSLATORS: "Game" means animals that you can hunt
+needs_resource_title=_Out of Game
+needs_resource_message=_The hunter working out of this hunter’s house can’t find any game in his working radius.
+
 [idle]
 pics=hunters_house_i_??.png
 hotspot=54 55

=== modified file 'tribes/empire/lumberjacks_house/conf'
--- tribes/empire/lumberjacks_house/conf	2014-05-26 20:36:01 +0000
+++ tribes/empire/lumberjacks_house/conf	2014-07-18 15:23:43 +0000
@@ -23,6 +23,10 @@
 sleep=30000 # Barbarian lumberjack sleeps 25000
 worker=chop
 
+[resources]
+needs_resource_title=_Out of Trees
+needs_resource_message=_The lumberjack working at this lumberjack’s house can’t find any trees in his working radius. You should consider dismantling or destroying the building or building a forester’s house.
+
 [idle]
 pics=lumberjacks_house_i_??.png
 hotspot=40 59

=== modified file 'tribes/empire/marblemine/conf'
--- tribes/empire/marblemine/conf	2014-06-14 14:20:22 +0000
+++ tribes/empire/marblemine/conf	2014-07-18 15:23:43 +0000
@@ -48,6 +48,10 @@
 mine=granite 2 50 5 17
 produce=stone:2
 
+[resources]
+needs_resource_title=_Main Marble Vein Exhausted
+needs_resource_message=_This marble mine’s main vein is exhausted. Expect strongly diminished returns on investment. You should consider enhancing, dismantling or destroying it.
+
 [work]
 call=mine_marble
 call=mine_stone

=== modified file 'tribes/empire/oremine/conf'
--- tribes/empire/oremine/conf	2014-07-14 10:45:44 +0000
+++ tribes/empire/oremine/conf	2014-07-18 15:23:43 +0000
@@ -37,6 +37,10 @@
 mine=iron 2 50 5 17
 produce=ironore:2
 
+[resources]
+needs_resource_title=_Main Iron Vein Exhausted
+needs_resource_message=_This iron mine’s main vein is exhausted. Expect strongly diminished returns on investment. You should consider enhancing, dismantling or destroying it.
+
 [idle]
 pics=oremine_i_??.png
 hotspot=49 49

=== modified file 'tribes/empire/quarry/conf'
--- tribes/empire/quarry/conf	2014-07-14 10:45:44 +0000
+++ tribes/empire/quarry/conf	2014-07-18 15:23:43 +0000
@@ -22,11 +22,11 @@
 work=_Work
 
 [mine_stone]
-worker=cut_stone  # This order is on purpose so that the productivity 
+worker=cut_stone  # This order is on purpose so that the productivity
 sleep=25000       # drops fast once all stones are gone.
 
 [mine_marble]
-worker=cut_marble  # This order is on purpose so that the productivity 
+worker=cut_marble  # This order is on purpose so that the productivity
 sleep=25000        # drops fast once all stones are gone.
 
 [work]
@@ -39,6 +39,11 @@
 call=mine_marble # 2 of 7 times it finds marble
 return=skipped
 
+[resources]
+needs_resource_title=_Out of Rocks
+needs_resource_message=_The stonemason working at this quarry can’t find any rocks in his working radius.
+
+
 [idle]
 pics=quarry_i_??.png  # ???
 hotspot=42 57

=== modified file 'tribes/empire/stonemason/conf'
--- tribes/empire/stonemason/conf	2014-03-16 20:55:15 +0000
+++ tribes/empire/stonemason/conf	2014-07-18 15:23:43 +0000
@@ -7,7 +7,7 @@
 carrier=1
 
 [cut_stone]
-0=findobject attrib:stone radius:6
+0=findobject attrib:granite radius:6
 1=walk object
 2=playFX ../../../sound/stonecutting/stonecutter 220
 3=animation hacking 10000
@@ -16,7 +16,7 @@
 6=return
 
 [cut_marble]
-0=findobject attrib:stone radius:6
+0=findobject attrib:granite radius:6
 1=walk object
 2=playFX ../../../sound/stonecutting/stonecutter 220
 3=animation hacking 10000

=== modified file 'tribes/empire/well/conf'
--- tribes/empire/well/conf	2014-06-06 20:27:28 +0000
+++ tribes/empire/well/conf	2014-07-18 15:23:43 +0000
@@ -26,6 +26,10 @@
 mine=water 1 100 65 2
 produce=water
 
+[resources]
+needs_resource_title=_Out of Water
+needs_resource_message=_The carrier working at this well can’t find any water in his working radius.
+
 [idle]
 pics=well_i_??.png  # ???
 hotspot=43 58

=== modified file 'world/immovables/stones/blackland_stones1/init.lua'
--- world/immovables/stones/blackland_stones1/init.lua	2014-05-03 08:40:59 +0000
+++ world/immovables/stones/blackland_stones1/init.lua	2014-07-18 15:23:43 +0000
@@ -12,7 +12,7 @@
    descname = _ "Stones 1",
    editor_category = "stones",
    size = "big",
-   attributes = { "stone" },
+   attributes = { "granite" },
    programs = {
       shrink = {
          "remove="

=== modified file 'world/immovables/stones/blackland_stones2/init.lua'
--- world/immovables/stones/blackland_stones2/init.lua	2014-05-03 08:40:59 +0000
+++ world/immovables/stones/blackland_stones2/init.lua	2014-07-18 15:23:43 +0000
@@ -12,7 +12,7 @@
    descname = _ "Stones 2",
    editor_category = "stones",
    size = "big",
-   attributes = { "stone" },
+   attributes = { "granite" },
    programs = {
       shrink = {
          "transform=blackland_stones1"

=== modified file 'world/immovables/stones/blackland_stones3/init.lua'
--- world/immovables/stones/blackland_stones3/init.lua	2014-05-03 08:40:59 +0000
+++ world/immovables/stones/blackland_stones3/init.lua	2014-07-18 15:23:43 +0000
@@ -12,7 +12,7 @@
    descname = _ "Stones 3",
    editor_category = "stones",
    size = "big",
-   attributes = { "stone" },
+   attributes = { "granite" },
    programs = {
       shrink = {
          "transform=blackland_stones2"

=== modified file 'world/immovables/stones/blackland_stones4/init.lua'
--- world/immovables/stones/blackland_stones4/init.lua	2014-05-03 08:40:59 +0000
+++ world/immovables/stones/blackland_stones4/init.lua	2014-07-18 15:23:43 +0000
@@ -12,7 +12,7 @@
    descname = _ "Stones 4",
    editor_category = "stones",
    size = "big",
-   attributes = { "stone" },
+   attributes = { "granite" },
    programs = {
       shrink = {
          "transform=blackland_stones3"

=== modified file 'world/immovables/stones/blackland_stones5/init.lua'
--- world/immovables/stones/blackland_stones5/init.lua	2014-05-03 08:40:59 +0000
+++ world/immovables/stones/blackland_stones5/init.lua	2014-07-18 15:23:43 +0000
@@ -12,7 +12,7 @@
    descname = _ "Stones 5",
    editor_category = "stones",
    size = "big",
-   attributes = { "stone" },
+   attributes = { "granite" },
    programs = {
       shrink = {
          "transform=blackland_stones4"

=== modified file 'world/immovables/stones/blackland_stones6/init.lua'
--- world/immovables/stones/blackland_stones6/init.lua	2014-05-03 08:40:59 +0000
+++ world/immovables/stones/blackland_stones6/init.lua	2014-07-18 15:23:43 +0000
@@ -12,7 +12,7 @@
    descname = _ "Stones 6",
    editor_category = "stones",
    size = "big",
-   attributes = { "stone" },
+   attributes = { "granite" },
    programs = {
       shrink = {
          "transform=blackland_stones5"

=== modified file 'world/immovables/stones/desert_stones1/init.lua'
--- world/immovables/stones/desert_stones1/init.lua	2014-05-03 08:40:59 +0000
+++ world/immovables/stones/desert_stones1/init.lua	2014-07-18 15:23:43 +0000
@@ -12,7 +12,7 @@
    descname = _ "Stones 1",
    editor_category = "stones",
    size = "big",
-   attributes = { "stone" },
+   attributes = { "granite" },
    programs = {
       shrink = {
          "remove="

=== modified file 'world/immovables/stones/desert_stones2/init.lua'
--- world/immovables/stones/desert_stones2/init.lua	2014-05-03 08:40:59 +0000
+++ world/immovables/stones/desert_stones2/init.lua	2014-07-18 15:23:43 +0000
@@ -12,7 +12,7 @@
    descname = _ "Stones 2",
    editor_category = "stones",
    size = "big",
-   attributes = { "stone" },
+   attributes = { "granite" },
    programs = {
       shrink = {
          "transform=desert_stones1"

=== modified file 'world/immovables/stones/desert_stones3/init.lua'
--- world/immovables/stones/desert_stones3/init.lua	2014-05-03 08:40:59 +0000
+++ world/immovables/stones/desert_stones3/init.lua	2014-07-18 15:23:43 +0000
@@ -12,7 +12,7 @@
    descname = _ "Stones 3",
    editor_category = "stones",
    size = "big",
-   attributes = { "stone" },
+   attributes = { "granite" },
    programs = {
       shrink = {
          "transform=desert_stones2"

=== modified file 'world/immovables/stones/desert_stones4/init.lua'
--- world/immovables/stones/desert_stones4/init.lua	2014-05-03 08:40:59 +0000
+++ world/immovables/stones/desert_stones4/init.lua	2014-07-18 15:23:43 +0000
@@ -12,7 +12,7 @@
    descname = _ "Stones 4",
    editor_category = "stones",
    size = "big",
-   attributes = { "stone" },
+   attributes = { "granite" },
    programs = {
       shrink = {
          "transform=desert_stones3"

=== modified file 'world/immovables/stones/desert_stones5/init.lua'
--- world/immovables/stones/desert_stones5/init.lua	2014-05-03 08:40:59 +0000
+++ world/immovables/stones/desert_stones5/init.lua	2014-07-18 15:23:43 +0000
@@ -12,7 +12,7 @@
    descname = _ "Stones 5",
    editor_category = "stones",
    size = "big",
-   attributes = { "stone" },
+   attributes = { "granite" },
    programs = {
       shrink = {
          "transform=desert_stones4"

=== modified file 'world/immovables/stones/desert_stones6/init.lua'
--- world/immovables/stones/desert_stones6/init.lua	2014-05-03 08:40:59 +0000
+++ world/immovables/stones/desert_stones6/init.lua	2014-07-18 15:23:43 +0000
@@ -12,7 +12,7 @@
    descname = _ "Stones 6",
    editor_category = "stones",
    size = "big",
-   attributes = { "stone" },
+   attributes = { "granite" },
    programs = {
       shrink = {
          "transform=desert_stones5"

=== modified file 'world/immovables/stones/greenland_stones1/init.lua'
--- world/immovables/stones/greenland_stones1/init.lua	2014-05-03 08:40:59 +0000
+++ world/immovables/stones/greenland_stones1/init.lua	2014-07-18 15:23:43 +0000
@@ -12,7 +12,7 @@
    descname = _ "Stones 1",
    editor_category = "stones",
    size = "big",
-   attributes = { "stone" },
+   attributes = { "granite" },
    programs = {
       shrink = {
          "remove="

=== modified file 'world/immovables/stones/greenland_stones2/init.lua'
--- world/immovables/stones/greenland_stones2/init.lua	2014-05-03 08:40:59 +0000
+++ world/immovables/stones/greenland_stones2/init.lua	2014-07-18 15:23:43 +0000
@@ -12,7 +12,7 @@
    descname = _ "Stones 2",
    editor_category = "stones",
    size = "big",
-   attributes = { "stone" },
+   attributes = { "granite" },
    programs = {
       shrink = {
          "transform=greenland_stones1"

=== modified file 'world/immovables/stones/greenland_stones3/init.lua'
--- world/immovables/stones/greenland_stones3/init.lua	2014-05-03 08:40:59 +0000
+++ world/immovables/stones/greenland_stones3/init.lua	2014-07-18 15:23:43 +0000
@@ -12,7 +12,7 @@
    descname = _ "Stones 3",
    editor_category = "stones",
    size = "big",
-   attributes = { "stone" },
+   attributes = { "granite" },
    programs = {
       shrink = {
          "transform=greenland_stones2"

=== modified file 'world/immovables/stones/greenland_stones4/init.lua'
--- world/immovables/stones/greenland_stones4/init.lua	2014-05-03 08:40:59 +0000
+++ world/immovables/stones/greenland_stones4/init.lua	2014-07-18 15:23:43 +0000
@@ -12,7 +12,7 @@
    descname = _ "Stones 4",
    editor_category = "stones",
    size = "big",
-   attributes = { "stone" },
+   attributes = { "granite" },
    programs = {
       shrink = {
          "transform=greenland_stones3"

=== modified file 'world/immovables/stones/greenland_stones5/init.lua'
--- world/immovables/stones/greenland_stones5/init.lua	2014-05-03 08:40:59 +0000
+++ world/immovables/stones/greenland_stones5/init.lua	2014-07-18 15:23:43 +0000
@@ -12,7 +12,7 @@
    descname = _ "Stones 5",
    editor_category = "stones",
    size = "big",
-   attributes = { "stone" },
+   attributes = { "granite" },
    programs = {
       shrink = {
          "transform=greenland_stones4"

=== modified file 'world/immovables/stones/greenland_stones6/init.lua'
--- world/immovables/stones/greenland_stones6/init.lua	2014-05-03 08:40:59 +0000
+++ world/immovables/stones/greenland_stones6/init.lua	2014-07-18 15:23:43 +0000
@@ -12,7 +12,7 @@
    descname = _ "Stones 6",
    editor_category = "stones",
    size = "big",
-   attributes = { "stone" },
+   attributes = { "granite" },
    programs = {
       shrink = {
          "transform=greenland_stones5"

=== modified file 'world/immovables/stones/winterland_stones1/init.lua'
--- world/immovables/stones/winterland_stones1/init.lua	2014-05-03 08:40:59 +0000
+++ world/immovables/stones/winterland_stones1/init.lua	2014-07-18 15:23:43 +0000
@@ -12,7 +12,7 @@
    descname = _ "Stones 1",
    editor_category = "stones",
    size = "big",
-   attributes = { "stone" },
+   attributes = { "granite" },
    programs = {
       shrink = {
          "remove="

=== modified file 'world/immovables/stones/winterland_stones2/init.lua'
--- world/immovables/stones/winterland_stones2/init.lua	2014-05-03 08:40:59 +0000
+++ world/immovables/stones/winterland_stones2/init.lua	2014-07-18 15:23:43 +0000
@@ -12,7 +12,7 @@
    descname = _ "Stones 2",
    editor_category = "stones",
    size = "big",
-   attributes = { "stone" },
+   attributes = { "granite" },
    programs = {
       shrink = {
          "transform=winterland_stones1"

=== modified file 'world/immovables/stones/winterland_stones3/init.lua'
--- world/immovables/stones/winterland_stones3/init.lua	2014-05-03 08:40:59 +0000
+++ world/immovables/stones/winterland_stones3/init.lua	2014-07-18 15:23:43 +0000
@@ -12,7 +12,7 @@
    descname = _ "Stones 3",
    editor_category = "stones",
    size = "big",
-   attributes = { "stone" },
+   attributes = { "granite" },
    programs = {
       shrink = {
          "transform=winterland_stones2"

=== modified file 'world/immovables/stones/winterland_stones4/init.lua'
--- world/immovables/stones/winterland_stones4/init.lua	2014-05-03 08:40:59 +0000
+++ world/immovables/stones/winterland_stones4/init.lua	2014-07-18 15:23:43 +0000
@@ -12,7 +12,7 @@
    descname = _ "Stones 4",
    editor_category = "stones",
    size = "big",
-   attributes = { "stone" },
+   attributes = { "granite" },
    programs = {
       shrink = {
          "transform=winterland_stones3"

=== modified file 'world/immovables/stones/winterland_stones5/init.lua'
--- world/immovables/stones/winterland_stones5/init.lua	2014-05-03 08:40:59 +0000
+++ world/immovables/stones/winterland_stones5/init.lua	2014-07-18 15:23:43 +0000
@@ -12,7 +12,7 @@
    descname = _ "Stones 5",
    editor_category = "stones",
    size = "big",
-   attributes = { "stone" },
+   attributes = { "granite" },
    programs = {
       shrink = {
          "transform=winterland_stones4"

=== modified file 'world/immovables/stones/winterland_stones6/init.lua'
--- world/immovables/stones/winterland_stones6/init.lua	2014-05-03 08:40:59 +0000
+++ world/immovables/stones/winterland_stones6/init.lua	2014-07-18 15:23:43 +0000
@@ -12,7 +12,7 @@
    descname = _ "Stones 6",
    editor_category = "stones",
    size = "big",
-   attributes = { "stone" },
+   attributes = { "granite" },
    programs = {
       shrink = {
          "transform=winterland_stones5"


Follow ups