; 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="Civ1-style game rules for Freeciv"
options="+Freeciv-2.3-ruleset"

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

; Description of the ruleset
description = _("You are playing with civ1 style rules. \
These rules are much simpler than the Freeciv default rules. \
If you know only the default rules, spend some time checking the \
differences.\
\n\n\
 * There are fewer technologies, buildings and units.\n\
 * Units have no hitpoints. If they win a battle, they remain in full health.\n\
")

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

[civstyle]
; 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    = 0
min_city_center_shield  = 0
min_city_center_trade   = 0

; Minimum distance between cities (move distance).
; (Minimum value for this is 1, which means adjacent is okay.)
min_dist_bw_cities      = 1

; Square of initially city radius
init_city_radius_sq     = 5

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

; 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      = "Pollution"

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

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

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

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

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

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

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

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

[calendar]
; Year 1 instead of 0.
skip_year_0 = 1

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

[settings]
; freeciv game  for the civ1 ruleset
;
; set =
;     { "name", "value", "lock"
;       "bool_set", TRUE, FALSE
;       "int_set", 123, FALSE
;       "str_set", "test", FALSE
;     }
set =
    { "name", "value", "lock"
      "sciencebox", 50, FALSE
      "startunits", "c", FALSE
      "borders", "DISABLED", FALSE
    }
