; 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 Freeciv21
; use your new customized file.

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

[datafile]
description="Royale game rules for Freeciv21"
options="+Freeciv-ruleset-Devel-2017.Jan.02"
format_version=20

; This section contains meta information for freeciv21-ruledit to recreate the ruleset
; file in a form wanted. These have no in-game effect whatsoever
[ruledit]

; Which file to read description in from.
description_file = "royale/README.royale"

[about]
; Ruleset name
name = _("Royale ruleset")

; There`s no separate versioning in rulesets part of main Freeciv21 distribution
;version = ""

; When about to migrate ruleset under a new name in the future version, set
; alt_dir to the name of that future directory. Then savegames saved with this
; version of Freeciv21 can find the ruleset from the correct place when loading
; the savegame to the future version.
;alt_dir = ""

; Summary of the ruleset
; /* TRANS: In the client, this is displayed alongside the contents of
;    README.royale, which are not localized. */
summary = _("\
You are playing Freeciv21 with Royale ruleset based on Longturn Traditional LTT rules (originally based on civ2civ3):\
\n\n\
Gameplay more similar to classic 4x empire building games, keeping it easy to learn but challenging to master.\
\n\n\
Also suitable for single player, with AI less aggressive at start,\
 but more challenging at the end.\
\n\n\
The Royale ruleset is designed to be played without AI players and allows very fast gameplay\
 meaning that one game does not take too much time. For similar gameplay with more turns look for the LTT ruleset.\
 and it is balanced to make the game interesting for both beginners and experienced players.\
 Everything comes with a cost. Even advancing more than your opponent. This keeps it challenging and fair to everyone.\
")

; Detailed description
; When updating this, update also desciption_file in [ruledit] section to match
description = *royale/README.royale*

; What capabilities ruleset provides for the scenarios.
; See doc/README.rulesets for definitions of official capabilities
; std-terrains         - At least standard set of terrains
capabilities = "std-terrains"

[options]
global_init_techs=""
global_init_buildings="Palace"

[tileset]
; If preferred tileset is set, clients that support the feature will suggest
; using that tileset with the ruleset.
; preferred = ""

[soundset]
; If preferred soundset is set, clients that support the feature will suggest
; using that soundset with the ruleset.
; preferred = ""

[musicset]
; If preferred musicset is set, clients that support the feature will suggest
; using that musicset with the ruleset.
; preferred = ""

[civstyle]
; Value added to city pollution
base_pollution   = -20

; Cost in luxuries of making one citizen happier
happy_cost       = 2

; Cost in food of upkeeping a single citizen
food_cost        = 2

; Parameters used to generalize the calculation of city granary size:
;   if city_size <= num_inis:
;     city_granary_size = (granary_food_ini[city_size] * foodbox / 100)
;   if city_size > num_inis;
;     city_granary_size = (granary_food_ini[num_inis] +
;        granary_food_inc * (city_size - num_inis)) * foodbox / 100
granary_food_ini = 12, 14, 16, 20, 22, 26, 32, 30
granary_food_inc = 0

; City center minimum outputs
min_city_center_food    = 1
min_city_center_shield  = 0
min_city_center_trade   = 0

; Square of initial city radius
init_city_radius_sq     = 15

; Square of initially visible radius (true distance).
; the visible radius is smaller than the initial city radius. Units are needed for more vision.
init_vis_radius_sq      = 36

; A base bribe cost, modified heavily by other factors
base_bribe_cost  = 750

; Barbarian leader ransom in gold
ransom_gold      = 100

; Number of veteran levels lost when upgrading a unit
; here is a comment about losing the veteran levels. read it before changing this ever again. this has been tried several times.
; "losing level is wrong. makes early barracks/battle less interesting. so we make the game simpler with less strategic choices."
upgrade_veteran_loss     = 0

; Number of veteran levels lost when auto-upgrading a unit
autoupgrade_veteran_loss = 0

; Whether player gets to select which terrain improvement to pillage.
pillage_select           = TRUE

; Whether one can steal a tech for which prereqs are not known
tech_steal_allow_holes    = FALSE
; Whether one can get a tech for which prereqs are not known via
; diplomatic trading
tech_trade_allow_holes    = FALSE
; ...and whether one can lose a tech which is prereq for another known
; tech via trade, if techlost_donor is nonzero
tech_trade_loss_allow_holes = FALSE
; Whether one can get a tech for which prereqs are not known via
; parasite effect (Great Library)
tech_parasite_allow_holes = FALSE
; Whether one can lose a tech which is prereq for another known tech
; due to negative bulbs, if techlossforgiveness allows loss
tech_loss_allow_holes     = FALSE

; The diplomatic state between two nations that meet for the first time
; One of "War", "Cease-fire", "Armistice", "Peace", "Alliance"
initial_diplomatic_state = "Armistice"

; Whether civil war is possible at all
civil_war_enabled        = TRUE

; How many percents each celebrating city affects chance of civil war
civil_war_bonus_celebrating = -5

; How many percents each unhappy city affects chance of civil war
civil_war_bonus_unhappy     = 5

; Comma separated list of things to happen, in addition to death
; of owner, when gameloss unit dies
; "CivilWar"   - Part of the empire remains, controlled by a new player
; "Barbarians" - Depending on if there`s also "CivilWar", all or part
;                or half of the dead players empire gets under barbarian
;                control.
; "Loot"       - Player who killed the gameloss unit gets loot:
;                Partial map, gold, techs, cities
gameloss_style           = ""

; Whether units may safely paradrop to transport on non-native terrain
paradrop_to_transport    = FALSE

; Method of paying unit and improvement gold upkeep
; "City" - The player`s total gold must be non-negative after paying upkeep
;          costs associated with each city. If for any city the player`s
;          gold is negative, random buildings in the city are sold off. If
;          the gold is still negative, then supported units with gold upkeep
;          are disbanded.
; "Mixed" - In the first step, the player`s total gold must be non-negative
;           after paying upkeep for all buildings within a city. If for any
;           city the player`s gold is negative, random buildings in the city
;           are sold off.
;           In the second step, gold upkeep for all units is paid in a lump
;           sum. If the player does not have enough gold, random units with
;           gold upkeep are disbanded.
; "Nation" - Gold upkeep for all buildings and units is paid in a lump sum
;            after all cities have been processed. If the player does not
;            have enough gold, random buildings from random cities are sold.
;            If still more gold is needed, then random units with gold
;            upkeep are disbanded.
gold_upkeep_style = "Mixed"

; How many points of output one basic unit consists of. Typically you
; want this to be some 10^n.
output_granularity = 1

[illness]
; Whether plagues (illness) are possible
illness_on = TRUE

; the base factor for illness (of percent)
illness_base_factor = 10

; minimum city size for illness
illness_min_size = 5

; factor for how much trading with a plagued city increases our city`s
; chance for plague (in percent)
illness_trade_infection = 50

; factor for how much pollution within a city increases its chance for
; plague (in percent)
illness_pollution_factor = 50

[incite_cost]
; city_incite_cost = total_factor * (city_size) * (base_incite_cost
;                      + (units_cost) * unit_factor
;                      + (improvements_cost) * improvement_factor)
;                    / ((distance to capital) * 100)
; See city_incite_cost() for more details
base_incite_cost = 1000
improvement_factor = 1
unit_factor = 2
total_factor = 100

[combat_rules]


incite_gold_loss_chance = 20
incite_gold_capt_chance = 20
timeoutmask = 30

; If tired_attack is set to TRUE, units that attack with less than a single
; move point (per move_fragments in terrain.ruleset) will have their attack
; power reduced accordingly. For instance, if move_fragments=3, a unit with
; 2/3 move points will have attack power 2/3 of normal.
; If this is set to FALSE units will attack with full strength even if they
; have only fractional moves left.
tired_attack = TRUE

; With some rules it`s possible that neither side of a combat dies.
; Set this to TRUE if unit should never gain veterancy from such a combat.
only_killing_makes_veteran = FALSE

; Percentage of population lost by a city after nuclear attak. If set to
; 100 city is destroyed along with all the units. If set to 0 city does not
; loose population. Any value below 100 means the city can never be
; destroyed completely using nuclear
nuke_pop_loss_pct = 30

