Project

General

Profile

Feature #1758 ยป 0050-Drop-webperimental.patch

Marko Lindqvist, 12/07/2025 08:49 PM

View differences:

data/webperimental.modpack
[datafile]
options = "+Freeciv-modpack-3.3-Devel-2024.Apr.14"
[modpack]
; Name of the modpack
name = "webperimental"
[components]
; Whether the modpack has a ruleset component
ruleset = TRUE
[ruleset]
; For modpacks with the ruleset component, either "rulesetdir" or "serv" needs to be defined.
; - "rulesetdir" gives the directory where the ruleset is
; - "serv" gives a server script to load, and which is assumed to also set the rulesetdir
rulesetdir = "webperimental"
data/webperimental/README.webperimental
Webperimental was based on the classic ruleset (via the deprecated fcweb
ruleset). It is more like classic than non web Freeciv's experimental
ruleset.
Differences compared to the classic ruleset are:
- Diplomat available from Alphabet
- AI players are created with random trait values
- Known techs tree cannot have holes in it
- Diplomats can steal gold from enemy capitals (needs Banking)
- Spies can steal gold from enemy cities (needs Banking)
- A higher percentage of a nation's gold can be stolen from its capital
(unless it's in Anarchy).
- An even higher percentage of a nation's gold can be stolen from its
capital if it is communist.
- The killstack server setting is disabled by default.
- unit stack blocks bribe/sabotage unit needs killstack.
- Spies can steal parts of other player's world map.
- Spies belonging to the owner of the Manhattan Project can nuke cities.
- a higher veteran level gives a higher chance of success.
- agents and spymasters may even escape before the nuke detonates.
- doing this to someone you aren't at war with causes international
outrage: everyone, not just the victim, gets a Casus Belli against you.
- Spies can sabotage and poison units and cities you aren't at war with.
- doing this to someone you aren't at war with causes international
outrage: everyone, not just the victim, gets a Casus Belli against you.
- Explorers can establish embassies once Writing is discovered.
This action consumes the explorer.
- Cities can be founded within enemy borders during war and
before contact.
- The Zone of Control rules have been turned off.
- There's only one barbarian nation, attacking from both land and sea.
- A player that knows Electricity has no fog of war inside their borders.
- Foot soldiers can peacefully expel foreign civilian units from your
terrain.
- It is possible to establish an embassy while inside a ship.
- The startunits are by default spread over the map.
- The Leader unit has been added to the default startunits.
- The Leader unit can destroy a domestic city. (Be careful when you scorch
the earth. If your Leader dies you lose the game.)
- Killing an enemy Leader gives you a few of their cities, some of their
gold and some of their knowledge. Not all their cities will follow you.
Some will rather turn barbarian.
- The Leader can heal light weight units belonging to you or to your allies.
- The Leader can destroy visible buildings in enemy cities, like city walls.
This has a 50% chance of success and ends the leader's turn.
- The Leader can move on shallow water without being transported by becoming
a "Leader Yacht". Conversion back and forth can be done inside a city once
Map Making has been discovered.
- Labels the year using AD/BC.
- All units can be airlifted:
- Light weight units can be airlifted once Flight is known.
- Medium weight units can be airlifted once Advanced Flight is known.
- Heavy weight units can be airlifted once Fusion Power is known.
- To airlift heavy and medium weight units an airport is required both
in the source and in the destination city.
- Cities that know Flight can airlift one (light weight) unit per turn. An
Airport allows a city to airlift one more unit per turn.
- Default minimum distance between cities is 3.
- Default map generator is `Fair islands`. It generates identical start
position islands for all players.
- The Howitzer and the Battleship can bombard.
- bombardment may hurt all units at the target tile.
- bombardment can't kill a unit.
- bombardment can kill population in a city.
- webperimental's bombardment can target unit stacks 3 tiles away.
- webperimental's bombardment doesn't replace regular attack.
- The Battleship is weak against Bomber planes.
- Moving from a ship to the beach doesn't spend all movement points.
- Airlifting to and from allied cities is allowed by default.
- Land units sees further on top of Mountain tiles.
- Railroads can't be used by enemy units by default. Regular roads can be
used by the enemy even if the restrictinfra server setting is enabled.
(The restrictinfra server setting is enabled by default.)
- An alliance has more in game consequences:
- Unit ownership can be transferred by moving a unit to an allied city
and ordering it to change home city.
- Caravan and Freight can help allies to complete wonders.
- Sun Tzu's War Academy gives its veteran bonus (combat and production)
to both its owner and to all their allies.
- J.S. Bach's Cathedral makes two unhappy citizens content in allied
cities too.
- A. Smith's Trading Co. pays for your allies' 1 upkeep buildings too.
- Some units can disrupt the supply lines of enemy units. This removes 1 MP
from the target unit at the cost of one move fragment for the unit doing
the disrupting.
- Civilians can't capture fortresses.
data/webperimental/actions.ruleset
; 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 = "Experimental web-client 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 = "Bombard", "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 regular unit move if one of the actions below is legal.
move_blocked_by = "Transport Disembark", "Conquer Extras", "Enter Hut",
"Frighten Hut"
; 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",
"Conquer Extras",
"Enter Hut", "Frighten Hut",
"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", "Transport Disembark",
"Conquer Extras",
"Enter Hut","Frighten Hut",
"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", "Transport Disembark",
"Conquer Extras",
"Enter Hut","Frighten Hut",
"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", "Frighten Hut", "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",
; "Enter Hut", "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 "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 = 3
; 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
; /* TRANS: _Disrupt Supply Lines (100% chance of success). */
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 = "Steal Gold", "Steal Gold Escape",
"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",
"Steal Maps Escape",
"Suitcase Nuke", "Suitcase Nuke 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.
quiet_actions = "Heal Unit", "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_deploy]
action = "Convert Unit"
ui_name = _("%sDeploy%s")
[action_explode_missile]
action = "Suicide Attack"
ui_name = _("%sExplode Missile%s")
[action_use_royal_sapper]
action = "Surgical Strike Building"
ui_name = _("%sUse Royal Sapper%s")
[action_eliminate_spy]
action = "Spy Attack"
ui_name = _("Eliminate %sSpy%s")
[action_conquer_fortress]
action = "Conquer Extras"
ui_name = _("%sConquer Fortress%s")
[action_use_court_physician]
action = "Heal Unit"
ui_name = _("%sUse Court Physician%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")
[action_disrupt_supply_lines]
action = "User Action 1"
ui_name = _("%sDisrupt Supply Lines%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_disrupt_supply_normal]
action = "User Action 1"
actor_reqs =
{ "type", "name", "range", "present"
"UnitTypeFlag", "SupplyLines", "Local", TRUE
"DiplRel", "War", "Local", TRUE
"UnitState", "Transported", "Local", FALSE
"MinMoveFrags", "1", "Local", TRUE
}
target_reqs =
{ "type", "name", "range", "present"
"MinMoveFrags", "1", "Local", TRUE
"UnitClass", "Sea", "Local", FALSE
"UnitClass", "Trireme", "Local", FALSE
"UnitClass", "Air", "Local", FALSE
"UnitClass", "Helicopter", "Local", FALSE
"UnitClass", "Missile", "Local", FALSE
}
[enabler_disrupt_supply_marines]
action = "User Action 1"
actor_reqs =
{ "type", "name", "range", "present"
"UnitTypeFlag", "SupplyLines", "Local", TRUE
"DiplRel", "War", "Local", TRUE
"UnitTypeFlag", "Marines", "Local", TRUE
"MinMoveFrags", "1", "Local", TRUE
}
target_reqs =
{ "type", "name", "range", "present"
"MinMoveFrags", "1", "Local", TRUE
"UnitClass", "Sea", "Local", FALSE
"UnitClass", "Trireme", "Local", FALSE
"UnitClass", "Air", "Local", FALSE
"UnitClass", "Helicopter", "Local", FALSE
"UnitClass", "Missile", "Local", FALSE
}
[enabler_sabotage_city]
action = "Sabotage City"
actor_reqs =
{ "type", "name", "range", "present"
"UnitTypeFlag", "Diplomat", "Local", TRUE
"DiplRel", "Alliance", "Local", FALSE
"DiplRel", "Team", "Local", FALSE
"DiplRel", "Foreign", "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", "present"
"UnitTypeFlag", "Spy", "Local", TRUE
"DiplRel", "Alliance", "Local", FALSE
"DiplRel", "Team", "Local", FALSE
"DiplRel", "Foreign", "Local", TRUE
"UnitState", "OnLivableTile", "Local", TRUE
"MinMoveFrags", "1", "Local", TRUE
}
[enabler_sabotage_city_target]
action = "Targeted Sabotage City Escape"
actor_reqs =
{ "type", "name", "range", "present"
"DiplRel", "Alliance", "Local", FALSE
"DiplRel", "Team", "Local", FALSE
"DiplRel", "Foreign", "Local", TRUE
"UnitTypeFlag", "Spy", "Local", TRUE
"UnitState", "OnLivableTile", "Local", TRUE
"MinMoveFrags", "1", "Local", TRUE
}
[enabler_sabotage_city_production]
action = "Sabotage City Production Escape"
actor_reqs =
{ "type", "name", "range", "present"
"DiplRel", "Alliance", "Local", FALSE
"DiplRel", "Team", "Local", FALSE
"DiplRel", "Foreign", "Local", TRUE
"UnitTypeFlag", "Spy", "Local", TRUE
"UnitState", "OnLivableTile", "Local", TRUE
"MinMoveFrags", "1", "Local", TRUE
}
[enabler_establish_embassy]
action = "Establish Embassy Stay"
actor_reqs =
{ "type", "name", "range", "present"
"UnitTypeFlag", "Diplomat", "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
"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_explorer_establish_embassy]
action = "Establish Embassy Stay"
actor_reqs =
{ "type", "name", "range", "present"
"UnitType", "Explorer", "Local", TRUE
"Tech", "Writing", "Player", 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", "present"
"UnitTypeFlag", "Spy", "Local", TRUE
"DiplRel", "Alliance", "Local", FALSE
"DiplRel", "Team", "Local", FALSE
"DiplRel", "Foreign", "Local", TRUE
"UnitState", "OnLivableTile", "Local", TRUE
"MinMoveFrags", "1", "Local", TRUE
}
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
"ServerSetting", "killstack", "World", FALSE
}
target_reqs =
{ "type", "name", "range", "present"
"UnitTypeFlag", "Unbribable", "Local", FALSE
"CityTile", "Center", "Tile", FALSE
"Gov", "Democracy", "Player", FALSE
}
[enabler_bribe_unit_killstack_enabled]
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", "present"
"UnitTypeFlag", "Spy", "Local", TRUE
"DiplRel", "Alliance", "Local", FALSE
"DiplRel", "Team", "Local", FALSE
"DiplRel", "Foreign", "Local", TRUE
"UnitState", "OnLivableTile", "Local", TRUE
"MinMoveFrags", "1", "Local", TRUE
"ServerSetting", "killstack", "World", FALSE
}
target_reqs =
{ "type", "name", "range", "present"
"CityTile", "Center", "Tile", FALSE
"MinHitPoints", "2", "Local", TRUE
}
[enabler_sabotage_unit_killstack_enabled]
action = "Sabotage Unit Escape"
actor_reqs =
{ "type", "name", "range", "present"
"UnitTypeFlag", "Spy", "Local", TRUE
"DiplRel", "Alliance", "Local", FALSE
"DiplRel", "Team", "Local", FALSE
"DiplRel", "Foreign", "Local", TRUE
"UnitState", "OnLivableTile", "Local", TRUE
"MinMoveFrags", "1", "Local", TRUE
}
target_reqs =
{ "type", "name", "range", "present"
"CityTile", "Center", "Tile", FALSE
"MinHitPoints", "2", "Local", TRUE
"MaxUnitsOnTile", "1", "Tile", TRUE
}
[enabler_steal_gold_capital]
action = "Steal Gold"
actor_reqs =
{ "type", "name", "range", "present"
"UnitTypeFlag", "Diplomat", "Local", TRUE
"UnitTypeFlag", "Spy", "Local", FALSE
"UnitState", "OnLivableTile", "Local", TRUE
"MinMoveFrags", "1", "Local", TRUE
"Tech", "Banking", "Player", TRUE
"DiplRel", "Foreign", "Local", TRUE
}
target_reqs =
{ "type", "name", "range"
"Building", "Palace", "City"
}
[enabler_steal_gold_capital_spy]
action = "Steal Gold Escape"
actor_reqs =
{ "type", "name", "range"
"UnitTypeFlag", "Spy", "Local"
"UnitState", "OnLivableTile", "Local"
"MinMoveFrags", "1", "Local"
"Tech", "Banking", "Player"
"DiplRel", "Foreign", "Local"
}
target_reqs =
{ "type", "name", "range"
"Building", "Palace", "City"
}
[enabler_steal_gold_spy]
action = "Steal Gold Escape"
actor_reqs =
{ "type", "name", "range"
"UnitTypeFlag", "Spy", "Local"
"UnitState", "OnLivableTile", "Local"
"MinMoveFrags", "1", "Local"
"Tech", "Banking", "Player"
"DiplRel", "Foreign", "Local"
}
[enabler_steal_maps]
action = "Steal Maps Escape"
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_suitcase_nuke]
action = "Suitcase Nuke"
actor_reqs =
{ "type", "name", "range", "present"
"UnitTypeFlag", "Spy", "Local", TRUE
"MinVeteran", "2", "Local", FALSE
"DiplRel", "Alliance", "Local", FALSE
"DiplRel", "Team", "Local", FALSE
"DiplRel", "Foreign", "Local", TRUE
"UnitState", "OnLivableTile", "Local", TRUE
"MinMoveFrags", "1", "Local", TRUE
"Building", "Manhattan Project", "Player", TRUE
}
[enabler_suitcase_nuke_escape]
action = "Suitcase Nuke Escape"
actor_reqs =
{ "type", "name", "range", "present"
"UnitTypeFlag", "Spy", "Local", TRUE
"MinVeteran", "2", "Local", TRUE
"DiplRel", "Alliance", "Local", FALSE
"DiplRel", "Team", "Local", FALSE
"DiplRel", "Foreign", "Local", TRUE
"UnitState", "OnLivableTile", "Local", TRUE
"MinMoveFrags", "1", "Local", TRUE
"Building", "Manhattan Project", "Player", TRUE
}
[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_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", "Armistice", "Local", FALSE
"DiplRel", "War", "Local", FALSE
"DiplRel", "Cease-fire", "Local", FALSE
"DiplRel", "Peace", "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_occupied]
action = "Found City"
actor_reqs =
{ "type", "name", "range", "present"
"UnitTypeFlag", "Cities", "Local", TRUE
"UnitState", "OnLivableTile", "Local", TRUE
"MinMoveFrags", "1", "Local", TRUE
"DiplRel", "Armistice", "Local", FALSE
"DiplRel", "Cease-fire", "Local", FALSE
"DiplRel", "Peace", "Local", FALSE
"DiplRel", "Alliance", "Local", FALSE
"DiplRel", "Team", "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_royal_sapper]
action = "Surgical Strike Building"
actor_reqs =
{ "type", "name", "range", "present"
"UnitTypeFlag", "GameLoss", "Local", TRUE
"DiplRel", "War", "Local", TRUE
"UnitState", "Transported", "Local", FALSE
}
[enabler_heal]
action = "Heal Unit"
actor_reqs =
{ "type", "name", "range", "present"
"UnitTypeFlag", "GameLoss", "Local", TRUE
"DiplRel", "War", "Local", FALSE
"DiplRel", "Cease-fire", "Local", FALSE
"DiplRel", "Armistice", "Local", FALSE
"DiplRel", "Peace", "Local", FALSE
"DiplRel", "Never met", "Local", FALSE
"MinMoveFrags", "1", "Local", TRUE
"UnitState", "OnLivableTile", "Local", TRUE
}
target_reqs =
{ "type", "name", "range", "present"
"UnitTypeFlag", "LightWeight", "Local", TRUE
}
[enabler_convert_to_leader_yatch]
action = "Convert Unit"
actor_reqs =
{ "type", "name", "range"
"UnitTypeFlag", "GameLoss", "Local"
"CityTile", "Center", "Tile"
"Tech", "Map Making", "Player"
}
; It is always legal to convert back again.
[enabler_convert_from_leader_yatch]
action = "Convert Unit"
actor_reqs =
{ "type", "name", "range"
"UnitType", "Leader Yacht", "Local"
"CityTile", "Center", "Tile"
}
[enabler_border_police]
action = "Expel Unit"
actor_reqs =
{ "type", "name", "range", "present"
"UnitTypeFlag", "BorderPolice", "Local", TRUE
"DiplRelTile", "Foreign", "Local", FALSE
"DiplRel", "Foreign", "Local", TRUE
"DiplRel", "Team", "Local", FALSE
"DiplRel", "Alliance", "Local", FALSE
"DiplRel", "War", "Local", FALSE
"MinMoveFrags", "1", "Local", TRUE
}
target_reqs =
{ "type", "name", "range", "present"
"UnitTypeFlag", "Expellable", "Local", TRUE
"DiplRelTileOther", "Foreign", "Local", FALSE
}
; The GameLoss unit requirement makes sending units on a suicide mission to
; capture and destroy cities deep inside enemy terrain national suicide.
; The risk of moving a GameLoss unit to the target city increases the cost
; of the action. Rationalization for the requirement: the physical presence
; of the Leader makes it easier to comply with the order to destroy the
; city. (See the "orders by phone" Milgram experiment variation)
;
; The domestic city requirement forces the player to invade a city before
; they can destroy it. If this limit is weakened by allowing the
; destruction of undefended (MaxUnitsOnTile) foreign cities during war it
; will lead to situations where a player can destroy a city but is unable
; to occupy it.
; Rationalization: the resistance must be crushed before the destruction.
;
; TODO: create an international incident (set the Casus_Belli_Success
; effect value to 1000) if "Destroy City" still is overpowered.
[enabler_scorched_earth]
action = "Destroy City"
actor_reqs =
{ "type", "name", "range", "present"
"UnitTypeFlag", "GameLoss", "Local", TRUE
"DiplRel", "Foreign", "Local", FALSE
"MinMoveFrags", "1", "Local", TRUE
"UnitState", "OnLivableTile", "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_bombard_city]
action = "Bombard"
actor_reqs =
{ "type", "name", "range", "present"
"UnitTypeFlag", "Bombarder", "Local", TRUE
"MinMoveFrags", "1", "Local", TRUE
"DiplRel", "War", "Local", TRUE
}
target_reqs =
{ "type", "name", "range", "present"
"DiplRelTileOther", "War", "Local", TRUE
}
[enabler_bombard_no_city]
action = "Bombard"
actor_reqs =
{ "type", "name", "range", "present"
"UnitTypeFlag", "Bombarder", "Local", TRUE
"MinMoveFrags", "1", "Local", TRUE
"DiplRel", "War", "Local", TRUE
}
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"
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
}
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
}
[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_light_unit]
action = "Airlift Unit"
actor_reqs =
{ "type", "name", "range", "present"
"UnitTypeFlag", "LightWeight", "Local", TRUE
"UnitState", "Transporting", "Local", FALSE
"MinMoveFrags", "1", "Local", TRUE
"CityTile", "Center", "Tile", TRUE
}
[enabler_airlift_medium_unit]
action = "Airlift Unit"
actor_reqs =
{ "type", "name", "range", "present"
"UnitTypeFlag", "MediumWeight", "Local", TRUE
"UnitState", "Transporting", "Local", FALSE
"Tech", "Advanced Flight", "Player", TRUE
"Building", "Airport", "City", TRUE
"MinMoveFrags", "1", "Local", TRUE
"CityTile", "Center", "Tile", TRUE
}
target_reqs =
{ "type", "name", "range"
"Building", "Airport", "City"
}
[enabler_airlift_heavy_unit]
action = "Airlift Unit"
actor_reqs =
{ "type", "name", "range", "present"
"UnitTypeFlag", "HeavyWeight", "Local", TRUE
"UnitState", "Transporting", "Local", FALSE
"Tech", "Fusion Power", "Player", TRUE
"Building", "Airport", "City", TRUE
"MinMoveFrags", "1", "Local", TRUE
"CityTile", "Center", "Tile", TRUE
}
target_reqs =
{ "type", "name", "range"
"Building", "Airport", "City"
}
[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]
... This diff was truncated because it exceeds the maximum size that can be displayed.
    (1-1/1)