
; Modifying this file:
; You should not modify this file except to make bugfixes or
; for other "maintenance". If you want to make custom changes,
; you should create a new datadir subdirectory and copy this file
; into that directory, and then modify that copy. Then use the
; command "rulesetdir <mysubdir>" in the server to have freeciv
; use your new customized file.

; Note that the freeciv AI may not cope well with anything more
; than minor changes.

[datafile]
description = "Granularity tile_type data for Freeciv"
options = "+Freeciv-ruleset-3.3-Devel-2023.Feb.24"
format_version = 40

[control]
; Names for custom terrain flags. There can be up to 10 of these.
; name          = rule name; In some circumstances user may see this
;                 as part of some sentences, so try to make it descriptive
;                 and sensible.
; helptxt       = displayed in the help for terrains with this flag (optional)
;flags =
;  { "name", "helptxt"
;  }

; Names for custom extra flags. There can be up to 10 of these.
; name          = rule name; In some circumstances user may see this
;                 as part of some sentences, so try to make it descriptive
;                 and sensible.
; helptxt       = displayed in the help for extra types with this flag
;                 (optional)
;extra_flags =
;  { "name", "helptxt"
;  }

[parameters]

; Percentage of "land" tiles required to be adjacent to an ocean tile before
; it may be "reclaimed" into a land tile (0-101; 0=anywhere, 101=nowhere)
ocean_reclaim_requirement = 30

; Percentage of "ocean" tiles required to be adjacent to a land tile before
; it may be "channeled" into an ocean tile (0-101; 0=anywhere, 101=nowhere)
land_channel_requirement = 10

; Percentage of unfrozen tiles (no "Frozen" flag) required to be adjacent
; to a frozen tile before it can thaw (0-101; 0=anywhere, default 101=nowhere)
;thaw_requirement = 101

; Percentage of frozen tiles ("Frozen" flag) required to be adjacent to an
; unfrozen tile before it can freeze (0-101; 0=anywhere, default 101=nowhere)
;freeze_requirement = 101

; Bodies of water up to this size are considered freshwater lakes, if there is
; also terrain type(s) with flag "FreshWater" in the ruleset.
lake_max_size = 0

; How many native tiles first startunit must be able to reach.
; 0 to disable check.
min_start_native_area = 0

; How many fragments each movement point has.
; For example road movement costs are relative to this.
move_fragments = 60

; How many move_fragments IgTer unit movement costs
igter_cost = 40

; Whether diagonal movement has increased cost (no effect with hex topology)
; The cost increase is more accurate with larger values for move_fragments
pythagorean_diagonal = FALSE

; There is no resources in the middle of the oceans, only near coast
ocean_resources = FALSE