; Percentage chance of a city defender surviving nuclear attack. When set
; to 50 roughly half of defenders will survive nuclear attack. When set to
; 0 no defenders will survive. When set to 100 all defenders will survive.
nuke_defender_survival_chance_pct = 20

[auto_attack]
; An auto attack may be triggered when another unit moves to an adjacent
; tile and the autoattack server setting is enabled. The following details
; are ruleset controlled.
;   attack_actions - the actions to try during an auto attack in the order
;                    they should be tried.
;   if_attacker    - this requirement vector must be true before a unit even
;                    considers to auto attack.

attack_actions= "Capture Units", "Bombard", "Attack", "Suicide Attack"

if_attacker =
    { "type",         "name",    "range", "present"
      "DiplRel",      "War",     "Local", TRUE
      "MinMoveFrags", "1",       "Local", TRUE
      ; Not a good idea to nuke our own area.
      "UnitFlag",     "Nuclear", "Local", FALSE
    }

[actions]
; If force_trade_route is set to TRUE it is illegal for an actor unit to
; enter the marketplace of a city if it can establish a trade route to it
; in stead.
force_trade_route = TRUE

; If force_capture_units is set to TRUE it is illegal for an actor unit to
; bombard, explode nuclear or perform a regular attack against a tile if
; it can capture units on it in stead.
force_capture_units = TRUE

; If force_bombard is set to TRUE it is illegal for an actor unit to
; explode nuclear or perform a regular attack against a tile if it can
; bombard it in stead.
force_bombard = TRUE

; If force_explode_nuclear is set to TRUE it is illegal for an actor unit
; to perform a regular attack against a tile if it can do explode nuclear
; in stead.
force_explode_nuclear = TRUE

; If poison_empties_food_stock is set to TRUE a successful "Poison City"
; or "Poison City Escape" will empty the food stock.
poison_empties_food_stock = FALSE

; If steal_maps_reveals_all_cities is set to TRUE a successful "Steal Maps"
; or "Steal Maps Escape" will transfer the map for all tiles containing a
; city.
;steal_maps_reveals_all_cities = TRUE

; The maximum distance from the actor unit to the target of the
; "Help Wonder" action. The value 0 means that the target`s tile must be the
; tile of the actor unit. The value 1 means that the city must be on a tile
; adjacent to the actor unit. The special value "unlimited" lifts the
; maximum distance restriction. The maximum distance can`t be smaller than
; the minimum distance.
help_wonder_max_range = 1

; The maximum distance from the actor unit to the target of the
; "Recycle Unit" action. The value 0 means that the target`s tile must be the
; tile of the actor unit. The value 1 means that the city must be on a tile
; adjacent to the actor unit. The special value "unlimited" lifts the
; maximum distance restriction. The maximum distance can`t be smaller than
; the minimum distance.
recycle_unit_max_range = 1

; The maximum distance from the actor unit to the target of the "Bombard"
; action. The value 1 means that the targets must be on a tile adjacent to
; the actor unit. The special value "unlimited" lifts the maximum distance
; restriction. The maximum distance can`t be smaller than the minimum
; distance.
bombard_max_range = 1

; The maximum distance from the actor unit to the target of the "Bombard 2"
; action. The value 1 means that the targets must be on a tile adjacent to
; the actor unit. The special value "unlimited" lifts the maximum distance
; restriction. The maximum distance can`t be smaller than the minimum
; distance.
bombard_2_max_range = 1

; The maximum distance from the actor unit to the target of the "Bombard 3"
; action. The value 1 means that the targets must be on a tile adjacent to
; the actor unit. The special value "unlimited" lifts the maximum distance
; restriction. The maximum distance can`t be smaller than the minimum
; distance.
bombard_3_max_range = 1

; The maximum distance from the actor unit to the target of the
; "Explode Nuclear" action. The value 0 means that the target tile must be
; the tile of the actor unit. The value 1 means that the tile must be a tile
; adjacent to the actor unit. The special value "unlimited" lifts the
; maximum distance restriction. The maximum distance can`t be smaller than
; the minimum distance.
explode_nuclear_max_range = 0

; The maximum distance from the actor unit to the target of the
; "Nuke City" action. The value 1 means that the tile must be a tile
; adjacent to the actor unit. The special value "unlimited" lifts the
; maximum distance restriction. The maximum distance can`t be smaller than
; the minimum distance.
nuke_city_max_range = 1

; The maximum distance from the actor unit to the target of the
; "Nuke Units" action. The value 1 means that the tile must be a tile
; adjacent to the actor unit. The special value "unlimited" lifts the
; maximum distance restriction. The maximum distance can`t be smaller than
; the minimum distance.
nuke_units_max_range = 1

