This file is indexed.

/usr/share/games/freeciv/multiplayer/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
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
; 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="Multiplayer game rules for Freeciv"
options="+Freeciv-2.4-ruleset"

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

; Description of the ruleset
description = _("\
You are playing Freeciv with rules designed for multiplayer gaming. \
The biggest differences from the default ruleset are that trade routes \
are disabled, and that most wonders can be built once by each player, \
and affect only cities on the same continent. A full description of \
the differences can be found in README.ruleset_multiplayer.\
")

[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     = 5

; 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 = 0

; 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 = 0

; 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 = 0

; 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 = 10000
improvement_factor = 1
unit_factor = 2
total_factor = 10000

[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 = 0

; 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  ; Red
      255, 255,   0  ; Yellow
        0, 255, 255  ; Blue
      138,  43, 226  ; Purple
      255, 165,   0  ; Orange
      255,   0, 255  ; Magenta
      173, 216, 230  ; Cornflower
        0, 255, 127  ; Emerald
      250, 128, 114  ; Salmon
      124, 252,   0  ; Green
      139,   0,   0  ; Burgundy
      255, 192, 203  ; Pink
      211, 211, 211  ; Silver
      218, 112, 214  ; Heliotrope
      255,  20, 147  ; Fuchsia
      100, 149, 237  ; Azure
      255, 215,   0  ; Gold
      245, 222, 179  ; Khaki
      255, 255, 128  ; Butter
      192, 255, 128  ; Mint
      204, 255,   0  ; Lime
      255, 211, 140  ; Peach
      255,  79,   0  ; Vermilion
      240, 145, 169  ; Puce
      255, 219,  88  ; Mustard
      153,  17, 153  ; Aubergine
      184, 134,  11  ; Brown
      255, 102,   0  ; Pumpkin
      102, 205, 170  ; Turquoise
      195,  33,  72  ; Crimson
      168, 153, 230  ; Lavender
      255, 250, 205  ; Cream
    }

[teams]
; Team names correspond roughly to colors defined above, so that
; plrcolormode=TEAM_ORDER is not gratuitously confusing.
names =
; /* TRANS: Name of a color; used as unique identifier for a team */
; /* TRANS: With this and other color team names, uniqueness is more */
; /* TRANS: important than precise translation. To see the colors, start a */
; /* TRANS: multiplayer game with 32 players and look at the Nations report. */
 _("?team name:Red"),
; /* TRANS: Name of a color; used as unique identifier for a team */
 _("?team name:Yellow"),
; /* TRANS: Name of a color; used as unique identifier for a team */
 _("?team name:Blue"),
; /* TRANS: Name of a color; used as unique identifier for a team */
 _("?team name:Purple"),
; /* TRANS: Name of a color; used as unique identifier for a team */
 _("?team name:Orange"),
; /* TRANS: Name of a color; used as unique identifier for a team */
 _("?team name:Magenta"),
; /* TRANS: Name of a color; used as unique identifier for a team */
 _("?team name:Cornflower"),
; /* TRANS: Name of a color; used as unique identifier for a team */
 _("?team name:Emerald"),
; /* TRANS: Name of a color; used as unique identifier for a team */
 _("?team name:Salmon"),
; /* TRANS: Name of a color; used as unique identifier for a team */
 _("?team name:Green"),
; /* TRANS: Name of a color; used as unique identifier for a team */
 _("?team name:Burgundy"),
; /* TRANS: Name of a color; used as unique identifier for a team */
 _("?team name:Pink"),
; /* TRANS: Name of a color; used as unique identifier for a team */
 _("?team name:Silver"),
; /* TRANS: Name of a color; used as unique identifier for a team */
 _("?team name:Heliotrope"),
; /* TRANS: Name of a color; used as unique identifier for a team */
 _("?team name:Fuchsia"),
; /* TRANS: Name of a color; used as unique identifier for a team */
 _("?team name:Azure"),
; /* TRANS: Name of a color; used as unique identifier for a team */
 _("?team name:Gold"),
; /* TRANS: Name of a color; used as unique identifier for a team */
 _("?team name:Khaki"),
; /* TRANS: Name of a color; used as unique identifier for a team */
 _("?team name:Butter"),
; /* TRANS: Name of a color; used as unique identifier for a team */
 _("?team name:Mint"),
; /* TRANS: Name of a color; used as unique identifier for a team */
 _("?team name:Lime"),
; /* TRANS: Name of a color; used as unique identifier for a team */
 _("?team name:Peach"),
; /* TRANS: Name of a color; used as unique identifier for a team */
 _("?team name:Vermilion"),
; /* TRANS: Name of a color; used as unique identifier for a team */
 _("?team name:Puce"),
; /* TRANS: Name of a color; used as unique identifier for a team */
 _("?team name:Mustard"),
; /* TRANS: Name of a color; used as unique identifier for a team */
 _("?team name:Aubergine"),
; /* TRANS: Name of a color; used as unique identifier for a team */
 _("?team name:Brown"),
; /* TRANS: Name of a color; used as unique identifier for a team */
 _("?team name:Pumpkin"),
; /* TRANS: Name of a color; used as unique identifier for a team */
 _("?team name:Turquoise"),
; /* TRANS: Name of a color; used as unique identifier for a team */
 _("?team name:Crimson"),
; /* TRANS: Name of a color; used as unique identifier for a team */
 _("?team name:Lavender"),
; /* TRANS: Name of a color; used as unique identifier for a team */
 _("?team name:Cream")

[settings]
set =
    { "name", "value", "lock"
      "generator", "ISLAND", FALSE
      "topology", "WRAPX|WRAPY", FALSE
      "startpos", "SINGLE", FALSE
      "tinyisles", FALSE, FALSE
      "alltemperate", TRUE, FALSE
      "separatepoles", FALSE, FALSE
      "huts", 0, FALSE
      "aifill", 0, FALSE
      "dispersion", 0, FALSE
      "diplomacy", "DISABLED", FALSE
      "contactturns", 0, FALSE
      "revolen", 2, FALSE
      "barbarians", "DISABLED", FALSE
      "techpenalty", 0, FALSE
      "startunits", "cccwwwxxxx", FALSE
      "specials", 350, FALSE
      "borders", "DISABLED", FALSE
    }