Browse Source

Added list of all identifiers from base game

Ivan Savenko 2 years ago
parent
commit
8210a2cafd

+ 31 - 32
config/schemas/spell.json

@@ -190,38 +190,37 @@
 			"description" : "Various flags",
 			"description" : "Various flags",
 			"additionalProperties" : false,
 			"additionalProperties" : false,
 			"properties" : {
 			"properties" : {
-					"indifferent" : {
-							"type" : "boolean",
-							"description" : "Spell is indifferent for target"
-					},
-					"negative" : {
-							"type" : "boolean",
-							"description" : "Spell is negative for target"
-					},
-					"positive" : {
-							"type" : "boolean",
-							"description" : "Spell is positive for target"
-					},
-					"damage" : {
-							"type" : "boolean",
-							"description" : "Spell does damage (direct or indirect)"
-					},
-					"offensive" : {
-							"type" : "boolean",
-							"description" : "Spell does direct damage (implicitly sets damage and negative)"
-					},
-					"rising" : {
-							"type" : "boolean",
-							"description" : "Rising spell (implicitly sets positive)"
-					},
-					"special" : {
-							"type" : "boolean",
-							"description" : "Special spell. Can be given only by BonusType::SPELL"
-					},
-					"nonMagical" : {
+				"indifferent" : {
 						"type" : "boolean",
 						"type" : "boolean",
-						"description" : "Non-magical ability. Usually used by some creatures. Should not be affected by sorcery and generic magic resistance. School resistances apply. Examples: dendroid bind, efreet fire shield."
-					}
+						"description" : "Spell is indifferent for target"
+				},
+				"negative" : {
+						"type" : "boolean",
+						"description" : "Spell is negative for target"
+				},
+				"positive" : {
+						"type" : "boolean",
+						"description" : "Spell is positive for target"
+				},
+				"damage" : {
+						"type" : "boolean",
+						"description" : "Spell does damage (direct or indirect)"
+				},
+				"offensive" : {
+						"type" : "boolean",
+						"description" : "Spell does direct damage (implicitly sets damage and negative)"
+				},
+				"rising" : {
+						"type" : "boolean",
+						"description" : "Rising spell (implicitly sets positive)"
+				},
+				"special" : {
+						"type" : "boolean",
+						"description" : "Special spell. Can be given only by BonusType::SPELL"
+				},
+				"nonMagical" : {
+					"type" : "boolean",
+					"description" : "Non-magical ability. Usually used by some creatures. Should not be affected by sorcery and generic magic resistance. School resistances apply. Examples: dendroid bind, efreet fire shield."
 				}
 				}
 			}
 			}
 		},
 		},
@@ -315,5 +314,5 @@
 			"type" : "boolean",
 			"type" : "boolean",
 			"description" : "If true, spell won't be available on a map without water"
 			"description" : "If true, spell won't be available on a map without water"
 		}
 		}
-	},
+	}
 }
 }

+ 778 - 0
docs/modders/Game_Identifiers.md

