This file is indexed.

/usr/share/games/freeciv/experimental/game.ruleset is in freeciv-data 2.4.2-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
; This is the experimental ruleset. See doc/README.ruleset_experimental
; for a detailed description.

; Modifying this file:
; You should not modify this file except to make bugfixes or
; for other "maintenance".  If you want to make custom changes,
; you should create a new datadir subdirectory and copy this file
; into that directory, and then modify that copy.  Then use the
; command "rulesetdir <mysubdir>" in the server to have freeciv
; use your new customized file.

; Note that the freeciv AI may not cope well with anything more
; than minor changes.

[datafile]
description="Experimental game rules for Freeciv"
options="+Freeciv-2.4-ruleset"

[about]
; Ruleset name
name = _("Experimental ruleset")

; Description of the ruleset
description = _("\
You are playing with the experimental ruleset. This showcases new or \
unusual features available in Freeciv without regard for strict game \
balancing or playability. A description of the differences from the \
default ruleset can be found in README.ruleset_experimental.\
")

[options]
global_init_techs=""
global_init_buildings="Palace"

[civstyle]
; Value added to city pollution
base_pollution   = -20

; Cost in luxuries of making one citizen happier
happy_cost       = 2

; Cost in food of upkeeping a single citizen
food_cost        = 2

; Parameters used to generalize the calculation of city granary size:
;   if city_size <= num_inis:
;     city_granary_size = (granary_food_ini[city_size] * foodbox / 100)
;   if city_size > num_inis;
;     city_granary_size = (granary_food_ini[num_inis] +
;        granary_food_inc * (city_size - num_inis)) * foodbox / 100
granary_food_ini = 20
granary_food_inc = 10

; City center minimum outputs
min_city_center_food    = 1
min_city_center_shield  = 1
min_city_center_trade   = 0

; Square of initial city radius
init_city_radius_sq     = 2

; Square of initially visible radius (true distance).
init_vis_radius_sq      = 5

; The type of collateral contamination produced by a nuclear attack.
;   "Pollution" - Pollution (same as industrial/population-generated).
;   "Fallout"   - Nuclear Fallout (distinct from industrial/population).
nuke_contamination      = "Fallout"

; A base bribe cost, modified heavily by other factors
base_bribe_cost  = 750

; Barbarian leader ransom in gold
ransom_gold      = 100

; Number of veteran levels lost when upgrading a unit
upgrade_veteran_loss     = 0

; Number of veteran levels lost when auto-upgrading a unit
autoupgrade_veteran_loss = 0

; Whether player gets to select which terrain improvement to pillage.
pillage_select           = 1

; Method of paying unit and improvement gold upkeep
; 0 - The player`s total gold must be non-negative after paying upkeep
;     costs associated with each city. If for any city the player`s gold
;     is negative, random buildings in the city are sold off. If the gold
;     is still negative, then supported units with gold upkeep are
;     disbanded.
; 1 - In the first step, the player`s total gold must be non-negative after
;     paying upkeep for all buildings within a city. If for any city the
;     player`s gold is negative, random buildings in the city are sold off.
;     In the second step, gold upkeep for all units is paid in a lump sum.
;     If the player does not have enough gold, random units with gold upkeep
;     are disbanded.
; 2 - Gold upkeep for all buildings and units is paid in a lump sum after
;     all cities have been processed. If the player does not have enough
;     gold, alternatively a random buildings from a random cities is sold
;     and a random units with gold upkeep is disbanded till the treasury is
;     balanced.
gold_upkeep_style = 1

; Method of calculating technology costs
;   0 - Civ (I|II) style. Every new tech add researchcost to cost of next tech.
;   1 - Cost of technology is:
;         MAX((1+parents) * (researchcost/2) * sqrt(1+parents), researchcost)
;       where num_parents == number of requirement for tech, counted
;       recursively.
;   2 - Cost are read from tech.ruleset. Missing costs are generated by
;       style 1.
;   3 - Cost of technology is:
;         cost = base * (reqs - 1)^2 / (1 + sqrt(sqrt(reqs))) - base/2
;   4 - Cost are read from tech.ruleset. Missing costs are generated by
;       style 3.
tech_cost_style = 1

; Base research cost for tech styles 1 & 2
base_tech_cost   = 20

; Technology leak from other civilizations
; 0 - No reduction of the technology cost.
; 1 - Technology cost is reduced depending on the number of players
;     which already know the tech and you have an embassy with.
; 2 - Technology cost is reduced depending on the number of all players
;     (human, AI and barbarians) which already know the tech.
; 3 - Technology cost is reduced depending on the number of normal
;     players (human and AI) which already know the tech.
tech_leakage = 0