; /* <-- avoid gettext warnings
;
; The individual terrain types, one per section.
; Roughly sorted by identifier.
; The actual tag used (the * in [terrain_*]) must be unique for each terrain,
; and may be used in debug output when reading this file.
;
; Notes:
;
; name                 = translatable name as seen by user
; rule_name            = (optional) internal name for savegames, rulesets etc;
;                        if not present, "name" is used for this purpose too.
;                        Since the name used in savegames must not change, if
;                        you want to rename an item after a ruleset has been
;                        released, you should set "rule_name" to the original
;                        value of "name".
; graphic              = preferred graphic; Tilespec [tile_*] section
;                        with 'tag' matching this will be used.
; graphic_alt          = alternate graphic. When no tilespec 'tag' matching
;                        preferred graphic is not found, this will be used.
;                        Otherwise may be "-"
; graphic_alt2         = second alternate graphic, to be used when neither
;                        main tag nor first alternate tag is not found.
; identifier           = single-character identifier used in savegames. This
;                        must be unique for each terrain.
; class                = Terrain class terrain belongs to: "Land" or "Oceanic"
; movement_cost        = in whole movement points, not move_fragments;
;                        typically 1 to 3
; defense_bonus        = percent added to defense; typically 0% to 200%
; food                 = normal food production
; shield               = normal shield production
; trade                = normal trade production
; resources            = list of possible resources on this terrain
; resource_freq        = (optional) list of relative frequencies for each
;                        possible resource on this terrain. When specified,
;                        must be the same length as resource list.
;                        Otherwise, all resources occur with approximately
;                        equal frequency.
; road_food_incr_pct   = percent of road food_incr applied to this terrain
; road_shield_incr_pct = percent of road shield_incr applied to this terrain
; road_trade_incr_pct  = percent of road trade_incr applied to this terrain
; base_time            = time to build bases; if 0, cannot build any bases.
;                        Nonzero values only affect extras with build_time 0.
; road_time            = time to build roads; if 0, cannot build any roads.
;                        Nonzero values only affect extras with build_time 0.
; cultivate_result     = cultivate activity changes to that terrain
;                        'no' to disable cultivate
; cultivate_time       = time to cultivate
; plant_result         = plant activity changes to that terrain
;                        'no' to disable planting
; plant_time           = time to plant
; irrigation_food_incr = increment to food if tile is 100% irrigated
;                        (actual bonus controlled by Irrigation_Pct effect)
; irrigation_time      = time for 'irrigate' activity; if 0, cannot irrigate
;                        Nonzero values only affect extras with build_time 0.
;                        Such extras can modify time with build_time_factor.
; mining_shield_incr   = increment to shields if tile is 100% mined
;                        (actual bonus controlled by Mining_Pct effect)
; mining_time          = time for 'mine' activity; if 0, cannot mine
;                        Nonzero values only affect extras with build_time 0.
;                        Such extras can modify time with build_time_factor.
; transform_result     = result of transformation; one of:
;                        "no"  -- cannot transform
;                        terrain rule_name -- transformation changes to that
;                          terrain
; transform_time       = time to transform
; placing_time         = time for 'placing' an extra; if 0, cannot place
;                        Nonzero values only affect extras with build_time 0.
;                        Such extras can modify time with build_time_factor.
;                        Default is 1.
; pillage_time         = time to pillage extra from the tile (0 = impossible)
;                        Nonzero values only affect extras with removal_time 0.
; extra_settings       = table of extra specific settings
;   - "extra"            - Name of the extra
;   - "removal_time"     - Time for cleaning activities (0 = impossible)
;                          Nonzero values only affect extras with removal_time 0.
; animal               = unit type that can appear as animal on the terrain
; warmer_wetter_result = result of global warming for wet terrains; one of:
;                        "no"  -- no change; doesn''t count for warming
;                        "yes" -- no change; counts for warming
;                        terrain rule_name -- warming changes to that terrain
; warmer_drier_result  = result of global warming for dry terrains;
;                        see warmer_wetter_result
; cooler_wetter_result = result of nuclear winter for wet terrains;
;                        see warmer_wetter_result
; cooler_drier_result  = result of nuclear winter for dry terrains;
;                        see warmer_wetter_result
; native_to            = List of unit classes that can move here
; flags                = General flags for this terrain. List taken from the
;                        following, and/or any user flags defined above:
;   - NoBarbs          = Barbarians will not be spawned here.
;   - NoCities         = Cities may not be built or found on this terrain.
;   - Starter          = Players will only be started on "Starter" terrain.
;                        (Currently this cannot be Oceanic terrain.)
;   - CanHaveRiver     = Set to 1 if this terrain can have river on it (the
;                        actual chance of river generation is controlled
;                        separately).
;   - UnsafeCoast      = This terrain does not provide a safe coast for
;                        units with flag "CoastStrict"
;   - FreshWater       = This terrain is used for small bodies of water.
;                        If this becomes adjacent to non-FreshWater terrain,
;                        the whole contiguous FreshWater area will be flooded
;                        with the non-FreshWater terrain.
;   - NotGenerated     = Map generator never places this terrain type. It can
;                        be added from editor only, or by ingame events
;                        (lua scripting)
;   - NoZoc            = Units on this terrain are not generating or subject
;                        to zoc
;   - EnterBorders     = Borders on this terrain are not blocking peaceful
;                        units from entering and moving.
;   - Frozen           = Frozen/polar terrain. For water tiles, Frozen terrain
;                        is generated near poles. Conversion between frozen
;                        and unfrozen terrain can be controlled with
;                        thaw_requirement/freeze_requirement, and Frozen
;                        terrain is shown differently on the overview map.
; property_*           = specific property % values used by mapgen. Most
;                        terrains will have 0 for most values. Properties
;                        other than ocean_depth are only used for land tiles.
;  - mountainous       = degree to which this terrain is mountainous
;  - green             = how much life this terrain has
;  - foliage           = how much thick undergrowth the terrain has
;  - tropical          = how "tropical" the terrain is (high temperature)
;  - temperate         = how "temperate" the terrain is (med temperature)
;  - cold              = how "cold" the terrain is (low temperature)
;  - frozen            = how "frozen" the terrain is (very low temperature)
;                        (does not necessarily have to have the "Frozen" flag)
;  - wet               = how "wet" the terrain is (moisture)
;  - dry               = how "dry" the terrain is (moisture)
;  - ocean_depth       = the depth of an ocean, as a percentage
; color.r              = color of the terrain (red value)
; color.g              = color of the terrain (green value)
; color.b              = color of the terrain (blue value)
; helptext	       = optional help text string; should escape all raw
;		         newlines so that xgettext parsing works

[terrain_grassland]
name                 = _("Grassland")
graphic              = "grassland"
graphic_alt	     = "-"
graphic_alt2         = "-"
identifier	     = "g"
class                = "Land"
movement_cost        = 50
defense_bonus        = 0
food                 = 200
shield               = 0
trade                = 0
resources            = "Generic Resource"
road_food_incr_pct   = 0
road_shield_incr_pct = 0
road_trade_incr_pct  = 100
base_time            = 1
road_time            = 1
cultivate_result     = "no"
cultivate_time       = 0
plant_result         = "Forest"
plant_time           = 30
irrigation_food_incr = 100
irrigation_time      = 5
mining_shield_incr   = 0
mining_time          = 0
transform_result     = "no"
transform_time       = 0
placing_time         = 1
pillage_time         = 1
extra_settings       =
    { "extra", "removal_time"
    }
animal               = "None"
warmer_wetter_result = "no"
warmer_drier_result  = "no"
cooler_wetter_result = "no"
cooler_drier_result  = "no"
native_to            = "Land"
flags                = "Starter", "CanHaveRiver"
property_temperate   = 50
property_green       = 50
color.r              = 200
color.g              = 200
color.b              = 200
helptext	     = _("\
Grasslands afford exceptional agricultural opportunities.\
")

[terrain_forest]
name                 = _("Forest")
graphic              = "forest"
graphic_alt	     = "-"
graphic_alt2         = "-"
identifier	     = "f"
class                = "Land"
movement_cost        = 150
defense_bonus        = 30
food                 = 100
shield               = 100
trade                = 0
resources            = "Generic Resource"
road_food_incr_pct   = 0
road_shield_incr_pct = 0
road_trade_incr_pct  = 0
base_time            = 1
road_time            = 1
cultivate_result     = "Plains"
cultivate_time       = 30
plant_result         = "no"
plant_time           = 0
irrigation_food_incr = 0
irrigation_time      = 0
mining_shield_incr   = 0
mining_time          = 10
transform_result     = "no"
transform_time       = 0
placing_time         = 1
pillage_time         = 1
extra_settings       =
    { "extra", "removal_time"
    }
animal               = "None"
warmer_wetter_result = "no"
warmer_drier_result  = "no"
cooler_wetter_result = "no"
cooler_drier_result  = "no"
native_to            = "Land"
flags                = "CanHaveRiver"
property_temperate   = 50
property_foliage     = 50
color.r              = 43
color.g              = 107
color.b              = 19
helptext	     = _("\
Forest provides easily harvested resources.\
")

[terrain_mountains]
name                 = _("Mountains")
graphic              = "mountains"
graphic_alt	     = "-"
graphic_alt2         = "-"
identifier	     = "m"
class                = "Land"
movement_cost        = 500
defense_bonus        = 100
food                 = 0
shield               = 100
trade                = 0
resources            = "Iron"
road_food_incr_pct   = 0
road_shield_incr_pct = 0
road_trade_incr_pct  = 0
base_time            = 5
road_time            = 5
cultivate_result     = "no"
cultivate_time       = 0
plant_result         = "no"
plant_time           = 0
irrigation_food_incr = 0
irrigation_time      = 0
mining_shield_incr   = 100
mining_time          = 20
transform_result     = "no"
transform_time       = 0
placing_time         = 5
pillage_time         = 1
extra_settings       =
    { "extra", "removal_time"
    }
animal               = "None"
warmer_wetter_result = "no"
warmer_drier_result  = "no"
cooler_wetter_result = "no"
cooler_drier_result  = "no"
native_to            = "Land"
flags                = "CanHaveRiver"
property_mountainous = 75
color.r              = 129
color.g              = 127
color.b              = 118
helptext	     = _("\
Hard to farm. Hard to develop. Hard to pass.\
")

[terrain_plains]
name                 = _("Plains")
graphic              = "plains"
graphic_alt          = "-"
graphic_alt2         = "-"
identifier           = "p"
class                = "Land"
movement_cost        = 50
defense_bonus        = 0
food                 = 100
shield               = 50
trade                = 0
resources            = "Generic Resource"
road_food_incr_pct   = 0
road_shield_incr_pct = 0
road_trade_incr_pct  = 100
base_time            = 1
road_time            = 1
cultivate_result     = "no"
cultivate_time       = 0
plant_result         = "Forest"
plant_time           = 25
irrigation_food_incr = 100
irrigation_time      = 5
mining_shield_incr   = 0
mining_time          = 0
transform_result     = "Grassland"
transform_time       = 24
placing_time         = 1
pillage_time         = 1
extra_settings       =
    { "extra", "removal_time"
    }
animal               = "None"
warmer_wetter_result = "no"
warmer_drier_result  = "no"
cooler_wetter_result = "no"
cooler_drier_result  = "no"
native_to            = "Land"
flags                = "Starter", "CanHaveRiver"
property_green       = 50
property_temperate   = 50
color.r              = 122
color.g              = 156
color.b              = 46
helptext             = _("\
Plains are very broad, sparse regions, which makes trade slightly\
 inconvenient.\
")

[terrain_ocean]
name                 = _("Ocean")
graphic              = "coast"
graphic_alt	     = "-"
graphic_alt2         = "-"
identifier	     = " "
class                = "Oceanic"
movement_cost        = 50
defense_bonus        = 0
food                 = 100
shield               = 100
trade                = 0
resources            = "Generic Resource"
road_food_incr_pct   = 0
road_shield_incr_pct = 0
road_trade_incr_pct  = 100
base_time            = 0
road_time            = 0
cultivate_result     = "no"
cultivate_time       = 0
plant_result         = "no"
plant_time           = 0
irrigation_food_incr = 100
irrigation_time      = 5
mining_shield_incr   = 0
mining_time          = 0
transform_result     = "no"
transform_time       = 0
placing_time         = 1
pillage_time         = 1
extra_settings       =
    { "extra", "removal_time"
    }
animal               = "None"
warmer_wetter_result = "no"
warmer_drier_result  = "no"
cooler_wetter_result = "no"
cooler_drier_result  = "no"
native_to            = "ShallowSea"
;flags                =
property_ocean_depth = 10
color.r              = 50
color.g              = 50
color.b              = 230
helptext	     = _("\
Shallow Ocean usually exist only next to land.\
")

[terrain_deep_ocean]
name                 = _("Deep Ocean")
graphic              = "deep_ocean"
graphic_alt	     = "floor"
graphic_alt2         = "coast"
identifier	     = ":"
class                = "Oceanic"
movement_cost        = 50
defense_bonus        = 0
food                 = 100
shield               = 100
trade                = 0
resources            = "Generic Resource"
road_food_incr_pct   = 0
road_shield_incr_pct = 0
road_trade_incr_pct  = 100
base_time            = 0
road_time            = 0
cultivate_result     = "no"
cultivate_time       = 0
plant_result         = "no"
plant_time           = 0
irrigation_food_incr = 100
irrigation_time      = 5
mining_shield_incr   = 0
mining_time          = 0
transform_result     = "no"
transform_time       = 0
placing_time         = 1
pillage_time         = 1
extra_settings       =
    { "extra", "removal_time"
    }
animal               = "None"
warmer_wetter_result = "no"
warmer_drier_result  = "no"
cooler_wetter_result = "no"
cooler_drier_result  = "no"
;native_to            = ""
;flags                =
property_ocean_depth = 85
color.r              = 0
color.g              = 33
color.b              = 129
helptext	     = _("\
Deep Ocean usually exist further away from the land.\
")

; /* <-- avoid gettext warnings
;
; Resource types:
;
; The actual tag used (the * in [resource_*]) must be unique for each resource,
; and may be used in debug output when reading this file.
;
; Notes:
;
; extra                = name of the extra this resource section is part of
;                        (must have "Resource" in its causes)
; identifier           = single-character identifier used in old savegames. This
;                        must be unique for each resource, and changing it will
;                        break loading those old savegames.
; food                 = increased food production
; shield               = increased shield production
; trade                = increased trade production
;
; */ <-- avoid gettext warnings

