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