← Back to team overview

widelands-dev team mailing list archive

[Merge] lp:~widelands-dev/widelands/ware_help into lp:widelands

 

GunChleoc has proposed merging lp:~widelands-dev/widelands/ware_help into lp:widelands with lp:~widelands-dev/widelands/one_tribe as a prerequisite.

Requested reviews:
  Widelands Developers (widelands-dev)

For more details, see:
https://code.launchpad.net/~widelands-dev/widelands/ware_help/+merge/276516

Since the website won't be able to parse the new init.lua files, we need better help for wares in the Encyclopedia.

This branch also included some refactoring and added help info for Carrier2 (Ox, Donkey, Horse).
-- 
Your team Widelands Developers is requested to review the proposed merge of lp:~widelands-dev/widelands/ware_help into lp:widelands.
=== modified file 'src/logic/bill_of_materials.h'
--- src/logic/bill_of_materials.h	2014-09-14 11:31:58 +0000
+++ src/logic/bill_of_materials.h	2015-11-03 12:15:41 +0000
@@ -25,7 +25,7 @@
 #include "logic/widelands.h"
 
 namespace Widelands {
-using WareAmount = std::pair<WareIndex, uint32_t>;
+using WareAmount = std::pair<WareIndex, uint8_t>;
 using BillOfMaterials = std::vector<WareAmount>;
 
 // range structure for iterating ware range with index

=== modified file 'src/logic/building.cc'
--- src/logic/building.cc	2015-11-03 12:15:31 +0000
+++ src/logic/building.cc	2015-11-03 12:15:41 +0000
@@ -158,7 +158,7 @@
 		}
 	}
 
-	directory_ = table.get_string("directory");
+	helptext_script_ = table.get_string("helptext_script");
 
 	if (table.has_key("vision_range")) {
 		m_vision_range = table.get_int("vision_range");

=== modified file 'src/logic/building.h'
--- src/logic/building.h	2015-11-03 12:15:31 +0000
+++ src/logic/building.h	2015-11-03 12:15:41 +0000
@@ -92,7 +92,7 @@
 	 */
 	const Buildcost & returned_wares_enhanced() const {return m_return_enhanced;}
 
-	std::string directory() const {return directory_;}
+	std::string helptext_script() const {return helptext_script_;}
 	int32_t get_size() const {return m_size;}
 	bool get_ismine() const {return m_mine;}
 	bool get_isport() const {return m_port;}
@@ -141,7 +141,7 @@
 	Buildcost     m_return_dismantle; // Returned wares on dismantle
 	Buildcost     m_enhance_cost;     // cost for enhancing
 	Buildcost     m_return_enhanced;   // Returned ware for dismantling an enhanced building
-	std::string   directory_;         // The directory where the init files are located
+	std::string   helptext_script_;   // The path and filename to the building's helptext script
 	int32_t       m_size;            // size of the building
 	bool          m_mine;
 	bool          m_port;

=== modified file 'src/logic/immovable.cc'
--- src/logic/immovable.cc	2015-11-03 12:15:31 +0000
+++ src/logic/immovable.cc	2015-11-03 12:15:41 +0000
@@ -195,7 +195,7 @@
 			if (count != value) {
 				throw GameDataError("count is out of range 1 .. 255");
 			}
-			result.insert(std::pair<WareIndex, uint8_t>(idx, count));
+			result.insert(WareAmount(idx, count));
 		} catch (const WException& e) {
 			throw GameDataError("[buildcost] \"%s=%d\": %s", warename.c_str(), value, e.what());
 		}

