mirror of
https://github.com/yairm210/Unciv.git
synced 2025-07-04 07:17:50 +07:00
Fix table formatting in all file documentation
This commit is contained in:
@ -59,13 +59,14 @@ Almost all Unciv JSON files start with a "[" and end with a "]". In between thes
|
||||
This file contains two unit objects, one for a warrior and one for a spearman. These objects have different attributes, in this case "name", "cost" and "promotions". All these attributes have a certain type, a String (text) for "name", an Integer for "cost" and a List of Strings for "promotions".
|
||||
|
||||
There are different types of attributes:
|
||||
| type | notes |
|
||||
| --------- | ----- |
|
||||
| String | A word or sentence. Should be between double quotes (") |
|
||||
| Integer | A number. Can be both positive or negative. Should **not** be between quotes |
|
||||
| Boolean | A value that can either be 'true' or 'false'. Should **not** be between quotes |
|
||||
|
||||
| type | notes |
|
||||
|----------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| String | A word or sentence. Should be between double quotes (") |
|
||||
| Integer | A number. Can be both positive or negative. Should **not** be between quotes |
|
||||
| Boolean | A value that can either be 'true' or 'false'. Should **not** be between quotes |
|
||||
| List of [type] | If multiple values could apply (such as with the promotions above), they should be put inside a list. Each element of the list should be written like a normal attribute, separated by commas, and enclosed between square braces. E.g.: ["Shock I", "Shock II"] or [1, 2, 3]. |
|
||||
| Object | The most complicated type of attribute. An object is comprised of multiple attributes, each of which again has a type. These attributes have a key (the part before the ":") and a value (the part behind it). For an example, see below. |
|
||||
| Object | The most complicated type of attribute. An object is comprised of multiple attributes, each of which again has a type. These attributes have a key (the part before the ":") and a value (the part behind it). For an example, see below. |
|
||||
|
||||
Example of a Buildings.json adding a new "Cultural Library" building which gives +50% science and +50% culture:
|
||||
|
||||
|
@ -8,12 +8,12 @@ This file contains the beliefs that can be chosen for religions in your mod.
|
||||
|
||||
Each belief has the following structure:
|
||||
|
||||
| Attribute | Type | Default | Notes |
|
||||
| --------- | ---- | ------- |-----------------------------------------------------------------------------------|
|
||||
| name | String | Required | |
|
||||
| type | Enum | Required | Type of belief. Value must be Pantheon, Founder, Follower or Enhancer |
|
||||
| uniques | List of Strings | empty | List of [unique abilities](../../uniques) this belief adds to cities following it |
|
||||
| civilopediaText | List | empty | See [civilopediaText chapter](5-Miscellaneous-JSON-files.md#civilopedia-text) |
|
||||
| Attribute | Type | Default | Notes |
|
||||
|-----------------|-----------------|----------|-----------------------------------------------------------------------------------|
|
||||
| name | String | Required | |
|
||||
| type | Enum | Required | Type of belief. Value must be Pantheon, Founder, Follower or Enhancer |
|
||||
| uniques | List of Strings | empty | List of [unique abilities](../../uniques) this belief adds to cities following it |
|
||||
| civilopediaText | List | empty | See [civilopediaText chapter](5-Miscellaneous-JSON-files.md#civilopedia-text) |
|
||||
|
||||
## Buildings.json
|
||||
|
||||
@ -23,30 +23,30 @@ This file contains all the buildings and wonders you want to use in your mod.
|
||||
|
||||
Each building has the following structure:
|
||||
|
||||
| Attribute | Type | Default | Notes |
|
||||
| --------- | ---- | ------- | ----- |
|
||||
| name | String | Required | |
|
||||
| cost | Integer | -1 | Amount of production required to build the building. If -1, the `buildingCost` from `requiredTech` [column](#column-structure) is used |
|
||||
| [`<stats>`](3-Map-related-JSON-files.md#general-stat) | Float | 0 | Per-turn yield produced by the building |
|
||||
| maintenance | Integer | 0 | Maintenance cost of the building |
|
||||
| isWonder | Boolean | false | Whether this building is a global wonder |
|
||||
| isNationalWonder | Boolean | false | Whether this building is a national wonder |
|
||||
| requiredBuilding | String | none | A building that has to be built before this building can be built. Must be in [Buildings.json](#buildingsjson) |
|
||||
| requiredTech | String | none | The tech that should be researched before this building may be built. Must be in [Techs.json](#techsjson) |
|
||||
| requiredResource | String | none | The resource that is consumed when building this building. Must be in [TileResources.json](3-Map-related-JSON-files.md#tileresourcesjson) |
|
||||
| requiredNearbyImprovedResources | List of Strings | empty | The building can only be built if any of the resources in this list are within the borders of this city and have been improved. Each resource must be in [TileResources.json](3-Map-related-JSON-files.md#tileresourcesjson) |
|
||||
| replaces | String | none | The name of a building that should be replaced by this building. Must be in [Buildings.json](#buildingsjson) |
|
||||
| uniqueTo | String | none | If supplied, only the nation with this name can build this building. Must be in [Nations.json](#nationsjson) |
|
||||
| cityStrength | Integer | 0 | Strength bonus the city in which this building is built receives |
|
||||
| cityHealth | Integer | 0 | Health bonus the city in which this building is built receives |
|
||||
| hurryCostModifier | Integer | 0 | When this building is bought using gold or faith, the price is increased by this much percent |
|
||||
| quote | String | none | If this building is a (national) wonder, this string will be shown on the completion popup |
|
||||
| uniques | List of Strings | empty | List of [unique abilities](../../uniques) this building has |
|
||||
| replacementTextForUniques | String | none | If provided, this string will be shown instead of all of the uniques |
|
||||
| percentStatBonus | Object | none | Percentual bonus for stats provided by the building. Same format as [specialized stats](3-Map-related-JSON-files.md#specialized-stats) (numbers are in percent. i.e. `[30]` represents 30% __bonus__ to a stat) |
|
||||
| greatPersonPoints | Object | none | Great person points by this building generated per turn. Valid keys are the names of units (Great Scientist, Warrior, etc.), valid values are Integers |
|
||||
| specialistSlots | Object | none | Specialist slots provided by this building. Valid keys are the names of specialists (as defined in [Specialists.json](3-Map-related-JSON-files.md#specialistsjson)), valid values are Integers, the amount of slots provided for this specialist |
|
||||
| civilopediaText | List | empty | See [civilopediaText chapter](5-Miscellaneous-JSON-files.md#civilopedia-text) |
|
||||
| Attribute | Type | Default | Notes |
|
||||
|-------------------------------------------------------|-----------------|----------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| name | String | Required | |
|
||||
| cost | Integer | -1 | Amount of production required to build the building. If -1, the `buildingCost` from `requiredTech` [column](#column-structure) is used |
|
||||
| [`<stats>`](3-Map-related-JSON-files.md#general-stat) | Float | 0 | Per-turn yield produced by the building |
|
||||
| maintenance | Integer | 0 | Maintenance cost of the building |
|
||||
| isWonder | Boolean | false | Whether this building is a global wonder |
|
||||
| isNationalWonder | Boolean | false | Whether this building is a national wonder |
|
||||
| requiredBuilding | String | none | A building that has to be built before this building can be built. Must be in [Buildings.json](#buildingsjson) |
|
||||
| requiredTech | String | none | The tech that should be researched before this building may be built. Must be in [Techs.json](#techsjson) |
|
||||
| requiredResource | String | none | The resource that is consumed when building this building. Must be in [TileResources.json](3-Map-related-JSON-files.md#tileresourcesjson) |
|
||||
| requiredNearbyImprovedResources | List of Strings | empty | The building can only be built if any of the resources in this list are within the borders of this city and have been improved. Each resource must be in [TileResources.json](3-Map-related-JSON-files.md#tileresourcesjson) |
|
||||
| replaces | String | none | The name of a building that should be replaced by this building. Must be in [Buildings.json](#buildingsjson) |
|
||||
| uniqueTo | String | none | If supplied, only the nation with this name can build this building. Must be in [Nations.json](#nationsjson) |
|
||||
| cityStrength | Integer | 0 | Strength bonus the city in which this building is built receives |
|
||||
| cityHealth | Integer | 0 | Health bonus the city in which this building is built receives |
|
||||
| hurryCostModifier | Integer | 0 | When this building is bought using gold or faith, the price is increased by this much percent |
|
||||
| quote | String | none | If this building is a (national) wonder, this string will be shown on the completion popup |
|
||||
| uniques | List of Strings | empty | List of [unique abilities](../../uniques) this building has |
|
||||
| replacementTextForUniques | String | none | If provided, this string will be shown instead of all of the uniques |
|
||||
| percentStatBonus | Object | none | Percentual bonus for stats provided by the building. Same format as [specialized stats](3-Map-related-JSON-files.md#specialized-stats) (numbers are in percent. i.e. `[30]` represents 30% __bonus__ to a stat) |
|
||||
| greatPersonPoints | Object | none | Great person points by this building generated per turn. Valid keys are the names of units (Great Scientist, Warrior, etc.), valid values are Integers |
|
||||
| specialistSlots | Object | none | Specialist slots provided by this building. Valid keys are the names of specialists (as defined in [Specialists.json](3-Map-related-JSON-files.md#specialistsjson)), valid values are Integers, the amount of slots provided for this specialist |
|
||||
| civilopediaText | List | empty | See [civilopediaText chapter](5-Miscellaneous-JSON-files.md#civilopedia-text) |
|
||||
|
||||
## Nations.json
|
||||
|
||||
@ -56,33 +56,32 @@ This file contains all the nations and city states, including Barbarians and Spe
|
||||
|
||||
Each nation has the following structure:
|
||||
|
||||
| Attribute | Type | Default | Notes |
|
||||
| --------- | ---- | ------- |-------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| name | String | Required | |
|
||||
| leaderName | String | none | Omit only for city states! If you want LeaderPortraits, the image file names must match exactly, including case |
|
||||
| style | String | none | Modifier appended to pixel unit image names |
|
||||
| cityStateType | String | none | Distinguishes major civilizations from city states (must be in [CityStateTypes.json](#citystatetypesjson)) |
|
||||
| startBias | List of strings | empty | Zero or more of: [terrainFilter](../../Unique-parameters.md/#terrainfilter) or "Avoid [terrainFilter]". [^S] |
|
||||
| preferredVictoryType | String | Neutral | The victory type major civilizations will pursue (need not be specified in [VictoryTypes.json](5-Miscellaneous-JSON-files.md#victorytypesjson)) |
|
||||
| personality | String | none | The name of the personality specified in [Personalities.json](#personalitiesjson)
|
||||
| favoredReligion | String | none | The religion major civilization will choose if available when founding a religion. Must be in [Religions.json](#religionsjson) |
|
||||
| startIntroPart1 | String | none | Introductory blurb shown to Player on game start... |
|
||||
| startIntroPart2 | String | none | ... second paragraph. ___NO___ "TBD"!!! Leave empty to skip that alert. |
|
||||
| declaringWar | String | none | Another greeting, voice hook supported [^V] |
|
||||
| attacked | String | none | Another greeting, voice hook supported [^V] |
|
||||
| defeated | String | none | Another greeting, voice hook supported [^V] |
|
||||
| introduction | String | none | Another greeting, voice hook supported [^V] |
|
||||
| neutralHello | String | none | Another greeting, voice hook supported [^V] |
|
||||
| hateHello | String | none | Another greeting, voice hook supported [^V] |
|
||||
| tradeRequest | String | none | Another greeting, voice hook supported [^V] |
|
||||
| innerColor | [List of 3× Integer](5-Miscellaneous-JSON-files.md#rgb-colors-list) | black | RGB color for outer ring of nation icon |
|
||||
| outerColor | [List of 3× Integer](5-Miscellaneous-JSON-files.md#rgb-colors-list) | Required | RGB color for inner circle of nation icon |
|
||||
| uniqueName | String | none | Decorative name for the special characteristic of this nation |
|
||||
| uniqueText | String | none | Replacement text for "uniques". If empty, uniques are listed individually |
|
||||
| uniques | List | empty | List of [unique abilities](../../uniques) this civilisation has |
|
||||
| cities | List | empty | City names used sequentially for newly founded cities. Required for major civilizations and city states |
|
||||
| civilopediaText | List | empty | See [civilopediaText chapter](5-Miscellaneous-JSON-files.md#civilopedia-text) |
|
||||
<!-- | adjective | String | none | Currently unused | -->
|
||||
| Attribute | Type | Default | Notes |
|
||||
|----------------------|---------------------------------------------------------------------|----------|-------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| name | String | Required | |
|
||||
| leaderName | String | none | Omit only for city states! If you want LeaderPortraits, the image file names must match exactly, including case |
|
||||
| style | String | none | Modifier appended to pixel unit image names |
|
||||
| cityStateType | String | none | Distinguishes major civilizations from city states (must be in [CityStateTypes.json](#citystatetypesjson)) |
|
||||
| startBias | List of strings | empty | Zero or more of: [terrainFilter](../../Unique-parameters.md/#terrainfilter) or "Avoid [terrainFilter]". [^S] |
|
||||
| preferredVictoryType | String | Neutral | The victory type major civilizations will pursue (need not be specified in [VictoryTypes.json](5-Miscellaneous-JSON-files.md#victorytypesjson)) |
|
||||
| personality | String | none | The name of the personality specified in [Personalities.json](#personalitiesjson) |
|
||||
| favoredReligion | String | none | The religion major civilization will choose if available when founding a religion. Must be in [Religions.json](#religionsjson) |
|
||||
| startIntroPart1 | String | none | Introductory blurb shown to Player on game start... |
|
||||
| startIntroPart2 | String | none | ... second paragraph. ___NO___ "TBD"!!! Leave empty to skip that alert. |
|
||||
| declaringWar | String | none | Another greeting, voice hook supported [^V] |
|
||||
| attacked | String | none | Another greeting, voice hook supported [^V] |
|
||||
| defeated | String | none | Another greeting, voice hook supported [^V] |
|
||||
| introduction | String | none | Another greeting, voice hook supported [^V] |
|
||||
| neutralHello | String | none | Another greeting, voice hook supported [^V] |
|
||||
| hateHello | String | none | Another greeting, voice hook supported [^V] |
|
||||
| tradeRequest | String | none | Another greeting, voice hook supported [^V] |
|
||||
| innerColor | [List of 3× Integer](5-Miscellaneous-JSON-files.md#rgb-colors-list) | black | RGB color for outer ring of nation icon |
|
||||
| outerColor | [List of 3× Integer](5-Miscellaneous-JSON-files.md#rgb-colors-list) | Required | RGB color for inner circle of nation icon |
|
||||
| uniqueName | String | none | Decorative name for the special characteristic of this nation |
|
||||
| uniqueText | String | none | Replacement text for "uniques". If empty, uniques are listed individually |
|
||||
| uniques | List | empty | List of [unique abilities](../../uniques) this civilisation has |
|
||||
| cities | List | empty | City names used sequentially for newly founded cities. Required for major civilizations and city states |
|
||||
| civilopediaText | List | empty | See [civilopediaText chapter](5-Miscellaneous-JSON-files.md#civilopedia-text) |
|
||||
|
||||
[^S]: A "Coast" preference (_unless_ combined with "Avoid") is translated to a complex test for coastal land tiles, tiles next to Lakes, river tiles or near-river tiles, and such civs are processed first. Other startBias entries are ignored in that case.
|
||||
Other positive (no "Avoid") startBias are processed next. Multiple positive preferences are treated equally, but get no "fallback".
|
||||
@ -98,16 +97,16 @@ This file contains all Personalities for computer players.
|
||||
|
||||
Each personality has the following structure:
|
||||
|
||||
| Attribute | Type | Default | Notes |
|
||||
| --------- | ---- | ------- | ----- |
|
||||
| name | String | Required | |
|
||||
| preferredVictoryType | String | Neutral | The victory type major civilizations will pursue (need not be specified in [VictoryTypes.json](5-Miscellaneous-JSON-files.md#victorytypesjson)) |
|
||||
| [`<stats>`](3-Map-related-JSON-files.md#general-stat) | Float | 5 | Amount of focus on the stat the computer player will have. Typically ranges from 0 (no focus) to 10 (double focus) |
|
||||
| military | Float | 5 | Amount of focus on the military growth the computer player will have. Typically ranges from 0 (no focus) to 10 (double focus) |
|
||||
| priorities | Object | none | Priorities for each policy branch [^B] |
|
||||
| uniques | List | empty | List of [unique abilities](../../uniques) this personality has |
|
||||
| civilopediaText | List | empty | See [civilopediaText chapter](5-Miscellaneous-JSON-files.md#civilopedia-text) |
|
||||
<!-- | warMongering | Float | 5 | Amount of focus on declaring war the computer player will have. Typically ranges from 0 (no focus) to 10 (double focus) |-->
|
||||
| Attribute | Type | Default | Notes |
|
||||
|-------------------------------------------------------|--------|----------|-------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| name | String | Required | |
|
||||
| preferredVictoryType | String | Neutral | The victory type major civilizations will pursue (need not be specified in [VictoryTypes.json](5-Miscellaneous-JSON-files.md#victorytypesjson)) |
|
||||
| [`<stats>`](3-Map-related-JSON-files.md#general-stat) | Float | 5 | Amount of focus on the stat the computer player will have. Typically ranges from 0 (no focus) to 10 (double focus) |
|
||||
| military | Float | 5 | Amount of focus on the military growth the computer player will have. Typically ranges from 0 (no focus) to 10 (double focus) |
|
||||
| priorities | Object | none | Priorities for each policy branch [^B] |
|
||||
| uniques | List | empty | List of [unique abilities](../../uniques) this personality has |
|
||||
| civilopediaText | List | empty | See [civilopediaText chapter](5-Miscellaneous-JSON-files.md#civilopedia-text) |
|
||||
| warMongering | Float | 5 | Amount of focus on declaring war the computer player will have. Typically ranges from 0 (no focus) to 10 (double focus) |
|
||||
|
||||
[^B]: Similar to [policy priorites](#branch-priorities) The "priorities" object defines the priority major civilizations' AI give to a policy branch. The AI chooses the policy branch with the highest number for their preferred victory type. If two or more candidate branches have the same priority, the AI chooses a random branch among the candidates.
|
||||
|
||||
@ -132,12 +131,12 @@ Cultured, Maritime, Mercantile, Militaristic, Religious.
|
||||
|
||||
Each city state type has the following structure:
|
||||
|
||||
| Attribute | Type | Default | Notes |
|
||||
| --------- | ---- | ------- | ----- |
|
||||
| name | String | Required | |
|
||||
| friendBonusUniques | List of Strings | empty | List of [unique abilities](../../uniques) granted to major civilizations when friends with this city state |
|
||||
| allyBonusUniques | List of Strings | empty | List of [unique abilities](../../uniques) granted to major civilizations when allied to city state |
|
||||
| color | [List of 3× Integer](5-Miscellaneous-JSON-files.md#rgb-colors-list) | [255, 255, 255] | RGB color of text in civilopedia |
|
||||
| Attribute | Type | Default | Notes |
|
||||
|--------------------|---------------------------------------------------------------------|-----------------|------------------------------------------------------------------------------------------------------------|
|
||||
| name | String | Required | |
|
||||
| friendBonusUniques | List of Strings | empty | List of [unique abilities](../../uniques) granted to major civilizations when friends with this city state |
|
||||
| allyBonusUniques | List of Strings | empty | List of [unique abilities](../../uniques) granted to major civilizations when allied to city state |
|
||||
| color | [List of 3× Integer](5-Miscellaneous-JSON-files.md#rgb-colors-list) | [255, 255, 255] | RGB color of text in civilopedia |
|
||||
|
||||
## Policies.json
|
||||
|
||||
@ -153,30 +152,30 @@ The properties of the 'opener' are defined with the branch level, while the 'fin
|
||||
|
||||
Each policy branch has the following structure:
|
||||
|
||||
| Attribute | Type | Default | Notes |
|
||||
| --------- | ---- | ------- | ----- |
|
||||
| name | String | Required | |
|
||||
| era | String | Required | Unlocking era as defined in [Eras.json](5-Miscellaneous-JSON-files.md#Eras.json) |
|
||||
| priorities | Object | none | Priorities for each victory type, [see here](#branch-priorities)
|
||||
| uniques | List | empty | List of [unique abilities](../../uniques) this policy branch grants upon adopting it |
|
||||
| policies | List | empty | List of [member policies](#member-policy-structure) and [branch 'finisher'](#branch-finisher-structure) - pay attention to the nesting of {} and [] |
|
||||
| Attribute | Type | Default | Notes |
|
||||
|------------|--------|----------|-----------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| name | String | Required | |
|
||||
| era | String | Required | Unlocking era as defined in [Eras.json](5-Miscellaneous-JSON-files.md#Eras.json) |
|
||||
| priorities | Object | none | Priorities for each victory type, [see here](#branch-priorities) |
|
||||
| uniques | List | empty | List of [unique abilities](../../uniques) this policy branch grants upon adopting it |
|
||||
| policies | List | empty | List of [member policies](#member-policy-structure) and [branch 'finisher'](#branch-finisher-structure) - pay attention to the nesting of {} and [] |
|
||||
|
||||
#### Member policy structure
|
||||
|
||||
| Attribute | Type | Default | Notes |
|
||||
| --------- | ---- | ------- | ----- |
|
||||
| name | String | Required | |
|
||||
| row | Integer | Required | Placement in UI, each unit approximately half the icon size |
|
||||
| column | Integer | Required | Placement in UI, each unit approximately half the icon size |
|
||||
| requires | List | empty | List of prerequisite policy names |
|
||||
| uniques | List | empty | List of [unique abilities](../../uniques) this policy member grants upon adopting it |
|
||||
| Attribute | Type | Default | Notes |
|
||||
|-----------|---------|----------|--------------------------------------------------------------------------------------|
|
||||
| name | String | Required | |
|
||||
| row | Integer | Required | Placement in UI, each unit approximately half the icon size |
|
||||
| column | Integer | Required | Placement in UI, each unit approximately half the icon size |
|
||||
| requires | List | empty | List of prerequisite policy names |
|
||||
| uniques | List | empty | List of [unique abilities](../../uniques) this policy member grants upon adopting it |
|
||||
|
||||
#### Branch finisher structure
|
||||
|
||||
| Attribute | Type | Default | Notes |
|
||||
| --------- | ---- | ------- | ----- |
|
||||
| name | String | Required | |
|
||||
| uniques | List | empty | List of [unique abilities](../../uniques) this finisher grants upon adopting all the policy members in the branch |
|
||||
| Attribute | Type | Default | Notes |
|
||||
|-----------|--------|----------|-------------------------------------------------------------------------------------------------------------------|
|
||||
| name | String | Required | |
|
||||
| uniques | List | empty | List of [unique abilities](../../uniques) this finisher grants upon adopting all the policy members in the branch |
|
||||
|
||||
### Branch priorities
|
||||
|
||||
@ -204,39 +203,39 @@ This file contains the quests that may be given to major civilizations by city s
|
||||
|
||||
Each quest has the following structure:
|
||||
|
||||
| Attribute | Type | Default | Notes |
|
||||
| --------- | ---- | ------- | ----- |
|
||||
| name | String | Required | Defines criteria of quest, [see below](#quest-name) |
|
||||
| description | String | Required | Description of the quest shown to players. Can add extra information based on `name`, [see below](#quest-name) |
|
||||
| type | Enum | Individual | Individual or Global |
|
||||
| influence | Float | 40 | Influence reward gained on quest completion |
|
||||
| duration | Integer | 0 | Maximum number of turns to complete the quest. If 0, there is no turn limit |
|
||||
| minimumCivs | Integer | 1 | Minimum number of Civs needed to start the quest. It is meaningful only for type = Global |
|
||||
| weightForCityStateType | Object | none | Relative weight multiplier to this quest for each [city state type](#citystatetypesjson) or city state personality (Friendly, Neutral, Hostile, Irrational), [see below](#quest-weight) |
|
||||
| Attribute | Type | Default | Notes |
|
||||
|------------------------|---------|------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| name | String | Required | Defines criteria of quest, [see below](#quest-name) |
|
||||
| description | String | Required | Description of the quest shown to players. Can add extra information based on `name`, [see below](#quest-name) |
|
||||
| type | Enum | Individual | Individual or Global |
|
||||
| influence | Float | 40 | Influence reward gained on quest completion |
|
||||
| duration | Integer | 0 | Maximum number of turns to complete the quest. If 0, there is no turn limit |
|
||||
| minimumCivs | Integer | 1 | Minimum number of Civs needed to start the quest. It is meaningful only for type = Global |
|
||||
| weightForCityStateType | Object | none | Relative weight multiplier to this quest for each [city state type](#citystatetypesjson) or city state personality (Friendly, Neutral, Hostile, Irrational), [see below](#quest-weight) |
|
||||
|
||||
### Quest name
|
||||
|
||||
The name of the quest defines the criteria for the quest. If they are not defined in the predefined enum, they will have no behavior. In the description, square brackets `[]` in the description of the quest is replaced with extra information (except for `Invest`). The list of predefined quest names are as follows:
|
||||
|
||||
| Name | Criteria | Additional info |
|
||||
| ---- | -------- | --------------- |
|
||||
| Route | Connect the city state to the major civilization's capital using roads or railways | |
|
||||
| Clear Barbarian Camp | Destroy the target barbarian camp | |
|
||||
| Construct Wonder | Construct the target wonder | target `wonder` |
|
||||
| Connect Resource | Connect the target resource to the major civilization's trade network | target `tileResource` |
|
||||
| Acquire Great Person | Acquire the target great person | target `greatPerson` |
|
||||
| Conquer City State | Defeat the target city state | target `cityState` |
|
||||
| Find Player | Meet the target major civilization | target `civName` |
|
||||
| Find Natural Wonder | Find the target natural wonder | target `naturalWonder` |
|
||||
| Give Gold | Donate gold to the city state (amount does not matter) | `civName` "bully" for city state |
|
||||
| Pledge to Protect | Pledge to protect city state | `civName` "bully" for city state |
|
||||
| Contest Culture | Be the major civilization with the highest increase to culture during the duration | major civilization's `cultureGrowth` |
|
||||
| Contest Faith | Be the major civilization with the highest increase to faith during the duration | major civilization's `faithGrowth` |
|
||||
| Contest Technology | Be the major civilization with the most technologies researched during the duration | major civilization's `techsResearched` |
|
||||
| Invest | Donating gold yield extra Influence based on value provided | __IMPORTANT__: value in square brackets is the extra influence in percent. i.e. \[50\] means 50% |
|
||||
| Bully City State | Demand tribute from the target city state | target `city state` |
|
||||
| Denounce Civilization | Denounce the major civilization which "bullied" the city state | `civName` "bully" for city state |
|
||||
| Spread Religion | Spread major civilization's religion to the city state | major civilization's `religionName` |
|
||||
| Name | Criteria | Additional info |
|
||||
|-----------------------|-------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------|
|
||||
| Route | Connect the city state to the major civilization's capital using roads or railways | |
|
||||
| Clear Barbarian Camp | Destroy the target barbarian camp | |
|
||||
| Construct Wonder | Construct the target wonder | target `wonder` |
|
||||
| Connect Resource | Connect the target resource to the major civilization's trade network | target `tileResource` |
|
||||
| Acquire Great Person | Acquire the target great person | target `greatPerson` |
|
||||
| Conquer City State | Defeat the target city state | target `cityState` |
|
||||
| Find Player | Meet the target major civilization | target `civName` |
|
||||
| Find Natural Wonder | Find the target natural wonder | target `naturalWonder` |
|
||||
| Give Gold | Donate gold to the city state (amount does not matter) | `civName` "bully" for city state |
|
||||
| Pledge to Protect | Pledge to protect city state | `civName` "bully" for city state |
|
||||
| Contest Culture | Be the major civilization with the highest increase to culture during the duration | major civilization's `cultureGrowth` |
|
||||
| Contest Faith | Be the major civilization with the highest increase to faith during the duration | major civilization's `faithGrowth` |
|
||||
| Contest Technology | Be the major civilization with the most technologies researched during the duration | major civilization's `techsResearched` |
|
||||
| Invest | Donating gold yield extra Influence based on value provided | __IMPORTANT__: value in square brackets is the extra influence in percent. i.e. \[50\] means 50% |
|
||||
| Bully City State | Demand tribute from the target city state | target `city state` |
|
||||
| Denounce Civilization | Denounce the major civilization which "bullied" the city state | `civName` "bully" for city state |
|
||||
| Spread Religion | Spread major civilization's religion to the city state | major civilization's `religionName` |
|
||||
|
||||
### Quest weight
|
||||
|
||||
@ -268,12 +267,12 @@ This file should contain a list of all possible specialists that citizens can be
|
||||
|
||||
Each specialist has the following structure:
|
||||
|
||||
| Attribute | Type | Default | Notes |
|
||||
| --------- | ---- | ------- | ----- |
|
||||
| name | String | Required | |
|
||||
| [`<stats>`](3-Map-related-JSON-files.md#general-stat) | Float | 0 | Per-turn yield produced by the specialist |
|
||||
| color | [List of 3× Integer](5-Miscellaneous-JSON-files.md#rgb-colors-list) | Required | Color of the image for this specialist |
|
||||
| greatPersonPoints | Object | none | Great person points generated by this specialist per turn. Valid keys are the names of units (Great Scientist, Warrior, etc.), valid values are Integers |
|
||||
| Attribute | Type | Default | Notes |
|
||||
|-------------------------------------------------------|---------------------------------------------------------------------|----------|----------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| name | String | Required | |
|
||||
| [`<stats>`](3-Map-related-JSON-files.md#general-stat) | Float | 0 | Per-turn yield produced by the specialist |
|
||||
| color | [List of 3× Integer](5-Miscellaneous-JSON-files.md#rgb-colors-list) | Required | Color of the image for this specialist |
|
||||
| greatPersonPoints | Object | none | Great person points generated by this specialist per turn. Valid keys are the names of units (Great Scientist, Warrior, etc.), valid values are Integers |
|
||||
|
||||
## Techs.json
|
||||
|
||||
@ -285,23 +284,23 @@ This file contains all the technologies that can be researched with science. It
|
||||
|
||||
Each tech column has the following structure:
|
||||
|
||||
| Attribute | Type | Default | Notes |
|
||||
| --------- | ---- | ------- | ----- |
|
||||
| columnNumber | Integer | Required | Horizontal placement in the Tech Tree |
|
||||
| era | String | Required | Determines era reached after researching any technologies in this column. Must be in [Eras.json](5-Miscellaneous-JSON-files.md#Eras.json) |
|
||||
| techCost | Integer | 0 | Default cost of the techs in this column |
|
||||
| buildingCost | Integer | Required | Default cost of buildings requiring this tech |
|
||||
| wonderCost | Integer | Required | Default cost of wonders requiring this tech |
|
||||
| techs | List | Required | List of [techs](#tech-structure) - pay attention to the nesting of {} and [] |
|
||||
| Attribute | Type | Default | Notes |
|
||||
|--------------|---------|----------|-------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| columnNumber | Integer | Required | Horizontal placement in the Tech Tree |
|
||||
| era | String | Required | Determines era reached after researching any technologies in this column. Must be in [Eras.json](5-Miscellaneous-JSON-files.md#Eras.json) |
|
||||
| techCost | Integer | 0 | Default cost of the techs in this column |
|
||||
| buildingCost | Integer | Required | Default cost of buildings requiring this tech |
|
||||
| wonderCost | Integer | Required | Default cost of wonders requiring this tech |
|
||||
| techs | List | Required | List of [techs](#tech-structure) - pay attention to the nesting of {} and [] |
|
||||
|
||||
#### Tech structure
|
||||
|
||||
| Attribute | Type | Default | Notes |
|
||||
| --------- | ---- | ------- | ----- |
|
||||
| name | String | Required | |
|
||||
| row | Integer | 0 | Vertical placement in the Tech Tree, must be unique per column |
|
||||
| cost | Integer | [Column techCost](#column-structure) | The amount of science required to research this tech |
|
||||
| prerequisites | List of Strings | empty | A list of the names of techs that are prerequisites of this tech. Only direct prerequisites are necessary |
|
||||
| quote | String | none | A nice story presented to the player when they research this tech |
|
||||
| uniques | List of Strings | empty | List of [unique abilities](../../uniques) this technology grants |
|
||||
| civilopediaText | List | empty | See [civilopediaText chapter](5-Miscellaneous-JSON-files.md#Civilopedia-text) |
|
||||
| Attribute | Type | Default | Notes |
|
||||
|-----------------|-----------------|--------------------------------------|-----------------------------------------------------------------------------------------------------------|
|
||||
| name | String | Required | |
|
||||
| row | Integer | 0 | Vertical placement in the Tech Tree, must be unique per column |
|
||||
| cost | Integer | [Column techCost](#column-structure) | The amount of science required to research this tech |
|
||||
| prerequisites | List of Strings | empty | A list of the names of techs that are prerequisites of this tech. Only direct prerequisites are necessary |
|
||||
| quote | String | none | A nice story presented to the player when they research this tech |
|
||||
| uniques | List of Strings | empty | List of [unique abilities](../../uniques) this technology grants |
|
||||
| civilopediaText | List | empty | See [civilopediaText chapter](5-Miscellaneous-JSON-files.md#Civilopedia-text) |
|
||||
|
@ -8,22 +8,22 @@ This file contains the base terrains, terrain features and natural wonders that
|
||||
|
||||
Each terrain entry has the following structure:
|
||||
|
||||
| Attribute | Type | Default | Notes |
|
||||
| --------- | ---- | ------- | ----- |
|
||||
| name | String | Required | [^A] |
|
||||
| type | Enum | Required | Land, Water, TerrainFeature, NaturalWonder [^B] |
|
||||
| occursOn | List of Strings | none | Only for terrain features and Natural Wonders: The baseTerrain it can be placed on |
|
||||
| turnsInto | String | none | Only for NaturalWonder: the base terrain is changed to this after placing the Natural Wonder |
|
||||
| weight | Integer | 10 | Only for NaturalWonder: _relative_ weight of being picked by the map generator |
|
||||
| [`<stats>`](#general-stat) | Float | 0 | Per-turn yield or bonus yield for the tile |
|
||||
| overrideStats | Boolean | false | If true, a feature's yields replace any yield from underlying terrain instead of adding to it |
|
||||
| unbuildable | Boolean | false | If true, nothing can be built here - not even resource improvements |
|
||||
| impassable | Boolean | false | No unit can enter unless it has a special unique |
|
||||
| movementCost | Integer | 1 | Base movement cost |
|
||||
| defenceBonus | Float | 0 | Combat bonus for units being attacked here |
|
||||
| RGB | [List of 3× Integer](5-Miscellaneous-JSON-files.md#rgb-colors-list) | Gold | RGB color for 'Default' tileset display |
|
||||
| uniques | List of Strings | empty | List of [unique abilities](../../uniques) this terrain has |
|
||||
| civilopediaText | List | empty | See [civilopediaText chapter](5-Miscellaneous-JSON-files.md#civilopedia-text) |
|
||||
| Attribute | Type | Default | Notes |
|
||||
|----------------------------|---------------------------------------------------------------------|----------|-----------------------------------------------------------------------------------------------|
|
||||
| name | String | Required | [^A] |
|
||||
| type | Enum | Required | Land, Water, TerrainFeature, NaturalWonder [^B] |
|
||||
| occursOn | List of Strings | none | Only for terrain features and Natural Wonders: The baseTerrain it can be placed on |
|
||||
| turnsInto | String | none | Only for NaturalWonder: the base terrain is changed to this after placing the Natural Wonder |
|
||||
| weight | Integer | 10 | Only for NaturalWonder: _relative_ weight of being picked by the map generator |
|
||||
| [`<stats>`](#general-stat) | Float | 0 | Per-turn yield or bonus yield for the tile |
|
||||
| overrideStats | Boolean | false | If true, a feature's yields replace any yield from underlying terrain instead of adding to it |
|
||||
| unbuildable | Boolean | false | If true, nothing can be built here - not even resource improvements |
|
||||
| impassable | Boolean | false | No unit can enter unless it has a special unique |
|
||||
| movementCost | Integer | 1 | Base movement cost |
|
||||
| defenceBonus | Float | 0 | Combat bonus for units being attacked here |
|
||||
| RGB | [List of 3× Integer](5-Miscellaneous-JSON-files.md#rgb-colors-list) | Gold | RGB color for 'Default' tileset display |
|
||||
| uniques | List of Strings | empty | List of [unique abilities](../../uniques) this terrain has |
|
||||
| civilopediaText | List | empty | See [civilopediaText chapter](5-Miscellaneous-JSON-files.md#civilopedia-text) |
|
||||
|
||||
[^A]: Some names have special meanings. `Grassland` is used as fallback in some cases - e.g. Civilopedia prefers to displays a TerrainFeature on top of it, unless `occursOn` is not empty and does not contain it.
|
||||
`River` is hardcoded to be used to look up a [Stats](../../uniques.md#global-uniques) unique to determine the bonuses an actual River provides (remember, rivers live on the edges not as terrain).
|
||||
@ -40,17 +40,17 @@ Note that improvements have two visual representations - icon and pixel graphic
|
||||
|
||||
Each improvement has the following structure:
|
||||
|
||||
| Attribute | Type | Default | Notes |
|
||||
| --------- | ---- | ------- | ----- |
|
||||
| name | String | Required | [^A] |
|
||||
| terrainsCanBeBuiltOn | List of Strings | empty | Terrains that this improvement can be built on [^B]. Removable terrain features will need to be removed before building an improvement [^C]. Must be in [Terrains.json](#terrainsjson) |
|
||||
| techRequired | String | none | The name of the technology required to build this improvement |
|
||||
| uniqueTo | String | none | The name of the nation this improvement is unique for |
|
||||
| [`<stats>`](#stats) | Integer | 0 | Per-turn bonus yield for the tile |
|
||||
| turnsToBuild | Integer | -1 | Number of turns a worker spends building this. If -1, the improvement is unbuildable [^D]. If 0, the improvement is always built in one turn |
|
||||
| uniques | List of Strings | empty | List of [unique abilities](../../uniques) this improvement has |
|
||||
| shortcutKey | String | none | Keyboard binding. Currently, only a single character is allowed (no function keys or Ctrl combinations) |
|
||||
| civilopediaText | List | empty | See [civilopediaText chapter](5-Miscellaneous-JSON-files.md#civilopedia-text) |
|
||||
| Attribute | Type | Default | Notes |
|
||||
|----------------------|-----------------|----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| name | String | Required | [^A] |
|
||||
| terrainsCanBeBuiltOn | List of Strings | empty | Terrains that this improvement can be built on [^B]. Removable terrain features will need to be removed before building an improvement [^C]. Must be in [Terrains.json](#terrainsjson) |
|
||||
| techRequired | String | none | The name of the technology required to build this improvement |
|
||||
| uniqueTo | String | none | The name of the nation this improvement is unique for |
|
||||
| [`<stats>`](#stats) | Integer | 0 | Per-turn bonus yield for the tile |
|
||||
| turnsToBuild | Integer | -1 | Number of turns a worker spends building this. If -1, the improvement is unbuildable [^D]. If 0, the improvement is always built in one turn |
|
||||
| uniques | List of Strings | empty | List of [unique abilities](../../uniques) this improvement has |
|
||||
| shortcutKey | String | none | Keyboard binding. Currently, only a single character is allowed (no function keys or Ctrl combinations) |
|
||||
| civilopediaText | List | empty | See [civilopediaText chapter](5-Miscellaneous-JSON-files.md#civilopedia-text) |
|
||||
|
||||
[^A]: Special improvements: Road, Railroad, Remove \*, Cancel improvement order, City ruins, City center, Barbarian encampment - these have special meanings hardcoded to their names.
|
||||
[^B]: Improvements with an empty `terrainsCanBeBuiltOn` list and positive `turnsToBuild` value can only be built on [resources](#tileresourcesjson) with `improvedBy` or `improvement` that contains the corresponding improvement.
|
||||
@ -69,18 +69,18 @@ Note also that resources have two visual representations - icon and pixel graphi
|
||||
|
||||
Each resource has the following structure:
|
||||
|
||||
| Attribute | Type | Default | Notes |
|
||||
| --------- | ---- | ------- | ----- |
|
||||
| name | String | Required | |
|
||||
| resourceType | Enum | Bonus | Bonus, Luxury or Strategic |
|
||||
| terrainsCanBeFoundOn | List of Strings | empty | Terrains that this resource can be found on. Must be in [Terrains.json](#terrainsjson) |
|
||||
| [`<stats>`](#stats) | Integer | 0 | Per-turn bonus yield for the tile |
|
||||
| improvementStats | Object | none | The additional yield when improved, see [specialized stats](3-Map-related-JSON-files.md#specialized-stats)|
|
||||
| revealedBy | String | none | The technology name required to see, work and improve this resource |
|
||||
| improvedBy | List of strings | empty | The improvements required for obtaining this resource. Must be in [TileImprovements.json](#tileimprovementsjson) |
|
||||
| improvement | String | none | The improvement required to obtain this resource. Must be in [TileImprovements.json](#tileimprovementsjson) (redundant due to `improvedBy`) |
|
||||
| unique | List of Strings | empty | List of [unique abilities](../../uniques) this resource has |
|
||||
| civilopediaText | List | empty | See [civilopediaText chapter](5-Miscellaneous-JSON-files.md#civilopedia-text) |
|
||||
| Attribute | Type | Default | Notes |
|
||||
|----------------------|-----------------|----------|---------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| name | String | Required | |
|
||||
| resourceType | Enum | Bonus | Bonus, Luxury or Strategic |
|
||||
| terrainsCanBeFoundOn | List of Strings | empty | Terrains that this resource can be found on. Must be in [Terrains.json](#terrainsjson) |
|
||||
| [`<stats>`](#stats) | Integer | 0 | Per-turn bonus yield for the tile |
|
||||
| improvementStats | Object | none | The additional yield when improved, see [specialized stats](3-Map-related-JSON-files.md#specialized-stats) |
|
||||
| revealedBy | String | none | The technology name required to see, work and improve this resource |
|
||||
| improvedBy | List of strings | empty | The improvements required for obtaining this resource. Must be in [TileImprovements.json](#tileimprovementsjson) |
|
||||
| improvement | String | none | The improvement required to obtain this resource. Must be in [TileImprovements.json](#tileimprovementsjson) (redundant due to `improvedBy`) |
|
||||
| unique | List of Strings | empty | List of [unique abilities](../../uniques) this resource has |
|
||||
| civilopediaText | List | empty | See [civilopediaText chapter](5-Miscellaneous-JSON-files.md#civilopedia-text) |
|
||||
|
||||
## Ruins.json
|
||||
|
||||
@ -90,13 +90,13 @@ This optional file contains the possible rewards ancient ruins give. If omitted,
|
||||
|
||||
Each of the objects in the file represents a single reward you can get from ruins. It has the following structure:
|
||||
|
||||
| Attribute | Type | Default | Notes |
|
||||
| --------- | ---- | ------- | ----- |
|
||||
| name | String | Required | Name of the ruins. Never shown to the user, but they have to be distinct |
|
||||
| notification | String | Required | Notification added to the user when this reward is chosen. If omitted, an empty notification is shown. Some notifications may have parameters, refer to the table below. |
|
||||
| weight | Integer (≥0) | 1 | _Relative_ weight this reward is chosen next [^E] |
|
||||
| uniques | List of Strings | empty | List of [unique abilities](../../uniques) that will trigger when entering the ruins. If more than 1 unique is added, the notification will be shown multiple times due to a bug (may be outdated) |
|
||||
| excludedDifficulties | List of Strings | empty | A list of all difficulties on which this reward may _not_ be awarded |
|
||||
| Attribute | Type | Default | Notes |
|
||||
|----------------------|-----------------|----------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| name | String | Required | Name of the ruins. Never shown to the user, but they have to be distinct |
|
||||
| notification | String | Required | Notification added to the user when this reward is chosen. If omitted, an empty notification is shown. Some notifications may have parameters, refer to the table below. |
|
||||
| weight | Integer (≥0) | 1 | _Relative_ weight this reward is chosen next [^E] |
|
||||
| uniques | List of Strings | empty | List of [unique abilities](../../uniques) that will trigger when entering the ruins. If more than 1 unique is added, the notification will be shown multiple times due to a bug (may be outdated) |
|
||||
| excludedDifficulties | List of Strings | empty | A list of all difficulties on which this reward may _not_ be awarded |
|
||||
|
||||
[^E]: The exact algorithm for choosing a reward is the following:
|
||||
|
||||
@ -109,14 +109,14 @@ Each of the objects in the file represents a single reward you can get from ruin
|
||||
Some of the rewards ruins can give will have results that are not deterministic when writing it in the JSON, so creating a good notification for it would be impossible. An example for this would be the "Gain [50]-[100] [Gold]" unique, which will give a random amount of gold. For this reason, we allow some notifications to have parameters, in which values will be filled, such as "You found [goldAmount] gold in the ruins!". All the uniques which have this property can be found below.
|
||||
<!-- (need to update) -->
|
||||
|
||||
| Unique | Parameters |
|
||||
| ------ | ---------- |
|
||||
| Free [] found in the ruins | The name of the unit will be filled in the notification, including unique units of the nation |
|
||||
| [] population in a random city | The name of the city to which the population is added will be filled in the notification |
|
||||
| Gain []-[] [] | The exact amount of the stat gained will be filled in the notification |
|
||||
| Unique | Parameters |
|
||||
|--------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| Free [] found in the ruins | The name of the unit will be filled in the notification, including unique units of the nation |
|
||||
| [] population in a random city | The name of the city to which the population is added will be filled in the notification |
|
||||
| Gain []-[] [] | The exact amount of the stat gained will be filled in the notification |
|
||||
| [] free random reasearchable Tech(s) from the [] | The notification must have placeholders equal to the number of techs granted this way. Each of the names of these free techs will be filled in the notification |
|
||||
| Gain enough Faith for a Pantheon | The amount of faith gained is filled in the notification |
|
||||
| Gain enough Faith for []% of a Great Prophet | The amount of faith gained is filled in the notification |
|
||||
| Gain enough Faith for a Pantheon | The amount of faith gained is filled in the notification |
|
||||
| Gain enough Faith for []% of a Great Prophet | The amount of faith gained is filled in the notification |
|
||||
|
||||
### Specific uniques
|
||||
|
||||
@ -132,16 +132,16 @@ A few uniques can be added to ancient ruin effects to modify when they can be ea
|
||||
|
||||
A mod can define new Tilesets or add to existing ones, namely FantasyHex. There is one json file per Tileset, named same as the Tileset, and placed in a subfolder named "TileSets" relative to the other json files. This is called TileSetConfig and has the following structure:
|
||||
|
||||
| Attribute | Type | Default | Notes |
|
||||
| --------- | ---- | ------- | ----- |
|
||||
| [useColorAsBaseTerrain](../../Creating-a-custom-tileset.md#useColorAsBaseTerrain) | Boolean | false | |
|
||||
| [useSummaryImages](../../Creating-a-custom-tileset.md#useSummaryImages) | Boolean | false | |
|
||||
| [unexploredTileColor](../../Creating-a-custom-tileset.md#unexploredTileColor) | Color | Dark Gray | `{"r":0.25,"g":0.25,"b":0.25,"a":1}` |
|
||||
| [fogOfWarColor](../../Creating-a-custom-tileset.md#fogOfWarColor) | Color | Black | `{"r":0,"g":0,"b":0,"a":1}` |
|
||||
| [fallbackTileSet](../../Creating-a-custom-tileset.md#fallbackTileSet) | String | "FantasyHex" | null to disable |
|
||||
| [tileScale](../../Creating-a-custom-tileset.md#tileScale) | Float | 1.0 | The scale of all tiles. Can be used to increase or decrease the size of every tile |
|
||||
| [tileScales](../../Creating-a-custom-tileset.md#tileScales) | Object | empty | Used by the "Minimal" tileset to scale all its tiles except the base terrain down. Overrides `tileScale` value for specified terrain |
|
||||
| [ruleVariants](../../Creating-a-custom-tileset.md#ruleVariants) | Object | empty | [See here](#layering-images) |
|
||||
| Attribute | Type | Default | Notes |
|
||||
|-----------------------------------------------------------------------------------|---------|--------------|--------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| [useColorAsBaseTerrain](../../Creating-a-custom-tileset.md#useColorAsBaseTerrain) | Boolean | false | |
|
||||
| [useSummaryImages](../../Creating-a-custom-tileset.md#useSummaryImages) | Boolean | false | |
|
||||
| [unexploredTileColor](../../Creating-a-custom-tileset.md#unexploredTileColor) | Color | Dark Gray | `{"r":0.25,"g":0.25,"b":0.25,"a":1}` |
|
||||
| [fogOfWarColor](../../Creating-a-custom-tileset.md#fogOfWarColor) | Color | Black | `{"r":0,"g":0,"b":0,"a":1}` |
|
||||
| [fallbackTileSet](../../Creating-a-custom-tileset.md#fallbackTileSet) | String | "FantasyHex" | null to disable |
|
||||
| [tileScale](../../Creating-a-custom-tileset.md#tileScale) | Float | 1.0 | The scale of all tiles. Can be used to increase or decrease the size of every tile |
|
||||
| [tileScales](../../Creating-a-custom-tileset.md#tileScales) | Object | empty | Used by the "Minimal" tileset to scale all its tiles except the base terrain down. Overrides `tileScale` value for specified terrain |
|
||||
| [ruleVariants](../../Creating-a-custom-tileset.md#ruleVariants) | Object | empty | [See here](#layering-images) |
|
||||
|
||||
### Layering images
|
||||
|
||||
|
@ -8,29 +8,29 @@ This file should contain a list of all the units, both military and civilian, th
|
||||
|
||||
Each unit has the following structure:
|
||||
|
||||
| Attribute | Type | Default | Notes |
|
||||
| --------- | ---- | ------- | ----- |
|
||||
| name | String | Required | |
|
||||
| unitType | String | Required | The type of the unit. Must be in [UnitTypes.json](#unittypesjson) |
|
||||
| cost | Integer | -1 | The amount of production required to build this unit. The production needed is always positive |
|
||||
| movement | Integer | 0 | The amount of movement points the unit has by |
|
||||
| strength | Integer | 0 | The melee attack and defensive strength of the unit. If this and rangedStrength are ommited or 0, the unit will be a civilian |
|
||||
| rangedStrength | Integer | 0 | The ranged attack strength of the unit. If omitted, the unit cannot ranged attack. If used, strength must be set too. |
|
||||
| religiousStrength | Integer | 0 | The religious attack and defensive strength of the unit |
|
||||
| range | Integer | 2 | The range from which ranged attacks can be preformed |
|
||||
| interceptRange | Integer | 0 | Air units attacking within in this range will be intercepted |
|
||||
| requiredTech | String | none | The tech required to build this unit. Must be in [Techs.json](2-Civilization-related-JSON-files.md#techsjson) |
|
||||
| obsoleteTech | String | none | After researching this tech, the unit can no longer be build. Must be in [Techs.json](2-Civilization-related-JSON-files.md#techsjson) |
|
||||
| requiredResource | String | none | Resource that is consumed by building this unit. Must be in [TileResources.json](3-Map-related-JSON-files.md#tileresourcesjson) |
|
||||
| upgradesTo | String | none | Unit that this unit can upgrade to when it is available. Must be in [Units.json](#unitsjson) |
|
||||
| replaces | String | none | If this unit is unique to a nation, this is the unit it replaces. Must be in [Units.json](#unitsjson) |
|
||||
| uniqueTo | String | none | The nation that this unit is unique to. Must be in [Nations.json](2-Civilization-related-JSON-files.md#nationsjson) |
|
||||
| hurryCostModifier | Integer | 0 | If this unit is bought for gold, its price is increased by so much percent |
|
||||
| promotions | List of Strings | empty | A list of all the promotions the unit automatically receives upon being built. Each promotion must be in [UnitPromotions.json](#unitpromotionsjson) |
|
||||
| uniques | List of Strings | empty | List of [unique abilities](../../uniques) this unit has |
|
||||
| replacementTextForUniques | String | none | If provided, this will be displayed instead of the list of uniques. Can be used for better formatting. |
|
||||
| attackSound | String | none | The sound that is to be played when this unit attacks. For possible values, see [Sounds](../../Images-and-Audio.md#sounds)
|
||||
| civilopediaText | List | empty | See [civilopediaText chapter](5-Miscellaneous-JSON-files.md#civilopedia-text) |
|
||||
| Attribute | Type | Default | Notes |
|
||||
|---------------------------|-----------------|----------|-----------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| name | String | Required | |
|
||||
| unitType | String | Required | The type of the unit. Must be in [UnitTypes.json](#unittypesjson) |
|
||||
| cost | Integer | -1 | The amount of production required to build this unit. The production needed is always positive |
|
||||
| movement | Integer | 0 | The amount of movement points the unit has by |
|
||||
| strength | Integer | 0 | The melee attack and defensive strength of the unit. If this and rangedStrength are ommited or 0, the unit will be a civilian |
|
||||
| rangedStrength | Integer | 0 | The ranged attack strength of the unit. If omitted, the unit cannot ranged attack. If used, strength must be set too. |
|
||||
| religiousStrength | Integer | 0 | The religious attack and defensive strength of the unit |
|
||||
| range | Integer | 2 | The range from which ranged attacks can be preformed |
|
||||
| interceptRange | Integer | 0 | Air units attacking within in this range will be intercepted |
|
||||
| requiredTech | String | none | The tech required to build this unit. Must be in [Techs.json](2-Civilization-related-JSON-files.md#techsjson) |
|
||||
| obsoleteTech | String | none | After researching this tech, the unit can no longer be build. Must be in [Techs.json](2-Civilization-related-JSON-files.md#techsjson) |
|
||||
| requiredResource | String | none | Resource that is consumed by building this unit. Must be in [TileResources.json](3-Map-related-JSON-files.md#tileresourcesjson) |
|
||||
| upgradesTo | String | none | Unit that this unit can upgrade to when it is available. Must be in [Units.json](#unitsjson) |
|
||||
| replaces | String | none | If this unit is unique to a nation, this is the unit it replaces. Must be in [Units.json](#unitsjson) |
|
||||
| uniqueTo | String | none | The nation that this unit is unique to. Must be in [Nations.json](2-Civilization-related-JSON-files.md#nationsjson) |
|
||||
| hurryCostModifier | Integer | 0 | If this unit is bought for gold, its price is increased by so much percent |
|
||||
| promotions | List of Strings | empty | A list of all the promotions the unit automatically receives upon being built. Each promotion must be in [UnitPromotions.json](#unitpromotionsjson) |
|
||||
| uniques | List of Strings | empty | List of [unique abilities](../../uniques) this unit has |
|
||||
| replacementTextForUniques | String | none | If provided, this will be displayed instead of the list of uniques. Can be used for better formatting. |
|
||||
| attackSound | String | none | The sound that is to be played when this unit attacks. For possible values, see [Sounds](../../Images-and-Audio.md#sounds) |
|
||||
| civilopediaText | List | empty | See [civilopediaText chapter](5-Miscellaneous-JSON-files.md#civilopedia-text) |
|
||||
|
||||
## UnitPromotions.json
|
||||
|
||||
@ -44,15 +44,15 @@ Remember, promotions can be "bought" with XP, but also granted by the unit type,
|
||||
|
||||
Each promotion has the following structure:
|
||||
|
||||
| Attribute | Type | Default | Notes |
|
||||
| --------- | ---- | ------- | ----- |
|
||||
| name | String | Required | See above for "I, II, III" progressions |
|
||||
| prerequisites | List of Strings | empty | Prerequisite promotions |
|
||||
| column | Integer | Optional | Determines placement order on the promotion picker screen. Name is historical, these coordinates no longer control placement directly. Promotions without coordinates are ensured to be placed last. (…) |
|
||||
| row | Integer | Optional | … In base mods without any coordinates, promotions without prerequisites are sorted alphabetically and placed top down, the rest of the screen will structure the dependencies logically. If your mod has a "Heal instantly", it is suggested to use row=0 to place it on top |
|
||||
| unitTypes | List of Strings | empty | The unit types for which this promotion applies as specified in [UnitTypes.json](#unittypesjson) |
|
||||
| uniques | List of Strings | empty | List of [unique abilities](../../uniques.md) this promotion grants to the units |
|
||||
| civilopediaText | List | empty | See [civilopediaText chapter](5-Miscellaneous-JSON-files.md#civilopedia-text) |
|
||||
| Attribute | Type | Default | Notes |
|
||||
|-----------------|-----------------|----------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| name | String | Required | See above for "I, II, III" progressions |
|
||||
| prerequisites | List of Strings | empty | Prerequisite promotions |
|
||||
| column | Integer | Optional | Determines placement order on the promotion picker screen. Name is historical, these coordinates no longer control placement directly. Promotions without coordinates are ensured to be placed last. (…) |
|
||||
| row | Integer | Optional | … In base mods without any coordinates, promotions without prerequisites are sorted alphabetically and placed top down, the rest of the screen will structure the dependencies logically. If your mod has a "Heal instantly", it is suggested to use row=0 to place it on top |
|
||||
| unitTypes | List of Strings | empty | The unit types for which this promotion applies as specified in [UnitTypes.json](#unittypesjson) |
|
||||
| uniques | List of Strings | empty | List of [unique abilities](../../uniques.md) this promotion grants to the units |
|
||||
| civilopediaText | List | empty | See [civilopediaText chapter](5-Miscellaneous-JSON-files.md#civilopedia-text) |
|
||||
|
||||
## UnitTypes.json
|
||||
|
||||
@ -63,8 +63,8 @@ Civilian, Melee, Ranged, Scout, Mounted, Armor, Siege, WaterCivilian, WaterMelee
|
||||
|
||||
Each unit type has the following structure:
|
||||
|
||||
| Attribute | Type | Default | Notes |
|
||||
| --------- | ---- | ------- | ----- |
|
||||
| name | String | Required | |
|
||||
| movementType | Enum | Required | The domain through which the unit moves. Allowed values: "Water", "Land", "Air" |
|
||||
| uniques | List of String | none | List of [unique abilities](../../uniques.md) this promotion grants to units of this type |
|
||||
| Attribute | Type | Default | Notes |
|
||||
|--------------|----------------|----------|------------------------------------------------------------------------------------------|
|
||||
| name | String | Required | |
|
||||
| movementType | Enum | Required | The domain through which the unit moves. Allowed values: "Water", "Land", "Air" |
|
||||
| uniques | List of String | none | List of [unique abilities](../../uniques.md) this promotion grants to units of this type |
|
||||
|
@ -8,35 +8,34 @@ This file defines the difficulty levels a player can choose when starting a new
|
||||
|
||||
Each difficulty level has the following structure:
|
||||
|
||||
| Attribute | Type | Default | Notes |
|
||||
| --------- | ---- | ------- | ----- |
|
||||
| name | String | Required | |
|
||||
| baseHappiness | Integer | 0 | |
|
||||
| extraHappinessPerLuxury | Float | 0 | |
|
||||
| researchCostModifier | Float | 1 | |
|
||||
| unitCostModifier | Float | 1 | |
|
||||
| unitSupplyBase | Integer | 5 | |
|
||||
| unitSupplyPerCity | Integer | 2 | |
|
||||
| buildingCostModifier | Float | 1 | |
|
||||
| policyCostModifier | Float | 1 | |
|
||||
| unhappinessModifier | Float | 1 | |
|
||||
| barbarianBonus | Float | 0 | |
|
||||
| barbarianSpawnDelay | Integer | 0 | |
|
||||
| playerBonusStartingUnits | List of Strings | empty | Can also be 'Era Starting Unit', maps to `startingMilitaryUnit` of the Eras file. All other units must be in [Units.json](4-Unit-related-JSON-files.md#Units.json). Applies only to human player civs |
|
||||
| aiCityGrowthModifier | Float | 1 | |
|
||||
| aiUnitCostModifier | Float | 1 | |
|
||||
| aiBuildingCostModifier | Float | 1 | |
|
||||
| aiWonderCostModifier | Float | 1 | |
|
||||
| aiBuildingMaintenanceModifier | Float | 1 | |
|
||||
| aiUnitMaintenanceModifier | Float | 1 | |
|
||||
| aiUnitSupplyModifier | Integer | 5 | |
|
||||
| aiFreeTechs | List of Strings | empty | Must be in [Techs.json](2-Civilization-related-JSON-files.md#techsjson) |
|
||||
| aiMajorCivBonusStartingUnits | List of Strings | empty | Same rules as playerBonusStartingUnits, See above. Applies only to AI major civs |
|
||||
| aiCityStateBonusStartingUnits | List of Strings | empty | Same rules as playerBonusStartingUnits, See above. Applies only to city-state civs |
|
||||
| aiUnhappinessModifier | Float | 1 | |
|
||||
| turnBarbariansCanEnterPlayerTiles | Integer | 0 | |
|
||||
| clearBarbarianCampReward | Integer | 25 | |
|
||||
<!-- | aisExchangeTechs | Boolean | | Unimplemented | -->
|
||||
| Attribute | Type | Default | Notes |
|
||||
|-----------------------------------|------------------|----------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| name | String | Required | |
|
||||
| baseHappiness | Integer | 0 | |
|
||||
| extraHappinessPerLuxury | Float | 0 | |
|
||||
| researchCostModifier | Float | 1 | |
|
||||
| unitCostModifier | Float | 1 | |
|
||||
| unitSupplyBase | Integer | 5 | |
|
||||
| unitSupplyPerCity | Integer | 2 | |
|
||||
| buildingCostModifier | Float | 1 | |
|
||||
| policyCostModifier | Float | 1 | |
|
||||
| unhappinessModifier | Float | 1 | |
|
||||
| barbarianBonus | Float | 0 | |
|
||||
| barbarianSpawnDelay | Integer | 0 | |
|
||||
| playerBonusStartingUnits | List of Strings | empty | Can also be 'Era Starting Unit', maps to `startingMilitaryUnit` of the Eras file. All other units must be in [Units.json](4-Unit-related-JSON-files.md#Units.json). Applies only to human player civs |
|
||||
| aiCityGrowthModifier | Float | 1 | |
|
||||
| aiUnitCostModifier | Float | 1 | |
|
||||
| aiBuildingCostModifier | Float | 1 | |
|
||||
| aiWonderCostModifier | Float | 1 | |
|
||||
| aiBuildingMaintenanceModifier | Float | 1 | |
|
||||
| aiUnitMaintenanceModifier | Float | 1 | |
|
||||
| aiUnitSupplyModifier | Integer | 5 | |
|
||||
| aiFreeTechs | List of Strings | empty | Must be in [Techs.json](2-Civilization-related-JSON-files.md#techsjson) |
|
||||
| aiMajorCivBonusStartingUnits | List of Strings | empty | Same rules as playerBonusStartingUnits, See above. Applies only to AI major civs |
|
||||
| aiCityStateBonusStartingUnits | List of Strings | empty | Same rules as playerBonusStartingUnits, See above. Applies only to city-state civs |
|
||||
| aiUnhappinessModifier | Float | 1 | |
|
||||
| turnBarbariansCanEnterPlayerTiles | Integer | 0 | |
|
||||
| clearBarbarianCampReward | Integer | 25 | |
|
||||
|
||||
## Eras.json
|
||||
|
||||
@ -46,26 +45,26 @@ This file should contain all the era's you want to use in your mod.
|
||||
|
||||
Each era can have the following attributes:
|
||||
|
||||
| Attribute | Type | Default | Notes |
|
||||
| --------- | ---- | ------- | ----- |
|
||||
| name | String | Required | |
|
||||
| researchAgreementCost | Integer (≥0) | 300 | Cost of research agreements when the most technologically advanced civ is in this era |
|
||||
| iconRGB | [List of 3× Integer](#rgb-colors-list) | white | RGB color that icons for technologies of this era should have in the Tech screen |
|
||||
| startingSettlerCount | Integer (≥0) | 1 | Amount of settler units that should be spawned when starting a game in this era (setting this to zero is discouraged [^1]) |
|
||||
| startingSettlerUnit | String | "Settler" | Name of the unit that should be used for the previous field. Must be in [Units.json](4-Unit-related-JSON-files.md#unitsjson), or a unit with the "Founds a new city" unique must exist |
|
||||
| startingWorkerCount | Integer (≥0) | 0 | Amount of worker units that should be spawned when starting a game in this era |
|
||||
| startingWorkerUnit | String | "Worker" | Name of the unit that should be used for the previous field. If startingWorkerCount>0, then it must exist in [Units.json](4-Unit-related-JSON-files.md#unitsjson), or a unit with the "Can build [filter] improvements on tiles" unique must exist |
|
||||
| startingMilitaryUnitCount | Integer (≥0) | 1 | Amount of military units that should be spawned when starting a game in this era |
|
||||
| startingMilitaryUnit | String | "Warrior" | Name of the unit that should be used for the previous field. Must be in [Units.json](4-Unit-related-JSON-files.md#unitsjson) |
|
||||
| startingGold | Integer (≥0) | 0 | Amount of gold each civ should receive when starting a game in this era |
|
||||
| startingCulture | Integer (≥0) | 0 | Amount of culture each civ should receive when starting a game in this era |
|
||||
| settlerPopulation | Integer (>0) | 1 | Amount of population each city should have when settled when starting a game in this era |
|
||||
| settlerBuildings | List of Strings | empty | Buildings that should automatically be built whenever a city is settled when starting a game in this era |
|
||||
| startingObsoleteWonders | List of Strings | empty | Wonders (and technically buildings) that should be impossible to built when starting a game in this era. Used in the base game to remove all wonders older than 2 era's |
|
||||
| baseUnitBuyCost | Integer | 200 | Default value used for the unique `Can be purchased with [stat] [cityFilter]` |
|
||||
| embarkDefense | Integer | 3 | Default defense for embarked unit in this era |
|
||||
| startPercent | Integer | 0 | When starting, percentage (\[0\]%-\[100\]%) of turns skipped in total turns specified in [Speed.json](#speedsjson) |
|
||||
| citySound | String | "cityClassical" | Sound used when city is founded in this era |
|
||||
| Attribute | Type | Default | Notes |
|
||||
|---------------------------|----------------------------------------|-----------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| name | String | Required | |
|
||||
| researchAgreementCost | Integer (≥0) | 300 | Cost of research agreements when the most technologically advanced civ is in this era |
|
||||
| iconRGB | [List of 3× Integer](#rgb-colors-list) | white | RGB color that icons for technologies of this era should have in the Tech screen |
|
||||
| startingSettlerCount | Integer (≥0) | 1 | Amount of settler units that should be spawned when starting a game in this era (setting this to zero is discouraged [^1]) |
|
||||
| startingSettlerUnit | String | "Settler" | Name of the unit that should be used for the previous field. Must be in [Units.json](4-Unit-related-JSON-files.md#unitsjson), or a unit with the "Founds a new city" unique must exist |
|
||||
| startingWorkerCount | Integer (≥0) | 0 | Amount of worker units that should be spawned when starting a game in this era |
|
||||
| startingWorkerUnit | String | "Worker" | Name of the unit that should be used for the previous field. If startingWorkerCount>0, then it must exist in [Units.json](4-Unit-related-JSON-files.md#unitsjson), or a unit with the "Can build [filter] improvements on tiles" unique must exist |
|
||||
| startingMilitaryUnitCount | Integer (≥0) | 1 | Amount of military units that should be spawned when starting a game in this era |
|
||||
| startingMilitaryUnit | String | "Warrior" | Name of the unit that should be used for the previous field. Must be in [Units.json](4-Unit-related-JSON-files.md#unitsjson) |
|
||||
| startingGold | Integer (≥0) | 0 | Amount of gold each civ should receive when starting a game in this era |
|
||||
| startingCulture | Integer (≥0) | 0 | Amount of culture each civ should receive when starting a game in this era |
|
||||
| settlerPopulation | Integer (>0) | 1 | Amount of population each city should have when settled when starting a game in this era |
|
||||
| settlerBuildings | List of Strings | empty | Buildings that should automatically be built whenever a city is settled when starting a game in this era |
|
||||
| startingObsoleteWonders | List of Strings | empty | Wonders (and technically buildings) that should be impossible to built when starting a game in this era. Used in the base game to remove all wonders older than 2 era's |
|
||||
| baseUnitBuyCost | Integer | 200 | Default value used for the unique `Can be purchased with [stat] [cityFilter]` |
|
||||
| embarkDefense | Integer | 3 | Default defense for embarked unit in this era |
|
||||
| startPercent | Integer | 0 | When starting, percentage (\[0\]%-\[100\]%) of turns skipped in total turns specified in [Speed.json](#speedsjson) |
|
||||
| citySound | String | "cityClassical" | Sound used when city is founded in this era |
|
||||
|
||||
[^1]: Successfully setting startingSettlerCount to zero in a mod (idea: conquer or die) is not easy. Some player-controlled settings require at least one Settler, through any source (see difficulties for other possible settler sources), or you won't be able to start a game: Once City Challenge requires one for all players, and allowing any city-states requires one for those. Would also affect defeat rules.
|
||||
|
||||
@ -77,34 +76,34 @@ This file should contain all the speeds you want to use in your mod.
|
||||
|
||||
Each speed can have the following attributes:
|
||||
|
||||
| Attribute | Type | Default | Notes |
|
||||
| --------- | ---- | ------- | ----- |
|
||||
| name | String | Required | Name of the speed |
|
||||
| modifier | Float (≥0) | 1.0 | Overall game speed modifier |
|
||||
| productionCostModifier | Float (≥0) | `modifier` value | Scales production cost of units and buildings |
|
||||
| goldCostModifier | Float (≥0) | `modifier` value | Scales gold costs |
|
||||
| scienceCostModifier | Float (≥0) | `modifier` value | Scales science costs |
|
||||
| cultureCostModifier | Float (≥0) | `modifier` value | Scales culture costs |
|
||||
| faithCostModifier | Float (≥0) | `modifier` value | Scales faith costs |
|
||||
| improvementBuildLengthModifier | Float (≥0) | `modifier` value | Scales the time it takes for a worker to build tile improvements |
|
||||
| barbarianModifier | Float (≥0) | `modifier` value | Scales the time between barbarian spawns |
|
||||
| goldGiftModifier | Float (≥0) | `modifier` value | Scales the influence gained from gifting gold to city-states |
|
||||
| cityStateTributeScalingInterval | Float (≥0) | 6.5 | The number of turns it takes for the amount of gold a player demands from city-states to increase by 5 gold |
|
||||
| goldenAgeLengthModifier | Float (≥0) | `modifier` value | Scales the length of golden ages |
|
||||
| religiousPressureAdjacentCity | Integer (≥0) | 6 | Defines how much religious pressure a city exerts on nearby cities |
|
||||
| peaceDealDuration | Integer (≥0) | 10 | The number of turns a peace deal lasts |
|
||||
| dealDuration | Integer (≥0) | 30 | The number of turns a non-peace deal (research agreement, open borders, etc.) lasts |
|
||||
| startYear | Float | -4000 | The start year of the game (negative is BC/BCE) |
|
||||
| turns | List | Required | List of time interval per turn, [see below](#time-interval-per-turn) |
|
||||
| Attribute | Type | Default | Notes |
|
||||
|---------------------------------|--------------|------------------|-------------------------------------------------------------------------------------------------------------|
|
||||
| name | String | Required | Name of the speed |
|
||||
| modifier | Float (≥0) | 1.0 | Overall game speed modifier |
|
||||
| productionCostModifier | Float (≥0) | `modifier` value | Scales production cost of units and buildings |
|
||||
| goldCostModifier | Float (≥0) | `modifier` value | Scales gold costs |
|
||||
| scienceCostModifier | Float (≥0) | `modifier` value | Scales science costs |
|
||||
| cultureCostModifier | Float (≥0) | `modifier` value | Scales culture costs |
|
||||
| faithCostModifier | Float (≥0) | `modifier` value | Scales faith costs |
|
||||
| improvementBuildLengthModifier | Float (≥0) | `modifier` value | Scales the time it takes for a worker to build tile improvements |
|
||||
| barbarianModifier | Float (≥0) | `modifier` value | Scales the time between barbarian spawns |
|
||||
| goldGiftModifier | Float (≥0) | `modifier` value | Scales the influence gained from gifting gold to city-states |
|
||||
| cityStateTributeScalingInterval | Float (≥0) | 6.5 | The number of turns it takes for the amount of gold a player demands from city-states to increase by 5 gold |
|
||||
| goldenAgeLengthModifier | Float (≥0) | `modifier` value | Scales the length of golden ages |
|
||||
| religiousPressureAdjacentCity | Integer (≥0) | 6 | Defines how much religious pressure a city exerts on nearby cities |
|
||||
| peaceDealDuration | Integer (≥0) | 10 | The number of turns a peace deal lasts |
|
||||
| dealDuration | Integer (≥0) | 30 | The number of turns a non-peace deal (research agreement, open borders, etc.) lasts |
|
||||
| startYear | Float | -4000 | The start year of the game (negative is BC/BCE) |
|
||||
| turns | List | Required | List of time interval per turn, [see below](#time-interval-per-turn) |
|
||||
|
||||
### Time interval per turn
|
||||
|
||||
The "turns" attribute defines the number of years passed between turns. The attribute consists of a list of hashmaps, each hashmaps in turn having 2 required attributes: "yearsPerTurn" (Float) and "untilTurn" (Integer)
|
||||
|
||||
| Attribute | Type | Default | Notes |
|
||||
| --------- | ---- | ------- | ----- |
|
||||
| yearsPerTurn | Integer | Required | Number of years passed between turns |
|
||||
| untilTurn | Integer | Required | Which turn that this "speed" is active until (if it is the last object, this is ignored) |
|
||||
| Attribute | Type | Default | Notes |
|
||||
|--------------|---------|----------|------------------------------------------------------------------------------------------|
|
||||
| yearsPerTurn | Integer | Required | Number of years passed between turns |
|
||||
| untilTurn | Integer | Required | Which turn that this "speed" is active until (if it is the last object, this is ignored) |
|
||||
|
||||
The code below is an example of a valid "turns" definition and it specifies that the first 50 turns of a game last for 60 years each, then the next 30 turns (and any played after the 80th) last for 40 years each.
|
||||
|
||||
@ -129,26 +128,26 @@ Incompatibility filtering works so far between extension and base mods, but feel
|
||||
|
||||
The file can have the following attributes, not including the values Unciv sets automatically:
|
||||
|
||||
| Attribute | Type | | Notes |
|
||||
| --------- | ---- | ------- | ----- |
|
||||
| isBaseRuleset | Boolean | false | Replaces vanilla ruleset if true |
|
||||
| uniques | List | empty | Mod-wide specials, [see here](../../uniques.md#modoptions-uniques) |
|
||||
| techsToRemove | List | empty | List of [Technologies](2-Civilization-related-JSON-files.md#techsjson) or [technologyFilter](../../Unique-parameters.md#technologyfilter) to remove (isBaseRuleset=false only) |
|
||||
| buildingsToRemove | List | empty | List of [Buildings or Wonders](2-Civilization-related-JSON-files.md#buildingsjson) or [buildingFilter](../../Unique-parameters.md#buildingfilter) to remove (isBaseRuleset=false only) |
|
||||
| unitsToRemove | List | empty | List of [Units](4-Unit-related-JSON-files.md#unitsjson) or [unitFilter](../../Unique-parameters.md#baseunitfilter) to remove (isBaseRuleset=false only) |
|
||||
| nationsToRemove | List | empty | List of [Nations](2-Civilization-related-JSON-files.md#nationsjson) or [nationFilter](../../Unique-parameters.md#nationfilter) to remove (isBaseRuleset=false only) |
|
||||
| constants | Object | empty | See [ModConstants](#modconstants) |
|
||||
| Attribute | Type | | Notes |
|
||||
|-------------------|---------|-------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| isBaseRuleset | Boolean | false | Replaces vanilla ruleset if true |
|
||||
| uniques | List | empty | Mod-wide specials, [see here](../../uniques.md#modoptions-uniques) |
|
||||
| techsToRemove | List | empty | List of [Technologies](2-Civilization-related-JSON-files.md#techsjson) or [technologyFilter](../../Unique-parameters.md#technologyfilter) to remove (isBaseRuleset=false only) |
|
||||
| buildingsToRemove | List | empty | List of [Buildings or Wonders](2-Civilization-related-JSON-files.md#buildingsjson) or [buildingFilter](../../Unique-parameters.md#buildingfilter) to remove (isBaseRuleset=false only) |
|
||||
| unitsToRemove | List | empty | List of [Units](4-Unit-related-JSON-files.md#unitsjson) or [unitFilter](../../Unique-parameters.md#baseunitfilter) to remove (isBaseRuleset=false only) |
|
||||
| nationsToRemove | List | empty | List of [Nations](2-Civilization-related-JSON-files.md#nationsjson) or [nationFilter](../../Unique-parameters.md#nationfilter) to remove (isBaseRuleset=false only) |
|
||||
| constants | Object | empty | See [ModConstants](#modconstants) |
|
||||
|
||||
The values normally set automatically from github metadata are:
|
||||
|
||||
| Attribute | Type | | Notes |
|
||||
| --------- | ---- | ------- | ----- |
|
||||
| modUrl | String | | The github page the mod was downloaded from, or empty if a freely hosted zip was used |
|
||||
| defaultBranch | String | master | The repo's default branch |
|
||||
| author | String | | Repo owner |
|
||||
| lastUpdated | String | | ISO date |
|
||||
| modSize | Integer | 0 | Size in kB |
|
||||
| topics | List | empty | A list of "unciv-mod-*" github topics |
|
||||
| Attribute | Type | | Notes |
|
||||
|---------------|---------|--------|---------------------------------------------------------------------------------------|
|
||||
| modUrl | String | | The github page the mod was downloaded from, or empty if a freely hosted zip was used |
|
||||
| defaultBranch | String | master | The repo's default branch |
|
||||
| author | String | | Repo owner |
|
||||
| lastUpdated | String | | ISO date |
|
||||
| modSize | Integer | 0 | Size in kB |
|
||||
| topics | List | empty | A list of "unciv-mod-*" github topics |
|
||||
|
||||
To clarify: When your Mod is distributed via github, including these in the Mod repo has no effect.
|
||||
However, when a Mod is distributed _without_ a github repository, these values can and _should_ be set by the author in the distributed `ModOptions.json`.
|
||||
@ -159,31 +158,31 @@ Stored in ModOptions.constants, this is a collection of constants used internall
|
||||
This is the only structure that is _merged_ field by field from mods, not overwritten, so you can change XP from Barbarians in one mod
|
||||
and city distance in another. In case of conflicts, there is no guarantee which mod wins, only that _default_ values are ignored.
|
||||
|
||||
| Attribute | Type | Default | Notes |
|
||||
| --------- | ---- | ------- | ----- |
|
||||
| maxXPfromBarbarians | Int | 30 | [^A] |
|
||||
| cityStrengthBase | Float | 8.0 | [^B] |
|
||||
| cityStrengthPerPop | Float | 0.4 | [^B] |
|
||||
| cityStrengthFromTechsMultiplier | Float | 5.5 | [^B] |
|
||||
| cityStrengthFromTechsExponent | Float | 2.8 | [^B] |
|
||||
| cityStrengthFromTechsFullMultiplier | Float | 1.0 | [^B] |
|
||||
| cityStrengthFromGarrison | Float | 0.2 | [^B] |
|
||||
| unitSupplyPerPopulation | Float | 0.5 | [^C] |
|
||||
| minimalCityDistance | Int | 3 | [^D] |
|
||||
| minimalCityDistanceOnDifferentContinents | Int | 2 | [^D] |
|
||||
| unitUpgradeCost | Object | [See below](#unitupgradecost) | [^J] |
|
||||
| naturalWonderCountMultiplier | Float | 0.124 | [^E] |
|
||||
| naturalWonderCountAddedConstant | Float | 0.1 | [^E] |
|
||||
| ancientRuinCountMultiplier | Float | 0.02 | [^F] |
|
||||
| spawnIceBelowTemperature | Float | -0.8 | [^G] |
|
||||
| maxLakeSize | Int | 10 | [^H] |
|
||||
| riverCountMultiplier | Float | 0.01 | [^I] |
|
||||
| minRiverLength | Int | 5 | [^I] |
|
||||
| maxRiverLength | Int | 666 | [^I] |
|
||||
| religionLimitBase | Int | 1 | [^K] |
|
||||
| religionLimitMultiplier | Float | 0.5 | [^K] |
|
||||
| pantheonBase | Int | 10 | [^L] |
|
||||
| pantheonGrowth | Int | 5 | [^L] |
|
||||
| Attribute | Type | Default | Notes |
|
||||
|------------------------------------------|--------|-------------------------------|-------|
|
||||
| maxXPfromBarbarians | Int | 30 | [^A] |
|
||||
| cityStrengthBase | Float | 8.0 | [^B] |
|
||||
| cityStrengthPerPop | Float | 0.4 | [^B] |
|
||||
| cityStrengthFromTechsMultiplier | Float | 5.5 | [^B] |
|
||||
| cityStrengthFromTechsExponent | Float | 2.8 | [^B] |
|
||||
| cityStrengthFromTechsFullMultiplier | Float | 1.0 | [^B] |
|
||||
| cityStrengthFromGarrison | Float | 0.2 | [^B] |
|
||||
| unitSupplyPerPopulation | Float | 0.5 | [^C] |
|
||||
| minimalCityDistance | Int | 3 | [^D] |
|
||||
| minimalCityDistanceOnDifferentContinents | Int | 2 | [^D] |
|
||||
| unitUpgradeCost | Object | [See below](#unitupgradecost) | [^J] |
|
||||
| naturalWonderCountMultiplier | Float | 0.124 | [^E] |
|
||||
| naturalWonderCountAddedConstant | Float | 0.1 | [^E] |
|
||||
| ancientRuinCountMultiplier | Float | 0.02 | [^F] |
|
||||
| spawnIceBelowTemperature | Float | -0.8 | [^G] |
|
||||
| maxLakeSize | Int | 10 | [^H] |
|
||||
| riverCountMultiplier | Float | 0.01 | [^I] |
|
||||
| minRiverLength | Int | 5 | [^I] |
|
||||
| maxRiverLength | Int | 666 | [^I] |
|
||||
| religionLimitBase | Int | 1 | [^K] |
|
||||
| religionLimitMultiplier | Float | 0.5 | [^K] |
|
||||
| pantheonBase | Int | 10 | [^L] |
|
||||
| pantheonGrowth | Int | 5 | [^L] |
|
||||
|
||||
Legend:
|
||||
|
||||
@ -218,13 +217,13 @@ Legend:
|
||||
|
||||
These values are not merged individually, only the entire sub-structure is.
|
||||
|
||||
| Attribute | Type | | Notes |
|
||||
| --------- | ---- | ------- | ----- |
|
||||
| base | Float | 10 | |
|
||||
| perProduction | Float | 2 | |
|
||||
| eraMultiplier | Float | 0 | |
|
||||
| exponent | Float | 1 | |
|
||||
| roundTo | Int | 5 | |
|
||||
| Attribute | Type | | Notes |
|
||||
|---------------|-------|----|-------|
|
||||
| base | Float | 10 | |
|
||||
| perProduction | Float | 2 | |
|
||||
| eraMultiplier | Float | 0 | |
|
||||
| exponent | Float | 1 | |
|
||||
| roundTo | Int | 5 | |
|
||||
|
||||
The formula for the gold cost of a unit upgrade is (rounded down to a multiple of `roundTo`):
|
||||
(
|
||||
@ -248,14 +247,15 @@ When extension rulesets define GlobalUniques, all uniques are merged. At the mom
|
||||
**Note a Base Ruleset mod can define a "welcome page" here by adding a "Tutorial" with a name equal to the name of the mod!**
|
||||
As an exception to the general rule, this file in a Base Ruleset mod will not _replace_ the default, but add to it like extension mods do.
|
||||
Also, place it under `<mod>/jsons/` normally even if the original is found one level above the vanilla jsons.
|
||||
Also, place it under `<mod>/jsons/` normally even if the original is found one level above the vanilla jsons.
|
||||
|
||||
Each tutorial has the following structure:
|
||||
|
||||
| Attribute | Type | Default | Notes |
|
||||
| --------- | ---- | ------- | ----- |
|
||||
| name | String | Required | Entry name |
|
||||
| civilopediaText | List | Optional | See [civilopediaText chapter](5-Miscellaneous-JSON-files.md#civilopedia-text) |
|
||||
| steps | List of Strings | Optional | Plain text |
|
||||
| Attribute | Type | Default | Notes |
|
||||
|-----------------|-----------------|----------|-------------------------------------------------------------------------------|
|
||||
| name | String | Required | Entry name |
|
||||
| civilopediaText | List | Optional | See [civilopediaText chapter](5-Miscellaneous-JSON-files.md#civilopedia-text) |
|
||||
| steps | List of Strings | Optional | Plain text |
|
||||
|
||||
If an entry contains both `steps` and `civilopediaText` attributes, the `civilopediaText` is shown first.
|
||||
|
||||
@ -268,31 +268,31 @@ Most of the file contains of strings that are shown to the user in the victory s
|
||||
|
||||
Each victory have the following structure:
|
||||
|
||||
| Attribute | Type | Default | Notes |
|
||||
| --------- | ---- | ------- | ----- |
|
||||
| name | String | Required | Name of the victory |
|
||||
| victoryScreenHeader | String | none | Shown in the footer of the victory in the `our status` in the victory screen |
|
||||
| victoryString | String | none | Shown in the footer of the victory screen when you won the game with this victory |
|
||||
| defeatString | String | none | Shown in the footer of the victory screen when someone else won the game with this victory |
|
||||
| hiddenInVictoryScreen | Boolean | false | Whether progress of this victory is hidden in the victory screen |
|
||||
| requiredSpaceshipParts | List of Strings | empty | What spaceship parts must be added to the capital for the corresponding milestone |
|
||||
| Milestones | List of Strings | Required | List of milestones that must be accomplished to win, [see below](#milestones) |
|
||||
| Attribute | Type | Default | Notes |
|
||||
|------------------------|-----------------|----------|--------------------------------------------------------------------------------------------|
|
||||
| name | String | Required | Name of the victory |
|
||||
| victoryScreenHeader | String | none | Shown in the footer of the victory in the `our status` in the victory screen |
|
||||
| victoryString | String | none | Shown in the footer of the victory screen when you won the game with this victory |
|
||||
| defeatString | String | none | Shown in the footer of the victory screen when someone else won the game with this victory |
|
||||
| hiddenInVictoryScreen | Boolean | false | Whether progress of this victory is hidden in the victory screen |
|
||||
| requiredSpaceshipParts | List of Strings | empty | What spaceship parts must be added to the capital for the corresponding milestone |
|
||||
| Milestones | List of Strings | Required | List of milestones that must be accomplished to win, [see below](#milestones) |
|
||||
|
||||
### Milestones
|
||||
|
||||
Currently the following milestones are supported:
|
||||
|
||||
| Milestone | Requirement |
|
||||
| --------- | ----------- |
|
||||
| Build [building] | Build the building [building] in any city |
|
||||
| Anyone should build [building] | Anyone must build the building [building] for all players to have this milestone |
|
||||
| Add all [comment] in capital | Add all units in the `requiredSpaceshipParts` field of this victory to the capital |
|
||||
| Destroy all players | You must be the only major civilization with any cities left |
|
||||
| Capture all capitals | Capture all the original capitals of major civilizations in the game |
|
||||
| Complete [amount] Policy branches | Fully complete at least [amount] policy branches |
|
||||
| Win diplomatic vote | At any point in the game win a diplomatic vote (UN). You may lose afterwards and still retain this milestone |
|
||||
| Become the world religion | Have your religion be the majority religion in a majority of cities of all major civs |
|
||||
| Have highest score after max turns | Basically time victory. Enables the 'max turn' slider and calculates score when that amount is reached |
|
||||
| Milestone | Requirement |
|
||||
|------------------------------------|--------------------------------------------------------------------------------------------------------------|
|
||||
| Build [building] | Build the building [building] in any city |
|
||||
| Anyone should build [building] | Anyone must build the building [building] for all players to have this milestone |
|
||||
| Add all [comment] in capital | Add all units in the `requiredSpaceshipParts` field of this victory to the capital |
|
||||
| Destroy all players | You must be the only major civilization with any cities left |
|
||||
| Capture all capitals | Capture all the original capitals of major civilizations in the game |
|
||||
| Complete [amount] Policy branches | Fully complete at least [amount] policy branches |
|
||||
| Win diplomatic vote | At any point in the game win a diplomatic vote (UN). You may lose afterwards and still retain this milestone |
|
||||
| Become the world religion | Have your religion be the majority religion in a majority of cities of all major civs |
|
||||
| Have highest score after max turns | Basically time victory. Enables the 'max turn' slider and calculates score when that amount is reached |
|
||||
|
||||
## Civilopedia text
|
||||
|
||||
@ -320,21 +320,21 @@ An example of the format is:
|
||||
|
||||
List of attributes - note not all combinations are valid:
|
||||
|
||||
| Attribute | Type | Description |
|
||||
| --------- | ---- | ----------- |
|
||||
| `text` | String | Text to display |
|
||||
| `link` | String | Create link and icon, format: Category/Name or _external_ link ('http://','https://','mailto:') |
|
||||
| `icon` | String | Show icon without linking, format: Category/Name |
|
||||
| `extraImage` | String | Display an Image instead of text. Can be a path found in a texture atlas or or the name of a png or jpg in the ExtraImages folder |
|
||||
| `imageSize` | Float | Size in world units of the [extraImage], the smaller coordinate is calculated preserving aspect ratio. available width |
|
||||
| `header` | Integer | Header level. 1 means double text size and decreases from there |
|
||||
| `size` | Integer | Text size, is 18. Use `size` or `header` but not both |
|
||||
| `indent` | Integer | Indent level. 0 means text will follow icons, 1 aligns to the right of all icons, each further step is 30 units |
|
||||
| `padding` | Float | Vertical padding between rows, 5 units |
|
||||
| `color` | String | Sets text color, accepts names or 6/3-digit web colors (e.g. #FFA040) |
|
||||
| `separator` | Boolean | Renders a separator line instead of text. Can be combined only with `color` and `size` (line width, default 2) |
|
||||
| `starred` | Boolean | Decorates text with a star icon - if set, it receives the `color` instead of the text |
|
||||
| `centered` | Boolean | Centers the line (and turns off automatic wrap). For an `extraImage`, turns on crop-to-content to equalize transparent borders |
|
||||
| Attribute | Type | Description |
|
||||
|--------------|---------|-----------------------------------------------------------------------------------------------------------------------------------|
|
||||
| `text` | String | Text to display |
|
||||
| `link` | String | Create link and icon, format: Category/Name or _external_ link ('http://','https://','mailto:') |
|
||||
| `icon` | String | Show icon without linking, format: Category/Name |
|
||||
| `extraImage` | String | Display an Image instead of text. Can be a path found in a texture atlas or or the name of a png or jpg in the ExtraImages folder |
|
||||
| `imageSize` | Float | Size in world units of the [extraImage], the smaller coordinate is calculated preserving aspect ratio. available width |
|
||||
| `header` | Integer | Header level. 1 means double text size and decreases from there |
|
||||
| `size` | Integer | Text size, is 18. Use `size` or `header` but not both |
|
||||
| `indent` | Integer | Indent level. 0 means text will follow icons, 1 aligns to the right of all icons, each further step is 30 units |
|
||||
| `padding` | Float | Vertical padding between rows, 5 units |
|
||||
| `color` | String | Sets text color, accepts names or 6/3-digit web colors (e.g. #FFA040) |
|
||||
| `separator` | Boolean | Renders a separator line instead of text. Can be combined only with `color` and `size` (line width, default 2) |
|
||||
| `starred` | Boolean | Decorates text with a star icon - if set, it receives the `color` instead of the text |
|
||||
| `centered` | Boolean | Centers the line (and turns off automatic wrap). For an `extraImage`, turns on crop-to-content to equalize transparent borders |
|
||||
|
||||
The lines from json will 'surround' the automatically generated lines such that the latter are inserted just above the first json line carrying a link, if any. If no json lines have links, they will be inserted between the automatic title and the automatic info. This method may, however, change in the future.
|
||||
|
||||
@ -347,8 +347,8 @@ Certain objects can be specified to have its own unique color. The colors are de
|
||||
|
||||
Note: The default of some objects are [gdx color classes](https://javadoc.io/doc/com.badlogicgames.gdx/gdx/latest/com/badlogic/gdx/graphics/Color.html). The values of the constants are as follows:
|
||||
|
||||
| name | value |
|
||||
| ---- | ----- |
|
||||
| gold | [225, 215, 0] |
|
||||
| name | value |
|
||||
|-------|-----------------|
|
||||
| gold | [225, 215, 0] |
|
||||
| white | [255, 255, 255] |
|
||||
| black | [0, 0, 0] |
|
||||
| black | [0, 0, 0] |
|
||||
|
Reference in New Issue
Block a user