; The maximum distance from the actor unit to the target of the "Airlift Unit"
; action. The value 1 means that the targets must be on a tile adjacent to
; the actor unit. The special value "unlimited" lifts the maximum distance
; restriction. The maximum distance can`t be smaller than the minimum
; distance.
airlift_max_range = "unlimited"

; What each action should be called when showing them to the player.
; The first %s should be before the mnemonic of the action. A Freeciv21 client
; that supports mnemonics will replace it with the in-band signal that marks
; the following character as a mnemonic in its graphical toolkit.
; The second %s marks where extra details should be inserted.

; /* TRANS: _Poison City (3% chance of success). */
ui_name_poison_city_escape = _("%sPoison City%s")

; /* TRANS: _Sabotage Enemy Unit (3% chance of success). */
ui_name_sabotage_unit_escape = _("%sSabotage Enemy Unit%s")

; /* TRANS: _Bribe Enemy Unit (3% chance of success). */
ui_name_bribe_unit = _("%sBribe Enemy Unit%s")

; /* TRANS: _Sabotage City (3% chance of success). */
ui_name_sabotage_city = _("%sSabotage City%s")

; /* TRANS: _Sabotage City Escape (3% chance of success). */
ui_name_sabotage_city_escape = _("%sSabotage City Escape%s")

; /* TRANS: Industrial _Sabotage (3% chance of success). */
ui_name_targeted_sabotage_city_escape = _("Industrial %sSabotage%s")

; /* TRANS: Industrial _Sabotage Production (3% chance of success). */
ui_name_sabotage_city_production_escape = _("Industrial %sSabotage Production%s")

; /* TRANS: Incite a _Revolt (3% chance of success). */
ui_name_incite_city = _("Incite a %sRevolt%s")

; /* TRANS: Incite a _Revolt and Escape (3% chance of success). */
ui_name_incite_city_escape = _("Incite a Re%svolt and Escape%s")

; /* TRANS: Establish _Embassy (100% chance of success). */
ui_name_establish_embassy = _("Establish %sEmbassy%s")

; /* TRANS: Becom_e Ambassador (100% chance of success). */
ui_name_establish_embassy_stay = _("Becom%se Ambassador%s")

; /* TRANS: Steal _Technology (3% chance of success). */
ui_name_steal_tech = _("Steal %sTechnology%s")

; /* TRANS: Steal _Technology and Escape (3% chance of success). */
ui_name_steal_tech_escape = _("Steal %sTechnology and Escape%s")

; /* TRANS: Indus_trial Espionage (3% chance of success). */
ui_name_targeted_steal_tech_escape = _("Indus%strial Espionage%s")

; /* TRANS: _Investigate City (100% chance of success). */
ui_name_investigate_city = _("%sInvestigate City%s")

; /* TRANS: _Investigate City (spends the unit) (100% chance of success). */
ui_name_investigate_city_spend_unit = _("%sInvestigate City (spends the unit)%s")

; /* TRANS: Establish Trade _Route (100% chance of success). */
ui_name_establish_trade_route = _("Establish Trade %sRoute%s")

; /* TRANS: Enter _Marketplace (100% chance of success). */
ui_name_enter_marketplace = _("Enter %sMarketplace%s")

; /* TRANS: Help _build Wonder (100% chance of success). */
ui_name_help_wonder = _("Help %sbuild Wonder%s")

; /* TRANS: Rec_ycle Unit (100% chance of success). */
ui_name_recycle_unit = _("Rec%sycle Unit%s")

; /* TRANS: _Disband Unit (100% chance of success). */
ui_name_disband_unit = _("%sDisband Unit%s")

; /* TRANS: _Capture Units (100% chance of success). */
ui_name_capture_units = _("%sCapture Units%s")

; /* TRANS: _Build City (100% chance of success). */
ui_name_found_city = _("%sBuild City%s")

; /* TRANS: _Add to City (100% chance of success). */
ui_name_join_city = _("%sAdd to City%s")

; /* TRANS: _Bombard (100% chance of success). */
ui_name_bombard = _("%sBombard%s")

; /* TRANS: Explode _Nuclear In Place (100% chance of success). */
ui_name_explode_nuclear = _("Explode %sNuclear In Place%s")

; /* TRANS: _Nuke City (100% chance of success). */
ui_name_nuke_city = _("%sNuke City%s")

; /* TRANS: _Nuke Units (100% chance of success). */
ui_name_nuke_units = _("%sNuke Units%s")

; /* TRANS: Set _Home City (100% chance of success). */
ui_name_home_city = _("Set %sHome City%s")

; /* TRANS: _Upgrade Unit (100% chance of success). */
ui_name_upgrade_unit = _("%sUpgrade Unit%s")

; /* TRANS: Drop _Paratrooper (100% chance of success). */
ui_name_paradrop_unit = _("Drop %sParatrooper%s")

; /* TRANS: _Airlift to City (100% chance of success). */
ui_name_airlift_unit = _("%sAirlift to City%s")

; /* TRANS: _Attack (100% chance of success). */
ui_name_attack = _("%sAttack%s")

; /* TRANS: _Explode Missile (100% chance of success). */
ui_name_suicide_attack = _("%sExplode Missile%s")

; /* TRANS: _Conquer City (100% chance of success). */
ui_name_conquer_city = _("%sConquer City%s")

; /* TRANS: _Conquer City from non native (100% chance of success). */
ui_name_conquer_city_2 = _("%sConquer City from non native%s")

; /* TRANS: _Transform Terrain (3% chance of success). */
ui_name_transform_terrain = _("%sTransform Terrain%s")

; /* TRANS: Transform by _Cultivating (3% chance of success). */
ui_name_cultivate = _("Transform by %sCultivating%s")

; /* TRANS: Transform by _Planting (3% chance of success). */
ui_name_plant = _("Transform by %sPlanting%s")

; /* TRANS: Pilla_ge (100% chance of success). */
ui_name_pillage = _("Pilla%sge%s")

; /* TRANS: Clean _Pollution (100% chance of success). */
ui_name_clean_pollution = "Clean %sPollution%s"

; /* TRANS: Clean _Fallout (100% chance of success). */
ui_name_clean_fallout = "Clean %sFallout%s"

; /* TRANS: _Fortify (100% chance of success). */
ui_name_fortify = _("%sFortify%s")

; /* TRANS: Build _Road (100% chance of success). */
ui_name_road = _("Build %sRoad%s")

; /* TRANS: _Build Base (100% chance of success). */
ui_name_build_base = _("%sBuild Base%s")

; /* TRANS: Build _Mine (100% chance of success). */
ui_name_build_mine = _("Build %sMine%s")

; /* TRANS: Build _Irrigation (100% chance of success). */
ui_name_irrigate = _("Build %sIrrigation%s")

; /* TRANS: _Alight (100% chance of success). */
ui_name_transport_alight = _("%sAlight%s")

; /* TRANS: _Board (100% chance of success). */
ui_name_transport_board = _("%sBoard%s")

; /* TRANS: _Unload (100% chance of success). */
ui_name_transport_unload = _("%sUnload%s")

; /* TRANS: _Disembark (100% chance of success). */
ui_name_transport_disembark = _("%sDisembark%s")

; /* TRANS: _Disembark from non native (100% chance of success). */
ui_name_transport_disembark_2 = _("%sDisembark from non native%s")

; /* TRANS: _Embark (100% chance of success). */
ui_name_transport_embark = _("%sEmbark%s")

; Blank ruleset defined user actions.
; See the section "Ruleset defined actions" is doc/README.actions
; Example: set up "User Action 1"
;ui_name_user_action_1                = _("%sDisrupt Supply Lines%s")
;user_action_1_target_kind            = "individual units"
;user_action_1_min_range              = 1
;user_action_1_max_range              = 3
;user_action_1_actor_consuming_always = FALSE

; Suppress automatic help text generation about what enables and/or
; disables the following actions.
;
; Can make the help text less redundant when you document it your self.

; "Transport Disembark 2" is "Transport Disembark" but from a non native
; tile. "Conquer City 2" has the same relation to "Conquer City".
quiet_actions = "Transport Disembark 2", "Conquer City 2"

; /* <-- avoid gettext warnings
;
; Action enablers:
;
; action               = the action to enable.
; actor_reqs           = requirements that apply to the actor.
; target_reqs          = requirements that apply to the target.
;
; README.actions lists the possible actions and their hard coded
; requirements.
;
; An action enabler is active when its actor_reqs AND its target_reqs are
; satisfied.
;
; */ <-- avoid gettext warnings

[actionenabler_sabotage_city]
action = "Sabotage City"
actor_reqs    =
    { "type",         "name",          "range", "present"
      "UnitFlag",     "Diplomat",      "Local", TRUE
      "DiplRel",      "War",           "Local", TRUE
      "UnitState",    "OnLivableTile", "Local", TRUE
      "MinMoveFrags", "1",             "Local", TRUE
      "UnitFlag",     "Spy",           "Local", FALSE
    }

[actionenabler_sabotage_city_spy]
action = "Sabotage City Escape"
actor_reqs    =
    { "type",         "name",          "range"
      "UnitFlag",     "Spy",           "Local"
      "DiplRel",      "War",           "Local"
      "UnitState",    "OnLivableTile", "Local"
      "MinMoveFrags", "1",             "Local"
    }

[actionenabler_sabotage_city_target]
action = "Targeted Sabotage City Escape"
actor_reqs    =
    { "type",         "name",          "range"
      "DiplRel",      "War",           "Local"
      "UnitFlag",     "Spy",           "Local"
      "UnitState",    "OnLivableTile", "Local"
      "MinMoveFrags", "1",             "Local"
    }

[actionenabler_sabotage_city_production]
action = "Sabotage City Production Escape"
actor_reqs    =
    { "type",         "name",          "range"
      "DiplRel",      "War",           "Local"
      "UnitFlag",     "Spy",           "Local"
      "UnitState",    "OnLivableTile", "Local"
      "MinMoveFrags", "1",             "Local"
    }

[actionenabler_establish_embassy]
action       = "Establish Embassy"
actor_reqs    =
    { "type",         "name",             "range", "present"
      "UnitFlag",     "Diplomat",         "Local", TRUE
      "MinMoveFrags", "1",                "Local", TRUE
      "DiplRel",      "Foreign",          "Local", TRUE
      "DiplRel",      "Has real embassy", "Local", FALSE
      "UnitFlag",     "Spy",              "Local", FALSE
    }
target_reqs  =
    { "type",        "name",      "range", "present"
      "NationGroup", "Barbarian", "Player", FALSE
    }

[actionenabler_establish_embassy_spy]
action       = "Establish Embassy"
actor_reqs    =
    { "type",         "name",             "range", "present"
      "UnitFlag",     "Spy",              "Local", TRUE
      "MinMoveFrags", "1",                "Local", TRUE
      "DiplRel",      "Foreign",          "Local", TRUE
      "DiplRel",      "Has real embassy", "Local", FALSE
    }
target_reqs  =
    { "type",        "name",      "range", "present"
      "NationGroup", "Barbarian", "Player", FALSE
    }

[actionenabler_establish_embassy_explorer]
action       = "Establish Embassy"
actor_reqs    =
    { "type",         "name",             "range", "present"
      "UnitType",     "Explorer",         "Local", TRUE
      "MinMoveFrags", "1",                "Local", TRUE
      "DiplRel",      "Foreign",          "Local", TRUE
      "DiplRel",      "Has real embassy", "Local", FALSE
    }
target_reqs  =
    { "type",        "name",      "range", "present"
      "NationGroup", "Barbarian", "Player", FALSE
    }

[actionenabler_investigate_city]
action       = "Investigate City"
actor_reqs    =
    { "type",   "name", "range", "present"
      "UnitFlag", "Diplomat", "Local", TRUE
      "MinMoveFrags", "1", "Local", TRUE
      "DiplRel", "Foreign", "Local", TRUE
      "UnitFlag", "Spy", "Local", FALSE
    }

[actionenabler_investigate_city_spy]
action       = "Investigate City"
actor_reqs    =
    { "type",   "name", "range"
      "UnitFlag", "Spy", "Local"
      "MinMoveFrags", "1", "Local"
      "DiplRel", "Foreign", "Local"
    }

[actionenabler_steal_tech_random_scribe]
action = "Steal Tech"
actor_reqs    =
    { "type",   "name", "range"
      "UnitType", "Scribe", "Local"
      "UnitState", "OnLivableTile", "Local"
      "MinMoveFrags", "1", "Local"
      "DiplRel",      "Foreign",       "Local", TRUE
    }
target_reqs  =
    { "type",   "name", "range", "present"
      "NationGroup", "Barbarian", "Player", FALSE
    }

[actionenabler_steal_tech_random]
action = "Steal Tech"
actor_reqs    =
    { "type",   "name", "range"
      "UnitType", "Scholar", "Local"
      "UnitState", "OnLivableTile", "Local"
      "MinMoveFrags", "1", "Local"
      "DiplRel",      "Foreign",       "Local", TRUE
    }
target_reqs  =
    { "type",   "name", "range", "present"
      "NationGroup", "Barbarian", "Player", FALSE
    }

[actionenabler_poison_city]
action = "Poison City Escape"
actor_reqs    =
    { "type",   "name", "range"
      "UnitFlag", "RealSpy", "Local"
      "DiplRel", "War", "Local"
      "UnitState", "OnLivableTile", "Local"
      "MinMoveFrags", "1", "Local"
    }
target_reqs    =
    { "type",   "name", "range"
      "MinSize", "2", "City"
    }

[actionenabler_incite_city]
action = "Incite City"
actor_reqs    =
    { "type",         "name",          "range", "present"
      "UnitFlag",     "Diplomat",      "Local", TRUE
      "DiplRel",      "Alliance",      "Local", FALSE
      "DiplRel",      "Team",          "Local", FALSE
      "UnitState",    "OnLivableTile", "Local", TRUE
      "MinMoveFrags", "1",             "Local", TRUE
      "DiplRel",      "Foreign",       "Local", TRUE
      "UnitFlag",     "Spy",           "Local", FALSE
    }
target_reqs  =
    { "type",     "name",                  "range", "present"
      "Gov",      "Federation",            "Player", FALSE
      "Gov",      "Democracy",             "Player", FALSE
      "Building", "Palace",                "City",   FALSE
      "Building", "2nd Palace", "City",   FALSE
      "Building", "Mausoleum of Mausolos", "Player", FALSE
    }

[actionenabler_incite_city_spy]
action = "Incite City Escape"
actor_reqs    =
    { "type",         "name",          "range", "present"
      "UnitFlag",     "Spy",           "Local", TRUE
      "DiplRel",      "Alliance",      "Local", FALSE
      "DiplRel",      "Team",          "Local", FALSE
      "UnitState",    "OnLivableTile", "Local", TRUE
      "MinMoveFrags", "1",             "Local", TRUE
      "DiplRel",      "Foreign",       "Local", TRUE
    }
target_reqs  =
    { "type",     "name",                  "range", "present"
      "Gov",      "Federation",            "Player", FALSE
      "Gov",      "Democracy",             "Player", FALSE
      "Building", "Palace",                "City",   FALSE
      "Building", "2nd Palace", "City",   FALSE
      "Building", "Mausoleum of Mausolos", "Player", FALSE
    }

[actionenabler_bribe_unit]
action = "Bribe Unit"
actor_reqs    =
    { "type",   "name", "range", "present"
      "UnitFlag", "RealDiplomat", "Local", TRUE
      "DiplRel", "Alliance", "Local", FALSE
      "DiplRel", "Team", "Local", FALSE
      "UnitState", "OnLivableTile", "Local", TRUE
      "MinMoveFrags", "1", "Local", TRUE
      "DiplRel", "Foreign", "Local", TRUE
    }
target_reqs    =
    { "type",   "name", "range", "present"
      "UnitFlag", "Unbribable", "Local", FALSE
      "CityTile", "Center", "Local", FALSE
      "Gov", "Republic", "Player", FALSE
      "Gov", "Democracy", "Player", FALSE
      "MaxUnitsOnTile", "1", "Local", TRUE
    }

[actionenabler_sabotage_unit]
action = "Sabotage Unit Escape"
actor_reqs    =
    { "type",   "name", "range"
      "UnitFlag", "RealSpy", "Local"
      "DiplRel", "War", "Local"
      "UnitState", "OnLivableTile", "Local"
      "MinMoveFrags", "1", "Local"
    }
target_reqs    =
    { "type",   "name", "range", "present"
      "CityTile", "Center", "Local", FALSE
      "MinHitPoints", "2", "Local", TRUE
      "MaxUnitsOnTile", "1", "Local", TRUE
    }

[actionenabler_traderoute]
action = "Establish Trade Route"
actor_reqs    =
    { "type",   "name", "range", "present"
      "UnitFlag", "TradeRoute", "Local", TRUE
      "MinMoveFrags", "1", "Local", TRUE
      "UnitState", "HasHomeCity", "Local", TRUE
    }

[actionenabler_help_build_wonder]
action = "Help Wonder"
actor_reqs    =
    { "type",   "name", "range", "present"
      "UnitFlag", "HelpWonder", "Local", TRUE
      "DiplRel", "Armistice", "Local", FALSE
      "DiplRel", "War", "Local", FALSE
      "DiplRel", "Cease-fire", "Local", FALSE
      "DiplRel", "Peace", "Local", FALSE
      "MinMoveFrags", "1", "Local", TRUE
    }
target_reqs    =
    { "type",   "name", "range"
      "BuildingGenus", "GreatWonder", "Local"
    }

[actionenabler_recycle_unit]
action = "Recycle Unit"
actor_reqs    =
    { "type",   "name", "range", "present"
      "UnitFlag", "EvacuateFirst", "Local", FALSE
      "DiplRel",  "War",        "Local", FALSE
      "DiplRel",  "Cease-fire", "Local", FALSE
      "DiplRel",  "Armistice",  "Local", FALSE
      "DiplRel",  "Peace",      "Local", FALSE
    }

[actionenabler_disband_unit]
action = "Disband Unit"
actor_reqs    =
    { "type",   "name", "range", "present"
      "UnitFlag", "EvacuateFirst", "Local", FALSE
    }

[actionenabler_capture]
action = "Capture Units"
actor_reqs    =
    { "type",   "name", "range", "present"
      "UnitFlag", "Capturer", "Local", TRUE
      "DiplRel", "War", "Local", TRUE
      "MinMoveFrags", "1", "Local", TRUE
      "DiplRel", "Foreign", "Local", TRUE
    }
target_reqs    =
    { "type",      "name",         "range", "present"
      "UnitFlag",  "Capturable",   "Local", TRUE
      "UnitState", "Transporting", "Local", FALSE
      "CityTile",  "Center",       "Local", FALSE
    }

[actionenabler_bombard]
action = "Bombard"
actor_reqs    =
    { "type",         "name",        "range", "present"
      "UnitFlag",     "Bombarder",   "Local", TRUE
      "UnitState",    "Transported", "Local", FALSE
      "MinMoveFrags", "1",           "Local", TRUE
      "DiplRel",      "War",         "Local", TRUE
    }
target_reqs    =
    { "type",   "name", "range", "present"
      "TerrainClass", "Oceanic", "Local", FALSE
    }

[actionenabler_build_city_pioneer]
action = "Found City"
actor_reqs    =
    { "type",   "name", "range"
      "UnitFlag", "Cities", "Local"
      "UnitState", "OnLivableTile", "Local"
      "MinMoveFrags", "1", "Local"
    }
target_reqs    =
    { "type",   "name", "range", "present"
      "CityTile", "Claimed", "Local", FALSE
      "TerrainFlag","NoCities","Local",FALSE
    }

[actionenabler_build_city_domestic]
action = "Found City"
actor_reqs    =
    { "type",   "name", "range", "present"
      "UnitFlag", "Cities", "Local", TRUE
      "UnitState", "OnLivableTile", "Local", TRUE
      "MinMoveFrags", "1", "Local", TRUE
      "DiplRel", "Foreign", "Local", FALSE
    }
target_reqs    =
    { "type",        "name",     "range", "present"
      "CityTile",    "Claimed",  "Local", TRUE
      "TerrainFlag", "NoCities", "Local", FALSE
    }

[actionenabler_join_city]
action = "Join City"
actor_reqs    =
    { "type",   "name", "range", "present"
      "UnitFlag", "AddToCity", "Local", TRUE
      "DiplRel", "Foreign", "Local", FALSE
      "MinMoveFrags", "1", "Local", TRUE
    }

[actionenabler_nuke]
action = "Explode Nuclear"
actor_reqs    =
    { "type",   "name", "range", "present"
      "UnitFlag", "Nuclear", "Local", TRUE
    }

[actionenabler_nuke_city]
action="Nuke City"
actor_reqs=
    { "type",         "name",    "range"
      "UnitFlag",     "Nuclear", "Local"
      "MinMoveFrags", "1",       "Local"
      "DiplRel",      "War",     "Local"
    }

[actionenabler_nuke_units]
action="Nuke Units"
actor_reqs=
    { "type",         "name",    "range"
      "UnitFlag",     "Nuclear", "Local"
      "MinMoveFrags", "1",       "Local"
      "DiplRel",      "War",     "Local"
    }
target_reqs=
    { "type",     "name",   "range", "present"
      "CityTile", "Center", "Local", FALSE
    }

[actionenabler_attack_native]
action = "Attack"
actor_reqs    =
    { "type",          "name",         "range", "present"
      "UnitFlag",      "NonMil",       "Local", FALSE
      "UnitClassFlag", "Missile",      "Local", FALSE
      "MinMoveFrags",  "1",            "Local", TRUE
      "UnitState",     "OnNativeTile", "Local", TRUE
      "DiplRel",       "War",          "Local", TRUE
    }

[actionenabler_attack_marines]
action = "Attack"
actor_reqs    =
    { "type",          "name",    "range", "present"
      "UnitFlag",      "NonMil",  "Local", FALSE
      "UnitClassFlag", "Missile", "Local", FALSE
      "MinMoveFrags",  "1",       "Local", TRUE
      "UnitFlag",      "Marines", "Local", TRUE
      "DiplRel",       "War",     "Local", TRUE
    }

[actionenabler_attack_att_from_non_native]
action = "Attack"
actor_reqs    =
    { "type",          "name",             "range", "present"
      "UnitFlag",      "NonMil",           "Local", FALSE
      "UnitClassFlag", "Missile",          "Local", FALSE
      "MinMoveFrags",  "1",                "Local", TRUE
      "UnitClassFlag", "AttFromNonNative", "Local", TRUE
      "DiplRel",       "War",              "Local", TRUE
    }

[actionenabler_explode_missile]
action = "Suicide Attack"
actor_reqs    =
    { "type",          "name",    "range", "present"
      "UnitFlag",      "NonMil",  "Local", FALSE
      "UnitClassFlag", "Missile", "Local", TRUE
      "MinMoveFrags",  "1",       "Local", TRUE
      "DiplRel",       "War",     "Local", TRUE
    }

[actionenabler_conquer_city_native]
action = "Conquer City"
actor_reqs    =
    { "type",           "name",          "range", "present"
      "UnitClassFlag",  "CanOccupyCity", "Local", TRUE
      "UnitFlag",       "NonMil",        "Local", FALSE
      "DiplRel",        "War",           "Local", TRUE
      "MinMoveFrags",   "1",             "Local", TRUE
      "UnitState",      "OnLivableTile", "Local", TRUE
    }
target_reqs    =
    { "type",           "name",          "range", "present"
      "MaxUnitsOnTile", "0",             "Local", TRUE
    }

[actionenabler_conquer_city_marines]
action = "Conquer City 2"
actor_reqs    =
    { "type",           "name",          "range", "present"
      "UnitClassFlag",  "CanOccupyCity", "Local", TRUE
      "UnitFlag",       "NonMil",        "Local", FALSE
      "DiplRel",        "War",           "Local", TRUE
      "MinMoveFrags",   "1",             "Local", TRUE
      "UnitFlag",       "Marines",       "Local", TRUE
      "UnitState",      "OnLivableTile", "Local", FALSE
    }
target_reqs    =
    { "type",           "name",          "range", "present"
      "MaxUnitsOnTile", "0",             "Local", TRUE
    }

[actionenabler_change_home_city]
action = "Home City"
actor_reqs    =
    { "type",      "name",        "range", "present"
      "UnitFlag",  "NoHome",      "Local", FALSE
      "UnitState", "HasHomeCity", "Local", TRUE
      "DiplRel",   "Foreign",  "Local", FALSE
    }

[actionenabler_paradrop_base_to_foreign]
action = "Paradrop Unit"
actor_reqs    =
    { "type",         "name",         "range", "present"
      "UnitFlag",     "Paratroopers", "Local", TRUE
      "MinMoveFrags", "6",            "Local", TRUE
      "UnitState",    "Transporting", "Local", FALSE
      "ExtraFlag",    "ParadropFrom", "Local", TRUE
      "DiplRel",      "Peace",        "Local", FALSE
    }
target_reqs   =
    { "type",     "name",    "range", "present"
      "CityTile", "Claimed", "Local", TRUE
    }

[actionenabler_paradrop_base_to_unclaimed]
action = "Paradrop Unit"
actor_reqs    =
    { "type",         "name",         "range", "present"
      "UnitFlag",     "Paratroopers", "Local", TRUE
      "MinMoveFrags", "6",            "Local", TRUE
      "UnitState",    "Transporting", "Local", FALSE
      "ExtraFlag",    "ParadropFrom", "Local", TRUE
    }
target_reqs   =
    { "type",     "name",    "range", "present"
      "CityTile", "Claimed", "Local", FALSE
    }

[actionenabler_paradrop_city_to_foreign]
action = "Paradrop Unit"
actor_reqs    =
    { "type",         "name",         "range", "present"
      "UnitFlag",     "Paratroopers", "Local", TRUE
      "MinMoveFrags", "6",            "Local", TRUE
      "UnitState",    "Transporting", "Local", FALSE
      "CityTile",     "Center",       "Local", TRUE
      "DiplRel",      "Peace",        "Local", FALSE
    }
target_reqs   =
    { "type",     "name",    "range", "present"
      "CityTile", "Claimed", "Local", TRUE
    }

[actionenabler_paradrop_city_to_unclaimed]
action = "Paradrop Unit"
actor_reqs    =
    { "type",         "name",         "range", "present"
      "UnitFlag",     "Paratroopers", "Local", TRUE
      "MinMoveFrags", "6",            "Local", TRUE
      "UnitState",    "Transporting", "Local", FALSE
      "CityTile",     "Center",       "Local", TRUE
    }
target_reqs   =
    { "type",     "name",    "range", "present"
      "CityTile", "Claimed", "Local", FALSE
    }

[actionenabler_upgrade_unit]
action = "Upgrade Unit"
actor_reqs    =
    { "type",    "name",       "range", "present"
      "DiplRel", "Foreign", "Local", FALSE
    }

[actionenabler_airlift_unit]
action = "Airlift Unit"
actor_reqs    =
    { "type",          "name",         "range", "present"
      "UnitClassFlag", "Airliftable",  "Local", TRUE
      "UnitState",     "Transporting", "Local", FALSE
      "MinMoveFrags",  "1",            "Local", TRUE
      "CityTile",      "Center",       "Local", TRUE
    }

[actionenabler_transform_terrain]
action        = "Transform Terrain"
actor_reqs    =
    { "type",          "name",         "range"
      "Tech",          "Fusion Power", "Player"
      "UnitFlag",      "Transform",    "Local"
      "UnitFlag",      "Settlers",     "Local"
    }

[actionenabler_cultivate]
action        = "Cultivate"
actor_reqs    =
    { "type",          "name",         "range", "present"
      "UnitFlag",      "Settlers",     "Local", TRUE
      "UnitClass",     "Sea",          "Local", FALSE
    }

[actionenabler_plant]
action        = "Plant"
actor_reqs    =
    { "type",          "name",         "range", "present"
      "UnitFlag",      "Settlers",     "Local", TRUE
      "UnitClass",     "Sea",          "Local", FALSE
    }

[actionenabler_pillage]
action        = "Pillage"
actor_reqs    =
    { "type",          "name",         "range"
      "UnitClassFlag", "CanPillage",   "Local"
    }

[actionenabler_clean_pollution]
action        = "Clean Pollution"
actor_reqs    =
    { "type",          "name",         "range", "present"
      "UnitFlag",      "Settlers",     "Local", TRUE
    }

[actionenabler_clean_fallout]
action        = "Clean Fallout"
actor_reqs    =
    { "type",          "name",         "range", "present"
      "UnitFlag",      "Settlers",     "Local", TRUE
    }

[actionenabler_fortify_terrain]
action        = "Fortify"
actor_reqs    =
    { "type",          "name",         "range", "present"
      "UnitClassFlag", "CanFortify",   "Local", TRUE
      "UnitFlag",      "Cant_Fortify", "Local", FALSE
      "TerrainFlag",   "NoFortify",    "Local", FALSE
      "Activity",      "Fortified",    "Local", FALSE
    }

[actionenabler_fortify_city]
action        = "Fortify"
actor_reqs    =
    { "type",          "name",         "range", "present"
      "UnitClassFlag", "CanFortify",   "Local", TRUE
      "UnitFlag",      "Cant_Fortify", "Local", FALSE
      "CityTile",      "Center",       "Local", TRUE
      "Activity",      "Fortified",    "Local", FALSE
    }

[actionenabler_road]
action        = "Build Road"
actor_reqs    =
    { "type",          "name",         "range"
      "UnitFlag",      "Settlers",     "Local"
    }

[actionenabler_base]
action        = "Build Base"
actor_reqs    =
    { "type",          "name",         "range"
      "UnitFlag",      "Settlers",     "Local"
    }

[actionenabler_mining]
action        = "Build Mine"
actor_reqs    =
    { "type",      "name",     "range", "present"
      "UnitFlag",  "Settlers", "Local", TRUE
      "UnitClass", "Sea",      "Local", FALSE
    }
target_reqs    =
    { "type",      "name",       "range", "present"
      "Terrain",   "Deep Ocean", "Local", FALSE
    }

[actionenabler_mining_ocean]
action        = "Build Mine"
actor_reqs    =
    { "type",      "name",            "range"
      "UnitFlag",  "Settlers",        "Local"
      "Tech",      "Miniaturization", "Player"
    }
target_reqs    =
    { "type",    "name",            "range",  "present"
      "Terrain", "Deep Ocean",      "Local",  TRUE
    }

; Prevent building farmland on bare deserts. It does not yield any bonus
; over irrigation, and prevents any Super Highways trade bonus, so it
; would be a waste of time.
; (Note that it is still possible to end up with farmland on such terrain
; through climate change.)
; Deserts with food bonuses _are_ allowed farmland (hence exceptions).

; "Sea" nreq is for Transports, which are only supposed to clean pollution

[actionenabler_irrigate_src_tech_basic_irrigation]
action        = "Build Irrigation"
actor_reqs    =
    { "type",      "name",        "range",  "present"
      "UnitFlag",  "Settlers",    "Local",  TRUE
      "Tech",      "Electricity", "Player", TRUE
      "UnitClass", "Sea",         "Local",  FALSE
    }
target_reqs    =
    { "type",  "name",    "range",    "present"
      "Extra", "Irrigation", "Local", FALSE
    }

[actionenabler_irrigate_src_ocean_basic_irrigation]
action        = "Build Irrigation"
actor_reqs    =
    { "type",      "name",      "range", "present"
      "UnitFlag",  "Settlers",  "Local", TRUE
      "UnitClass", "Sea",       "Local", FALSE
    }
target_reqs    =
    { "type",         "name",       "range",     "present"
      "TerrainClass", "Oceanic",    "CAdjacent", TRUE
      "Extra",        "Irrigation", "Local",     FALSE
    }

[actionenabler_irrigate_src_extra_basic_irrigation]
action        = "Build Irrigation"
actor_reqs    =
    { "type",      "name",     "range", "present"
      "UnitFlag",  "Settlers", "Local", TRUE
      "UnitClass", "Sea",      "Local", FALSE
    }
target_reqs    =
    { "type",      "name",             "range",     "present"
      "ExtraFlag", "IrrigationSource", "CAdjacent", TRUE
      "Extra",     "Irrigation",       "Local",     FALSE
    }

[actionenabler_irrigate_src_tech_not_in_desert]
action        = "Build Irrigation"
actor_reqs    =
    { "type",      "name",        "range",  "present"
      "UnitFlag",  "Settlers",    "Local",  TRUE
      "Tech",      "Electricity", "Player", TRUE
      "UnitClass", "Sea",         "Local",  FALSE
    }
target_reqs    =
    { "type",         "name",    "range",    "present"
      "Terrain",      "Desert",  "Local",    FALSE
    }

[actionenabler_irrigate_src_ocean_not_in_desert]
action        = "Build Irrigation"
actor_reqs    =
    { "type",      "name",      "range", "present"
      "UnitFlag",  "Settlers",  "Local", TRUE
      "UnitClass", "Sea",       "Local", FALSE
    }
target_reqs    =
    { "type",         "name",    "range",    "present"
      "TerrainClass", "Oceanic", "CAdjacent", TRUE
      "Terrain",      "Desert",  "Local",    FALSE
    }

[actionenabler_irrigate_src_extra_not_in_desert]
action        = "Build Irrigation"
actor_reqs    =
    { "type",      "name",     "range", "present"
      "UnitFlag",  "Settlers", "Local", TRUE
      "UnitClass", "Sea",      "Local", FALSE
    }
target_reqs    =
    { "type",      "name",             "range",     "present"
      "ExtraFlag", "IrrigationSource", "CAdjacent", TRUE
      "Terrain",   "Desert",           "Local",     FALSE
    }

[actionenabler_irrigate_src_tech_desert_but_allowed]
action        = "Build Irrigation"
actor_reqs    =
    { "type",      "name",        "range",  "present"
      "UnitFlag",  "Settlers",    "Local",  TRUE
      "Tech",      "Electricity", "Player", TRUE
      "UnitClass", "Sea",         "Local",  FALSE
    }
target_reqs    =
    { "type",         "name",                   "range", "present"
      "Terrain",      "Desert",                 "Local", TRUE
      "ExtraFlag",    "AllowsFarmlandOnDesert", "Local", TRUE
    }

[actionenabler_irrigate_src_ocean_desert_but_allowed]
action        = "Build Irrigation"
actor_reqs    =
    { "type",      "name",      "range", "present"
      "UnitFlag",  "Settlers",  "Local", TRUE
      "UnitClass", "Sea",       "Local", FALSE
    }
target_reqs    =
    { "type",         "name",                   "range",    "present"
      "TerrainClass", "Oceanic",                "CAdjacent", TRUE
      "Terrain",      "Desert",                 "Local",     TRUE
      "ExtraFlag",    "AllowsFarmlandOnDesert", "Local",     TRUE
    }

[actionenabler_irrigate_src_extra_desert_but_allowed]
action        = "Build Irrigation"
actor_reqs    =
    { "type",      "name",     "range", "present"
      "UnitFlag",  "Settlers", "Local", TRUE
      "UnitClass", "Sea",      "Local", FALSE
    }
target_reqs    =
    { "type",      "name",                    "range",     "present"
      "ExtraFlag", "IrrigationSource",        "CAdjacent", TRUE
      "Terrain",    "Desert",                 "Local",     TRUE
      "ExtraFlag",  "AllowsFarmlandOnDesert", "Local",     TRUE
    }

[actionenabler_alight]
action        = "Transport Alight"
actor_reqs    =
    { "type",      "name",          "range"
      "UnitState", "OnLivableTile", "Local"
      "UnitState", "Transported",   "Local"
    }
target_reqs    =
    { "type",      "name",         "range"
      "UnitState", "Transporting", "Local"
    }

[actionenabler_board]
action        = "Transport Board"
actor_reqs    =
    { "type",    "name",       "range", "present"
      "DiplRel", "Armistice",  "Local", FALSE
      "DiplRel", "War",        "Local", FALSE
      "DiplRel", "Cease-fire", "Local", FALSE
      "DiplRel", "Peace",      "Local", FALSE
      "DiplRel", "Never met",  "Local", FALSE
    }

[actionenabler_unload]
action        = "Transport Unload"
actor_reqs    =
    { "type",      "name",         "range"
      "UnitState", "Transporting", "Local"
    }
target_reqs    =
    { "type",      "name",          "range"
      "UnitState", "OnLivableTile", "Local"
      "UnitState", "Transported",   "Local"
    }

[actionenabler_disembark_from_native_tile]
action        = "Transport Disembark"
actor_reqs    =
    { "type",         "name",         "range"
      "UnitState",    "Transported",  "Local"
      "MinMoveFrags", "1",            "Local"
      "UnitState",    "OnNativeTile", "Local"
    }

[actionenabler_disembark_from_native_city]
action        = "Transport Disembark"
actor_reqs    =
    { "type",         "name",        "range"
      "UnitState",    "Transported", "Local"
      "MinMoveFrags", "1",           "Local"
      "CityTile",     "Center",      "Local"
    }

[actionenabler_disembark_from_non_native]
action        = "Transport Disembark 2"
actor_reqs    =
    { "type",           "name",         "range", "present"
      "UnitState",      "Transported",  "Local", TRUE
      "MinMoveFrags",   "1",            "Local", TRUE
      "UnitState",      "OnNativeTile", "Local", FALSE
      "CityTile",       "Center",       "Local", FALSE
    }

[actionenabler_embark]
action        = "Transport Embark"
actor_reqs    =
    { "type",         "name",       "range", "present"
      "MinMoveFrags", "1",          "Local", TRUE
      "DiplRel",      "Armistice",  "Local", FALSE
      "DiplRel",      "War",        "Local", FALSE
      "DiplRel",      "Cease-fire", "Local", FALSE
      "DiplRel",      "Peace",      "Local", FALSE
      "DiplRel",      "Never met",  "Local", FALSE
    }

[borders]
; Base border radius from city.
radius_sq_city = 15

; Border radius square increased by this amount / point of city size
size_effect    = 1

; Difference between city workable area and area permanently claimed by
; city (these tiles cannot be stolen by stronger border sources).
; 0 means exactly city workable area is immune to border stealing.
; Negative value means outer workable tiles can be stolen; highly negative
; value (more than max city radius_sq) means any workable tile can be stolen.
; If City_Radius_Sq is variable, so is the set of locked tiles; this is
; a squared value, so the radius of the ring of tiles which are workable
; but not locked (or vice versa) varies but the area is constant.
radius_sq_city_permanent = -3

[research]
; Method of calculating technology costs
;   "Civ I|II"      - Civ (I|II) style. Every new tech add base_tech_cost to
;                     cost of next tech.
;   "Classic"       - Cost of technology is:
;                       base_tech_cost * (1 + reqs) * sqrt(1 + reqs) / 2
;                     where reqs == number of requirement for tech, counted
;                     recursively.
;   "Classic+"      - Cost are read from tech.ruleset. Missing costs are
;                     generated by style "Classic".
;   "Experimental"  - Cost of technology is:
;                       base_tech_cost * (reqs^2 / (1 + sqrt(sqrt(reqs + 1)))
;                                         - 0.5)
;                     where reqs == number of requirement for tech, counted
;                     recursively. Initial techs` cost will be base_tech_cost.
;   "Experimental+" - Cost are read from tech.ruleset. Missing costs are
;                     generated by style "Experimental".
;   "Linear"        - Cost of technology is:
;                     base_tech_cost * reqs
;                     where reqs == number of requirement for tech, counted
;                     recursively.
tech_cost_style = "Linear"