=== modified file 'src/logic/production_program.cc'
--- src/logic/production_program.cc	2015-11-03 12:15:31 +0000
+++ src/logic/production_program.cc	2015-11-03 12:15:41 +0000
@@ -865,16 +865,17 @@
 {
 	try {
 		for (;;) {
-			m_groups.resize(m_groups.size() + 1);
+			consumed_wares_.resize(consumed_wares_.size() + 1);
 			parse_ware_type_group
-				(parameters, *m_groups.rbegin(), tribes, descr.inputs());
+				(parameters, *consumed_wares_.rbegin(), tribes, descr.inputs());
 			if (!*parameters)
 				break;
 			force_skip(parameters);
 		}
-		if (m_groups.empty())
+		if (consumed_wares_.empty()) {
 			throw GameDataError
 				("expected ware_type1[,ware_type2[,...]][:N] ...");
+		}
 	} catch (const WException & e) {
 		throw GameDataError("consume: %s", e.what());
 	}
@@ -887,7 +888,7 @@
 	size_t const nr_warequeues = warequeues.size();
 	std::vector<uint8_t> consumption_quantities(nr_warequeues, 0);
 
-	Groups l_groups = m_groups; //  make a copy for local modification
+	Groups l_groups = consumed_wares_; //  make a copy for local modification
 	//log("ActConsume::execute(%s):\n", ps.descname().c_str());
 
 	//  Iterate over all input queues and see how much we should consume from
@@ -988,8 +989,8 @@
 {
 	try {
 		for (bool more = true; more; ++parameters) {
-			m_items.resize(m_items.size() + 1);
-			std::pair<WareIndex, uint8_t> & item = *m_items.rbegin();
+			produced_wares_.resize(produced_wares_.size() + 1);
+			WareAmount& item = *produced_wares_.rbegin();
 			skip(parameters);
 			char const * ware = parameters;
 			for (;; ++parameters) {
@@ -1042,14 +1043,14 @@
 {
 	//ps.molog("  Produce\n");
 	assert(ps.m_produced_wares.empty());
-	ps.m_produced_wares = m_items;
+	ps.m_produced_wares = produced_wares_;
 	ps.m_working_positions[0].worker->update_task_buildingwork(game);
 
 	const TribeDescr & tribe = ps.owner().tribe();
-	assert(m_items.size());
+	assert(produced_wares_.size());
 
 	std::vector<std::string> ware_descnames;
-	for (const auto& item_pair : m_items) {
+	for (const auto& item_pair : produced_wares_) {
 		uint8_t const count = item_pair.second;
 		std::string ware_descname = tribe.get_ware_descr(item_pair.first)->descname();
 		// TODO(GunChleoc): needs ngettext when we have one_tribe.
@@ -1084,8 +1085,8 @@
 {
 	try {
 		for (bool more = true; more; ++parameters) {
-			m_items.resize(m_items.size() + 1);
-			std::pair<WareIndex, uint8_t> & item = *m_items.rbegin();
+			recruited_workers_.resize(recruited_workers_.size() + 1);
+			WareAmount& item = *recruited_workers_.rbegin();
 			skip(parameters);
 			char const * worker = parameters;
 			for (;; ++parameters) {
@@ -1137,13 +1138,13 @@
 	(Game & game, ProductionSite & ps) const
 {
 	assert(ps.m_recruited_workers.empty());
-	ps.m_recruited_workers = m_items;
+	ps.m_recruited_workers = recruited_workers_;
 	ps.m_working_positions[0].worker->update_task_buildingwork(game);
 
 	const TribeDescr & tribe = ps.owner().tribe();
-	assert(m_items.size());
+	assert(recruited_workers_.size());
 	std::vector<std::string> worker_descnames;
-	for (const auto& item_pair : m_items) {
+	for (const auto& item_pair : recruited_workers_) {
 		uint8_t const count = item_pair.second;
 		std::string worker_descname = tribe.get_worker_descr(item_pair.first)->descname();
 		// TODO(GunChleoc): needs ngettext when we have one_tribe.
@@ -1726,7 +1727,7 @@
 		std::unique_ptr<LuaTable> actions_table,
 		const EditorGameBase& egbase,
 		ProductionSiteDescr* building)
-	: m_name(_name), m_descname(_descname) {
+	: name_(_name), descname_(_descname) {
 
 	for (const std::string& action_string : actions_table->array_entries<std::string>()) {
 		std::vector<std::string> parts;
@@ -1738,43 +1739,88 @@
 		std::unique_ptr<char []> arguments(new char[parts[1].size() + 1]);
 		strncpy(arguments.get(), parts[1].c_str(), parts[1].size() + 1);
 
-		ProductionProgram::Action* action;
-
-		if (boost::iequals(parts[0], "return"))
-			action = new ActReturn(arguments.get(), *building, egbase.tribes());
-		else if (boost::iequals(parts[0], "call"))
-			action = new ActCall(arguments.get(), *building);
-		else if (boost::iequals(parts[0], "sleep"))
-			action = new ActSleep(arguments.get());
-		else if (boost::iequals(parts[0], "animate"))
-		action = new ActAnimate(arguments.get(), building);
-		else if (boost::iequals(parts[0], "consume"))
-			action = new ActConsume(arguments.get(), *building, egbase.tribes());
-		else if (boost::iequals(parts[0], "produce"))
-			action = new ActProduce(arguments.get(), *building, egbase.tribes());
-		else if (boost::iequals(parts[0], "recruit"))
-			action = new ActRecruit(arguments.get(), *building, egbase.tribes());
-		else if (boost::iequals(parts[0], "worker"))
-			action = new ActWorker(arguments.get(), _name, building, egbase.tribes());
-		else if (boost::iequals(parts[0], "mine"))
-			action = new ActMine(arguments.get(), egbase.world(), _name, building);
-		else if (boost::iequals(parts[0], "check_soldier"))
-			action = new ActCheckSoldier(arguments.get());
-		else if (boost::iequals(parts[0], "train"))
-			action = new ActTrain(arguments.get());
-		else if (boost::iequals(parts[0], "playFX"))
-			action = new ActPlayFX(arguments.get());
-		else if (boost::iequals(parts[0], "construct"))
-			action = new ActConstruct(arguments.get(), _name, building);
-		else if (boost::iequals(parts[0], "check_map"))
-			action = new ActCheckMap(arguments.get());
-		else
+		if (boost::iequals(parts[0], "return")) {
+			actions_.push_back(std::unique_ptr<ProductionProgram::Action>(
+										 new ActReturn(arguments.get(), *building, egbase.tribes())));
+		} else if (boost::iequals(parts[0], "call")) {
+			actions_.push_back(std::unique_ptr<ProductionProgram::Action>(
+										 new ActCall(arguments.get(), *building)));
+		} else if (boost::iequals(parts[0], "sleep")) {
+			actions_.push_back(std::unique_ptr<ProductionProgram::Action>(
+										 new ActSleep(arguments.get())));
+		} else if (boost::iequals(parts[0], "animate")) {
+			actions_.push_back(std::unique_ptr<ProductionProgram::Action>(
+										 new ActAnimate(arguments.get(), building)));
+		} else if (boost::iequals(parts[0], "consume")) {
+			actions_.push_back(std::unique_ptr<ProductionProgram::Action>(
+										 new ActConsume(arguments.get(), *building, egbase.tribes())));
+		} else if (boost::iequals(parts[0], "produce")) {
+			actions_.push_back(std::unique_ptr<ProductionProgram::Action>(
+										 new ActProduce(arguments.get(), *building, egbase.tribes())));
+		} else if (boost::iequals(parts[0], "recruit")) {
+			actions_.push_back(std::unique_ptr<ProductionProgram::Action>(
+										 new ActRecruit(arguments.get(), *building, egbase.tribes())));
+		} else if (boost::iequals(parts[0], "worker")) {
+			actions_.push_back(std::unique_ptr<ProductionProgram::Action>(
+										 new ActWorker(arguments.get(), _name, building, egbase.tribes())));
+		} else if (boost::iequals(parts[0], "mine")) {
+			actions_.push_back(std::unique_ptr<ProductionProgram::Action>(
+										 new ActMine(arguments.get(), egbase.world(), _name, building)));
+		} else if (boost::iequals(parts[0], "check_soldier")) {
+			actions_.push_back(std::unique_ptr<ProductionProgram::Action>(
+										 new ActCheckSoldier(arguments.get())));
+		} else if (boost::iequals(parts[0], "train")) {
+			actions_.push_back(std::unique_ptr<ProductionProgram::Action>(
+										 new ActTrain(arguments.get())));
+		} else if (boost::iequals(parts[0], "playFX")) {
+			actions_.push_back(std::unique_ptr<ProductionProgram::Action>(
+										 new ActPlayFX(arguments.get())));
+		} else if (boost::iequals(parts[0], "construct")) {
+			actions_.push_back(std::unique_ptr<ProductionProgram::Action>(
+										 new ActConstruct(arguments.get(), _name, building)));
+		} else if (boost::iequals(parts[0], "check_map")) {
+			actions_.push_back(std::unique_ptr<ProductionProgram::Action>(
+										 new ActCheckMap(arguments.get())));
+		} else {
 			throw GameDataError("unknown command type \"%s\" in production program \"%s\" for building \"%s\"",
 									  arguments.get(), _name.c_str(), building->name().c_str());
-		m_actions.push_back(action);
+		}
+
+		const ProductionProgram::Action& action = *actions_.back().get();
+		for (const WareTypeGroup& group : action.consumed_wares()) {
+			consumed_wares_.push_back(group);
+		}
+		// Add produced wares. If the ware already exists, increase the amount
+		for (const WareAmount& ware : action.produced_wares()) {
+			if (produced_wares_.count(ware.first) == 1) {
+				produced_wares_.at(ware.first) += ware.second;
+			} else {
+				produced_wares_.insert(ware);
+			}
+		}
+		// Add recruited workers. If the worker already exists, increase the amount
+		for (const WareAmount& worker : action.recruited_workers()) {
+			if (recruited_workers_.count(worker.first) == 1) {
+				recruited_workers_.at(worker.first) += worker.second;
+			} else {
+				recruited_workers_.insert(worker);
+			}
+		}
 	}
-	if (m_actions.empty())
+	if (actions_.empty())
 		throw GameDataError("no actions in production program \"%s\" for building \"%s\"",
 								  _name.c_str(), building->name().c_str());
 }
+
+const std::string & ProductionProgram::name() const {return name_;}
+const std::string & ProductionProgram::descname() const {return descname_;}
+size_t ProductionProgram::size() const {return actions_.size();}
+
+const ProductionProgram::Action& ProductionProgram::operator[](size_t const idx) const {
+	return *actions_.at(idx).get();
 }
+
+const ProductionProgram::Groups& ProductionProgram::consumed_wares() const {return consumed_wares_;}
+const Buildcost& ProductionProgram::produced_wares() const {return produced_wares_;}
+const Buildcost& ProductionProgram::recruited_workers() const {return recruited_workers_;}
+} // namespace Widelands

=== modified file 'src/logic/production_program.h'
--- src/logic/production_program.h	2015-11-03 12:15:31 +0000
+++ src/logic/production_program.h	2015-11-03 12:15:41 +0000
@@ -32,6 +32,7 @@
 #include "base/log.h"
 #include "base/macros.h"
 #include "logic/bill_of_materials.h"
+#include "logic/buildcost.h"
 #include "logic/editor_game_base.h"
 #include "logic/program_result.h"
 #include "logic/training_attribute.h"
@@ -51,6 +52,10 @@
 /// Ordered sequence of actions (at least 1). Has a name.
 struct ProductionProgram {
 
+	/// A group of ware types with a count.
+	using WareTypeGroup = std::pair<std::set<WareIndex>, uint8_t>;
+	using Groups = std::vector<WareTypeGroup>;
+
 	/// Can be executed on a ProductionSite.
 	struct Action {
 		Action() = default;
@@ -72,13 +77,19 @@
 		 */
 		virtual void building_work_failed(Game &, ProductionSite &, Worker &) const;
 
+		const Groups& consumed_wares() const {return consumed_wares_;}
+		const BillOfMaterials& produced_wares() const {return produced_wares_;}
+		const BillOfMaterials& recruited_workers() const {return recruited_workers_;}
+
+	protected:
+		Groups consumed_wares_;
+		BillOfMaterials produced_wares_;
+		BillOfMaterials recruited_workers_;
+
 	private:
 		DISALLOW_COPY_AND_ASSIGN(Action);
 	};
 
-	/// A group of ware types with a count.
-	using WareTypeGroup = std::pair<std::set<WareIndex>, uint8_t>;
-
 	/// Parse a group of ware types followed by an optional count and terminated
 	/// by a space or null. Example: "fish,meat:2".
 	static void parse_ware_type_group
@@ -374,10 +385,6 @@
 	struct ActConsume : public Action {
 		ActConsume(char* parameters, const ProductionSiteDescr&, const Tribes& tribes);
 		void execute(Game &, ProductionSite &) const override;
-		using Groups = std::vector<WareTypeGroup>;
-		const Groups & groups() const {return m_groups;}
-	private:
-		Groups m_groups;
 	};
 
 	/// Produces wares.
@@ -399,10 +406,6 @@
 		ActProduce(char* parameters, const ProductionSiteDescr&, const Tribes& tribes);
 		void execute(Game &, ProductionSite &) const override;
 		bool get_building_work(Game &, ProductionSite &, Worker &) const override;
-		using Items = std::vector<std::pair<WareIndex, uint8_t>>;
-		const Items & items() const {return m_items;}
-	private:
-		Items m_items;
 	};
 
 	/// Recruits workers.
@@ -424,10 +427,6 @@
 		ActRecruit(char* parameters, const ProductionSiteDescr&, const Tribes& tribes);
 		void execute(Game &, ProductionSite &) const override;
 		bool get_building_work(Game &, ProductionSite &, Worker &) const override;
-		using Items = std::vector<std::pair<WareIndex, uint8_t>>;
-		const Items & items() const {return m_items;}
-	private:
-		Items m_items;
 	};
 
 	struct ActMine : public Action {
@@ -518,28 +517,23 @@
 							const EditorGameBase& egbase,
 							ProductionSiteDescr* building);
 
-	~ProductionProgram() {
-		for (Action * action : m_actions) {
-			delete action;
-		}
-	}
-
-	const std::string & name() const {return m_name;}
-	const std::string & descname() const {return m_descname;}
-	int32_t get_size() const {return m_actions.size();}
-	const Action & operator[](size_t const idx) const {
-		assert(idx < m_actions.size());
-		return *m_actions[idx];
-	}
-
-	using Actions = std::vector<Action *>;
-	const Actions & actions() const {return m_actions;}
-
+	const std::string& name() const;
+	const std::string& descname() const;
+
+	size_t size() const;
+	const ProductionProgram::Action& operator[](size_t const idx) const;
+
+	const ProductionProgram::Groups& consumed_wares() const;
+	const Buildcost& produced_wares() const;
+	const Buildcost& recruited_workers() const;
 
 private:
-	std::string m_name;
-	std::string m_descname;
-	Actions     m_actions;
+	std::string name_;
+	std::string descname_;
+	std::vector<std::unique_ptr<Action>> actions_;
+	ProductionProgram::Groups consumed_wares_;
+	Buildcost produced_wares_;
+	Buildcost recruited_workers_;
 };
 
 }

=== modified file 'src/logic/productionsite.cc'
--- src/logic/productionsite.cc	2015-11-03 12:15:31 +0000
+++ src/logic/productionsite.cc	2015-11-03 12:15:41 +0000
@@ -115,7 +115,7 @@
 							throw wexception("duplicated");
 						}
 					}
-					m_inputs.push_back(std::pair<WareIndex, uint8_t>(idx, amount));
+					m_inputs.push_back(WareAmount(idx, amount));
 				} else {
 					throw wexception
 						("tribes do not define a ware type with this name");
@@ -660,7 +660,7 @@
 			}
 
 			State & state = top_state();
-			if (state.program->get_size() <= state.ip)
+			if (state.program->size() <= state.ip)
 				return program_end(game, Completed);
 
 			if (m_anim != descr().get_animation(m_default_anim)) {
@@ -763,7 +763,7 @@
 	// If unsuccessful: Check if we need to abort current program
 	if (!success) {
 		State * state = get_state();
-		if (state->ip < state->program->get_size())
+		if (state->ip < state->program->size())
 			(*state->program)[state->ip].building_work_failed(game, *this, worker);
 	}
 
@@ -782,8 +782,7 @@
 	if (!m_produced_wares.empty()) {
 		//  There is still a produced ware waiting for delivery. Carry it out
 		//  before continuing with the program.
-		std::pair<WareIndex, uint8_t> & ware_type_with_count =
-			*m_produced_wares.rbegin();
+		WareAmount& ware_type_with_count = *m_produced_wares.rbegin();
 		{
 			WareIndex const ware_index = ware_type_with_count.first;
 			const WareDescr & ware_ware_descr =
@@ -805,8 +804,7 @@
 	if (!m_recruited_workers.empty()) {
 		//  There is still a recruited worker waiting to be released. Send it
 		//  out.
-		std::pair<WareIndex, uint8_t> & worker_type_with_count =
-			*m_recruited_workers.rbegin();
+		WareAmount& worker_type_with_count = *m_recruited_workers.rbegin();
 		{
 			const WorkerDescr & worker_descr =
 				*owner().tribe().get_worker_descr(worker_type_with_count.first);
@@ -849,7 +847,7 @@
 		//m_program_timer = true;
 		find_and_start_next_program(game);
 		// m_program_time = schedule_act(game, 10);
-	} else if (state->ip < state->program->get_size()) {
+	} else if (state->ip < state->program->size()) {
 		const ProductionProgram::Action & action = (*state->program)[state->ip];
 		return action.get_building_work(game, *this, worker);
 	}

=== modified file 'src/logic/productionsite.h'
--- src/logic/productionsite.h	2015-11-03 12:15:31 +0000
+++ src/logic/productionsite.h	2015-11-03 12:15:41 +0000
@@ -206,7 +206,7 @@
 protected:
 	struct State {
 		const ProductionProgram * program; ///< currently running program
-		int32_t  ip; ///< instruction pointer
+		size_t  ip; ///< instruction pointer
 		uint32_t phase; ///< micro-step index (instruction dependent)
 		uint32_t flags; ///< pfXXX flags
 
@@ -274,8 +274,8 @@
 	int32_t      m_program_time; ///< timer time
 	int32_t      m_post_timer;    ///< Time to schedule after ends
 
-	ProductionProgram::ActProduce::Items m_produced_wares;
-	ProductionProgram::ActProduce::Items m_recruited_workers;
+	BillOfMaterials m_produced_wares;
+	BillOfMaterials m_recruited_workers;
 	InputQueues m_input_queues; ///< input queues for all inputs
 	std::vector<bool>        m_statistics;
 	uint8_t                  m_last_stat_percent;

=== modified file 'src/logic/tribes/tribe_descr.cc'
--- src/logic/tribes/tribe_descr.cc	2015-11-03 12:15:31 +0000
+++ src/logic/tribes/tribe_descr.cc	2015-11-03 12:15:41 +0000
@@ -159,13 +159,12 @@
 				buildings_.push_back(index);
 
 				// Register construction materials
-				for (std::pair<WareIndex, uint8_t> build_cost : get_building_descr(index)->buildcost()) {
+				for (WareAmount build_cost : get_building_descr(index)->buildcost()) {
 					if (!is_construction_material(build_cost.first)) {
 						construction_materials_.emplace(build_cost.first);
 					}
 				}
-				for (std::pair<WareIndex, uint8_t> enhancement_cost :
-					  get_building_descr(index)->enhancement_cost()) {
+				for (WareAmount enhancement_cost : get_building_descr(index)->enhancement_cost()) {
 					if (!is_construction_material(enhancement_cost.first)) {
 						construction_materials_.emplace(enhancement_cost.first);
 					}

=== modified file 'src/logic/ware_descr.cc'
--- src/logic/ware_descr.cc	2015-11-03 12:15:31 +0000
+++ src/logic/ware_descr.cc	2015-11-03 12:15:41 +0000
@@ -42,7 +42,7 @@
 	}
 	i18n::Textdomain td("tribes");
 
-	directory_ = table.get_string("directory");
+	helptext_script_ = table.get_string("helptext_script");
 
 	std::unique_ptr<LuaTable> items_table = table.get_table("default_target_quantity");
 	for (const std::string& key : items_table->keys<std::string>()) {

=== modified file 'src/logic/ware_descr.h'
--- src/logic/ware_descr.h	2015-11-03 12:15:31 +0000
+++ src/logic/ware_descr.h	2015-11-03 12:15:41 +0000
@@ -62,7 +62,7 @@
   ///  and should not be configurable.
 	WareIndex default_target_quantity(const std::string& tribename) const;
 
-	std::string directory() const {return directory_;}
+	std::string helptext_script() const {return helptext_script_;}
 
 	bool has_demand_check(const std::string& tribename) const;
 
@@ -90,7 +90,7 @@
 	std::set<BuildingIndex> consumers_; // Buildings that consume this ware
 	std::set<BuildingIndex> producers_; // Buildings that produce this ware
 
-	std::string  directory_;  /// The directory where the init files are located
+	std::string  helptext_script_;  // The path and filename to the ware's helptext script
 	DISALLOW_COPY_AND_ASSIGN(WareDescr);
 };
 

=== modified file 'src/logic/worker_descr.cc'
--- src/logic/worker_descr.cc	2015-11-03 12:15:31 +0000
+++ src/logic/worker_descr.cc	2015-11-03 12:15:41 +0000
@@ -83,7 +83,7 @@
 		}
 	}
 
-	directory_ = table.get_string("directory");
+	helptext_script_ = table.get_string("helptext_script");
 
 	// Read the walking animations
 	add_directional_animation(&walk_anims_, "walk");

=== modified file 'src/logic/worker_descr.h'
--- src/logic/worker_descr.h	2015-11-03 12:15:31 +0000
+++ src/logic/worker_descr.h	2015-11-03 12:15:41 +0000
@@ -81,7 +81,7 @@
 			default_target_quantity_ = 1;
 	}
 
-	std::string directory() const {return directory_;}
+	std::string helptext_script() const {return helptext_script_;}
 
 	const DirAnimations & get_walk_anims() const {return walk_anims_;}
 	const DirAnimations & get_right_walk_anims(bool const carries_ware) const {
@@ -106,7 +106,7 @@
 protected:
 	Point             ware_hotspot_;
 	uint32_t          default_target_quantity_;
-	std::string       directory_;  /// The directory where the init files are located
+	std::string       helptext_script_;  // The path and filename to the worker's helptext script
 	DirAnimations     walk_anims_;
 	DirAnimations     walkload_anims_;
 	bool              buildable_;

=== modified file 'src/scripting/lua_map.cc'
--- src/scripting/lua_map.cc	2015-11-03 12:15:31 +0000
+++ src/scripting/lua_map.cc	2015-11-03 12:15:41 +0000
@@ -66,13 +66,22 @@
 
 namespace {
 
-// Pushes a lua table with (name, count) pairs for the given 'wares_map' on the
-// stack. Returns 1.
-int wares_map_to_lua(lua_State* L, const Buildcost& wares_map) {
+// Pushes a lua table with (name, count) pairs for the given 'ware_amount_container' on the
+// stack. The 'type' needs to be WARE or WORKER. Returns 1.
+int wares_or_workers_map_to_lua(lua_State* L, const Buildcost& ware_amount_map, MapObjectType type) {
 	lua_newtable(L);
-	for (const auto& cost : wares_map) {
-		lua_pushstring(L, get_egbase(L).tribes().get_ware_descr(cost.first)->name());
-		lua_pushuint32(L, cost.second);
+	for (const auto& ware_amount : ware_amount_map) {
+		switch (type) {
+		case MapObjectType::WORKER:
+			lua_pushstring(L, get_egbase(L).tribes().get_worker_descr(ware_amount.first)->name());
+			break;
+		case MapObjectType::WARE:
+			lua_pushstring(L, get_egbase(L).tribes().get_ware_descr(ware_amount.first)->name());
+			break;
+		default:
+			throw wexception("wares_or_workers_map_to_lua needs a ware or worker");
+		}
+		lua_pushuint32(L, ware_amount.second);
 		lua_settable(L, -3);
 	}
 	return 1;
@@ -1411,7 +1420,7 @@
 	PROP_RO(LuaBuildingDescription, buildable),
 	PROP_RO(LuaBuildingDescription, conquers),
 	PROP_RO(LuaBuildingDescription, destructible),
-	PROP_RO(LuaBuildingDescription, directory),
+	PROP_RO(LuaBuildingDescription, helptext_script),
 	PROP_RO(LuaBuildingDescription, enhanced),
 	PROP_RO(LuaBuildingDescription, enhanced_from),
 	PROP_RO(LuaBuildingDescription, enhancement_cost),
@@ -1458,7 +1467,7 @@
 			(RO) a list of ware build cost for the building.
 */
 int LuaBuildingDescription::get_build_cost(lua_State * L) {
-	return wares_map_to_lua(L, get()->buildcost());
+	return wares_or_workers_map_to_lua(L, get()->buildcost(), MapObjectType::WARE);
 }
 
 
@@ -1496,12 +1505,12 @@
 }
 
 /* RST
-	.. attribute:: directory
+	.. attribute:: helptext_script
 
-			(RO) The file path of the directory where the building's init files are located.
+			(RO) The path and filename to the building's helptext script
 */
-int LuaBuildingDescription::get_directory(lua_State * L) {
-	lua_pushstring(L, get()->directory());
+int LuaBuildingDescription::get_helptext_script(lua_State * L) {
+	lua_pushstring(L, get()->helptext_script());
 	return 1;
 }
 
@@ -1538,7 +1547,7 @@
 			(RO) a list of ware cost for enhancing to this building type.
 */
 int LuaBuildingDescription::get_enhancement_cost(lua_State * L) {
-	return wares_map_to_lua(L, get()->enhancement_cost());
+	return wares_or_workers_map_to_lua(L, get()->enhancement_cost(), MapObjectType::WARE);
 }
 
 /* RST
@@ -1581,7 +1590,7 @@
 			(RO) a list of wares returned upon dismantling.
 */
 int LuaBuildingDescription::get_returned_wares(lua_State * L) {
-	return wares_map_to_lua(L, get()->returned_wares());
+	return wares_or_workers_map_to_lua(L, get()->returned_wares(), MapObjectType::WARE);
 }
 
 
@@ -1591,7 +1600,7 @@
 			(RO) a list of wares returned upon dismantling an enhanced building.
 */
 int LuaBuildingDescription::get_returned_wares_enhanced(lua_State * L) {
-	return wares_map_to_lua(L, get()->returned_wares_enhanced());
+	return wares_or_workers_map_to_lua(L, get()->returned_wares_enhanced(), MapObjectType::WARE);
 }
 
 
@@ -1679,12 +1688,16 @@
 */
 const char LuaProductionSiteDescription::className[] = "ProductionSiteDescription";
 const MethodType<LuaProductionSiteDescription> LuaProductionSiteDescription::Methods[] = {
+	METHOD(LuaProductionSiteDescription, consumed_wares),
+	METHOD(LuaProductionSiteDescription, produced_wares),
+	METHOD(LuaProductionSiteDescription, recruited_workers),
 	{nullptr, nullptr},
 };
 const PropertyType<LuaProductionSiteDescription> LuaProductionSiteDescription::Properties[] = {
 	PROP_RO(LuaProductionSiteDescription, inputs),
 	PROP_RO(LuaProductionSiteDescription, output_ware_types),
 	PROP_RO(LuaProductionSiteDescription, output_worker_types),
+	PROP_RO(LuaProductionSiteDescription, production_programs),
 	PROP_RO(LuaProductionSiteDescription, working_positions),
 	{nullptr, nullptr, nullptr},
 };
@@ -1750,6 +1763,22 @@
 }
 
 /* RST
+	.. attribute:: production_programs
+
+		(RO) An array with the production program names as string.
+*/
+int LuaProductionSiteDescription::get_production_programs(lua_State * L) {
+	lua_newtable(L);
+	int index = 1;
+	for (const std::pair<std::string, ProductionProgram *>& program : get()->programs()) {
+		lua_pushint32(L, index++);
+		lua_pushstring(L, program.first);
+		lua_settable(L, -3);
+	}
+	return 1;
+}
+
+/* RST
 	.. attribute:: working_positions
 		(RO) An array with :class:`WorkerDescription` containing the workers that
 		can work here with their multiplicity, i.e. for a atlantean mine this
@@ -1774,6 +1803,75 @@
 
 
 /* RST
+	.. attribute:: consumed_wares
+
+		:arg program_name: the name of the production program that we want to get the consumed wares for
+		:type tribename: :class:`string`
+
+		(RO) Returns a table of {{ware name}, ware amount} for the wares consumed by this production program.
+			  Multiple entries in {ware name} are alternatives (OR logic)).
+*/
+int LuaProductionSiteDescription::consumed_wares(lua_State * L) {
+	std::string program_name = luaL_checkstring(L, -1);
+	const Widelands::ProductionSiteDescr::Programs & programs = get()->programs();
+	if (programs.count(program_name) == 1) {
+		const ProductionProgram& program = *programs.at(program_name);
+		lua_newtable(L);
+		int counter = 0;
+		for (const Widelands::ProductionProgram::WareTypeGroup& group: program.consumed_wares()) {
+			lua_pushnumber(L, ++counter);
+			lua_newtable(L);
+			for (const WareIndex& ware_index : group.first) {
+				lua_pushstring(L, get_egbase(L).tribes().get_ware_descr(ware_index)->name());
+				lua_pushnumber(L, group.second);
+				lua_settable(L, -3);
+			}
+			lua_settable(L, -3);
+		}
+	}
+	return 1;
+}
+
+
+/* RST
+	.. attribute:: produced_wares
+
+		:arg program_name: the name of the production program that we want to get the produced wares for
+		:type tribename: :class:`string`
+
+		(RO) Returns a table of {ware name, ware amount} for the wares produced by this production program
+*/
+int LuaProductionSiteDescription::produced_wares(lua_State * L) {
+	std::string program_name = luaL_checkstring(L, -1);
+	const Widelands::ProductionSiteDescr::Programs & programs = get()->programs();
+	if (programs.count(program_name) == 1) {
+		const ProductionProgram& program = *programs.at(program_name);
+		return wares_or_workers_map_to_lua(L, program.produced_wares(), MapObjectType::WARE);
+	}
+	return 1;
+}
+
+/* RST
+	.. attribute:: recruited_workers
+
+		:arg program_name: the name of the production program that we want to get the recruited workers for
+		:type tribename: :class:`string`
+
+		(RO) Returns a table of {worker name, worker amount} for the workers recruited
+			  by this production program
+*/
+int LuaProductionSiteDescription::recruited_workers(lua_State * L) {
+	std::string program_name = luaL_checkstring(L, -1);
+	const Widelands::ProductionSiteDescr::Programs & programs = get()->programs();
+	if (programs.count(program_name) == 1) {
+		const ProductionProgram& program = *programs.at(program_name);
+		return wares_or_workers_map_to_lua(L, program.recruited_workers(), MapObjectType::WORKER);
+	}
+	return 1;
+}
+
+
+/* RST
 MilitarySiteDescription
 -----------------------
 
@@ -2152,7 +2250,7 @@
 };
 const PropertyType<LuaWareDescription> LuaWareDescription::Properties[] = {
 	PROP_RO(LuaWareDescription, consumers),
-	PROP_RO(LuaWareDescription, directory),
+	PROP_RO(LuaWareDescription, helptext_script),
 	PROP_RO(LuaWareDescription, producers),
 	{nullptr, nullptr, nullptr},
 };
@@ -2195,12 +2293,12 @@
 }
 
 /* RST
-	.. attribute:: directory
+	.. attribute:: helptext_script
 
-			(RO) The directory where the ware's init files are located.
+			(RO) The path and filename to the ware's helptext script
 */
-int LuaWareDescription::get_directory(lua_State * L) {
-	lua_pushstring(L, get()->directory());
+int LuaWareDescription::get_helptext_script(lua_State * L) {
+	lua_pushstring(L, get()->helptext_script());
 	return 1;
 }
 
@@ -2263,7 +2361,8 @@
 const PropertyType<LuaWorkerDescription> LuaWorkerDescription::Properties[] = {
 	PROP_RO(LuaWorkerDescription, becomes),
 	PROP_RO(LuaWorkerDescription, buildcost),
-	PROP_RO(LuaWorkerDescription, directory),
+	PROP_RO(LuaWorkerDescription, helptext_script),
+	PROP_RO(LuaWorkerDescription, is_buildable),
 	PROP_RO(LuaWorkerDescription, needed_experience),
 	{nullptr, nullptr, nullptr},
 };
@@ -2325,12 +2424,22 @@
 }
 
 /* RST
-	.. attribute:: directory
-
-			(RO) The directory where the worker's init files are located.
-*/
-int LuaWorkerDescription::get_directory(lua_State * L) {
-	lua_pushstring(L, get()->directory());
+	.. attribute:: helptext_script
+
+			(RO) The path and filename to the worker's helptext script
+*/
+int LuaWorkerDescription::get_helptext_script(lua_State * L) {
+	lua_pushstring(L, get()->helptext_script());
+	return 1;
+}
+
+/* RST
+	.. attribute:: is_buildable
+
+		(RO) returns true if this worker is buildable
+*/
+int LuaWorkerDescription::get_is_buildable(lua_State * L) {
+	lua_pushboolean(L, get()->is_buildable());
 	return 1;
 }
 

=== modified file 'src/scripting/lua_map.h'
--- src/scripting/lua_map.h	2015-11-03 12:15:31 +0000
+++ src/scripting/lua_map.h	2015-11-03 12:15:41 +0000
@@ -226,7 +226,7 @@
 	int get_buildable(lua_State *);
 	int get_conquers(lua_State *);
 	int get_destructible(lua_State *);
-	int get_directory(lua_State *);
+	int get_helptext_script(lua_State *);
 	int get_enhanced(lua_State *);
 	int get_enhanced_from(lua_State *);
 	int get_enhancement_cost(lua_State *);
@@ -308,12 +308,17 @@
 	int get_inputs(lua_State *);
 	int get_output_ware_types(lua_State *);
 	int get_output_worker_types(lua_State *);
+	int get_production_programs(lua_State *);
 	int get_working_positions(lua_State *);
 
 	/*
 	 * Lua methods
 	 */
 
+	int consumed_wares(lua_State *);
+	int produced_wares(lua_State *);
+	int recruited_workers(lua_State *);
+
 	/*
 	 * C methods
 	 */
@@ -454,7 +459,7 @@
 	 * Properties
 	 */
 	int get_consumers(lua_State *);
-	int get_directory(lua_State*);
+	int get_helptext_script(lua_State*);
 	int get_producers(lua_State *);
 
 	/*
@@ -492,7 +497,8 @@
 	 */
 	int get_becomes(lua_State*);
 	int get_buildcost(lua_State*);
-	int get_directory(lua_State*);
+	int get_helptext_script(lua_State*);
+	int get_is_buildable(lua_State*);
 	int get_needed_experience(lua_State*);
 
 	/*

=== modified file 'src/ui_basic/helpwindow.cc'
--- src/ui_basic/helpwindow.cc	2015-11-03 12:15:31 +0000
+++ src/ui_basic/helpwindow.cc	2015-11-03 12:15:41 +0000
@@ -214,7 +214,7 @@
 		   lua->run_script("tribes/scripting/help/building_help.lua"));
 		std::unique_ptr<LuaCoroutine> cr(t->get_coroutine("func"));
 		cr->push_arg(tribe.name());
-		cr->push_arg(building_description.name());
+		cr->push_arg(&building_description);
 		cr->resume();
 		const std::string help_text = cr->pop_string();
 		textarea->set_text(help_text);

=== modified file 'src/wui/encyclopedia_window.cc'
--- src/wui/encyclopedia_window.cc	2015-11-03 12:15:31 +0000
+++ src/wui/encyclopedia_window.cc	2015-11-03 12:15:41 +0000
@@ -25,35 +25,25 @@
 #include <memory>
 #include <set>
 #include <string>
-#include <typeinfo>
 #include <vector>
 
 #include <boost/format.hpp>
 
 #include "base/i18n.h"
-#include "base/macros.h"
-#include "economy/economy.h"
 #include "graphic/graphic.h"
 #include "logic/building.h"
 #include "logic/player.h"
-#include "logic/production_program.h"
-#include "logic/productionsite.h"
 #include "logic/tribes/tribe_descr.h"
 #include "logic/tribes/tribes.h"
 #include "logic/ware_descr.h"
-#include "logic/warelist.h"
+#include "logic/worker_descr.h"
 #include "scripting/lua_interface.h"
 #include "scripting/lua_table.h"
-#include "ui_basic/table.h"
-#include "ui_basic/unique_window.h"
-#include "ui_basic/window.h"
 #include "wui/interactive_player.h"
 
 #define WINDOW_WIDTH std::min(700, g_gr->get_xres() - 40)
 #define WINDOW_HEIGHT std::min(550, g_gr->get_yres() - 40)
-constexpr uint32_t quantityColumnWidth = 100;
-constexpr uint32_t wareColumnWidth = 250;
-#define PRODSITE_GROUPS_WIDTH (WINDOW_WIDTH - wareColumnWidth - quantityColumnWidth - 10)
+
 constexpr int kPadding = 5;
 constexpr int kTabHeight = 35;
 
@@ -79,83 +69,55 @@
 		 &registry,
 		 WINDOW_WIDTH, WINDOW_HEIGHT,
 		 _("Tribal Encyclopedia")),
-	tabs_(this, 0, 0, nullptr),
-	buildings_tab_box_(&tabs_, 0, 0, UI::Box::Horizontal),
-	buildings_box_(&buildings_tab_box_, 0, 0, UI::Box::Horizontal),
-	buildings_    (&buildings_box_, 0, 0,
-						WINDOW_WIDTH / 2 - 1.5 * kPadding, WINDOW_HEIGHT - kTabHeight - 2 * kPadding),
-	building_text_(&buildings_box_, 0, 0,
-						WINDOW_WIDTH / 2 - 1.5 * kPadding, WINDOW_HEIGHT - kTabHeight - 2 * kPadding),
-
-	wares_tab_box_(&tabs_, 0, 0, UI::Box::Horizontal),
-	wares_box_(&wares_tab_box_, 0, 0, UI::Box::Vertical),
-	wares_details_box_(&wares_box_, 0, 0, UI::Box::Horizontal),
-	wares_            (&wares_box_, 0, 0, WINDOW_WIDTH - 2 * kPadding, WINDOW_HEIGHT - 270 - 2 * kPadding),
-	ware_text_        (&wares_box_, 0, 0, WINDOW_WIDTH - 2 * kPadding, 80, ""),
-	prod_sites_       (&wares_details_box_, 0, 0, PRODSITE_GROUPS_WIDTH, 145),
-	cond_table_
-		(&wares_details_box_,
-		 0, 0, WINDOW_WIDTH - PRODSITE_GROUPS_WIDTH - 2 * kPadding, 145),
-
-	workers_tab_box_(&tabs_, 0, 0, UI::Box::Horizontal),
-	workers_box_(&workers_tab_box_, 0, 0, UI::Box::Horizontal),
-	workers_    (&workers_box_, 0, 0,
-						WINDOW_WIDTH / 2 - 1.5 * kPadding, WINDOW_HEIGHT - kTabHeight - 2 * kPadding),
-	worker_text_(&workers_box_, 0, 0,
-						WINDOW_WIDTH / 2 - 1.5 * kPadding, WINDOW_HEIGHT - kTabHeight - 2 * kPadding)
+	tabs_(this, 0, 0, nullptr)
 {
-	// Buildings
-	buildings_box_.add(&buildings_, UI::Align_Left);
-	buildings_box_.add_space(kPadding);
-	buildings_box_.add(&building_text_, UI::Align_Left);
-
-	buildings_tab_box_.add_space(kPadding);
-	buildings_tab_box_.add(&buildings_box_, UI::Align_Left);
-
-	// Wares
-	wares_details_box_.add(&prod_sites_, UI::Align_Left);
-	wares_details_box_.add(&cond_table_, UI::Align_Left);
-	wares_details_box_.set_size(WINDOW_WIDTH,
-										 tabs_.get_inner_h() - wares_.get_h() - ware_text_.get_h() - 4 * kPadding);
-
-	wares_box_.add(&wares_, UI::Align_Left);
-	wares_box_.add_space(kPadding);
-	wares_box_.add(&ware_text_, UI::Align_Left);
-	wares_box_.add_space(kPadding);
-	wares_box_.add(&wares_details_box_, UI::Align_Left);
-	wares_box_.set_size(WINDOW_WIDTH, wares_.get_h() + ware_text_.get_h() + 2 * kPadding);
-
-	wares_tab_box_.add_space(kPadding);
-	wares_tab_box_.add(&wares_box_, UI::Align_Left);
-
-	// Workers
-	workers_box_.add(&workers_, UI::Align_Left);
-	workers_box_.add_space(kPadding);
-	workers_box_.add(&worker_text_, UI::Align_Left);
-
-	workers_tab_box_.add_space(kPadding);
-	workers_tab_box_.add(&workers_box_, UI::Align_Left);
+	std::set<std::string> keys({"buildings", "wares", "workers"});
+
+	const int contents_height = WINDOW_HEIGHT - kTabHeight - 2 * kPadding;
+	const int contents_width = WINDOW_WIDTH / 2 - 1.5 * kPadding;
+
+	for (const std::string& key : keys) {
+		wrapper_boxes_.insert(
+					std::make_pair(key,
+										std::unique_ptr<UI::Box>(new UI::Box(&tabs_, 0, 0, UI::Box::Horizontal))));
+
+		boxes_.insert(
+					std::make_pair(key,
+										std::unique_ptr<UI::Box>(new UI::Box(wrapper_boxes_.at(key).get(),
+																						 0, 0, UI::Box::Horizontal))));
+
+		lists_.insert(
+					std::make_pair(key,
+										std::unique_ptr<UI::Listselect<Widelands::WareIndex>>(
+											new UI::Listselect<Widelands::WareIndex>
+											(boxes_.at(key).get(), 0, 0, contents_width, contents_height))));
+
+		contents_.insert(
+					std::make_pair(key,
+										std::unique_ptr<UI::MultilineTextarea>(
+											new UI::MultilineTextarea
+											(boxes_.at(key).get(), 0, 0, contents_width, contents_height))));
+
+		boxes_.at(key)->add(lists_.at(key).get(), UI::Align_Left);
+		boxes_.at(key)->add_space(kPadding);
+		boxes_.at(key)->add(contents_.at(key).get(), UI::Align_Left);
+
+		wrapper_boxes_.at(key)->add_space(kPadding);
+		wrapper_boxes_.at(key)->add(boxes_.at(key).get(), UI::Align_Left);
+	}
 
 	tabs_.add("encyclopedia_wares", g_gr->images().get("pics/genstats_nrwares.png"),
-				 &wares_tab_box_, _("Wares"));
+				 wrapper_boxes_.at("wares").get(), _("Wares"));
 	tabs_.add("encyclopedia_workers", g_gr->images().get("pics/genstats_nrworkers.png"),
-				 &workers_tab_box_, _("Workers"));
+				 wrapper_boxes_.at("workers").get(), _("Workers"));
 	tabs_.add("encyclopedia_buildings", g_gr->images().get("pics/genstats_nrbuildings.png"),
-				 &buildings_tab_box_, _("Buildings"));
+				 wrapper_boxes_.at("buildings").get(), _("Buildings"));
 	tabs_.set_size(WINDOW_WIDTH, WINDOW_HEIGHT);
 
 	// Content
-	buildings_.selected.connect(boost::bind(&EncyclopediaWindow::building_selected, this, _1));
-
-	wares_.selected.connect(boost::bind(&EncyclopediaWindow::ware_selected, this, _1));
-	prod_sites_.selected.connect(boost::bind(&EncyclopediaWindow::prod_site_selected, this, _1));
-	cond_table_.add_column
-			/** TRANSLATORS: Column title in the Tribal Encyclopedia */
-			(wareColumnWidth, ngettext("Consumed Ware Type", "Consumed Ware Types", 0));
-	cond_table_.add_column (quantityColumnWidth, _("Quantity"));
-	cond_table_.focus();
-
-	workers_.selected.connect(boost::bind(&EncyclopediaWindow::worker_selected, this, _1));
+	lists_.at("buildings")->selected.connect(boost::bind(&EncyclopediaWindow::building_selected, this, _1));
+	lists_.at("wares")->selected.connect(boost::bind(&EncyclopediaWindow::ware_selected, this, _1));
+	lists_.at("workers")->selected.connect(boost::bind(&EncyclopediaWindow::worker_selected, this, _1));
 
 	fill_buildings();
 	fill_wares();
@@ -167,208 +129,101 @@
 }
 
 
+void EncyclopediaWindow::fill_entries(const char* key, std::vector<EncyclopediaEntry>& entries) {
+	std::sort(entries.begin(), entries.end());
+	for (uint32_t i = 0; i < entries.size(); i++) {
+		EncyclopediaEntry cur = entries[i];
+		lists_.at(key)->add(cur.descname_, cur.index_, cur.icon_);
+	}
+	lists_.at(key)->select(0);
+}
+
 void EncyclopediaWindow::fill_buildings() {
-	const TribeDescr& tribe = iaplayer().player().tribe();
-	std::vector<Building> building_vec;
-
 	const Tribes& tribes = iaplayer().egbase().tribes();
+	const TribeDescr& tribe = iaplayer().player().tribe();
+	std::vector<EncyclopediaEntry> entries;
+
 	for (BuildingIndex i = 0; i < tribes.nrbuildings(); ++i) {
 		const BuildingDescr* building = tribes.get_building_descr(i);
 		if (tribe.has_building(i) || building->type() == MapObjectType::MILITARYSITE) {
-			Building b(i, building);
-			building_vec.push_back(b);
+			EncyclopediaEntry entry(i, building->descname(), building->icon());
+			entries.push_back(entry);
 		}
 	}
-
-	std::sort(building_vec.begin(), building_vec.end());
-
-	for (uint32_t i = 0; i < building_vec.size(); i++) {
-		Building cur = building_vec[i];
-		buildings_.add(cur.descr_->descname(), cur.index_, cur.descr_->icon());
-	}
-}
-
-void EncyclopediaWindow::building_selected(uint32_t) {
-	const TribeDescr& tribe = iaplayer().player().tribe();
-	const Widelands::BuildingDescr& selected_building = *tribe.get_building_descr(buildings_.get_selected());
-
-	assert(tribe.has_building(tribe.building_index(selected_building.name())) ||
-			 selected_building.type() == MapObjectType::MILITARYSITE);
-	try {
-		std::unique_ptr<LuaTable> t(
-				iaplayer().egbase().lua().run_script("tribes/scripting/help/building_help.lua"));
-		std::unique_ptr<LuaCoroutine> cr(t->get_coroutine("func"));
-		cr->push_arg(tribe.name());
-		cr->push_arg(selected_building.name());
-		cr->resume();
-		const std::string help_text = cr->pop_string();
-		building_text_.set_text(help_text);
-	} catch (LuaError& err) {
-		building_text_.set_text(err.what());
-	}
-	building_text_.scroll_to_top();
+	fill_entries("buildings", entries);
 }
 
 void EncyclopediaWindow::fill_wares() {
 	const TribeDescr & tribe = iaplayer().player().tribe();
-	std::vector<Ware> ware_vec;
-
-	for (const WareIndex& ware_index : tribe.wares()) {
-		Ware w(ware_index, tribe.get_ware_descr(ware_index));
-		ware_vec.push_back(w);
-	}
-
-	std::sort(ware_vec.begin(), ware_vec.end());
-
-	for (uint32_t i = 0; i < ware_vec.size(); i++) {
-		Ware cur = ware_vec[i];
-		wares_.add(cur.descr_->descname(), cur.index_, cur.descr_->icon());
-	}
-}
-
-void EncyclopediaWindow::ware_selected(uint32_t) {
-	const TribeDescr & tribe = iaplayer().player().tribe();
-	selected_ware_ = tribe.get_ware_descr(wares_.get_selected());
-
-	try {
-		std::unique_ptr<LuaTable> t(
-			iaplayer().egbase().lua().run_script("tribes/scripting/help/ware_help.lua"));
-		std::unique_ptr<LuaCoroutine> cr(t->get_coroutine("func"));
-		cr->push_arg(tribe.name());
-		cr->push_arg(selected_ware_);
-		cr->resume();
-		const std::string help_text = cr->pop_string();
-		ware_text_.set_text(help_text);
-	} catch (LuaError& err) {
-		ware_text_.set_text(err.what());
-	}
-
-	ware_text_.scroll_to_top();
-
-	prod_sites_.clear();
-	cond_table_.clear();
-
-	for (const BuildingIndex& building_index : selected_ware_->producers()) {
-		const BuildingDescr* building_descr = tribe.get_building_descr(building_index);
-		if (tribe.has_building(building_index)) {
-			prod_sites_.add(building_descr->descname(), building_index, building_descr->icon());
-		}
-	}
-
-	if (!prod_sites_.empty()) {
-		prod_sites_.select(0);
-	}
-}
-
-void EncyclopediaWindow::prod_site_selected(uint32_t) {
-	assert(prod_sites_.has_selection());
-	size_t no_of_wares = 0;
-	cond_table_.clear();
-	const TribeDescr & tribe = iaplayer().player().tribe();
-
-	if (upcast(ProductionSiteDescr const, descr, tribe.get_building_descr(prod_sites_.get_selected()))) {
-		const ProductionSiteDescr::Programs & programs = descr->programs();
-
-		//  TODO(unknown): This needs reworking. A program can indeed produce iron even if
-		//  the program name is not any of produce_iron, smelt_iron, prog_iron
-		//  or work. What matters is whether the program has a statement such
-		//  as "produce iron" or "createware iron". The program name is not
-		//  supposed to have any meaning to the game logic except to uniquely
-		//  identify the program.
-		//  Only shows information from the first program that has a name indicating
-		//  that it produces the considered ware type.
-		std::map<std::string, ProductionProgram *>::const_iterator programIt =
-			programs.find(std::string("produce_") + selected_ware_->name());
-
-		if (programIt == programs.end())
-			programIt = programs.find(std::string("smelt_")  + selected_ware_->name());
-
-		if (programIt == programs.end())
-			programIt = programs.find(std::string("smoke_")  + selected_ware_->name());
-
-		if (programIt == programs.end())
-			programIt = programs.find(std::string("mine_")   + selected_ware_->name());
-
-		if (programIt == programs.end())
-			programIt = programs.find("work");
-
-		if (programIt != programs.end()) {
-			const ProductionProgram::Actions & actions =
-				programIt->second->actions();
-
-			for (const ProductionProgram::Action * temp_action : actions) {
-				if (upcast(ProductionProgram::ActConsume const, action, temp_action)) {
-					const ProductionProgram::ActConsume::Groups & groups =
-						action->groups();
-
-					for (const ProductionProgram::WareTypeGroup& temp_group : groups) {
-						const std::set<WareIndex> & ware_types = temp_group.first;
-						assert(ware_types.size());
-						std::vector<std::string> ware_type_descnames;
-						for (const WareIndex& ware_index : ware_types) {
-							ware_type_descnames.push_back(tribe.get_ware_descr(ware_index)->descname());
-						}
-						no_of_wares = no_of_wares + ware_types.size();
-
-						std::string ware_type_names =
-								i18n::localize_list(ware_type_descnames, i18n::ConcatenateWith::OR);
-
-						//  Make sure to detect if someone changes the type so that it
-						//  needs more than 3 decimal digits to represent.
-						static_assert(sizeof(temp_group.second) == 1, "Number is too big for 3 char string.");
-
-						//  picture only of first ware type in group
-						UI::Table<uintptr_t>::EntryRecord & tableEntry =
-							cond_table_.add(0);
-						tableEntry.set_picture
-							(0, tribe.get_ware_descr(*ware_types.begin())->icon(), ware_type_names);
-						tableEntry.set_string(1, std::to_string(static_cast<unsigned int>(temp_group.second)));
-						cond_table_.set_sort_column(0);
-						cond_table_.sort();
-					}
-				}
-			}
-		}
-	}
-	cond_table_.set_column_title(0, ngettext("Consumed Ware Type", "Consumed Ware Types", no_of_wares));
+	std::vector<EncyclopediaEntry> entries;
+
+	for (const WareIndex& i : tribe.wares()) {
+		const WareDescr* ware = tribe.get_ware_descr(i);
+		EncyclopediaEntry entry(i, ware->descname(), ware->icon());
+		entries.push_back(entry);
+	}
+	fill_entries("wares", entries);
 }
 
 void EncyclopediaWindow::fill_workers() {
 	const TribeDescr& tribe = iaplayer().player().tribe();
-	std::vector<Worker> worker_vec;
+	std::vector<EncyclopediaEntry> entries;
 
 	for (const WareIndex& i: tribe.workers()) {
-		WorkerDescr const * worker = tribe.get_worker_descr(i);
-		Worker w(i, worker);
-		worker_vec.push_back(w);
-	}
-
-	std::sort(worker_vec.begin(), worker_vec.end());
-
-	for (uint32_t i = 0; i < worker_vec.size(); i++) {
-		Worker cur = worker_vec[i];
-		workers_.add(cur.descr_->descname(), cur.index_, cur.descr_->icon());
-	}
+		const WorkerDescr* worker = tribe.get_worker_descr(i);
+		EncyclopediaEntry entry(i, worker->descname(), worker->icon());
+		entries.push_back(entry);
+	}
+	fill_entries("workers", entries);
+}
+
+
+template<typename T>
+void EncyclopediaWindow::entry_selected(const Widelands::TribeDescr& tribe,
+													 const T& map_object,
+													 const char* tab,
+													 const char* script_name) {
+	try {
+		std::unique_ptr<LuaTable> t(
+			iaplayer().egbase().lua().run_script(script_name));
+		std::unique_ptr<LuaCoroutine> cr(t->get_coroutine("func"));
+		cr->push_arg(tribe.name());
+		cr->push_arg(&map_object);
+		cr->resume();
+		const std::string help_text = cr->pop_string();
+		contents_.at(tab)->set_text((boost::format("%s%s")
+									  % heading(map_object.descname())
+									  % help_text).str());
+	} catch (LuaError& err) {
+		contents_.at(tab)->set_text(err.what());
+	}
+	contents_.at(tab)->scroll_to_top();
+}
+
+
+void EncyclopediaWindow::building_selected(uint32_t) {
+	const TribeDescr& tribe = iaplayer().player().tribe();
+	entry_selected<Widelands::BuildingDescr>(
+				tribe,
+				*tribe.get_building_descr(lists_.at("buildings")->get_selected()),
+				"buildings",
+				"tribes/scripting/help/building_help.lua");
+}
+
+void EncyclopediaWindow::ware_selected(uint32_t) {
+	const TribeDescr& tribe = iaplayer().player().tribe();
+	entry_selected<Widelands::WareDescr>(
+				tribe,
+				*tribe.get_ware_descr(lists_.at("wares")->get_selected()),
+				"wares",
+				"tribes/scripting/help/ware_help.lua");
 }
 
 void EncyclopediaWindow::worker_selected(uint32_t) {
 	const TribeDescr& tribe = iaplayer().player().tribe();
-	const Widelands::WorkerDescr& selected_worker = *tribe.get_worker_descr(workers_.get_selected());
-
-	try {
-		std::unique_ptr<LuaTable> t(
-			iaplayer().egbase().lua().run_script("tribes/scripting/help/worker_help.lua"));
-		std::unique_ptr<LuaCoroutine> cr(t->get_coroutine("func"));
-		cr->push_arg(tribe.name());
-		cr->push_arg(&selected_worker);
-		cr->resume();
-		const std::string help_text = cr->pop_string();
-		worker_text_.set_text((boost::format("%s%s")
-									  % heading(selected_worker.descname())
-									  % help_text).str());
-	} catch (LuaError& err) {
-		worker_text_.set_text(err.what());
-	}
-
-	worker_text_.scroll_to_top();
+	entry_selected<Widelands::WorkerDescr>(
+				tribe,
+				*tribe.get_worker_descr(lists_.at("workers")->get_selected()),
+				"workers",
+				"tribes/scripting/help/worker_help.lua");
 }

=== modified file 'src/wui/encyclopedia_window.h'
--- src/wui/encyclopedia_window.h	2015-11-03 12:15:31 +0000
+++ src/wui/encyclopedia_window.h	2015-11-03 12:15:41 +0000
@@ -20,9 +20,11 @@
 #ifndef WL_WUI_ENCYCLOPEDIA_WINDOW_H
 #define WL_WUI_ENCYCLOPEDIA_WINDOW_H
 
-#include "logic/building.h"
-#include "logic/ware_descr.h"
-#include "logic/worker_descr.h"
+#include <map>
+#include <memory>
+
+#include "logic/instances.h"
+#include "logic/tribes/tribe_descr.h"
 #include "ui_basic/box.h"
 #include "ui_basic/listselect.h"
 #include "ui_basic/multilinetextarea.h"
@@ -31,92 +33,61 @@
 #include "ui_basic/unique_window.h"
 #include "ui_basic/window.h"
 
-namespace Widelands {
-class BuildingDescr;
-class WareDescr;
-class WorkerDescr;
-class TribeDescr;
-}
 
 class InteractivePlayer;
 
 struct EncyclopediaWindow : public UI::UniqueWindow {
 	EncyclopediaWindow(InteractivePlayer &, UI::UniqueWindow::Registry &);
 private:
-	struct Building {
-		Building(Widelands::BuildingIndex i, const Widelands::BuildingDescr * descr)
-			:
-			index_(i),
-			descr_(descr)
-			{}
-		Widelands::BuildingIndex index_;
-		const Widelands::BuildingDescr * descr_;
-
-		bool operator<(const Building o) const {
-			return descr_->descname() < o.descr_->descname();
-		}
-	};
-
-	struct Ware {
-		Ware(Widelands::WareIndex i, const Widelands::WareDescr * descr)
-			:
-			index_(i),
-			descr_(descr)
-			{}
-		Widelands::WareIndex index_;
-		const Widelands::WareDescr * descr_;
-
-		bool operator<(const Ware o) const {
-			return descr_->descname() < o.descr_->descname();
-		}
-	};
-
-	struct Worker {
-		Worker(Widelands::WareIndex i, const Widelands::WorkerDescr * descr)
-			:
-			index_(i),
-			descr_(descr)
-			{}
-		Widelands::WareIndex index_;
-		const Widelands::WorkerDescr * descr_;
-
-		bool operator<(const Worker o) const {
-			return descr_->descname() < o.descr_->descname();
-		}
-	};
-
+	struct EncyclopediaEntry {
+		EncyclopediaEntry(const EncyclopediaEntry& other) :
+			EncyclopediaEntry(other.index_, other.descname_, other.icon_)
+		{}
+		EncyclopediaEntry(const Widelands::WareIndex index, const std::string& descname, const Image* icon)
+			:
+			index_(index),
+			descname_(descname),
+			icon_(icon)
+			{}
+		Widelands::WareIndex index_;
+		std::string descname_;
+		const Image* icon_;
+
+		bool operator<(const EncyclopediaEntry other) const {
+			return descname_ < other.descname_;
+		}
+	};
 
 	InteractivePlayer & iaplayer() const;
-	UI::TabPanel tabs_;
 
-	// Buildings
-	UI::Box buildings_tab_box_;  // Wrapper box so we can add some padding
-	UI::Box buildings_box_;      // Main contents box for Buildings tab
-	UI::Listselect<Widelands::BuildingIndex> buildings_;
-	UI::MultilineTextarea building_text_;
+	// Fill table of contents
+	void fill_entries(const char* key, std::vector<EncyclopediaEntry>& entries);
 	void fill_buildings();
+	void fill_wares();
+	void fill_workers();
+
+	// Update contents when an entry is selected
+	template<typename T>
+	void entry_selected(const Widelands::TribeDescr& tribe,
+							  const T& map_object,
+							  const char* tab,
+							  const char* script_name);
+
 	void building_selected(uint32_t);
-
-	// Wares
-	UI::Box wares_tab_box_;      // Wrapper box so we can add some padding
-	UI::Box wares_box_;          // Main contents box for Wares tab
-	UI::Box wares_details_box_;  // Horizontal alignment for prod_sites_ and cond_table_
-	UI::Listselect<Widelands::WareIndex> wares_;
-	UI::MultilineTextarea    ware_text_;
-	UI::Listselect<Widelands::BuildingIndex> prod_sites_;
-	UI::Table     <uintptr_t>                 cond_table_;
-	Widelands::WareDescr const * selected_ware_;
-	void fill_wares();
 	void ware_selected(uint32_t);
-	void prod_site_selected(uint32_t);
-
-	// Workers
-	UI::Box workers_tab_box_;  // Wrapper box so we can add some padding
-	UI::Box workers_box_;      // Main contents box for Workers tab
-	UI::Listselect<Widelands::WareIndex> workers_;
-	UI::MultilineTextarea worker_text_;
-	void fill_workers();
 	void worker_selected(uint32_t);
+
+	// UI elements
+	UI::TabPanel tabs_;
+
+	// Wrapper boxes so we can add some padding
+	std::map<std::string, std::unique_ptr<UI::Box>> wrapper_boxes_;
+	// Main contents boxes for each tab
+	std::map<std::string, std::unique_ptr<UI::Box>> boxes_;
+	// A tab's table of contents
+	std::map<std::string, std::unique_ptr<UI::Listselect<Widelands::WareIndex>>> lists_;
+	// The contents shown when an entry is selected in a tab
+	std::map<std::string, std::unique_ptr<UI::MultilineTextarea>> contents_;
 };
 
 #endif  // end of include guard: WL_WUI_ENCYCLOPEDIA_WINDOW_H

=== modified file 'tribes/buildings/militarysites/atlanteans/castle/init.lua'
--- tribes/buildings/militarysites/atlanteans/castle/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/militarysites/atlanteans/castle/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "atlanteans_castle",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("atlanteans_building", "Castle"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "big",
 

=== modified file 'tribes/buildings/militarysites/atlanteans/guardhall/init.lua'
--- tribes/buildings/militarysites/atlanteans/guardhall/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/militarysites/atlanteans/guardhall/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "atlanteans_guardhall",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("atlanteans_building", "Guardhall"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "medium",
 

=== modified file 'tribes/buildings/militarysites/atlanteans/guardhouse/init.lua'
--- tribes/buildings/militarysites/atlanteans/guardhouse/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/militarysites/atlanteans/guardhouse/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "atlanteans_guardhouse",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("atlanteans_building", "Guardhouse"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "small",
 

=== modified file 'tribes/buildings/militarysites/atlanteans/tower/init.lua'
--- tribes/buildings/militarysites/atlanteans/tower/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/militarysites/atlanteans/tower/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "atlanteans_tower",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("atlanteans_building", "Tower"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "medium",
    vision_range = 17,

=== modified file 'tribes/buildings/militarysites/atlanteans/tower_high/init.lua'
--- tribes/buildings/militarysites/atlanteans/tower_high/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/militarysites/atlanteans/tower_high/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "atlanteans_tower_high",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("atlanteans_building", "High Tower"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "medium",
    vision_range = 21,

=== modified file 'tribes/buildings/militarysites/atlanteans/tower_small/init.lua'
--- tribes/buildings/militarysites/atlanteans/tower_small/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/militarysites/atlanteans/tower_small/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "atlanteans_tower_small",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("atlanteans_building", "Small Tower"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "small",
    vision_range = 13,

=== modified file 'tribes/buildings/militarysites/barbarians/barrier/init.lua'
--- tribes/buildings/militarysites/barbarians/barrier/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/militarysites/barbarians/barrier/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "barbarians_barrier",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("barbarians_building", "Barrier"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "medium",
 

=== modified file 'tribes/buildings/militarysites/barbarians/citadel/init.lua'
--- tribes/buildings/militarysites/barbarians/citadel/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/militarysites/barbarians/citadel/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "barbarians_citadel",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("barbarians_building", "Citadel"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "big",
 

=== modified file 'tribes/buildings/militarysites/barbarians/fortress/init.lua'
--- tribes/buildings/militarysites/barbarians/fortress/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/militarysites/barbarians/fortress/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "barbarians_fortress",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("barbarians_building", "Fortress"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "big",
    enhancement = "barbarians_citadel",

=== modified file 'tribes/buildings/militarysites/barbarians/sentry/init.lua'
--- tribes/buildings/militarysites/barbarians/sentry/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/militarysites/barbarians/sentry/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "barbarians_sentry",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("barbarians_building", "Sentry"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "small",
 

=== modified file 'tribes/buildings/militarysites/barbarians/tower/init.lua'
--- tribes/buildings/militarysites/barbarians/tower/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/militarysites/barbarians/tower/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "barbarians_tower",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("barbarians_building", "Tower"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "medium",
    vision_range = 17,

=== modified file 'tribes/buildings/militarysites/empire/barrier/init.lua'
--- tribes/buildings/militarysites/empire/barrier/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/militarysites/empire/barrier/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "empire_barrier",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("empire_building", "Barrier"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "medium",
 

=== modified file 'tribes/buildings/militarysites/empire/blockhouse/init.lua'
--- tribes/buildings/militarysites/empire/blockhouse/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/militarysites/empire/blockhouse/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "empire_blockhouse",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("empire_building", "Blockhouse"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "small",
    enhancement = "empire_sentry",

=== modified file 'tribes/buildings/militarysites/empire/castle/init.lua'
--- tribes/buildings/militarysites/empire/castle/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/militarysites/empire/castle/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "empire_castle",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("empire_building", "Castle"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "big",
 

=== modified file 'tribes/buildings/militarysites/empire/fortress/init.lua'
--- tribes/buildings/militarysites/empire/fortress/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/militarysites/empire/fortress/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "empire_fortress",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("empire_building", "Fortress"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "big",
    enhancement = "empire_castle",

=== modified file 'tribes/buildings/militarysites/empire/outpost/init.lua'
--- tribes/buildings/militarysites/empire/outpost/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/militarysites/empire/outpost/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "empire_outpost",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("empire_building", "Outpost"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "medium",
    enhancement = "empire_barrier",

=== modified file 'tribes/buildings/militarysites/empire/sentry/init.lua'
--- tribes/buildings/militarysites/empire/sentry/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/militarysites/empire/sentry/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "empire_sentry",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("empire_building", "Sentry"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "small",
 

=== modified file 'tribes/buildings/militarysites/empire/tower/init.lua'
--- tribes/buildings/militarysites/empire/tower/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/militarysites/empire/tower/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "empire_tower",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("empire_building", "Tower"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "medium",
    vision_range = 19,

=== modified file 'tribes/buildings/partially_finished/constructionsite/init.lua'
--- tribes/buildings/partially_finished/constructionsite/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/partially_finished/constructionsite/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "constructionsite",
    -- TRANSLATORS: This is a name used in lists of buildings for buildings under construction
    descname = pgettext("building", "Construction Site"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "small", -- Dummy; overridden by building size
    vision_range = 2,

=== modified file 'tribes/buildings/partially_finished/dismantlesite/init.lua'
--- tribes/buildings/partially_finished/dismantlesite/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/partially_finished/dismantlesite/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "dismantlesite",
    -- TRANSLATORS: This is a name used in lists of buildings for buildings being taken apart
    descname = pgettext("building", "Dismantle Site"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "small", -- Dummy; overridden by building size
    vision_range = 2,

=== modified file 'tribes/buildings/productionsites/atlanteans/armorsmithy/init.lua'
--- tribes/buildings/productionsites/atlanteans/armorsmithy/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/atlanteans/armorsmithy/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "atlanteans_armorsmithy",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("atlanteans_building", "Armor Smithy"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "medium",
 

=== modified file 'tribes/buildings/productionsites/atlanteans/bakery/init.lua'
--- tribes/buildings/productionsites/atlanteans/bakery/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/atlanteans/bakery/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "atlanteans_bakery",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("atlanteans_building", "Bakery"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "medium",
 

=== modified file 'tribes/buildings/productionsites/atlanteans/blackroot_farm/init.lua'
--- tribes/buildings/productionsites/atlanteans/blackroot_farm/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/atlanteans/blackroot_farm/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "atlanteans_blackroot_farm",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("atlanteans_building", "Blackroot Farm"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "big",
 

=== modified file 'tribes/buildings/productionsites/atlanteans/charcoal_kiln/init.lua'
--- tribes/buildings/productionsites/atlanteans/charcoal_kiln/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/atlanteans/charcoal_kiln/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "atlanteans_charcoal_kiln",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("atlanteans_building", "Charcoal Kiln"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "medium",
 

=== modified file 'tribes/buildings/productionsites/atlanteans/coalmine/init.lua'
--- tribes/buildings/productionsites/atlanteans/coalmine/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/atlanteans/coalmine/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "atlanteans_coalmine",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("atlanteans_building", "Coal Mine"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "mine",
 

=== modified file 'tribes/buildings/productionsites/atlanteans/crystalmine/init.lua'
--- tribes/buildings/productionsites/atlanteans/crystalmine/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/atlanteans/crystalmine/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "atlanteans_crystalmine",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("atlanteans_building", "Crystal Mine"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "mine",
 

=== modified file 'tribes/buildings/productionsites/atlanteans/farm/init.lua'
--- tribes/buildings/productionsites/atlanteans/farm/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/atlanteans/farm/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "atlanteans_farm",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("atlanteans_building", "Farm"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "big",
 

=== modified file 'tribes/buildings/productionsites/atlanteans/fishbreeders_house/init.lua'
--- tribes/buildings/productionsites/atlanteans/fishbreeders_house/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/atlanteans/fishbreeders_house/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "atlanteans_fishbreeders_house",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("atlanteans_building", "Fish Breeder’s House"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "small",
 

=== modified file 'tribes/buildings/productionsites/atlanteans/fishers_house/init.lua'
--- tribes/buildings/productionsites/atlanteans/fishers_house/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/atlanteans/fishers_house/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "atlanteans_fishers_house",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("atlanteans_building", "Fisher’s House"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "small",
 

=== modified file 'tribes/buildings/productionsites/atlanteans/foresters_house/init.lua'
--- tribes/buildings/productionsites/atlanteans/foresters_house/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/atlanteans/foresters_house/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "atlanteans_foresters_house",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("atlanteans_building", "Forester’s House"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "small",
 

=== modified file 'tribes/buildings/productionsites/atlanteans/gold_spinning_mill/init.lua'
--- tribes/buildings/productionsites/atlanteans/gold_spinning_mill/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/atlanteans/gold_spinning_mill/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "atlanteans_gold_spinning_mill",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("atlanteans_building", "Gold Spinning Mill"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "small",
 

=== modified file 'tribes/buildings/productionsites/atlanteans/goldmine/init.lua'
--- tribes/buildings/productionsites/atlanteans/goldmine/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/atlanteans/goldmine/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "atlanteans_goldmine",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("atlanteans_building", "Gold Mine"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "mine",
 

=== modified file 'tribes/buildings/productionsites/atlanteans/horsefarm/init.lua'
--- tribes/buildings/productionsites/atlanteans/horsefarm/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/atlanteans/horsefarm/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "atlanteans_horsefarm",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("atlanteans_building", "Horse Farm"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "big",
 

=== modified file 'tribes/buildings/productionsites/atlanteans/hunters_house/init.lua'
--- tribes/buildings/productionsites/atlanteans/hunters_house/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/atlanteans/hunters_house/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "atlanteans_hunters_house",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("atlanteans_building", "Hunter’s House"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "small",
 

=== modified file 'tribes/buildings/productionsites/atlanteans/ironmine/init.lua'
--- tribes/buildings/productionsites/atlanteans/ironmine/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/atlanteans/ironmine/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "atlanteans_ironmine",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("atlanteans_building", "Iron Mine"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "mine",
 

=== modified file 'tribes/buildings/productionsites/atlanteans/mill/init.lua'
--- tribes/buildings/productionsites/atlanteans/mill/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/atlanteans/mill/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "atlanteans_mill",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("atlanteans_building", "Mill"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "medium",
 

=== modified file 'tribes/buildings/productionsites/atlanteans/quarry/init.lua'
--- tribes/buildings/productionsites/atlanteans/quarry/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/atlanteans/quarry/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "atlanteans_quarry",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("atlanteans_building", "Quarry"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "small",
 

=== modified file 'tribes/buildings/productionsites/atlanteans/sawmill/init.lua'
--- tribes/buildings/productionsites/atlanteans/sawmill/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/atlanteans/sawmill/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "atlanteans_sawmill",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("atlanteans_building", "Sawmill"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "medium",
 

=== modified file 'tribes/buildings/productionsites/atlanteans/scouts_house/init.lua'
--- tribes/buildings/productionsites/atlanteans/scouts_house/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/atlanteans/scouts_house/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "atlanteans_scouts_house",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("atlanteans_building", "Scout’s House"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "small",
 

=== modified file 'tribes/buildings/productionsites/atlanteans/shipyard/init.lua'
--- tribes/buildings/productionsites/atlanteans/shipyard/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/atlanteans/shipyard/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "atlanteans_shipyard",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("atlanteans_building", "Shipyard"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "medium",
 

=== modified file 'tribes/buildings/productionsites/atlanteans/smelting_works/init.lua'
--- tribes/buildings/productionsites/atlanteans/smelting_works/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/atlanteans/smelting_works/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "atlanteans_smelting_works",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("atlanteans_building", "Smelting Works"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "medium",
 

=== modified file 'tribes/buildings/productionsites/atlanteans/smokery/init.lua'
--- tribes/buildings/productionsites/atlanteans/smokery/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/atlanteans/smokery/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "atlanteans_smokery",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("atlanteans_building", "Smokery"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "medium",
 

=== modified file 'tribes/buildings/productionsites/atlanteans/spiderfarm/init.lua'
--- tribes/buildings/productionsites/atlanteans/spiderfarm/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/atlanteans/spiderfarm/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "atlanteans_spiderfarm",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("atlanteans_building", "Spider Farm"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "big",
 

=== modified file 'tribes/buildings/productionsites/atlanteans/toolsmithy/init.lua'
--- tribes/buildings/productionsites/atlanteans/toolsmithy/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/atlanteans/toolsmithy/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "atlanteans_toolsmithy",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("atlanteans_building", "Toolsmithy"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "medium",
 

=== modified file 'tribes/buildings/productionsites/atlanteans/weaponsmithy/init.lua'
--- tribes/buildings/productionsites/atlanteans/weaponsmithy/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/atlanteans/weaponsmithy/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "atlanteans_weaponsmithy",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("atlanteans_building", "Weapon Smithy"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "medium",
 

=== modified file 'tribes/buildings/productionsites/atlanteans/weaving_mill/init.lua'
--- tribes/buildings/productionsites/atlanteans/weaving_mill/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/atlanteans/weaving_mill/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "atlanteans_weaving_mill",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("atlanteans_building", "Weaving Mill"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "big",
 

=== modified file 'tribes/buildings/productionsites/atlanteans/well/init.lua'
--- tribes/buildings/productionsites/atlanteans/well/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/atlanteans/well/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "atlanteans_well",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("atlanteans_building", "Well"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "small",
 

=== modified file 'tribes/buildings/productionsites/atlanteans/woodcutters_house/init.lua'
--- tribes/buildings/productionsites/atlanteans/woodcutters_house/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/atlanteans/woodcutters_house/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "atlanteans_woodcutters_house",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("atlanteans_building", "Woodcutter’s House"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "small",
 

=== modified file 'tribes/buildings/productionsites/barbarians/ax_workshop/init.lua'
--- tribes/buildings/productionsites/barbarians/ax_workshop/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/barbarians/ax_workshop/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "barbarians_ax_workshop",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("barbarians_building", "Ax Workshop"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "medium",
    enhancement = "barbarians_warmill",

=== modified file 'tribes/buildings/productionsites/barbarians/bakery/init.lua'
--- tribes/buildings/productionsites/barbarians/bakery/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/barbarians/bakery/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "barbarians_bakery",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("barbarians_building", "Bakery"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "medium",
 

=== modified file 'tribes/buildings/productionsites/barbarians/big_inn/init.lua'
--- tribes/buildings/productionsites/barbarians/big_inn/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/barbarians/big_inn/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "barbarians_big_inn",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("barbarians_building", "Big Inn"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "medium",
 

=== modified file 'tribes/buildings/productionsites/barbarians/brewery/init.lua'
--- tribes/buildings/productionsites/barbarians/brewery/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/barbarians/brewery/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "barbarians_brewery",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("barbarians_building", "Brewery"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "medium",
 

=== modified file 'tribes/buildings/productionsites/barbarians/cattlefarm/init.lua'
--- tribes/buildings/productionsites/barbarians/cattlefarm/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/barbarians/cattlefarm/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "barbarians_cattlefarm",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("barbarians_building", "Cattle Farm"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "big",
 

=== modified file 'tribes/buildings/productionsites/barbarians/charcoal_kiln/init.lua'
--- tribes/buildings/productionsites/barbarians/charcoal_kiln/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/barbarians/charcoal_kiln/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "barbarians_charcoal_kiln",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("barbarians_building", "Charcoal Kiln"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "medium",
 

=== modified file 'tribes/buildings/productionsites/barbarians/coalmine/init.lua'
--- tribes/buildings/productionsites/barbarians/coalmine/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/barbarians/coalmine/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "barbarians_coalmine",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("barbarians_building", "Coal Mine"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "mine",
    enhancement = "barbarians_coalmine_deep",

=== modified file 'tribes/buildings/productionsites/barbarians/coalmine_deep/init.lua'
--- tribes/buildings/productionsites/barbarians/coalmine_deep/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/barbarians/coalmine_deep/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "barbarians_coalmine_deep",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("barbarians_building", "Deep Coal Mine"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "mine",
    enhancement = "barbarians_coalmine_deeper",

=== modified file 'tribes/buildings/productionsites/barbarians/coalmine_deeper/init.lua'
--- tribes/buildings/productionsites/barbarians/coalmine_deeper/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/barbarians/coalmine_deeper/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "barbarians_coalmine_deeper",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("barbarians_building", "Deeper Coal Mine"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "mine",
 

=== modified file 'tribes/buildings/productionsites/barbarians/farm/init.lua'
--- tribes/buildings/productionsites/barbarians/farm/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/barbarians/farm/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "barbarians_farm",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("barbarians_building", "Farm"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "big",
 

=== modified file 'tribes/buildings/productionsites/barbarians/fishers_hut/init.lua'
--- tribes/buildings/productionsites/barbarians/fishers_hut/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/barbarians/fishers_hut/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "barbarians_fishers_hut",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("barbarians_building", "Fisher’s Hut"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "small",
 

=== modified file 'tribes/buildings/productionsites/barbarians/gamekeepers_hut/init.lua'
--- tribes/buildings/productionsites/barbarians/gamekeepers_hut/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/barbarians/gamekeepers_hut/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "barbarians_gamekeepers_hut",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("barbarians_building", "Gamekeeper’s Hut"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "small",
 

=== modified file 'tribes/buildings/productionsites/barbarians/goldmine/init.lua'
--- tribes/buildings/productionsites/barbarians/goldmine/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/barbarians/goldmine/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "barbarians_goldmine",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("barbarians_building", "Gold Mine"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "mine",
    enhancement = "barbarians_goldmine_deep",

=== modified file 'tribes/buildings/productionsites/barbarians/goldmine_deep/init.lua'
--- tribes/buildings/productionsites/barbarians/goldmine_deep/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/barbarians/goldmine_deep/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "barbarians_goldmine_deep",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("barbarians_building", "Deep Gold Mine"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "mine",
    enhancement = "barbarians_goldmine_deeper",

=== modified file 'tribes/buildings/productionsites/barbarians/goldmine_deeper/init.lua'
--- tribes/buildings/productionsites/barbarians/goldmine_deeper/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/barbarians/goldmine_deeper/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "barbarians_goldmine_deeper",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("barbarians_building", "Deeper Gold Mine"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "mine",
 

=== modified file 'tribes/buildings/productionsites/barbarians/granitemine/init.lua'
--- tribes/buildings/productionsites/barbarians/granitemine/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/barbarians/granitemine/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "barbarians_granitemine",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("barbarians_building", "Granite Mine"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "mine",
 

=== modified file 'tribes/buildings/productionsites/barbarians/helmsmithy/init.lua'
--- tribes/buildings/productionsites/barbarians/helmsmithy/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/barbarians/helmsmithy/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "barbarians_helmsmithy",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("barbarians_building", "Helm Smithy"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "big",
 

=== modified file 'tribes/buildings/productionsites/barbarians/hunters_hut/init.lua'
--- tribes/buildings/productionsites/barbarians/hunters_hut/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/barbarians/hunters_hut/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "barbarians_hunters_hut",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("barbarians_building", "Hunter’s Hut"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "small",
 

=== modified file 'tribes/buildings/productionsites/barbarians/inn/init.lua'
--- tribes/buildings/productionsites/barbarians/inn/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/barbarians/inn/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "barbarians_inn",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("barbarians_building", "Inn"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "medium",
    enhancement = "barbarians_big_inn",

=== modified file 'tribes/buildings/productionsites/barbarians/ironmine/init.lua'
--- tribes/buildings/productionsites/barbarians/ironmine/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/barbarians/ironmine/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "barbarians_ironmine",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("barbarians_building", "Iron Mine"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "mine",
    enhancement = "barbarians_ironmine_deep",

=== modified file 'tribes/buildings/productionsites/barbarians/ironmine_deep/init.lua'
--- tribes/buildings/productionsites/barbarians/ironmine_deep/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/barbarians/ironmine_deep/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "barbarians_ironmine_deep",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("barbarians_building", "Deep Iron Mine"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "mine",
    enhancement = "barbarians_ironmine_deeper",

=== modified file 'tribes/buildings/productionsites/barbarians/ironmine_deeper/init.lua'
--- tribes/buildings/productionsites/barbarians/ironmine_deeper/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/barbarians/ironmine_deeper/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "barbarians_ironmine_deeper",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("barbarians_building", "Deeper Iron Mine"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "mine",
 

=== modified file 'tribes/buildings/productionsites/barbarians/lime_kiln/init.lua'
--- tribes/buildings/productionsites/barbarians/lime_kiln/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/barbarians/lime_kiln/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "barbarians_lime_kiln",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("barbarians_building", "Lime Kiln"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "medium",
 

=== modified file 'tribes/buildings/productionsites/barbarians/lumberjacks_hut/init.lua'
--- tribes/buildings/productionsites/barbarians/lumberjacks_hut/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/barbarians/lumberjacks_hut/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "barbarians_lumberjacks_hut",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("barbarians_building", "Lumberjack’s Hut"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "small",
 

=== modified file 'tribes/buildings/productionsites/barbarians/metal_workshop/init.lua'
--- tribes/buildings/productionsites/barbarians/metal_workshop/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/barbarians/metal_workshop/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "barbarians_metal_workshop",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("barbarians_building", "Metal Workshop"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "medium",
    enhancement = "barbarians_ax_workshop",

=== modified file 'tribes/buildings/productionsites/barbarians/micro_brewery/init.lua'
--- tribes/buildings/productionsites/barbarians/micro_brewery/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/barbarians/micro_brewery/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "barbarians_micro_brewery",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("barbarians_building", "Micro Brewery"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "medium",
    enhancement = "barbarians_brewery",

=== modified file 'tribes/buildings/productionsites/barbarians/quarry/init.lua'
--- tribes/buildings/productionsites/barbarians/quarry/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/barbarians/quarry/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "barbarians_quarry",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("barbarians_building", "Quarry"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "small",
 

=== modified file 'tribes/buildings/productionsites/barbarians/rangers_hut/init.lua'
--- tribes/buildings/productionsites/barbarians/rangers_hut/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/barbarians/rangers_hut/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "barbarians_rangers_hut",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("barbarians_building", "Ranger’s Hut"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "small",
 

=== modified file 'tribes/buildings/productionsites/barbarians/reed_yard/init.lua'
--- tribes/buildings/productionsites/barbarians/reed_yard/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/barbarians/reed_yard/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "barbarians_reed_yard",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("barbarians_building", "Reed Yard"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "medium",
 

=== modified file 'tribes/buildings/productionsites/barbarians/scouts_hut/init.lua'
--- tribes/buildings/productionsites/barbarians/scouts_hut/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/barbarians/scouts_hut/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "barbarians_scouts_hut",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("barbarians_building", "Scout’s Hut"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "small",
 

=== modified file 'tribes/buildings/productionsites/barbarians/shipyard/init.lua'
--- tribes/buildings/productionsites/barbarians/shipyard/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/barbarians/shipyard/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "barbarians_shipyard",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("barbarians_building", "Shipyard"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "medium",
 

=== modified file 'tribes/buildings/productionsites/barbarians/smelting_works/init.lua'
--- tribes/buildings/productionsites/barbarians/smelting_works/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/barbarians/smelting_works/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "barbarians_smelting_works",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("barbarians_building", "Smelting Works"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "medium",
 

=== modified file 'tribes/buildings/productionsites/barbarians/tavern/init.lua'
--- tribes/buildings/productionsites/barbarians/tavern/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/barbarians/tavern/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "barbarians_tavern",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("barbarians_building", "Tavern"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "medium",
    enhancement = "barbarians_inn",

=== modified file 'tribes/buildings/productionsites/barbarians/warmill/init.lua'
--- tribes/buildings/productionsites/barbarians/warmill/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/barbarians/warmill/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "barbarians_warmill",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("barbarians_building", "War Mill"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "medium",
 

=== modified file 'tribes/buildings/productionsites/barbarians/weaving_mill/init.lua'
--- tribes/buildings/productionsites/barbarians/weaving_mill/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/barbarians/weaving_mill/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "barbarians_weaving_mill",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("barbarians_building", "Weaving Mill"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "big",
 

=== modified file 'tribes/buildings/productionsites/barbarians/well/init.lua'
--- tribes/buildings/productionsites/barbarians/well/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/barbarians/well/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "barbarians_well",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("barbarians_building", "Well"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "small",
 

=== modified file 'tribes/buildings/productionsites/barbarians/wood_hardener/init.lua'
--- tribes/buildings/productionsites/barbarians/wood_hardener/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/barbarians/wood_hardener/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "barbarians_wood_hardener",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("barbarians_building", "Wood Hardener"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "medium",
 

=== modified file 'tribes/buildings/productionsites/empire/armorsmithy/init.lua'
--- tribes/buildings/productionsites/empire/armorsmithy/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/empire/armorsmithy/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "empire_armorsmithy",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("empire_building", "Armor Smithy"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "medium",
 

=== modified file 'tribes/buildings/productionsites/empire/bakery/init.lua'
--- tribes/buildings/productionsites/empire/bakery/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/empire/bakery/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "empire_bakery",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("empire_building", "Bakery"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "medium",
 

=== modified file 'tribes/buildings/productionsites/empire/brewery/init.lua'
--- tribes/buildings/productionsites/empire/brewery/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/empire/brewery/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "empire_brewery",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("empire_building", "Brewery"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "medium",
 

=== modified file 'tribes/buildings/productionsites/empire/charcoal_kiln/init.lua'
--- tribes/buildings/productionsites/empire/charcoal_kiln/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/empire/charcoal_kiln/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "empire_charcoal_kiln",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("empire_building", "Charcoal Kiln"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "medium",
 

=== modified file 'tribes/buildings/productionsites/empire/coalmine/init.lua'
--- tribes/buildings/productionsites/empire/coalmine/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/empire/coalmine/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "empire_coalmine",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("empire_building", "Coal Mine"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "mine",
    enhancement = "empire_coalmine_deep",

=== modified file 'tribes/buildings/productionsites/empire/coalmine_deep/init.lua'
--- tribes/buildings/productionsites/empire/coalmine_deep/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/empire/coalmine_deep/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "empire_coalmine_deep",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("empire_building", "Deep Coal Mine"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "mine",
 

=== modified file 'tribes/buildings/productionsites/empire/donkeyfarm/init.lua'
--- tribes/buildings/productionsites/empire/donkeyfarm/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/empire/donkeyfarm/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "empire_donkeyfarm",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("empire_building", "Donkey Farm"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "big",
 

=== modified file 'tribes/buildings/productionsites/empire/farm/init.lua'
--- tribes/buildings/productionsites/empire/farm/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/empire/farm/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "empire_farm",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("empire_building", "Farm"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "big",
 

=== modified file 'tribes/buildings/productionsites/empire/fishers_house/init.lua'
--- tribes/buildings/productionsites/empire/fishers_house/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/empire/fishers_house/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "empire_fishers_house",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("empire_building", "Fisher’s House"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "small",
 

=== modified file 'tribes/buildings/productionsites/empire/foresters_house/init.lua'
--- tribes/buildings/productionsites/empire/foresters_house/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/empire/foresters_house/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "empire_foresters_house",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("empire_building", "Forester’s House"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "small",
 

=== modified file 'tribes/buildings/productionsites/empire/goldmine/init.lua'
--- tribes/buildings/productionsites/empire/goldmine/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/empire/goldmine/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "empire_goldmine",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("empire_building", "Gold Mine"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "mine",
    enhancement = "empire_goldmine_deep",

=== modified file 'tribes/buildings/productionsites/empire/goldmine_deep/init.lua'
--- tribes/buildings/productionsites/empire/goldmine_deep/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/empire/goldmine_deep/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "empire_goldmine_deep",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("empire_building", "Deep Gold Mine"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "mine",
 

=== modified file 'tribes/buildings/productionsites/empire/hunters_house/init.lua'
--- tribes/buildings/productionsites/empire/hunters_house/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/empire/hunters_house/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "empire_hunters_house",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("empire_building", "Hunter’s House"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "small",
 

=== modified file 'tribes/buildings/productionsites/empire/inn/init.lua'
--- tribes/buildings/productionsites/empire/inn/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/empire/inn/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "empire_inn",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("empire_building", "Inn"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "medium",
 

=== modified file 'tribes/buildings/productionsites/empire/ironmine/init.lua'
--- tribes/buildings/productionsites/empire/ironmine/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/empire/ironmine/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "empire_ironmine",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("empire_building", "Iron Mine"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "mine",
    enhancement = "empire_ironmine_deep",

=== modified file 'tribes/buildings/productionsites/empire/ironmine_deep/init.lua'
--- tribes/buildings/productionsites/empire/ironmine_deep/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/empire/ironmine_deep/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "empire_ironmine_deep",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("empire_building", "Deep Iron Mine"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "mine",
 

=== modified file 'tribes/buildings/productionsites/empire/lumberjacks_house/init.lua'
--- tribes/buildings/productionsites/empire/lumberjacks_house/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/empire/lumberjacks_house/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "empire_lumberjacks_house",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("empire_building", "Lumberjack’s House"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "small",
 

=== modified file 'tribes/buildings/productionsites/empire/marblemine/init.lua'
--- tribes/buildings/productionsites/empire/marblemine/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/empire/marblemine/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "empire_marblemine",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("empire_building", "Marble Mine"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "mine",
    enhancement = "empire_marblemine_deep",

=== modified file 'tribes/buildings/productionsites/empire/marblemine_deep/init.lua'
--- tribes/buildings/productionsites/empire/marblemine_deep/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/empire/marblemine_deep/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "empire_marblemine_deep",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("empire_building", "Deep Marble Mine"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "mine",
 

=== modified file 'tribes/buildings/productionsites/empire/mill/init.lua'
--- tribes/buildings/productionsites/empire/mill/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/empire/mill/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "empire_mill",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("empire_building", "Mill"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "medium",
 

=== modified file 'tribes/buildings/productionsites/empire/piggery/init.lua'
--- tribes/buildings/productionsites/empire/piggery/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/empire/piggery/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "empire_piggery",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("empire_building", "Piggery"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "big",
 

=== modified file 'tribes/buildings/productionsites/empire/quarry/init.lua'
--- tribes/buildings/productionsites/empire/quarry/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/empire/quarry/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "empire_quarry",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("empire_building", "Quarry"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "small",
 

=== modified file 'tribes/buildings/productionsites/empire/sawmill/init.lua'
--- tribes/buildings/productionsites/empire/sawmill/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/empire/sawmill/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "empire_sawmill",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("empire_building", "Sawmill"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "medium",
 

=== modified file 'tribes/buildings/productionsites/empire/scouts_house/init.lua'
--- tribes/buildings/productionsites/empire/scouts_house/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/empire/scouts_house/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "empire_scouts_house",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("empire_building", "Scout’s House"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "small",
 

=== modified file 'tribes/buildings/productionsites/empire/sheepfarm/init.lua'
--- tribes/buildings/productionsites/empire/sheepfarm/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/empire/sheepfarm/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "empire_sheepfarm",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("empire_building", "Sheep Farm"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "big",
 

=== modified file 'tribes/buildings/productionsites/empire/shipyard/init.lua'
--- tribes/buildings/productionsites/empire/shipyard/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/empire/shipyard/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "empire_shipyard",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("empire_building", "Shipyard"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "medium",
 

=== modified file 'tribes/buildings/productionsites/empire/smelting_works/init.lua'
--- tribes/buildings/productionsites/empire/smelting_works/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/empire/smelting_works/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "empire_smelting_works",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("empire_building", "Smelting Works"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "medium",
 

=== modified file 'tribes/buildings/productionsites/empire/stonemasons_house/init.lua'
--- tribes/buildings/productionsites/empire/stonemasons_house/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/empire/stonemasons_house/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "empire_stonemasons_house",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("empire_building", "Stonemason’s House"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "medium",
 

=== modified file 'tribes/buildings/productionsites/empire/tavern/init.lua'
--- tribes/buildings/productionsites/empire/tavern/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/empire/tavern/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "empire_tavern",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("empire_building", "Tavern"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "medium",
    enhancement = "empire_inn",

=== modified file 'tribes/buildings/productionsites/empire/toolsmithy/init.lua'
--- tribes/buildings/productionsites/empire/toolsmithy/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/empire/toolsmithy/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "empire_toolsmithy",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("empire_building", "Toolsmithy"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "medium",
 

=== modified file 'tribes/buildings/productionsites/empire/vineyard/init.lua'
--- tribes/buildings/productionsites/empire/vineyard/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/empire/vineyard/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "empire_vineyard",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("empire_building", "Vineyard"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "medium",
 

=== modified file 'tribes/buildings/productionsites/empire/weaponsmithy/init.lua'
--- tribes/buildings/productionsites/empire/weaponsmithy/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/empire/weaponsmithy/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "empire_weaponsmithy",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("empire_building", "Weapon Smithy"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "big",
 

=== modified file 'tribes/buildings/productionsites/empire/weaving_mill/init.lua'
--- tribes/buildings/productionsites/empire/weaving_mill/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/empire/weaving_mill/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "empire_weaving_mill",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("empire_building", "Weaving Mill"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "big",
 

=== modified file 'tribes/buildings/productionsites/empire/well/init.lua'
--- tribes/buildings/productionsites/empire/well/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/empire/well/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "empire_well",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("empire_building", "Well"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "small",
 

=== modified file 'tribes/buildings/productionsites/empire/winery/init.lua'
--- tribes/buildings/productionsites/empire/winery/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/productionsites/empire/winery/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "empire_winery",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("empire_building", "Winery"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "medium",
 

=== modified file 'tribes/buildings/trainingsites/atlanteans/dungeon/init.lua'
--- tribes/buildings/trainingsites/atlanteans/dungeon/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/trainingsites/atlanteans/dungeon/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "atlanteans_dungeon",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("atlanteans_building", "Dungeon"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "medium",
 

=== modified file 'tribes/buildings/trainingsites/atlanteans/labyrinth/init.lua'
--- tribes/buildings/trainingsites/atlanteans/labyrinth/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/trainingsites/atlanteans/labyrinth/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "atlanteans_labyrinth",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("atlanteans_building", "Labyrinth"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "big",
 

=== modified file 'tribes/buildings/trainingsites/barbarians/battlearena/init.lua'
--- tribes/buildings/trainingsites/barbarians/battlearena/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/trainingsites/barbarians/battlearena/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "barbarians_battlearena",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("barbarians_building", "Battle Arena"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "big",
 

=== modified file 'tribes/buildings/trainingsites/barbarians/trainingcamp/init.lua'
--- tribes/buildings/trainingsites/barbarians/trainingcamp/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/trainingsites/barbarians/trainingcamp/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "barbarians_trainingcamp",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("barbarians_building", "Training Camp"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "big",
 

=== modified file 'tribes/buildings/trainingsites/empire/arena/init.lua'
--- tribes/buildings/trainingsites/empire/arena/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/trainingsites/empire/arena/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "empire_arena",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("empire_building", "Arena"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "big",
    enhancement = "empire_colosseum",

=== modified file 'tribes/buildings/trainingsites/empire/colosseum/init.lua'
--- tribes/buildings/trainingsites/empire/colosseum/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/trainingsites/empire/colosseum/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "empire_colosseum",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("empire_building", "Colosseum"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "big",
 

=== modified file 'tribes/buildings/trainingsites/empire/trainingcamp/init.lua'
--- tribes/buildings/trainingsites/empire/trainingcamp/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/trainingsites/empire/trainingcamp/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "empire_trainingcamp",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("empire_building", "Training Camp"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "big",
 

=== modified file 'tribes/buildings/warehouses/atlanteans/headquarters/init.lua'
--- tribes/buildings/warehouses/atlanteans/headquarters/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/warehouses/atlanteans/headquarters/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "atlanteans_headquarters",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("atlanteans_building", "Headquarters"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "big",
    destructible = false,

=== modified file 'tribes/buildings/warehouses/atlanteans/port/init.lua'
--- tribes/buildings/warehouses/atlanteans/port/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/warehouses/atlanteans/port/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "atlanteans_port",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("atlanteans_building", "Port"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "port",
 

=== modified file 'tribes/buildings/warehouses/atlanteans/warehouse/init.lua'
--- tribes/buildings/warehouses/atlanteans/warehouse/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/warehouses/atlanteans/warehouse/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "atlanteans_warehouse",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("atlanteans_building", "Warehouse"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "medium",
 

=== modified file 'tribes/buildings/warehouses/barbarians/headquarters/init.lua'
--- tribes/buildings/warehouses/barbarians/headquarters/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/warehouses/barbarians/headquarters/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "barbarians_headquarters",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("barbarians_building", "Headquarters"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "big",
    destructible = false,

=== modified file 'tribes/buildings/warehouses/barbarians/headquarters_interim/init.lua'
--- tribes/buildings/warehouses/barbarians/headquarters_interim/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/warehouses/barbarians/headquarters_interim/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "barbarians_headquarters_interim",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("barbarians_building", "Headquarters"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "big",
    destructible = false,

=== modified file 'tribes/buildings/warehouses/barbarians/port/init.lua'
--- tribes/buildings/warehouses/barbarians/port/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/warehouses/barbarians/port/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "barbarians_port",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("barbarians_building", "Port"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "port",
 

=== modified file 'tribes/buildings/warehouses/barbarians/warehouse/init.lua'
--- tribes/buildings/warehouses/barbarians/warehouse/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/warehouses/barbarians/warehouse/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "barbarians_warehouse",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("barbarians_building", "Warehouse"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "medium",
 

=== modified file 'tribes/buildings/warehouses/empire/headquarters/init.lua'
--- tribes/buildings/warehouses/empire/headquarters/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/warehouses/empire/headquarters/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "empire_headquarters",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("empire_building", "Headquarters"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "big",
    destructible = false,

=== modified file 'tribes/buildings/warehouses/empire/headquarters_shipwreck/init.lua'
--- tribes/buildings/warehouses/empire/headquarters_shipwreck/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/warehouses/empire/headquarters_shipwreck/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "empire_headquarters_shipwreck",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("empire_building", "Headquarters Shipwreck"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "big",
    destructible = false,

=== modified file 'tribes/buildings/warehouses/empire/port/init.lua'
--- tribes/buildings/warehouses/empire/port/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/warehouses/empire/port/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "empire_port",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("empire_building", "Port"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "port",
 

=== modified file 'tribes/buildings/warehouses/empire/warehouse/init.lua'
--- tribes/buildings/warehouses/empire/warehouse/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/buildings/warehouses/empire/warehouse/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "empire_warehouse",
    -- TRANSLATORS: This is a building name used in lists of buildings
    descname = pgettext("empire_building", "Warehouse"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    size = "medium",
 

=== modified file 'tribes/scripting/help/building_help.lua'
--- tribes/scripting/help/building_help.lua	2015-11-03 12:15:31 +0000
+++ tribes/scripting/help/building_help.lua	2015-11-03 12:15:41 +0000
@@ -1,37 +1,18 @@
 -- TODO(GunChleoc): get resi_00.png from C++
 
-include "scripting/formatting.lua"
+include "tribes/scripting/help/format_help.lua"
+
+-- RST
+-- building_help.lua
+-- ---------------
+
+-- Functions used in the ingame building help windows for formatting the text and pictures.
 
 --  =======================================================
 --  *************** Basic helper functions ****************
 --  =======================================================
 
 -- RST
--- .. function:: image_line(image, count[, text = nil])
---
---    Aligns the image to a row on the right side with text on the left.
---
---    :arg image: the picture to be aligned to a row.
---    :arg count: length of the picture row.
---    :arg text: if given the text aligned on the left side, formatted via
---       formatting.lua functions.
---    :returns: the text on the left and a picture row on the right.
---
-function image_line(image, count, text)
-	local imgs={}
-	for i=1,count do
-		imgs[#imgs + 1] = image
-	end
-	local imgstr = table.concat(imgs, ";")
-
-	if text then
-		return rt("image=" .. imgstr .. " image-align=right", "  " .. text)
-	else
-		return rt("image=" .. imgstr .. " image-align=right", "")
-	end
-end
-
--- RST
 -- .. function text_line(t1, t2[, imgstr = nil])
 --
 --    Creates a line of h3 formatted text followed by normal text and an image.
@@ -55,12 +36,6 @@
 --  =======================================================
 
 -- RST
--- format_help.lua
--- ---------------
-
--- Functions used in the ingame help windows for formatting the text and pictures.
-
--- RST
 -- .. function:: dependencies_basic(images[, text = nil])
 --
 --    Creates a dependencies line of any length.
@@ -84,28 +59,6 @@
 
 
 -- RST
--- .. function:: dependencies(items[, text = nil])
---
---    Creates a dependencies line of any length.
---
---    :arg items: ware, worker and/or building descriptions in the correct order
---                from left to right as table (set in {}).
---    :arg text: comment of the image.
---    :returns: a row of pictures connected by arrows.
---
-function dependencies(items, text)
-	if not text then
-		text = ""
-	end
-	local string = "image=" .. items[1].icon_name
-	for k,v in ipairs({table.unpack(items,2)}) do
-		string = string .. ";pics/arrow-right.png;" ..  v.icon_name
-	end
-	return rt(string, p(text))
-end
-
-
--- RST
 -- .. function:: dependencies_resi(resource, items[, text = nil])
 --
 --    Creates a dependencies line of any length for resources (that don't have menu.png files).
@@ -474,24 +427,6 @@
 end
 
 
--- Helper function for building_help_building_section
-function building_help_building_line(ware_description, amount)
-	amount = tonumber(amount)
-	local image = ware_description.icon_name
-	local result = ""
-	local imgperline = 6
-	local temp_amount = amount
-
-	while (temp_amount > imgperline) do
-		result = result .. image_line(image, imgperline)
-		temp_amount = temp_amount - imgperline
-	end
-	-- TRANSLATORS: %1$d is a number, %2$s the name of a ware, e.g. 12x Stone
-	result = image_line(image, temp_amount, p(_"%1$dx %2$s":bformat(amount, ware_description.descname))) .. result
-	return result
-
-end
-
 -- RST
 --
 -- .. function:: building_help_building_section(building_description)
@@ -541,7 +476,7 @@
 			end
 			for ware, amount in pairs(building_description.build_cost) do
 				local ware_description = wl.Game():get_ware_description(ware)
-				result = result .. building_help_building_line(ware_description, amount)
+				result = result .. help_ware_amount_line(ware_description, amount)
 			end
 		end
 		local former_building = nil
@@ -555,7 +490,7 @@
 
 			for ware, amount in pairs(building_description.enhancement_cost) do
 				local ware_description = wl.Game():get_ware_description(ware)
-				result = result .. building_help_building_line(ware_description, amount)
+				result = result .. help_ware_amount_line(ware_description, amount)
 			end
 
 			-- Cumulative cost
@@ -601,7 +536,7 @@
 			if (warescost ~= {}) then
 				for ware, amount in pairs(warescost) do
 					local ware_description = wl.Game():get_ware_description(ware)
-					result = result .. building_help_building_line(ware_description, amount)
+					result = result .. help_ware_amount_line(ware_description, amount)
 				end
 			else
 				result = result .. rt(p(_"Unknown"))
@@ -612,7 +547,7 @@
 				result = result .. rt(h3(_"If built directly, dismantle yields:"))
 				for ware, amount in pairs(building_description.returned_wares) do
 					local ware_description = wl.Game():get_ware_description(ware)
-					result = result .. building_help_building_line(ware_description, amount)
+					result = result .. help_ware_amount_line(ware_description, amount)
 				end
 				result = result .. rt(h3(_"If enhanced, dismantle yields:"))
 			else
@@ -650,7 +585,7 @@
 			if (warescost ~= {}) then
 				for ware, amount in pairs(warescost) do
 					local ware_description = wl.Game():get_ware_description(ware)
-					result = result .. building_help_building_line(ware_description, amount)
+					result = result .. help_ware_amount_line(ware_description, amount)
 				end
 			else
 				result = result .. rt(p(_"Unknown"))
@@ -661,7 +596,7 @@
 			result = result .. rt(h3(_"Dismantle yields:"))
 			for ware, amount in pairs(building_description.returned_wares) do
 				local ware_description = wl.Game():get_ware_description(ware)
-				result = result .. building_help_building_line(ware_description, amount)
+				result = result .. help_ware_amount_line(ware_description, amount)
 			end
 		end
 
@@ -670,7 +605,7 @@
 			result = result .. text_line(_"Can be enhanced to:", building_description.enhancement.descname)
 			for ware, amount in pairs(building_description.enhancement.enhancement_cost) do
 				local ware_description = wl.Game():get_ware_description(ware)
-				result = result .. building_help_building_line(ware_description, amount)
+				result = result .. help_ware_amount_line(ware_description, amount)
 			end
 		end
 	end
@@ -727,7 +662,7 @@
 			end
 		end
 
-		result = result .. building_help_tool_string(tribe, toolnames, number_of_workers)
+		result = result .. help_tool_string(tribe, toolnames, number_of_workers)
 
 		if(becomes_description) then
 
@@ -756,30 +691,6 @@
 end
 
 
--- RST
--- .. function building_help_tool_string(tribe, toolname, no_of_workers)
---
---    Displays tools with an intro text and images
---
---    :arg tribe: The :class:`LuaTribeDescription` for the tribe that has this building.
---    :arg toolnames: e.g. {"shovel", "basket"}.
---    :arg no_of_workers: the number of workers using the tools; for plural formatting.
---    :returns: text_line for the tools
---
-function building_help_tool_string(tribe, toolnames, no_of_workers)
-	local result = ""
-	local game  = wl.Game();
-	for i, toolname in ipairs(toolnames) do
-		if (tribe:has_ware(toolname)) then
-			local ware_description = game:get_ware_description(toolname)
-			result = result .. image_line(ware_description.icon_name, 1, p(ware_description.descname))
-		end
-	end
-	if (result ~= "") then
-		result = rt(h3(ngettext("Worker uses:","Workers use:", no_of_workers))) .. result
-	end
-	return result
-end
 
 -- RST
 -- .. building_help_production_section()
@@ -809,7 +720,7 @@
 --    :returns: rt of the formatted text
 --
 function building_help(tribe, building_description)
-	include(building_description.directory .. "helptexts.lua")
+	include(building_description.helptext_script)
 
 	if (building_description.type_name == "productionsite") then
 		return building_help_general_string(building_description) ..
@@ -846,10 +757,12 @@
 
 -- The main function call
 return {
-   func = function(tribename, buildingname)
+   func = function(tribename, building)
       set_textdomain("tribes_encyclopedia")
 		local tribe = wl.Game():get_tribe_description(tribename)
-		local building_description = wl.Game():get_building_description(buildingname)
+		-- We need to get the building description again, because it will
+		-- give us a cast to the appropriate subclass.
+		local building_description = wl.Game():get_building_description(building.name)
 		return building_help(tribe, building_description)
    end
 }

=== added file 'tribes/scripting/help/format_help.lua'
--- tribes/scripting/help/format_help.lua	1970-01-01 00:00:00 +0000
+++ tribes/scripting/help/format_help.lua	2015-11-03 12:15:41 +0000
@@ -0,0 +1,169 @@
+include "scripting/formatting.lua"
+
+-- RST
+-- format_help.lua
+-- ---------------
+
+-- Functions used in the ingame help windows for formatting the text and pictures.
+
+--  =======================================================
+--  *************** Basic helper functions ****************
+--  =======================================================
+
+-- RST
+-- .. function:: image_line(image, count[, text = nil])
+--
+--    Aligns the image to a row on the right side with text on the left.
+--
+--    :arg image: the picture to be aligned to a row.
+--    :arg count: length of the picture row.
+--    :arg text: if given the text aligned on the left side, formatted via
+--       formatting.lua functions.
+--    :returns: the text on the left and a picture row on the right.
+--
+function image_line(image, count, text)
+	local imgs={}
+	for i=1,count do
+		imgs[#imgs + 1] = image
+	end
+	local imgstr = table.concat(imgs, ";")
+
+	if text then
+		return rt("image=" .. imgstr .. " image-align=right", "  " .. text)
+	else
+		return rt("image=" .. imgstr .. " image-align=right", "")
+	end
+end
+
+
+--  =======================================================
+--  ********** Helper functions for dependencies **********
+--  =======================================================
+
+-- RST
+-- .. function:: dependencies(items[, text = nil])
+--
+--    Creates a dependencies line of any length.
+--
+--    :arg items: ware, worker and/or building descriptions in the correct order
+--                from left to right as table (set in {}).
+--    :arg text: comment of the image.
+--    :returns: a row of pictures connected by arrows.
+--
+function dependencies(items, text)
+	if not text then
+		text = ""
+	end
+	local string = "image=" .. items[1].icon_name
+	for k,v in ipairs({table.unpack(items,2)}) do
+		string = string .. ";pics/arrow-right.png;" ..  v.icon_name
+	end
+	return rt(string, p(text))
+end
+
+
+-- RST
+-- .. function help_ware_amount_line(ware_description, amount)
+--
+--    Displays an amount of wares with name and images
+--
+--    :arg ware_description: The :class:`LuaWareDescription` for the ware type to be displayed
+--    :arg amount: The amount to show as a number
+--    :returns: image_line for the ware type and amount
+--
+function help_ware_amount_line(ware_description, amount)
+	amount = tonumber(amount)
+	local image = ware_description.icon_name
+	local result = ""
+	local imgperline = 6
+	local temp_amount = amount
+
+	while (temp_amount > imgperline) do
+		result = result .. image_line(image, imgperline)
+		temp_amount = temp_amount - imgperline
+	end
+	-- TRANSLATORS: %1$d is a number, %2$s the name of a ware, e.g. 12x Stone
+	result = image_line(image, temp_amount, p(_"%1$dx %2$s":bformat(amount, ware_description.descname))) .. result
+	return result
+end
+
+-- RST
+-- .. function help_tool_string(tribe, toolname, no_of_workers)
+--
+--    Displays tools with an intro text and images
+--
+--    :arg tribe: The :class:`LuaTribeDescription` for the tribe that uses the tools
+--    :arg toolnames: e.g. {"shovel", "basket"}.
+--    :arg no_of_workers: the number of workers using the tools; for plural formatting.
+--    :returns: image_line for the tools
+--
+function help_tool_string(tribe, toolnames, no_of_workers)
+	local result = ""
+	local game  = wl.Game();
+	for i, toolname in ipairs(toolnames) do
+		if (tribe:has_ware(toolname)) then
+			local ware_description = game:get_ware_description(toolname)
+			result = result .. image_line(ware_description.icon_name, 1, p(ware_description.descname))
+		end
+	end
+	if (result ~= "") then
+		-- TRANSLATORS: Tribal Encyclopedia: Heading for which tools a worker uses
+		result = rt(h3(ngettext("Worker uses:","Workers use:", no_of_workers))) .. result
+	end
+	return result
+end
+
+
+-- RST
+-- .. function help_consumed_wares(building, program_name)
+--
+--    Returns information for which wares in which amounts are consumed by a produciton program.
+--
+--    :arg tribe: The :class:`LuaBuildingDescription` for the building that runs the program
+--    :arg program_name: The name of the production program that the info is collected for
+--    :returns: A "Ware(s) consumed:" section with image_lines
+--
+function help_consumed_wares(building, program_name)
+	local result = ""
+	local consumed_wares_string = ""
+	local consumed_wares_counter = 0
+	local consumed_wares = building:consumed_wares(program_name)
+	for countlist, warelist in pairs(consumed_wares) do
+		local consumed_warenames = {}
+		local consumed_images = {}
+		local consumed_amount = {}
+		local count = 1
+		for consumed_ware, amount in pairs(warelist) do
+			local ware_description = wl.Game():get_ware_description(consumed_ware)
+			consumed_warenames[count] = _"%1$dx %2$s":bformat(amount, ware_description.descname)
+			consumed_images[count] = ware_description.icon_name
+			consumed_amount[count] = amount
+			count = count + 1
+			consumed_wares_counter = consumed_wares_counter + amount
+		end
+		local text = localize_list(consumed_warenames, "or")
+		if (countlist > 1) then
+			text = _"%s and":bformat(text)
+		end
+		local images = consumed_images[1]
+		local image_counter = 2
+		while (image_counter <= consumed_amount[1]) do
+			images = images .. ";" .. consumed_images[1]
+			image_counter = image_counter + 1
+		end
+		for k, v in ipairs({table.unpack(consumed_images,2)}) do
+			image_counter = 1
+			while (image_counter <= consumed_amount[k + 1]) do
+				images = images .. ";" .. v
+				image_counter = image_counter + 1
+			end
+		end
+		consumed_wares_string = image_line(images, 1, p(text)) .. consumed_wares_string
+	end
+	if (consumed_wares_counter > 0) then
+		-- TRANSLATORS: Tribal Encyclopedia: Heading for wares consumed by a productionsite
+		result = result .. rt(h3(ngettext("Ware consumed:", "Wares consumed:", consumed_wares_counter)))
+		result = result .. consumed_wares_string
+	end
+	return result
+end

=== modified file 'tribes/scripting/help/ware_help.lua'
--- tribes/scripting/help/ware_help.lua	2015-11-03 12:15:31 +0000
+++ tribes/scripting/help/ware_help.lua	2015-11-03 12:15:41 +0000
@@ -1,68 +1,176 @@
---  =======================================================
---  *************** Basic helper functions ****************
---  =======================================================
-
--- RST
--- .. function:: image_line(image, count[, text = nil])
---
---    Aligns the image to a row on the right side with text on the left.
---
---    :arg image: the picture to be aligned to a row.
---    :arg count: length of the picture row.
---    :arg text: if given the text aligned on the left side, formatted via
---       formatting.lua functions.
---    :returns: the text on the left and a picture row on the right.
---
-function image_line(image, count, text)
-	local imgs={}
-	for i=1,count do
-		imgs[#imgs + 1] = image
-	end
-	local imgstr = table.concat(imgs, ";")
-
-	if text then
-		return rt("image=" .. imgstr .. " image-align=right", "  " .. text)
-	else
-		return rt("image=" .. imgstr .. " image-align=right", "")
-	end
-end
-
-
---  =======================================================
---  ************* Main worker help functions *************
---  =======================================================
-
--- RST
--- .. function ware_help_string(tribe, ware_description)
---
---    Displays the ware with a helptext and an image
+include "tribes/scripting/help/format_help.lua"
+
+
+-- RST
+-- ware_help.lua
+-- ---------------
+
+-- Functions used in the ingame ware help windows for formatting the text and pictures.
+
+
+--  =======================================================
+--  ************* Main ware help functions *************
+--  =======================================================
+
+-- RST
+-- .. function ware_help_general_string(tribe, ware_description)
+--
+--    Displays general info texts about the ware
 --
 --    :arg tribe: The :class:`LuaTribeDescription` for a tribe that uses this ware.
---    :arg ware_description: the worker_description from C++.
---    :returns: Help string for the ware
+--    :arg ware_description: the ware_description from C++.
+--    :returns: General info about the ware
 --
-function ware_help_string(tribe, ware_description)
-	include(ware_description.directory .. "helptexts.lua")
-
-	local result = ware_helptext()
-	if (result ~= "") then
-		result = result .. " "
-	else
-		result = ""
+function ware_help_general_string(tribe, ware_description)
+	local purpose_text = ware_helptext()
+	if (purpose_text ~= "") then
+		purpose_text = purpose_text .. " "
 	end
-	result = result .. ware_helptext(tribe)
+	purpose_text = ware_helptext() .. ware_helptext(tribe.name)
 
 	-- TODO(GunChleoc): Split into purpose and note
-	-- We also want the ware quantity info collected while loading the tribes.
-
-	result = rt("image=" .. ware_description.icon_name, p(result))
+	local result = rt(h2(_"Purpose")) ..
+		rt("image=" .. ware_description.icon_name, p(purpose_text))
+	return result
+end
+
+-- RST
+-- .. function ware_help_producers_string(tribe, ware_description)
+--
+--    Displays the buildings that produce this ware with information about
+--    wares consumed in their production programs
+--
+--    :arg tribe: The :class:`LuaTribeDescription` for a tribe that uses this ware.
+--    :arg ware_description: the ware_description from C++.
+--    :returns: Info about buildings producing this ware and the production cost.
+--
+function ware_help_producers_string(tribe, ware_description)
+	local result = ""
+	for i, building in ipairs(ware_description.producers) do
+		if (tribe:has_building(building.name)) then
+			-- TRANSLATORS: Ware Encyclopedia: A building producing a ware
+			result = result .. rt(h2(_"Producer"))
+			result = result .. dependencies({building, ware_description}, building.descname)
+
+			-- Find out which programs in the building produce this ware
+			local producing_programs = {}
+			for j, program_name in ipairs(building.production_programs) do
+				for ware, amount in pairs(building:produced_wares(program_name)) do
+					if (ware_description.name == ware) then
+						table.insert(producing_programs, program_name)
+					end
+				end
+			end
+
+			-- Now collect all wares produced by the filtered programs
+			local produced_wares_strings = {}
+			local produced_wares_counters = {}
+			for j, program_name in ipairs(producing_programs) do
+				local produced_wares_amount = {}
+				produced_wares_counters[program_name] = 0
+				for ware, amount in pairs(building:produced_wares(program_name)) do
+					if (produced_wares_amount[ware] == nil) then
+						produced_wares_amount[ware] = 0
+					end
+					produced_wares_amount[ware] = produced_wares_amount[ware] + amount
+					produced_wares_counters[program_name] = produced_wares_counters[program_name] + amount
+				end
+				local produced_wares_string = ""
+				for ware, amount in pairs(produced_wares_amount) do
+				local ware_descr = wl.Game():get_ware_description(ware)
+					produced_wares_string = produced_wares_string
+						.. help_ware_amount_line(ware_descr, amount)
+				end
+				produced_wares_strings[program_name] = produced_wares_string
+			end
+
+			-- Now collect the consumed wares for each filtered program and print the program info
+			for j, program_name in ipairs(producing_programs) do
+				result = result .. help_consumed_wares(building, program_name)
+				if (produced_wares_counters[program_name] > 0) then
+					result = result
+						-- TRANSLATORS: Ware Encyclopedia: Wares produced by a productionsite
+						.. rt(h3(ngettext("Ware produced:", "Wares produced:", produced_wares_counters[program_name])))
+						.. produced_wares_strings[program_name]
+				end
+			end
+
+		end
+	end
+	return result
+end
+
+-- RST
+-- .. function ware_help_consumers_string(tribe, ware_description)
+--
+--    Displays the buildings that consume this ware and about
+--    workers that use this ware as a tool
+--
+--    :arg tribe: The :class:`LuaTribeDescription` for a tribe that uses this ware.
+--    :arg ware_description: the ware_description from C++.
+--    :returns: Info about buildings and workers that use this ware
+--
+function ware_help_consumers_string(tribe, ware_description)
+	local result = ""
+
+	-- Now collecting the buildings that consume this ware
+	local consumers_string = ""
+	local consumers_amount = 0
+
+	for i, building in ipairs(ware_description.consumers) do
+		if (tribe:has_building(building.name)) then
+			consumers_string = consumers_string .. dependencies({ware_description, building}, building.descname)
+			consumers_amount = consumers_amount + 1
+		end
+	end
+
+	-- Constructionsite isn't listed with the consumers, so we need a special check
+	if (ware_description:is_construction_material(tribe.name)) then
+		local constructionsite_description = wl.Game():get_building_description("constructionsite")
+		consumers_string = consumers_string
+			.. dependencies({ware_description, constructionsite_description}, constructionsite_description.descname)
+		consumers_amount = consumers_amount + 1
+	end
+
+	-- Now collecting the workers that use this ware as a tool
+	local workers_string = ""
+	for i, workername in ipairs(tribe.workers) do
+	local worker = wl.Game():get_worker_description(workername)
+		local add_this_worker = false
+		for j, buildcost in ipairs(worker.buildcost) do
+			if (buildcost ~= nil and buildcost == ware_description.name) then
+				add_this_worker = true
+				consumers_amount = consumers_amount + 1
+				break
+			end
+		end
+		if(add_this_worker) then
+			workers_string = workers_string .. image_line(worker.icon_name, 1, p(worker.descname))
+		end
+	end
+
+	-- Now show consumers (buildings + workers)
+	if (consumers_amount > 0) then
+		-- TRANSLATORS: Ware Encyclopedia: A list of buildings and / or workers that consume a ware
+		result = result .. rt(h2(ngettext("Consumer", "Consumers", consumers_amount)))
+		if (consumers ~= "") then
+			result = result .. consumers_string
+		end
+		if (workers_string ~= "") then
+			result = result .. workers_string
+		end
+	end
 	return result
 end
 
 
 return {
-   func = function(tribe, ware_description)
+   func = function(tribename, ware_description)
       set_textdomain("tribes_encyclopedia")
-	   return ware_help_string(tribe, ware_description)
+      local tribe = wl.Game():get_tribe_description(tribename)
+      include(ware_description.helptext_script)
+	   return ware_help_general_string(tribe, ware_description)
+			.. ware_help_producers_string(tribe, ware_description)
+			.. ware_help_consumers_string(tribe, ware_description)
    end
 }

=== modified file 'tribes/scripting/help/worker_help.lua'
--- tribes/scripting/help/worker_help.lua	2015-11-03 12:15:31 +0000
+++ tribes/scripting/help/worker_help.lua	2015-11-03 12:15:41 +0000
@@ -1,37 +1,81 @@
---  =======================================================
---  *************** Basic helper functions ****************
---  =======================================================
+include "tribes/scripting/help/format_help.lua"
 
 -- RST
--- .. function:: image_line(image, count[, text = nil])
---
---    Aligns the image to a row on the right side with text on the left.
---
---    :arg image: the picture to be aligned to a row.
---    :arg count: length of the picture row.
---    :arg text: if given the text aligned on the left side, formatted via
---       formatting.lua functions.
---    :returns: the text on the left and a picture row on the right.
---
-function image_line(image, count, text)
-	local imgs={}
-	for i=1,count do
-		imgs[#imgs + 1] = image
-	end
-	local imgstr = table.concat(imgs, ";")
-
-	if text then
-		return rt("image=" .. imgstr .. " image-align=right", "  " .. text)
-	else
-		return rt("image=" .. imgstr .. " image-align=right", "")
-	end
-end
-
+-- worker_help.lua
+-- ---------------
+
+-- Functions used in the ingame worker help windows for formatting the text and pictures.
 
 --  =======================================================
 --  ************* Main worker help functions *************
 --  =======================================================
 
+function worker_help_producers_string(tribe, worker_description)
+	local result = ""
+	for i, building_name in ipairs(tribe.buildings) do
+		local building = wl.Game():get_building_description(building_name)
+		if (building.type_name == "productionsite") then
+			local recruits_this = false;
+			for j, output in ipairs(building.output_worker_types) do
+				if (output.name == worker_description.name) then
+					recruits_this = true;
+					break;
+				end
+			end
+
+			if (recruits_this) then
+				-- TRANSLATORS: Worker Encyclopedia: A building recruiting a worker
+				result = result .. rt(h2(_"Producer"))
+				result = result .. dependencies({building, worker_description}, building.descname)
+
+				-- Find out which programs in the building recruit this worker if any
+				local producing_programs = {}
+				for j, program_name in ipairs(building.production_programs) do
+					for worker, amount in pairs(building:recruited_workers(program_name)) do
+						if (worker_description.name == worker) then
+							table.insert(producing_programs, program_name)
+						end
+					end
+				end
+
+				-- Now collect all workers recruited by the filtered programs
+				local recruited_workers_strings = {}
+				local recruited_workers_counters = {}
+				for j, program_name in ipairs(producing_programs) do
+					local recruited_workers_amount = {}
+					recruited_workers_counters[program_name] = 0
+					for worker, amount in pairs(building:recruited_workers(program_name)) do
+						if (recruited_workers_amount[worker] == nil) then
+							recruited_workers_amount[worker] = 0
+						end
+						recruited_workers_amount[worker] = recruited_workers_amount[worker] + amount
+						recruited_workers_counters[program_name] = recruited_workers_counters[program_name] + amount
+					end
+					local produced_wares_string = ""
+					for ware, amount in pairs(recruited_workers_amount) do
+					local ware_descr = wl.Game():get_worker_description(ware)
+						produced_wares_string = produced_wares_string
+							.. help_ware_amount_line(ware_descr, amount)
+					end
+					recruited_workers_strings[program_name] = produced_wares_string
+				end
+
+				-- Now collect the consumed wares for each filtered program and print the program info
+				for j, program_name in ipairs(producing_programs) do
+					result = result .. help_consumed_wares(building, program_name)
+					if (recruited_workers_counters[program_name] > 0) then
+						result = result
+							-- TRANSLATORS: Worker Encyclopedia: Workers recruited by a productionsite
+							.. rt(h3(ngettext("Worker recruited:", "Workers recruited:", recruited_workers_counters[program_name])))
+							.. recruited_workers_strings[program_name]
+					end
+				end
+			end
+		end
+	end
+	return result
+end
+
 -- RST
 -- .. function worker_help_string(worker_description)
 --
@@ -44,22 +88,27 @@
 --    :returns: Help string for the worker
 --
 function worker_help_string(tribe, worker_description)
-	include(worker_description.directory .. "helptexts.lua")
+	include(worker_description.helptext_script)
 
 	local result = rt(h2(_"Purpose")) ..
 		rt("image=" .. worker_description.icon_name, p(worker_helptext()))
 
-	-- Get the tools for the workers.
-	local toolnames = {}
-	for j, buildcost in ipairs(worker_description.buildcost) do
-		if (buildcost ~= nil and tribe:has_ware(buildcost)) then
-			toolnames[#toolnames + 1] = buildcost
-		end
-	end
-
-	if(#toolnames > 0) then
-		result = result .. worker_help_tool_string(toolnames)
-	end
+	if (worker_description.is_buildable) then
+		-- Get the tools for the workers.
+		local toolnames = {}
+		for j, buildcost in ipairs(worker_description.buildcost) do
+			if (buildcost ~= nil and tribe:has_ware(buildcost)) then
+				toolnames[#toolnames + 1] = buildcost
+			end
+		end
+
+		if(#toolnames > 0) then
+			result = result .. help_tool_string(tribe, toolnames, 1)
+		end
+	else
+		result = result .. worker_help_producers_string(tribe, worker_description)
+	end
+
 
 	-- TODO(GunChleoc): Add "enhanced from" info in one_tribe branch
 	local becomes_description = worker_description.becomes
@@ -87,25 +136,6 @@
 end
 
 
--- RST
--- .. function worker_help_tool_string(toolname)
---
---    Displays tools with an intro text and images
---
---    :arg toolnames: e.g. {"shovel", "basket"}.
---    :returns: image_line for the tools
---
-function worker_help_tool_string(toolnames)
-	local result = rt(h3(ngettext("Worker uses:","Workers use:", 1)))
-	local game  = wl.Game();
-	for i, toolname in ipairs(toolnames) do
-		local ware_description = game:get_ware_description(toolname)
-		result = result .. image_line(ware_description.icon_name, 1, p(ware_description.descname))
-	end
-	return result
-end
-
-
 return {
    func = function(tribename, worker_description)
       set_textdomain("tribes_encyclopedia")

=== modified file 'tribes/wares/armor/init.lua'
--- tribes/wares/armor/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/armor/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "armor",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Armor"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		empire = 1

=== modified file 'tribes/wares/armor_chain/init.lua'
--- tribes/wares/armor_chain/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/armor_chain/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "armor_chain",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Chain Armor"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		empire = 1

=== modified file 'tribes/wares/armor_gilded/init.lua'
--- tribes/wares/armor_gilded/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/armor_gilded/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "armor_gilded",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Gilded Armor"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		empire = 1

=== modified file 'tribes/wares/armor_helmet/init.lua'
--- tribes/wares/armor_helmet/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/armor_helmet/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "armor_helmet",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("empire_ware", "Helmet"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		empire = 30

=== modified file 'tribes/wares/ax/init.lua'
--- tribes/wares/ax/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/ax/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "ax",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Ax"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		barbarians = 30

=== modified file 'tribes/wares/ax_battle/init.lua'
--- tribes/wares/ax_battle/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/ax_battle/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "ax_battle",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Battle Ax"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		barbarians = 1

=== modified file 'tribes/wares/ax_broad/init.lua'
--- tribes/wares/ax_broad/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/ax_broad/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "ax_broad",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Broad Ax"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		barbarians = 1

=== modified file 'tribes/wares/ax_bronze/init.lua'
--- tribes/wares/ax_bronze/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/ax_bronze/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "ax_bronze",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Bronze Ax"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		barbarians = 1

=== modified file 'tribes/wares/ax_sharp/init.lua'
--- tribes/wares/ax_sharp/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/ax_sharp/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "ax_sharp",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Sharp Ax"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		barbarians = 1

=== modified file 'tribes/wares/ax_warriors/init.lua'
--- tribes/wares/ax_warriors/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/ax_warriors/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "ax_warriors",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Warrior’s Ax"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		barbarians = 1

=== modified file 'tribes/wares/basket/init.lua'
--- tribes/wares/basket/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/basket/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "basket",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Basket"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		empire = 1

=== modified file 'tribes/wares/beer/init.lua'
--- tribes/wares/beer/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/beer/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "beer",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Beer"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		barbarians = 15,

=== modified file 'tribes/wares/beer_strong/init.lua'
--- tribes/wares/beer_strong/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/beer_strong/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "beer_strong",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Strong Beer"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		barbarians = 15

=== modified file 'tribes/wares/blackroot/init.lua'
--- tribes/wares/blackroot/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/blackroot/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "blackroot",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Blackroot"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		atlanteans = 20

=== modified file 'tribes/wares/blackroot_flour/init.lua'
--- tribes/wares/blackroot_flour/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/blackroot_flour/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "blackroot_flour",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Blackroot Flour"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		atlanteans = 15

=== modified file 'tribes/wares/blackwood/init.lua'
--- tribes/wares/blackwood/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/blackwood/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "blackwood",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Blackwood"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		barbarians = 40

=== modified file 'tribes/wares/bread_atlanteans/init.lua'
--- tribes/wares/bread_atlanteans/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/bread_atlanteans/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "atlanteans_bread",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("atlanteans_ware", "Bread"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		atlanteans = 20

=== modified file 'tribes/wares/bread_barbarians/init.lua'
--- tribes/wares/bread_barbarians/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/bread_barbarians/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "barbarians_bread",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("barbarians_ware", "Pitta Bread"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		barbarians = 20

=== modified file 'tribes/wares/bread_empire/init.lua'
--- tribes/wares/bread_empire/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/bread_empire/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "empire_bread",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("empire_ware", "Bread"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		empire = 20

=== modified file 'tribes/wares/bread_paddle/init.lua'
--- tribes/wares/bread_paddle/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/bread_paddle/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "bread_paddle",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Bread Paddle"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		atlanteans = 1,

=== modified file 'tribes/wares/buckets/init.lua'
--- tribes/wares/buckets/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/buckets/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "buckets",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Buckets"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		atlanteans = 2

=== modified file 'tribes/wares/cloth/init.lua'
--- tribes/wares/cloth/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/cloth/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "cloth",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Cloth"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		barbarians = 10,

=== modified file 'tribes/wares/coal/init.lua'
--- tribes/wares/coal/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/coal/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "coal",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Coal"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		atlanteans = 20,

=== modified file 'tribes/wares/corn/init.lua'
--- tribes/wares/corn/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/corn/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "corn",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Corn"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		atlanteans = 25

=== modified file 'tribes/wares/cornmeal/init.lua'
--- tribes/wares/cornmeal/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/cornmeal/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "cornmeal",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Cornmeal"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		atlanteans = 15

=== modified file 'tribes/wares/diamond/init.lua'
--- tribes/wares/diamond/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/diamond/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "diamond",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Diamond"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		atlanteans = 5

=== modified file 'tribes/wares/felling_ax/init.lua'
--- tribes/wares/felling_ax/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/felling_ax/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "felling_ax",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Felling Ax"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		barbarians = 5,

=== modified file 'tribes/wares/fire_tongs/init.lua'
--- tribes/wares/fire_tongs/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/fire_tongs/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "fire_tongs",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Fire Tongs"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		atlanteans = 1,

=== modified file 'tribes/wares/fish/init.lua'
--- tribes/wares/fish/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/fish/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "fish",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Fish"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		atlanteans = 20,

=== modified file 'tribes/wares/fishing_net/init.lua'
--- tribes/wares/fishing_net/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/fishing_net/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "fishing_net",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Fishing Net"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		atlanteans = 2

=== modified file 'tribes/wares/fishing_rod/init.lua'
--- tribes/wares/fishing_rod/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/fishing_rod/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "fishing_rod",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Fishing Rod"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		barbarians = 1,

=== modified file 'tribes/wares/flour/init.lua'
--- tribes/wares/flour/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/flour/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "flour",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Flour"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		empire = 20

=== modified file 'tribes/wares/gold/init.lua'
--- tribes/wares/gold/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/gold/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "gold",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Gold"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		atlanteans = 20,

=== modified file 'tribes/wares/gold_ore/init.lua'
--- tribes/wares/gold_ore/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/gold_ore/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "gold_ore",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Gold Ore"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		atlanteans = 15,

=== modified file 'tribes/wares/gold_thread/init.lua'
--- tribes/wares/gold_thread/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/gold_thread/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "gold_thread",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Gold Thread"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		atlanteans = 5

=== modified file 'tribes/wares/granite/init.lua'
--- tribes/wares/granite/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/granite/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "granite",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Granite"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		atlanteans = 20,

=== modified file 'tribes/wares/grape/init.lua'
--- tribes/wares/grape/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/grape/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "grape",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Grape"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		empire = 20

=== modified file 'tribes/wares/grout/init.lua'
--- tribes/wares/grout/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/grout/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "grout",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Grout"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		barbarians = 10

=== modified file 'tribes/wares/hammer/init.lua'
--- tribes/wares/hammer/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/hammer/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "hammer",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Hammer"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		atlanteans = 2,

=== modified file 'tribes/wares/helmet/init.lua'
--- tribes/wares/helmet/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/helmet/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "helmet",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("barbarians_ware", "Helmet"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		barbarians = 1

=== modified file 'tribes/wares/helmet_mask/init.lua'
--- tribes/wares/helmet_mask/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/helmet_mask/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "helmet_mask",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Mask"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		barbarians = 1

=== modified file 'tribes/wares/helmet_warhelm/init.lua'
--- tribes/wares/helmet_warhelm/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/helmet_warhelm/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "helmet_warhelm",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Warhelm"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		barbarians = 1

=== modified file 'tribes/wares/hook_pole/init.lua'
--- tribes/wares/hook_pole/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/hook_pole/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "hook_pole",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Hook Pole"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		atlanteans = 1

=== modified file 'tribes/wares/hunting_bow/init.lua'
--- tribes/wares/hunting_bow/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/hunting_bow/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "hunting_bow",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Hunting Bow"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		atlanteans = 1

=== modified file 'tribes/wares/hunting_spear/init.lua'
--- tribes/wares/hunting_spear/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/hunting_spear/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "hunting_spear",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Hunting Spear"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		barbarians = 1,

=== modified file 'tribes/wares/iron/init.lua'
--- tribes/wares/iron/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/iron/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "iron",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Iron"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		atlanteans = 20,

=== modified file 'tribes/wares/iron_ore/init.lua'
--- tribes/wares/iron_ore/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/iron_ore/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "iron_ore",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Iron Ore"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		atlanteans = 15,

=== modified file 'tribes/wares/kitchen_tools/init.lua'
--- tribes/wares/kitchen_tools/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/kitchen_tools/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "kitchen_tools",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Kitchen Tools"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		barbarians = 1,

=== modified file 'tribes/wares/log/init.lua'
--- tribes/wares/log/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/log/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "log",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Log"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		atlanteans = 40,

=== modified file 'tribes/wares/marble/init.lua'
--- tribes/wares/marble/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/marble/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "marble",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Marble"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		empire = 30

=== modified file 'tribes/wares/marble_column/init.lua'
--- tribes/wares/marble_column/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/marble_column/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "marble_column",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Marble Column"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		empire = 10

=== modified file 'tribes/wares/meal/init.lua'
--- tribes/wares/meal/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/meal/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "meal",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Meal"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		barbarians = 10,

=== modified file 'tribes/wares/meat/init.lua'
--- tribes/wares/meat/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/meat/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "meat",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Meat"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		atlanteans = 20,

=== modified file 'tribes/wares/milking_tongs/init.lua'
--- tribes/wares/milking_tongs/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/milking_tongs/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "milking_tongs",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Milking Tongs"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		atlanteans = 1

=== modified file 'tribes/wares/pick/init.lua'
--- tribes/wares/pick/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/pick/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "pick",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Pick"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		atlanteans = 3,

=== modified file 'tribes/wares/planks/init.lua'
--- tribes/wares/planks/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/planks/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "planks",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Planks"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		atlanteans = 40,

=== modified file 'tribes/wares/quartz/init.lua'
--- tribes/wares/quartz/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/quartz/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "quartz",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Quartz"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		atlanteans = 5

=== modified file 'tribes/wares/ration/init.lua'
--- tribes/wares/ration/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/ration/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "ration",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Ration"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		barbarians = 20,

=== modified file 'tribes/wares/saw/init.lua'
--- tribes/wares/saw/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/saw/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "saw",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Saw"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		atlanteans = 2,

=== modified file 'tribes/wares/scythe/init.lua'
--- tribes/wares/scythe/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/scythe/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "scythe",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Scythe"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		atlanteans = 1,

=== modified file 'tribes/wares/shield_advanced/init.lua'
--- tribes/wares/shield_advanced/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/shield_advanced/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "shield_advanced",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Advanced Shield"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		atlanteans = 1

=== modified file 'tribes/wares/shield_steel/init.lua'
--- tribes/wares/shield_steel/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/shield_steel/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "shield_steel",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Steel Shield"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		atlanteans = 1

=== modified file 'tribes/wares/shovel/init.lua'
--- tribes/wares/shovel/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/shovel/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "shovel",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Shovel"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		atlanteans = 2,

=== modified file 'tribes/wares/smoked_fish/init.lua'
--- tribes/wares/smoked_fish/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/smoked_fish/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "smoked_fish",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Smoked Fish"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		atlanteans = 30

=== modified file 'tribes/wares/smoked_meat/init.lua'
--- tribes/wares/smoked_meat/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/smoked_meat/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "smoked_meat",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Smoked Meat"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		atlanteans = 20

=== modified file 'tribes/wares/snack/init.lua'
--- tribes/wares/snack/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/snack/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "snack",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Snack"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		barbarians = 15

=== modified file 'tribes/wares/spear/init.lua'
--- tribes/wares/spear/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/spear/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "spear",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Spear"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		empire = 1

=== modified file 'tribes/wares/spear_advanced/init.lua'
--- tribes/wares/spear_advanced/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/spear_advanced/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "spear_advanced",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Advanced Spear"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		empire = 1

=== modified file 'tribes/wares/spear_heavy/init.lua'
--- tribes/wares/spear_heavy/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/spear_heavy/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "spear_heavy",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Heavy Spear"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		empire = 1

=== modified file 'tribes/wares/spear_war/init.lua'
--- tribes/wares/spear_war/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/spear_war/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "spear_war",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "War Spear"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		empire = 1

=== modified file 'tribes/wares/spear_wooden/init.lua'
--- tribes/wares/spear_wooden/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/spear_wooden/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "spear_wooden",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Wooden Spear"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		empire = 30

=== modified file 'tribes/wares/spider_silk/init.lua'
--- tribes/wares/spider_silk/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/spider_silk/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "spider_silk",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Spider Silk"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		atlanteans = 10

=== modified file 'tribes/wares/spidercloth/init.lua'
--- tribes/wares/spidercloth/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/spidercloth/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "spidercloth",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Spidercloth"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		atlanteans = 20

=== modified file 'tribes/wares/tabard/init.lua'
--- tribes/wares/tabard/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/tabard/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "tabard",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Tabard"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		atlanteans = 30

=== modified file 'tribes/wares/tabard_golden/init.lua'
--- tribes/wares/tabard_golden/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/tabard_golden/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "tabard_golden",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Golden Tabard"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		atlanteans = 1

=== modified file 'tribes/wares/thatch_reed/init.lua'
--- tribes/wares/thatch_reed/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/thatch_reed/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "thatch_reed",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Thatch Reed"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		barbarians = 10

=== modified file 'tribes/wares/trident_double/init.lua'
--- tribes/wares/trident_double/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/trident_double/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "trident_double",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Double Trident"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		atlanteans = 1

=== modified file 'tribes/wares/trident_heavy_double/init.lua'
--- tribes/wares/trident_heavy_double/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/trident_heavy_double/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "trident_heavy_double",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Heavy Double Trident"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		atlanteans = 1

=== modified file 'tribes/wares/trident_light/init.lua'
--- tribes/wares/trident_light/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/trident_light/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "trident_light",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Light Trident"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		atlanteans = 30

=== modified file 'tribes/wares/trident_long/init.lua'
--- tribes/wares/trident_long/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/trident_long/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "trident_long",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Long Trident"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		atlanteans = 1

=== modified file 'tribes/wares/trident_steel/init.lua'
--- tribes/wares/trident_steel/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/trident_steel/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "trident_steel",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Steel Trident"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		atlanteans = 1

=== modified file 'tribes/wares/water/init.lua'
--- tribes/wares/water/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/water/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "water",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Water"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		atlanteans = 25,

=== modified file 'tribes/wares/wheat/init.lua'
--- tribes/wares/wheat/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/wheat/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "wheat",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Wheat"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		barbarians = 25,

=== modified file 'tribes/wares/wine/init.lua'
--- tribes/wares/wine/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/wine/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "wine",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Wine"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		empire = 20

=== modified file 'tribes/wares/wool/init.lua'
--- tribes/wares/wool/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/wares/wool/init.lua	2015-11-03 12:15:41 +0000
@@ -5,7 +5,7 @@
    name = "wool",
    -- TRANSLATORS: This is a ware name used in lists of wares
    descname = pgettext("ware", "Wool"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    default_target_quantity = {
 		empire = 10

=== modified file 'tribes/workers/atlanteans/armorsmith/init.lua'
--- tribes/workers/atlanteans/armorsmith/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/atlanteans/armorsmith/init.lua	2015-11-03 12:15:41 +0000
@@ -16,7 +16,7 @@
    name = "atlanteans_armorsmith",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("atlanteans_worker", "Armorsmith"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/atlanteans/baker/init.lua'
--- tribes/workers/atlanteans/baker/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/atlanteans/baker/init.lua	2015-11-03 12:15:41 +0000
@@ -16,7 +16,7 @@
    name = "atlanteans_baker",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("atlanteans_worker", "Baker"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/atlanteans/blackroot_farmer/init.lua'
--- tribes/workers/atlanteans/blackroot_farmer/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/atlanteans/blackroot_farmer/init.lua	2015-11-03 12:15:41 +0000
@@ -34,7 +34,7 @@
    name = "atlanteans_blackroot_farmer",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("atlanteans_worker", "Blackroot Farmer"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/atlanteans/builder/init.lua'
--- tribes/workers/atlanteans/builder/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/atlanteans/builder/init.lua	2015-11-03 12:15:41 +0000
@@ -26,7 +26,7 @@
    name = "atlanteans_builder",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("atlanteans_worker", "Builder"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/atlanteans/carrier/init.lua'
--- tribes/workers/atlanteans/carrier/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/atlanteans/carrier/init.lua	2015-11-03 12:15:41 +0000
@@ -18,7 +18,7 @@
    name = "atlanteans_carrier",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("atlanteans_worker", "Carrier"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/atlanteans/charcoal_burner/init.lua'
--- tribes/workers/atlanteans/charcoal_burner/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/atlanteans/charcoal_burner/init.lua	2015-11-03 12:15:41 +0000
@@ -16,7 +16,7 @@
    name = "atlanteans_charcoal_burner",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("atlanteans_worker", "Charcoal Burner"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/atlanteans/farmer/init.lua'
--- tribes/workers/atlanteans/farmer/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/atlanteans/farmer/init.lua	2015-11-03 12:15:41 +0000
@@ -34,7 +34,7 @@
    name = "atlanteans_farmer",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("atlanteans_worker", "Farmer"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/atlanteans/fishbreeder/init.lua'
--- tribes/workers/atlanteans/fishbreeder/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/atlanteans/fishbreeder/init.lua	2015-11-03 12:15:41 +0000
@@ -20,7 +20,7 @@
    name = "atlanteans_fishbreeder",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("atlanteans_worker", "Fish Breeder"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/atlanteans/fisher/init.lua'
--- tribes/workers/atlanteans/fisher/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/atlanteans/fisher/init.lua	2015-11-03 12:15:41 +0000
@@ -22,7 +22,7 @@
    name = "atlanteans_fisher",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("atlanteans_worker", "Fisher"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/atlanteans/forester/init.lua'
--- tribes/workers/atlanteans/forester/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/atlanteans/forester/init.lua	2015-11-03 12:15:41 +0000
@@ -34,7 +34,7 @@
    name = "atlanteans_forester",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("atlanteans_worker", "Forester"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/atlanteans/geologist/init.lua'
--- tribes/workers/atlanteans/geologist/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/atlanteans/geologist/init.lua	2015-11-03 12:15:41 +0000
@@ -23,7 +23,7 @@
    name = "atlanteans_geologist",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("atlanteans_worker", "Geologist"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/atlanteans/horse/init.lua'
--- tribes/workers/atlanteans/horse/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/atlanteans/horse/init.lua	2015-11-03 12:15:41 +0000
@@ -17,7 +17,7 @@
    name = "atlanteans_horse",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("atlanteans_worker", "Horse"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/atlanteans/horsebreeder/init.lua'
--- tribes/workers/atlanteans/horsebreeder/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/atlanteans/horsebreeder/init.lua	2015-11-03 12:15:41 +0000
@@ -14,7 +14,7 @@
    name = "atlanteans_horsebreeder",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("atlanteans_worker", "Horse Breeder"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/atlanteans/hunter/init.lua'
--- tribes/workers/atlanteans/hunter/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/atlanteans/hunter/init.lua	2015-11-03 12:15:41 +0000
@@ -17,7 +17,7 @@
    name = "atlanteans_hunter",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("atlanteans_worker", "Hunter"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/atlanteans/miller/init.lua'
--- tribes/workers/atlanteans/miller/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/atlanteans/miller/init.lua	2015-11-03 12:15:41 +0000
@@ -16,7 +16,7 @@
    name = "atlanteans_miller",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("atlanteans_worker", "Miller"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/atlanteans/miner/init.lua'
--- tribes/workers/atlanteans/miner/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/atlanteans/miner/init.lua	2015-11-03 12:15:41 +0000
@@ -16,7 +16,7 @@
    name = "atlanteans_miner",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("atlanteans_worker", "Miner"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/atlanteans/sawyer/init.lua'
--- tribes/workers/atlanteans/sawyer/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/atlanteans/sawyer/init.lua	2015-11-03 12:15:41 +0000
@@ -16,7 +16,7 @@
    name = "atlanteans_sawyer",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("atlanteans_worker", "Sawyer"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/atlanteans/scout/init.lua'
--- tribes/workers/atlanteans/scout/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/atlanteans/scout/init.lua	2015-11-03 12:15:41 +0000
@@ -14,7 +14,7 @@
    name = "atlanteans_scout",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("atlanteans_worker", "Scout"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/atlanteans/shipwright/init.lua'
--- tribes/workers/atlanteans/shipwright/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/atlanteans/shipwright/init.lua	2015-11-03 12:15:41 +0000
@@ -21,7 +21,7 @@
    name = "atlanteans_shipwright",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("atlanteans_worker", "Shipwright"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/atlanteans/smelter/init.lua'
--- tribes/workers/atlanteans/smelter/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/atlanteans/smelter/init.lua	2015-11-03 12:15:41 +0000
@@ -16,7 +16,7 @@
    name = "atlanteans_smelter",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("atlanteans_worker", "Smelter"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/atlanteans/smoker/init.lua'
--- tribes/workers/atlanteans/smoker/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/atlanteans/smoker/init.lua	2015-11-03 12:15:41 +0000
@@ -14,7 +14,7 @@
    name = "atlanteans_smoker",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("atlanteans_worker", "Smoker"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/atlanteans/soldier/init.lua'
--- tribes/workers/atlanteans/soldier/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/atlanteans/soldier/init.lua	2015-11-03 12:15:41 +0000
@@ -76,7 +76,7 @@
    name = "atlanteans_soldier",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("atlanteans_worker", "Soldier"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/atlanteans/spiderbreeder/init.lua'
--- tribes/workers/atlanteans/spiderbreeder/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/atlanteans/spiderbreeder/init.lua	2015-11-03 12:15:41 +0000
@@ -16,7 +16,7 @@
    name = "atlanteans_spiderbreeder",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("atlanteans_worker", "Spider Breeder"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/atlanteans/stonecutter/init.lua'
--- tribes/workers/atlanteans/stonecutter/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/atlanteans/stonecutter/init.lua	2015-11-03 12:15:41 +0000
@@ -22,7 +22,7 @@
    name = "atlanteans_stonecutter",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("atlanteans_worker", "Stonecutter"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/atlanteans/toolsmith/init.lua'
--- tribes/workers/atlanteans/toolsmith/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/atlanteans/toolsmith/init.lua	2015-11-03 12:15:41 +0000
@@ -16,7 +16,7 @@
    name = "atlanteans_toolsmith",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("atlanteans_worker", "Toolsmith"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/atlanteans/trainer/init.lua'
--- tribes/workers/atlanteans/trainer/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/atlanteans/trainer/init.lua	2015-11-03 12:15:41 +0000
@@ -16,7 +16,7 @@
    name = "atlanteans_trainer",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("atlanteans_worker", "Trainer"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/atlanteans/weaponsmith/init.lua'
--- tribes/workers/atlanteans/weaponsmith/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/atlanteans/weaponsmith/init.lua	2015-11-03 12:15:41 +0000
@@ -16,7 +16,7 @@
    name = "atlanteans_weaponsmith",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("atlanteans_worker", "Weaponsmith"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/atlanteans/weaver/init.lua'
--- tribes/workers/atlanteans/weaver/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/atlanteans/weaver/init.lua	2015-11-03 12:15:41 +0000
@@ -16,7 +16,7 @@
    name = "atlanteans_weaver",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("atlanteans_worker", "Weaver"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/atlanteans/woodcutter/init.lua'
--- tribes/workers/atlanteans/woodcutter/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/atlanteans/woodcutter/init.lua	2015-11-03 12:15:41 +0000
@@ -22,7 +22,7 @@
    name = "atlanteans_woodcutter",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("atlanteans_worker", "Woodcutter"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/barbarians/baker/init.lua'
--- tribes/workers/barbarians/baker/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/barbarians/baker/init.lua	2015-11-03 12:15:41 +0000
@@ -16,7 +16,7 @@
    name = "barbarians_baker",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("barbarians_worker", "Baker"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/barbarians/blacksmith/init.lua'
--- tribes/workers/barbarians/blacksmith/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/barbarians/blacksmith/init.lua	2015-11-03 12:15:41 +0000
@@ -16,7 +16,7 @@
    name = "barbarians_blacksmith",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("barbarians_worker", "Blacksmith"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/barbarians/blacksmith_master/init.lua'
--- tribes/workers/barbarians/blacksmith_master/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/barbarians/blacksmith_master/init.lua	2015-11-03 12:15:41 +0000
@@ -16,7 +16,7 @@
    name = "barbarians_blacksmith_master",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("barbarians_worker", "Master Blacksmith"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/barbarians/brewer/init.lua'
--- tribes/workers/barbarians/brewer/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/barbarians/brewer/init.lua	2015-11-03 12:15:41 +0000
@@ -16,7 +16,7 @@
    name = "barbarians_brewer",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("barbarians_worker", "Brewer"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/barbarians/brewer_master/init.lua'
--- tribes/workers/barbarians/brewer_master/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/barbarians/brewer_master/init.lua	2015-11-03 12:15:41 +0000
@@ -16,7 +16,7 @@
    name = "barbarians_brewer_master",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("barbarians_worker", "Master Brewer"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/barbarians/builder/init.lua'
--- tribes/workers/barbarians/builder/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/barbarians/builder/init.lua	2015-11-03 12:15:41 +0000
@@ -27,7 +27,7 @@
    name = "barbarians_builder",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("barbarians_worker", "Builder"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/barbarians/carrier/init.lua'
--- tribes/workers/barbarians/carrier/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/barbarians/carrier/init.lua	2015-11-03 12:15:41 +0000
@@ -17,7 +17,7 @@
    name = "barbarians_carrier",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("barbarians_worker", "Carrier"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/barbarians/cattlebreeder/init.lua'
--- tribes/workers/barbarians/cattlebreeder/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/barbarians/cattlebreeder/init.lua	2015-11-03 12:15:41 +0000
@@ -16,7 +16,7 @@
    name = "barbarians_cattlebreeder",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("barbarians_worker", "Cattle Breeder"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/barbarians/charcoal_burner/init.lua'
--- tribes/workers/barbarians/charcoal_burner/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/barbarians/charcoal_burner/init.lua	2015-11-03 12:15:41 +0000
@@ -16,7 +16,7 @@
    name = "barbarians_charcoal_burner",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("barbarians_worker", "Charcoal Burner"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/barbarians/farmer/init.lua'
--- tribes/workers/barbarians/farmer/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/barbarians/farmer/init.lua	2015-11-03 12:15:41 +0000
@@ -34,7 +34,7 @@
    name = "barbarians_farmer",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("barbarians_worker", "Farmer"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/barbarians/fisher/init.lua'
--- tribes/workers/barbarians/fisher/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/barbarians/fisher/init.lua	2015-11-03 12:15:41 +0000
@@ -22,7 +22,7 @@
    name = "barbarians_fisher",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("barbarians_worker", "Fisher"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/barbarians/gamekeeper/init.lua'
--- tribes/workers/barbarians/gamekeeper/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/barbarians/gamekeeper/init.lua	2015-11-03 12:15:41 +0000
@@ -28,7 +28,7 @@
    name = "barbarians_gamekeeper",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("barbarians_worker", "Gamekeeper"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/barbarians/gardener/init.lua'
--- tribes/workers/barbarians/gardener/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/barbarians/gardener/init.lua	2015-11-03 12:15:41 +0000
@@ -28,7 +28,7 @@
    name = "barbarians_gardener",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("barbarians_worker", "Gardener"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/barbarians/geologist/init.lua'
--- tribes/workers/barbarians/geologist/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/barbarians/geologist/init.lua	2015-11-03 12:15:41 +0000
@@ -23,7 +23,7 @@
    name = "barbarians_geologist",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("barbarians_worker", "Geologist"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/barbarians/helmsmith/init.lua'
--- tribes/workers/barbarians/helmsmith/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/barbarians/helmsmith/init.lua	2015-11-03 12:15:41 +0000
@@ -16,7 +16,7 @@
    name = "barbarians_helmsmith",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("barbarians_worker", "Helmsmith"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/barbarians/hunter/init.lua'
--- tribes/workers/barbarians/hunter/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/barbarians/hunter/init.lua	2015-11-03 12:15:41 +0000
@@ -17,7 +17,7 @@
    name = "barbarians_hunter",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("barbarians_worker", "Hunter"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/barbarians/innkeeper/init.lua'
--- tribes/workers/barbarians/innkeeper/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/barbarians/innkeeper/init.lua	2015-11-03 12:15:41 +0000
@@ -16,7 +16,7 @@
    name = "barbarians_innkeeper",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("barbarians_worker", "Innkeeper"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/barbarians/lime_burner/init.lua'
--- tribes/workers/barbarians/lime_burner/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/barbarians/lime_burner/init.lua	2015-11-03 12:15:41 +0000
@@ -16,7 +16,7 @@
    name = "barbarians_lime_burner",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("barbarians_worker", "Lime-Burner"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/barbarians/lumberjack/init.lua'
--- tribes/workers/barbarians/lumberjack/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/barbarians/lumberjack/init.lua	2015-11-03 12:15:41 +0000
@@ -23,7 +23,7 @@
    name = "barbarians_lumberjack",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("barbarians_worker", "Lumberjack"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/barbarians/miner/init.lua'
--- tribes/workers/barbarians/miner/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/barbarians/miner/init.lua	2015-11-03 12:15:41 +0000
@@ -16,7 +16,7 @@
    name = "barbarians_miner",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("barbarians_worker", "Miner"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/barbarians/miner_chief/init.lua'
--- tribes/workers/barbarians/miner_chief/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/barbarians/miner_chief/init.lua	2015-11-03 12:15:41 +0000
@@ -16,7 +16,7 @@
    name = "barbarians_miner_chief",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("barbarians_worker", "Chief Miner"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/barbarians/miner_master/init.lua'
--- tribes/workers/barbarians/miner_master/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/barbarians/miner_master/init.lua	2015-11-03 12:15:41 +0000
@@ -16,7 +16,7 @@
    name = "barbarians_miner_master",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("barbarians_worker", "Master Miner"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/barbarians/ox/init.lua'
--- tribes/workers/barbarians/ox/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/barbarians/ox/init.lua	2015-11-03 12:15:41 +0000
@@ -18,7 +18,7 @@
    name = "barbarians_ox",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("barbarians_worker", "Ox"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/barbarians/ranger/init.lua'
--- tribes/workers/barbarians/ranger/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/barbarians/ranger/init.lua	2015-11-03 12:15:41 +0000
@@ -34,7 +34,7 @@
    name = "barbarians_ranger",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("barbarians_worker", "Ranger"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/barbarians/scout/init.lua'
--- tribes/workers/barbarians/scout/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/barbarians/scout/init.lua	2015-11-03 12:15:41 +0000
@@ -16,7 +16,7 @@
    name = "barbarians_scout",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("barbarians_worker", "Scout"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/barbarians/shipwright/init.lua'
--- tribes/workers/barbarians/shipwright/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/barbarians/shipwright/init.lua	2015-11-03 12:15:41 +0000
@@ -26,7 +26,7 @@
    name = "barbarians_shipwright",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("barbarians_worker", "Shipwright"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/barbarians/smelter/init.lua'
--- tribes/workers/barbarians/smelter/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/barbarians/smelter/init.lua	2015-11-03 12:15:41 +0000
@@ -16,7 +16,7 @@
    name = "barbarians_smelter",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("barbarians_worker", "Smelter"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/barbarians/soldier/init.lua'
--- tribes/workers/barbarians/soldier/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/barbarians/soldier/init.lua	2015-11-03 12:15:41 +0000
@@ -76,7 +76,7 @@
    name = "barbarians_soldier",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("barbarians_worker", "Soldier"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/barbarians/stonemason/init.lua'
--- tribes/workers/barbarians/stonemason/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/barbarians/stonemason/init.lua	2015-11-03 12:15:41 +0000
@@ -23,7 +23,7 @@
    name = "barbarians_stonemason",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("barbarians_worker", "Stonemason"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/barbarians/trainer/init.lua'
--- tribes/workers/barbarians/trainer/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/barbarians/trainer/init.lua	2015-11-03 12:15:41 +0000
@@ -15,7 +15,7 @@
    name = "barbarians_trainer",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("barbarians_worker", "Trainer"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/barbarians/weaver/init.lua'
--- tribes/workers/barbarians/weaver/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/barbarians/weaver/init.lua	2015-11-03 12:15:41 +0000
@@ -16,7 +16,7 @@
    name = "barbarians_weaver",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("barbarians_worker", "Weaver"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/empire/armorsmith/init.lua'
--- tribes/workers/empire/armorsmith/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/empire/armorsmith/init.lua	2015-11-03 12:15:41 +0000
@@ -16,7 +16,7 @@
    name = "empire_armorsmith",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("empire_worker", "Armorsmith"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/empire/baker/init.lua'
--- tribes/workers/empire/baker/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/empire/baker/init.lua	2015-11-03 12:15:41 +0000
@@ -16,7 +16,7 @@
    name = "empire_baker",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("empire_worker", "Baker"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/empire/brewer/init.lua'
--- tribes/workers/empire/brewer/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/empire/brewer/init.lua	2015-11-03 12:15:41 +0000
@@ -16,7 +16,7 @@
    name = "empire_brewer",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("empire_worker", "Brewer"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/empire/builder/init.lua'
--- tribes/workers/empire/builder/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/empire/builder/init.lua	2015-11-03 12:15:41 +0000
@@ -27,7 +27,7 @@
    name = "empire_builder",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("empire_worker", "Builder"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/empire/carpenter/init.lua'
--- tribes/workers/empire/carpenter/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/empire/carpenter/init.lua	2015-11-03 12:15:41 +0000
@@ -16,7 +16,7 @@
    name = "empire_carpenter",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("empire_worker", "Carpenter"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/empire/carrier/init.lua'
--- tribes/workers/empire/carrier/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/empire/carrier/init.lua	2015-11-03 12:15:41 +0000
@@ -17,7 +17,7 @@
    name = "empire_carrier",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("empire_worker", "Carrier"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/empire/charcoal_burner/init.lua'
--- tribes/workers/empire/charcoal_burner/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/empire/charcoal_burner/init.lua	2015-11-03 12:15:41 +0000
@@ -16,7 +16,7 @@
    name = "empire_charcoal_burner",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("empire_worker", "Charcoal Burner"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/empire/donkey/init.lua'
--- tribes/workers/empire/donkey/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/empire/donkey/init.lua	2015-11-03 12:15:41 +0000
@@ -17,7 +17,7 @@
    name = "empire_donkey",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("empire_worker", "Donkey"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/empire/donkeybreeder/init.lua'
--- tribes/workers/empire/donkeybreeder/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/empire/donkeybreeder/init.lua	2015-11-03 12:15:41 +0000
@@ -16,7 +16,7 @@
    name = "empire_donkeybreeder",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("empire_worker", "Donkey Breeder"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/empire/farmer/init.lua'
--- tribes/workers/empire/farmer/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/empire/farmer/init.lua	2015-11-03 12:15:41 +0000
@@ -34,7 +34,7 @@
    name = "empire_farmer",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("empire_worker", "Farmer"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/empire/fisher/init.lua'
--- tribes/workers/empire/fisher/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/empire/fisher/init.lua	2015-11-03 12:15:41 +0000
@@ -21,7 +21,7 @@
    name = "empire_fisher",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("empire_worker", "Fisher"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/empire/forester/init.lua'
--- tribes/workers/empire/forester/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/empire/forester/init.lua	2015-11-03 12:15:41 +0000
@@ -34,7 +34,7 @@
    name = "empire_forester",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("empire_worker", "Forester"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/empire/geologist/init.lua'
--- tribes/workers/empire/geologist/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/empire/geologist/init.lua	2015-11-03 12:15:41 +0000
@@ -23,7 +23,7 @@
    name = "empire_geologist",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("empire_worker", "Geologist"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/empire/hunter/init.lua'
--- tribes/workers/empire/hunter/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/empire/hunter/init.lua	2015-11-03 12:15:41 +0000
@@ -17,7 +17,7 @@
    name = "empire_hunter",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("empire_worker", "Hunter"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/empire/innkeeper/init.lua'
--- tribes/workers/empire/innkeeper/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/empire/innkeeper/init.lua	2015-11-03 12:15:41 +0000
@@ -16,7 +16,7 @@
    name = "empire_innkeeper",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("empire_worker", "Innkeeper"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/empire/lumberjack/init.lua'
--- tribes/workers/empire/lumberjack/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/empire/lumberjack/init.lua	2015-11-03 12:15:41 +0000
@@ -23,7 +23,7 @@
    name = "empire_lumberjack",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("empire_worker", "Lumberjack"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/empire/miller/init.lua'
--- tribes/workers/empire/miller/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/empire/miller/init.lua	2015-11-03 12:15:41 +0000
@@ -16,7 +16,7 @@
    name = "empire_miller",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("empire_worker", "Miller"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/empire/miner/init.lua'
--- tribes/workers/empire/miner/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/empire/miner/init.lua	2015-11-03 12:15:41 +0000
@@ -16,7 +16,7 @@
    name = "empire_miner",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("empire_worker", "Miner"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/empire/miner_master/init.lua'
--- tribes/workers/empire/miner_master/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/empire/miner_master/init.lua	2015-11-03 12:15:41 +0000
@@ -16,7 +16,7 @@
    name = "empire_miner_master",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("empire_worker", "Master Miner"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/empire/pigbreeder/init.lua'
--- tribes/workers/empire/pigbreeder/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/empire/pigbreeder/init.lua	2015-11-03 12:15:41 +0000
@@ -16,7 +16,7 @@
    name = "empire_pigbreeder",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("empire_worker", "Pig Breeder"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/empire/scout/init.lua'
--- tribes/workers/empire/scout/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/empire/scout/init.lua	2015-11-03 12:15:41 +0000
@@ -16,7 +16,7 @@
    name = "empire_scout",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("empire_worker", "Scout"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/empire/shepherd/init.lua'
--- tribes/workers/empire/shepherd/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/empire/shepherd/init.lua	2015-11-03 12:15:41 +0000
@@ -16,7 +16,7 @@
    name = "empire_shepherd",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("empire_worker", "Shepherd"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/empire/shipwright/init.lua'
--- tribes/workers/empire/shipwright/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/empire/shipwright/init.lua	2015-11-03 12:15:41 +0000
@@ -26,7 +26,7 @@
    name = "empire_shipwright",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("empire_worker", "Shipwright"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/empire/smelter/init.lua'
--- tribes/workers/empire/smelter/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/empire/smelter/init.lua	2015-11-03 12:15:41 +0000
@@ -16,7 +16,7 @@
    name = "empire_smelter",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("empire_worker", "Smelter"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/empire/soldier/init.lua'
--- tribes/workers/empire/soldier/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/empire/soldier/init.lua	2015-11-03 12:15:41 +0000
@@ -76,7 +76,7 @@
    name = "empire_soldier",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("empire_worker", "Soldier"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/empire/stonemason/init.lua'
--- tribes/workers/empire/stonemason/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/empire/stonemason/init.lua	2015-11-03 12:15:41 +0000
@@ -23,7 +23,7 @@
    name = "empire_stonemason",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("empire_worker", "Stonemason"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/empire/toolsmith/init.lua'
--- tribes/workers/empire/toolsmith/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/empire/toolsmith/init.lua	2015-11-03 12:15:41 +0000
@@ -16,7 +16,7 @@
    name = "empire_toolsmith",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("empire_worker", "Toolsmith"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/empire/trainer/init.lua'
--- tribes/workers/empire/trainer/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/empire/trainer/init.lua	2015-11-03 12:15:41 +0000
@@ -16,7 +16,7 @@
    name = "empire_trainer",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("empire_worker", "Trainer"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/empire/vinefarmer/init.lua'
--- tribes/workers/empire/vinefarmer/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/empire/vinefarmer/init.lua	2015-11-03 12:15:41 +0000
@@ -34,7 +34,7 @@
    name = "empire_vinefarmer",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("empire_worker", "Vine Farmer"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/empire/vintner/init.lua'
--- tribes/workers/empire/vintner/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/empire/vintner/init.lua	2015-11-03 12:15:41 +0000
@@ -17,7 +17,7 @@
    name = "empire_vintner",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("empire_worker", "Vintner"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/empire/weaponsmith/init.lua'
--- tribes/workers/empire/weaponsmith/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/empire/weaponsmith/init.lua	2015-11-03 12:15:41 +0000
@@ -16,7 +16,7 @@
    name = "empire_weaponsmith",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("empire_worker", "Weaponsmith"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 

=== modified file 'tribes/workers/empire/weaver/init.lua'
--- tribes/workers/empire/weaver/init.lua	2015-11-03 12:15:31 +0000
+++ tribes/workers/empire/weaver/init.lua	2015-11-03 12:15:41 +0000
@@ -16,7 +16,7 @@
    name = "empire_weaver",
    -- TRANSLATORS: This is a worker name used in lists of workers
    descname = pgettext("empire_worker", "Weaver"),
-   directory = dirname,
+   helptext_script = dirname .. "helptexts.lua",
    icon = dirname .. "menu.png",
    vision_range = 2,
 


Follow ups