Make AI less likely to stop building wonder
[freeciv.git] / data / civ2 / game.ruleset
blobcbf0b17768f79bf0568f173704b33be726586d7d
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-2.6-ruleset"
16 ; This section contains meta information for freeciv-ruledit to recreate the ruleset
17 ; file in a form wanted. These have no in-game effect whatsoever
18 [ruledit]
20 ; Which file to read description in from.
21 ;description_file = ""
23 [about]
24 ; Ruleset name
25 name = _("Civ2 ruleset")
27 ; There`s no separate versioning in rulesets part of main freeciv distribution
28 ;version = ""
30 ; Summary of the ruleset
31 summary = _("\
32 You are playing with civ2 style rules. These are\
33  quite close to Freeciv default rules, but with some additions.\
36 ; Detailed description
37 ; When updating this, update also desciption_file in [ruledit] section to match
38 ; description = ""
40 [options]
41 global_init_techs=""
42 global_init_buildings="Palace"
44 [civstyle]
45 ; Parameters used to generalize the calculation of city granary size:
46 ;   if city_size <= num_inis:
47 ;     city_granary_size = (granary_food_ini[city_size] * foodbox / 100)
48 ;   if city_size > num_inis;
49 ;     city_granary_size = (granary_food_ini[num_inis] +
50 ;        granary_food_inc * (city_size - num_inis)) * foodbox / 100
51 granary_food_ini = 20
52 granary_food_inc = 10
54 ; City center minimum outputs
55 min_city_center_food    = 1
56 min_city_center_shield  = 1
57 min_city_center_trade   = 0
59 ; Square of initial city radius
60 init_city_radius_sq     = 5
62 ; Square of initially visible radius (true distance).
63 init_vis_radius_sq      = 5
65 ; Number of veteran levels lost when upgrading a unit
66 upgrade_veteran_loss     = 10
68 ; Number of veteran levels lost when auto-upgrading a unit
69 autoupgrade_veteran_loss = 10
71 ; Whether player gets to select which terrain improvement to pillage.
72 pillage_select           = TRUE
74 ; Whether one can steal a tech for which prereqs are not known
75 tech_steal_allow_holes    = TRUE
76 ; Whether one can get a tech for which prereqs are not known via
77 ; diplomatic trading
78 tech_trade_allow_holes    = TRUE
79 ; ...and whether one can lose a tech which is prereq for another known
80 ; tech via trade, if techlost_donor is nonzero
81 tech_trade_loss_allow_holes = TRUE
82 ; Whether one can get a tech for which prereqs are not known via
83 ; parasite effect (Great Library)
84 tech_parasite_allow_holes = TRUE
85 ; Whether one can lose a tech which is prereq for another known tech
86 ; due to negative bulbs, if techlossforgiveness allows loss
87 tech_loss_allow_holes     = TRUE
89 ; Whether civil war is possible at all
90 civil_war_enabled        = TRUE
92 ; Comma separated list of things to happen, in addition to death
93 ; of owner, when gameloss unit dies
94 ; "CivilWar"   - Part of the empire remains, controlled by a new player
95 ; "Barbarians" - Depending on if there`s also "CivilWar", all or part
96 ;                or half of the dead players empire gets under barbarian
97 ;                control.
98 ; "Loot"       - Player who killed the gameloss unit gets loot:
99 ;                Partial map, gold, techs, cities
100 gameloss_style           = ""
102 ; Whether units may safely paradrop to transport on non-native terrain
103 paradrop_to_transport    = FALSE
105 ; Method of paying unit and improvement gold upkeep
106 ; "City" - The player`s total gold must be non-negative after paying upkeep
107 ;          costs associated with each city. If for any city the player`s
108 ;          gold is negative, random buildings in the city are sold off. If
109 ;          the gold is still negative, then supported units with gold upkeep
110 ;          are disbanded.
111 ; "Mixed" - In the first step, the player`s total gold must be non-negative
112 ;           after paying upkeep for all buildings within a city. If for any
113 ;           city the player`s gold is negative, random buildings in the city
114 ;           are sold off.
115 ;           In the second step, gold upkeep for all units is paid in a lump
116 ;           sum. If the player does not have enough gold, random units with
117 ;           gold upkeep are disbanded.
118 ; "Nation" - Gold upkeep for all buildings and units is paid in a lump sum
119 ;            after all cities have been processed. If the player does not
120 ;            have enough gold, random buildings from random cities are sold.
121 ;            If still more gold is needed, then random units with gold
122 ;            upkeep are disbanded.
123 gold_upkeep_style = "City"
125 [illness]
126 ; Whether plagues (illness) are possible
127 illness_on = FALSE
129 ; the base factor for illness (of percent)
130 illness_base_factor = 25
132 ; minimum city size for illness
133 illness_min_size = 3
135 ; factor for how much trading with a plagued city increases our city`s
136 ; chance for plague (in percent)
137 illness_trade_infection = 50
139 ; factor for how much pollution within a city increases its chance for
140 ; plague (in percent)
141 illness_pollution_factor = 50
143 [incite_cost]
144 ; city_incite_cost = total_factor * (city_size) * (base_incite_cost
145 ;                      + (units_cost) * unit_factor
146 ;                      + (improvements_cost) * improvement_factor)
147 ;                    / ((distance to capital) * 100)
148 ; See city_incite_cost() for more details
149 improvement_factor = 1
150 unit_factor = 2
151 total_factor = 100
153 [global_unit_options]
155 ; Explanation: Civ 2 allowed fast units to use any remaining movement after
156 ; disembarking. Boarding a ship spent every movement point the land unit
157 ; had.
159 ; Freeciv doesn`t support removing all movement points when a unit boards a
160 ; ship. If slow_invasions is set to FALSE a fast unit will be allowed to
161 ; board a ship, be moved by it, disembark and keep moving in the same turn.
162 ; That would have been impossible in Civ 2. If it is set to TRUE
163 ; strategies that involves loading fast units on a ship, waiting a turn and
164 ; then unloading them so they can act (attack, spy, etc) the same turn will
165 ; be broken.
167 ; Shore landing style
168 ;  FALSE - normal movement
169 ;  TRUE  - (default) slow invasions by removing all
170 ;          movement points from ground units moving
171 ;          from ocean tile to land
172 slow_invasions = TRUE
174 [combat_rules]
175 ; If tired_attack is set to TRUE, units that attack with less than a single
176 ; move point (per move_fragments in terrain.ruleset) will have their attack
177 ; power reduced accordingly. For instance, if move_fragments=3, a unit with
178 ; 2/3 move points will have attack power 2/3 of normal.
179 ; If this is set to FALSE units will attack with full strength even if they
180 ; have only fractional moves left.
181 tired_attack = TRUE
183 [actions]
184 ; If force_trade_route is set to TRUE it is illegal for an actor unit to
185 ; enter the marketplace of a city if it can establish a trade route to it
186 ; in stead.
187 force_trade_route = TRUE
189 ; What each action should be called when showing them to the player.
190 ; The first %s should be before the mnemonic of the action. A Freeciv client
191 ; that supports mnemonics will replace it with the in-band signal that marks
192 ; the following character as a mnemonic in its graphical toolkit.
193 ; The second %s marks where extra details should be inserted.
195 ; /* TRANS: _Poison City (3% chance of success). */
196 ui_name_poison_city = _("%sPoison City%s")
198 ; /* TRANS: _Sabotage Enemy Unit (3% chance of success). */
199 ui_name_sabotage_unit = _("%sSabotage Enemy Unit%s")
201 ; /* TRANS: _Bribe Enemy Unit (3% chance of success). */
202 ui_name_bribe_unit = _("%sBribe Enemy Unit%s")
204 ; /* TRANS: _Sabotage City (3% chance of success). */
205 ui_name_sabotage_city = _("%sSabotage City%s")
207 ; /* TRANS: Industrial _Sabotage (3% chance of success). */
208 ui_name_targeted_sabotage_city = _("Industrial %sSabotage%s")
210 ; /* TRANS: Incite a _Revolt (3% chance of success). */
211 ui_name_incite_city = _("Incite a %sRevolt%s")
213 ; /* TRANS: Establish _Embassy (100% chance of success). */
214 ui_name_establish_embassy = _("Establish %sEmbassy%s")
216 ; /* TRANS: Steal _Technology (3% chance of success). */
217 ui_name_steal_tech = _("Steal %sTechnology%s")
219 ; /* TRANS: Indus_trial Espionage (3% chance of success). */
220 ui_name_targeted_steal_tech = _("Indus%strial Espionage%s")
222 ; /* TRANS: _Investigate City (100% chance of success). */
223 ui_name_investigate_city = _("%sInvestigate City%s")
225 ; /* TRANS: Establish Trade _Route (100% chance of success). */
226 ui_name_establish_trade_route = _("Establish Trade %sRoute%s")
228 ; /* TRANS: Enter _Marketplace (100% chance of success). */
229 ui_name_enter_marketplace = _("Enter %sMarketplace%s")
231 ; /* TRANS: Help _build Wonder (100% chance of success). */
232 ui_name_help_wonder = _("Help %sbuild Wonder%s")
234 ; Suppress automatic help text generation about what enables and/or
235 ; disables the following actions.
237 ; Can make the help text less redundant when you document it your self.
238 ;quiet_actions = "Targeted Sabotage City", "Targeted Steal Tech"
240 ; /* <-- avoid gettext warnings
242 ; Action enablers:
244 ; action               = the action to enable.
245 ; actor_reqs           = requirements that apply to the actor.
246 ; target_reqs          = requirements that apply to the target.
248 ; README.actions lists the possible actions and their hard coded
249 ; requirements.
251 ; An action enabler is active when its actor_reqs AND its target_reqs are
252 ; satisfied.
254 ; */ <-- avoid gettext warnings
255 [actionenabler_sabotage_city]
256 action = "Sabotage City"
257 actor_reqs    =
258     { "type",   "name", "range"
259       "UnitFlag", "Diplomat", "Local"
260       "DiplRel", "War", "Local"
261       "MinMoveFrags", "1", "Local"
262     }
264 [actionenabler_sabotage_city_target]
265 action = "Targeted Sabotage City"
266 actor_reqs    =
267     { "type",   "name", "range"
268       "DiplRel", "War", "Local"
269       "UnitFlag", "Spy", "Local"
270       "MinMoveFrags", "1", "Local"
271     }
273 [actionenabler_establish_embassy]
274 action       = "Establish Embassy"
275 actor_reqs    =
276     { "type",   "name", "range"
277       "UnitFlag", "Diplomat", "Local"
278       "MinMoveFrags", "1", "Local"
279     }
281 [actionenabler_investigate_city]
282 action       = "Investigate City"
283 actor_reqs    =
284     { "type",   "name", "range"
285       "UnitFlag", "Diplomat", "Local"
286       "MinMoveFrags", "1", "Local"
287     }
289 [actionenabler_poison_city]
290 action = "Poison City"
291 actor_reqs    =
292     { "type",   "name", "range"
293       "UnitFlag", "Spy", "Local"
294       "DiplRel", "War", "Local"
295       "MinMoveFrags", "1", "Local"
296     }
297 target_reqs    =
298     { "type",   "name", "range"
299       "MinSize", "2", "City"
300     }
302 [actionenabler_steal_tech_random]
303 action = "Steal Tech"
304 actor_reqs    =
305     { "type",   "name", "range"
306       "UnitFlag", "Diplomat", "Local"
307       "MinMoveFrags", "1", "Local"
308     }
309 target_reqs  =
310     { "type",   "name", "range", "present"
311       "NationGroup", "Barbarian", "Player", FALSE
312     }
314 [actionenabler_steal_tech_target]
315 action = "Targeted Steal Tech"
316 actor_reqs    =
317     { "type",   "name", "range"
318       "UnitFlag", "Spy", "Local"
319       "MinMoveFrags", "1", "Local"
320     }
321 target_reqs  =
322     { "type",   "name", "range", "present"
323       "NationGroup", "Barbarian", "Player", FALSE
324     }
326 [actionenabler_incite_city]
327 action = "Incite City"
328 actor_reqs    =
329     { "type",   "name", "range", "present"
330       "UnitFlag", "Diplomat", "Local", TRUE
331       "DiplRel", "Alliance", "Local", FALSE
332       "DiplRel", "Team", "Local", FALSE
333       "MinMoveFrags", "1", "Local", TRUE
334     }
335 target_reqs  =
336     { "type",   "name", "range", "present"
337       "Gov", "Democracy", "Player", FALSE
338       "Building", "Palace", "City", FALSE
339     }
341 [actionenabler_bribe_unit]
342 action = "Bribe Unit"
343 actor_reqs    =
344     { "type",   "name", "range", "present"
345       "UnitFlag", "Diplomat", "Local", TRUE
346       "DiplRel", "Alliance", "Local", FALSE
347       "DiplRel", "Team", "Local", FALSE
348       "MinMoveFrags", "1", "Local", TRUE
349     }
350 target_reqs    =
351     { "type",   "name", "range", "present"
352       "CityTile", "Center", "Local", FALSE
353       "Gov", "Democracy", "Player", FALSE
354       "MaxUnitsOnTile", "1", "Local", TRUE
355     }
357 [actionenabler_sabotage_unit]
358 action = "Sabotage Unit"
359 actor_reqs    =
360     { "type",   "name", "range"
361       "UnitFlag", "Spy", "Local"
362       "DiplRel", "War", "Local"
363       "MinMoveFrags", "1", "Local"
364     }
365 target_reqs    =
366     { "type",   "name", "range", "present"
367       "CityTile", "Center", "Local", FALSE
368       "MinHitPoints", "2", "Local", TRUE
369       "MaxUnitsOnTile", "1", "Local", TRUE
370     }
372 [actionenabler_traderoute]
373 action = "Establish Trade Route"
374 actor_reqs    =
375     { "type",   "name", "range", "present"
376       "UnitFlag", "TradeRoute", "Local", TRUE
377     }
379 [actionenabler_marketplace]
380 action = "Enter Marketplace"
381 actor_reqs    =
382     { "type",   "name", "range", "present"
383       "UnitFlag", "TradeRoute", "Local", TRUE
384     }
386 [actionenabler_help_build_wonder]
387 action = "Help Wonder"
388 actor_reqs    =
389     { "type",   "name", "range", "present"
390       "UnitFlag", "HelpWonder", "Local", TRUE
391       "DiplRel", "Is foreign", "Local", FALSE
392     }
394 [borders]
395 ; Base border radius from city.
396 radius_sq_city = 17
398 ; Border radius square increased by this amount / point of city size
399 size_effect    = 1
401 ; Difference between city workable area and area permanently claimed by
402 ; city (these tiles cannot be stolen by stronger border sources).
403 ; 0 means exactly city workable area is immune to border stealing.
404 ; Negative value means outer workable tiles can be stolen; highly negative
405 ; value (more than max city radius_sq) means any workable tile can be stolen.
406 ; If City_Radius_Sq is variable, so is the set of locked tiles; this is
407 ; a squared value, so the radius of the ring of tiles which are workable
408 ; but not locked (or vice versa) varies but the area is constant.
409 radius_sq_city_permanent = 0
411 [research]
412 ; Method of calculating technology costs
413 ;   "Civ I|II"      - Civ (I|II) style. Every new tech add base_tech_cost to
414 ;                     cost of next tech.
415 ;   "Classic"       - Cost of technology is:
416 ;                       base_tech_cost * (1 + reqs) * sqrt(1 + reqs) / 2
417 ;                     where reqs == number of requirement for tech, counted
418 ;                     recursively.
419 ;   "Classic+"      - Cost are read from tech.ruleset. Missing costs are
420 ;                     generated by style "Classic".
421 ;   "Experimental"  - Cost of technology is:
422 ;                       base_tech_cost * (reqs^2 / (1 + sqrt(sqrt(reqs + 1)))
423 ;                                         - 0.5)
424 ;                     where reqs == number of requirement for tech, counted
425 ;                     recursively.
426 ;   "Experimental+" - Cost are read from tech.ruleset. Missing costs are
427 ;                     generated by style "Experimental".
428 tech_cost_style = "Civ I|II"
430 ; Base research cost. Used in tech cost styles where tech cost is generated.
431 ; In other words: used everywhere unless the cost of *all* techs are
432 ; specified and the tech cost style is "Experimental+" or "Classic+".
433 base_tech_cost   = 20
435 ; Technology leak from other civilizations
436 ; "None"           - No reduction of the technology cost.
437 ; "Embassies"      - Technology cost is reduced depending on the number of
438 ;                    players which already know the tech and you have an
439 ;                    embassy with.
440 ; "All Players"    - Technology cost is reduced depending on the number of
441 ;                    all players (human, AI and barbarians) which already
442 ;                    know the tech.
443 ; "Normal Players" - Technology cost is reduced depending on the number of
444 ;                    normal players (human and AI) which already know the
445 ;                    tech.
446 tech_leakage = "None"
448 ; Method of paying tech upkeep
449 ; "None"   - no upkeep
450 ; "Basic"  - upkeep is calculated as:
451 ;     <Cost of technology> / tech_upkeep_divider - tech_upkeep_free
452 ; "Cities" - upkeep is calculated like "Basic", but multiplied by number of cities
453 tech_upkeep_style = "None"
455 ; Method of selecting techs given for free
456 ; "Goal"     - Towards player`s goal, random if no goal
457 ; "Random"   - Random researchable tech
458 ; "Cheapest" - Cheapest researchable tech, random among equal cost ones
459 free_tech_method = "Random"
461 [culture]
462 ; Minimum culture points for cultural domination victory
463 victory_min_points = 1000
465 ; How big lead relative to second best player is needed for victory
466 victory_lead_pct   = 200
468 ; How much each culture point affects the migration
469 ; from/to the city. Each culture point count as this many permilles
470 ; of a migration point.
471 migration_pml = 50
473 [calendar]
474 ; Year 1 instead of 0.
475 skip_year_0 = TRUE
477 ; How many fragments each year has. Value 0 disables year advancement by fragment
478 ; accumulation.
479 fragments = 0
481 ; Calendar fragment names. If name is missing, only a fragment number +1 (so human readable
482 ; numbers begin from 1 and not 0) is shown.
484 ;fragment_name0 = "Jan"
485 ;fragment_name1 = "Feb"
486 ; ...
488 ; What labels are used for positive and negative years.
489 ; /* TRANS: year label (Anno Domini) */
490 positive_label = _("AD")
491 ; /* TRANS: year label (Before Christ) */
492 negative_label = _("BC")
494 ; /* <-- avoid gettext warnings
496 ; Disaster types:
498 ; name                    = translatable name as seen by user
499 ; reqs                    = requirements for disaster to happen (see effects.ruleset
500 ;                           and README.effects for help on requirements)
501 ; frequency               = how likely disaster is to occur
502 ; effects
503 ;   - "DestroyBuilding"   = Random building is destroyed
504 ;   - "ReducePopulation"  = Reduce city size by one unless it's already 1
505 ;   - "ReducePopDestroy"  = Reduce city size by one, possibly destroying the city
506 ;   - "EmptyFoodStock"    = Remove all food from food stock
507 ;   - "EmptyProdStock"    = Destroy current production
508 ;   - "Pollution"         = One tile surrounding city polluted
509 ;   - "Fallout"           = One tile surrounding city polluted with fallout
511 ; */ <-- avoid gettext warnings
513 ; No disasters in civ2
515 ; /* <-- avoid gettext warnings
517 ; Achievement types:
519 ; name                    = translatable name as seen by user
520 ; rule_name               = (optional) name for savegames, rulesets etc; if not
521 ;                           present, 'name' is used. Since the name used in
522 ;                           savegames must not change, use this when renaming a
523 ;                           achievement after a ruleset has been released.
524 ; type                    = What event grants the achievement to player.
525 ;                           See README.achievements for list of these types.
526 ; unique                  = If TRUE, only first one reaching the achievement will
527 ;                           get it. Defaults to TRUE
528 ; value                   = Value to reach. Exact meaning of this depends on
529 ;                           achievement type.
530 ; culture                 = Amount of culture granted to player who gets achievement
531 ;                           granted.
532 ; first_msg               = Message shown to first player gaining the achievement
533 ; cons_msg                = Message shown to consecutive players gaining the achievement
535 ; */ <-- avoid gettext warnings
537 ; No achievements in civ2 ruleset
540 ; Trade settings
542 ; IN = international, IC = intercontinental.
543 ; For each of the trade route types:
544 ; "pct"        - Trade income %. If this is 0, trade route cannot be
545 ;                established at all
546 ; "cancelling" - What to do to previously established traderoutes when they
547 ;                turn illegal
548 ;                "Active"   - Keep them active (although they will only
549 ;                             provide nonzero income if illegal due to
550 ;                             trademindist rather than pct==0)
551 ;                "Inactive" - Keep them inactive
552 ;                "Cancel"   - Cancel them altogether
554 ; TODO: What`s correct "cancelling" behavior for civ2? If you have established
555 ;       traderoute with enemy city nearby and conquer it -> what happens to traderoute
556 ;       between your cities with less than trademindist distance?
558 ; "bonus"      - One-time bonuses granted when traderoute established
559 ;                "None"     - No one-time bonus
560 ;                "Gold"     - Bonus to gold
561 ;                "Science"  - Bonus to research
562 ;                "Both"     - Bonus to gold and research
564 ; TODO: What`s correct "bonus" behavior for civ2?
566 [trade]
567 settings =
568   { "type",       "pct", "cancelling", "bonus"
569     "National",   100,   "Cancel",     "Both"
570     "NationalIC", 200,   "Cancel",     "Both"
571     "IN",         200,   "Cancel",     "Both"
572     "INIC",       400,   "Cancel",     "Both"
573     "Ally",       200,   "Cancel",     "Both"
574     "AllyIC",     400,   "Cancel",     "Both"
575     "Enemy",      200,   "Cancel",     "Both"
576     "EnemyIC",    400,   "Cancel",     "Both"
577     "Team",       200,   "Cancel",     "Both"
578     "TeamIC",     400,   "Cancel",     "Both"
579   }
581 [playercolors]
582 background.r = 86
583 background.g = 86
584 background.b = 86
586 ; Player colors for 32 players are defined below.
587 ; Avoid greens, blues, and white / very pale colors (too easy to confuse
588 ; with terrain).
589 ; Avoid dark colors.
590 colorlist =
591     { "r", "g", "b"
592       255,   0,   0
593       255, 255,   0
594         0, 255, 255
595       138,  43, 226
596       255, 165,   0
597       255,   0, 255
598       173, 216, 230
599         0, 255, 127
600       250, 128, 114
601       124, 252,   0
602       139,   0,   0
603       255, 192, 203
604       211, 211, 211
605       218, 112, 214
606       255,  20, 147
607       100, 149, 237
608       255, 215,   0
609       245, 222, 179
610       255, 255, 128
611       192, 255, 128
612       204, 255,   0
613       255, 211, 140
614       255,  79,   0
615       240, 145, 169
616       255, 219,  88
617       153,  17, 153
618       184, 134,  11
619       255, 102,   0
620       102, 205, 170
621       195,  33,  72
622       168, 153, 230
623       255, 250, 205
624     }
626 [teams]
627 ; freeciv optional team names definition.
629 ; names =
630 ;  _("Team 0"),
631 ; _("Team 1"),
632 ; _("Team 2"),
633 ; _("Team 3"),
634 ; etc...
636 [settings]
637 ; freeciv game settings for the civ2 ruleset
639 ; set =
640 ;     { "name", "value", "lock"
641 ;       "bool_set", TRUE, FALSE
642 ;       "int_set", 123, FALSE
643 ;       "str_set", "test", FALSE
644 ;     }
645 set =
646     { "name", "value", "lock"
647       "sciencebox", 50, FALSE
648       "startunits", "cc", FALSE
649       "borders", "DISABLED", FALSE
650       ; Ruleset has no trait ranges, so player choosing EVEN would have
651       ; no effect anyway
652       "traitdistribution", "FIXED", TRUE
653       "plrcolormode", "NATION_ORDER", FALSE
654     }