; Base research cost. Used in tech cost styles where tech cost is generated.
; In other words: used everywhere unless the cost of *all* techs are
; specified and the tech cost style is "Experimental+" or "Classic+".
base_tech_cost   = 10

; Technology leak from other civilizations
; "None"           - No reduction of the technology cost.
; "Embassies"      - Technology cost is reduced depending on the number of
;                    players which already know the tech and you have an
;                    embassy with.
; "All Players"    - Technology cost is reduced depending on the number of
;                    all players (human, AI and barbarians) which already
;                    know the tech.
; "Normal Players" - Technology cost is reduced depending on the number of
;                    normal players (human and AI) which already know the
;                    tech.
tech_leakage = "All Players"

; Method of paying tech upkeep
; "None"   - no upkeep
; "Basic"  - upkeep is calculated as:
;     <Cost of technology> / tech_upkeep_divider - tech_upkeep_free
; "Cities" - upkeep is calculated like "Basic", but multiplied by number of cities
tech_upkeep_style = "None"

; upkeep cost is divided by this value
tech_upkeep_divider = 6000

; Method of selecting techs given for free
; "Goal"     - Towards player`s goal, random if no goal
; "Random"   - Random researchable tech
; "Cheapest" - Cheapest researchable tech, random among equal cost ones
free_tech_method = "Goal"

[culture]
; Minimum culture points for cultural domination victory
victory_min_points = 1800000

; How big lead relative to second best player is needed for victory
victory_lead_pct   = 200

; How much existing history grows each turn. This makes older history
; of the same original value more valuable as newer history, as it has
; gained more interest.
history_interest_pml = 0

; How much each culture point affects the migration
; from/to the city. Each culture point count as this many permilles
; of a migration point.
migration_pml = 50

[calendar]
; Year in the beginning of the game
start_year = -4000

; Year 1 instead of 0.
skip_year_0 = TRUE

; How many fragments each year has. In addition to this, "Turn_Fragments" effects are
; needed to control fragment accumulation.
; Value 0 here disables year advancement by fragment accumulation.
fragments = 0

; Calendar fragment names. If name is missing, only a fragment number +1 (so human readable
; numbers begin from 1 and not 0) is shown.

;fragment_name0 = _("Jan")
;fragment_name1 = _("Feb")
; ...

; What labels are used for positive and negative years.
; /* TRANS: year label (Common Era) */
positive_label = _("CE")
; /* TRANS: year label (Before Common Era) */
negative_label = _("BCE")

; /* <-- avoid gettext warnings
;
; Disaster types:
;
; name                    = translatable name as seen by user
; reqs                    = requirements for disaster to happen (see effects.ruleset
;                           and README.effects for help on requirements)
; frequency               = how likely disaster is to occur
; effects
;   - "DestroyBuilding"   = Random building is destroyed
;   - "ReducePopulation"  = Reduce city size by one unless it's already 1
;   - "ReducePopDestroy"  = Reduce city size by one, possibly destroying the city
;   - "EmptyFoodStock"    = Remove all food from food stock
;   - "EmptyProdStock"    = Destroy current production
;   - "Pollution"         = One tile surrounding city polluted
;   - "Fallout"           = One tile surrounding city polluted with fallout
;
; */ <-- avoid gettext warnings

[disaster_earthquake]
name           = _("Earthquake")
reqs           =
    { "type", "name", "range"
      "Terrain", "Hills", "Local"
    }
frequency      = 100
effects        = "EmptyProdStock"

[disaster_flood]
name           = _("Flood")
reqs           =
    { "type", "name", "range"
      "Extra", "River", "Adjacent"
    }
frequency      = 100
effects        = "EmptyFoodStock"

[disaster_fire]
name           = _("Fire")
reqs           =
    { "type", "name", "range"
      "MinSize", "9", "City"
    }
frequency      = 100
effects        = "DestroyBuilding"

[disaster_industrial_accident]
name           = _("Industrial Accident")
reqs           =
    { "type", "name", "range"
      "Building", "Mfg. Plant", "City"
    }
frequency      = 100
effects        = "ReducePopulation", "Pollution"

[disaster_nuclear_accident]
name           = _("Nuclear Accident")
reqs           =
    { "type", "name", "range"
      "Building", "Nuclear Plant", "City"
    }
frequency      = 100
effects        = "ReducePopulation", "Fallout"

; /* <-- avoid gettext warnings
;
; Achievement 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".
; type                    = What event grants the achievement to player.
;                           See README.achievements for list of these types.
; unique                  = If TRUE, only first one reaching the achievement will
;                           get it. Defaults to TRUE.
; value                   = Value to reach. Exact meaning of this depends on
;                           achievement type.
; culture                 = Amount of culture granted to player who gets achievement
;                           granted.
; first_msg               = Message shown to first player gaining the achievement
; cons_msg                = Message shown to consecutive players gaining the achievement
;
; */ <-- avoid gettext warnings

[achievement_spaceship]
name           = _("Spaceship Launch")
type           = "Spaceship"
unique         = FALSE
culture        = 10000
first_msg      = _("You're the first one to launch a spaceship towards Alpha Centauri!");
cons_msg       = _("You have launched a spaceship towards Alpha Centauri!")

[achievement_map_known]
name           = _("Entire Map Known")
type           = "Map_Known"
unique         = FALSE
value          = 100
culture        = 1000
first_msg      = _("You're the first one to have mapped the entire world!")
cons_msg       = _("You have mapped the entire world!")

[achievement_another_island]
name           = _("Land Ahoy")
type           = "Land_Ahoy"
unique         = FALSE
value          = 2
culture        = 100
first_msg      = _("As the first people in history, your people sight a foreign shore!")
cons_msg       = _("You sight your first foreign shore!")

[achievement_literate]
name           = _("Literate")
type           = "Literate"
unique         = FALSE
value          = 100
culture        = 100
; /* xgettext:no-c-format */
first_msg      = _("Your nation is the first to reach 100% literacy!")
; /* xgettext:no-c-format */
cons_msg       = _("Your nation has reached 100% literacy!")

[achievement_multicultural]
name           = _("Multicultural")
type           = "Multicultural"
unique         = FALSE
value          = 2
culture        = 100
first_msg      = _("You're the first nation to have citizens of multiple nationalities!")
cons_msg       = _("Your nation now has citizens of multiple nationalities!")

[achievement_metropolis]
name           = _("Metropolis")
type           = "Metropolis"
unique         = FALSE
value          = 20
culture        = 100
first_msg      = _("Your nation is the first with a city of population 20!")
cons_msg       = _("One of your cities has reached population 20!")

[achievement_cultured_city]
name           = _("Cultured City")
type           = "Cultured_City"
unique         = FALSE
value          = 1000
culture        = 100
first_msg      = _("Your nation is the first with a city of 1000 culture points!")
cons_msg       = _("One of your cities has 1000 culture points!")

[achievement_cultured_nation]
name           = _("Cultured Nation")
type           = "Cultured_Nation"
unique         = FALSE
value          = 10000
first_msg      = _("Your nation is the first one to achieve 10000 culture points!")
cons_msg       = _("Your nation has achieved 10000 culture points!")

;
; Trade settings
;
; IN = international, IC = intercontinental.
; For each of the trade route types:
; "pct"        - Trade income %. If this is 0, trade route cannot be
;                established at all
; "cancelling" - What to do to previously established traderoutes when they
;                turn illegal
;                "Active"   - Keep them active (although they will only
;                             provide nonzero income if illegal due to
;                             trademindist rather than pct==0)
;                "Inactive" - Keep them inactive
;                "Cancel"   - Cancel them altogether
; "bonus"      - One-time bonuses granted when traderoute established
;                "None"     - No one-time bonus
;                "Gold"     - Bonus to gold
;                "Science"  - Bonus to research
;                "Both"     - Bonus to gold and research
;
[trade]
settings =
  { "type",       "pct", "cancelling", "bonus"
    "National",   0,     "Cancel",     "None"
    "NationalIC", 0,     "Cancel",     "None"
    "IN",         100,   "Cancel",     "None"
    "INIC",       200,   "Cancel",     "None"
    "Ally",       100,   "Cancel",     "None"
    "AllyIC",     200,   "Cancel",     "None"
    "Enemy",      0,     "Cancel",     "None"
    "EnemyIC",    0,     "Cancel",     "None"
    "Team",       100,   "Cancel",     "None"
    "TeamIC",     200,   "Cancel",     "None"
  }

; When are goods for the trade route chosen.
; "Leaving" - Goods to carry are assigned to unit when it`s built, or it changes homecity
; "Arrival" - Goods are chosen when trade route is established, when unit arrives to destination
goods_selection = "Leaving"

