1
0
mirror of https://github.com/vcmi/vcmi.git synced 2024-12-22 22:13:35 +02:00
vcmi/config/gameConfig.json
Ivan Savenko f59834afe1 Fixes for configurable markets support
- string "speech" can now be translated
- removed "title" string, VCMI will now use object name instead
- moved configuration of all "markets" into a separate json file
- added schema for validation of market objects
- removed serialization of translated strings from University
2024-11-20 15:45:13 +00:00

593 lines
18 KiB
JSON

{
"factions" :
[
"config/factions/castle.json",
"config/factions/rampart.json",
"config/factions/tower.json",
"config/factions/necropolis.json",
"config/factions/inferno.json",
"config/factions/dungeon.json",
"config/factions/stronghold.json",
"config/factions/fortress.json",
"config/factions/conflux.json",
"config/factions/neutral.json"
],
"creatures" :
[
"config/creatures/castle.json",
"config/creatures/rampart.json",
"config/creatures/tower.json",
"config/creatures/necropolis.json",
"config/creatures/inferno.json",
"config/creatures/dungeon.json",
"config/creatures/stronghold.json",
"config/creatures/fortress.json",
"config/creatures/conflux.json",
"config/creatures/neutral.json",
"config/creatures/special.json"
],
"heroes" :
[
"config/heroes/castle.json",
"config/heroes/rampart.json",
"config/heroes/tower.json",
"config/heroes/necropolis.json",
"config/heroes/inferno.json",
"config/heroes/dungeon.json",
"config/heroes/stronghold.json",
"config/heroes/fortress.json",
"config/heroes/conflux.json",
"config/heroes/special.json",
"config/heroes/portraits.json"
],
"objects" :
[
"config/objects/cartographer.json",
"config/objects/coverOfDarkness.json",
"config/objects/creatureBanks.json",
"config/objects/dwellings.json",
"config/objects/generic.json",
"config/objects/lighthouse.json",
"config/objects/magicSpring.json",
"config/objects/magicWell.json",
"config/objects/markets.json",
"config/objects/moddables.json",
"config/objects/observatory.json",
"config/objects/pyramid.json",
"config/objects/rewardableBonusing.json",
"config/objects/rewardableOncePerHero.json",
"config/objects/rewardableOncePerWeek.json",
"config/objects/rewardableOnceVisitable.json",
"config/objects/rewardablePickable.json",
"config/objects/scholar.json",
"config/objects/shrine.json",
"config/objects/witchHut.json"
],
"biomes" :
[
"config/biomes.json"
],
"artifacts" :
[
"config/artifacts.json"
],
"heroClasses" :
[
"config/heroClasses.json"
],
"bonuses" :
[
"config/bonuses.json"
],
"spells" :
[
"config/spells/adventure.json",
"config/spells/offensive.json",
"config/spells/other.json",
"config/spells/timed.json",
"config/spells/ability.json",
"config/spells/vcmiAbility.json",
"config/spells/moats.json"
],
"skills" :
[
"config/skills.json"
],
"terrains":
[
"config/terrains.json"
],
"roads":
[
"config/roads.json"
],
"rivers":
[
"config/rivers.json"
],
"battlefields":
[
"config/battlefields.json"
],
"obstacles":
[
"config/obstacles.json"
],
"settings":
{
// Number of entries of each type to load from Heroes III text files
"textData" :
{
"heroClass" : 18,
"artifact" : 144,
"creature" : 150,
"faction" : 9,
"hero" : 156,
"spell" : 81,
"object" : 256,
"terrain" : 10,
"river" : 5,
"road" : 4
},
"mapFormat" : {
"restorationOfErathia" : {
"supported" : true,
"iconIndex" : 0,
"buildingsCommon": {
"townHall" : 0,
"cityHall" : 1,
"capitol" : 2,
"fort" : 3,
"citadel" : 4,
"castle" : 5,
"tavern" : 6,
"blacksmith" : 7,
"marketplace" : 8,
"resourceSilo" : 9,
"mageGuild1" : 11,
"mageGuild2" : 12,
"mageGuild3" : 13,
"mageGuild4" : 14,
"mageGuild5" : 15,
"shipyard" : 16,
"grail" : 17,
"dwellingLvl1" : 22,
"dwellingUpLvl1" : 23,
"horde1" : 24,
"dwellingLvl2" : 25,
"dwellingUpLvl2" : 26,
"horde2" : 27,
"dwellingLvl3" : 28,
"dwellingUpLvl3" : 29,
"horde3" : 30,
"dwellingLvl4" : 31,
"dwellingUpLvl4" : 32,
"horde4" : 33,
"dwellingLvl5" : 34,
"dwellingUpLvl5" : 35,
"horde5" : 36,
"dwellingLvl6" : 37,
"dwellingUpLvl6" : 38,
"dwellingLvl7" : 39,
"dwellingUpLvl7" : 40
},
"buildings" : {
"castle" : {
"special1" : 18, // lighthouse
"special2" : 20, // stables
"special3" : 19 // brotherhoodOfSword
},
"rampart" : {
"special1" : 18, // mysticPond
"special2" : 19, // fountainOfFortune
"special3" : 20 // treasury
},
"tower" : {
"special1" : 10, // artifactMerchants
"special2" : 20, // lookoutTower
"special3" : 18, // library
"special4" : 19 // wallOfKnowledge
},
"inferno" : {
"special2" : 18, // brimstoneStormclouds
"special3" : 19, // castleGate
"special4" : 20 // orderOfFire
},
"necropolis" : {
"special1" : 18, // coverOfDarkness
"special2" : 19, // necromancyAmplifier
"special3" : 20 // skeletonTransformer
},
"dungeon" : {
"special1" : 10, // artifactMerchants
"special2" : 18, // manaVortex
"special3" : 19, // portalOfSummoning
"special4" : 20 // battleScholarAcademy
},
"stronghold" : {
"special1" : 18, // escapeTunnel
"special2" : 19, // freelancersGuild
"special3" : 20, // ballistaYard
"special4" : 21 // hallOfValhalla
},
"fortress" : {
"special1" : 20, // cageOfWarlords
"special2" : 19, // bloodObelisk
"special3" : 18 // glyphsOfFear
}
},
"portraits" : {
"catherine" : 128, // In "RoE" Catherine only has portrait
"portraitGeneralKendal" : 129
}
},
"armageddonsBlade" : {
"supported" : true,
"iconIndex" : 1,
"buildings" : {
"conflux" : {
"special1" : 10, // artifactMerchants
"special2" : 18 // magicUniversity
}
},
"portraits" : {
"pasis" : 128,
"thunar" : 129,
"portraitGeneralKendal" : 156,
"portraitYoungCristian" : 157,
"portraitOrdwald" : 158
}
},
"shadowOfDeath" : {
"supported" : true,
"iconIndex" : 2,
"portraits" : {
"portraitGeneralKendal" : 156,
"portraitYoungCristian" : 157,
"portraitOrdwald" : 158,
"portraitFinneas" : 159,
"portraitYoungGem" : 160,
"portraitYoungSandro" : 161,
"portraitYoungYog" : 162
}
},
"chronicles" : {
"supported" : false,
"iconIndex" : 2
},
"jsonVCMI" : {
"supported" : true,
"iconIndex" : 3
},
"hornOfTheAbyss" : {
"supported" : false
},
"inTheWakeOfGods" : {
"supported" : false
}
},
"heroes" :
{
// number of heroes that player can have active on map at the same time
"perPlayerOnMapCap" : 8,
// number of heroes that player can have in total, including garrisoned
"perPlayerTotalCap" : 16,
// if enabled, hero that wins a battle without any non-summoned troops left will retreat and become available in tavern instead of being lost
"retreatOnWinWithoutTroops" : true,
// Chances for a hero with default army to receive corresponding stack out of his predefined starting troops
"startingStackChances": [ 100, 88, 25],
// number of artifacts that can fit in a backpack. -1 is unlimited.
"backpackSize" : -1,
// if heroes are invitable in tavern
"tavernInvite" : false,
// minimal primary skills for heroes
"minimalPrimarySkills": [ 0, 0, 1, 1]
},
"towns":
{
// How many new building can be built in a town per day
"buildingsPerTurnCap" : 1,
// Chances for a town with default buildings to receive corresponding dwelling level built in start
"startingDwellingChances": [100, 50],
// Enable spell research in mage guild
"spellResearch": false,
// Cost for an spell research (array index is spell tier)
"spellResearchCost": [
{ "gold": 1000, "wood" : 2, "mercury": 2, "ore": 2, "sulfur": 2, "crystal": 2, "gems": 2 },
{ "gold": 1000, "wood" : 4, "mercury": 4, "ore": 4, "sulfur": 4, "crystal": 4, "gems": 4 },
{ "gold": 1000, "wood" : 6, "mercury": 6, "ore": 6, "sulfur": 6, "crystal": 6, "gems": 6 },
{ "gold": 1000, "wood" : 8, "mercury": 8, "ore": 8, "sulfur": 8, "crystal": 8, "gems": 8 },
{ "gold": 1000, "wood" : 10, "mercury": 10, "ore": 10, "sulfur": 10, "crystal": 10, "gems": 10 }
],
// How much researchs/skips per day are possible? (array index is spell tier)
"spellResearchPerDay": [ 2, 2, 2, 2, 1 ],
// Exponent for increasing cost for each research (factor 1 disables this; array index is spell tier)
"spellResearchCostExponentPerResearch": [ 1.25, 1.25, 1.25, 1.25, 1.25 ]
},
"combat":
{
// defines dice size of a morale roll, based on creature's morale.
// Resulting chance is 1/(value). If list contains 0 values, option will be disabled
"goodMoraleDice" : [ 24, 12, 8 ],
"badMoraleDice" : [ 12, 6, 4],
// defines dice size of a luck roll, based on creature's luck
"goodLuckDice" : [ 24, 12, 8 ],
"badLuckDice" : [],
// every 1 attack point damage influence in battle when attack points > defense points during creature attack
"attackPointDamageFactor": 0.05,
// limit of damage increase that can be achieved by overpowering attack points
"attackPointDamageFactorCap": 4.0,
// every 1 defense point damage influence in battle when defense points > attack points during creature attack
"defensePointDamageFactor": 0.025,
// limit of damage reduction that can be achieved by overpowering defense points
"defensePointDamageFactorCap": 0.7,
// If set to true, double-wide creatures will trigger obstacle effect when moving one tile forward or backwards
"oneHexTriggersObstacles": false,
// Allow area shooters with SPELL_LIKE_ATTACK bonus such as liches or magogs to target empty hexes
"areaShotCanTargetEmptyHex" : false,
// Positions of units on start of the combat
// If battle does not defines specific configuration, 'default' configuration will be used
// Configuration must define either 'attackerUnits' list of 7 elements or both 'attackerUnitsLoose' and 'attackerUnitsTight' lists of 7 elements, 1..7 elements each
// Similarly, for defender configuration must have either 'defenderUnits' or both 'defenderUnitsLoose' and 'defenderUnitsTight'
"layouts" : {
"default" : {
"tacticsAllowed" : true,
"obstaclesAllowed" : true,
"attackerCommander" : 88,
"defenderCommander" : 98,
"attackerWarMachines" : [ 52, 18, 154, 120 ],
"defenderWarMachines" : [ 66, 32, 168, 134 ],
"attackerUnitsLoose": [
[ 86 ],
[ 35, 137 ],
[ 35, 86, 137 ],
[ 1, 69, 103, 171 ],
[ 1, 35, 86, 137, 171 ],
[ 1, 35, 69, 103, 137, 171 ],
[ 1, 35, 69, 86, 103, 137, 171 ]
],
"defenderUnitsLoose": [
[ 100 ],
[ 49, 151 ],
[ 49, 100, 151 ],
[ 15, 83, 117, 185 ],
[ 15, 49, 100, 151, 185 ],
[ 15, 49, 83, 117, 151, 185 ],
[ 15, 49, 83, 100, 117, 151, 185 ]
],
"attackerUnitsTight": [
[ 86 ],
[ 69, 103 ],
[ 69, 86, 103 ],
[ 35, 69, 103, 137 ],
[ 35, 69, 86, 103, 137 ],
[ 1, 35, 69, 103, 137, 171 ],
[ 1, 35, 69, 86, 103, 137, 171 ]
],
"defenderUnitsTight": [
[ 100 ],
[ 83, 117 ],
[ 83, 100, 117 ],
[ 49, 83, 117, 151 ],
[ 49, 83, 100, 117, 151 ],
[ 15, 49, 83, 117, 151, 185 ],
[ 15, 49, 83, 100, 117, 151, 185 ]
]
},
// Configuration for creature banks with single-tile enemies
"creatureBankNarrow" : {
"tacticsAllowed" : false,
"obstaclesAllowed" : false,
"attackerCommander" : 95,
"defenderCommander" : 8,
"attackerUnits": [ 57, 61, 90, 93, 96, 125, 129 ],
"defenderUnits": [ 15, 185, 172, 2, 100, 87, 8 ]
},
// Configuration for creature banks with double-wide enemies
"creatureBankWide" : {
"tacticsAllowed" : false,
"obstaclesAllowed" : false,
"attackerCommander" : 95,
"defenderCommander" : 8,
"attackerUnits": [ 57, 61, 90, 93, 96, 125, 129 ],
"defenderUnits": [ 15, 185, 171, 1, 100, 86, 8 ]
}
}
},
"creatures":
{
// creatures on map will grow by specified percentage each week
"weeklyGrowthPercent" : 10,
// creatures on map will not grow if their quantity is greater than this value
"weeklyGrowthCap" : 4000,
// if stack experience is on, creatures on map will get specified amount of experience daily
"dailyStackExperience" : 100,
// if enabled, double growth, plague and creature weeks can happen randomly. Has no effect on weeks by "Deity of Fire"
// NOTE: on HotA maps, this setting has no effect. Value provided in map will be used instead.
"allowRandomSpecialWeeks" : true,
// if enabled, every creature can get double growth month, ignoring predefined list
"allowAllForDoubleMonth" : false
},
"dwellings" :
{
// if enabled, neutral dwellings will accumulate creatures
"accumulateWhenNeutral" : false,
// if enabled, dwellings owned by players will accumulate creatures
"accumulateWhenOwned" : false,
// if enabled, game will attempt to merge slots in army on recruit if all slots in hero army are in use
"mergeOnRecruit" : true
},
"markets" :
{
// period between restocking of "Black Market" object found on adventure map
"blackMarketRestockPeriod" : 0
},
"banks" :
{
// show guards composition when visiting creature banks
"showGuardsComposition" : true
},
"modules":
{
// if enabled, creatures may collect experience (WoG feature)
"stackExperience": false,
// if enabled, certain artifacts can be granted to creatures (WoG feature)
"stackArtifact": false,
// if enabled, all heroes gain commander creature in battle (WoG feature)
"commanders": false
},
"pathfinder" :
{
// if enabled, pathfinder will build path through locations guarded by wandering monsters
"ignoreGuards" : false,
// if enabled, pathfinder will take use of any available boats
"useBoat" : true,
// if enabled, pathfinder will take use of any bidirectional monoliths
"useMonolithTwoWay" : true,
// if enabled, pathfinder will take use of one-way monolith that only have one known exit
"useMonolithOneWayUnique" : false,
// if enabled, pathfinder will take use of one-way monoliths with multiple exits.
"useMonolithOneWayRandom" : false,
// if enabled and hero has whirlpool protection effect, pathfinder will take use of whirpools
"useWhirlpool" : true,
// if enabled flying will work like in original game, otherwise nerf similar to HotA flying is applied
"originalFlyRules" : true
},
"spells":
{
// if enabled, dimension work doesn't work into tiles under Fog of War
"dimensionDoorOnlyToUncoveredTiles" : false,
// if enabled, dimension door will hint regarding tile being incompatible terrain type, unlike H3 (water/land)
"dimensionDoorExposesTerrainType" : false,
// if enabled, attempt to use dimension door on incompatible terrain (water/land) will result in spending of mana, movement and casts per day (H3 behavior)
"dimensionDoorFailureSpendsPoints" : true,
// if enabled, dimension door will initiate a fight upon landing on tile adjacent to neutral creature
"dimensionDoorTriggersGuards" : false,
// if enabled, dimension door can be used 1x per day, exception being 2x per day for XL+U or bigger maps (41472 tiles) + hero having expert air magic
"dimensionDoorTournamentRulesLimit" : false
},
"bonuses" :
{
"global" :
{
"spellDamage" :
{
"type" : "SPELL_DAMAGE",
"subtype" : "spellSchool.any",
"val" : 100,
"valueType" : "BASE_NUMBER"
},
"wisdom" :
{
"type" : "MAX_LEARNABLE_SPELL_LEVEL", //Hero can always learn level 1 and 2 spells
"val" : 2,
"valueType" : "BASE_NUMBER"
}
},
"perHero":
{
"manaRegeneration" :
{
"type" : "MANA_REGENERATION", //default mana regeneration
"val" : 1,
"valueType" : "BASE_NUMBER"
},
"sightRadius" :
{
"type" : "SIGHT_RADIUS", //default sight radius
"val" : 5,
"valueType" : "BASE_NUMBER"
},
"experienceGain" :
{
"type" : "HERO_EXPERIENCE_GAIN_PERCENT", //default hero xp
"val" : 100,
"valueType" : "BASE_NUMBER"
},
"manaPerKnowledge" :
{
"type" : "MANA_PER_KNOWLEDGE_PERCENTAGE", //1000% mana per knowledge
"val" : 1000,
"valueType" : "BASE_NUMBER"
},
"landMovement" :
{
"type" : "MOVEMENT", //Basic land movement
"subtype" : "heroMovementLand",
"val" : 1300,
"valueType" : "BASE_NUMBER",
"updater" : {
"type" : "ARMY_MOVEMENT", //Enable army movement bonus
"parameters" : [
20, // Movement points for lowest speed numerator
3, // Movement points for lowest speed denominator
10, // Resulting value, rounded down, will be multiplied by this number
700 // All army movement bonus cannot be higher than this value (so, max movement will be 1300 + 700 for this settings)
]
}
},
"seaMovement" :
{
"type" : "MOVEMENT", //Basic sea movement
"subtype" : "heroMovementSea",
"val" : 1500,
"valueType" : "BASE_NUMBER"
}
}
},
"interface" :
{
// Color transform to make color of brown DIBOX.PCX texture match color of specified player
"playerColoredBackground" :
{
"red" : [ 0.25, 0, 0, 1.25, 0.00, 0.00 ],
"blue" : [ 0, 0, 0, 0.45, 1.20, 4.50 ],
"tan" : [ 0.40, 0.27, 0.23, 1.10, 1.20, 1.15 ],
"green" : [ -0.27, 0.10, -0.27, 0.70, 1.70, 0.70 ],
"orange" : [ 0.47, 0.17, -0.27, 1.60, 1.20, 0.70 ],
"purple" : [ 0.12, -0.1, 0.25, 1.15, 1.20, 2.20 ],
"teal" : [ -0.13, 0.23, 0.23, 0.90, 1.20, 2.20 ],
"pink" : [ 0.44, 0.15, 0.25, 1.00, 1.00, 1.75 ]
}
}
}
}