← Back to team overview

widelands-dev team mailing list archive

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

 

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

Requested reviews:
  Widelands Developers (widelands-dev)
Related bugs:
  Bug #1505723 in widelands: "Some performance values for the buildings help text"
  https://bugs.launchpad.net/widelands/+bug/1505723

For more details, see:
https://code.launchpad.net/~widelands-dev/widelands/bug-1505723/+merge/278174

Added new performance calculations to help files.
-- 
Your team Widelands Developers is requested to review the proposed merge of lp:~widelands-dev/widelands/bug-1505723 into lp:widelands.
=== modified file 'i18n/locales.lua'
--- i18n/locales.lua	2015-11-10 08:56:00 +0000
+++ i18n/locales.lua	2015-11-20 16:42:18 +0000
@@ -2,369 +2,369 @@
 -- The locale data is managed in Transifex.
 
 return {
-	-- Locales are identified by their ISO code.
- 	en = {
-		-- Used to display the locale in the Options menu.
-		name = "English",
-
-		-- Defines the language's position on the list in the Options menu.
-		sort_name = "English",
-
-		-- The font set used, including the script's direction. See i18n/fonts.lua
-		font = "default"
-	},
-
-	ar = {
-		name = "العربية",
-		sort_name = "Al-ʿArabiyyah",
-		font = "arabic"
-	},
-
-	ast = {
-		name = "Asturianu",
-		sort_name = "Asturianu",
-		font = "default"
-	},
-
-	bg = {
-		name = "Български",
-		sort_name = "Balgarski",
-		font = "default"
-	},
-
-	ca = {
-		name = "Català",
-		sort_name = "Catala",
-		font = "default"
-	},
-
-	cs = {
-		name = "Čeština",
-		sort_name = "Cestina",
-		font = "default"
-	},
-
-	da = {
-		name = "Dansk",
-		sort_name = "Dansk",
-		font = "default"
-	},
-
-	de = {
-		name = "Deutsch",
-		sort_name = "Deutsch",
-		font = "default"
-	},
-
-	el = {
-		name = "Ελληνικά",
-		sort_name = "Ellinika",
-		font = "default"
-	},
-
-	en_AU = {
-		name = "Australian English",
-		sort_name = "English (Australia)",
-		font = "default"
-	},
-
-	en_CA = {
-		name = "Canadian English",
-		sort_name = "English (Canada)",
-		font = "default"
-	},
-
-	en_GB = {
-		name = "British English",
-		sort_name = "English (Great Britain)",
-		font = "default"
-	},
-
-	en_US = {
-		name = "US American English",
-		sort_name = "English (USA)",
-		font = "default"
-	},
-
-	eo = {
-		name = "Esperanto",
-		sort_name = "Esperanto",
-		font = "default"
-	},
-
-	es = {
-		name = "Español",
-		sort_name = "Espanol",
-		font = "default"
-	},
-
-	es_CO = {
-		name = "Español colombiano",
-		sort_name = "Espanol colombiano",
-		font = "default"
-	},
-
-	et = {
-		name = "Eesti keel",
-		sort_name = "Eesti keel",
-		font = "default"
-	},
-
-	eu = {
-		name = "Euskara",
-		sort_name = "Euskara",
-		font = "default"
-	},
-
-	fa = {
-		name = "فارسی",
-		sort_name = "Farsi",
-		font = "arabic"
-	},
-
-	fi = {
-		name = "Suomi",
-		sort_name = "Suomi",
-		font = "default"
-	},
-
-	fr = {
-		name = "Français",
-		sort_name = "Francais",
-		font = "default"
-	},
-
-	gd = {
-		name = "Gàidhlig",
-		sort_name = "Gaidhlig",
-		font = "default"
-	},
-
-	gl = {
-		name = "Galego",
-		sort_name = "Galego",
-		font = "default"
-	},
-
-	he = {
-		name = "עברית",
-		sort_name = "Ivrit",
-		font = "hebrew"
-	},
-
-	hi = {
-		name = "हिन्दी",
-		sort_name = "Hindi",
-		font = "devanagari"
-	},
-
-	hr = {
-		name = "Hrvatski",
-		sort_name = "Hrvatski",
-		font = "default"
-	},
-
-	hu = {
-		name = "Magyar",
-		sort_name = "Magyar",
-		font = "default"
-	},
-
-	ia = {
-		name = "Interlingua",
-		sort_name = "Interlingua",
-		font = "default"
-	},
-
-	id = {
-		name = "Bahasa Indonesia",
-		sort_name = "Indonesia",
-		font = "default"
-	},
-
-	it = {
-		name = "Italiano",
-		sort_name = "Italiano",
-		font = "default"
-	},
-
-	ja = {
-		name = "日本語",
-		sort_name = "Nihongo",
-		font = "cjk"
-	},
-
-	jv = {
-		name = "Basa jawa",
-		sort_name = "Jawa",
-		font = "default"
-	},
-
-	ka = {
-		name = "ქართული",
-		sort_name = "Kartuli",
-		font = "default"
-	},
-
-	ko = {
-		name = "한국어",
-		sort_name = "Hangug-eo",
-		font = "cjk"
-	},
-
-	la = {
-		name = "Lingua latīna",
-		sort_name = "Latina",
-		font = "default"
-	},
-
-	lt = {
-		name = "Lietuvių",
-		sort_name = "Lietuviu",
-		font = "default"
-	},
-
-	mr = {
-		name = "मराठी",
-		sort_name = "Marathi",
-		font = "devanagari"
-	},
-
-	ms = {
-		name = "بهاس ملايو",
-		sort_name = "Melayu",
-		font = "arabic"
-	},
-
-	my = {
-		name = "မြန်မာစ",
-		sort_name = "Myanma",
-		font = "myanmar"
-	},
-
-	nb = {
-		name = "Norsk (Bokmål)",
-		sort_name = "Norsk (Bokmal)",
-		font = "default"
-	},
-
-	nds = {
-		name = "Plattdütsch",
-		sort_name = "Plattdutsch",
-		font = "default"
-	},
-
-	nl = {
-		name = "Nederlands",
-		sort_name = "Nederlands",
-		font = "default"
-	},
-
-	nn = {
-		name = "Nynorsk",
-		sort_name = "Norsk (Nynorsk)",
-		font = "default"
-	},
-
-	oc = {
-		name = "Occitan",
-		sort_name = "Occitan",
-		font = "default"
-	},
-
-	pl = {
-		name = "Polski",
-		sort_name = "Polski",
-		font = "default"
-	},
-
-	pt = {
-		name = "Português",
-		sort_name = "Portugues",
-		font = "default"
-	},
-
-	pt_BR = {
-		name = "Português do Brasil",
-		sort_name = "Portugues (Brasil)",
-		font = "default"
-	},
-
-	ro = {
-		name = "Română",
-		sort_name = "Romana",
-		font = "default"
-	},
-
-	ru = {
-		name = "Русский",
-		sort_name = "Russky",
-		font = "default"
-	},
-
-	rw = {
-		name = "Kinyarwanda",
-		sort_name = "Kinyarwanda",
-		font = "default"
-	},
-
-	si = {
-		name = "සිංහල",
-		sort_name = "Simhala",
-		font = "sinhala"
-	},
-
-	sk = {
-		name = "Slovenčina",
-		sort_name = "Slovencina",
-		font = "default"
-	},
-
-	sl = {
-		name = "Slovenski jezik",
-		sort_name = "Slovenski",
-		font = "default"
-	},
-
-	sr = {
-		name = "српски",
-		sort_name = "Srpski",
-		font = "default"
-	},
-
-	sv = {
-		name = "Svenska",
-		sort_name = "Svenska",
-		font = "default"
-	},
-
-	tr = {
-		name = "Türkçe",
-		sort_name = "Turkce",
-		font = "default"
-	},
-
-	uk = {
-		name = "українська мова",
-		sort_name = "Ukrayinska",
-		font = "default"
-	},
-
-	vi = {
-		name = "Tiếng Việt",
-		sort_name = "Viet",
-		font = "default"
-	},
-
-	zh_CN = {
-		name = "简体中文",
-		sort_name = "Jianti Zhongwen",
-		font = "cjk"
-	},
-
-	zh_TW = {
-		name = "繁體中文",
-		sort_name = "Fanti Zhongwen",
-		font = "cjk"
-	},
+   -- Locales are identified by their ISO code.
+   en = {
+      -- Used to display the locale in the Options menu.
+      name = "English",
+
+      -- Defines the language's position on the list in the Options menu.
+      sort_name = "English",
+
+      -- The font set used, including the script's direction. See i18n/fonts.lua
+      font = "default"
+   },
+
+   ar = {
+      name = "العربية",
+      sort_name = "Al-ʿArabiyyah",
+      font = "arabic"
+   },
+
+   ast = {
+      name = "Asturianu",
+      sort_name = "Asturianu",
+      font = "default"
+   },
+
+   bg = {
+      name = "Български",
+      sort_name = "Balgarski",
+      font = "default"
+   },
+
+   ca = {
+      name = "Català",
+      sort_name = "Catala",
+      font = "default"
+   },
+
+   cs = {
+      name = "Čeština",
+      sort_name = "Cestina",
+      font = "default"
+   },
+
+   da = {
+      name = "Dansk",
+      sort_name = "Dansk",
+      font = "default"
+   },
+
+   de = {
+      name = "Deutsch",
+      sort_name = "Deutsch",
+      font = "default"
+   },
+
+   el = {
+      name = "Ελληνικά",
+      sort_name = "Ellinika",
+      font = "default"
+   },
+
+   en_AU = {
+      name = "Australian English",
+      sort_name = "English (Australia)",
+      font = "default"
+   },
+
+   en_CA = {
+      name = "Canadian English",
+      sort_name = "English (Canada)",
+      font = "default"
+   },
+
+   en_GB = {
+      name = "British English",
+      sort_name = "English (Great Britain)",
+      font = "default"
+   },
+
+   en_US = {
+      name = "US American English",
+      sort_name = "English (USA)",
+      font = "default"
+   },
+
+   eo = {
+      name = "Esperanto",
+      sort_name = "Esperanto",
+      font = "default"
+   },
+
+   es = {
+      name = "Español",
+      sort_name = "Espanol",
+      font = "default"
+   },
+
+   es_CO = {
+      name = "Español colombiano",
+      sort_name = "Espanol colombiano",
+      font = "default"
+   },
+
+   et = {
+      name = "Eesti keel",
+      sort_name = "Eesti keel",
+      font = "default"
+   },
+
+   eu = {
+      name = "Euskara",
+      sort_name = "Euskara",
+      font = "default"
+   },
+
+   fa = {
+      name = "فارسی",
+      sort_name = "Farsi",
+      font = "arabic"
+   },
+
+   fi = {
+      name = "Suomi",
+      sort_name = "Suomi",
+      font = "default"
+   },
+
+   fr = {
+      name = "Français",
+      sort_name = "Francais",
+      font = "default"
+   },
+
+   gd = {
+      name = "Gàidhlig",
+      sort_name = "Gaidhlig",
+      font = "default"
+   },
+
+   gl = {
+      name = "Galego",
+      sort_name = "Galego",
+      font = "default"
+   },
+
+   he = {
+      name = "עברית",
+      sort_name = "Ivrit",
+      font = "hebrew"
+   },
+
+   hi = {
+      name = "हिन्दी",
+      sort_name = "Hindi",
+      font = "devanagari"
+   },
+
+   hr = {
+      name = "Hrvatski",
+      sort_name = "Hrvatski",
+      font = "default"
+   },
+
+   hu = {
+      name = "Magyar",
+      sort_name = "Magyar",
+      font = "default"
+   },
+
+   ia = {
+      name = "Interlingua",
+      sort_name = "Interlingua",
+      font = "default"
+   },
+
+   id = {
+      name = "Bahasa Indonesia",
+      sort_name = "Indonesia",
+      font = "default"
+   },
+
+   it = {
+      name = "Italiano",
+      sort_name = "Italiano",
+      font = "default"
+   },
+
+   ja = {
+      name = "日本語",
+      sort_name = "Nihongo",
+      font = "cjk"
+   },
+
+   jv = {
+      name = "Basa jawa",
+      sort_name = "Jawa",
+      font = "default"
+   },
+
+   ka = {
+      name = "ქართული",
+      sort_name = "Kartuli",
+      font = "default"
+   },
+
+   ko = {
+      name = "한국어",
+      sort_name = "Hangug-eo",
+      font = "cjk"
+   },
+
+   la = {
+      name = "Lingua latīna",
+      sort_name = "Latina",
+      font = "default"
+   },
+
+   lt = {
+      name = "Lietuvių",
+      sort_name = "Lietuviu",
+      font = "default"
+   },
+
+   mr = {
+      name = "मराठी",
+      sort_name = "Marathi",
+      font = "devanagari"
+   },
+
+   ms = {
+      name = "بهاس ملايو",
+      sort_name = "Melayu",
+      font = "arabic"
+   },
+
+   my = {
+      name = "မြန်မာစ",
+      sort_name = "Myanma",
+      font = "myanmar"
+   },
+
+   nb = {
+      name = "Norsk (Bokmål)",
+      sort_name = "Norsk (Bokmal)",
+      font = "default"
+   },
+
+   nds = {
+      name = "Plattdütsch",
+      sort_name = "Plattdutsch",
+      font = "default"
+   },
+
+   nl = {
+      name = "Nederlands",
+      sort_name = "Nederlands",
+      font = "default"
+   },
+
+   nn = {
+      name = "Nynorsk",
+      sort_name = "Norsk (Nynorsk)",
+      font = "default"
+   },
+
+   oc = {
+      name = "Occitan",
+      sort_name = "Occitan",
+      font = "default"
+   },
+
+   pl = {
+      name = "Polski",
+      sort_name = "Polski",
+      font = "default"
+   },
+
+   pt = {
+      name = "Português",
+      sort_name = "Portugues",
+      font = "default"
+   },
+
+   pt_BR = {
+      name = "Português do Brasil",
+      sort_name = "Portugues (Brasil)",
+      font = "default"
+   },
+
+   ro = {
+      name = "Română",
+      sort_name = "Romana",
+      font = "default"
+   },
+
+   ru = {
+      name = "Русский",
+      sort_name = "Russky",
+      font = "default"
+   },
+
+   rw = {
+      name = "Kinyarwanda",
+      sort_name = "Kinyarwanda",
+      font = "default"
+   },
+
+   si = {
+      name = "සිංහල",
+      sort_name = "Simhala",
+      font = "sinhala"
+   },
+
+   sk = {
+      name = "Slovenčina",
+      sort_name = "Slovencina",
+      font = "default"
+   },
+
+   sl = {
+      name = "Slovenski jezik",
+      sort_name = "Slovenski",
+      font = "default"
+   },
+
+   sr = {
+      name = "српски",
+      sort_name = "Srpski",
+      font = "default"
+   },
+
+   sv = {
+      name = "Svenska",
+      sort_name = "Svenska",
+      font = "default"
+   },
+
+   tr = {
+      name = "Türkçe",
+      sort_name = "Turkce",
+      font = "default"
+   },
+
+   uk = {
+      name = "українська мова",
+      sort_name = "Ukrayinska",
+      font = "default"
+   },
+
+   vi = {
+      name = "Tiếng Việt",
+      sort_name = "Viet",
+      font = "default"
+   },
+
+   zh_CN = {
+      name = "简体中文",
+      sort_name = "Jianti Zhongwen",
+      font = "cjk"
+   },
+
+   zh_TW = {
+      name = "繁體中文",
+      sort_name = "Fanti Zhongwen",
+      font = "cjk"
+   },
 }

