Put the only-domestic-wonder-building-can-receive-help-rule in the ruleset.
[freeciv.git] / data / experimental / game.ruleset
blob2c24587f9abc064f38b9ed8d2755348b89557a8d
1 ; This is the experimental ruleset. See doc/README.ruleset_experimental
2 ; for a detailed description.
4 ; Modifying this file:
5 ; You should not modify this file except to make bugfixes or
6 ; for other "maintenance".  If you want to make custom changes,
7 ; you should create a new datadir subdirectory and copy this file
8 ; into that directory, and then modify that copy.  Then use the
9 ; command "rulesetdir <mysubdir>" in the server to have freeciv
10 ; use your new customized file.
12 ; Note that the freeciv AI may not cope well with anything more
13 ; than minor changes.
15 [datafile]
16 description="Experimental game rules for Freeciv"
17 options="+Freeciv-ruleset-Devel-2014.September.14c"
19 [about]
20 ; Ruleset name
21 name = _("Experimental ruleset")
23 ; There`s no separate versioning in rulesets part of main freeciv distribution
24 ;version = ""
26 ; Description of the ruleset
27 description = _("\
28 You are playing with the experimental ruleset. This showcases new or \
29 unusual features available in Freeciv without regard for strict game \
30 balancing or playability. A description of the differences from the \
31 classic ruleset can be found in README.ruleset_experimental.\
34 [options]
35 global_init_techs=""
36 global_init_buildings="Palace"
38 [civstyle]
39 ; Value added to city pollution
40 base_pollution   = -20
42 ; Cost in luxuries of making one citizen happier
43 happy_cost       = 2
45 ; Cost in food of upkeeping a single citizen
46 food_cost        = 2
48 ; Parameters used to generalize the calculation of city granary size:
49 ;   if city_size <= num_inis:
50 ;     city_granary_size = (granary_food_ini[city_size] * foodbox / 100)
51 ;   if city_size > num_inis;
52 ;     city_granary_size = (granary_food_ini[num_inis] +
53 ;        granary_food_inc * (city_size - num_inis)) * foodbox / 100
54 granary_food_ini = 20
55 granary_food_inc = 10
57 ; City center minimum outputs
58 min_city_center_food    = 1
59 min_city_center_shield  = 1
60 min_city_center_trade   = 0
62 ; Square of initial city radius
63 init_city_radius_sq     = 2
65 ; Square of initially visible radius (true distance).
66 init_vis_radius_sq      = 5
68 ; A base bribe cost, modified heavily by other factors
69 base_bribe_cost  = 750
71 ; Barbarian leader ransom in gold
72 ransom_gold      = 100
74 ; Number of veteran levels lost when upgrading a unit
75 upgrade_veteran_loss     = 0
77 ; Number of veteran levels lost when auto-upgrading a unit
78 autoupgrade_veteran_loss = 0
80 ; Whether player gets to select which terrain improvement to pillage.
81 pillage_select           = TRUE
83 ; Whether one can steal a tech for which prereqs are not known
84 tech_steal_allow_holes    = TRUE
85 ; Whether one can get a tech for which prereqs are not known via
86 ; diplomatic trading
87 tech_trade_allow_holes    = TRUE
88 ; ...and whether one can lose a tech which is prereq for another known
89 ; tech via trade, if techlost_donor is nonzero
90 tech_trade_loss_allow_holes = TRUE
91 ; Whether one can get a tech for which prereqs are not known via
92 ; parasite effect (Great Library)
93 tech_parasite_allow_holes = TRUE
94 ; Whether one can lose a tech which is prereq for another known tech
95 ; due to negative bulbs, if techlossforgiveness allows loss
96 tech_loss_allow_holes     = TRUE
98 ; Whether civil war is possible at all
99 civil_war_enabled        = TRUE
101 ; Comma separated list of things to happen, in addition to death
102 ; of owner, when gameloss unit dies
103 ; "CivilWar"   - Part of the empire remains, controlled by a new player
104 ; "Barbarians" - Depending on if there`s also "CivilWar", all or part
105 ;                or half of the dead players empire gets under barbarian
106 ;                control.
107 ; "Loot"       - Player who killed the gameloss unit gets loot:
108 ;                Partial map, gold, techs, cities
109 gameloss_style           = ""
111 ; Whether units may safely paradrop to transport on non-native terrain
112 paradrop_to_transport    = TRUE
114 ; Method of paying unit and improvement gold upkeep
115 ; "City" - The player`s total gold must be non-negative after paying upkeep
116 ;          costs associated with each city. If for any city the player`s
117 ;          gold is negative, random buildings in the city are sold off. If
118 ;          the gold is still negative, then supported units with gold upkeep
119 ;          are disbanded.
120 ; "Mixed" - In the first step, the player`s total gold must be non-negative
121 ;           after paying upkeep for all buildings within a city. If for any
122 ;           city the player`s gold is negative, random buildings in the city
123 ;           are sold off.
124 ;           In the second step, gold upkeep for all units is paid in a lump
125 ;           sum. If the player does not have enough gold, random units with
126 ;           gold upkeep are disbanded.
127 ; "Nation" - Gold upkeep for all buildings and units is paid in a lump sum
128 ;            after all cities have been processed. If the player does not
129 ;            have enough gold, random buildings from random cities are sold.
130 ;            If still more gold is needed, then random units with gold
131 ;            upkeep are disbanded.
132 gold_upkeep_style = "Mixed"
134 [illness]
135 ; Whether plagues (illness) are possible
136 illness_on = TRUE
138 ; the base factor for illness (of percent)
139 illness_base_factor = 25
141 ; minimum city size for illness
142 illness_min_size = 3
144 ; factor for how much trading with a plagued city increases our city`s
145 ; chance for plague (in percent)
146 illness_trade_infection = 50
148 ; factor for how much pollution within a city increases its chance for
149 ; plague (in percent)
150 illness_pollution_factor = 50
152 [incite_cost]
153 ; city_incite_cost = total_factor * (city_size) * (base_incite_cost
154 ;                      + (units_cost) * unit_factor
155 ;                      + (improvements_cost) * improvement_factor)
156 ;                    / ((distance to capital) * 100)
157 ; See city_incite_cost() for more details
158 base_incite_cost = 1000
159 improvement_factor = 1
160 unit_factor = 2
161 total_factor = 100
163 [global_unit_options]
164 ; Shore landing style
165 ;  FALSE - normal movement
166 ;  TRUE  - (default) slow invasions by removing all
167 ;          movement points from ground units moving
168 ;          from ocean tile to land
169 slow_invasions = TRUE
171 [combat_rules]
172 ; If tired_attack is set to TRUE, units that attack with less than a single
173 ; move point (per move_fragments in terrain.ruleset) will have their attack
174 ; power reduced accordingly. For instance, if move_fragments=3, a unit with
175 ; 2/3 move points will have attack power 2/3 of normal.
176 ; If this is set to FALSE units will attack with full strength even if they
177 ; have only fractional moves left.
178 tired_attack = FALSE
180 ; /* <-- avoid gettext warnings
182 ; Action enablers:
184 ; action               = the action to enable.
185 ; actor_reqs           = requirements that apply to the actor.
186 ; target_reqs          = requirements that apply to the target.
188 ; README.actions lists the possible actions and their hard coded
189 ; requirements. Note that an action may append some of its hard
190 ; requirements to actor_reqs and target_reqs.
192 ; An action enabler is active when its actor_reqs AND its target_reqs are
193 ; satisfied.
195 ; */ <-- avoid gettext warnings
196 [actionenabler_sabotage_city]
197 action = "Sabotage City"
198 actor_reqs    =
199     { "type",   "name", "range", "present"
200       "UnitFlag", "Diplomat", "Local", TRUE
201       "DiplRel", "War", "Local", TRUE
202       "UnitState", "TransportDependent", "Local", FALSE
203       "MinMoveFrags", "1", "Local", TRUE
204     }
206 [actionenabler_sabotage_city_target]
207 action = "Targeted Sabotage City"
208 actor_reqs    =
209     { "type",   "name", "range", "present"
210       "DiplRel", "War", "Local", TRUE
211       "UnitFlag", "Spy", "Local", TRUE
212       "UnitState", "TransportDependent", "Local", FALSE
213       "MinMoveFrags", "1", "Local", TRUE
214     }
216 [actionenabler_establish_embassy]
217 action       = "Establish Embassy"
218 actor_reqs    =
219     { "type",   "name", "range", "present"
220       "UnitFlag", "Diplomat", "Local", TRUE
221       "UnitState", "TransportDependent", "Local", FALSE
222       "MinMoveFrags", "1", "Local", TRUE
223     }
224 target_reqs  =
225     { "type",   "name", "range", "present"
226       "Nation", "Barbarian", "Player", FALSE
227       "Nation", "Pirate", "Player", FALSE
228     }
230 [actionenabler_explorer_establish_embassy]
231 action       = "Establish Embassy"
232 actor_reqs    =
233     { "type",   "name", "range", "present"
234       "UnitType", "Explorer", "Local", TRUE
235       "Tech", "Writing", "Player", TRUE
236       "UnitState", "TransportDependent", "Local", FALSE
237       "MinMoveFrags", "1", "Local", TRUE
238     }
239 target_reqs  =
240     { "type",   "name", "range", "present"
241       "Nation", "Barbarian", "Player", FALSE
242       "Nation", "Pirate", "Player", FALSE
243     }
245 [actionenabler_investigate_city]
246 action       = "Investigate City"
247 actor_reqs    =
248     { "type",   "name", "range", "present"
249       "UnitFlag", "Diplomat", "Local", TRUE
250       "UnitState", "TransportDependent", "Local", FALSE
251       "MinMoveFrags", "1", "Local", TRUE
252     }
254 [actionenabler_poison_city]
255 action = "Poison City"
256 actor_reqs    =
257     { "type",   "name", "range", "present"
258       "UnitFlag", "Spy", "Local", TRUE
259       "DiplRel", "War", "Local", TRUE
260       "UnitState", "TransportDependent", "Local", FALSE
261       "MinMoveFrags", "1", "Local", TRUE
262     }
263 target_reqs    =
264     { "type",   "name", "range"
265       "MinSize", "2", "City"
266     }
268 [actionenabler_steal_tech_random]
269 action = "Steal Tech"
270 actor_reqs    =
271     { "type",   "name", "range", "present"
272       "UnitFlag", "Diplomat", "Local", TRUE
273       "UnitState", "TransportDependent", "Local", FALSE
274       "MinMoveFrags", "1", "Local", TRUE
275     }
276 target_reqs  =
277     { "type",   "name", "range", "present"
278       "Nation", "Barbarian", "Player", FALSE
279       "Nation", "Pirate", "Player", FALSE
280     }
282 [actionenabler_steal_tech_target]
283 action = "Targeted Steal Tech"
284 actor_reqs    =
285     { "type",   "name", "range", "present"
286       "UnitFlag", "Spy", "Local", TRUE
287       "UnitState", "TransportDependent", "Local", FALSE
288       "MinMoveFrags", "1", "Local", TRUE
289     }
290 target_reqs  =
291     { "type",   "name", "range", "present"
292       "Nation", "Barbarian", "Player", FALSE
293       "Nation", "Pirate", "Player", FALSE
294     }
296 [actionenabler_incite_city]
297 action = "Incite City"
298 actor_reqs    =
299     { "type",   "name", "range", "present"
300       "UnitFlag", "Diplomat", "Local", TRUE
301       "DiplRel", "Alliance", "Local", FALSE
302       "DiplRel", "Team", "Local", FALSE
303       "UnitState", "TransportDependent", "Local", FALSE
304       "MinMoveFrags", "1", "Local", TRUE
305     }
306 target_reqs    =
307     { "type",   "name", "range", "present"
308       "Gov", "Democracy", "Player", FALSE
309       "Building", "Palace", "City", FALSE
310     }
312 [actionenabler_bribe_unit]
313 action = "Bribe Unit"
314 actor_reqs    =
315     { "type",   "name", "range", "present"
316       "UnitFlag", "Diplomat", "Local", TRUE
317       "DiplRel", "Alliance", "Local", FALSE
318       "DiplRel", "Team", "Local", FALSE
319       "UnitState", "TransportDependent", "Local", FALSE
320       "MinMoveFrags", "1", "Local", TRUE
321     }
322 target_reqs    =
323     { "type",   "name", "range", "present"
324       "UnitType", "Leader", "Local", FALSE
325       "UnitType", "Barbarian Leader", "Local", FALSE
326       "CityTile", "Center", "Local", FALSE
327       "Gov", "Democracy", "Player", FALSE
328     }
330 [actionenabler_sabotage_unit]
331 action = "Sabotage Unit"
332 actor_reqs    =
333     { "type",   "name", "range", "present"
334       "Unitflag", "Spy", "Local", TRUE
335       "DiplRel", "War", "Local", TRUE
336       "UnitState", "TransportDependent", "Local", FALSE
337       "MinMoveFrags", "1", "Local", TRUE
338     }
339 target_reqs    =
340     { "type",   "name", "range", "present"
341       "CityTile", "Center", "Local", FALSE
342       "MinHitPoints", "2", "Local", TRUE
343     }
345 [actionenabler_traderoute]
346 action = "Establish Trade Route"
348 [actionenabler_marketplace]
349 action = "Enter Marketplace"
351 [actionenabler_help_build_wonder]
352 action = "Help Wonder"
353 actor_reqs    =
354     { "type",   "name", "range", "present"
355       "DiplRel", "Is foreign", "Local", FALSE
356     }
358 [borders]
359 ; Base border radius from city.
360 radius_sq_city = 17
362 ; Border radius square increased by this amount / point of city size
363 size_effect    = 1
365 [research]
366 ; Method of calculating technology costs
367 ;   "Civ I|II"      - Civ (I|II) style. Every new tech add researchcost to
368 ;                     cost of next tech.
369 ;   "Classic"       - Cost of technology is:
370 ;                       base_tech_cost * (1 + reqs) * sqrt(1 + reqs) / 2
371 ;                     where reqs == number of requirement for tech, counted
372 ;                     recursively.
373 ;   "Classic+"      - Cost are read from tech.ruleset. Missing costs are
374 ;                     generated by style "Classic".
375 ;   "Experimental"  - Cost of technology is:
376 ;                       base_tech_cost * (reqs^2 / (1 + sqrt(sqrt(reqs + 1)))
377 ;                                         - 0.5)
378 ;                     where reqs == number of requirement for tech, counted
379 ;                     recursively.
380 ;   "Experimental+" - Cost are read from tech.ruleset. Missing costs are
381 ;                     generated by style "Experimental".
382 tech_cost_style = "Classic"
384 ; Base research cost for tech styles 1 & 2
385 base_tech_cost   = 20
387 ; Technology leak from other civilizations
388 ; "None"           - No reduction of the technology cost.
389 ; "Embassies"      - Technology cost is reduced depending on the number of
390 ;                    players which already know the tech and you have an
391 ;                    embassy with.
392 ; "All Players"    - Technology cost is reduced depending on the number of
393 ;                    all players (human, AI and barbarians) which already
394 ;                    know the tech.
395 ; "Normal Players" - Technology cost is reduced depending on the number of
396 ;                    normal players (human and AI) which already know the
397 ;                    tech.
398 tech_leakage = "None"
400 ; Method of paying tech upkeep
401 ; "None"   - no upkeep
402 ; "Basic"  - upkeep is calculated as:
403 ;     <Cost of technology> / tech_upkeep_divider - tech_upkeep_free
404 ; "Cities" - upkeep is calculated like "Basic", but multiplied by number of cities
405 tech_upkeep_style = "Basic"
407 ; upkeep cost is divided by this value
408 tech_upkeep_divider = 2000
410 ; Method of selecting techs given for free
411 ; "Goal"     - Towards player`s goal, random if no goal
412 ; "Random"   - Random researchable tech
413 ; "Cheapest" - Cheapest researchable tech, random among equal cost ones
414 free_tech_method = "Goal"
416 [culture]
417 ; Minimum culture points for cultural domination victory
418 victory_min_points = 1000
420 ; Lead needed relative to second best player
421 victory_lead_pct   = 300
423 ; How much each culture point affects the migration
424 ; from/to the city.
425 migration_pct = 50
427 [calendar]
428 ; Year in the beginning of the game
429 start_year = -4000
431 ; Year 1 instead of 0.
432 skip_year_0 = TRUE
434 ; How many fragments each year has. Value 0 disables year advancement by fragment
435 ; accumulation.
436 fragments = 0
438 ; Calendar fragment names. If name is missing, only a fragment number +1 (so human readable
439 ; numbers begin froḿ 1 and not 0) is shown.
441 ;fragment_name0 = "Jan"
442 ;fragment_name1 = "Feb"
443 ; ...
445 ; What labels are used for positive and negative years.
446 ; /* TRANS: year label (Common Era) */
447 positive_label = _("CE")
448 ; /* TRANS: year label (Before Common Era) */
449 negative_label = _("BCE")
451 ; /* <-- avoid gettext warnings
453 ; Disaster types:
455 ; name                    = translatable name as seen by user
456 ; reqs                    = requirements for disaster to happen (see effects.ruleset
457 ;                           and README.effects for help on requirements)
458 ; frequency               = how likely disaster is to occur
459 ; effects
460 ;   - "DestroyBuilding"   = Random building is destroyed
461 ;   - "ReducePopulation"  = Reduce city size by one unless it's already 1
462 ;   - "ReducePopDestroy"  = Reduce city size by one, possibly destroying the city
463 ;   - "EmptyFoodStock"    = Remove all food from food stock
464 ;   - "EmptyProdStock"    = Destroy current production
465 ;   - "Pollution"         = One tile surrounding city polluted
466 ;   - "Fallout"           = One tile surrounding city polluted with fallout
468 ; */ <-- avoid gettext warnings
470 [disaster_earthquake]
471 name           = _("Earthquake")
472 frequency      = 10
473 effects        = "DestroyBuilding"
475 [disaster_fire]
476 name           = _("Fire")
477 frequency      = 10
478 effects        = "DestroyBuilding"
480 [disaster_industrial_accident]
481 name           = _("Industrial Accident")
482 reqs           =
483     { "type", "name", "range"
484       "Building", "Mfg. Plant", "City"
485     }
486 frequency      = 10
487 effects        = "ReducePopulation", "Pollution"
489 ; /* <-- avoid gettext warnings
491 ; Achievement types:
493 ; name                    = translatable name as seen by user
494 ; rule_name               = (optional) name for savegames, rulesets etc; if not
495 ;                           present, 'name' is used. Since the name used in
496 ;                           savegames must not change, use this when renaming a
497 ;                           achievement after a ruleset has been released.
498 ; type                    = What event grants the achievement to player.
499 ;                           See README.achievements for list of these types.
500 ; unique                  = If TRUE, only first one reaching the achievement will
501 ;                           get it. Defaults to TRUE.
502 ; value                   = Value to reach. Exact meaning of this depends on
503 ;                           achievement type.
504 ; culture                 = Amount of culture granted to player who gets achievement
505 ;                           granted.
506 ; first_msg               = Message shown to first player gaining the achievement
507 ; cons_msg                = Message shown to consecutive players gaining the achievement
509 ; */ <-- avoid gettext warnings
511 [achievement_spaceship]
512 name           = _("Spaceship Launch")
513 type           = "Spaceship"
514 first_msg      = _("You're the first one to launch spaceship towards Alpha Centauri!");
515 cons_msg       = _("You have launched spaceship towards Alpha Centauri!")
517 [achievement_map_known]
518 name           = _("Entire Map Known")
519 type           = "Map_Known"
520 value          = 100
521 first_msg      = _("You're the first one to have entire world mapped!")
522 cons_msg       = _("You have entire world mapped!")
524 [achievement_map_known_20p]
525 name           = _("Map Known 20 pct")
526 type           = "Map_Known"
527 value          = 20
528 ; /* xgettext:no-c-format */
529 first_msg      = _("You're the first one to have 20% of the world mapped!")
530 ; /* xgettext:no-c-format */
531 cons_msg       = _("You have 20% of the world mapped!")
533 [achievement_another_island]
534 name          = _("Land Ahoy")
535 type          = "Land_Ahoy"
536 value         = 2
537 first_msg     = _("As the first people in history, your people see foreign continent!")
538 cons_msg      = _("You see foreign island!")
541 ; Trade settings
543 ; IN = international, IC = intercontinental.
544 ; For each of the trade route types:
545 ; "pct"        - Trade income %. If this is 0, trade route cannot be
546 ;                established at all
547 ; "cancelling" - What to do to previously established traderoutes when they
548 ;                turn illegal
549 ;                "Active"   - Keep them active (although they will only
550 ;                             provide nonzero income if illegal due to
551 ;                             trademindist rather than pct==0)
552 ;                "Inactive" - Keep them inactive
553 ;                "Cancel"   - Cancel them altogether
554 ; "bonus"      - One-time bonuses granted when traderoute established
555 ;                "None"     - No one-time bonus
556 ;                "Gold"     - Bonus to gold
557 ;                "Science"  - Bonus to research
558 ;                "Both"     - Bonus to gold and research
560 [trade]
561 settings =
562   { "type",       "pct", "cancelling", "bonus"
563     "National",   100,   "Cancel",     "Both"
564     "NationalIC", 200,   "Cancel",     "Both"
565     "IN",         200,   "Cancel",     "Both"
566     "INIC",       400,   "Cancel",     "Both"
567     "Ally",       200,   "Cancel",     "Both"
568     "AllyIC",     400,   "Cancel",     "Both"
569     "Enemy",      200,   "Cancel",     "Both"
570     "EnemyIC",    400,   "Cancel",     "Both"
571     "Team",       200,   "Cancel",     "Both"
572     "TeamIC",     400,   "Cancel",     "Both"
573   }
575 [playercolors]
576 background.r = 86
577 background.g = 86
578 background.b = 86
580 ; Player colors for 32 players are defined below.
581 ; Avoid greens, blues, and white / very pale colors (too easy to confuse
582 ; with terrain).
583 ; Avoid dark colors.
584 colorlist =
585     { "r", "g", "b"
586       255,   0,   0
587       255, 255,   0
588         0, 255, 255
589       138,  43, 226
590       255, 165,   0
591       255,   0, 255
592       173, 216, 230
593         0, 255, 127
594       250, 128, 114
595       124, 252,   0
596       139,   0,   0
597       255, 192, 203
598       211, 211, 211
599       218, 112, 214
600       255,  20, 147
601       100, 149, 237
602       255, 215,   0
603       245, 222, 179
604       255, 255, 128
605       192, 255, 128
606       204, 255,   0
607       255, 211, 140
608       255,  79,   0
609       240, 145, 169
610       255, 219,  88
611       153,  17, 153
612       184, 134,  11
613       255, 102,   0
614       102, 205, 170
615       195,  33,  72
616       168, 153, 230
617       255, 250, 205
618     }
620 [teams]
621 ; freeciv optional team names definition.
623 ; name =
624 ;  _("Team 0"),
625 ; _("Team 1"),
626 ; _("Team 2"),
627 ; _("Team 3"),
628 ; etc...
630 [settings]
631 ; freeciv game settings for the experimental ruleset
633 ; set =
634 ;     { "name", "value", "lock"
635 ;       "bool_set", TRUE, FALSE
636 ;       "int_set", 123, FALSE
637 ;       "str_set", "test", FALSE
638 ;     }
639 set =
640     { "name", "value", "lock"
641       "migration", TRUE, TRUE
642       "mgr_turninterval", 3, FALSE
643       "mgr_foodneeded", TRUE, FALSE
644       "mgr_distance", 3, FALSE
645       "mgr_nationchance", 75, FALSE
646       "mgr_worldchance", 25, FALSE
647       "foggedborders", TRUE, FALSE
648       "techlost_recv", 5, FALSE
649       "techlost_donor", 3, FALSE
650       "ec_turns", 9, FALSE
651       "ec_max_size", 100, FALSE
652       "ec_chat", TRUE, FALSE
653       "ec_info", TRUE, FALSE
654       "techlossforgiveness", 15, FALSE
655     }