[resource_iron]
extra       = "Iron"
food        = 0
shield      = 0
trade       = 0
identifier  = "/"

[resource_generic]
extra       = "Generic Resource"
food        = 0
shield      = 0
trade       = 100
identifier  = "g"

[extraui]

; Player visible names of the base gui types.

; ui_name_base_fortress refers to all bases that have gui_type "Fortress"
ui_name_base_fortress = _("?gui_type:Build Type A Base")

; ui_name_base_airbase refers to all bases that have gui_type "Airbase"
ui_name_base_airbase = _("?gui_type:Build Type B Base")

; /* <-- avoid gettext warnings
;
; Each extra, including bases, roads, and resource, must have a section here.
; Bases, roads, and resources have additional sections for their specific features.
;
;
; Extra types:
;
; name                    = translatable name as seen by user
; rule_name               = (optional) internal name for savegames, rulesets
;                           etc; if not present, "name" is used for this
;                           purpose too. Since the name used in savegames must
;                           not change, if you want to rename an item after a
;                           ruleset has been released, you should set
;                           "rule_name" to the original value of "name".
; category                = How UI should categorize this extra. One of
;                           "Infra", "Natural", "Nuisance", "Resource",
;                           or "Bonus"
; causes                  = events that can create extra type.
;                           "Irrigation", "Mine", "Hut", "Pollution", "Fallout",
;                           "Appear", "Resource", "Base", or "Road"
;                           (the last three require a corresponding
;                           [resource_*] / [base_*] / [road_*] section)
; rmcauses                = events that can remove extra type.
;                           "Clean", "Pillage", "Disappear", or "Enter"
; infracost               = Number of infrapoints it costs to place this
;                           extra. 0, the default, means extra cannot be placed.
; graphic                 = tag specifying preferred graphic
; graphic_alt             = tag for alternate graphic if preferred graphic is
;                           not present. Can use eg "-" for no alternate
;                           graphic
; activity_gfx            = tag specifying graphic for unit building extra
;                           This can be "None" to indicate that graphic sprite
;                           is not needed.
; act_gfx_alt             = tag for alternative graphic for unit building extra
; act_gfx_alt2            = tag for second alternative graphic for unit building extra
; rmact_gfx               = tag specifying graphic for unit removing extra
;                           This can be "None" to indicate that graphic sprite
;                           is not needed.
; rmact_gfx_alt           = tag for alternative graphic for unit removing extra
; rmact_gfx_alt2          = tag for second alternative graphic for unit removing extra
; reqs                    = requirements to build the extra (see effects.ruleset
;                           and README.effects for help on requirements)
; rmreqs                  = requirements to remove the extra
; appearance_reqs         = spontaneous appearance requirements
; disappearance_reqs      = spontaneous disappearance requirements
; visibility_req          = Tech a player needs to have to see the extra
;                           This affects visibility only, for all the rules
;                           extra is still there even if player can't see it.
; buildable               = Can extra be built? Defaults to TRUE if extra has
;                           any causes indicating it can result from worker
;                           activity.
;                           If extra is not buildable, it can appear in game
;                           only if placed in the editor, it's placed by
;                           map generator, or on city tile if the extra
;                           also has "AlwaysOnCityCenter" flag set.
; generated               = Can map generator place the extra? Applicable
;                           for Hut, Resource, and River extras.
; build_time              = how long it takes a unit to build this extra.
;                           Value of 0 (default) means that terrain- and
;                           build activity specific time is used instead.
; build_time_factor       = This setting take effect only if build_time is 0.
;                           Terrain and activity specific build time will be
;                           multiplied by this value (default 1)
; removal_time            = how long it takes a unit to remove this extra.
;                           Value of 0 (default) means that terrain- and
;                           removal activity specific time is used instead.
; removal_time_factor     = This setting take effect only if removal_time is 0.
;                           Terrain and activity specific removal time will be
;                           multiplied by this value (default 1)
; defense_bonus           = Percent added to defense when tile has the extra
;                           (default none)
; unit_seen               = How opponents see units inside this extra
;                           "Normal" - Units are seen normally (default)
;                           "Hidden" - Units are hidden from opponents
; appearance_chance       = If extra has cause "Appear" and other requirements
;                           for its appearance are fulfilled, this tells how big
;                           chance it has to appear each turn. The chance is 1/10000
;                           times this value.
; disappearance_chance    = If extra has rmcause "Disappear" and other requirements
;                           for its disappearance are fulfilled, this tells how big
;                           chance it has to disappear each turn. The chance is 1/10000
;                           times this value.
; native_to               = List of unit classes that are considered to
;                           be inside the extra when they are on same tile
; conflicts               = List of extras that cannot be on the same tile.
;                           Bases with non-zero border_sq automatically conflict
;                           with each other.
; hidden_by               = List of extra types that will make this extra
;                           type not to show on UI if both present.
; bridged_over            = List of extra types that, if present in tile, will prevent
;                           building this extra if can't be bridged over
; no_aggr_near_city       = When at least zero, units inside are not considered
;                           aggressive when there`s a friendly city within this distance
; flags
;   - "NativeTile"        = Native units consider tile native regardless of
;                           terrain
;   - "Refuel"            = Native units can use tile as refuel point
;   - "TerrChangeRemoves" = Extra gets removed when ever terrain changes even
;                           if target terrain could support it
;   - "AlwaysOnCityCenter" = City center tiles always have this extra type
;                           regardless of its other requirements
;   - "AutoOnCityCenter"  = City center tiles will automatically have this
;                           extra type if the player can build it
;   - "ConnectLand"       = Road style gfx on Oceanic tiles are drawn to
;                           connect to adjacent Land tiles even if they have
;                           no extra. This affects appearance only
;   - "GlobalWarming"     = Instances of this extra on map count towards
;                           Global Warming
;   - "NuclearWinter"     = Instances of this extra on map count towards
;                           Nuclear Winter
;   - "ShowFlag"          = Draw owner's flag
;   - "NaturalDefense"    = Extra's defense bonus will be counted to "Natural"
;                           defense layer. The defense bonus of all the extras
;                           located at the tile, native to defending unit,
;                           is calculated as a 1 + sum of bonuses from the extras
;                           on the default "Fortification" defense layer multiplied
;                           by the 1 + sum of bonuses from the extras on the
;                           "Natural" layer.
;   - "NoStackDeath"      = Units inside do not die all at once when attacked
; helptext                = optional help text string; should escape all raw
;                           newlines so that xgettext parsing works
;
; */ <-- avoid gettext warnings

