← Back to team overview

widelands-dev team mailing list archive

[Merge] lp:~widelands-dev/widelands/sphinx-buildings into lp:widelands

 

GunChleoc has proposed merging lp:~widelands-dev/widelands/sphinx-buildings into lp:widelands.

Commit message:
Restructured and enhanced the Buildings documentation.

Requested reviews:
  Widelands Developers (widelands-dev)
Related bugs:
  Bug #1512093 in widelands: "Add tribes directory to developer scripting reference"
  https://bugs.launchpad.net/widelands/+bug/1512093

For more details, see:
https://code.launchpad.net/~widelands-dev/widelands/sphinx-buildings/+merge/308704
-- 
Your team Widelands Developers is requested to review the proposed merge of lp:~widelands-dev/widelands/sphinx-buildings into lp:widelands.
=== modified file 'data/tribes/atlanteans.lua'
--- data/tribes/atlanteans.lua	2016-09-01 15:43:01 +0000
+++ data/tribes/atlanteans.lua	2016-10-18 09:09:00 +0000
@@ -1,4 +1,6 @@
 -- RST
+-- .. _lua_tribes_<tribename>.lua:
+--
 -- <tribename>.lua
 -- ---------------------
 --
@@ -7,7 +9,7 @@
 dirname = path.dirname(__file__)
 
 -- RST
--- .. function:: new_tribe(table)
+-- .. function:: new_tribe{table}
 --
 --    This function adds all units to a tribe.
 --

=== modified file 'data/tribes/buildings/militarysites/atlanteans/castle/helptexts.lua'
--- data/tribes/buildings/militarysites/atlanteans/castle/helptexts.lua	2016-09-02 08:27:34 +0000
+++ data/tribes/buildings/militarysites/atlanteans/castle/helptexts.lua	2016-10-18 09:09:00 +0000
@@ -1,68 +1,29 @@
--- RST
--- Building Helptexts
--- ------------------
---
--- Each building has a ``helptexts.lua`` script, which is located in the same directory as its ``init.lua`` script.
--- The functions in this file return texts that are used for buildings by the Tribal Encyclopedia.
---
--- See also the helper functions in ``scripting/help/global_helptexts.lua``
---
+-- The helptext documentation is located in /doc/sphinx/lua_tribes_buildings_rst.org
 
 -- This include can be removed when all help texts have been defined.
 include "tribes/scripting/help/global_helptexts.lua"
 
--- RST
--- .. function:: building_helptext_lore()
---
---    Returns a localized string with a lore helptext for this building.
---    If you don't have a lore text yet, use ``no_lore_text_yet()`` from the ``global_helptexts.lua`` script.
---
---    :returns: Localized lore text
 function building_helptext_lore()
    -- TRANSLATORS#: Lore helptext for a building
    return no_lore_text_yet()
 end
 
--- RST
--- .. function:: building_helptext_lore_author()
---
---    Returns a localized string with a fictional author for the lore helptext for this building. The returned string can be empty.
---    If you don't have an author yet, use ``no_lore_author_text_yet()`` from the ``global_helptexts.lua`` script.
---
 --    :returns: Localized lore author or empty string.
 function building_helptext_lore_author()
    -- TRANSLATORS#: Lore author helptext for a building
    return no_lore_author_text_yet()
 end
 
--- RST
--- .. function:: building_helptext_purpose()
---
---    Returns a localized string with a purpose helptext for this building. This should be individually defined for all buildings. You can use ``no_purpose_text_yet()`` from the ``global_helptexts.lua`` script if you're not ready to define this yet.
---
---    :returns: Localized purpose text
 function building_helptext_purpose()
    -- TRANSLATORS: Purpose helptext for a building
    return pgettext("building", "Garrisons soldiers to expand your territory.")
 end
 
--- RST
--- .. function:: building_helptext_note()
---
---    Returns a localized string with a note that is added to the purpose. This can be empty.
---
---    :returns: Localized note text or empty string.
 function building_helptext_note()
    -- TRANSLATORS: Note helptext for a building
    return pgettext("building", "If you’re low on soldiers to occupy new military sites, use the downward arrow button to decrease the capacity. You can also click on a soldier to send him away.")
 end
 
--- RST
--- .. function:: building_helptext_performance()
---
---    Returns a localized string with a performance helptext for this building. You can use ``no_purpose_text_yet()`` from the ``global_helptexts.lua`` script if the performance hasn't been calculated yet. Leave empty when this isn't applicable (e.g. for militarysites or warehouses).
---
---    :returns: Localized performance text or empty string.
 function building_helptext_performance()
    -- TRANSLATORS#: Performance helptext for a building
    return ""

=== modified file 'data/tribes/buildings/militarysites/atlanteans/castle/init.lua'
--- data/tribes/buildings/militarysites/atlanteans/castle/init.lua	2016-09-22 16:45:02 +0000
+++ data/tribes/buildings/militarysites/atlanteans/castle/init.lua	2016-10-18 09:09:00 +0000
@@ -1,4 +1,6 @@
 -- RST
+-- .. _lua_tribes_buildings_militarysites:
+--
 -- Military Sites
 -- --------------
 --
@@ -13,51 +15,37 @@
 dirname = path.dirname(__file__)
 
 -- RST
--- .. function:: new_militarysite_type(table)
+-- .. function:: new_militarysite_type{table}
 --
 --    This function adds the definition of a military site building to the engine.
 --
 --    :arg table: This table contains all the data that the game engine will add to this building.