; /* <-- avoid gettext warnings
;
; Goods 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".
; reqs                    = requirements for a city to provide goods (see effects.ruleset
;                           and README.effects for help on requirements)
; from_pct                = Income for the sending end of the trade route. Default is 100%
;                           This value is applied to both ends of bidirectional routes.
; to_pct                  = Income for the receiving end of the trade route. Default is 100%
;                           This value is not used at all in case of bidirectional routes.
; onetime_pct             = Onetime bonuses when traderoute is established. Default is 100%
; flags
;   - "Bidirectional"     = Trade route carrying the goods does not have "from" and "to"
;                           ends, but both ends are considered the same.
;   - "Depletes"          = Trade route gets cancelled when the source city cannot provide
;                           goods any more. Bidirectional routes gets cancelled if either
;                           one of the involved cities cannot provide goods.
; helptext                = Optional help text string; should escape all raw
;                           newlines so that xgettext parsing works
;
; */ <-- avoid gettext warnings

[goods_good]
name           = _("Goods")

; /* <-- avoid gettext warnings
;
; Clause types
;
; Clause types that are not listed here, are not enabled at all.
;
; type                   = Type of the clause, one of "Advance", "Gold", "Map", "Seamap",
;                          "City", "Ceasefire", "Peace", "Alliance", "Vision", "Embassy"
; giver_reqs             = requirements that the giving side of the clause needs to fulfill
;                          (see effects.ruleset and README.effects for help on requirements)
; receiver_reqs          = requirements that the receiving side of the clause needs to fulfill
;
; */ <-- avoid gettext warnings