[extra_irrigation]
name           = _("Irrigation")
category       = "Infra"
;causes         = ""
;rmcauses       = ""
infracost      = 2500
graphic        = "tx.irrigation"
graphic_alt    = "-"
activity_gfx   = "unit.irrigation"
act_gfx_alt    = "unit.cultivate"
act_gfx_alt2   = "-"
rmact_gfx      = "None"
rmact_gfx_alt  = "-"
rmact_gfx_alt2 = "-"
buildable      = TRUE
reqs           =
    { "type",         "name",        "range"
      "Tech",         "Agriculture", "Player"
      "TerrainClass", "Land",        "Tile"
    }
build_time     = 3
removal_time   = 0
helptext       = _("\
Irrigation increases tile food production. \
Full bonus is achieved only when player also knows the Plow tech, \
otherwise only 3/4 of the bonus is effective.\
")

[extra_nets]
name           = _("Nets")
category       = "Infra"
;causes         = ""
;rmcauses       = ""
infracost      = 2500
graphic        = "tx.nets"
graphic_alt    = "tx.irrigation"
activity_gfx   = "unit.nets"
act_gfx_alt    = "unit.irrigation"
act_gfx_alt2   = "unit.cultivate"
rmact_gfx      = "None"
rmact_gfx_alt  = "-"
rmact_gfx_alt2 = "-"
buildable      = TRUE
reqs           =
    { "type",         "name",    "range"
      "Tech",         "Rope",    "Player"
      "TerrainClass", "Oceanic", "Tile"
    }