[illness]
; Whether plagues (illness) are possible
illness_on = 1

; the base factor for illness (of percent)
illness_base_factor = 25

; minimum city size for illness
illness_min_size = 3

; factor for how much trading with a plagued city increases our city`s
; chance for plague (in percent)
illness_trade_infection = 50

; factor for how much pollution within a city increases its chance for
; plague (in percent)
illness_pollution_factor = 50

[incite_cost]
; city_incite_cost = total_factor * (city_size) * (base_incite_cost
;                      + (units_cost) * unit_factor
;                      + (improvements_cost) * improvement_factor)
;                    / ((distance to capital) * 100)
; See city_incite_cost() for more details
base_incite_cost = 1000
improvement_factor = 1
unit_factor = 2
total_factor = 100

[global_unit_options]
; Shore landing style
;  0 - normal movement
;  1 - (default) slow invasions by removing all
;      movement points from ground units moving
;      from ocean tile to land
slow_invasions = 1

[combat_rules]
;If killstack is set to 1, each time a defender unit lost in combat, and is
;not inside a city, fortress or airbase, all units in the same tile are
;destroyed along with the defender. This is the freeciv default.
;If this options is set to 0, only the defender unit is destroyed.
killstack = 1

;If tired_attack is set to 1, units that attack with only 1/3 or 2/3 moves
;left will have their attack power reduced by 2/3 or 1/3 respectively. If
;this is set to 0 units will attack with full strength even if they have
;only fractional moves left.
tired_attack = 0

[borders]
; Base border radius from city.
radius_sq_city = 17

; Border radius square increased by this amount / point of city size
size_effect    = 1

[research]
; Method of paying tech upkeep
; 0 - no upkeep
; 1 - upkeep is calculated as:
;     <Cost of technology> / tech_upkeep_divider - tech_upkeep_free
tech_upkeep_style = 1

; upkeep cost is divided by this value
tech_upkeep_divider = 2000

[calendar]
; Year in the beginning of the game
start_year = -4000

; Year 1 instead of 0.
skip_year_0 = 1

; What labels are used for positive and negative years.
; /* TRANS: year label (Common Era) */
positive_label = _("CE")
; /* TRANS: year label (Before Common Era) */
negative_label = _("BCE")

[playercolors]
background.r = 86
background.g = 86
background.b = 86

; Player colors for 32 players are defined below.
; Avoid greens, blues, and white / very pale colors (too easy to confuse
; with terrain).
; Avoid dark colors.
colorlist =
    { "r", "g", "b"
      255,   0,   0
      255, 255,   0
        0, 255, 255
      138,  43, 226
      255, 165,   0
      255,   0, 255
      173, 216, 230
        0, 255, 127
      250, 128, 114
      124, 252,   0
      139,   0,   0
      255, 192, 203
      211, 211, 211
      218, 112, 214
      255,  20, 147
      100, 149, 237
      255, 215,   0
      245, 222, 179
      255, 255, 128
      192, 255, 128
      204, 255,   0
      255, 211, 140
      255,  79,   0
      240, 145, 169
      255, 219,  88
      153,  17, 153
      184, 134,  11
      255, 102,   0
      102, 205, 170
      195,  33,  72
      168, 153, 230
      255, 250, 205
    }

[teams]
; freeciv optional team names definition.
;
; name =
;  _("Team 0"),
; _("Team 1"),
; _("Team 2"),
; _("Team 3"),
; etc...

[settings]
; freeciv game settings for the experimental ruleset
;
; set =
;     { "name", "value", "lock"
;       "bool_set", TRUE, FALSE
;       "int_set", 123, FALSE
;       "str_set", "test", FALSE
;     }
set =
    { "name", "value", "lock"
      "migration", TRUE, TRUE
      "mgr_turninterval", 3, FALSE
      "mgr_foodneeded", TRUE, FALSE
      "mgr_distance", 3, FALSE
      "mgr_nationchance", 75, FALSE
      "mgr_worldchance", 25, FALSE
      "foggedborders", TRUE, FALSE
      "techlost_recv", 5, FALSE
      "techlost_donor", 3, FALSE
      "ec_turns", 9, FALSE
      "ec_max_size", 100, FALSE
      "ec_chat", TRUE, FALSE
      "ec_info", TRUE, FALSE
    }