@@ -0,0 +1,778 @@
+< [Documentation](../Readme.md) / [Modding](Readme.md) / Game Identifiers
+
+## List of all game identifiers
+
+This is a list of all game identifiers available to modders. Note that only identifiers from base game have been included. For identifiers from mods please look up corresponding mod
+
+### artifact
+
+- artifact.admiralsHat
+- artifact.ambassadorsSash
+- artifact.ammoCart
+- artifact.amuletOfTheUndertaker
+- artifact.angelFeatherArrows
+- artifact.angelWings
+- artifact.angelicAlliance
+- artifact.armageddonsBlade
+- artifact.armorOfTheDamned
+- artifact.armorOfWonder
+- artifact.armsOfLegion
+- artifact.badgeOfCourage
+- artifact.ballista
+- artifact.birdOfPerception
+- artifact.blackshardOfTheDeadKnight
+- artifact.bootsOfLevitation
+- artifact.bootsOfPolarity
+- artifact.bootsOfSpeed
+- artifact.bowOfElvenCherrywood
+- artifact.bowOfTheSharpshooter
+- artifact.bowstringOfTheUnicornsMane
+- artifact.breastplateOfBrimstone
+- artifact.breastplateOfPetrifiedWood
+- artifact.bucklerOfTheGnollKing
+- artifact.capeOfConjuring
+- artifact.capeOfVelocity
+- artifact.cardsOfProphecy
+- artifact.catapult
+- artifact.celestialNecklaceOfBliss
+- artifact.centaurAxe
+- artifact.charmOfMana
+- artifact.cloakOfTheUndeadKing
+- artifact.cloverOfFortune
+- artifact.collarOfConjuring
+- artifact.cornucopia
+- artifact.crestOfValor
+- artifact.crownOfDragontooth
+- artifact.crownOfTheSupremeMagi
+- artifact.deadMansBoots
+- artifact.diplomatsRing
+- artifact.dragonScaleArmor
+- artifact.dragonScaleShield
+- artifact.dragonWingTabard
+- artifact.dragonboneGreaves
+- artifact.elixirOfLife
+- artifact.emblemOfCognizance
+- artifact.endlessBagOfGold
+- artifact.endlessPurseOfGold
+- artifact.endlessSackOfGold
+- artifact.equestriansGloves
+- artifact.everflowingCrystalCloak
+- artifact.everpouringVialOfMercury
+- artifact.eversmokingRingOfSulfur
+- artifact.firstAidTent
+- artifact.garnitureOfInterference
+- artifact.glyphOfGallantry
+- artifact.goldenBow
+- artifact.grail
+- artifact.greaterGnollsFlail
+- artifact.headOfLegion
+- artifact.hellstormHelmet
+- artifact.helmOfChaos
+- artifact.helmOfHeavenlyEnlightenment
+- artifact.helmOfTheAlabasterUnicorn
+- artifact.hourglassOfTheEvilHour
+- artifact.inexhaustibleCartOfLumber
+- artifact.inexhaustibleCartOfOre
+- artifact.ladybirdOfLuck
+- artifact.legsOfLegion
+- artifact.lionsShieldOfCourage
+- artifact.loinsOfLegion
+- artifact.mysticOrbOfMana
+- artifact.necklaceOfDragonteeth
+- artifact.necklaceOfOceanGuidance
+- artifact.necklaceOfSwiftness
+- artifact.ogresClubOfHavoc
+- artifact.orbOfDrivingRain
+- artifact.orbOfInhibition
+- artifact.orbOfSilt
+- artifact.orbOfTempestuousFire
+- artifact.orbOfTheFirmament
+- artifact.orbOfVulnerability
+- artifact.pendantOfCourage
+- artifact.pendantOfDeath
+- artifact.pendantOfDispassion
+- artifact.pendantOfFreeWill
+- artifact.pendantOfHoliness
+- artifact.pendantOfLife
+- artifact.pendantOfNegativity
+- artifact.pendantOfSecondSight
+- artifact.pendantOfTotalRecall
+- artifact.powerOfTheDragonFather
+- artifact.quietEyeOfTheDragon
+- artifact.recantersCloak
+- artifact.redDragonFlameTongue
+- artifact.ribCage
+- artifact.ringOfConjuring
+- artifact.ringOfInfiniteGems
+- artifact.ringOfLife
+- artifact.ringOfTheMagi
+- artifact.ringOfTheWayfarer
+- artifact.ringOfVitality
+- artifact.sandalsOfTheSaint
+- artifact.scalesOfTheGreaterBasilisk
+- artifact.seaCaptainsHat
+- artifact.sentinelsShield
+- artifact.shacklesOfWar
+- artifact.shieldOfTheDamned
+- artifact.shieldOfTheDwarvenLords
+- artifact.shieldOfTheYawningDead
+- artifact.skullHelmet
+- artifact.speculum
+- artifact.spellBook
+- artifact.spellScroll
+- artifact.spellbindersHat
+- artifact.sphereOfPermanence
+- artifact.spiritOfOppression
+- artifact.spyglass
+- artifact.statesmansMedal
+- artifact.statueOfLegion
+- artifact.stillEyeOfTheDragon
+- artifact.stoicWatchman
+- artifact.surcoatOfCounterpoise
+- artifact.swordOfHellfire
+- artifact.swordOfJudgement
+- artifact.talismanOfMana
+- artifact.targOfTheRampagingOgre
+- artifact.thunderHelmet
+- artifact.titansCuirass
+- artifact.titansGladius
+- artifact.titansThunder
+- artifact.tomeOfAirMagic
+- artifact.tomeOfEarthMagic
+- artifact.tomeOfFireMagic
+- artifact.tomeOfWaterMagic
+- artifact.torsoOfLegion
+- artifact.tunicOfTheCyclopsKing
+- artifact.unusedArtifact1
+- artifact.unusedArtifact2
+- artifact.unusedArtifact3
+- artifact.vampiresCowl
+- artifact.vialOfDragonBlood
+- artifact.vialOfLifeblood
+- artifact.wizardsWell
+
+### battlefield
+
+- battlefield.clover_field
+- battlefield.cursed_ground
+- battlefield.dirt_birches
+- battlefield.dirt_hills
+- battlefield.dirt_pines
+- battlefield.evil_fog
+- battlefield.fiery_fields
+- battlefield.grass_hills
+- battlefield.grass_pines
+- battlefield.holy_ground
+- battlefield.lava
+- battlefield.lucid_pools
+- battlefield.magic_clouds
+- battlefield.magic_plains
+- battlefield.rocklands
+- battlefield.rough
+- battlefield.sand_mesas
+- battlefield.sand_shore
+- battlefield.ship
+- battlefield.ship_to_ship
+- battlefield.snow_mountains
+- battlefield.snow_trees
+- battlefield.subterranean
+- battlefield.swamp_trees
+
+### creature
+
+- creature.airElemental
+- creature.airElementals
+- creature.ammoCart
+- creature.ancientBehemoth
+- creature.angel
+- creature.apprenticeGremlin
+- creature.archDevil
+- creature.archMage
+- creature.archangel
+- creature.archer
+- creature.arrowTower
+- creature.azureDragon
+- creature.ballista
+- creature.basilisk
+- creature.battleDwarf
+- creature.behemoth
+- creature.beholder
+- creature.blackDragon
+- creature.blackKnight
+- creature.boar
+- creature.boneDragon
+- creature.catapult
+- creature.cavalier
+- creature.centaur
+- creature.centaurCaptain
+- creature.cerberus
+- creature.champion
+- creature.chaosHydra
+- creature.crusader
+- creature.crystalDragon
+- creature.cyclop
+- creature.cyclopKing
+- creature.demon
+- creature.dendroidGuard
+- creature.dendroidSoldier
+- creature.devil
+- creature.diamondGolem
+- creature.dragonFly
+- creature.dreadKnight
+- creature.dwarf
+- creature.earthElemental
+- creature.efreet
+- creature.efreetSultan
+- creature.enchanter
+- creature.enchanters
+- creature.energyElemental
+- creature.evilEye
+- creature.fairieDragon
+- creature.familiar
+- creature.fireDragonFly
+- creature.fireElemental
+- creature.firebird
+- creature.firstAidTent
+- creature.genie
+- creature.ghostDragon
+- creature.giant
+- creature.gnoll
+- creature.gnollMarauder
+- creature.goblin
+- creature.goblinWolfRider
+- creature.goblins
+- creature.gog
+- creature.goldDragon
+- creature.goldGolem
+- creature.gorgon
+- creature.grandElf
+- creature.greaterBasilisk
+- creature.greenDragon
+- creature.gremlin
+- creature.griffin
+- creature.halberdier
+- creature.halfling
+- creature.harpy
+- creature.harpyHag
+- creature.hellHound
+- creature.hobgoblin
+- creature.hobgoblinWolfRider
+- creature.hornedDemon
+- creature.hydra
+- creature.iceElemental
+- creature.imp
+- creature.infernalTroglodyte
+- creature.ironGolem
+- creature.lich
+- creature.lightCrossbowman
+- creature.lizardWarrior
+- creature.lizardman
+- creature.mage
+- creature.magicElemental
+- creature.magmaElemental
+- creature.magog
+- creature.manticore
+- creature.marksman
+- creature.masterGenie
+- creature.masterGremlin
+- creature.medusa
+- creature.medusaQueen
+- creature.mightyGorgon
+- creature.minotaur
+- creature.minotaurKing
+- creature.monk
+- creature.mummy
+- creature.naga
+- creature.nagaQueen
+- creature.nomad
+- creature.obsidianGargoyle
+- creature.ogre
+- creature.ogreMage
+- creature.orc
+- creature.orcChieftain
+- creature.peasant
+- creature.pegasus
+- creature.phoenix
+- creature.pikeman
+- creature.pitFiend
+- creature.pitLord
+- creature.pixie
+- creature.pixies
+- creature.powerLich
+- creature.primitiveLizardman
+- creature.psychicElemental
+- creature.redDragon
+- creature.roc
+- creature.rogue
+- creature.royalGriffin
+- creature.rustDragon
+- creature.scorpicore
+- creature.serpentFly
+- creature.sharpshooter
+- creature.sharpshooters
+- creature.silverPegasus
+- creature.skeleton
+- creature.skeletonWarrior
+- creature.sprite
+- creature.stoneGargoyle
+- creature.stoneGolem
+- creature.stormElemental
+- creature.swordsman
+- creature.thunderbird
+- creature.titan
+- creature.troglodyte
+- creature.troll
+- creature.unicorn
+- creature.unused122
+- creature.unused124
+- creature.unused126
+- creature.unused128
+- creature.vampire
+- creature.vampireLord
+- creature.walkingDead
+- creature.warUnicorn
+- creature.waterElemental
+- creature.waterElementals
+- creature.wight
+- creature.woodElf
+- creature.wraith
+- creature.wyvern
+- creature.wyvernMonarch
+- creature.zealot
+- creature.zombie
+- creature.zombieLord
+
+### faction
+
+- faction.castle
+- faction.conflux
+- faction.dungeon
+- faction.fortress
+- faction.inferno
+- faction.necropolis
+- faction.neutral
+- faction.rampart
+- faction.stronghold
+- faction.tower
+
+### hero
+
+- hero.adela
+- hero.adelaide
+- hero.adrienne
+- hero.aenain
+- hero.aeris
+- hero.aine
+- hero.aislinn
+- hero.ajit
+- hero.alagar
+- hero.alamar
+- hero.alkin
+- hero.andra
+- hero.arlach
+- hero.ash
+- hero.astral
+- hero.axsis
+- hero.ayden
+- hero.boragus
+- hero.brissa
+- hero.broghild
+- hero.bron
+- hero.caitlin
+- hero.calh
+- hero.calid
+- hero.catherine
+- hero.charna
+- hero.christian
+- hero.ciele
+- hero.clancy
+- hero.clavius
+- hero.coronius
+- hero.cragHack
+- hero.cuthbert
+- hero.cyra
+- hero.dace
+- hero.damacon
+- hero.daremyth
+- hero.darkstorn
+- hero.deemer
+- hero.dessa
+- hero.dracon
+- hero.drakon
+- hero.edric
+- hero.elleshar
+- hero.erdamon
+- hero.fafner
+- hero.fiona
+- hero.fiur
+- hero.galthran
+- hero.gelare
+- hero.gelu
+- hero.gem
+- hero.geon
+- hero.gerwulf
+- hero.gird
+- hero.gretchin
+- hero.grindan
+- hero.gundula
+- hero.gunnar
+- hero.gurnisson
+- hero.halon
+- hero.ignatius
+- hero.ignissa
+- hero.ingham
+- hero.inteus
+- hero.iona
+- hero.isra
+- hero.ivor
+- hero.jabarkas
+- hero.jaegar
+- hero.jeddite
+- hero.jenova
+- hero.josephine
+- hero.kalt
+- hero.kilgor
+- hero.korbac
+- hero.krellion
+- hero.kyrre
+- hero.labetha
+- hero.lacus
+- hero.lordHaart
+- hero.lorelei
+- hero.loynis
+- hero.luna
+- hero.malcom
+- hero.malekith
+- hero.marius
+- hero.melodia
+- hero.mephala
+- hero.merist
+- hero.mirlanda
+- hero.moandor
+- hero.monere
+- hero.mutare
+- hero.mutareDrake
+- hero.nagash
+- hero.neela
+- hero.nimbus
+- hero.nymus
+- hero.octavia
+- hero.olema
+- hero.oris
+- hero.orrin
+- hero.pasis
+- hero.piquedram
+- hero.pyre
+- hero.rashka
+- hero.rion
+- hero.rissa
+- hero.roland
+- hero.rosic
+- hero.ryland
+- hero.sandro
+- hero.sanya
+- hero.saurug
+- hero.sephinroth
+- hero.septienna
+- hero.serena
+- hero.shakti
+- hero.shiva
+- hero.sirMullich
+- hero.solmyr
+- hero.sorsha
+- hero.straker
+- hero.styg
+- hero.sylvia
+- hero.synca
+- hero.tamika
+- hero.tazar
+- hero.terek
+- hero.thane
+- hero.thant
+- hero.theodorus
+- hero.thorgrim
+- hero.thunar
+- hero.tiva
+- hero.torosar 
+- hero.tyraxor
+- hero.tyris
+- hero.ufretin
+- hero.uland
+- hero.undeadHaart
+- hero.valeska
+- hero.verdish
+- hero.vey
+- hero.vidomina
+- hero.vokial
+- hero.voy
+- hero.wystan
+- hero.xarfax
+- hero.xeron
+- hero.xsi
+- hero.xyron
+- hero.yog
+- hero.zubin
+- hero.zydar
+
+### heroClass
+
+- heroClass.alchemist
+- heroClass.barbarian
+- heroClass.battlemage
+- heroClass.beastmaster
+- heroClass.cleric
+- heroClass.deathknight
+- heroClass.demoniac
+- heroClass.druid
+- heroClass.elementalist
+- heroClass.heretic
+- heroClass.knight
+- heroClass.necromancer
+- heroClass.overlord
+- heroClass.planeswalker
+- heroClass.ranger
+- heroClass.warlock
+- heroClass.witch
+- heroClass.wizard
+
+### playerColor
+
+- playerColor.blue
+- playerColor.green
+- playerColor.orange
+- playerColor.pink
+- playerColor.purple
+- playerColor.red
+- playerColor.tan
+- playerColor.teal
+
+### primSkill
+
+Deprected, please use primarySkill instead
+
+- primSkill.attack
+- primSkill.defence
+- primSkill.knowledge
+- primSkill.spellpower
+
+### primarySkill
+
+- primarySkill.attack
+- primarySkill.defence
+- primarySkill.knowledge
+- primarySkill.spellpower
+
+### resource
+
+- resource.crystal
+- resource.gems
+- resource.gold
+- resource.mercury
+- resource.mithril
+- resource.ore
+- resource.sulfur
+- resource.wood
+
+### river
+
+- river.iceRiver
+- river.lavaRiver
+- river.mudRiver
+- river.waterRiver
+
+### road
+
+- road.cobblestoneRoad
+- road.dirtRoad
+- road.gravelRoad
+
+### secondarySkill
+
+- secondarySkill.airMagic
+- secondarySkill.archery
+- secondarySkill.armorer
+- secondarySkill.artillery
+- secondarySkill.ballistics
+- secondarySkill.diplomacy
+- secondarySkill.eagleEye
+- secondarySkill.earthMagic
+- secondarySkill.estates
+- secondarySkill.fireMagic
+- secondarySkill.firstAid
+- secondarySkill.intelligence
+- secondarySkill.leadership
+- secondarySkill.learning
+- secondarySkill.logistics
+- secondarySkill.luck
+- secondarySkill.mysticism
+- secondarySkill.navigation
+- secondarySkill.necromancy
+- secondarySkill.offence
+- secondarySkill.pathfinding
+- secondarySkill.resistance
+- secondarySkill.scholar
+- secondarySkill.scouting
+- secondarySkill.sorcery
+- secondarySkill.tactics
+- secondarySkill.waterMagic
+- secondarySkill.wisdom
+
+### skill
+
+Deprected, please use secondarySkill instead
+
+- skill.airMagic
+- skill.archery
+- skill.armorer
+- skill.artillery
+- skill.ballistics
+- skill.diplomacy
+- skill.eagleEye
+- skill.earthMagic
+- skill.estates
+- skill.fireMagic
+- skill.firstAid
+- skill.intelligence
+- skill.leadership
+- skill.learning
+- skill.logistics
+- skill.luck
+- skill.mysticism
+- skill.navigation
+- skill.necromancy
+- skill.offence
+- skill.pathfinding
+- skill.resistance
+- skill.scholar
+- skill.scouting
+- skill.sorcery
+- skill.tactics
+- skill.waterMagic
+- skill.wisdom
+
+### spell
+
+- spell.acidBreath
+- spell.acidBreathDamage
+- spell.age
+- spell.airElemental
+- spell.airShield
+- spell.animateDead
+- spell.antiMagic
+- spell.armageddon
+- spell.berserk
+- spell.bind
+- spell.bless
+- spell.blind
+- spell.bloodlust
+- spell.castleMoat
+- spell.castleMoatTrigger
+- spell.catapultShot
+- spell.chainLightning
+- spell.clone
+- spell.counterstrike
+- spell.cure
+- spell.curse
+- spell.cyclopsShot
+- spell.deathCloud
+- spell.deathRipple
+- spell.deathStare
+- spell.destroyUndead
+- spell.dimensionDoor
+- spell.disease
+- spell.disguise
+- spell.dispel
+- spell.dispelHelpful
+- spell.disruptingRay
+- spell.dungeonMoat
+- spell.dungeonMoatTrigger
+- spell.earthElemental
+- spell.earthquake
+- spell.fireElemental
+- spell.fireShield
+- spell.fireWall
+- spell.fireWallTrigger
+- spell.fireball
+- spell.firstAid
+- spell.fly
+- spell.forceField
+- spell.forgetfulness
+- spell.fortressMoat
+- spell.fortressMoatTrigger
+- spell.fortune
+- spell.frenzy
+- spell.frostRing
+- spell.haste
+- spell.hypnotize
+- spell.iceBolt
+- spell.implosion
+- spell.inferno
+- spell.infernoMoat
+- spell.infernoMoatTrigger
+- spell.landMine
+- spell.landMineTrigger
+- spell.lightningBolt
+- spell.magicArrow
+- spell.magicMirror
+- spell.meteorShower
+- spell.mirth
+- spell.misfortune
+- spell.necropolisMoat
+- spell.necropolisMoatTrigger
+- spell.paralyze
+- spell.poison
+- spell.prayer
+- spell.precision
+- spell.protectAir
+- spell.protectEarth
+- spell.protectFire
+- spell.protectWater
+- spell.quicksand
+- spell.rampartMoat
+- spell.rampartMoatTrigger
+- spell.removeObstacle
+- spell.resurrection
+- spell.sacrifice
+- spell.scuttleBoat
+- spell.shield
+- spell.slayer
+- spell.slow
+- spell.sorrow
+- spell.stoneGaze
+- spell.stoneSkin
+- spell.strongholdMoat
+- spell.strongholdMoatTrigger
+- spell.summonBoat
+- spell.summonDemons
+- spell.teleport
+- spell.thunderbolt
+- spell.titanBolt
+- spell.towerMoat
+- spell.townPortal
+- spell.viewAir
+- spell.viewEarth
+- spell.visions
+- spell.waterElemental
+- spell.waterWalk
+- spell.weakness
+
+### spellSchool
+
+- spellSchool.air
+- spellSchool.any
+- spellSchool.earth
+- spellSchool.fire
+- spellSchool.water
+
+### terrain
+
+- terrain.dirt
+- terrain.grass
+- terrain.lava
+- terrain.rock
+- terrain.rough
+- terrain.sand
+- terrain.snow
+- terrain.subterra
+- terrain.swamp
+- terrain.water