build_time     = 3
removal_time   = 0
helptext       = _("Nets increase ocean tile food production.")

[extra_mine]
name           = _("?extra:Mine")
category       = "Infra"
;causes         = ""
;rmcauses       = ""
infracost      = 2500
graphic        = "tx.mine"
graphic_alt    = "-"
activity_gfx   = "unit.mine"
act_gfx_alt    = "unit.plant"
act_gfx_alt2   = "-"
rmact_gfx      = "None"
rmact_gfx_alt  = "-"
rmact_gfx_alt2 = "-"
buildable      = TRUE
reqs           =
    { "type",    "name",      "range"
      "Tech",    "Mining",    "Player"
      "Terrain", "Mountains", "Tile"
    }
build_time     = 4
removal_time   = 0
helptext       = _("\
Mine increases tile shield production.\
")

[extra_fort]
name           = _("Fort")
category       = "Infra"
causes         = "Base"
;rmcauses       = ""
graphic        = "base.fort"
graphic_alt    = "base.fortress"
activity_gfx   = "unit.fort"
act_gfx_alt    = "unit.fortress"
act_gfx_alt2   = "-"
rmact_gfx      = "None"
rmact_gfx_alt  = "-"
rmact_gfx_alt2 = "-"
buildable      = TRUE
reqs           =
    { "type",         "name",                "range"
      "Tech",         "Military Constructs", "Player"
      "TerrainClass", "Land",                "Tile"
    }
