diff --git a/docs/Modders/Mod-file-structure/5-Miscellaneous-JSON-files.md b/docs/Modders/Mod-file-structure/5-Miscellaneous-JSON-files.md index 78fcfa3930..f3f31d2185 100644 --- a/docs/Modders/Mod-file-structure/5-Miscellaneous-JSON-files.md +++ b/docs/Modders/Mod-file-structure/5-Miscellaneous-JSON-files.md @@ -8,34 +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 | | +| 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#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#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 @@ -45,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#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#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#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. @@ -123,7 +123,7 @@ Events allow users to choose between options of triggers to activate. | name | String | Required | Used for triggering via "Triggers a [event] event" unique | | text | String | None | Flavor text displayed to user | | presentation | One of: "None", "Alert", "Floating" | Alert | "Alert" indicates a regular popup, "None" means the choice is made randomly, "Floating" is for tutorial-style indicators | -| civilopediaText | List | Optional | See [civilopediaText chapter](5-Miscellaneous-JSON-files.md#civilopedia-text) | +| civilopediaText | List | Optional | See [civilopediaText chapter](5-Miscellaneous-JSON-files#civilopedia-text) | | choices | List of EventChoices | | User can choose to trigger one of the viable choices | @@ -137,7 +137,7 @@ Event choices are comprised of: | triggeredUniques | List of trigger uniques | Required | The triggers that this choice activates upon being chosen | | conditions | List of conditional uniques | Empty list | If any conditional is not met, this option becomes unpickable (not shown) | | keyShortcut | key to select (name) | none | Key names see [Gdx.Input.Keys](https://github.com/libgdx/libgdx/blob/master/gdx/src/com/badlogic/gdx/Input.java#L69) | -| civilopediaText | List | Optional | See [civilopediaText chapter](5-Miscellaneous-JSON-files.md#civilopedia-text) | +| civilopediaText | List | Optional | See [civilopediaText chapter](5-Miscellaneous-JSON-files#civilopedia-text) | Here, civilopediaText is shown outside the active Button, before the triggeredUniques. @@ -150,7 +150,7 @@ This file is a little different: - Does not exist in Vanilla ruleset - Is entirely optional but will be created after downloading a mod -Note that this file controls _declarative mod compatibility_ (Work in progress) - e.g. there's [uniques](../../uniques.md#modoptions-uniques) to say your Mod should only or never be used as 'Permanent audiovisual mod'. +Note that this file controls _declarative mod compatibility_ (Work in progress) - e.g. there's [uniques](../../uniques#modoptions-uniques) to say your Mod should only or never be used as 'Permanent audiovisual mod'. Incompatibility filtering works so far between extension and base mods, but feel free to document known extension-to-extension incompatibilities using the same Unique now. Stay tuned! The file can have the following attributes, not including the values Unciv sets automatically: @@ -158,11 +158,11 @@ The file can have the following attributes, not including the values Unciv sets | Attribute | Type | default | 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) | +| uniques | List | empty | Mod-wide specials, [see here](../../uniques#modoptions-uniques) | +| techsToRemove | List | empty | List of [Technologies](2-Civilization-related-JSON-files#techsjson) or [technologyFilter](../../Unique-parameters#technologyfilter) to remove (isBaseRuleset=false only) | +| buildingsToRemove | List | empty | List of [Buildings or Wonders](2-Civilization-related-JSON-files#buildingsjson) or [buildingFilter](../../Unique-parameters#buildingfilter) to remove (isBaseRuleset=false only) | +| unitsToRemove | List | empty | List of [Units](4-Unit-related-JSON-files#unitsjson) or [unitFilter](../../Unique-parameters#baseunitfilter) to remove (isBaseRuleset=false only) | +| nationsToRemove | List | empty | List of [Nations](2-Civilization-related-JSON-files#nationsjson) or [nationFilter](../../Unique-parameters#nationfilter) to remove (isBaseRuleset=false only) | | constants | Object | empty | See [ModConstants](#modconstants) | | tileset | String | empty | Only applicable for base rulesets | | unitset | String | empty | Only applicable for base rulesets | @@ -285,7 +285,7 @@ The formula for the gold cost of a unit upgrade is (rounded down to a multiple o max((`base` + `perProduction` \* (new_unit_cost - old_unit_cost)), 0) \* (1 + eraNumber \* `eraMultiplier`) \* `civModifier` ) ^ `exponent` -With `civModifier` being the multiplicative aggregate of ["\[relativeAmount\]% Gold cost of upgrading"](../../uniques.md#global-uniques) uniques that apply. +With `civModifier` being the multiplicative aggregate of ["\[relativeAmount\]% Gold cost of upgrading"](../../uniques#global-uniques) uniques that apply. ## GlobalUniques.json @@ -308,7 +308,7 @@ 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) | +| civilopediaText | List | Optional | See [civilopediaText chapter](5-Miscellaneous-JSON-files#civilopedia-text) | | steps | List of Strings | Optional | Plain text | If an entry contains both `steps` and `civilopediaText` attributes, the `civilopediaText` is shown first.