---                It contains the following entries:
---
---    **msgctxt**: The context that Gettext will use to disambiguate the translations for strings in this table.
---
---    **name**: A string containing the internal name of this building.
---
---    **descname**: The translatable display name. Use ``pgettext`` with the ``msgctxt`` above to fetch the string.
---
---    **helptext_script**: The full path to the ``helptexts.lua`` script for this building.
---
---    **icon**: The full path to the menu icon for this building.
---
---    **size**: The size of this building: ``"small"``, ``"medium"``, or ``"big"``.
---
---    **buildcost**: A table with the wares used to build this building, containing warename - amount pairs, e.g. ``buildcost = { log = 4, granite = 2 }``.
---
---    **return_on_dismantle**: The wares that this building will give back to the player when it is dismantled, e.g. ``buildcost = { log = 2, granite = 1 }``.
---
---    **enhancement_cost**: The wares needed to upgrade this building, e.g. ``enhancement_cost = { log = 1, granite = 1 }``.
---
---    **return_on_dismantle_on_enhanced**: The wares that this enhanced building will give back to the player when it is dismantled, e.g. ``return_on_dismantle_on_enhanced = { granite = 1 }``.
---
---    **animations**: A table containing all animations for this building.
---
---    **aihints**: A list of name - value pairs with hints for the AI.
---
---    **max_soldiers**: The maximum number of solders that can be garrisoned at this building.
---
---    **heal_per_second**: The number of health points that a garrisoned soldier will heal each second.
---
---    **conquers**: The conquer radius for this building.
---
---    **prefer_heroes**: Whether this building prefers heroes or rookies per default. Set to ``true`` or ``false``.
---
---    **messages**: Messages that this building will send to the user. The following messages need to ne defined:
---         * *occupied*: Shown when your soldiers occupy a new building
---         * *aggressor*: Shown when this building sees enemy soldiers
---         * *attack*: Shown when this building is being attacked by an enemy
---         * *defeated_enemy*: Shown when you lose this building to an enemy
---         * *defeated_you*: Shown when you take this building from an enemy
+--                In addition to the :ref:`lua_tribes_buildings_common`, it contains the following entries:
+--
+--    **max_soldiers**
+--        *Mandatory*. The maximum number of solders that can be garrisoned at this building.
+--
+--    **heal_per_second**
+--        *Mandatory*. The number of health points that a garrisoned soldier will heal each second.
+--
+--    **conquers**
+--        *Mandatory*. The conquer radius for this building.
+--
+--    **prefer_heroes**
+--        *Mandatory*. Whether this building prefers heroes or rookies per default.
+--        Set to ``true`` or ``false``.
+--
+--    **messages**
+--        *Mandatory*. Messages that this building will send to the user. There are 5 messages,
+--        defined like this::
+--
+--            messages = {
+--                occupied = _"Your soldiers have occupied your fortress.",
+--                aggressor = _"Your fortress discovered an aggressor.",
+--                attack = _"Your fortress is under attack.",
+--                defeated_enemy = _"The enemy defeated your soldiers at the fortress.",
+--                defeated_you = _"Your soldiers defeated the enemy at the fortress."
+--            }
 tribes:new_militarysite_type {
    msgctxt = "atlanteans_building",
    name = "atlanteans_castle",

=== modified file 'data/tribes/buildings/partially_finished/constructionsite/init.lua'
--- data/tribes/buildings/partially_finished/constructionsite/init.lua	2016-09-22 16:45:02 +0000
+++ data/tribes/buildings/partially_finished/constructionsite/init.lua	2016-10-18 09:09:00 +0000
@@ -1,4 +1,6 @@
 -- RST
+-- .. _lua_tribes_buildings_constructionsites:
+--
 -- Construction Sites
 -- ------------------
 --
@@ -14,30 +16,12 @@
 dirname = path.dirname(__file__)
 
 -- RST
--- .. function:: new_constructionsite_type(table)
+-- .. function:: new_constructionsite_type{table}
 --
 --    This function adds the definition of the construction site building to the engine.
 --
 --    :arg table: This table contains all the data that the game engine will add to this building.
---                It contains the following entries:
---
---    **msgctxt**: The context that Gettext will use to disambiguate the translations for strings in this table.
---
---    **name**: A string containing the internal name of this building.
---
---    **descname**: The translatable display name. Use ``pgettext`` with the ``msgctxt`` above to fetch the string.
---
---    **helptext_script**: The full path to the ``helptexts.lua`` script for this building.
---
---    **icon**: The full path to the menu icon for this building.
---
---    **vision_range**: The size of the radious that the building sees.
---
---    **size**: The size of this building: ``"small"``, ``"medium"``, or ``"big"``.
---
---    **animations**: A table containing all animations for this building.
---
---    **aihints**: A list of name - value pairs with hints for the AI.
+--                It only contains :ref:`lua_tribes_buildings_common`.
 --
 tribes:new_constructionsite_type {
    msgctxt = "building",

=== modified file 'data/tribes/buildings/partially_finished/dismantlesite/init.lua'
--- data/tribes/buildings/partially_finished/dismantlesite/init.lua	2016-09-22 16:45:02 +0000
+++ data/tribes/buildings/partially_finished/dismantlesite/init.lua	2016-10-18 09:09:00 +0000
@@ -1,4 +1,6 @@
 -- RST
+-- .. _lua_tribes_buildings_dismantlesites:
+--
 -- Dismantle Sites
 -- ---------------
 --
@@ -14,30 +16,12 @@
 dirname = path.dirname(__file__)
 
 -- RST
--- .. function:: new_dismantlesite_type(table)
+-- .. function:: new_dismantlesite_type{table}
 --
 --    This function adds the definition of the dismantle site building to the engine.
 --
 --    :arg table: This table contains all the data that the game engine will add to this building.
---                It contains the following entries:
---
---    **msgctxt**: The context that Gettext will use to disambiguate the translations for strings in this table.
---
---    **name**: A string containing the internal name of this building.
---
---    **descname**: The translatable display name. Use ``pgettext`` with the ``msgctxt`` above to fetch the string.
---
---    **helptext_script**: The full path to the ``helptexts.lua`` script for this building.
---
---    **icon**: The full path to the menu icon for this building.
---
---    **vision_range**: The size of the radious that the building sees.
---
---    **size**: The size of this building: ``"small"``, ``"medium"``, or ``"big"``.
---
---    **animations**: A table containing all animations for this building.
---
---    **aihints**: A list of name - value pairs with hints for the AI.
+--                It only contains :ref:`lua_tribes_buildings_common`.
 --
 tribes:new_dismantlesite_type {
    msgctxt = "building",

=== modified file 'data/tribes/buildings/productionsites/atlanteans/armorsmithy/init.lua'
--- data/tribes/buildings/productionsites/atlanteans/armorsmithy/init.lua	2016-09-22 16:45:02 +0000
+++ data/tribes/buildings/productionsites/atlanteans/armorsmithy/init.lua	2016-10-18 09:09:00 +0000
@@ -1,4 +1,6 @@
 -- RST
+-- .. _lua_tribes_buildings_productionsites:
+--
 -- Production Sites
 -- ----------------
 --
@@ -15,58 +17,70 @@
 dirname = path.dirname(__file__)
 
 -- RST
--- .. function:: new_productionsite_type(table)
+-- .. function:: new_productionsite_type{table}
 --
 --    This function adds the definition of a production site building to the engine.
 --
 --    :arg table: This table contains all the data that the game engine will add to this building.
---                It contains the following entries:
---
---    **msgctxt**: The context that Gettext will use to disambiguate the translations for strings in this table.
---
---    **name**: A string containing the internal name of this building.
---
---    **descname**: The translatable display name. Use ``pgettext`` with the ``msgctxt`` above to fetch the string.
---
---    **helptext_script**: The full path to the ``helptexts.lua`` script for this building.
---
---    **icon**: The full path to the menu icon for this building.
---
---    **size**: The size of this building: ``"small"``, ``"medium"``, ``"big"`` or ``"mine"``.
---
---    **buildcost**: A table with the wares used to build this building, containing warename - amount pairs, e.g. ``buildcost = { log = 4, granite = 2 }``.
---
---    **return_on_dismantle**: The wares that this building will give back to the player when it is dismantled, e.g. ``buildcost = { log = 2, granite = 1 }``.
---
---    **enhancement_cost**: The wares needed to upgrade this building, e.g. ``enhancement_cost = { log = 1, granite = 1 }``.
---
---    **return_on_dismantle_on_enhanced**: The wares that this enhanced building will give back to the player when it is dismantled, e.g. ``return_on_dismantle_on_enhanced = { granite = 1 }``.
---
---    **animations**: A table containing all animations for this building.
---
---    **aihints**: A list of name - value pairs with hints for the AI.
---
---    **working_positions**: The name and amount for each worker type working at this building.
---
---    **inputs**: The name and amount for each ware input queue.
---
---    **outputs**: The wares/workers produced by this building.
---
---    **programs**: The production site programs that define what preconditions
---    a building needs to fulfil in order to produce its wares and how it's done,
---    including any animations and sounds played. See also :doc:`productionsite_program`.
---
---    **out_of_resource_notification**: This optional table defines the message
---    sent by the productionsite to the player if it has run out of a resource to
---    collect. Table keys are:
---
---        *title*: A concise message title for the list in the inbox.
---
---        *heading*: A longer version of the title, shown in the message body.
---
---        *message*: The actual message. Translation needs to be fetched with pgettext.
---
---        *productivity_threshold*: An optional int value in percent to trigger the message.
+--                In addition to the :ref:`lua_tribes_buildings_common`, it contains the following entries:
+--
+--    **size**
+--        *Mandatory*. In addition to the common size values ``"small"``,
+--        ``"medium"``, or ``"big"``, production sites can also have size ``"mine"``
+--        for defining a mine building to be built on mountains.
+--
+--    **working_positions**
+--        *Mandatory*. The name and amount for each worker type working at this
+--        building, e.g.::
+--
+--            working_positions = { atlanteans_armorsmith = 1 },
+--
+--    **inputs**
+--        *Optional*. The name and amount for each ware input queue, e.g.::
+--
+--            inputs = {
+--                { name = "coal", amount = 10 },
+--                { name = "iron", amount = 8 },
+--                { name = "gold", amount = 8 }
+--            },
+--
+--    **outputs**
+--        *Optional*. The wares/workers produced by this building, e.g.::
+--
+--            outputs = { "shield_advanced", "shield_steel" },
+--
+--    **programs**.
+--        *Mandatory*. The production site programs that define what preconditions
+--        a building needs to fulfil in order to produce its wares and how it's
+--        done, including any animations and sounds played.
+--        See :doc:`productionsite_program`.
+--
+--    **out_of_resource_notification**.
+--        *Optional*. This table defines the message sent by the productionsite
+--        to the player if it has run out of a resource to collect. There are 4
+--        entries:
+--
+--        **title**
+--            *Mandatory*. A concise message title for the list in the inbox.
+--
+--        **heading**
+--            *Mandatory*. A longer version of the title, shown in the message body.
+--
+--        **message**
+--            *Mandatory*. The actual message. Translation needs to be fetched with pgettext.
+--
+--        **productivity_threshold**
+--            *Optional. Default:* ``100``. An int value in percent to trigger the message.
+--
+--        Example::
+--
+--            out_of_resource_notification = {
+--                -- Translators: Short for "Out of ..." for a resource
+--                title = _"No Fields",
+--                heading = _"Out of Fields",
+--                message = pgettext("atlanteans_building", "The farmer working at this farm has no cleared soil to plant his seeds."),
+--                productivity_threshold = 30
+--            },
 --
 tribes:new_productionsite_type {
    msgctxt = "atlanteans_building",

=== modified file 'data/tribes/buildings/trainingsites/atlanteans/dungeon/init.lua'
--- data/tribes/buildings/trainingsites/atlanteans/dungeon/init.lua	2016-09-10 16:50:51 +0000
+++ data/tribes/buildings/trainingsites/atlanteans/dungeon/init.lua	2016-10-18 09:09:00 +0000
@@ -1,4 +1,6 @@
 -- RST
+-- .. _lua_tribes_buildings_trainingsites:
+--
 -- Training Sites
 -- --------------
 --
@@ -14,39 +16,66 @@
 dirname = path.dirname(__file__)
 
 -- RST
--- .. function:: new_trainingsite_type(table)
+-- .. function:: new_trainingsite_type{table}
 --
 --    This function adds the definition of a training site building to the engine.
 --
 --    :arg table: This table contains all the data that the game engine will add to this building.
---                It contains everything that a productionsite contains, plus the following entries:
---
---    **soldier_capacity**: An int describing how many soldiers this building can house.
---
---    **trainer_patience**: An int describing how patient the trainer is.
---    If trainer patience runs out, a soldier will be kicked out.
---
---    **soldier attack**: A table describing what is needed to train a soldier in attack.
---    It contains the following entries:
---
---        *min_level*: The minimum attack level that a soldier needs before it
---        can be trained in attack at this training site.
---
---        *max_level*: The maximum level of attack that a soldier can be trained in.
---
---        *food*: A table with the types food needed to train a soldier in attack.
---        It contains subtables with alternatives, e.g. ``{"fish", "meat"}``
---        means that fish OR meat is needed, ``{"fish"}, {"meat"}`` means that fish
---        AND meat are needed.
---
---        *weapons*: A table with the list of weapons that are used for attack
---        training at the various levels.
---
---   **soldier defense**: Just like ``soldier attack``, but for defense training
---
---   **soldier health**: Just like ``soldier attack``, but for health training
---
---   **soldier evade**: Just like ``soldier attack``, but for evade training
+--                It is a special type of production site, so it has all the entries that :ref:`lua_tribes_buildings_productionsites` can have, plus the following entries:
+--
+--    **soldier_capacity**
+--        *Mandatory*. An int describing how many soldiers this building can house.
+--
+--    **trainer_patience**
+--        *Mandatory*. An int describing how patient the trainer is.
+--        If trainer patience runs out, a soldier will be kicked out.
+--
+--    **soldier attack**
+--        *Optional*. A table describing what is needed to train a soldier in attack.
+--        It contains the following entries:
+--
+--        **min_level**
+--            *Mandatory*. The minimum attack level that a soldier needs before it
+--            can be trained in attack at this training site.
+--
+--        **max_level**
+--            *Mandatory*. The maximum level of attack that a soldier can be trained in.
+--
+--        **food**
+--            *Optional*. A table with the types of food needed to train a
+--            soldier in attack. It contains subtables with alternatives, e.g.
+--            ``{"fish", "meat"}`` means that fish OR meat is needed,
+--            ``{"fish"}, {"meat"}`` means that fish AND meat are needed.
+--
+--        **weapons**
+--            *Optional*. A table with the list of weapons that are used for
+--            attack training at the various levels.
+--
+--        Example::
+--
+--            ["soldier attack"] = {
+--                min_level = 0,
+--                max_level = 3,
+--                food = {
+--                    {"smoked_fish", "smoked_meat"},
+--                    {"atlanteans_bread"}
+--                },
+--                weapons = {
+--                    "trident_long",
+--                    "trident_steel",
+--                    "trident_double",
+--                    "trident_heavy_double"
+--                }
+--            },
+--
+--    **soldier defense**
+--            *Optional*. Just like ``soldier attack``, but for defense training.
+--
+--    **soldier health**
+--            *Optional*. Just like ``soldier attack``, but for health training.
+--
+--    **soldier evade**
+--            *Optional*. Just like ``soldier attack``, but for evade training.
 --
 tribes:new_trainingsite_type {
    msgctxt = "atlanteans_building",

=== modified file 'data/tribes/buildings/warehouses/atlanteans/headquarters/init.lua'
--- data/tribes/buildings/warehouses/atlanteans/headquarters/init.lua	2016-09-22 16:45:02 +0000
+++ data/tribes/buildings/warehouses/atlanteans/headquarters/init.lua	2016-10-18 09:09:00 +0000
@@ -1,4 +1,6 @@
 -- RST
+-- .. _lua_tribes_buildings_warehouses:
+--
 -- Headquarters, Warehouses and Ports
 -- ----------------------------------
 --
@@ -17,43 +19,27 @@
 dirname = path.dirname(__file__)
 
 -- RST
--- .. function:: new_warehouse_type(table)
+-- .. function:: new_warehouse_type{table}
 --
 --    This function adds the definition of a warehouse building to the engine.
 --
 --    :arg table: This table contains all the data that the game engine will add to this building.
---                It contains the following entries:
---
---    **msgctxt**: The context that Gettext will use to disambiguate the translations for strings in this table.
---
---    **name**: A string containing the internal name of this building.
---
---    **descname**: The translatable display name. Use ``pgettext`` with the ``msgctxt`` above to fetch the string.
---
---    **helptext_script**: The full path to the ``helptexts.lua`` script for this building.
---
---    **icon**: The full path to the menu icon for this building.
---
---    **size**: The size of this building: ``"small"``, ``"medium"``, ``"big"`` or ``"port"``.
---
---    **destructible**: Set this to ``false`` for headquarters, leave blank otherwise.
---
---    **buildcost**: A table with the wares used to build this building, containing warename - amount pairs, e.g. ``buildcost = { log = 4, granite = 2 }``. If this table isn't defined, the building will be a headquarters.
---
---    **return_on_dismantle**: The wares that this building will give back to the player when it is dismantled, e.g. ``buildcost = { log = 2, granite = 1 }``. If this table isn't defined, the building will be a headquarters.
---
---    **enhancement_cost**: The wares needed to upgrade this building, e.g. ``enhancement_cost = { log = 1, granite = 1 }``. If this table isn't defined, the building will be a headquarters.
---
---    **return_on_dismantle_on_enhanced**: The wares that this enhanced building will give back to the player when it is dismantled, e.g. ``return_on_dismantle_on_enhanced = { granite = 1 }``. If this table isn't defined, the building will be a headquarters.
---
---    **animations**: A table containing all animations for this building.
---
---    **aihints**: A list of name - value pairs with hints for the AI.
---
---    **heal_per_second**: The number of health points that a garrisoned soldier will heal each second.
---
---    **conquers**: The conquer radius for this building. This is used for headquarters and ports.
---
+--                In addition to the :ref:`lua_tribes_buildings_common`, it contains the following entries:
+--
+--    **size**
+--        *Mandatory*. In addition to the common size values ``"small"``,
+--        ``"medium"``, or ``"big"``, warehouses can also have size ``"port"``
+--        for defining a port building.
+--
+--    **heal_per_second**
+--        *Mandatory*. The number of health points that a garrisoned soldier will heal each second.
+--
+--    **conquers**
+--        *Optional. Default:* ``0``. The conquer radius for this building.
+--
+--    **destructible**
+--        *Optional. Default:* ``true``. Set this to ``false`` for headquarters.
+
 tribes:new_warehouse_type {
    msgctxt = "atlanteans_building",
    name = "atlanteans_headquarters",

=== modified file 'data/tribes/immovables/ashes/init.lua'
--- data/tribes/immovables/ashes/init.lua	2016-09-26 11:37:54 +0000
+++ data/tribes/immovables/ashes/init.lua	2016-10-18 09:09:00 +0000
@@ -1,4 +1,6 @@
 -- RST
+-- .. _lua_tribes_immovables:
+--
 -- Tribe Immovables
 -- ----------------
 --

=== modified file 'data/tribes/scripting/help/global_helptexts.lua'
--- data/tribes/scripting/help/global_helptexts.lua	2016-09-01 15:23:25 +0000
+++ data/tribes/scripting/help/global_helptexts.lua	2016-10-18 09:09:00 +0000
@@ -3,6 +3,8 @@
 --  =======================================================
 
 -- RST
+-- .. _lua_tribes_global_helptexts.lua:
+--
 -- global_helptexts.lua
 -- --------------------
 --

=== modified file 'data/tribes/ships/atlanteans/init.lua'
--- data/tribes/ships/atlanteans/init.lua	2016-09-26 11:37:54 +0000
+++ data/tribes/ships/atlanteans/init.lua	2016-10-18 09:09:00 +0000
@@ -1,4 +1,6 @@
 -- RST
+-- .. _lua_tribes_ships:
+--
 -- Ships
 -- -----
 --

=== modified file 'data/tribes/wares/armor/init.lua'
--- data/tribes/wares/armor/init.lua	2016-09-22 16:45:48 +0000
+++ data/tribes/wares/armor/init.lua	2016-10-18 09:09:00 +0000
@@ -1,4 +1,6 @@
 -- RST
+-- .. _lua_tribes_wares:
+--
 -- Wares
 -- -----
 --

=== modified file 'doc/sphinx/extract_rst.py'
--- doc/sphinx/extract_rst.py	2016-09-22 16:45:48 +0000
+++ doc/sphinx/extract_rst.py	2016-10-18 09:09:00 +0000
@@ -36,17 +36,17 @@
     ('data/tribes/scripting/mapobject_info', '', 'lua_tribes_other'),
     ('data/tribes/scripting/help', '', 'lua_tribes_other'),
     ('data/tribes/buildings/militarysites/atlanteans/castle',
-     'militarysite', 'lua_tribes_units'),
+     'militarysite', 'lua_tribes_buildings'),
     ('data/tribes/buildings/productionsites/atlanteans/armorsmithy',
-     'productionsite', 'lua_tribes_units'),
+     'productionsite', 'lua_tribes_buildings'),
     ('data/tribes/buildings/trainingsites/atlanteans/dungeon',
-     'trainingsite', 'lua_tribes_units'),
+     'trainingsite', 'lua_tribes_buildings'),
     ('data/tribes/buildings/warehouses/atlanteans/headquarters',
-     'warehouse', 'lua_tribes_units'),
+     'warehouse', 'lua_tribes_buildings'),
     ('data/tribes/buildings/partially_finished/constructionsite',
-     'constructionsite', 'lua_tribes_units'),
+     'constructionsite', 'lua_tribes_buildings'),
     ('data/tribes/buildings/partially_finished/dismantlesite',
-     'dismantlesite', 'lua_tribes_units'),
+     'dismantlesite', 'lua_tribes_buildings'),
      ('data/tribes/immovables/ashes',
      'immovables', 'lua_tribes_units'),
      ('data/tribes/ships/atlanteans',

=== added file 'doc/sphinx/source/animations.rst'
--- doc/sphinx/source/animations.rst	1970-01-01 00:00:00 +0000
+++ doc/sphinx/source/animations.rst	2016-10-18 09:09:00 +0000
@@ -0,0 +1,34 @@
+Animations
+==========
+
+Animations are defined as Lua tables. They look like this::
+
+   animations = {
+      idle = {
+         pictures = path.list_files(path.dirname(__file__) .. "idle_??.png"),
+         hotspot = { 5, 7 },
+         fps = 4,
+         sound_effect = {
+            directory = "sound/foo",
+            name = "bar",
+         },
+      },
+      working = ...
+   }
+
+Let's have a detailed look at the ``idle`` animation:
+
+idle
+   *Mandatory*. This is the name of the animation. It can be referenced by this name e.g. if you want to call it in a production program.
+
+pictures
+   *Mandatory*. A template for the image names. Our example will pick up any image from ``idle_00.png`` through ``idle_99.png`` in the specified directory path – the current path in our example. These images can optionally have corresponding player color mask images called ``idle_00_pc.png`` through ``idle_99_pc.png``.
+
+hotspot
+   *Mandatory*. The x, y coordinates for adjusting the placement of the animation. Increase ``x`` to shift the animation to the left and ``y`` to shift it upwards.
+
+fps
+   *Optional*. The frames per second for this animation if you want to deviate from the default fps. Do not specify this value if you have only 1 animation frame.
+
+sound_effect
+   *Optional*. Our example will look for the sound files ``bar_00.ogg`` through ``bar_99.ogg`` in the directory ``data/sound/foo`` and play them in sequence.

=== modified file 'doc/sphinx/source/lua_tribes.rst'
--- doc/sphinx/source/lua_tribes.rst	2016-09-01 18:32:58 +0000
+++ doc/sphinx/source/lua_tribes.rst	2016-10-18 09:09:00 +0000
@@ -1,3 +1,5 @@
+.. _lua_tribes:
+
 Scripts for Tribes
 ==================
 

=== added file 'doc/sphinx/source/lua_tribes_buildings.rst.org'
--- doc/sphinx/source/lua_tribes_buildings.rst.org	1970-01-01 00:00:00 +0000
+++ doc/sphinx/source/lua_tribes_buildings.rst.org	2016-10-18 09:09:00 +0000
@@ -0,0 +1,142 @@
+Buildings
+=========
+
+Buildings are defined in their ``init.lua`` file. They also have a corresponding ``helptexts.lua`` file that contains their help texts.
+
+Types of Buildings
+------------------
+
+Widelands knows about the following types of buildings:
+
+.. toctree::
+   :maxdepth: 3
+
+REPLACE_ME
+
+.. _lua_tribes_buildings_common:
+
+Common Building Properties
+--------------------------
+
+Buildings are defined with Lua functions called ``new_<building_type>_type{table}``. The contents of ``table`` depend on the type of building that you are defining. The common properties shared by all buildings are:
+
+
+**msgctxt**
+    *Mandatory*. The context that Gettext will use to disambiguate the translations for
+    strings in this table, e.g.::
+
+        msgctxt = "atlanteans_building",
+
+**name**
+    *Mandatory*. A string containing the internal name of this building, e.g.::
+
+        name = "atlanteans_fortress",
+
+**descname**
+    *Mandatory*. The translatable display name. Use ``pgettext`` with the ``msgctxt``
+    above to fetch the string, e.g.::
+
+        descname = pgettext("atlanteans_building", "Fortress"),
+
+**helptext_script**
+    *Mandatory*. The full path to the ``helptexts.lua`` script for this building.
+
+**icon**
+    *Mandatory*. The full path to the menu icon for this building.
+
+**size**
+    *Mandatory*. The size of this building: ``"small"``, ``"medium"``, or ``"big"``.
+
+**vision_range**
+    *Optional. Default:* ``0``. The size of the radius that the building sees.
+
+**buildcost**
+    *Optional*. A table with the wares used to build this building, containing
+    warename - amount pairs, e.g.::
+
+        buildcost = { log = 4, granite = 2 }
+
+    When ``buildcost`` is defined, you also need to define ``return_on_dismantle``.
+
+**return_on_dismantle**
+    *Optional*. The wares that this building will give back to the player when it is
+    dismantled, e.g.::
+
+        buildcost = { log = 2, granite = 1 }
+
+**enhancement**
+    *Optional*. The name of a building that this building can be enhanced to, e.g.::
+
+        enhancement = "atlanteans_fancy_building",
+
+    If ``enhancement`` is defined, the building that this building enhances
+    to will need to define ``enhancement_cost`` and
+    ``return_on_dismantle_on_enhanced``.
+
+**enhancement_cost**
+    *Optional*. The wares needed to upgrade this building, e.g.::
+
+        enhancement_cost = { log = 1, granite = 1 }
+
+**return_on_dismantle_on_enhanced**
+    *Optional*. The wares that this enhanced building will give back to the player
+    when it is dismantled, e.g.::
+
+        return_on_dismantle_on_enhanced = { granite = 1 }
+
+**animations**
+    *Mandatory*. A table containing all animations for this building. Every building
+    needs to have an ``idle`` animation. Other animations that a building
+    can have are ``build``, ``working``, ``unoccupied``. Mines also have
+    an ``unoccupied`` animation.
+    See :doc:`animations` for a detailed description of the animation format.
+
+**needs_seafaring**
+    *Optional. Default:* ``false``. Set to ``true`` if this building will only be available on seafaring maps.
+
+**aihints**
+    *Mandatory*. A list of name - value pairs with hints for the AI. Can be empty.
+
+
+Help Texts
+----------
+
+Each building has a ``helptexts.lua`` script, which is located in the same directory as its ``init.lua`` script.
+The functions in this file return texts that are used for buildings by the Tribal Encyclopedia.
+
+See also the helper functions in :ref:`lua_tribes_global_helptexts.lua`.
+
+
+.. function:: building_helptext_lore()
+
+   Returns a localized string with a lore helptext for this building.
+   If you don't have a lore text yet, use ``no_lore_text_yet()`` from the ``lua_tribes_global_helptexts.lua`` script.
+
+
+.. function:: building_helptext_lore_author()
+
+   Returns a localized string with a fictional author for the lore helptext for this building. The returned string can be empty.
+   If you don't have an author yet, use ``no_lore_author_text_yet()`` from the :ref:`lua_tribes_global_helptexts.lua` script.
+
+   :returns: Localized lore text
+
+
+.. function:: building_helptext_purpose()
+
+   Returns a localized string with a purpose helptext for this building. This should be individually defined for all buildings. You can use ``no_purpose_text_yet()`` from the :ref:`lua_tribes_global_helptexts.lua` script if you're not ready to define this yet.
+
+   :returns: Localized purpose text
+
+
+.. function:: building_helptext_note()
+
+   Returns a localized string with a note that is added to the purpose. This can be empty.
+
+   :returns: Localized note text or empty string.
+
+
+.. function:: building_helptext_performance()
+
+   Returns a localized string with a performance helptext for this building. You can use ``no_purpose_text_yet()`` from the :ref:`lua_tribes_global_helptexts.lua` script if the performance hasn't been calculated yet. Leave empty when this isn't applicable (e.g. for militarysites or warehouses).
+
+   :returns: Localized performance text or empty string.

=== modified file 'doc/sphinx/source/lua_tribes_units.rst.org'
--- doc/sphinx/source/lua_tribes_units.rst.org	2016-09-01 18:32:58 +0000
+++ doc/sphinx/source/lua_tribes_units.rst.org	2016-10-18 09:09:00 +0000
@@ -15,4 +15,5 @@
 .. toctree::
    :maxdepth: 3
 
+   autogen_toc_lua_tribes_buildings
 REPLACE_ME

=== added file 'doc/sphinx/source/map_objects.rst'
--- doc/sphinx/source/map_objects.rst	1970-01-01 00:00:00 +0000
+++ doc/sphinx/source/map_objects.rst	2016-10-18 09:09:00 +0000
@@ -0,0 +1,9 @@
+World and Tribes
+================
+
+.. toctree::
+   :maxdepth: 3
+
+   animations
+   autogen_toc_lua_world
+   lua_tribes

=== modified file 'doc/sphinx/source/reference.rst'
--- doc/sphinx/source/reference.rst	2016-09-01 18:32:58 +0000
+++ doc/sphinx/source/reference.rst	2016-10-18 09:09:00 +0000
@@ -5,6 +5,5 @@
    :maxdepth: 3
 
    core
-   autogen_toc_lua_world
-   lua_tribes
+   map_objects
    autogen_toc_auxiliary

=== modified file 'src/logic/map_objects/immovable.cc'
--- src/logic/map_objects/immovable.cc	2016-08-04 15:49:05 +0000
+++ src/logic/map_objects/immovable.cc	2016-10-18 09:09:00 +0000
@@ -266,6 +266,9 @@
 
 /**
  * Parse a tribes immovable from its init file.
+ *
+ * The contents of 'table' are documented in
+ * /data/tribes/immovables/ashes/init.lua
  */
 ImmovableDescr::ImmovableDescr(const std::string& init_descname,
                                const LuaTable& table,

=== modified file 'src/logic/map_objects/tribes/building.cc'
--- src/logic/map_objects/tribes/building.cc	2016-08-04 15:49:05 +0000
+++ src/logic/map_objects/tribes/building.cc	2016-10-18 09:09:00 +0000
@@ -50,7 +50,9 @@
 namespace Widelands {
 
 static const int32_t BUILDING_LEAVE_INTERVAL = 1000;
-
+/**
+  * The contents of 'table' are documented in doc/sphinx/source/lua_tribes_buildings.rst.org
+  */
 BuildingDescr::BuildingDescr(const std::string& init_descname,
                              const MapObjectType init_type,
                              const LuaTable& table,

=== modified file 'src/logic/map_objects/tribes/constructionsite.cc'
--- src/logic/map_objects/tribes/constructionsite.cc	2016-08-04 15:49:05 +0000
+++ src/logic/map_objects/tribes/constructionsite.cc	2016-10-18 09:09:00 +0000
@@ -41,6 +41,10 @@
 
 namespace Widelands {
 
+/**
+  * The contents of 'table' are documented in
+  * /data/tribes/buildings/partially_finished/constructionsite/init.lua
+  */
 ConstructionSiteDescr::ConstructionSiteDescr(const std::string& init_descname,
                                              const LuaTable& table,
                                              const EditorGameBase& egbase)

=== modified file 'src/logic/map_objects/tribes/dismantlesite.cc'
--- src/logic/map_objects/tribes/dismantlesite.cc	2016-08-04 15:49:05 +0000
+++ src/logic/map_objects/tribes/dismantlesite.cc	2016-10-18 09:09:00 +0000
@@ -39,6 +39,11 @@
 
 namespace Widelands {
 
+/**
+  * The contents of 'table' are documented in
+  * /data/tribes/buildings/partially_finished/dismantlesite/init.lua
+  */
+
 DismantleSiteDescr::DismantleSiteDescr(const std::string& init_descname,
                                        const LuaTable& table,
                                        const EditorGameBase& egbase)

=== modified file 'src/logic/map_objects/tribes/militarysite.cc'
--- src/logic/map_objects/tribes/militarysite.cc	2016-08-04 15:49:05 +0000
+++ src/logic/map_objects/tribes/militarysite.cc	2016-10-18 09:09:00 +0000
@@ -43,6 +43,10 @@
 
 namespace Widelands {
 
+/**
+  * The contents of 'table' are documented in
+  * /data/tribes/buildings/militarysites/atlanteans/castle/init.lua
+  */
 MilitarySiteDescr::MilitarySiteDescr(const std::string& init_descname,
                                      const LuaTable& table,
                                      const EditorGameBase& egbase)

=== modified file 'src/logic/map_objects/tribes/productionsite.cc'
--- src/logic/map_objects/tribes/productionsite.cc	2016-09-02 11:48:37 +0000
+++ src/logic/map_objects/tribes/productionsite.cc	2016-10-18 09:09:00 +0000
@@ -53,6 +53,10 @@
 ==============================================================================
 */
 
+/**
+  * The contents of 'table' are documented in
+  * /data/tribes/buildings/productionsites/atlanteans/armorsmithy/init.lua
+  */
 ProductionSiteDescr::ProductionSiteDescr(const std::string& init_descname,
                                          const std::string& msgctxt,
                                          MapObjectType init_type,

=== modified file 'src/logic/map_objects/tribes/ship.cc'
--- src/logic/map_objects/tribes/ship.cc	2016-09-07 09:30:49 +0000
+++ src/logic/map_objects/tribes/ship.cc	2016-10-18 09:09:00 +0000
@@ -105,6 +105,10 @@
 
 }  // namespace
 
+/**
+ * The contents of 'table' are documented in
+ * /data/tribes/ships/atlanteans/init.lua
+ */
 ShipDescr::ShipDescr(const std::string& init_descname, const LuaTable& table)
    : BobDescr(init_descname, MapObjectType::SHIP, MapObjectDescr::OwnerType::kTribe, table) {
 

=== modified file 'src/logic/map_objects/tribes/trainingsite.cc'
--- src/logic/map_objects/tribes/trainingsite.cc	2016-08-04 15:49:05 +0000
+++ src/logic/map_objects/tribes/trainingsite.cc	2016-10-18 09:09:00 +0000
@@ -41,6 +41,10 @@
 
 const uint32_t TrainingSite::training_state_multiplier_ = 12;
 
+/**
+  * The contents of 'table' are documented in
+  * /data/tribes/buildings/trainingsites/atlanteans/dungeon/init.lua
+  */
 TrainingSiteDescr::TrainingSiteDescr(const std::string& init_descname,
                                      const LuaTable& table,
                                      const EditorGameBase& egbase)

=== modified file 'src/logic/map_objects/tribes/tribe_descr.cc'
--- src/logic/map_objects/tribes/tribe_descr.cc	2016-08-04 15:49:05 +0000
+++ src/logic/map_objects/tribes/tribe_descr.cc	2016-10-18 09:09:00 +0000
@@ -51,6 +51,10 @@
 
 namespace Widelands {
 
+/**
+  * The contents of 'table' are documented in
+  * /data/tribes/atlanteans.lua
+  */
 TribeDescr::TribeDescr(const LuaTable& table, const TribeBasicInfo& info, const Tribes& init_tribes)
    : name_(table.get_string("name")), descname_(info.descname), tribes_(init_tribes) {
 

=== modified file 'src/logic/map_objects/tribes/ware_descr.cc'
--- src/logic/map_objects/tribes/ware_descr.cc	2016-08-04 15:49:05 +0000
+++ src/logic/map_objects/tribes/ware_descr.cc	2016-10-18 09:09:00 +0000
@@ -31,6 +31,10 @@
 
 namespace Widelands {
 
+/**
+ * The contents of 'table' are documented in
+ * /data/tribes/wares/armor/init.lua
+ */
 WareDescr::WareDescr(const std::string& init_descname, const LuaTable& table)
    : MapObjectDescr(MapObjectType::WARE, table.get_string("name"), init_descname, table) {
 

=== modified file 'src/logic/map_objects/tribes/warehouse.cc'
--- src/logic/map_objects/tribes/warehouse.cc	2016-08-04 15:49:05 +0000
+++ src/logic/map_objects/tribes/warehouse.cc	2016-10-18 09:09:00 +0000
@@ -231,6 +231,10 @@
 ==============================
 */
 
+/**
+  * The contents of 'table' are documented in
+  * /data/tribes/buildings/warehouses/atlanteans/headquarters/init.lua
+  */
 WarehouseDescr::WarehouseDescr(const std::string& init_descname,
                                const LuaTable& table,
                                const EditorGameBase& egbase)

=== modified file 'src/scripting/lua_root.cc'
--- src/scripting/lua_root.cc	2016-08-04 15:49:05 +0000
+++ src/scripting/lua_root.cc	2016-10-18 09:09:00 +0000
@@ -518,8 +518,8 @@
 
 .. class:: Tribes
 
-   This offers access to the objects available for the tribes and allows to add
-   new objects.
+	This offers access to the objects available for the tribes and allows to add
+	new objects. See :ref:`lua_tribes` for detailed documentation.
 */
 
 const char LuaTribes::className[] = "Tribes";
@@ -568,12 +568,13 @@
  */
 
 /* RST
-   .. method:: new_constructionsite_type(table)
-
-      Adds a new constructionsite building type. Takes a single argument, a table with
-      the descriptions. See the files in tribes/ for usage examples.
-
-      :returns: :const:`nil`
+	.. method:: new_constructionsite_type{table}
+
+		Adds a new constructionsite building type. Takes a single argument, a table with
+		the descriptions. See :ref:`lua_tribes_buildings_constructionsites` for detailed
+		documentation.
+
+		:returns: :const:`0`
 */
 int LuaTribes::new_constructionsite_type(lua_State* L) {
 	if (lua_gettop(L) != 2) {
@@ -591,12 +592,13 @@
 }
 
 /* RST
-   .. method:: new_dismantlesite_type(table)
-
-      Adds a new disnamtlesite building type. Takes a single argument, a table with
-      the descriptions. See the files in tribes/ for usage examples.
-
-      :returns: :const:`nil`
+	.. method:: new_dismantlesite_type{table}
+
+		Adds a new disnamtlesite building type. Takes a single argument, a table with
+		the descriptions. See :ref:`lua_tribes_buildings_dismantlesites` for detailed
+		documentation.
+
+		:returns: :const:`0`
 */
 int LuaTribes::new_dismantlesite_type(lua_State* L) {
 	if (lua_gettop(L) != 2) {
@@ -614,12 +616,13 @@
 }
 
 /* RST
-   .. method:: new_militarysite_type(table)
-
-      Adds a new militarysite building type. Takes a single argument, a table with
-      the descriptions. See the files in tribes/ for usage examples.
-
-      :returns: :const:`nil`
+	.. method:: new_militarysite_type{table}
+
+		Adds a new militarysite building type. Takes a single argument, a table with
+		the descriptions. See :ref:`lua_tribes_buildings_militarysites` for detailed
+		documentation.
+
+		:returns: :const:`0`
 */
 int LuaTribes::new_militarysite_type(lua_State* L) {
 	if (lua_gettop(L) != 2) {
@@ -637,12 +640,13 @@
 }
 
 /* RST
-   .. method:: new_productionsite_type(table)
-
-      Adds a new productionsite building type. Takes a single argument, a table with
-      the descriptions. See the files in tribes/ for usage examples.
-
-      :returns: :const:`nil`
+	.. method:: new_productionsite_type{table}
+
+		Adds a new productionsite building type. Takes a single argument, a table with
+		the descriptions. See :ref:`lua_tribes_buildings_productionsites` for detailed
+		documentation.
+
+		:returns: :const:`0`
 */
 int LuaTribes::new_productionsite_type(lua_State* L) {
 	if (lua_gettop(L) != 2) {
@@ -660,12 +664,13 @@
 }
 
 /* RST
-   .. method:: new_trainingsite_type(table)
-
-      Adds a new trainingsite building type. Takes a single argument, a table with
-      the descriptions. See the files in tribes/ for usage examples.
-
-      :returns: :const:`nil`
+	.. method:: new_trainingsite_type{table}
+
+		Adds a new trainingsite building type. Takes a single argument, a table with
+		the descriptions. See :ref:`lua_tribes_buildings_trainingsites` for detailed
+		documentation.
+
+		:returns: :const:`0`
 */
 int LuaTribes::new_trainingsite_type(lua_State* L) {
 	if (lua_gettop(L) != 2) {
@@ -683,12 +688,13 @@
 }
 
 /* RST
-   .. method:: new_warehouse_type(table)
-
-      Adds a new warehouse building type. Takes a single argument, a table with
-      the descriptions. See the files in tribes/ for usage examples.
-
-      :returns: :const:`nil`
+	.. method:: new_warehouse_type{table}
+
+		Adds a new warehouse building type. Takes a single argument, a table with
+		the descriptions. See :ref:`lua_tribes_buildings_warehouses` for detailed
+		documentation.
+
+		:returns: :const:`0`
 */
 int LuaTribes::new_warehouse_type(lua_State* L) {
 	if (lua_gettop(L) != 2) {
@@ -706,12 +712,13 @@
 }
 
 /* RST
-   .. method:: new_immovable_type(table)
-
-      Adds a new immovable type. Takes a single argument, a table with
-      the descriptions. See the files in tribes/ for usage examples.
-
-      :returns: :const:`nil`
+	.. method:: new_immovable_type{table}
+
+		Adds a new immovable type. Takes a single argument, a table with
+		the descriptions. See :ref:`lua_tribes_immovables` for detailed
+		documentation.
+
+		:returns: :const:`0`
 */
 int LuaTribes::new_immovable_type(lua_State* L) {
 	if (lua_gettop(L) != 2) {
@@ -728,12 +735,13 @@
 }
 
 /* RST
-   .. method:: new_ship_type(table)
-
-      Adds a new ship type. Takes a single argument, a table with
-      the descriptions. See the files in tribes/ for usage examples.
-
-      :returns: :const:`nil`
+	.. method:: new_ship_type{table}
+
+		Adds a new ship type. Takes a single argument, a table with
+		the descriptions. See :ref:`lua_tribes_ships` for detailed
+		documentation.
+
+		:returns: :const:`0`
 */
 int LuaTribes::new_ship_type(lua_State* L) {
 	if (lua_gettop(L) != 2) {
@@ -750,12 +758,13 @@
 }
 
 /* RST
-   .. method:: new_ware_type(table)
-
-      Adds a new ware type. Takes a single argument, a table with
-      the descriptions. See the files in tribes/ for usage examples.
-
-      :returns: :const:`nil`
+	.. method:: new_ware_type{table}
+
+		Adds a new ware type. Takes a single argument, a table with
+		the descriptions. See :ref:`lua_tribes_wares` for detailed
+		documentation.
+
+		:returns: :const:`0`
 */
 int LuaTribes::new_ware_type(lua_State* L) {
 	if (lua_gettop(L) != 2) {
@@ -772,12 +781,12 @@
 }
 
 /* RST
-   .. method:: new_carrier_type(table)
-
-      Adds a new carrier worker type. Takes a single argument, a table with
-      the descriptions. See the files in tribes/ for usage examples.
-
-      :returns: :const:`nil`
+	.. method:: new_carrier_type{table}
+
+		Adds a new carrier worker type. Takes a single argument, a table with
+		the descriptions. See the files in tribes/ for usage examples.
+
+		:returns: :const:`nil`
 */
 int LuaTribes::new_carrier_type(lua_State* L) {
 	if (lua_gettop(L) != 2) {
@@ -795,12 +804,12 @@
 }
 
 /* RST
-   .. method:: new_soldier_type(table)
-
-      Adds a new soldier worker type. Takes a single argument, a table with
-      the descriptions. See the files in tribes/ for usage examples.
-
-      :returns: :const:`nil`
+	.. method:: new_soldier_type{table}
+
+		Adds a new soldier worker type. Takes a single argument, a table with
+		the descriptions. See the files in tribes/ for usage examples.
+
+		:returns: :const:`nil`
 */
 int LuaTribes::new_soldier_type(lua_State* L) {
 	if (lua_gettop(L) != 2) {
@@ -818,12 +827,12 @@
 }
 
 /* RST
-   .. method:: new_worker_type(table)
-
-      Adds a new worker type. Takes a single argument, a table with
-      the descriptions. See the files in tribes/ for usage examples.
-
-      :returns: :const:`nil`
+	.. method:: new_worker_type{table}
+
+		Adds a new worker type. Takes a single argument, a table with
+		the descriptions. See the files in tribes/ for usage examples.
+
+		:returns: :const:`nil`
 */
 int LuaTribes::new_worker_type(lua_State* L) {
 	if (lua_gettop(L) != 2) {
@@ -841,12 +850,13 @@
 }
 
 /* RST
-   .. method:: new_tribe(table)
-
-      Adds a new tribe. Takes a single argument, a table with
-      the descriptions. See the files in tribes/ for usage examples.
-
-      :returns: :const:`nil`
+	.. method:: new_tribe{table}
+
+		Adds a new tribe. Takes a single argument, a table with
+		the descriptions. See :ref:`lua_tribes_<tribename>.lua` for detailed
+		documentation.
+
+		:returns: :const:`0`
 */
 int LuaTribes::new_tribe(lua_State* L) {
 	if (lua_gettop(L) != 2) {


Follow ups