build_time     = 7
removal_time   = 0
defense_bonus  = 35
helptext       = _("\
Simplest of military castles, Fort provides just 35% defense bonus.\
")

[extra_path]
name           = _("Path")
category       = "Infra"
causes         = "Road"
;rmcauses       = ""
infracost      = 300
graphic        = "road.path"
graphic_alt    = "road.road"
activity_gfx   = "unit.path"
act_gfx_alt    = "unit.road"
act_gfx_alt2   = "-"
rmact_gfx      = "None"
rmact_gfx_alt  = "-"
rmact_gfx_alt2 = "-"
buildable      = TRUE
hidden_by      = "Road"
;reqs           =
;    { "type", "name", "range"
; No requirements
;    }
build_time     = 1
removal_time   = 0
flags          = "AutoOnCityCenter"
helptext       = _("Path is the simplest road type, buildable from the beginning.")

[extra_road]
name           = _("Road")
category       = "Infra"
causes         = "Road"
;rmcauses       = ""
infracost      = 600
graphic        = "road.road"
graphic_alt    = "-"
activity_gfx   = "unit.road"
act_gfx_alt    = "-"
act_gfx_alt2   = "-"
rmact_gfx      = "None"
rmact_gfx_alt  = "-"
rmact_gfx_alt2 = "-"
buildable      = TRUE
reqs           =
    { "type",  "name",          "range"
      "Tech",  "Road Building", "Player"
      "Extra", "Path",          "Tile"
    }