=== modified file 'scripting/widelands/multiplayer_help.lua'
--- scripting/widelands/multiplayer_help.lua	2015-10-13 11:47:46 +0000
+++ scripting/widelands/multiplayer_help.lua	2015-11-20 16:42:18 +0000
@@ -1,32 +1,32 @@
 include "scripting/formatting.lua"
 
 function picture_li(imagepath, text)
-	return "<rt image=" .. imagepath .. " image-align=left>" .. p(text) .. "</rt>"
+   return "<rt image=" .. imagepath .. " image-align=left>" .. p(text) .. "</rt>"
 end
 
 return {
    func = function()
-		set_textdomain("widelands")
-		local result = rt(h1(_"Multiplayer Game Setup"))
-		result = result .. rt(p(_"You are in the multiplayer launch game menu."))
-
-
-		result = result .. rt(h2(_"Client settings"))
-		result = result .. rt(p(_"On the left side is a list of all clients including you. You can set your role with the button following your nickname. Available roles are:"))
-		result = result .. picture_li("pics/genstats_enable_plr_08.png", _"The player with the color of the flag. If more than one client selected the same color, these share control over the player (‘shared kingdom mode’).")
-		result = result .. picture_li("pics/menu_tab_watch.png", _"Spectator mode, meaning you can see everything, but cannot control any player")
-
-		result = result .. rt(h2(_"Player settings"))
-		result = result .. rt(p(_"In the middle are the settings for the players. To start a game, each player must be one of the following:"))
-		result = result .. picture_li("pics/genstats_nrworkers.png", _"Connected to one or more clients (see ‘Client settings’).")
-		result = result .. picture_li("pics/ai_Normal.png", _"Connected to a computer player (the face in the picture as well as the mouse hover texts indicate the strength of the currently selected computer player).")
-		result = result .. picture_li("pics/shared_in.png", _"Set as shared in starting position for another player.")
-		result = result .. picture_li("pics/stop.png", _"Closed.")
-		result = result .. rt(p(_"The latter three can only be set by the hosting client by left-clicking the ‘type’ button of a player. Hosting players can also set the initialization of each player (the set of buildings, wares and workers the player starts with) and the tribe and team for computer players"))
-		result = result .. rt(p(_"Every client connected to a player (the set ‘role’ player) can set the tribe and the team for that player"))
-
-		result = result .. rt(h2(_"Map details"))
-		result = result .. rt(p(_"You can see information about the selected map or savegame on the right-hand side. A button next to the map name allows the host to change to a different map. Furthermore, the host is able to set a specific win condition, and finally can start the game as soon as all players are set up."))
-		return result
+      set_textdomain("widelands")
+      local result = rt(h1(_"Multiplayer Game Setup"))
+      result = result .. rt(p(_"You are in the multiplayer launch game menu."))
+
+
+      result = result .. rt(h2(_"Client settings"))
+      result = result .. rt(p(_"On the left side is a list of all clients including you. You can set your role with the button following your nickname. Available roles are:"))
+      result = result .. picture_li("pics/genstats_enable_plr_08.png", _"The player with the color of the flag. If more than one client selected the same color, these share control over the player (‘shared kingdom mode’).")
+      result = result .. picture_li("pics/menu_tab_watch.png", _"Spectator mode, meaning you can see everything, but cannot control any player")
+
+      result = result .. rt(h2(_"Player settings"))
+      result = result .. rt(p(_"In the middle are the settings for the players. To start a game, each player must be one of the following:"))
+      result = result .. picture_li("pics/genstats_nrworkers.png", _"Connected to one or more clients (see ‘Client settings’).")
+      result = result .. picture_li("pics/ai_Normal.png", _"Connected to a computer player (the face in the picture as well as the mouse hover texts indicate the strength of the currently selected computer player).")
+      result = result .. picture_li("pics/shared_in.png", _"Set as shared in starting position for another player.")
+      result = result .. picture_li("pics/stop.png", _"Closed.")
+      result = result .. rt(p(_"The latter three can only be set by the hosting client by left-clicking the ‘type’ button of a player. Hosting players can also set the initialization of each player (the set of buildings, wares and workers the player starts with) and the tribe and team for computer players"))
+      result = result .. rt(p(_"Every client connected to a player (the set ‘role’ player) can set the tribe and the team for that player"))
+
+      result = result .. rt(h2(_"Map details"))
+      result = result .. rt(p(_"You can see information about the selected map or savegame on the right-hand side. A button next to the map name allows the host to change to a different map. Furthermore, the host is able to set a specific win condition, and finally can start the game as soon as all players are set up."))
+      return result
    end
 }