+ 8 - 0
docs/modders/Translations.md

@@ -48,6 +48,7 @@ VCMI contains several new strings, to cover functionality not existing in Heroes
 - In-game texts, most noticeably - in-game settings menu.
 - In-game texts, most noticeably - in-game settings menu.
 - Game Launcher
 - Game Launcher
 - Map Editor
 - Map Editor
+- Android Launcher
 
 
 Before you start, make sure that you have copy of VCMI source code. If you are not familiar with git, you can use Github Desktop to clone VCMI repository.
 Before you start, make sure that you have copy of VCMI source code. If you are not familiar with git, you can use Github Desktop to clone VCMI repository.
 
 
@@ -72,6 +73,13 @@ VCMI Launcher and Map Editor use translation system provided by Qt framework so
 
 
 Translation of Map Editor is identical, except for location of translation files. Open `<VCMI Sources>/editor/translation/` instead to translate Map Editor
 Translation of Map Editor is identical, except for location of translation files. Open `<VCMI Sources>/editor/translation/` instead to translate Map Editor
 
 
+TODO: how to test translation locally
+
+### Translation of Android Launcher
+
+TODO
+see https://github.com/vcmi/vcmi/blob/develop/android/vcmi-app/src/main/res/values/strings.xml
+
 ### Submitting changes
 ### Submitting changes
 
 
 Once you have finished with translation you need to submit these changes to vcmi team using git or Github Desktop
 Once you have finished with translation you need to submit these changes to vcmi team using git or Github Desktop

+ 35 - 6
lib/modding/IdentifierStorage.cpp

@@ -355,16 +355,45 @@ void CIdentifierStorage::finalize()
 			errorsFound = true;
 			errorsFound = true;
 	}
 	}
 
 
+	debugDumpIdentifiers();
+
 	if (errorsFound)
 	if (errorsFound)
-	{
-		for(const auto & object : registeredObjects)
-		{
-			logMod->trace("%s : %s -> %d", object.second.scope, object.first, object.second.id);
-		}
 		logMod->error("All known identifiers were dumped into log file");
 		logMod->error("All known identifiers were dumped into log file");
-	}
+
 	assert(errorsFound == false);
 	assert(errorsFound == false);
 	state = ELoadingState::FINISHED;
 	state = ELoadingState::FINISHED;
+
+}
+
+void CIdentifierStorage::debugDumpIdentifiers()
+{
+	logMod->trace("List of all registered objects:");
+
+	std::map<std::string, std::vector<std::string>> objectList;
+
+	for(const auto & object : registeredObjects)
+	{
+		size_t categoryLength = object.first.find('.');
+		assert(categoryLength != std::string::npos);
+
+		std::string objectCategory = object.first.substr(0, categoryLength);
+		std::string objectName = object.first.substr(categoryLength + 1);
+
+		objectList[objectCategory].push_back("[" + object.second.scope + "] " + objectName);
+	}
+
+	for(auto & category : objectList)
+		boost::range::sort(category.second);
+
+	for(const auto & category : objectList)
+	{
+		logMod->trace("");
+		logMod->trace("### %s", category.first);
+		logMod->trace("");
+
+		for(const auto & entry : category.second)
+			logMod->trace("- " + entry);
+	}
 }
 }
 
 
 VCMI_LIB_NAMESPACE_END
 VCMI_LIB_NAMESPACE_END

+ 3 - 0
lib/modding/IdentifierStorage.h

@@ -65,6 +65,9 @@ class DLL_LINKAGE CIdentifierStorage
 
 
 	ELoadingState state = ELoadingState::LOADING;
 	ELoadingState state = ELoadingState::LOADING;
 
 
+	/// Helper method that dumps all registered identifier into log file
+	void debugDumpIdentifiers();
+
 	/// Check if identifier can be valid (camelCase, point as separator)
 	/// Check if identifier can be valid (camelCase, point as separator)
 	static void checkIdentifier(std::string & ID);
 	static void checkIdentifier(std::string & ID);