build_time     = 3
removal_time   = 0
flags          = "AutoOnCityCenter"
helptext       = _("\
Roads allow your land units to move more quickly, and on some terrain,\
 also provide a trade bonus.\
")

[extra_river]
name           = _("River")
category       = "Natural"
causes         = "Road"
;rmcauses       = ""
graphic        = "road.river"
graphic_alt    = "-"
activity_gfx   = "None"
act_gfx_alt    = "-"
act_gfx_alt2   = "-"
rmact_gfx      = "None"
rmact_gfx_alt  = "-"
rmact_gfx_alt2 = "-"
buildable      = FALSE
native_to      = "Land"
helptext       = _("\
Any land terrain type may have a River on it.\
 Land units may move along a River (but not diagonally) for fast travel.\
")

[extra_iron]
name           = _("Iron")
category       = "Resource"
causes         = "Resource"
;rmcauses       = ""
visibility_req = "Iron Working"
graphic        = "ts.iron"
graphic_alt    = "-"
activity_gfx   = "None"
act_gfx_alt    = "-"
act_gfx_alt2   = "-"
rmact_gfx      = "None"
rmact_gfx_alt  = "-"
rmact_gfx_alt2 = "-"
helptext       = _("\
Adds +200 to the tile shield output. \
Becomes visible and usable by the Iron Working tech.\
")

[extra_gresource]
name           = _("Generic Resource")
category       = "Resource"
causes         = "Resource"
;rmcauses       = ""
graphic        = "ts.grassland_resources"
graphic_alt    = "-"
activity_gfx   = "None"
act_gfx_alt    = "-"
act_gfx_alt2   = "-"
rmact_gfx      = "None"
rmact_gfx_alt  = "-"
rmact_gfx_alt2 = "-"