=== modified file 'scripting/win_conditions/artifacts.lua'
--- scripting/win_conditions/artifacts.lua	2015-11-18 08:35:44 +0000
+++ scripting/win_conditions/artifacts.lua	2015-11-20 16:42:18 +0000
@@ -17,165 +17,164 @@
 local wc_version = 1
 local wc_desc = _ "Search for ancient artifacts. Once all of them are found, the team who owns most of them will win the game."
 return {
-	name = wc_name,
-	description = wc_desc,
-	map_tags = { "artifacts" }, -- Map tags needed so that this win condition will be available only for suitable maps
-	func = function()
-		-- set the objective with the game type for all players
-		broadcast_objective("win_condition", wc_descname, wc_desc)
-
-		local function _getkey(p)
-			if p.team == 0 then
-				-- Players without a team have team number 0. To distinguish between them, we use a special key.
-				return "player" .. p.number
-			else
-				return p.team
-			end
-		end
-
-		local artifact_fields = {}
-		local map = wl.Game().map
-
-		local i = 1
-		-- find all artifacts
-		for x=0, map.width-1 do
-			for y=0, map.height-1 do
-				local field = map:get_field(x,y)
-				if field.immovable and field.immovable:has_attribute("artifact") then
-					-- this assumes that the immovable has size small or medium, i.e. only occupies one field
-					artifact_fields[i] = map:get_field(x,y)
-					i = i + 1
-				end
-			end
-		end
-
-		local plrs = wl.Game().players
-		if #artifact_fields == 0 then
-			for idx, plr in ipairs(plrs) do
-				send_message(plr, _"No Artifacts", rt(p(_"There are no artifacts on this map. This should not happen. Please file a bug report on https://launchpad.net/widelands and specify your Widelands version and the map you tried to load.")), {popup = true})
-			end
-			return
-		end
-
-		local found_artifact = {
-			title = _"New Artifact Found",
-			body = rt(p(_[[Your team found a new artifact.]]))
-		}
-		local lost_artifact = {
-			title = _"Artifact Lost",
-			body = rt(p(_[[One of your team’s artifacts was stolen by an enemy.]]))
-		}
-		local stole_artifact = {
-			title = _"Artifact Conquered",
-			body = rt(p(_[[Your team stole an artifact from an enemy.]]))
-		}
-
-		local function _broadcast_to_team(player, msg, f)
-			if player.team == 0 then
-				player:send_message(msg.title, msg.body, {msg, field = f})
-			else
-				for idx, p in ipairs(plrs) do
-					if p.team == player.team then
-						p:send_message(msg.title, msg.body, {msg, field = f})
-					end
-				end
-			end
-		end
-
-		-- Iterate all players, if one is defeated, remove him
-		-- from the list, send him a defeated message and give him full vision
-		-- Check if all artifacts have been found (i.e. controlled by a player)
-		local artifacts_owner = {}
-		repeat
-			sleep(1000)
-			check_player_defeated(plrs, lost_game.title, lost_game.body, wc_descname, wc_version)
-			local all_artifacts_found = true
-			for idx, f in ipairs(artifact_fields) do
-				if f.owner then
-					if artifacts_owner[f] then
-						if f.owner.team ~= artifacts_owner[f].team or (f.owner.team == 0 and f.owner.number ~= artifacts_owner[f].number) then
-							-- a new team has this artifact
-							_broadcast_to_team(f.owner, stole_artifact, f)
-							_broadcast_to_team(artifacts_owner[f], lost_artifact, f)
-							artifacts_owner[f] = f.owner
-						end
-					else
-						_broadcast_to_team(f.owner, found_artifact, f)
-						artifacts_owner[f] = f.owner
-					end
-				else
-					all_artifacts_found = false
-				end
-			end
-		until all_artifacts_found
-
-		-- All artifacts are found, the game is over.
-		local artifacts_per_team = {}
-		for idx, p in ipairs(plrs) do
-			artifacts_per_team[_getkey(p)] = 0
-		end
-
-		for idx, p in pairs(artifacts_owner) do
-			local key = _getkey(p)
-			artifacts_per_team[key] = artifacts_per_team[key] + 1
-		end
-
-		local function _max(a)
-			local max = -1
-			for k, v in pairs(a) do
-				if v > max then max = v end
-			end
-			return max
-		end
-
-		local max_artifacts = _max(artifacts_per_team)
-
-		local function _get_member_names(t)
-			local s = ""
-			for idx, p in ipairs(t) do
-				if s == "" then
-					s = p.name
-				else
-					-- TRANSLATORS: This is used to seperate players’ names in a list, e.g. "Steve, Robert, David"
-					s = s .. _", " .. p.name
-				end
-			end
-			return s
-		end
-
-		local teams = {}
-		local msg = _"Overview:" .. "\n"
-		for idx, p in ipairs(plrs) do
-			if p.team == 0 then
-				local artifacts = (ngettext("%i artifact", "%i artifacts", artifacts_per_team[_getkey(p)])):format(artifacts_per_team[_getkey(p)])
-				msg = msg .. "\n" .. (_"%1$s owns %2$s."):bformat(p.name, artifacts)
-			else
-				if teams[p.team] then
-					teams[p.team][#teams[p.team]+1] = p
-				else
-					teams[p.team] = {p}
-				end
-			end
-		end
-		for idx, t in ipairs(teams) do
-			local members = _get_member_names(t)
-			local artifacts = (ngettext("%i artifact", "%i artifacts", artifacts_per_team[_getkey(t[1])])):format(artifacts_per_team[_getkey(t[1])])
-			-- TRANSLATORS: %1$i is the team's number; %2$s is a list of team members (e.g. "Steve, Robert, David"), %3$s is something like "x artifact(s)"
-			msg = msg .. "\n" .. (_"Team %1$i (%2$s) owns %3$s."):bformat(t[1].team, members, artifacts)
-		end
-
-
-		for idx, p in ipairs(plrs) do
-			local key = _getkey(p)
-			-- If two or more teams have the same amount of artifacts, they are all considered winners.
-			if artifacts_per_team[key] == max_artifacts then
-				p:send_message(won_game_over.title, won_game_over.body .. "\n\n" .. msg)
-				wl.game.report_result(p, 1, make_extra_data(p, wc_descname, wc_version, {score=artifacts_per_team[key]}))
-			else
-				p:send_message(lost_game_over.title, lost_game_over.body .. "\n\n" .. msg)
-				wl.game.report_result(p, 0, make_extra_data(p, wc_descname, wc_version, {score=artifacts_per_team[key]}))
-			end
-		end
-	end,
+   name = wc_name,
+   description = wc_desc,
+   map_tags = { "artifacts" }, -- Map tags needed so that this win condition will be available only for suitable maps
+   func = function()
+      -- set the objective with the game type for all players
+      broadcast_objective("win_condition", wc_descname, wc_desc)
+
+      local function _getkey(p)
+         if p.team == 0 then
+            -- Players without a team have team number 0. To distinguish between them, we use a special key.
+            return "player" .. p.number
+         else
+            return p.team
+         end
+      end
+
+      local artifact_fields = {}
+      local map = wl.Game().map
+
+      local i = 1
+      -- find all artifacts
+      for x=0, map.width-1 do
+         for y=0, map.height-1 do
+            local field = map:get_field(x,y)
+            if field.immovable and field.immovable:has_attribute("artifact") then
+               -- this assumes that the immovable has size small or medium, i.e. only occupies one field
+               artifact_fields[i] = map:get_field(x,y)
+               i = i + 1
+            end
+         end
+      end
+
+      local plrs = wl.Game().players
+      if #artifact_fields == 0 then
+         for idx, plr in ipairs(plrs) do
+            send_message(plr, _"No Artifacts", rt(p(_"There are no artifacts on this map. This should not happen. Please file a bug report on https://launchpad.net/widelands and specify your Widelands version and the map you tried to load.")), {popup = true})
+         end
+         return
+      end
+
+      local found_artifact = {
+         title = _"New Artifact Found",
+         body = rt(p(_[[Your team found a new artifact.]]))
+      }
+      local lost_artifact = {
+         title = _"Artifact Lost",
+         body = rt(p(_[[One of your team’s artifacts was stolen by an enemy.]]))
+      }
+      local stole_artifact = {
+         title = _"Artifact Conquered",
+         body = rt(p(_[[Your team stole an artifact from an enemy.]]))
+      }
+
+      local function _broadcast_to_team(player, msg, f)
+         if player.team == 0 then
+            player:send_message(msg.title, msg.body, {msg, field = f})
+         else
+            for idx, p in ipairs(plrs) do
+               if p.team == player.team then
+                  p:send_message(msg.title, msg.body, {msg, field = f})
+               end
+            end
+         end
+      end
+
+      -- Iterate all players, if one is defeated, remove him
+      -- from the list, send him a defeated message and give him full vision
+      -- Check if all artifacts have been found (i.e. controlled by a player)
+      local artifacts_owner = {}
+      repeat
+         sleep(1000)
+         check_player_defeated(plrs, lost_game.title, lost_game.body, wc_descname, wc_version)
+         local all_artifacts_found = true
+         for idx, f in ipairs(artifact_fields) do
+            if f.owner then
+               if artifacts_owner[f] then
+                  if f.owner.team ~= artifacts_owner[f].team or (f.owner.team == 0 and f.owner.number ~= artifacts_owner[f].number) then
+                     -- a new team has this artifact
+                     _broadcast_to_team(f.owner, stole_artifact, f)
+                     _broadcast_to_team(artifacts_owner[f], lost_artifact, f)
+                     artifacts_owner[f] = f.owner
+                  end
+               else
+                  _broadcast_to_team(f.owner, found_artifact, f)
+                  artifacts_owner[f] = f.owner
+               end
+            else
+               all_artifacts_found = false
+            end
+         end
+      until all_artifacts_found
+
+      -- All artifacts are found, the game is over.
+      local artifacts_per_team = {}
+      for idx, p in ipairs(plrs) do
+         artifacts_per_team[_getkey(p)] = 0
+      end
+
+      for idx, p in pairs(artifacts_owner) do
+         local key = _getkey(p)
+         artifacts_per_team[key] = artifacts_per_team[key] + 1
+      end
+
+      local function _max(a)
+         local max = -1
+         for k, v in pairs(a) do
+            if v > max then max = v end
+         end
+         return max
+      end
+
+      local max_artifacts = _max(artifacts_per_team)
+
+      local function _get_member_names(t)
+         local s = ""
+         for idx, p in ipairs(t) do
+            if s == "" then
+               s = p.name
+            else
+               -- TRANSLATORS: This is used to seperate players’ names in a list, e.g. "Steve, Robert, David"
+               s = s .. _", " .. p.name
+            end
+         end
+         return s
+      end
+
+      local teams = {}
+      local msg = _"Overview:" .. "\n"
+      for idx, p in ipairs(plrs) do
+         if p.team == 0 then
+            local artifacts = (ngettext("%i artifact", "%i artifacts", artifacts_per_team[_getkey(p)])):format(artifacts_per_team[_getkey(p)])
+            msg = msg .. "\n" .. (_"%1$s owns %2$s."):bformat(p.name, artifacts)
+         else
+            if teams[p.team] then
+               teams[p.team][#teams[p.team]+1] = p
+            else
+               teams[p.team] = {p}
+            end
+         end
+      end
+      for idx, t in ipairs(teams) do
+         local members = _get_member_names(t)
+         local artifacts = (ngettext("%i artifact", "%i artifacts", artifacts_per_team[_getkey(t[1])])):format(artifacts_per_team[_getkey(t[1])])
+         -- TRANSLATORS: %1$i is the team's number; %2$s is a list of team members (e.g. "Steve, Robert, David"), %3$s is something like "x artifact(s)"
+         msg = msg .. "\n" .. (_"Team %1$i (%2$s) owns %3$s."):bformat(t[1].team, members, artifacts)
+      end
+
+
+      for idx, p in ipairs(plrs) do
+         local key = _getkey(p)
+         -- If two or more teams have the same amount of artifacts, they are all considered winners.
+         if artifacts_per_team[key] == max_artifacts then
+            p:send_message(won_game_over.title, won_game_over.body .. "\n\n" .. msg)
+            wl.game.report_result(p, 1, make_extra_data(p, wc_descname, wc_version, {score=artifacts_per_team[key]}))
+         else
+            p:send_message(lost_game_over.title, lost_game_over.body .. "\n\n" .. msg)
+            wl.game.report_result(p, 0, make_extra_data(p, wc_descname, wc_version, {score=artifacts_per_team[key]}))
+         end
+      end
+   end,
 }
-

=== modified file 'scripting/win_conditions/init.lua'
--- scripting/win_conditions/init.lua	2015-11-06 13:42:41 +0000
+++ scripting/win_conditions/init.lua	2015-11-20 16:42:18 +0000
@@ -2,12 +2,12 @@
 dirname = path.dirname(__file__)
 
 return {
-	dirname .. "collectors.lua",
-	dirname .. "wood_gnome.lua",
-	dirname .. "artifacts.lua",
-	dirname .. "territorial_time.lua",
-	dirname .. "territorial_lord.lua",
-	dirname .. "defeat_all.lua",
-	dirname .. "endless_game.lua",
-	dirname .. "endless_game_fogless.lua",
+   dirname .. "collectors.lua",
+   dirname .. "wood_gnome.lua",
+   dirname .. "artifacts.lua",
+   dirname .. "territorial_time.lua",
+   dirname .. "territorial_lord.lua",
+   dirname .. "defeat_all.lua",
+   dirname .. "endless_game.lua",
+   dirname .. "endless_game_fogless.lua",
 }

=== modified file 'tribes/buildings/productionsites/atlanteans/blackroot_farm/helptexts.lua'
--- tribes/buildings/productionsites/atlanteans/blackroot_farm/helptexts.lua	2015-11-07 08:45:50 +0000
+++ tribes/buildings/productionsites/atlanteans/blackroot_farm/helptexts.lua	2015-11-20 16:42:18 +0000
@@ -22,6 +22,6 @@
 end
 
 function building_helptext_performance()
-   -- #TRANSLATORS: Performance helptext for a building
-   return no_performance_text_yet()
+   -- TRANSLATORS: Performance helptext for a building
+   return pgettext("atlanteans_building", "The blackroot farmer needs %1% on average to sow and harvest a bundle of blackroot."):bformat(format_minutes_seconds(1, 20))
 end

=== modified file 'tribes/buildings/productionsites/atlanteans/farm/helptexts.lua'
--- tribes/buildings/productionsites/atlanteans/farm/helptexts.lua	2015-11-08 13:59:37 +0000
+++ tribes/buildings/productionsites/atlanteans/farm/helptexts.lua	2015-11-20 16:42:18 +0000
@@ -22,6 +22,6 @@
 end
 
 function building_helptext_performance()
-   -- #TRANSLATORS: Performance helptext for a building
-   return no_performance_text_yet()
+   -- TRANSLATORS: Performance helptext for a building
+   return pgettext("atlanteans_building", "The farmer needs %1% on average to sow and harvest a sheaf of corn."):bformat(format_minutes_seconds(1, 20))
 end

=== modified file 'tribes/buildings/productionsites/barbarians/farm/helptexts.lua'
--- tribes/buildings/productionsites/barbarians/farm/helptexts.lua	2015-11-08 11:49:22 +0000
+++ tribes/buildings/productionsites/barbarians/farm/helptexts.lua	2015-11-20 16:42:18 +0000
@@ -22,6 +22,6 @@
 end
 
 function building_helptext_performance()
-   -- #TRANSLATORS: Performance helptext for a building
-   return no_performance_text_yet()
+   -- TRANSLATORS: Performance helptext for a building
+   return pgettext("barbarians_building", "The farmer needs %1% on average to sow and harvest a sheaf of wheat."):bformat(format_minutes_seconds(1, 40))
 end

=== modified file 'tribes/buildings/productionsites/empire/bakery/helptexts.lua'
--- tribes/buildings/productionsites/empire/bakery/helptexts.lua	2015-11-08 11:35:51 +0000
+++ tribes/buildings/productionsites/empire/bakery/helptexts.lua	2015-11-20 16:42:18 +0000
@@ -22,6 +22,6 @@
 end
 
 function building_helptext_performance()
-   -- #TRANSLATORS: Performance helptext for a building
-   return no_performance_text_yet()
+   -- TRANSLATORS: Performance helptext for a building
+   return pgettext("empire_building", "The baker needs %1% on average to bake a loaf of bread."):bformat(format_seconds(34))
 end

=== modified file 'tribes/buildings/productionsites/empire/brewery/helptexts.lua'
--- tribes/buildings/productionsites/empire/brewery/helptexts.lua	2015-11-08 11:49:22 +0000
+++ tribes/buildings/productionsites/empire/brewery/helptexts.lua	2015-11-20 16:42:18 +0000
@@ -22,6 +22,6 @@
 end
 
 function building_helptext_performance()
-   -- #TRANSLATORS: Performance helptext for a building
-   return no_performance_text_yet()
+   -- TRANSLATORS: Performance helptext for a building
+   return pgettext("empire_building", "The brewer needs %1% on average to brew a vat of beer."):bformat(format_minutes_seconds(1, 5))
 end

=== modified file 'tribes/buildings/productionsites/empire/farm/helptexts.lua'
--- tribes/buildings/productionsites/empire/farm/helptexts.lua	2015-11-08 11:49:22 +0000
+++ tribes/buildings/productionsites/empire/farm/helptexts.lua	2015-11-20 16:42:18 +0000
@@ -22,6 +22,6 @@
 end
 
 function building_helptext_performance()
-   -- #TRANSLATORS: Performance helptext for a building
-   return no_performance_text_yet()
+   -- TRANSLATORS: Performance helptext for a building
+   return pgettext("empire_building", "The farmer needs %1% on average to sow and harvest a sheaf of wheat."):bformat(format_minutes_seconds(1, 20))
 end

=== modified file 'tribes/buildings/productionsites/empire/inn/helptexts.lua'
--- tribes/buildings/productionsites/empire/inn/helptexts.lua	2015-11-08 11:35:51 +0000
+++ tribes/buildings/productionsites/empire/inn/helptexts.lua	2015-11-20 16:42:18 +0000
@@ -22,6 +22,6 @@
 end
 
 function building_helptext_performance()
-   -- #TRANSLATORS: Performance helptext for a building
-   return no_performance_text_yet()
+   -- TRANSLATORS: Performance helptext for a building
+   return pgettext("empire_building", "The innkeeper needs %1% on average to prepare a ration and a meal. If the economy doesn’t need both, the innkeeper needs %2% on average to prepare one ration or one meal."):bformat(format_minutes_seconds(1, 25), format_seconds(48))
 end

=== modified file 'tribes/buildings/productionsites/empire/mill/helptexts.lua'
--- tribes/buildings/productionsites/empire/mill/helptexts.lua	2015-11-08 11:49:22 +0000
+++ tribes/buildings/productionsites/empire/mill/helptexts.lua	2015-11-20 16:42:18 +0000
@@ -22,6 +22,6 @@
 end
 
 function building_helptext_performance()
-   -- #TRANSLATORS: Performance helptext for a building
-   return no_performance_text_yet()
+   -- TRANSLATORS: Performance helptext for a building
+   return pgettext("empire_building", "The miller needs %1% on average to grind wheat into a sack of corn."):bformat(format_seconds(19))
 end

=== modified file 'tribes/buildings/productionsites/empire/piggery/helptexts.lua'
--- tribes/buildings/productionsites/empire/piggery/helptexts.lua	2015-11-08 11:35:51 +0000
+++ tribes/buildings/productionsites/empire/piggery/helptexts.lua	2015-11-20 16:42:18 +0000
@@ -22,6 +22,6 @@
 end
 
 function building_helptext_performance()
-   -- #TRANSLATORS: Performance helptext for a building
-   return no_performance_text_yet()
+   -- TRANSLATORS: Performance helptext for a building
+   return pgettext("empire_building", "The pig breeder needs %1% on average to raise and slaughter a pig."):bformat(format_minutes(1))
 end

=== modified file 'tribes/buildings/productionsites/empire/tavern/helptexts.lua'
--- tribes/buildings/productionsites/empire/tavern/helptexts.lua	2015-11-08 11:35:51 +0000
+++ tribes/buildings/productionsites/empire/tavern/helptexts.lua	2015-11-20 16:42:18 +0000
@@ -22,6 +22,6 @@
 end
 
 function building_helptext_performance()
-   -- #TRANSLATORS: Performance helptext for a building
-   return no_performance_text_yet()
+   -- TRANSLATORS: Performance helptext for a building
+   return pgettext("empire_building", "The innkeeper needs %1% on average to prepare a ration."):bformat(format_seconds(36))
 end

=== modified file 'tribes/scripting/help/global_helptexts.lua'
--- tribes/scripting/help/global_helptexts.lua	2015-10-31 12:11:44 +0000
+++ tribes/scripting/help/global_helptexts.lua	2015-11-20 16:42:18 +0000
@@ -45,3 +45,43 @@
    -- TRANSLATORS: Performance helptext for a building - it hasn't been written yet.
    return _"Calculation needed"
 end
+
+-- RST
+-- .. function:: format_seconds(seconds)
+--
+--    :arg seconds: number of seconds
+--
+--    Returns a localized string to tell the time in seconds with the proper plural form.
+--    :returns: "1 second", or "20 seconds" etc.
+--
+function format_seconds(seconds)
+   return ngettext("%d second", "%d seconds", seconds):bformat(seconds)
+end
+
+-- RST
+-- .. function:: format_minutes(minutes)
+--
+--    :arg minutes: number of minutes
+--
+--    Returns a localized string to tell the time in minutes with the proper plural form.
+--    :returns: "1 minute", or "20 minutes" etc.
+--
+function format_minutes(minutes)
+   return ngettext("%d minute", "%d minutes", minutes):bformat(minutes)
+end
+
+-- RST
+-- .. function:: format_minutes_seconds(minutes, seconds)
+--
+--    :arg minutes: number of minutes
+--    :arg seconds: number of seconds
+--
+--    Returns a localized string to tell the time in minutes and seconds with the proper plural form.
+--    :returns: "1 minute and 20 seconds" etc.
+--
+function format_minutes_seconds(minutes, seconds)
+   return _("%1% and %2%"):bformat(
+      ngettext("%d minute", "%d minutes", minutes):bformat(minutes),
+      ngettext("%d second", "%d seconds", seconds):bformat(seconds)
+   )
+end

=== modified file 'tribes/wares/planks/helptexts.lua'
--- tribes/wares/planks/helptexts.lua	2015-11-17 09:01:38 +0000
+++ tribes/wares/planks/helptexts.lua	2015-11-20 16:42:18 +0000
@@ -4,12 +4,12 @@
       default = pgettext("ware", "Planks are an important building material."),
       -- TRANSLATORS: Helptext for a ware: Planks
       atlanteans =
-			pgettext("atlanteans_ware_planks", "They are produced out of logs by the sawmill.") .. " " ..
-			pgettext("atlanteans_ware", "The weapon smithy and the shipyard also use planks to produce the different tridents and mighty ships."),
+         pgettext("atlanteans_ware_planks", "They are produced out of logs by the sawmill.") .. " " ..
+         pgettext("atlanteans_ware", "The weapon smithy and the shipyard also use planks to produce the different tridents and mighty ships."),
       -- TRANSLATORS: Helptext for a ware: Planks
       empire =
-			pgettext("empire_ware_planks", "They are produced out of logs by the sawmill.") .. " " ..
-			pgettext("empire_ware", "They are also used by the weapon smithy.")
+         pgettext("empire_ware_planks", "They are produced out of logs by the sawmill.") .. " " ..
+         pgettext("empire_ware", "They are also used by the weapon smithy.")
    }
    local result = ""
    if tribe then

=== modified file 'txts/developers.lua'
--- txts/developers.lua	2015-11-10 08:56:00 +0000
+++ txts/developers.lua	2015-11-20 16:42:18 +0000
@@ -1,3 +1,3 @@
 -- Do not edit this file - it is automatically generated
 -- by utils/update_authors.py from developers.json.
-function developers() return {{heading = _"Chieftain",image = "pics/genstats_enable_plr_01.png",entries = {{members = {"Holger Rapp (SirVer)",},},},},{heading = _"Elders",image = "pics/genstats_enable_plr_04.png",entries = {{subheading = _"Graphics",members = {"Chuck Wilder (chuckw)",},},{subheading = _"Homepage",members = {"Markus Pfitzner (janus)",},},{subheading = _"Sound",members = {"Jan Bruns (solatis)",},},{subheading = _"Tongues",members = {"GunChleoc",},},},},{heading = _"Coders",image = "pics/genstats_nrwares.png",entries = {{members = {"Holger Rapp (SirVer)","Nicolai Hähnle (ixprefect)","Florian Bluemel","Florian Falkner (foldrian)","Florian Weber (Bedouin)","Philipp Engelhard","Stefan Boettner","Tron","Martin Quinson","Raul Ferriz","Willem Jan Palenstijn","Josef Spillner","Christof Petig","Erik Sigra (sigra)","Nanne Wams","Surgery","Andrius R. (knutux)","Jari Hautio (jarih)","Peter Schwanemann (Nasenbaer)","Victor Pelt (Dwarik)","Axel Gehlert (dunkelbrauer)","András Eisenberger (Kiscsirke)","Andi","Timo","Hannes","TimoW","Jens Beyer (Qcumber-some)","Andreas Breitschopp (ab-tools)","Joachim Breitner (nomeata)","Nizamov Shawkat","Carl-Philip Hänsch (carli)","Martin Prussak (martin)","David Allwicher (aber)","Nathan Peters (nathanpeters)","Leif Sandstede (lcsand)","Matthias Horne (shevonar)","Borim (borim)","Angelo Locritani (alocritani)","Gabriel Margiani (gamag)","Anthony J. Bentley (anthonyjbentley)","Peter Waller (iri)","Johannes Ebke (sirius-in4matiker)","Andreas Eriksson","Mark Scott","Teppo Mäenpää","Steven De Herdt","Charly Ghislain (cghislai)","Tino Miegel (TinoM)","Tibor Bamhor (tiborb95)","Ferdinand Thiessen (f-thiessen)","Willy Scheibel (willyscheibel)","Martin Schmidt (mars)","Simon Eilting","Alexander Kartzow (daAlx1)","Łukasz Majcher","Paul Mehrer (meitis)",},},},},{heading = _"Graphicians",image = "pics/genstats_nrbuildings.png",entries = {{members = {"Albert Jasiowka","Holger Rapp (SirVer)","Marz","Philipp Engelhard","Yannick Warnier","Delia","Florian Neuerburg","Jerome Rosinski","Mats Olsson","Odin Omdal","Wolfgang Weidner","Andreas Baier","Juri Chomé","Toralf Bethke (bithunter32)","Peter Schwanemann (Nasenbaer)","Alexia Death","Repsa Jih","Geoffroy Schmitlin (Trimard)","Benedikt Freisen (Objpaswriter)","Stefano Guidoni (Ilguido)","Samith Sandanayake (samithdisal)","Chuck Wilder (chuckw)","Astuur","Gerrit Familiegrosskopf (kingcreole)","Florian Angermeier (fraang)",},},},},{heading = _"Musicians",image = "pics/workarea123.png",entries = {{members = {"Kristian","MiddleFinger","Valerio Orlandini (Symbiosis)","Barry van Oudtshoorn (barryvan)","Jan Bruns (Solatis)","Nikola Whallon (Saturn)","Joshua O'Leary (Joshun)",},},},},{heading = _"Sound Effects",image = "pics/workarea123.png",entries = {{members = {"Stefan de Konik","Peter Schwanemann (Nasenbaer)","Stephan","Adam Piggott (_aD)","Stanisław Gackowski (Soeb)",},},},},{heading = _"Maps and Missions",image = "pics/genstats_landsize.png",entries = {{members = {"Michal Szopa (Winterwind)","Jan-Henrik Kluth (Isch)","Peter Schwanemann (Nasenbaer)","Sven (deviant)","Tuxlands","Kamil Wilczek (Another Barbarian)","Tarvo Reim (Tarrei)","Manuel Holzmeier (Quappo)","ivh","Hanna Podewski (kristin)","Teppo Mäenpää","fk","Einstein13","Jenia","Robnick","wl-zocker",},},},},{heading = _"Campaign Story",image = "pics/ls_wlmap.png",entries = {{subheading = _"Barbarian",members = {"Bastian Rapp","Alexander Kahl (wolfpac)","Peter Schwanemann (Nasenbaer)",},},{subheading = _"Empire",members = {"Peter Schwanemann (Nasenbaer)",},},{subheading = _"Atlantean",members = {"Holger Rapp (SirVer)","Peter Schwanemann (Nasenbaer)",},},},},{heading = _"Translators",image = "pics/fsel_editor_set_height.png",entries = {{subheading = "العربية (Arabic)",members = {"abdXelrhman","m-abudrais","someone",},},{subheading = "Asturianu (Asturian)",members = {"Xuacu Saturio",},},{subheading = "Български (Bulgarian)",members = {"А. Ташев","Любомир Василев",},},{subheading = "Català (Catalan)",members = {"Guybrush88","Joan Josep","Oriol",},},{subheading = "Čeština (Czech)",members = {"Adam Matoušek","David Spanel","Jens Beyer","Jezevec","Jiří Locker","Konki","Marek Donar (Markus7cz)","Martin Volf","Martin Vecera (Marvec)","MaSo_CZ","Matej Svrcek (prometheus)","Milan Fašina","prom","Vit Hrachovy","Zbyněk Schwarz",},},{subheading = "Dansk (Danish)",members = {"Ask Hjorth Larsen","beer","Daniel Ejsing-Duun","David Lamhauge","Erik Soe Sorensen","Esben Aaberg","hulagutten","Joe Hansen (joedalton)","larsch","Nikolaj Sejergaard","silentStatic","Simon Stubben","Ville Witt",},},{subheading = "Deutsch (German)",members = {"Andreas Breitschopp","Astuur","Benedikt Tröster","Bob Johns","Borim","Clemens Dinkel","Daniel Kutrowatz","Daniel Winzen","Das MC","David Allwicher","DelphiMarkus","Dirk Stöcker","Fenris Wolf","Ferdinand T.","FetteNase","Flames_in_Paradise","fraang","Frank Kubitschek","Gabriel Margiani","Hagen","Hanna Podewski (kristin)","herbert","hurz","Johannes (nuefke)","Johannes Haupt","Kaste","Klappstuhl","Koneu","kraileth","LAZA","LennStar","Macedon","Marc Wischnowsky","Markus Pfitzner (janus)","Martin","Matthias Krüger","Max","meru","Mirian Margiani","MirkoWodtke","Mister Pi","Mr. Anderson","Ole","Peter Schwanemann (Nasenbaer)","Philipp Niemann (Azagtoth)","Provetin","Ralf-J. Block","raymond","ronny","Shevonar","SirVer","Sonnrain","Thomas","Tim O.","Timowi","Tino Miegel (TinoM)","Tobias Margiani","Venatrix","wl-zocker","Wolfgang Kurz","Wolfs","Wuzzy",},},{subheading = "Ελληνικά (Greek)",members = {"ptr","Γιάννης Ανθυμίδης",},},{subheading = "Canadian English",members = {"Ne-1",},},{subheading = "British English",members = {"_aD","Alex Denvir","Andi Chandler","Anthony Harrington","Biffaboy","Heber","Jackson Doak","James Thorrold","Jon Senior","LiSrt","Luis Miguel D.P.","mrx5682","Terry Jones","Tinker","UndiFineD","Vladimir Oka",},},{subheading = "US American English",members = {"DragonAtma",},},{subheading = "Esperanto",members = {"alms21","Fenris Wolf","Ivan Camilo Quintero Santacruz","Jens Beyer","Kristjan SCHMIDT","LaPingvino","Manuel Berkemeier","Michael Moroni",},},{subheading = "Español (Spanish)",members = {"Adolfo Jayme","Agustín Vela","Alberto D.V.","Alejandro Pérez","Antonio Trueba (Fasser)","David Mitos","David Pérez","DiegoJ","Dishito","Eduardo Alberto Calvo","Gerardb","ironfisher","Ivan","Ivan Camilo Quintero Santacruz","Javi Sol","Jonay","Joseph Molina","JoseRoberto","Juan Eduardo Riva","Kiibakun","Luis Miguel D.P.","MadkaT","Martín V.","Miguel adre","Miguel de Dios","Monkey","Pablo Frigerio","Paco Molinero","Paulomorales","pescamillam","Rafael Augusto Maguiña Yrivarren","Rafael Medina","Raul Ferriz","Roberto López","schimmm","simon","Siz","WalterCool","zer berros",},},{subheading = "Eesti keel (Estonian)",members = {"gert7","rm87",},},{subheading = "Euskara (Basque)",members = {"Mikel Alzibar",},},{subheading = "فارسی (Persian)",members = {"katy Zahedi",},},{subheading = "Suomi (Finnish)",members = {"Jari Hautio","Juhani Numminen","Markus Hällfors","Pekka Järvinen (Raspi)","Sampo Harjula","Sini Ruohomaa (Byakushin)","Teppo Mäenpää","Tommi Nirha","Vazde",},},{subheading = "Français (French)",members = {"AGuechoum","AnubiS","Audiger Jeremy","Aurelien Pavel","Benjamin Subtil","Bertram","bouchard renaud","Bruno Veilleux","clark17","crep4ever","David .","El Pensador","Eliovir","Emmanuel Andry (Eandry)","fk","François Rousselet","Gilles Aubert","Guillaume Brant","Guybrush88","Immunoman","Jean-Pierre Gemble","Hanna Podewski (kristin)","londumas","Michael Colignon","Michael DOUBEZ","Mohamed SEDKI","NonoSan","Pierre Rudloff","Sébastien Duthil","Sevy Ride","Tarou","Thomas Jungers","tomtom","Tubuntu","Ubuntu1988","verdy_p","wl-zocker","YS1","Yves MATHIEU",},},{subheading = "Gàidhlig (Scottish Gaelic)",members = {"GunChleoc",},},{subheading = "Galego (Galician)",members = {"Adrián Chaves Fernández","Antonio Trueba (Fasser)","Xosé",},},{subheading = "עברית (Hebrew)",members = {"Danny Albocher","Liel Fridman","Michael DOUBEZ","Solomon Gruber (Piql7)","Yaron",},},{subheading = "हिन्दी (Hindi)",members = {"girdhari rao",},},{subheading = "Hrvatski (Croatian)",members = {"Mario Dautović",},},{subheading = "Magyar (Hungarian)",members = {"cn4ij","Dániel Varga (EuroF)","Ferenc Nagy","Gyönki Bendegúz","HUNStree","István Kiss","jzombi","Kiscsirke","Major Gabesz","Muszela Balázs","Papp Bence","Richard Somlói","Robert Roth","SanskritFritz","Szűcs Kornél Géza",},},{subheading = "Interlingua",members = {"alms21",},},{subheading = "Bahasa Indonesia (Indonesian)",members = {"dadanhrn",},},{subheading = "Italiano (Italian)",members = {"Angelo Locritani","Colin Gibson","DarkSaivor","Davidus","Dom De Felice","Doukas7","Eulogy","Gabriel Rota","Guybrush88","ido","Loris Turchetti","Oibaf","Pierpaolo Pierozzi","pierusch","Pietro Battiston","Roberto Sciascia","Sergio Spinatelli","sgargel","simone.sandri",},},{subheading = "日本語 (Japanese)",members = {"alms21","Dios","guess880","Midori","SevyRide","tubame",},},{subheading = "Basa jawa (Javanese)",members = {"zaenal arifin",},},{subheading = "ქართული (Georgian)",members = {"Gabriel Margiani","Meyer Konrad",},},{subheading = "한국어 (Korean)",members = {"ddfddf2k",},},{subheading = "Lingua latīna (Latin)",members = {"alms21","lopho","Sonnrain","Stephan Lenk","Thorsten",},},{subheading = "Lietuvių (Lithuanian)",members = {"Mantas Kriaučiūnas",},},{subheading = "मराठी (Marathi)",members = {"Amod Ajit Karmarkar",},},{subheading = "بهاس ملايو (Malay)",members = {"abuyop",},},{subheading = "မြန်မာစ (Burmese)",members = {"pyaehtetaung",},},{subheading = "Norsk (Bokmål) (Norwegian Bokmål)",members = {"Fredrik Sudmann","Hans Joachim Desserud","Magnus Meyer Hustveit","Martin Dahl Moe","mr.x","Thorbjørn Bruarøy",},},{subheading = "Plattdütsch (Low German)",members = {"Mister Pi ","Nasenbaer ","Ole ","tando",},},{subheading = "Nederlands (Dutch)",members = {"BenW","Christian Groenendijk","Dirk Schut","fireprog","fk","Foppe Benedictus","Johan Jonkman (Dikjuh)","Maasieboy","Marcel","megabyte","Patrick van der Leer","Pieter Ouwerkerk (Pietertje)","Pietertje","PliniusNeo","REAL NAME","RickvanderZwet","Rob Snelders (Ertai)","Teun Spaans","Victor Pelt","Wim Champagne",},},{subheading = "Nynorsk (Norwegian Nynorsk)",members = {"Alexander Mackinnon Jansen","Hans Joachim Desserud","Odin Hørthe Omdal","Thorbjørn Bruarøy",},},{subheading = "Occitan",members = {"Cédric VALMARY (Tot en òc)",},},{subheading = "Polski (Polish)",members = {"Albert Einstein","Andrzej Krentosz (Endrju)","Asahi Koishi","BartekChom","Bartosz Wiśniewski","Gabriel Fortin","Hubert Pluta","Januzi (januzi)","Jacek Wolszczak (Shutdownrunner)","Jens Beyer","Karol Sobolewski","Łukasz Chełmicki","Mateusz Micał","Michal Maslanko","Michał Rzepiński","orzeh","Patryk Sawicki","Pawel PErz","Stanisław Gackowski (Soeb)","Szymon Fornal","Szymon Gackowski","Szymon Nieznański","tim","Tomasz Sterna","Wesmania","Wojtek","XeonBloomfield",},},{subheading = "Português (Portuguese)",members = {"Almufadado","daniel reis","David Rodrigues","Flávio J. Saraiva","GunChleoc","Marcelo do Pagode","Miguel de Freitas Fonseca","Tiago Silva","trewe",},},{subheading = "Português do Brasil (Brazilian Portuguese)",members = {"Alexandre","alms21","Almufadado","Cleverton","daniel reis","Fabio Garz","Flaviano Angeli","HicHic","Hriostat","Israel","JoãoPedro BrasãoToledo","Juarez S.","Júlio Cezar Santos Pires","Juno","Luiz N","Maraschin","Marcelo do Pagode","Nicolas Abril","Pedro Pisandelli","Proezas","Rafael Neri","Rayback","Rubens Bueno","Samer Ghosnlas.2932","Tomas Abril","Vitor",},},{subheading = "Română (Romanian)",members = {"Ursachi Alexandru",},},{subheading = "Русский (Russian)",members = {"Александр","Александр Бикмеев (Rombal)","Александр Глухов","Алексей Кабанов","Андрей Кулаков ","Андрей Олыкайнен ","Антон Хабаров (lu)","Виктор Биркманис","Владимир Коваленко","Глеб Синковский","Глория Хрусталёва","Денис Дерябин","Егор Панфилов","Константин Щукин","Никита Шехов","Руслан Ковтун","Сергей Фуканчик ","Юрий Соколов (Urra)","CupIvan","Georgiy","gerich","Izon","KroArtem","Lex","Massol","Papazu","SashaQR","TroubleMakerDV","Vampire Hunter D","Vlad",},},{subheading = "Kinyarwanda",members = {"Nasenbaer",},},{subheading = "සිංහල (Sinhala)",members = {"Samith Sandanayake",},},{subheading = "Slovenčina (Slovak)",members = {"Kefir111","Marek Hám","Miroslav Remák","Vladimir","Vladímir Tóth (Ike)",},},{subheading = "Slovenski jezik (Slovenian)",members = {"Andrej Znidarsic","Boštjan Miklavčič","Jure Repinc","kleb","Klemen Košir","Matevž Jekovec","Matic Gradišer","mrt",},},{subheading = "српски (Serbian)",members = {"Никола Павловић",},},{subheading = "Svenska (Swedish)",members = {"Arve Eriksson","Christian Widell","Daniel Nylander (yeager)","Frederik Pettersson (luno)","ivh","Joakim Lundborg","karlrune","Marcus E","Michael Rydén","Patrick H.","Phoenix","Rasmus Olstedt","RasmusBackman","Sigra","Treecko","Tumaini","Ulite",},},{subheading = "Türkçe (Turkish)",members = {"Asiye","Ekrem Kocadere","Ercin Senturk","Recep Hasanbaş","ScriptMonster","Volkan Gezer",},},{subheading = "українська мова (Ukranian)",members = {"Fedik","Shemet Yevhene","Сергій Дубик",},},{subheading = "Tiếng Việt (Vietnamese)",members = {"Nguyen Quang Chien",},},{subheading = "简体中文 (Simplified Chinese)",members = {"luojie-dune","XIA",},},{subheading = "繁體中文 (Traditional Chinese)",members = {"AJ","poormusic","sonny",},},},},{heading = _"Packagers",image = "pics/genstats_productivity.png",entries = {{subheading = _"Debian Linux",members = {"Martin Quinson",},},{subheading = _"Fedora Linux",members = {"Karol Trzcionka","Jochen Wiedmann",},},{subheading = _"Mandriva Linux",members = {"Emmanuel Andry (eandry)",},},{subheading = _"FreeBSD",members = {"Bartosz Fabianowski",},},{subheading = _"Mac OS X",members = {"Philipp Engelhard","Pierre Salagnac (Tarou)","Wolf St. Kappesser","David Allwicher (aber)",},},{subheading = _"Windows",members = {"Tino Miegel (TinoM)","Alexander Kahl (Wolfpac)","Geodomus","Jari Hautio",},},{subheading = _"ZetaOS",members = {"BeSman",},},},},{heading = _"Homepage",image = "pics/WL-Editor-16.png",entries = {{subheading = _"Homepage Coders",members = {"Holger Rapp (SirVer)","Stanislaw Gackowski (Soeb)","Markus Pfitzner (janus)","Tobi",},},{subheading = _"Documentation, Help and Wiki",members = {"Erik Sigra (sigra)","Florian Falkner (foldrian)","Florian Weber (bedouin)","Nicolai Haehnle","Holger Rapp (SirVer)","Johannes (nuefke)","Alexander Kahl (wolfpac)","Stanislaw Gackowski (Soeb)","Hanna Podewski (kristin)",},},},},{heading = _"Former Elders",image = "pics/genstats_enable_plr_04.png",entries = {{subheading = _"Graphics",members = {"Salamander","Alexia Death (death)",},},{subheading = _"Homepage",members = {"holymoly","Stuart Eglington (DaaL1973)","Jon Harris (jonsjava)",},},{subheading = _"Sound",members = {"Yannick Warnier",},},{subheading = _"Translation",members = {"Peter Schwanemann (Nasenbaer)","Philipp Niemann (Azagtoth)",},},},},{heading = _"Other",image = "pics/genstats_landsize.png",entries = {{members = {"Matt Howe (mdhowe)","Samuel Tilly (eldamar)","and many, many more (thank you for everything you've done)",},},},},} end
\ No newline at end of file
+function developers() return {{heading = _"Chieftain",image = "pics/genstats_enable_plr_01.png",entries = {{members = {"Holger Rapp (SirVer)",},},},},{heading = _"Elders",image = "pics/genstats_enable_plr_04.png",entries = {{subheading = _"Graphics",members = {"Chuck Wilder (chuckw)",},},{subheading = _"Homepage",members = {"Markus Pfitzner (janus)",},},{subheading = _"Sound",members = {"Jan Bruns (solatis)",},},{subheading = _"Tongues",members = {"GunChleoc",},},},},{heading = _"Coders",image = "pics/genstats_nrwares.png",entries = {{members = {"Holger Rapp (SirVer)","Nicolai Hähnle (ixprefect)","Florian Bluemel","Florian Falkner (foldrian)","Florian Weber (Bedouin)","Philipp Engelhard","Stefan Boettner","Tron","Martin Quinson","Raul Ferriz","Willem Jan Palenstijn","Josef Spillner","Christof Petig","Erik Sigra (sigra)","Nanne Wams","Surgery","Andrius R. (knutux)","Jari Hautio (jarih)","Peter Schwanemann (Nasenbaer)","Victor Pelt (Dwarik)","Axel Gehlert (dunkelbrauer)","András Eisenberger (Kiscsirke)","Andi","Timo","Hannes","TimoW","Jens Beyer (Qcumber-some)","Andreas Breitschopp (ab-tools)","Joachim Breitner (nomeata)","Nizamov Shawkat","Carl-Philip Hänsch (carli)","Martin Prussak (martin)","David Allwicher (aber)","Nathan Peters (nathanpeters)","Leif Sandstede (lcsand)","Matthias Horne (shevonar)","Borim (borim)","Angelo Locritani (alocritani)","Gabriel Margiani (gamag)","Anthony J. Bentley (anthonyjbentley)","Peter Waller (iri)","Johannes Ebke (sirius-in4matiker)","Andreas Eriksson","Mark Scott","Teppo Mäenpää","Steven De Herdt","Charly Ghislain (cghislai)","Tino Miegel (TinoM)","Tibor Bamhor (tiborb95)","Ferdinand Thiessen (f-thiessen)","Willy Scheibel (willyscheibel)","Martin Schmidt (mars)","Simon Eilting","Alexander Kartzow (daAlx1)","Łukasz Majcher","Paul Mehrer (meitis)",},},},},{heading = _"Graphicians",image = "pics/genstats_nrbuildings.png",entries = {{members = {"Albert Jasiowka","Holger Rapp (SirVer)","Marz","Philipp Engelhard","Yannick Warnier","Delia","Florian Neuerburg","Jerome Rosinski","Mats Olsson","Odin Omdal","Wolfgang Weidner","Andreas Baier","Juri Chomé","Toralf Bethke (bithunter32)","Peter Schwanemann (Nasenbaer)","Alexia Death","Repsa Jih","Geoffroy Schmitlin (Trimard)","Benedikt Freisen (Objpaswriter)","Stefano Guidoni (Ilguido)","Samith Sandanayake (samithdisal)","Chuck Wilder (chuckw)","Astuur","Gerrit Familiegrosskopf (kingcreole)","Florian Angermeier (fraang)",},},},},{heading = _"Musicians",image = "pics/workarea123.png",entries = {{members = {"Kristian","MiddleFinger","Valerio Orlandini (Symbiosis)","Barry van Oudtshoorn (barryvan)","Jan Bruns (Solatis)","Nikola Whallon (Saturn)","Joshua O'Leary (Joshun)",},},},},{heading = _"Sound Effects",image = "pics/workarea123.png",entries = {{members = {"Stefan de Konik","Peter Schwanemann (Nasenbaer)","Stephan","Adam Piggott (_aD)","Stanisław Gackowski (Soeb)",},},},},{heading = _"Maps and Missions",image = "pics/genstats_landsize.png",entries = {{members = {"Michal Szopa (Winterwind)","Jan-Henrik Kluth (Isch)","Peter Schwanemann (Nasenbaer)","Sven (deviant)","Tuxlands","Kamil Wilczek (Another Barbarian)","Tarvo Reim (Tarrei)","Manuel Holzmeier (Quappo)","ivh","Hanna Podewski (kristin)","Teppo Mäenpää","fk","Einstein13","Jenia","Robnick","wl-zocker",},},},},{heading = _"Campaign Story",image = "pics/ls_wlmap.png",entries = {{subheading = _"Barbarian",members = {"Bastian Rapp","Alexander Kahl (wolfpac)","Peter Schwanemann (Nasenbaer)",},},{subheading = _"Empire",members = {"Peter Schwanemann (Nasenbaer)",},},{subheading = _"Atlantean",members = {"Holger Rapp (SirVer)","Peter Schwanemann (Nasenbaer)",},},},},{heading = _"Translators",image = "pics/fsel_editor_set_height.png",entries = {{subheading = "العربية (Arabic)",members = {"abdXelrhman","m-abudrais","someone",},},{subheading = "Asturianu (Asturian)",members = {"Xuacu Saturio",},},{subheading = "Български (Bulgarian)",members = {"А. Ташев","Любомир Василев",},},{subheading = "Català (Catalan)",members = {"Guybrush88","Joan Josep","Oriol",},},{subheading = "Čeština (Czech)",members = {"Adam Matoušek","David Spanel","Jens Beyer","Jezevec","Jiří Locker","Konki","Marek Donar (Markus7cz)","Martin Volf","Martin Vecera (Marvec)","MaSo_CZ","Matej Svrcek (prometheus)","Milan Fašina","prom","Vit Hrachovy","Zbyněk Schwarz",},},{subheading = "Dansk (Danish)",members = {"Ask Hjorth Larsen","beer","Daniel Ejsing-Duun","David Lamhauge","Erik Soe Sorensen","Esben Aaberg","hulagutten","Joe Hansen (joedalton)","larsch","Nikolaj Sejergaard","silentStatic","Simon Stubben","Ville Witt",},},{subheading = "Deutsch (German)",members = {"Andreas Breitschopp","Astuur","Benedikt Tröster","Bob Johns","Borim","Clemens Dinkel","Daniel Kutrowatz","Daniel Winzen","Das MC","David Allwicher","DelphiMarkus","Dirk Stöcker","Fenris Wolf","Ferdinand T.","FetteNase","Flames_in_Paradise","fraang","Frank Kubitschek","Gabriel Margiani","Hagen","Hanna Podewski (kristin)","herbert","hurz","Johannes (nuefke)","Johannes Haupt","Kaste","Klappstuhl","Koneu","kraileth","LAZA","LennStar","Macedon","Marc Wischnowsky","Markus Pfitzner (janus)","Martin","Matthias Krüger","Max","meru","Mirian Margiani","MirkoWodtke","Mister Pi","Mr. Anderson","Ole","Peter Schwanemann (Nasenbaer)","Philipp Niemann (Azagtoth)","Provetin","Ralf-J. Block","raymond","ronny","Shevonar","SirVer","Sonnrain","Thomas","Tim O.","Timowi","Tino Miegel (TinoM)","Tobias Margiani","Venatrix","wl-zocker","Wolfgang Kurz","Wolfs","Wuzzy",},},{subheading = "Ελληνικά (Greek)",members = {"ptr","Γιάννης Ανθυμίδης",},},{subheading = "Canadian English",members = {"Ne-1",},},{subheading = "British English",members = {"_aD","Alex Denvir","Andi Chandler","Anthony Harrington","Biffaboy","Heber","Jackson Doak","James Thorrold","Jon Senior","LiSrt","Luis Miguel D.P.","mrx5682","Terry Jones","Tinker","UndiFineD","Vladimir Oka",},},{subheading = "US American English",members = {"DragonAtma",},},{subheading = "Esperanto",members = {"alms21","Fenris Wolf","Ivan Camilo Quintero Santacruz","Jens Beyer","Kristjan SCHMIDT","LaPingvino","Manuel Berkemeier","Michael Moroni",},},{subheading = "Español (Spanish)",members = {"Adolfo Jayme","Agustín Vela","Alberto D.V.","Alejandro Pérez","Antonio Trueba (Fasser)","David Mitos","David Pérez","DiegoJ","Dishito","Eduardo Alberto Calvo","Gerardb","ironfisher","Ivan","Ivan Camilo Quintero Santacruz","Javi Sol","Jonay","Joseph Molina","JoseRoberto","Juan Eduardo Riva","Kiibakun","Luis Miguel D.P.","MadkaT","Martín V.","Miguel adre","Miguel de Dios","Monkey","Pablo Frigerio","Paco Molinero","Paulomorales","pescamillam","Rafael Augusto Maguiña Yrivarren","Rafael Medina","Raul Ferriz","Roberto López","schimmm","simon","Siz","WalterCool","zer berros",},},{subheading = "Eesti keel (Estonian)",members = {"gert7","rm87",},},{subheading = "Euskara (Basque)",members = {"Mikel Alzibar",},},{subheading = "فارسی (Persian)",members = {"katy Zahedi",},},{subheading = "Suomi (Finnish)",members = {"Jari Hautio","Juhani Numminen","Markus Hällfors","Pekka Järvinen (Raspi)","Sampo Harjula","Sini Ruohomaa (Byakushin)","Teppo Mäenpää","Tommi Nirha","Vazde",},},{subheading = "Français (French)",members = {"AGuechoum","AnubiS","Audiger Jeremy","Aurelien Pavel","Benjamin Subtil","Bertram","bouchard renaud","Bruno Veilleux","clark17","crep4ever","David .","El Pensador","Eliovir","Emmanuel Andry (Eandry)","fk","François Rousselet","Gilles Aubert","Guillaume Brant","Guybrush88","Immunoman","Jean-Pierre Gemble","Hanna Podewski (kristin)","londumas","Michael Colignon","Michael DOUBEZ","Mohamed SEDKI","NonoSan","Pierre Rudloff","Sébastien Duthil","Sevy Ride","Tarou","Thomas Jungers","tomtom","Tubuntu","Ubuntu1988","verdy_p","wl-zocker","YS1","Yves MATHIEU",},},{subheading = "Gàidhlig (Scottish Gaelic)",members = {"GunChleoc",},},{subheading = "Galego (Galician)",members = {"Adrián Chaves Fernández","Antonio Trueba (Fasser)","Xosé",},},{subheading = "עברית (Hebrew)",members = {"Danny Albocher","Liel Fridman","Michael DOUBEZ","Solomon Gruber (Piql7)","Yaron",},},{subheading = "हिन्दी (Hindi)",members = {"girdhari rao",},},{subheading = "Hrvatski (Croatian)",members = {"Mario Dautović",},},{subheading = "Magyar (Hungarian)",members = {"cn4ij","Dániel Varga (EuroF)","Ferenc Nagy","Gyönki Bendegúz","HUNStree","István Kiss","jzombi","Kiscsirke","Major Gabesz","Muszela Balázs","Papp Bence","Richard Somlói","Robert Roth","SanskritFritz","Szűcs Kornél Géza",},},{subheading = "Interlingua",members = {"alms21",},},{subheading = "Bahasa Indonesia (Indonesian)",members = {"dadanhrn",},},{subheading = "Italiano (Italian)",members = {"Angelo Locritani","Colin Gibson","DarkSaivor","Davidus","Dom De Felice","Doukas7","Eulogy","Gabriel Rota","Guybrush88","ido","Loris Turchetti","Oibaf","Pierpaolo Pierozzi","pierusch","Pietro Battiston","Roberto Sciascia","Sergio Spinatelli","sgargel","simone.sandri",},},{subheading = "日本語 (Japanese)",members = {"alms21","Dios","guess880","Midori","SevyRide","tubame",},},{subheading = "Basa jawa (Javanese)",members = {"zaenal arifin",},},{subheading = "ქართული (Georgian)",members = {"Gabriel Margiani","Meyer Konrad",},},{subheading = "한국어 (Korean)",members = {"ddfddf2k",},},{subheading = "Lingua latīna (Latin)",members = {"alms21","lopho","Sonnrain","Stephan Lenk","Thorsten",},},{subheading = "Lietuvių (Lithuanian)",members = {"Mantas Kriaučiūnas",},},{subheading = "मराठी (Marathi)",members = {"Amod Ajit Karmarkar",},},{subheading = "بهاس ملايو (Malay)",members = {"abuyop",},},{subheading = "မြန်မာစ (Burmese)",members = {"pyaehtetaung",},},{subheading = "Norsk (Bokmål) (Norwegian Bokmål)",members = {"Fredrik Sudmann","Hans Joachim Desserud","Magnus Meyer Hustveit","Martin Dahl Moe","mr.x","Thorbjørn Bruarøy",},},{subheading = "Plattdütsch (Low German)",members = {"Mister Pi ","Nasenbaer ","Ole ","tando",},},{subheading = "Nederlands (Dutch)",members = {"BenW","Christian Groenendijk","Dirk Schut","fireprog","fk","Foppe Benedictus","Johan Jonkman (Dikjuh)","Maasieboy","Marcel","megabyte","Patrick van der Leer","Pieter Ouwerkerk (Pietertje)","Pietertje","PliniusNeo","REAL NAME","RickvanderZwet","Rob Snelders (Ertai)","Teun Spaans","Victor Pelt","Wim Champagne",},},{subheading = "Nynorsk (Norwegian Nynorsk)",members = {"Alexander Mackinnon Jansen","Hans Joachim Desserud","Odin Hørthe Omdal","Thorbjørn Bruarøy",},},{subheading = "Occitan",members = {"Cédric VALMARY (Tot en òc)",},},{subheading = "Polski (Polish)",members = {"Albert Einstein","Andrzej Krentosz (Endrju)","Asahi Koishi","BartekChom","Bartosz Wiśniewski","Gabriel Fortin","Hubert Pluta","Januzi (januzi)","Jacek Wolszczak (Shutdownrunner)","Jens Beyer","Karol Sobolewski","Łukasz Chełmicki","Mateusz Micał","Michal Maslanko","Michał Rzepiński","orzeh","Patryk Sawicki","Pawel PErz","Stanisław Gackowski (Soeb)","Szymon Fornal","Szymon Gackowski","Szymon Nieznański","tim","Tomasz Sterna","Wesmania","Wojtek","XeonBloomfield",},},{subheading = "Português (Portuguese)",members = {"Almufadado","daniel reis","David Rodrigues","Flávio J. Saraiva","GunChleoc","Marcelo do Pagode","Miguel de Freitas Fonseca","Tiago Silva","trewe",},},{subheading = "Português do Brasil (Brazilian Portuguese)",members = {"Alexandre","alms21","Almufadado","Cleverton","daniel reis","Fabio Garz","Flaviano Angeli","HicHic","Hriostat","Israel","JoãoPedro BrasãoToledo","Juarez S.","Júlio Cezar Santos Pires","Juno","Luiz N","Maraschin","Marcelo do Pagode","Nicolas Abril","Pedro Pisandelli","Proezas","Rafael Neri","Rayback","Rubens Bueno","Samer Ghosnlas.2932","Tomas Abril","Vitor",},},{subheading = "Română (Romanian)",members = {"Ursachi Alexandru",},},{subheading = "Русский (Russian)",members = {"Александр","Александр Бикмеев (Rombal)","Александр Глухов","Алексей Кабанов","Андрей Кулаков ","Андрей Олыкайнен ","Антон Хабаров (lu)","Виктор Биркманис","Владимир Коваленко","Глеб Синковский","Глория Хрусталёва","Денис Дерябин","Егор Панфилов","Константин Щукин","Никита Шехов","Руслан Ковтун","Сергей Фуканчик ","Юрий Соколов (Urra)","CupIvan","Georgiy","gerich","Izon","KroArtem","Lex","Massol","Papazu","SashaQR","TroubleMakerDV","Vampire Hunter D","Vlad",},},{subheading = "Kinyarwanda",members = {"Nasenbaer",},},{subheading = "සිංහල (Sinhala)",members = {"Samith Sandanayake",},},{subheading = "Slovenčina (Slovak)",members = {"Kefir111","Marek Hám","Miroslav Remák","Vladimir","Vladímir Tóth (Ike)",},},{subheading = "Slovenski jezik (Slovenian)",members = {"Andrej Znidarsic","Boštjan Miklavčič","Jure Repinc","kleb","Klemen Košir","Matevž Jekovec","Matic Gradišer","mrt",},},{subheading = "српски (Serbian)",members = {"Никола Павловић",},},{subheading = "Svenska (Swedish)",members = {"Arve Eriksson","Christian Widell","Daniel Nylander (yeager)","Frederik Pettersson (luno)","ivh","Joakim Lundborg","karlrune","Marcus E","Michael Rydén","Patrick H.","Phoenix","Rasmus Olstedt","RasmusBackman","Sigra","Treecko","Tumaini","Ulite",},},{subheading = "Türkçe (Turkish)",members = {"Asiye","Ekrem Kocadere","Ercin Senturk","Recep Hasanbaş","ScriptMonster","Volkan Gezer",},},{subheading = "українська мова (Ukranian)",members = {"Fedik","Shemet Yevhene","Сергій Дубик",},},{subheading = "Tiếng Việt (Vietnamese)",members = {"Nguyen Quang Chien",},},{subheading = "简体中文 (Simplified Chinese)",members = {"luojie-dune","XIA",},},{subheading = "繁體中文 (Traditional Chinese)",members = {"AJ","poormusic","sonny",},},},},{heading = _"Packagers",image = "pics/genstats_productivity.png",entries = {{subheading = _"Debian Linux",members = {"Martin Quinson",},},{subheading = _"Fedora Linux",members = {"Karol Trzcionka","Jochen Wiedmann",},},{subheading = _"Mandriva Linux",members = {"Emmanuel Andry (eandry)",},},{subheading = _"FreeBSD",members = {"Bartosz Fabianowski",},},{subheading = _"Mac OS X",members = {"Philipp Engelhard","Pierre Salagnac (Tarou)","Wolf St. Kappesser","David Allwicher (aber)",},},{subheading = _"Windows",members = {"Tino Miegel (TinoM)","Alexander Kahl (Wolfpac)","Geodomus","Jari Hautio",},},{subheading = _"ZetaOS",members = {"BeSman",},},},},{heading = _"Homepage",image = "pics/WL-Editor-16.png",entries = {{subheading = _"Homepage Coders",members = {"Holger Rapp (SirVer)","Stanislaw Gackowski (Soeb)","Markus Pfitzner (janus)","Tobi",},},{subheading = _"Documentation, Help and Wiki",members = {"Erik Sigra (sigra)","Florian Falkner (foldrian)","Florian Weber (bedouin)","Nicolai Haehnle","Holger Rapp (SirVer)","Johannes (nuefke)","Alexander Kahl (wolfpac)","Stanislaw Gackowski (Soeb)","Hanna Podewski (kristin)",},},},},{heading = _"Former Elders",image = "pics/genstats_enable_plr_04.png",entries = {{subheading = _"Graphics",members = {"Salamander","Alexia Death (death)",},},{subheading = _"Homepage",members = {"holymoly","Stuart Eglington (DaaL1973)","Jon Harris (jonsjava)",},},{subheading = _"Sound",members = {"Yannick Warnier",},},{subheading = _"Translation",members = {"Peter Schwanemann (Nasenbaer)","Philipp Niemann (Azagtoth)",},},},},{heading = _"Other",image = "pics/genstats_landsize.png",entries = {{members = {"Matt Howe (mdhowe)","Samuel Tilly (eldamar)","and many, many more (thank you for everything you've done)",},},},},} end


Follow ups