webperimental: killstack decides stack protects.
[freeciv.git] / data / civ2 / game.ruleset
bloba066b1764ebb3576cbfd4d031245208b126c7054
1 ; Modifying this file:
2 ; You should not modify this file except to make bugfixes or
3 ; for other "maintenance".  If you want to make custom changes,
4 ; you should create a new datadir subdirectory and copy this file
5 ; into that directory, and then modify that copy.  Then use the
6 ; command "rulesetdir <mysubdir>" in the server to have freeciv
7 ; use your new customized file.
9 ; Note that the freeciv AI may not cope well with anything more
10 ; than minor changes.
12 [datafile]
13 description="Civ2-style game rules for Freeciv"
14 options="+Freeciv-ruleset-Devel-2017.Jan.02"
15 format_version=20
17 ; This section contains meta information for freeciv-ruledit to recreate the ruleset
18 ; file in a form wanted. These have no in-game effect whatsoever
19 [ruledit]
21 ; Which file to read description in from.
22 ;description_file = ""
24 [about]
25 ; Ruleset name
26 name = _("Civ2 ruleset")
28 ; There`s no separate versioning in rulesets part of main freeciv distribution
29 ;version = ""
31 ; Summary of the ruleset
32 summary = _("\
33 You are playing with civ2 style rules. These are\
34  quite close to classic (old default) Freeciv rules,\
35  but with some additions.\
38 ; Detailed description
39 ; When updating this, update also desciption_file in [ruledit] section to match
40 ; description = ""
42 ; What capabilities ruleset provides for the scenarios.
43 ; mimimum-default-sets - Default units, terrains, buildings, etc
44 capabilities = "minimum-default-sets"
46 [options]
47 global_init_techs=""
48 global_init_buildings="Palace"
50 [civstyle]
51 ; Parameters used to generalize the calculation of city granary size:
52 ;   if city_size <= num_inis:
53 ;     city_granary_size = (granary_food_ini[city_size] * foodbox / 100)
54 ;   if city_size > num_inis;
55 ;     city_granary_size = (granary_food_ini[num_inis] +
56 ;        granary_food_inc * (city_size - num_inis)) * foodbox / 100
57 granary_food_ini = 20
58 granary_food_inc = 10
60 ; City center minimum outputs
61 min_city_center_food    = 1
62 min_city_center_shield  = 1
63 min_city_center_trade   = 0
65 ; Square of initial city radius
66 init_city_radius_sq     = 5
68 ; Square of initially visible radius (true distance).
69 init_vis_radius_sq      = 5
71 ; Number of veteran levels lost when upgrading a unit
72 upgrade_veteran_loss     = 10
74 ; Number of veteran levels lost when auto-upgrading a unit
75 autoupgrade_veteran_loss = 10
77 ; Whether player gets to select which terrain improvement to pillage.
78 pillage_select           = TRUE
80 ; Whether one can steal a tech for which prereqs are not known
81 tech_steal_allow_holes    = TRUE
82 ; Whether one can get a tech for which prereqs are not known via
83 ; diplomatic trading
84 tech_trade_allow_holes    = TRUE
85 ; ...and whether one can lose a tech which is prereq for another known
86 ; tech via trade, if techlost_donor is nonzero
87 tech_trade_loss_allow_holes = TRUE
88 ; Whether one can get a tech for which prereqs are not known via
89 ; parasite effect (Great Library)
90 tech_parasite_allow_holes = TRUE
91 ; Whether one can lose a tech which is prereq for another known tech
92 ; due to negative bulbs, if techlossforgiveness allows loss
93 tech_loss_allow_holes     = TRUE
95 ; Whether civil war is possible at all
96 civil_war_enabled        = TRUE
98 ; Comma separated list of things to happen, in addition to death
99 ; of owner, when gameloss unit dies
100 ; "CivilWar"   - Part of the empire remains, controlled by a new player
101 ; "Barbarians" - Depending on if there`s also "CivilWar", all or part
102 ;                or half of the dead players empire gets under barbarian
103 ;                control.
104 ; "Loot"       - Player who killed the gameloss unit gets loot:
105 ;                Partial map, gold, techs, cities
106 gameloss_style           = ""
108 ; Whether units may safely paradrop to transport on non-native terrain
109 paradrop_to_transport    = FALSE
111 ; Method of paying unit and improvement gold upkeep
112 ; "City" - The player`s total gold must be non-negative after paying upkeep
113 ;          costs associated with each city. If for any city the player`s
114 ;          gold is negative, random buildings in the city are sold off. If
115 ;          the gold is still negative, then supported units with gold upkeep
116 ;          are disbanded.
117 ; "Mixed" - In the first step, the player`s total gold must be non-negative
118 ;           after paying upkeep for all buildings within a city. If for any
119 ;           city the player`s gold is negative, random buildings in the city
120 ;           are sold off.
121 ;           In the second step, gold upkeep for all units is paid in a lump
122 ;           sum. If the player does not have enough gold, random units with
123 ;           gold upkeep are disbanded.
124 ; "Nation" - Gold upkeep for all buildings and units is paid in a lump sum
125 ;            after all cities have been processed. If the player does not
126 ;            have enough gold, random buildings from random cities are sold.
127 ;            If still more gold is needed, then random units with gold
128 ;            upkeep are disbanded.
129 gold_upkeep_style = "City"
131 [illness]
132 ; Whether plagues (illness) are possible
133 illness_on = FALSE
135 ; the base factor for illness (of percent)
136 illness_base_factor = 25
138 ; minimum city size for illness
139 illness_min_size = 3
141 ; factor for how much trading with a plagued city increases our city`s
142 ; chance for plague (in percent)
143 illness_trade_infection = 50
145 ; factor for how much pollution within a city increases its chance for
146 ; plague (in percent)
147 illness_pollution_factor = 50
149 [incite_cost]
150 ; city_incite_cost = total_factor * (city_size) * (base_incite_cost
151 ;                      + (units_cost) * unit_factor
152 ;                      + (improvements_cost) * improvement_factor)
153 ;                    / ((distance to capital) * 100)
154 ; See city_incite_cost() for more details
155 improvement_factor = 1
156 unit_factor = 2
157 total_factor = 100
159 [global_unit_options]
161 ; Explanation: Civ 2 allowed fast units to use any remaining movement after
162 ; disembarking. Boarding a ship spent every movement point the land unit
163 ; had.
165 ; Freeciv doesn`t support removing all movement points when a unit boards a
166 ; ship. If slow_invasions is set to FALSE a fast unit will be allowed to
167 ; board a ship, be moved by it, disembark and keep moving in the same turn.
168 ; That would have been impossible in Civ 2. If it is set to TRUE
169 ; strategies that involves loading fast units on a ship, waiting a turn and
170 ; then unloading them so they can act (attack, spy, etc) the same turn will
171 ; be broken.
173 ; Shore landing style
174 ;  FALSE - normal movement
175 ;  TRUE  - (default) slow invasions by removing all
176 ;          movement points from ground units moving
177 ;          from ocean tile to land
178 slow_invasions = TRUE
180 [combat_rules]
181 ; If tired_attack is set to TRUE, units that attack with less than a single
182 ; move point (per move_fragments in terrain.ruleset) will have their attack
183 ; power reduced accordingly. For instance, if move_fragments=3, a unit with
184 ; 2/3 move points will have attack power 2/3 of normal.
185 ; If this is set to FALSE units will attack with full strength even if they
186 ; have only fractional moves left.
187 tired_attack = TRUE
189 [auto_attack]
190 ; An auto attack may be triggered when another unit moves to an adjacent
191 ; tile and the autoattack server setting is enabled. The following details
192 ; are ruleset controlled.
193 ;   will_never - units with this unit type flag will never auto attack.
195 ; Not a good idea to nuke our own area.
196 will_never = "Nuclear"
198 [actions]
199 ; If force_trade_route is set to TRUE it is illegal for an actor unit to
200 ; enter the marketplace of a city if it can establish a trade route to it
201 ; in stead.
202 force_trade_route = TRUE
204 ; If force_capture_units is set to TRUE it is illegal for an actor unit to
205 ; bombard, explode nuclear or perform a regular attack against a tile if
206 ; it can capture units on it in stead.
207 force_capture_units = FALSE
209 ; If force_bombard is set to TRUE it is illegal for an actor unit to
210 ; explode nuclear or perform a regular attack against a tile if it can
211 ; bombard it in stead.
212 force_bombard = FALSE
214 ; If force_explode_nuclear is set to TRUE it is illegal for an actor unit
215 ; to perform a regular attack against a tile if it can do explode nuclear
216 ; in stead.
217 force_explode_nuclear = TRUE
219 ; If poison_empties_food_stock is set to TRUE a successful "Poison City"
220 ; will empty the food stock.
221 poison_empties_food_stock = FALSE
223 ; The maximum distance from the actor unit to the target of the "Bombard"
224 ; action. The value 1 means that the targets must be on a tile adjacent to
225 ; the actor unit. The special value "unlimited" lifts the maximum distance
226 ; restriction. The maximum distance can`t be smaller than the minimum
227 ; distance.
228 bombard_max_range = 1
230 ; What each action should be called when showing them to the player.
231 ; The first %s should be before the mnemonic of the action. A Freeciv client
232 ; that supports mnemonics will replace it with the in-band signal that marks
233 ; the following character as a mnemonic in its graphical toolkit.
234 ; The second %s marks where extra details should be inserted.
236 ; /* TRANS: _Poison City (3% chance of success). */
237 ui_name_poison_city = _("%sPoison City%s")
239 ; /* TRANS: Plant _Nuclear Device (3% chance of success). */
240 ui_name_suitcase_nuke_escape = _("Plant %sNuclear Device%s")
242 ; /* TRANS: _Sabotage Enemy Unit (3% chance of success). */
243 ui_name_sabotage_unit = _("%sSabotage Enemy Unit%s")
245 ; /* TRANS: _Bribe Enemy Unit (3% chance of success). */
246 ui_name_bribe_unit = _("%sBribe Enemy Unit%s")
248 ; /* TRANS: _Sabotage City (3% chance of success). */
249 ui_name_sabotage_city = _("%sSabotage City%s")
251 ; /* TRANS: Industrial _Sabotage (3% chance of success). */
252 ui_name_targeted_sabotage_city = _("Industrial %sSabotage%s")
254 ; /* TRANS: Incite a _Revolt (3% chance of success). */
255 ui_name_incite_city = _("Incite a %sRevolt%s")
257 ; /* TRANS: Incite a _Revolt and Escape (3% chance of success). */
258 ui_name_incite_city_escape = _("Incite a Re%svolt and Escape%s")
260 ; /* TRANS: Establish _Embassy (100% chance of success). */
261 ui_name_establish_embassy = _("Establish %sEmbassy%s")
263 ; /* TRANS: Becom_e Ambassador (100% chance of success). */
264 ui_name_establish_embassy_stay = _("Becom%se Ambassador%s")
266 ; /* TRANS: Steal _Technology (3% chance of success). */
267 ui_name_steal_tech = _("Steal %sTechnology%s")
269 ; /* TRANS: Indus_trial Espionage (3% chance of success). */
270 ui_name_targeted_steal_tech = _("Indus%strial Espionage%s")
272 ; /* TRANS: _Investigate City (100% chance of success). */
273 ui_name_investigate_city = _("%sInvestigate City%s")
275 ; /* TRANS: _Investigate City (spends the unit) (100% chance of success). */
276 ui_name_investigate_city_spend_unit = _("%sInvestigate City (spends the unit)%s")
278 ; /* TRANS: Establish Trade _Route (100% chance of success). */
279 ui_name_establish_trade_route = _("Establish Trade %sRoute%s")
281 ; /* TRANS: Enter _Marketplace (100% chance of success). */
282 ui_name_enter_marketplace = _("Enter %sMarketplace%s")
284 ; /* TRANS: Help _build Wonder (100% chance of success). */
285 ui_name_help_wonder = _("Help %sbuild Wonder%s")
287 ; /* TRANS: Rec_ycle Unit (100% chance of success). */
288 ui_name_recycle_unit = _("Rec%sycle Unit%s")
290 ; /* TRANS: _You're Fired (100% chance of success). */
291 ui_name_disband_unit = _("%sYou're Fired%s")
293 ; /* TRANS: _Build City (100% chance of success). */
294 ui_name_found_city = _("%sBuild City%s")
296 ; /* TRANS: _Add to City (100% chance of success). */
297 ui_name_join_city = _("%sAdd to City%s")
299 ; /* TRANS: Explode _Nuclear (100% chance of success). */
300 ui_name_explode_nuclear = _("Explode %sNuclear%s")
302 ; /* TRANS: Set _Home City (100% chance of success). */
303 ui_name_home_city = _("Set %sHome City%s")
305 ; /* TRANS: _Upgrade Unit (100% chance of success). */
306 ui_upgrade_unit = _("%sUpgrade Unit%s")
308 ; /* TRANS: Drop _Paratrooper (100% chance of success). */
309 ui_paradrop_unit = _("Drop %sParatrooper%s")
311 ; /* TRANS: _Airlift to City (100% chance of success). */
312 ui_airlift_unit = _("%sAirlift to City%s")
314 ; /* TRANS: _Attack (100% chance of success). */
315 ui_name_attack = _("%sAttack%s")
317 ; /* TRANS: _Conquer City (100% chance of success). */
318 ui_name_conquer_city = _("%sConquer City%s")
320 ; Suppress automatic help text generation about what enables and/or
321 ; disables the following actions.
323 ; Can make the help text less redundant when you document it your self.
324 ;quiet_actions = "Targeted Sabotage City", "Targeted Steal Tech"
326 ; /* <-- avoid gettext warnings
328 ; Action enablers:
330 ; action               = the action to enable.
331 ; actor_reqs           = requirements that apply to the actor.
332 ; target_reqs          = requirements that apply to the target.
334 ; README.actions lists the possible actions and their hard coded
335 ; requirements.
337 ; An action enabler is active when its actor_reqs AND its target_reqs are
338 ; satisfied.
340 ; */ <-- avoid gettext warnings
342 [actionenabler_sabotage_city]
343 action = "Sabotage City"
344 actor_reqs    =
345     { "type",   "name", "range"
346       "UnitFlag", "Diplomat", "Local"
347       "DiplRel", "War", "Local"
348       "MinMoveFrags", "1", "Local"
349     }
351 [actionenabler_sabotage_city_target]
352 action = "Targeted Sabotage City"
353 actor_reqs    =
354     { "type",   "name", "range"
355       "DiplRel", "War", "Local"
356       "UnitFlag", "Spy", "Local"
357       "MinMoveFrags", "1", "Local"
358     }
360 [actionenabler_establish_embassy]
361 action       = "Establish Embassy Stay"
362 actor_reqs    =
363     { "type",         "name",     "range", "present"
364       "UnitFlag",     "Diplomat", "Local", TRUE
365       "MinMoveFrags", "1",        "Local", TRUE
366       "DiplRel",      "Foreign",  "Local", TRUE
367       "UnitFlag",     "Spy",      "Local", FALSE
368     }
370 [actionenabler_establish_embassy_spy]
371 action       = "Establish Embassy"
372 actor_reqs    =
373     { "type",         "name",    "range"
374       "UnitFlag",     "Spy",     "Local"
375       "MinMoveFrags", "1",       "Local"
376       "DiplRel",      "Foreign", "Local"
377     }
379 [actionenabler_investigate_city]
380 action       = "Investigate City Spend Unit"
381 actor_reqs    =
382     { "type",   "name", "range", "present"
383       "UnitFlag", "Diplomat", "Local", TRUE
384       "MinMoveFrags", "1", "Local", TRUE
385       "DiplRel", "Foreign", "Local", TRUE
386       "UnitFlag", "Spy", "Local", FALSE
387     }
389 [actionenabler_investigate_city_spy]
390 action       = "Investigate City"
391 actor_reqs    =
392     { "type",   "name", "range"
393       "UnitFlag", "Spy", "Local"
394       "MinMoveFrags", "1", "Local"
395       "DiplRel", "Foreign", "Local"
396     }
398 [actionenabler_poison_city]
399 action = "Poison City"
400 actor_reqs    =
401     { "type",   "name", "range"
402       "UnitFlag", "Spy", "Local"
403       "DiplRel", "War", "Local"
404       "MinMoveFrags", "1", "Local"
405     }
406 target_reqs    =
407     { "type",   "name", "range"
408       "MinSize", "2", "City"
409     }
411 ; TODO: Find the exact requirements
412 [actionenabler_plant_nuke]
413 action = "Suitcase Nuke Escape"
414 actor_reqs    =
415     { "type",   "name", "range"
416       "UnitFlag", "Spy", "Local"
417       "Building", "Manhattan Project", "World"
418       "Tech", "Nuclear Fission", "Player"
419       "DiplRel", "War", "Local"
420       "MinMoveFrags", "1", "Local"
421     }
423 [actionenabler_steal_tech_random]
424 action = "Steal Tech"
425 actor_reqs    =
426     { "type",   "name", "range"
427       "UnitFlag", "Diplomat", "Local"
428       "MinMoveFrags", "1", "Local"
429       "DiplRel", "Foreign", "Local"
430     }
431 target_reqs  =
432     { "type",   "name", "range", "present"
433       "NationGroup", "Barbarian", "Player", FALSE
434     }
436 [actionenabler_steal_tech_target]
437 action = "Targeted Steal Tech"
438 actor_reqs    =
439     { "type",   "name", "range"
440       "UnitFlag", "Spy", "Local"
441       "MinMoveFrags", "1", "Local"
442       "DiplRel", "Foreign", "Local"
443     }
444 target_reqs  =
445     { "type",   "name", "range", "present"
446       "NationGroup", "Barbarian", "Player", FALSE
447     }
449 [actionenabler_incite_city]
450 action = "Incite City"
451 actor_reqs    =
452     { "type",         "name",     "range", "present"
453       "UnitFlag",     "Diplomat", "Local", TRUE
454       "DiplRel",      "Alliance", "Local", FALSE
455       "DiplRel",      "Team",     "Local", FALSE
456       "MinMoveFrags", "1",        "Local", TRUE
457       "DiplRel",      "Foreign",  "Local", TRUE
458       "UnitFlag",     "Spy",      "Local", FALSE
459     }
460 target_reqs  =
461     { "type",     "name",      "range", "present"
462       "Gov",      "Democracy", "Player", FALSE
463       "Building", "Palace",    "City",   FALSE
464     }
466 [actionenabler_incite_city_spy]
467 action = "Incite City Escape"
468 actor_reqs    =
469     { "type",         "name",     "range", "present"
470       "UnitFlag",     "Spy",      "Local", TRUE
471       "DiplRel",      "Alliance", "Local", FALSE
472       "DiplRel",      "Team",     "Local", FALSE
473       "MinMoveFrags", "1",        "Local", TRUE
474       "DiplRel",      "Foreign",  "Local", TRUE
475     }
476 target_reqs  =
477     { "type",     "name",      "range", "present"
478       "Gov",      "Democracy", "Player", FALSE
479       "Building", "Palace",    "City",   FALSE
480     }
482 [actionenabler_bribe_unit]
483 action = "Bribe Unit"
484 actor_reqs    =
485     { "type",   "name", "range", "present"
486       "UnitFlag", "Diplomat", "Local", TRUE
487       "DiplRel", "Alliance", "Local", FALSE
488       "DiplRel", "Team", "Local", FALSE
489       "MinMoveFrags", "1", "Local", TRUE
490       "DiplRel", "Foreign", "Local", TRUE
491     }
492 target_reqs    =
493     { "type",   "name", "range", "present"
494       "CityTile", "Center", "Local", FALSE
495       "Gov", "Democracy", "Player", FALSE
496       "MaxUnitsOnTile", "1", "Local", TRUE
497     }
499 [actionenabler_sabotage_unit]
500 action = "Sabotage Unit"
501 actor_reqs    =
502     { "type",   "name", "range"
503       "UnitFlag", "Spy", "Local"
504       "DiplRel", "War", "Local"
505       "MinMoveFrags", "1", "Local"
506     }
507 target_reqs    =
508     { "type",   "name", "range", "present"
509       "CityTile", "Center", "Local", FALSE
510       "MinHitPoints", "2", "Local", TRUE
511       "MaxUnitsOnTile", "1", "Local", TRUE
512     }
514 [actionenabler_traderoute]
515 action = "Establish Trade Route"
516 actor_reqs    =
517     { "type",   "name", "range", "present"
518       "UnitFlag", "TradeRoute", "Local", TRUE
519     }
521 [actionenabler_marketplace]
522 action = "Enter Marketplace"
523 actor_reqs    =
524     { "type",   "name", "range", "present"
525       "UnitFlag", "TradeRoute", "Local", TRUE
526     }
528 [actionenabler_help_build_wonder]
529 action = "Help Wonder"
530 actor_reqs    =
531     { "type",   "name", "range", "present"
532       "UnitFlag", "HelpWonder", "Local", TRUE
533       "DiplRel", "Foreign", "Local", FALSE
534     }
535 target_reqs    =
536     { "type",   "name", "range"
537       "BuildingGenus", "GreatWonder", "Local"
538     }
540 [actionenabler_help_build_small_wonder]
541 action = "Help Wonder"
542 actor_reqs    =
543     { "type",   "name", "range", "present"
544       "UnitFlag", "HelpWonder", "Local", TRUE
545       "DiplRel", "Foreign", "Local", FALSE
546     }
547 target_reqs    =
548     { "type",   "name", "range"
549       "BuildingGenus", "SmallWonder", "Local"
550     }
552 [actionenabler_recycle_unit]
553 action = "Recycle Unit"
554 actor_reqs    =
555     { "type",   "name", "range", "present"
556       "UnitFlag", "EvacuateFirst", "Local", FALSE
557       "DiplRel",  "War",        "Local", FALSE
558       "DiplRel",  "Cease-fire", "Local", FALSE
559       "DiplRel",  "Armistice",  "Local", FALSE
560       "DiplRel",  "Peace",      "Local", FALSE
561     }
563 [actionenabler_disband_unit]
564 action = "Disband Unit"
565 actor_reqs    =
566     { "type",   "name", "range", "present"
567       "UnitFlag", "EvacuateFirst", "Local", FALSE
568     }
570 [actionenabler_build_city_pioneer]
571 action = "Found City"
572 actor_reqs    =
573     { "type",   "name", "range"
574       "UnitFlag", "Cities", "Local"
575       "UnitState", "OnLivableTile", "Local"
576       "MinMoveFrags", "1", "Local"
577     }
578 target_reqs    =
579     { "type",   "name", "range", "present"
580       "CityTile", "Claimed", "Local", FALSE
581     }
583 [actionenabler_build_city_domestic]
584 action = "Found City"
585 actor_reqs    =
586     { "type",   "name", "range", "present"
587       "UnitFlag", "Cities", "Local", TRUE
588       "UnitState", "OnLivableTile", "Local", TRUE
589       "MinMoveFrags", "1", "Local", TRUE
590       "DiplRel", "Foreign", "Local", FALSE
591     }
593 [actionenabler_join_city]
594 action = "Join City"
595 actor_reqs    =
596     { "type",   "name", "range", "present"
597       "UnitFlag", "AddToCity", "Local", TRUE
598       "DiplRel", "Foreign", "Local", FALSE
599       "MinMoveFrags", "1", "Local", TRUE
600     }
602 [actionenabler_nuke]
603 action = "Explode Nuclear"
604 actor_reqs    =
605     { "type",   "name", "range", "present"
606       "UnitFlag", "Nuclear", "Local", TRUE
607     }
609 [actionenabler_attack_native]
610 action = "Attack"
611 actor_reqs    =
612     { "type",         "name",         "range", "present"
613       "UnitFlag",     "NonMil",       "Local", FALSE
614       "MinMoveFrags", "1",            "Local", TRUE
615       "UnitState",    "OnNativeTile", "Local", TRUE
616     }
618 [actionenabler_attack_marines]
619 action = "Attack"
620 actor_reqs    =
621     { "type",         "name",    "range", "present"
622       "UnitFlag",     "NonMil",  "Local", FALSE
623       "MinMoveFrags", "1",       "Local", TRUE
624       "UnitFlag",     "Marines", "Local", TRUE
625     }
627 [actionenabler_attack_att_from_non_native]
628 action = "Attack"
629 actor_reqs    =
630     { "type",         "name",   "range", "present"
631       "UnitFlag",     "NonMil", "Local", FALSE
632       "MinMoveFrags", "1",      "Local", TRUE
633       "UnitClass",    "Sea",    "Local", TRUE
634     }
636 [actionenabler_conquer_city_native]
637 action = "Conquer City"
638 actor_reqs    =
639     { "type",           "name",          "range", "present"
640       "UnitClassFlag",  "CanOccupyCity", "Local", TRUE
641       "UnitFlag",       "NonMil",        "Local", FALSE
642       "DiplRel",        "War",           "Local", TRUE
643       "MinMoveFrags",   "1",             "Local", TRUE
644       "UnitState",      "OnLivableTile", "Local", TRUE
645     }
646 target_reqs    =
647     { "type",           "name",          "range", "present"
648       "MaxUnitsOnTile", "0",             "Local", TRUE
649     }
651 [actionenabler_conquer_city_marines]
652 action = "Conquer City"
653 actor_reqs    =
654     { "type",           "name",          "range", "present"
655       "UnitClassFlag",  "CanOccupyCity", "Local", TRUE
656       "UnitFlag",       "NonMil",        "Local", FALSE
657       "DiplRel",        "War",           "Local", TRUE
658       "MinMoveFrags",   "1",             "Local", TRUE
659       "UnitFlag",       "Marines",       "Local", TRUE
660     }
661 target_reqs    =
662     { "type",           "name",          "range", "present"
663       "MaxUnitsOnTile", "0",             "Local", TRUE
664     }
666 [actionenabler_conquer_city_att_from_non_native]
667 action = "Conquer City"
668 actor_reqs    =
669     { "type",          "name",          "range", "present"
670       "UnitClassFlag", "CanOccupyCity", "Local", TRUE
671       "UnitFlag",      "NonMil",        "Local", FALSE
672       "DiplRel",       "War",           "Local", TRUE
673       "MinMoveFrags",  "1",             "Local", TRUE
674       "UnitClass",     "Sea",           "Local", TRUE
675     }
676 target_reqs    =
677     { "type",           "name",          "range", "present"
678       "MaxUnitsOnTile", "0",             "Local", TRUE
679     }
681 [actionenabler_change_home_city]
682 action = "Home City"
683 actor_reqs    =
684     { "type",      "name",        "range", "present"
685       "UnitFlag",  "NoHome",      "Local", FALSE
686       "UnitState", "HasHomeCity", "Local", TRUE
687       "DiplRel",   "Foreign",  "Local", FALSE
688     }
690 [actionenabler_paradrop_base]
691 action = "Paradrop Unit"
692 actor_reqs    =
693     { "type",      "name",         "range", "present"
694       "UnitFlag",  "Paratroopers", "Local", TRUE
695       "UnitState", "Transporting", "Local", FALSE
696       "Extra",     "Airbase",      "Local", TRUE
697     }
699 [actionenabler_paradrop_city]
700 action = "Paradrop Unit"
701 actor_reqs    =
702     { "type",      "name",         "range", "present"
703       "UnitFlag",  "Paratroopers", "Local", TRUE
704       "UnitState", "Transporting", "Local", FALSE
705       "CityTile",  "Center",       "Local", TRUE
706     }
708 [actionenabler_upgrade_unit]
709 action = "Upgrade Unit"
710 actor_reqs    =
711     { "type",    "name",       "range", "present"
712       "DiplRel", "Foreign", "Local", FALSE
713     }
715 [actionenabler_airlift_unit]
716 action = "Airlift Unit"
717 actor_reqs    =
718     { "type",          "name",         "range", "present"
719       "UnitClass",     "Land",         "Local", TRUE
720       "UnitState",     "Transporting", "Local", FALSE
721       "MinMoveFrags",  "1",            "Local", TRUE
722     }
724 [borders]
725 ; Base border radius from city.
726 radius_sq_city = 17
728 ; Border radius square increased by this amount / point of city size
729 size_effect    = 1
731 ; Difference between city workable area and area permanently claimed by
732 ; city (these tiles cannot be stolen by stronger border sources).
733 ; 0 means exactly city workable area is immune to border stealing.
734 ; Negative value means outer workable tiles can be stolen; highly negative
735 ; value (more than max city radius_sq) means any workable tile can be stolen.
736 ; If City_Radius_Sq is variable, so is the set of locked tiles; this is
737 ; a squared value, so the radius of the ring of tiles which are workable
738 ; but not locked (or vice versa) varies but the area is constant.
739 radius_sq_city_permanent = 0
741 [research]
742 ; Method of calculating technology costs
743 ;   "Civ I|II"      - Civ (I|II) style. Every new tech add base_tech_cost to
744 ;                     cost of next tech.
745 ;   "Classic"       - Cost of technology is:
746 ;                       base_tech_cost * (1 + reqs) * sqrt(1 + reqs) / 2
747 ;                     where reqs == number of requirement for tech, counted
748 ;                     recursively.
749 ;   "Classic+"      - Cost are read from tech.ruleset. Missing costs are
750 ;                     generated by style "Classic".
751 ;   "Experimental"  - Cost of technology is:
752 ;                       base_tech_cost * (reqs^2 / (1 + sqrt(sqrt(reqs + 1)))
753 ;                                         - 0.5)
754 ;                     where reqs == number of requirement for tech, counted
755 ;                     recursively.
756 ;   "Experimental+" - Cost are read from tech.ruleset. Missing costs are
757 ;                     generated by style "Experimental".
758 tech_cost_style = "Civ I|II"
760 ; Base research cost. Used in tech cost styles where tech cost is generated.
761 ; In other words: used everywhere unless the cost of *all* techs are
762 ; specified and the tech cost style is "Experimental+" or "Classic+".
763 base_tech_cost   = 20
765 ; Technology leak from other civilizations
766 ; "None"           - No reduction of the technology cost.
767 ; "Embassies"      - Technology cost is reduced depending on the number of
768 ;                    players which already know the tech and you have an
769 ;                    embassy with.
770 ; "All Players"    - Technology cost is reduced depending on the number of
771 ;                    all players (human, AI and barbarians) which already
772 ;                    know the tech.
773 ; "Normal Players" - Technology cost is reduced depending on the number of
774 ;                    normal players (human and AI) which already know the
775 ;                    tech.
776 tech_leakage = "None"
778 ; Method of paying tech upkeep
779 ; "None"   - no upkeep
780 ; "Basic"  - upkeep is calculated as:
781 ;     <Cost of technology> / tech_upkeep_divider - tech_upkeep_free
782 ; "Cities" - upkeep is calculated like "Basic", but multiplied by number of cities
783 tech_upkeep_style = "None"
785 ; Method of selecting techs given for free
786 ; "Goal"     - Towards player`s goal, random if no goal
787 ; "Random"   - Random researchable tech
788 ; "Cheapest" - Cheapest researchable tech, random among equal cost ones
789 free_tech_method = "Random"
791 [culture]
792 ; Minimum culture points for cultural domination victory
793 victory_min_points = 1000
795 ; How big lead relative to second best player is needed for victory
796 victory_lead_pct   = 200
798 ; How much each culture point affects the migration
799 ; from/to the city. Each culture point count as this many permilles
800 ; of a migration point.
801 migration_pml = 50
803 [calendar]
804 ; Year 1 instead of 0.
805 skip_year_0 = TRUE
807 ; How many fragments each year has. Value 0 disables year advancement by fragment
808 ; accumulation.
809 fragments = 0
811 ; Calendar fragment names. If name is missing, only a fragment number +1 (so human readable
812 ; numbers begin from 1 and not 0) is shown.
814 ;fragment_name0 = "Jan"
815 ;fragment_name1 = "Feb"
816 ; ...
818 ; What labels are used for positive and negative years.
819 ; /* TRANS: year label (Anno Domini) */
820 positive_label = _("AD")
821 ; /* TRANS: year label (Before Christ) */
822 negative_label = _("BC")
824 ; /* <-- avoid gettext warnings
826 ; Disaster types:
828 ; name                    = translatable name as seen by user
829 ; reqs                    = requirements for disaster to happen (see effects.ruleset
830 ;                           and README.effects for help on requirements)
831 ; frequency               = how likely disaster is to occur
832 ; effects
833 ;   - "DestroyBuilding"   = Random building is destroyed
834 ;   - "ReducePopulation"  = Reduce city size by one unless it's already 1
835 ;   - "ReducePopDestroy"  = Reduce city size by one, possibly destroying the city
836 ;   - "EmptyFoodStock"    = Remove all food from food stock
837 ;   - "EmptyProdStock"    = Destroy current production
838 ;   - "Pollution"         = One tile surrounding city polluted
839 ;   - "Fallout"           = One tile surrounding city polluted with fallout
841 ; */ <-- avoid gettext warnings
843 ; No disasters in civ2
845 ; /* <-- avoid gettext warnings
847 ; Achievement types:
849 ; name                    = translatable name as seen by user
850 ; rule_name               = (optional) name for savegames, rulesets etc; if not
851 ;                           present, 'name' is used. Since the name used in
852 ;                           savegames must not change, use this when renaming a
853 ;                           achievement after a ruleset has been released.
854 ; type                    = What event grants the achievement to player.
855 ;                           See README.achievements for list of these types.
856 ; unique                  = If TRUE, only first one reaching the achievement will
857 ;                           get it. Defaults to TRUE
858 ; value                   = Value to reach. Exact meaning of this depends on
859 ;                           achievement type.
860 ; culture                 = Amount of culture granted to player who gets achievement
861 ;                           granted.
862 ; first_msg               = Message shown to first player gaining the achievement
863 ; cons_msg                = Message shown to consecutive players gaining the achievement
865 ; */ <-- avoid gettext warnings
867 ; No achievements in civ2 ruleset
870 ; Trade settings
872 ; IN = international, IC = intercontinental.
873 ; For each of the trade route types:
874 ; "pct"        - Trade income %. If this is 0, trade route cannot be
875 ;                established at all
876 ; "cancelling" - What to do to previously established traderoutes when they
877 ;                turn illegal
878 ;                "Active"   - Keep them active (although they will only
879 ;                             provide nonzero income if illegal due to
880 ;                             trademindist rather than pct==0)
881 ;                "Inactive" - Keep them inactive
882 ;                "Cancel"   - Cancel them altogether
884 ; TODO: What`s correct "cancelling" behavior for civ2? If you have established
885 ;       traderoute with enemy city nearby and conquer it -> what happens to traderoute
886 ;       between your cities with less than trademindist distance?
888 ; "bonus"      - One-time bonuses granted when traderoute established
889 ;                "None"     - No one-time bonus
890 ;                "Gold"     - Bonus to gold
891 ;                "Science"  - Bonus to research
892 ;                "Both"     - Bonus to gold and research
894 ; TODO: What`s correct "bonus" behavior for civ2?
896 [trade]
897 settings =
898   { "type",       "pct", "cancelling", "bonus"
899     "National",   100,   "Cancel",     "Both"
900     "NationalIC", 200,   "Cancel",     "Both"
901     "IN",         200,   "Cancel",     "Both"
902     "INIC",       400,   "Cancel",     "Both"
903     "Ally",       200,   "Cancel",     "Both"
904     "AllyIC",     400,   "Cancel",     "Both"
905     "Enemy",      200,   "Cancel",     "Both"
906     "EnemyIC",    400,   "Cancel",     "Both"
907     "Team",       200,   "Cancel",     "Both"
908     "TeamIC",     400,   "Cancel",     "Both"
909   }
911 ; When are goods for the trade route chosen.
912 ; "Leaving" - Goods to carry are assigned to unit when it`s built, or it changes homecity
913 ; "Arrival" - Goods are chosen when trade route is established, when unit arrives to destination
914 goods_selection = "Arrival"
916 ; /* <-- avoid gettext warnings
918 ; Goods types:
920 ; name                    = translatable name as seen by user
921 ; rule_name               = (optional) name for savegames, rulesets etc; if not
922 ;                           present, 'name' is used. Since the name used in
923 ;                           savegames must not change, use this when renaming
924 ;                           an good after a ruleset has been released.
925 ; reqs                    = requirements for a city to provide goods (see effects.ruleset
926 ;                           and README.effects for help on requirements)
927 ; from_pct                = Income for the sending end of the trade route. Default is 100%
928 ;                           This value is applied to both ends of bidirectional routes.
929 ; to_pct                  = Income for the receiving end of the trade route. Default is 100%
930 ;                           This value is not used at all in case of bidirectional routes.
931 ; flags
932 ;   - "Bidirectional"     = Trade route carrying the goods does not have "from" and "to"
933 ;                           ends, but both ends are considered the same.
934 ;   - "Depletes"          = Trade route gets cancelled when the source city cannot provide
935 ;                           goods any more. Bidirectional routes gets cancelled if either
936 ;                           one of the involved cities cannot provide goods.
937 ; helptext                = Optional help text string; should escape all raw
938 ;                           newlines so that xgettext parsing works
940 ; */ <-- avoid gettext warnings
942 [goods_good]
943 name  = _("Goods")
944 flags = "Bidirectional"
946 [playercolors]
947 background.r = 86
948 background.g = 86
949 background.b = 86
951 ; Player colors for 32 players are defined below.
952 ; Avoid greens, blues, and white / very pale colors (too easy to confuse
953 ; with terrain).
954 ; Avoid dark colors.
955 colorlist =
956     { "r", "g", "b"
957       255,   0,   0
958       255, 255,   0
959         0, 255, 255
960       138,  43, 226
961       255, 165,   0
962       255,   0, 255
963       173, 216, 230
964         0, 255, 127
965       250, 128, 114
966       124, 252,   0
967       139,   0,   0
968       255, 192, 203
969       211, 211, 211
970       218, 112, 214
971       255,  20, 147
972       100, 149, 237
973       255, 215,   0
974       245, 222, 179
975       255, 255, 128
976       192, 255, 128
977       204, 255,   0
978       255, 211, 140
979       255,  79,   0
980       240, 145, 169
981       255, 219,  88
982       153,  17, 153
983       184, 134,  11
984       255, 102,   0
985       102, 205, 170
986       195,  33,  72
987       168, 153, 230
988       255, 250, 205
989     }
991 [teams]
992 ; freeciv optional team names definition.
994 ; names =
995 ; _("Team 1"),
996 ; _("Team 2"),
997 ; _("Team 3"),
998 ; _("Team 4"),
999 ; etc...
1001 [settings]
1002 ; freeciv game settings for the civ2 ruleset
1004 ; set =
1005 ;     { "name", "value", "lock"
1006 ;       "bool_set", TRUE, FALSE
1007 ;       "int_set", 123, FALSE
1008 ;       "str_set", "test", FALSE
1009 ;     }
1010 set =
1011     { "name", "value", "lock"
1012       "sciencebox", 50, FALSE
1013       "startunits", "cc", FALSE
1014       "borders", "DISABLED", FALSE
1015       ; Ruleset has no trait ranges, so player choosing EVEN would have
1016       ; no effect anyway
1017       "traitdistribution", "FIXED", TRUE
1018       "plrcolormode", "NATION_ORDER", FALSE
1019       "topology", "WRAPX|ISO", FALSE
1020     }