; /* <-- avoid gettext warnings
;
; Base types:
;
; extra                   = name of the extra this base section is part of
;                           (must have "Base" in its causes)
; gui_type                = How gui should handle this base.
;                           Value can be "Fortress", "Airbase", or "Other"
;                           See also [extraui] section
; border_sq               = Base will claim land ownership up to this radius,
;                           -1 to disable. If enabled, base cannot exist in
;                           city tile.
;                           Base (and border) ownership will change hands if
;                           an enemy unit does "Conquer Extras" to the tile.
; vision_main_sq          = Base will have main layer vision to this radius.
;                           Vision initially provided to owner of unit that
;                           built base; base will not then change hands unless
;                           it also claims territory, or tile has another such
;                           base or city, or another base is built (tile only
;                           tracks one owner for all bases).
; vision_invis_sq         = Base will have invisible layer vision to this radius
; vision_subs_sq          = Base will have subsurface layer vision to this radius
;
; */ <-- avoid gettext warnings

[base_fort]
extra          = "Fort"
gui_type       = "Other"
border_sq      = -1


; /* <-- avoid gettext warnings
;
; Road types:
;
; extra                   = name of the extra this road section is part of
;                           (must have "Road" in its causes)
; first_reqs              = additional requirements to build the first part of
;                           the road, when none of the adjacent tiles have any
;                           integrating roads (see effects.ruleset and
;                           README.effects for help on requirements)
; move_cost               = how much movement it takes to to travel
;                           via this road (in fractional move points, as
;                           defined by move_fragments)
;                           -1 means that road provides no speed bonus.
; move_mode               = how movement costs are applied
;   - "Cardinal"   = Road cost applies only on cardinal moves
;   - "Relaxed"    = Road cost is normal for cardinal, double for diagonal moves
;   - "FastAlways" = Road cost applies always between two tiles with the roads
;                    (default)
; food_incr_const         = food production added to tile regardless of terrain
; shield_incr_const       = shield production added to tile regardless of
;                           terrain
; trade_incr_const        = trade production added to tile regardless of
;                           terrain
; food_incr               = food production added to tile; multiplied by
;                           terrain-specific road_food_incr_pct
; shield_incr             = shield production added to tile; multiplied by
;                           terrain-specific road_shield_incr_pct
; trade_incr              = trade production added to tile; multiplied by
;                           terrain-specific road_trade_incr_pct
; food_bonus              = percent added to food production
; shield_bonus            = percent added to shield production
; trade_bonus             = percent added to trade production
;   In summary, output bonuses from roads are given by the formula:
;   (base_prod + roads.incr_const + roads.incr*terrain.incr_pct) * roads.bonus
; compat_special          = what kind of pre-2.5 special this road corresponds
;                           to, if any: "Road", "Railroad", "River", or "None".
;                           Used for loading old savegames.
; gui_type                = How gui should handle this base.
;                           Value can be "Road", "Railroad", "Maglev", or "Other"
; integrates              = list of road types that are suitable next steps
;                           for travel from this road type; such steps are
;                           possible for units native to both roads and don`t
;                           get cost from underlying terrain; graphics are
;                           drawn accordingly
; flags
;   - "River"             = Automatically generated by map generator, always
;                           flowing from land tiles to ocean
;   - "UnrestrictedInfra" = Use of the enemy owned road is not restricted
;                           even if server setting 'restrictinfra' is set
;   - "JumpFrom"          = Move to a tile nativity providing "JumpTo"
;                           road is considered native
;   - "JumpTo"            = Move from a tile nativity providing "JumpFrom"
;                           road is considered native
;
; */ <-- avoid gettext warnings

[road_path]
extra          = "Path"
move_cost      = 60
food_incr      = 0
shield_incr    = 0
trade_incr     = 0
food_bonus     = 0
shield_bonus   = 0
trade_bonus    = 0
compat_special = "None"
gui_type       = "Other"

[road_road]
extra          = "Road"
move_cost      = 30
food_incr      = 0
shield_incr    = 0
trade_incr     = 100
food_bonus     = 0
shield_bonus   = 0
trade_bonus    = 0
compat_special = "None"
gui_type       = "Other"

[road_river]
extra          = "River"
move_cost      = 30
move_mode      = "Cardinal"
food_incr      = 0
shield_incr    = 0
trade_incr     = 0
food_bonus     = 0
shield_bonus   = 0
trade_bonus    = 0
compat_special = "None"
gui_type       = "Other"
flags          = "River", "UnrestrictedInfra"
