Json defines

I was looking around in json defines for creatures, factions, artifacts… There are some names there that are not the same as in H3 Complete English version.

Was not the plan that everything remains the same like in the base game?

For example in tower.json creatures are all mixed up.

Unfortunately, this is how they were called in original config files. Name ID is something very different from text displayed in-game. This text is also subjetc to translation, while internal string ID remains fixed forever.

Wouldn’t it be better for future modders if “latest” names would be used? If the old names are still needed for some legacy reasons a mapping file would be better.

PS. Do not mind me poking around. I would like to help but I prefer to look around for a time until I find a part I would like/fit.

Possible. File creatures.json defines this list of names. Any of these names can be used in config files, first name will be used as main one.

So this is a matter of config files editing. A lot of config file editing unless automated one way or another. Feel free to do this if you think this is important.

And yes - these names are needed at least to parse heroes armies. You can “test” if the name is used by removing it and starting the game - loading will fail if any names are missing

There are helper tools for replacing text in multiple files. And it should be done because apart from cryptic names like Calif and Naga Sentinel you will preserve much trickier stuff like: Stone golem being the name for Iron Golem and Vice versa.

{
			"name": "StoneGolem",
			"attack": "IGLMATTK.wav",
			"defend": "IGLMDFND.wav",
			"killed": "IGLMKILL.wav",
			"move": "IGLMMOVE.wav",
			"wince": "IGLMWNCE.wav"
		},

I will go and edit these and will ask for permission before commit.

Or (as in my case) text editor with macro support :slight_smile:

It is quite likely that some of H3 files use it in this way - make sure that this won’t break the game.

"name": "StoneGolem",

It’s better to have it as “ironGolem”/“stoneGolem” just like all other ID’s

And since creature sounds file is also vcmi config you can merge it with creatures.json (if you have coding skills)

I have renamed the creatures to H3 “standard”… small problem:

Data/HOTRAITS.TXT uses the old names. I think it is from WoG. (I do not understand exactly how game files are used.) the problem is like I expected the inverse names for golems (stone is iron iron is stone). I cannot get around that one.

My solution would be to Move HOTRAITS.TXT to VCMI essentials mod and rename the creatures there. How does this work? Do I just move the file there and it is automatically found?

Yes - you can move this file to data directory (Data/, Mods/VCMI/Data, Mods/WoG/Data) and it will be found by the game.

But I’d like to keep loading files from H3 if possible. Maybe in this case we should keep it as it for now (IronGolem being ID for stone golems) and then add one more feature to modding system - modifying already present objects.
This will allow to replace all heroes that have incorrect armies without replacing entire file (take a look on camplaign heroes - some of them like Mutare Drake obviously have incorrect army).
And this solution will be more generic - all mods will be able to use it without interfering with each other.

This was my question. If a redefinition is found how is it handled. I will leave it for now until this is implemented.

Attached are the files maybe they will be of some use later.
CorrectCreatureNames.zip (32.3 KB)

In r3078 I added possibility to resolve bonus subtype by string identifier. Artifact config now uses these.

So now you can type

				{
					"subtype" : "spell.curse",
					"type" : "OPENING_BATTLE_SPELL",
					"val" : 50,
					"valueType" : "BASE_NUMBER"
				},

as well as

		"birdOfPerception":
		{
			"bonuses" : 
				{
					"subtype" : "skill.eagleEye",
					"type" : "SECONDARY_SKILL_PREMY",
					"val" : 5,
					"valueType" : "ADDITIVE_VALUE"
				}
			],
			"id" : 63,
			"type" : "Hero"
		},

And it will work, keeping backward compatibility with numeric identifiers :slight_smile: