
; 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 = "Classic actions data for Freeciv"
options = "+Freeciv-ruleset-3.4-Devel-2025.Jan.17 web-compatible"
format_version = 50

[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.
;   if_attacker    - this requirement vector must be true before a unit even
;                    considers to auto attack.
;   attack_actions - the actions to try during an auto attack in the order
;                    they should be tried.

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

attack_actions = "Collect Ransom", "Attack", "Suicide Attack"

[actions]
; Forbid "Enter Marketplace" if any one of the listed actions are legal.
enter_marketplace_blocked_by = "Establish Trade Route"

; Forbid "Attack" if any one of the listed actions are legal.
attack_blocked_by = "Collect Ransom", "Explode Nuclear", "Nuke City",
                    "Nuke Units"

; Forbid "Suicide Attack" if any one of the listed actions are legal.
suicide_attack_blocked_by = "Collect Ransom", "Explode Nuclear",
                            "Nuke City", "Nuke Units"

; Forbid "Conquer City Shrink" if any one of the listed actions are legal.
conquer_city_shrink_blocked_by = "Explode Nuclear", "Nuke City", "Nuke Units",
                                 "Attack", "Suicide Attack"

; Forbid "Conquer City Shrink 2" if any one of the listed actions are legal.
conquer_city_shrink_2_blocked_by = "Explode Nuclear", "Nuke City", "Nuke Units",
                                   "Attack", "Suicide Attack"

; Forbid regular unit move if one of the actions below is legal.
move_blocked_by = "Transport Disembark", "Transport Disembark 2",
                  "Conquer Extras", "Conquer Extras 2",
                  "Enter Hut", "Enter Hut 2",
                  "Frighten Hut", "Frighten Hut 2"

; Actor units will - under certain circumstances - be forced to try
; performing the following actions in the specified order after successfully
; performing "Bribe Unit".
bribe_unit_post_success_forced_actions = "Transport Embark",
                                         "Transport Disembark",
                                         "Transport Disembark 2",
                                         "Conquer Extras",
                                         "Conquer Extras 2",
                                         "Enter Hut", "Enter Hut 2",
                                         "Frighten Hut", "Frighten Hut 2",
                                         "Unit Move"

; Actor units will - under certain circumstances - be forced to try
; performing the following actions in the specified order after successfully
; performing "Attack".
attack_post_success_forced_actions = "Conquer City Shrink", "Conquer City Shrink 2",
                                     "Transport Disembark",
                                     "Transport Disembark 2",
                                     "Conquer Extras", "Conquer Extras 2",
                                     "Enter Hut", "Enter Hut 2",
                                     "Frighten Hut", "Frighten Hut 2",
                                     "Unit Move"

; Actor units will - under certain circumstances - be forced to try
; performing the following actions in the specified order after successfully
; performing "Collect Ransom".
collect_ransom_post_success_forced_actions =
                                     "Conquer City Shrink", "Conquer City Shrink 2",
                                     "Transport Disembark",
                                     "Transport Disembark 2",
                                     "Conquer Extras", "Conquer Extras 2",
                                     "Enter Hut", "Enter Hut 2",
                                     "Frighten Hut", "Frighten Hut 2",
                                     "Unit Move"

; The city that made the unit´s current tile native is gone. This is a Hail
; Mary attempt at survival by performing an action. Evaluated against an
; adjacent tile. Currently only able to target native tiles.
escape_city = "Transport Embark", "Enter Hut", "Enter Hut 2",
              "Frighten Hut", "Frighten Hut 2", "Unit Move"

; The unit`s stack has been defeated and is scheduled for execution but the
; unit can do Escape action. Evaluated against an adjacent tile.
;unit_stack_death = "Transport Embark",
;                   "Conquer Extras", "Conquer Extras 2",
;                   "Enter Hut", "Enter Hut 2",
;                   "Frighten Hut", "Unit Move"

; 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
; "Disband Unit Recover" 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.
disband_unit_recover_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
; "Bombard Lethal" 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_lethal_max_range = 1

; The minimal distance from the actor unit to the target. The value 0 means
; that the target must be at the tile of the actor unit. The value 1 means
; that the tile must be a tile adjacent to the actor unit.
explode_nuclear_min_range = 0

; 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

; Will performing this action always consume the actor unit?
explode_nuclear_consuming_always = TRUE

; The minimal distance from the actor unit to the target. The value 0 means
; that the target must be at the tile of the actor unit. The value 1 means
; that the tile must be a tile adjacent to the actor unit.
nuke_city_min_range = 1

; 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

; Will performing this action always consume the actor unit?
nuke_city_consuming_always = TRUE

; The kind of target the "Nuke City" action has. The target requirements of
; its enablers are evaluated against the target. The target owner is the one
; that gets a Casus Belli if the ruleset has a Casus Belli for this action.
; Supported values are "City" and "Tile".
nuke_city_target_kind = "City"

; The minimal distance from the actor unit to the target. The value 0 means
; that the target must be at the tile of the actor unit. The value 1 means
; that the tile must be a tile adjacent to the actor unit.
nuke_units_min_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

; Will performing this action always consume the actor unit?
nuke_units_consuming_always = TRUE

; 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"

; Will performing this action always consume the actor unit?
found_city_consuming_always = TRUE

; Blank ruleset defined user actions.
; See the section "Ruleset defined actions" in doc/README.actions
; Example: set up "User Action 1"
;user_action_1_target_kind            = "Unit"
;user_action_1_min_range              = 1
;user_action_1_max_range              = 3
;user_action_1_actor_consuming_always = FALSE

; Some actions have a action dice roll before the action starts where it can
; fail. The initial probability of success is 100% unless the action appears
; in the following list. Then the initial probability comes from the setting
; diplchance. The initial probability of success is modified by the
; Action_Odds_Pct effect before the roll happens.
diplchance_initial_odds = "Sabotage City", "Sabotage City Escape",
                          "Targeted Sabotage City Escape",
                          "Sabotage City Production Escape",
                          "Steal Tech", "Steal Tech Escape Expected",
                          "Targeted Steal Tech Escape Expected",
                          "Incite City", "Incite City Escape"

; 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 Shrink 2" has the same relation to "Conquer City Shrink".
; So is "Enter Hut 2" for "Enter Hut", "Frighten Hut 2" for "Frighten Hut" and
; "Conquer Extras" for "Conquer Extras 2".
; The version from the non native tile and the native tile version won`t
; appear in the same action selection dialog given their opposite
; requirements. Avoid double entries in the auto help by silencing it.
quiet_actions = "Transport Disembark 2", "Conquer City Shrink 2", "Enter Hut 2",
                "Frighten Hut 2", "Conquer Extras 2", "Unit Move"

; /* <-- avoid gettext warnings
;
; Actions:
;
; action               = the action to configure.
; ui_name              = What each action should be called when showing them to the player.
;                        The first %s should be before the mnemonic of the action.
;                        A Freeciv 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.
;
; README.actions lists the possible actions
;
; */ <-- avoid gettext warnings

[action_poison_city]
action  = "Poison City Escape"
ui_name = _("%sPoison City%s")

[action_sabotage_city_escape]
action  = "Sabotage City Escape"
ui_name = _("%sSabotage City Escape%s")

[action_industrial_sabotage]
action  = "Targeted Sabotage City Escape"
ui_name = _("Industrial %sSabotage%s")

[action_industrial_sabotage_production]
action  = "Sabotage City Production Escape"
ui_name = _("Industrial %sSabotage Production%s")

[action_industrial_espionage]
action  = "Targeted Steal Tech Escape Expected"
ui_name = _("Indus%strial Espionage%s")

[action_incite_a_revolt]
action  = "Incite City"
ui_name = _("Incite a %sRevolt%s")

[action_sell_goods]
action  = "Enter Marketplace"
ui_name = _("Sell %sGoods%s")

[action_bribe_enemy_unit]
action  = "Bribe Unit"
ui_name = _("%sBribe Enemy Unit%s")

[action_sabotage_enemy_unit]
action  = "Sabotage Unit Escape"
ui_name = _("%sSabotage Enemy Unit%s")

[action_build_city]
action  = "Found City"
ui_name = _("%sBuild City%s")

[action_add_to_city]
action  = "Join City"
ui_name = _("%sAdd to City%s")

[action_explode_nuclear_in_place]
action  = "Explode Nuclear"
ui_name = _("Explode %sNuclear In Place%s")

[action_explode_missile]
action  = "Suicide Attack"
ui_name = _("%sExplode Missile%s")

[action_disembark_from_non_native]
action  = "Transport Disembark 2"
ui_name = _("%sDisembark from non native%s")

[action_eliminate_spy]
action  = "Spy Attack"
ui_name = _("Eliminate %sSpy%s")

[action_conquer_fortress]
action  = "Conquer Extras"
ui_name = _("%sConquer Fortress%s")

[action_conquer_fortress_from_non_native]
action  = "Conquer Extras 2"
ui_name = _("%sConquer Fortress from non native%s")

[action_enter_hut_from_non_native]
action  = "Enter Hut 2"
ui_name = _("Enter %sHut from non native%s")

[action_frighten_hut_from_non_native]
action  = "Frighten Hut 2"
ui_name = _("Frighten %sHut from non native%s")

[action_paradrop_to_contested_landing]
action  = "Paradrop Unit Enter Conquer"
ui_name = _("%sParadrop to Contested Landing%s")

[action_keep_moving]
action  = "Unit Move"
ui_name = _("%sKeep moving%s")

; /* <-- avoid gettext warnings
;
; Enablers:
;
; action               = the action to enable.
; actor_reqs           = requirements that apply to the actor.
; target_reqs          = requirements that apply to the target.
; comment              = Comment for the benefit to someone examining the ruleset
;                        Not used by freeciv any other way.
;
; README.actions lists the possible actions and their hard coded
; requirements.
;
; An enabler is active when its actor_reqs AND its target_reqs are
; satisfied.
;
; */ <-- avoid gettext warnings

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

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

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

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

[enabler_eliminate_spy]
action        = "Spy Attack"
actor_reqs    =
    { "type",         "name",          "range", "present"
      "UnitTypeFlag", "Spy",           "Local", TRUE
      "UnitState",    "OnLivableTile", "Local", TRUE
      "MinMoveFrags", "1",             "Local", TRUE
      "DiplRel",      "Alliance",      "Local", FALSE
      "DiplRel",      "Team",          "Local", FALSE
      "DiplRel",      "Foreign",       "Local", TRUE
    }
target_reqs   =
    { "type",   "name", "range", "present"
      "CityTile", "Center", "Tile", FALSE
    }

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

[enabler_establish_embassy_spy]
action        = "Establish Embassy"
actor_reqs    =
    { "type",         "name",             "range", "present"
      "UnitTypeFlag", "Spy",              "Local", TRUE
      "UnitState",    "OnLivableTile",    "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
    }

[enabler_investigate_city]
action        = "Investigate City Spend Unit"
actor_reqs    =
    { "type",         "name",          "range", "present"
      "UnitTypeFlag", "Diplomat",      "Local", TRUE
      "UnitState",    "OnLivableTile", "Local", TRUE
      "MinMoveFrags", "1",             "Local", TRUE
      "DiplRel",      "Foreign",       "Local", TRUE
      "UnitTypeFlag", "Spy",           "Local", FALSE
    }

[enabler_investigate_city_spy]
action        = "Investigate City"
actor_reqs    =
    { "type",         "name",          "range"
      "UnitTypeFlag", "Spy",           "Local"
      "UnitState",    "OnLivableTile", "Local"
      "MinMoveFrags", "1",             "Local"
      "DiplRel",      "Foreign",       "Local"
    }

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

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

[enabler_steal_tech_random_esc]
action        = "Steal Tech Escape Expected"
actor_reqs    =
    { "type",         "name",          "range"
      "UnitTypeFlag", "Spy",           "Local"
      "UnitState",    "OnLivableTile", "Local"
      "MinMoveFrags", "1",             "Local"
      "DiplRel",      "Foreign",       "Local"
    }
target_reqs   =
    { "type",        "name",      "range",  "present"
      "NationGroup", "Barbarian", "Player", FALSE
    }

[enabler_steal_tech_target]
action        = "Targeted Steal Tech Escape Expected"
actor_reqs    =
    { "type",         "name",          "range"
      "UnitTypeFlag", "Spy",           "Local"
      "UnitState",    "OnLivableTile", "Local"
      "MinMoveFrags", "1",             "Local"
      "DiplRel",      "Foreign",       "Local"
    }
target_reqs   =
    { "type",        "name",      "range",  "present"
      "NationGroup", "Barbarian", "Player", FALSE
    }

[enabler_incite_city]
action        = "Incite City"
actor_reqs    =
    { "type",         "name",          "range", "present"
      "UnitTypeFlag", "Diplomat",      "Local", TRUE
      "DiplRel",      "Alliance",      "Local", FALSE
      "DiplRel",      "Team",          "Local", FALSE
      "UnitState",    "OnLivableTile", "Local", TRUE
      "MinMoveFrags", "1",             "Local", TRUE
      "DiplRel",      "Foreign",       "Local", TRUE
      "UnitTypeFlag", "Spy",           "Local", FALSE
    }
target_reqs   =
    { "type",     "name",      "range",  "present"
      "Gov",      "Democracy", "Player", FALSE
      "Building", "Palace",    "City",   FALSE
    }

[enabler_incite_city_spy]
action        = "Incite City Escape"
actor_reqs    =
    { "type",         "name",          "range", "present"
      "UnitTypeFlag", "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",      "Democracy", "Player", FALSE
      "Building", "Palace",    "City",   FALSE
    }

[enabler_bribe_unit]
action        = "Bribe Unit"
actor_reqs    =
    { "type",         "name",          "range", "present"
      "UnitTypeFlag", "Diplomat",      "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"
      "UnitTypeFlag",   "Unbribable", "Local",  FALSE
      "CityTile",       "Center",     "Tile",   FALSE
      "Gov",            "Democracy",  "Player", FALSE
      "MaxUnitsOnTile", "1",          "Tile",   TRUE
    }

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

[enabler_trade_route]
action        = "Establish Trade Route"
actor_reqs    =
    { "type",         "name",        "range", "present"
      "UnitTypeFlag", "TradeRoute",  "Local", TRUE
      "UnitState",    "HasHomeCity", "Local", TRUE
    }

[enabler_marketplace]
action        = "Enter Marketplace"
actor_reqs    =
    { "type",         "name",        "range", "present"
      "UnitTypeFlag", "TradeRoute",  "Local", TRUE
      "UnitState",    "HasHomeCity", "Local", TRUE
    }

[enabler_help_build_wonder]
action        = "Help Wonder"
actor_reqs    =
    { "type",         "name",       "range", "present"
      "UnitTypeFlag", "HelpWonder", "Local", TRUE
      "DiplRel",      "Foreign",    "Local", FALSE
    }
target_reqs   =
    { "type",   "name", "range"
      "BuildingGenus", "GreatWonder", "Local"
    }

[enabler_disband_unit_recover]
action        = "Disband Unit Recover"
actor_reqs    =
    { "type",         "name",          "range", "present"
      "UnitTypeFlag", "EvacuateFirst", "Local", FALSE
      "DiplRel",      "War",           "Local", FALSE
      "DiplRel",      "Cease-fire",    "Local", FALSE
      "DiplRel",      "Armistice",     "Local", FALSE
      "DiplRel",      "Peace",         "Local", FALSE
    }

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

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

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

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

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

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

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

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

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

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

[enabler_ransom_from_native]
action        = "Collect Ransom"
actor_reqs    =
    { "type",          "name",         "range", "present"
      "UnitTypeFlag",  "NonMil",       "Local", FALSE
      "UnitClassFlag", "Missile",      "Local", FALSE
      "MinMoveFrags",  "1",            "Local", TRUE
      "UnitState",     "OnNativeTile", "Local", TRUE
      "DiplRel",       "War",          "Local", TRUE
    }
target_reqs   =
    { "type",          "name",         "range"
      "PlayerState",   "Barbarian",    "Player"
    }

[enabler_ransom_marines]
action        = "Collect Ransom"
actor_reqs    =
    { "type",          "name",         "range", "present"
      "UnitTypeFlag",  "NonMil",       "Local", FALSE
      "UnitClassFlag", "Missile",      "Local", FALSE
      "MinMoveFrags",  "1",            "Local", TRUE
      "UnitTypeFlag",  "Marines",      "Local", TRUE
      "DiplRel",       "War",          "Local", TRUE
    }
target_reqs   =
    { "type",          "name",         "range"
      "PlayerState",   "Barbarian",    "Player"
    }

[enabler_ransom_att_from_non_native]
action        = "Collect Ransom"
actor_reqs    =
    { "type",          "name",             "range", "present"
      "UnitTypeFlag",  "NonMil",           "Local", FALSE
      "UnitClassFlag", "Missile",          "Local", FALSE
      "MinMoveFrags",  "1",                "Local", TRUE
      "UnitClassFlag", "AttFromNonNative", "Local", TRUE
      "DiplRel",       "War",              "Local", TRUE
    }
target_reqs   =
    { "type",          "name",             "range"
      "PlayerState",   "Barbarian",        "Player"
    }

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

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

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

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

[enabler_paradrop_base_to_claimed]
action        = "Paradrop Unit Enter"
actor_reqs    =
    { "type",          "name",         "range", "present"
      "UnitTypeFlag",  "Paratroopers", "Local", TRUE
      "MinMoveFrags",  "3",            "Local", TRUE
      "UnitState",     "Transporting", "Local", FALSE
      "Extra",         "Airbase",      "Tile",  TRUE
      "DiplRel",       "Peace",        "Local", FALSE
      "DiplRel",       "War",          "Local", FALSE
      "UnitClassFlag", "HutFrighten",  "Local", FALSE
    }
target_reqs   =
    { "type",     "name",    "range", "present"
      "CityTile", "Claimed", "Tile",  TRUE
    }

[enabler_paradrop_base_to_unclaimed]
action        = "Paradrop Unit Enter"
actor_reqs    =
    { "type",          "name",         "range", "present"
      "UnitTypeFlag",  "Paratroopers", "Local", TRUE
      "MinMoveFrags",  "3",            "Local", TRUE
      "UnitState",     "Transporting", "Local", FALSE
      "Extra",         "Airbase",      "Tile",  TRUE
      "UnitClassFlag", "HutFrighten",  "Local", FALSE
    }
target_reqs   =
    { "type",     "name",    "range", "present"
      "CityTile", "Claimed", "Tile",  FALSE
      "Extra",    "Fortress","Tile",  FALSE
    }

[enabler_paradrop_base_to_war_conquer]
action        = "Paradrop Unit Enter Conquer"
actor_reqs    =
    { "type",          "name",          "range", "present"
      "UnitTypeFlag",  "Paratroopers",  "Local", TRUE
      "MinMoveFrags",  "3",             "Local", TRUE
      "UnitState",     "Transporting",  "Local", FALSE
      "Extra",         "Airbase",       "Tile",  TRUE
      "DiplRel",       "War",           "Local", TRUE
      "UnitClassFlag", "CanOccupyCity", "Local", TRUE
      "UnitTypeFlag",  "NonMil",        "Local", FALSE
      "UnitClassFlag", "HutFrighten",   "Local", FALSE
    }
target_reqs   =
    { "type",     "name",    "range", "present"
      "CityTile", "Claimed", "Tile",  TRUE
    }

[enabler_paradrop_base_to_unclaimed_base]
action        = "Paradrop Unit Enter Conquer"
actor_reqs    =
    { "type",          "name",         "range", "present"
      "UnitTypeFlag",  "Paratroopers", "Local", TRUE
      "MinMoveFrags",  "3",            "Local", TRUE
      "UnitState",     "Transporting", "Local", FALSE
      "Extra",         "Airbase",      "Tile",  TRUE
      "UnitClassFlag", "HutFrighten",  "Local", FALSE
    }
target_reqs   =
    { "type",     "name",    "range", "present"
      "CityTile", "Claimed", "Tile",  FALSE
      "CityTile", "Center",  "Tile",  FALSE
      "Extra",    "Fortress","Tile",  TRUE
    }

[enabler_paradrop_city_to_claimed]
action        = "Paradrop Unit Enter"
actor_reqs    =
    { "type",          "name",         "range", "present"
      "UnitTypeFlag",  "Paratroopers", "Local", TRUE
      "MinMoveFrags",  "3",            "Local", TRUE
      "UnitState",     "Transporting", "Local", FALSE
      "CityTile",      "Center",       "Tile",  TRUE
      "DiplRel",       "Peace",        "Local", FALSE
      "DiplRel",       "War",          "Local", FALSE
      "UnitClassFlag", "HutFrighten",  "Local", FALSE
    }
target_reqs   =
    { "type",     "name",    "range", "present"
      "CityTile", "Claimed", "Tile",  TRUE
    }

[enabler_paradrop_city_to_unclaimed]
action        = "Paradrop Unit Enter"
actor_reqs    =
    { "type",          "name",         "range", "present"
      "UnitTypeFlag",  "Paratroopers", "Local", TRUE
      "MinMoveFrags",  "3",            "Local", TRUE
      "UnitState",     "Transporting", "Local", FALSE
      "CityTile",      "Center",       "Tile" , TRUE
      "UnitClassFlag", "HutFrighten",  "Local", FALSE
    }
target_reqs   =
    { "type",     "name",    "range", "present"
      "CityTile", "Claimed", "Tile",  FALSE
      "Extra",    "Fortress","Tile",  FALSE
    }

[enabler_paradrop_city_to_war_conquer]
action        = "Paradrop Unit Enter Conquer"
actor_reqs    =
    { "type",          "name",          "range", "present"
      "UnitTypeFlag",  "Paratroopers",  "Local", TRUE
      "MinMoveFrags",  "3",             "Local", TRUE
      "UnitState",     "Transporting",  "Local", FALSE
      "CityTile",      "Center",        "Tile",  TRUE
      "DiplRel",       "War",           "Local", TRUE
      "UnitClassFlag", "CanOccupyCity", "Local", TRUE
      "UnitTypeFlag",  "NonMil",        "Local", FALSE
      "UnitClassFlag", "HutFrighten",   "Local", FALSE
    }
target_reqs   =
    { "type",     "name",    "range", "present"
      "CityTile", "Claimed", "Tile",  TRUE
    }

[enabler_paradrop_city_to_unclaimed_base]
action        = "Paradrop Unit Enter Conquer"
actor_reqs    =
    { "type",          "name",         "range", "present"
      "UnitTypeFlag",  "Paratroopers", "Local", TRUE
      "MinMoveFrags",  "3",            "Local", TRUE
      "UnitState",     "Transporting", "Local", FALSE
      "CityTile",      "Center",       "Tile",  TRUE
      "UnitClassFlag", "HutFrighten",  "Local", FALSE
    }
target_reqs   =
    { "type",     "name",    "range", "present"
      "CityTile", "Claimed", "Tile",  FALSE
      "CityTile", "Center",  "Tile",  FALSE
      "Extra",    "Fortress","Tile",  TRUE
    }

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

[enabler_airlift_unit]
action        = "Airlift Unit"
actor_reqs    =
    { "type",          "name",         "range", "present"
      "UnitClass",     "Land",         "Local", TRUE
      "UnitState",     "Transporting", "Local", FALSE
      "MinMoveFrags",  "1",            "Local", TRUE
      "CityTile",      "Center",       "Tile",  TRUE
    }

[enabler_transform_terrain]
action        = "Transform Terrain"
actor_reqs    =
    { "type",         "name",      "range"
      "UnitTypeFlag", "Transform", "Local"
      "UnitTypeFlag", "Workers",   "Local"
    }

[enabler_cultivate]
action        = "Cultivate"
actor_reqs    =
    { "type",         "name",    "range", "present"
      "UnitTypeFlag", "Workers", "Local", TRUE
    }

[enabler_plant]
action        = "Plant"
actor_reqs    =
    { "type",         "name",    "range", "present"
      "UnitTypeFlag", "Workers", "Local", TRUE
    }

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

[enabler_clean]
action        = "Clean"
actor_reqs    =
    { "type",         "name",    "range", "present"
      "UnitTypeFlag", "Workers", "Local", TRUE
    }

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

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

[enabler_road]
action        = "Build Road"
actor_reqs    =
    { "type",         "name",    "range"
      "UnitTypeFlag", "Workers", "Local"
    }
target_reqs   =
    { "type",          "name",         "range"
      "TerrainAlter",  "CanRoad",      "Tile"
    }

[enabler_base]
action        = "Build Base"
actor_reqs    =
    { "type",         "name",    "range"
      "UnitTypeFlag", "Workers", "Local"
    }
target_reqs   =
    { "type",          "name",         "range"
      "TerrainAlter",  "CanBase",      "Tile"
    }

[enabler_mining]
action        = "Build Mine"
actor_reqs    =
    { "type",         "name",    "range"
      "UnitTypeFlag", "Workers", "Local"
    }
target_reqs   =
    { "type",          "name",         "range", "present"
      "TerrainFlag",   "Oil",          "Tile",  FALSE
      "TerrainAlter",  "CanMine",      "Tile",  TRUE
    }

[enabler_desert_oil]
action        = "Build Mine"
actor_reqs    =
    { "type",         "name",         "range"
      "UnitTypeFlag", "Workers",      "Local"
      "Tech",         "Construction", "Player"
    }
target_reqs   =
    { "type",    "name",         "range"
      "Terrain", "Desert",       "Tile"
    }

[enabler_glacier_oil]
action        = "Build Mine"
actor_reqs    =
    { "type",         "name",     "range"
      "UnitTypeFlag", "Workers",  "Local"
      "Tech",         "Refining", "Player"
    }
target_reqs   =
    { "type",    "name",     "range"
      "Terrain", "Glacier",  "Tile"
    }

[enabler_irrigate_src_ocean]
action        = "Build Irrigation"
actor_reqs    =
    { "type",         "name",    "range"
      "UnitTypeFlag", "Workers", "Local"
    }
target_reqs   =
    { "type",         "name",        "range"
      "TerrainClass", "Oceanic",     "CAdjacent"
      "TerrainAlter", "CanIrrigate", "Tile"
    }

[enabler_irrigate_src_river]
action        = "Build Irrigation"
actor_reqs    =
    { "type",         "name",    "range"
      "UnitTypeFlag", "Workers", "Local"
    }
target_reqs   =
    { "type",         "name",        "range"
      "Extra",        "River",       "CAdjacent"
      "TerrainAlter", "CanIrrigate", "Tile"
    }

[enabler_irrigate_src_irrigation]
action        = "Build Irrigation"
actor_reqs    =
    { "type",         "name",    "range"
      "UnitTypeFlag", "Workers", "Local"
    }
target_reqs   =
    { "type",         "name",        "range"
      "Extra",        "Irrigation",  "CAdjacent"
      "TerrainAlter", "CanIrrigate", "Tile"
    }

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

[enabler_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
    }

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

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

[enabler_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
    }

[enabler_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
    }

[enabler_regular_move]
action        = "Unit Move"
actor_reqs    =
    { "type",         "name",        "range", "present"
      "MinMoveFrags", "1",           "Local", TRUE
      "UnitState",    "Transported", "Local", FALSE
    }

[enabler_hut_enter_from_native_tile]
action        = "Enter Hut"
actor_reqs    =
    { "type",          "name",         "range", "present"
      "MinMoveFrags",  "1",            "Local", TRUE
      "UnitState",     "OnNativeTile", "Local", TRUE
      "UnitClassFlag", "HutFrighten",  "Local", FALSE
    }

[enabler_hut_enter_from_non_native]
action        = "Enter Hut 2"
actor_reqs    =
    { "type",           "name",         "range", "present"
      "MinMoveFrags",   "1",            "Local", TRUE
      "UnitState",      "OnNativeTile", "Local", FALSE
      "UnitClassFlag",  "HutFrighten",  "Local", FALSE
    }

[enabler_hut_from_native_tile]
action        = "Frighten Hut"
actor_reqs    =
    { "type",          "name",         "range"
      "MinMoveFrags",  "1",            "Local"
      "UnitState",     "OnNativeTile", "Local"
      "UnitClassFlag", "HutFrighten",  "Local"
    }

[enabler_hut_from_non_native]
action        = "Frighten Hut 2"
actor_reqs    =
    { "type",           "name",         "range", "present"
      "MinMoveFrags",   "1",            "Local", TRUE
      "UnitState",      "OnNativeTile", "Local", FALSE
      "UnitClassFlag",  "HutFrighten",  "Local", TRUE
    }

[enabler_claim_extra_war_from_native_tile]
action        = "Conquer Extras"
actor_reqs    =
    { "type",         "name",         "range"
      "MinMoveFrags", "1",            "Local"
      "DiplRel",      "War",          "Local"
      "UnitState",    "OnNativeTile", "Local"
    }

[enabler_claim_extra_war_from_non_native]
action        = "Conquer Extras 2"
actor_reqs    =
    { "type",         "name",           "range", "present"
      "MinMoveFrags", "1",              "Local", TRUE
      "DiplRel",      "War",            "Local", TRUE
      "UnitState",    "OnNativeTile",   "Local", FALSE
    }

[enabler_claim_extra_unowned_from_native_tile]
action        = "Conquer Extras"
actor_reqs    =
    { "type",         "name",         "range", "present"
      "MinMoveFrags", "1",            "Local", TRUE
      "UnitState",    "OnNativeTile", "Local", TRUE
    }
target_reqs   =
    { "type",         "name",         "range", "present"
      "CityTile",     "Extras Owned", "Tile",  FALSE
    }

[enabler_claim_extra_unowned_from_non_native]
action        = "Conquer Extras 2"
actor_reqs    =
    { "type",         "name",         "range", "present"
      "MinMoveFrags", "1",            "Local", TRUE
      "UnitState",    "OnNativeTile", "Local", FALSE
    }
target_reqs   =
    { "type",         "name",         "range", "present"
      "CityTile",     "Extras Owned", "Tile",  FALSE
    }

[enabler_gain_veterancy]
action        = "Gain Veterancy"
actor_reqs    =
    { "type", "name", "range", "present"
    }

[enabler_civil_war]
action        = "Civil War"
actor_reqs    =
    { "type", "name", "range", "present"
    }

[enabler_finish_unit]
action        = "Finish Unit"
actor_reqs    =
    { "type", "name", "range", "present"
    }

[enabler_finish_building]
action        = "Finish Building"
actor_reqs    =
    { "type", "name", "range", "present"
    }