[clause_advance]
type = "Advance"

[clause_gold]
type = "Gold"

[clause_map]
type = "Map"

[clause_seamap]
type = "Seamap"

[clause_city]
type = "City"

[clause_ceasefire]
type = "Ceasefire"

[clause_peace]
type = "Peace"

[clause_alliance]
type = "Alliance"

[clause_vision]
type = "Vision"

[clause_embassy]
type = "Embassy"

[playercolors]
background.r = 86
background.g = 86
background.b = 86

; Player colors for 32 players are defined below.
; Avoid greens, blues, and white / very pale colors (too easy to confuse
; with terrain).
; Avoid dark colors.
colorlist =
    { "r", "g", "b"
      255,   0,   0
      255, 255,   0
        0, 255, 255
      138,  43, 226
      255, 165,   0
      255,   0, 255
      173, 216, 230
        0, 255, 127
      250, 128, 114
      124, 252,   0
      139,   0,   0
      255, 192, 203
      211, 211, 211
      218, 112, 214
      255,  20, 147
      100, 149, 237
      255, 215,   0
      245, 222, 179
      255, 255, 128
      192, 255, 128
      204, 255,   0
      255, 211, 140
      255,  79,   0
      240, 145, 169
      255, 219,  88
      153,  17, 153
      184, 134,  11
      255, 102,   0
      102, 205, 170
      195,  33,  72
      168, 153, 230
      255, 250, 205
    }

[teams]
; Freeciv21 optional team names definition.
;
; names =
; _("Team 1"),
; _("Team 2"),
; _("Team 3"),
; _("Team 4"),
; etc...

[settings]
; Freeciv21 game settings for royale ruleset
;
set =
    { "name", "value"
     "aifill", 6
      "generator", "FRACTAL"
      "topology", "WRAPX|WRAPY|ISO"
      "mapsize", "PLAYER"
      "tilesperplayer", 100
      "tinyisles", "ENABLED"
      "temperature", 60
      "flatpoles", 0
      "startunits", "cwsx"
      "citymindist", 3
      "techlevel", 1
      "borders", "ENABLED"
      "foggedborders", "ENABLED"
      "restrictinfra", "ENABLED"
      "unreachableprotects", "DISABLED"
      "onsetbarbs", 120
      "occupychance", 100
      "razechance", 10
      "techlossforgiveness", 0
      "techlossrestore", 50
      "revolentype", "FIXED"
    }
