This thread shall be used to share everything that is needed to make a map. Looked for things in this thread are the ones you don't find easily without knowing what to search for (specific programs, hex editing guides, etc.)! This post will be regularly updated with all relevant information.

This thread shall be used to share everything that is needed to make a map. Looked for things in this thread are the ones you dont find that easily without really knowing what to search for (specific programs, hex editing guides, etc.)! We still lack a topic in which all of that kind of knowledge is gathered, so this is it.

But for now, I am coming up with a request. Heroes 3 has some sprites built into it that never made it into the final game. Here are some of them:

I once had a map which held a vast amount of these objects, but it seems I lost it

Does anyone still have this (or a similar) map, or knows how to access these hidden objects? I'm really desperate by now...

Objects that can be added to the original SoD from left to right:
adcfra0.def
advmwind.def
avartif.def
avgnoll.def
avxmktt0.def
avxoblr.def
but probably there is one or two more.

It's rather simple and works without WoG. Open H3bitmap.lod with MMarchive. Find Objects.txt and extract it. After opening it, you will get something like this:

Just press Ctrl+f and write down name of similar object, which is available in editor (check for name in WoG editor in object's advanced properties or look for it in MMarchive). Copy whole line, paste below and change it's name to a desired one. Save "Objects.txt" and put to the "data" folder. Notice, that you can change type and passability of every object and your map will "remember" this change, even when you will change values in "objects.txt" once again. Thus, the same objects on your map can have different content! When your map is saved, remove "Objects.txt" from "data", so game won't crash.

Tadam! As you can see, sometimes objects (here original campfire) will have wrong animation and broken palette. That's when an old def file contains bitmaps with the same names as bitmaps inside our new def file. We can fix it by changing def's content, but it will work only for players which will receive a new def.

Except mentioned situations, all added original objects should work with our settings correctly on every Heroes copy, but they will be available only in our editor

{additional info}

Solid squares and entrances are saved from right to left, and from down to up. After every eight numbers in objects.txt starts a new row. Here is AVMwwhl0.def for example:

Columns described as "special objects" and "terrain objects" are responsible for a place in editor, where we can find object. In "Terrain objects" game looks for a value "1" from right to left, so AVMwwhl0.def can be find in Dirt, Grass and Swamp section.

Putting object to a special section is more complex: we should change values of "special objects", "terrain objects" and "b". The best way to do this, is to copy line of an object available in desired section and paste to our line If you need more details, this will work for sure:

This thread shall be used to share everything that is needed to make a map. Looked for things in this thread are the ones you dont find that easily without really knowing what to search for (specific programs, hex editing guides, etc.)! We still lack a topic in which all of that kind of knowledge is gathered, so this is it.

But for now, I am coming up with a request. Heroes 3 has some sprites built into it that never made it into the final game. Here are some of them:

I once had a map which held a vast amount of these objects, but it seems I lost it

Does anyone still have this (or a similar) map, or knows how to access these hidden objects? I'm really desperate by now...

Greets

Great idea, there is so much knowledge that isn't commonly available

You're in luck, our friends over at DF2 have prepared a WoGEditor with these files readily available at a click.

###

Some more from the Chinese... it seems you can use pretty much everything from H3sprite.lod

Player boat sprites with flags (not heroes) ABF03P.defA hero sprite facing north (not a hero) AH15_.defEmpty boat sprite AB03_.defArrows that point left then right - ugly but it's something arrow.def

Uhm, thank you for your detailed answer(edit:and also RoseKavalier who wrote back while I wrote this ), I have found a few more objects, which can be added to the game (and some are reallllly special ). I am now putting together a little something which I will download soon

For now: You can use everything from h3sprite.lod that has a .def as well as a .msk!

Time for a useful trick:

Biobob said:Creating hero without creatures in map editor

Let's create a hero without creatures. This hero will start as a ghost hero without any creatures in your map (=2000 Movement Points).

First, set a hero:

Now, navigate to the 'Creatures' tab, and check 'Customize':

Give your hero any amount of any unit (one stack, I chose Pikeman):

Now move to the 'Quantity' box and delete the number there:

When there is no number in the box, press 'Enter':

Check the result:

This hero now officially has no creatures After this procedure, the hero is safe now, you can safely close the box using the button in the menu and navigate all the tabs

Biobob said:Enhanced Map editor

Remember how much of a hassle it is to create heroes of level 868, 6424, etc.? At least I do. Luckily, someone made an enhanced version of the original heroes 3 map editor which can be used to assign a hero all useful levels with just one click

Unluckily, it does not allow you to put more than 9999 creatures in one stack when in the editor (or anything else the normal editor could not do for that matter, the ONLY change is the suggested experience values in hero screen). It still saves a lot of time when putting high level heroes on the map!

I tested out all the experience values, there were some new ones I had not used yet! These can be used as flexible values when trying to assign a hero specific primary stats!

It can be a quite annoying problem for mapmakers who want to diminish randomness to have at least 4 possible skills upon level up. Here is a "cooking recipe" to disable all of them!

Biobob said:

Disabling all secondary skills in a map

Tools neededNotepad++, get it here7-zip, get it hereNotepad++ Hex-Editor plugin, get it from within Notepad++ (Plugins -> Plugin Manager -> Show Plugin Manager -> HEX-Editor)Note that you can also use different tools, but these two are very simple to use and small in size

It will warn you of possible complications; ignore it: We know what we're doing (right?)

Note: If you can't see the file extensions, follow this graphic. Control Panel -> Appearance and Personalization -> File Explorer Options -> Change to 'View' Tab -> Uncheck 'Hide extensions for known file types'. For older versions of Windows, I suggest looking it up online

Step four: Check the result

Open the map in the editor and check the secondary skills:

Celebrate From here on, you can set any secondary skills you want, so it is not necessary to know the cody for all of them

For convenience, I have created No Secondaries Templates for all sizes

For now I will post something I have never seen discussed anywhere, unused sprites of water terrain that exist in unmodified SoD editor (original post):

Tiles in the .h3m format are represented by 7 bytes each, with the 1st byte determining terrain from 0-9 and the 2nd byte representing the sprite of that terrain.

In this screenshot I am using a map editor extension I made that allows selecting terrain tiles to hex edit tiles directly inside the map editor to set their terrain, roads, rivers by inputting the corresponding hex values, which allows making some stuff which is normally not possible.

What is shown is what water tiles (terrain 8) are displayed as when their sprite byte is set to high values just below 0xFF which are normally never used. Even without the hex editor extension the map will show up like this when loaded in unmodified SoD map editor without mods of any kind.

Yeah, they are quite...special. But the red ground created by the arrows I actually like a lot (aport from that it makes the map a little slow...). The other ones are pretty weird, but I have found a way to weave them into the story

Back to topic, today will be more programs:

Biobob said:Yet another useful editor: h3mtered

This program combines multiple useful design options for maps. It allows to resize maps, set terrain in any wished for way (although a bit unintuitive to use) and allows to preview combat terrain in an instant. Also you can copy and mirror terrain. It is a useful terraforming tool for specific cases!

Biobob said:H3rechner: A tool to check wheter a stack is upgraded or not

This is a very simple tool that allows the user to check wheter a specific tile has an upgraded creature, or not. If it says "geuppt", the toops will have an upgraded stack, if it says "nicht geuppt", they dont. Oberwelt means surface, unterwelt means subterranean.

This tool is probably known by most. It allows to check for battlefield obstacles in a very convenient way (pressing enter moves the highlighted area to the next box!).
Terrains: 1, 2, 4, 8, 16, 32, 64, 128, 256, f1, f2, f4, f8, f16, f32, f64, f128, f256, f512

AlexSPl has released a tool that allows the user to guarantee Morale events, which is very useful for map testing. ...I suggest however not going crazy with this (more than 2 times morale, which is already crazy), or map will become unplayable. It seems that the morale check doesnt for x64 machines however...

@potmdehex Thats a gorgeous find! Can you upload that modified editor of yours? Would be great!

About the renaming process: I tried editing the map without renaming and extracting first, but then it did not work for me, because values are different. Also, if I dont rename, windows wont let me extract from the map...
____________MapsThe Mapmaker's Thread

The .h3m extension uses a compression algorithm. For mere mortals, it's simpler to do hex-editing after unpacking the map because FFFF is 65,535 instead of looking for... I have no idea what to look for!

An example with the same map:

Unpacked .gz

Standard .h3m

@Biobob
AlexSpl's LMOracle works with x64, are you running as Administrator? I've used it to win some ridiculously impossible battles for testing purposes

The .h3m vs .7z stuff was mostly nitpicking, but to keep it constructive I recommend anyone who finds themselves often hex editing to make it as easy as possible to extract .h3ms, in any way they prefer.

7zip does not care about extensions (which also is why it manages to extract when incorrectly named to .7z), you can use both right click->extract or open them in the 7z file manager while they are still named .h3m. As RoseKavalier pointed out the correct extension would be .gz (don't worry man, we're all mortals who uncompress instead of looking at compressed data, I was just talking about renaming).

The best in my opinion if you are really hex editing a lot is to use a map editor extension that makes it save uncompressed directly, eliminating the extraction step. I made an extension that worked in conjunction with Hex Workshop that did this amongst other things. It would update the Hex Workshop view of the file whenever the map was saved, and would reload it in the map editor when F5 was pressed. It also marked the different parts of the .h3m format inside Hex Workshop.

I intend to release the unreleased map editor stuff I have at some point but it's in a messy state and was only ever meant to be used by myself when reverse engineering the .h3m format and developing h3mlib. In addition to my own stuff I am currently involved in several H3 mods/projects behind the scenes so it might take a while.

More on-topic:
Another thing I have never seen discussed and don't think anyone but me has ever realized is the possibility in unmodified H3 Complete/SoD to create objects that are hidden in the map editor but shown when the map is loaded in-game.

To do so is quite complex and something to be explained in detail at another time, but briefly speaking it can be achieved by manipulating the sprite names in the object attributes section so that the game stops parsing data as belonging to this section and begins interpreting the data as the start of the object details section, whereas the map editor is still treating it as part of the object attributes section and thus not showing any objects placed in this way. To make it clear, arbitrary code execution, which can also be achieved in .h3ms for unmodified SoD and used to do literally anyhing, is not needed for this.

potmdehex said:The .h3m vs .7z stuff was mostly nitpicking, but to keep it constructive I recommend anyone who finds themselves often hex editing to make it as easy as possible to extract .h3ms, in any way they prefer.

7zip does not care about extensions (which also is why it manages to extract when incorrectly named to .7z), you can use both right click->extract or open them in the 7z file manager while they are still named .h3m. As RoseKavalier pointed out the correct extension would be .gz (don't worry man, we're all mortals who uncompress instead of looking at compressed data, I was just talking about renaming).[...].

Well this is really nifty trick.

You are still a god and wizard to me! Although I do indeed worry less now

First, we're going to create a map and place something we want to edit beyond the normal limits.

###Step One - Finding the hex address to change###
For this example, we're going to break the '9999 creatures' cap on events.
Pick the creature you want... I will use Pikeman for example and set a number that is fairly unique. '1' is a poor choice but something like '9876' is quite unique!
Save the map and close it. Next, we need to unpack the map as it is stored in a gz format. One suitable program is 7zip, easy to find on any search engine. Use the unpacker to 'Extract' the map, this will unpack it from the compressed format.
This will create a file with the name of your map but no extension. Now we can begin hex editing! In order to do this, you can use any hex-editing software. Personally I simply use Notepad++ with the Hex-editor plugin because it's hassle-free. For simplicity, I will show it with Notepad++.
If you use this, trigger the plugin with Ctrl+Shft+Alt+H. We are now in the hex-editable part of the map.

Okay, remember our '9876', open up a hex-capable calculator and write 9876, converting and then convert it to hexadecimal.

The answer is 2694.

Now comes the tricky part... the hexadecimals are not stored in order. Each byte (2 digits) is placed in reverse order. Example: the hex number 1234567890 would be stored as 9078563412.
12 34 56 78 90
90 78 56 34 12Exception!!! If you have an odd number of digits, then add a 0 at the start and reverse it as before.Example: 617's hexadecimal is 269... so make it 0269 and we would look for 6902.

Back to our '9876' in hexadecimal as 2694.... it should be stored as 9426. Use the Search function to locate it...

###Step Two - Changing the hex address###
Now that we have found it, we have to figure out what we want to change it to!

Let's say we want... 20,000 pikeman. Use the calculator to find the corresponding hexadecimal: 4E20... reverse it to 204E.

Now change the text to 204E, save and close.

Use 7zip again to compress the file back into a '.gz' extension.

Now that is compressed again, change back the extension to '.h3m'.

There we go, 20,000 Pikeman event!

The possibilities are almost endless, you have to fool around to discover them. A lot of caps are multiples of 2, such as 2^31 (experience, gold), 2^15 (creatures in events, pandora) or 2^12 (wandering creatures).

For instance, you can have negative creatures join you since there is overflow after 32,767. Using FFFF (65,535) will yield -1 Pikeman

You can set negative primary stats in Seer huts if you're

Obviously, this is for SoD maps. You don't need this much trouble with WoG

Uau! Very interesting thread, thanks Biobob and RoseCavalier.
Did I understood correctly? I can add an object (from Freds Object Pack for instance) to the original sprites using just SoD and it will work in game but player will not be able to open it on the maps editor. Is that it?

bloodsucker said:Uau! Very interesting thread, thanks Biobob and RoseCavalier.
Did I understood correctly? I can add an object (from Freds Object Pack for instance) to the original sprites using just SoD and it will work in game but player will not be able to open it on the maps editor. Is that it?

For SoD it's a bit less functional because it's difficult to change stuff.

However with HDmod, you can place a .def sprite in /Data/ and give it a name that matches an existing object. The existing object will no longer be available as a sprite but if you place it in the map and load it in game, you will see the new sprite instead.

For example, I've extracted ZSnow001.def from ERA lod (the snowing animation). Then I renamed it icedelt4.def and placed it in /Data/. Now whenever I place the ice delta #4 in a map, it will appear as the snowing animation in game when using SoD. To remove this change, delete the .def in /Data/.

#####

I was wondering when I could make a new post in this thread - really dislike making 3 in a row

This is something I wish I had discovered much earlier. If you read my 'Empire of The World 2' rush, you might remember I had some issues with 'Creature of the Month' as I was playing in SoD.

Here is what it looks like if you have Chinese font (I don't, it just looks like a lot of ???????????).
With some pain, I was able to translate the text to figure out what does what - verified with trials obviously.
1) Month of the Serpent Fly;
2) Month of the Griffin;
3) Month of the Centaur;
4) Month of the Gremlin;
5) Month of the Hobgoblin;
6) Month of the Gog;
7) Month of the Troglodyte;
8) Month of the Harpy;
9) Month of the Lizardman;
10) Month of the Pegasus;
11) Month of the Wolf Rider;
12) Month of the Wight;

To remove the spawning creatures, click on the "Random month" button and then end your turn in game. You'll get a non-creature month like "month of the Ladybug".

Pressing any of the 12 numbered buttons will make it spawn that type of creatures!

Finally, you can also use this to get rid of Plagues in the same fashion.

This is really nice for dinosaurs who don't want to move to ERA + Safe SoD to enjoy the wonders of Turbo WoG.

Today we will learn about a different method of hex-editing, best suited for working with small values that are otherwise hard to find by the method described above by RoseKavalier. In the shown example, we will change the loss condition of a map to the end of the first day, which is normally not possible in the H3 editor!

Biobob said:~Hex-Editing: Comparing Values~

Tools neededHxD , grab it here7-Zip, grab it hereNote that you can also use different tools, but these two are very simple to use and small in size

Let's get going

Step one: Creating the maps

NOTE: Make sure to start the editor in administrator mode! Otherwise a small problem might occur later

Start by creating a small map without underground (for convenience reasons, we want as little a map as possible -> less values

Edit the loss condition to two days (you can find it under Tools -> Map Specifications -> Special Loss Condition):

Save the map (choose a logical name, like in the example below):

Then change the loss condition to three days (again Tools -> Map Specifications -> Special Loss Condition, I suggest you change it in the same map, so that as much information as possible is shared):

Save this map as well:

Step two: Preparing the maps for hex editor usage

Find your map in the explorer (Standard path is C:/Program Files (x86)/3DO/Heroes 3 Complete/Maps, if you don't find it, go toC:/Users/username/AppData/Local/VirtualStore/Program Files (x86)/3DO/Heroes 3 Complete/Maps, it means you did not start the editor in administrator mode (applies to newer versions of windows, for a little older ones, you can click a button 'show compatibility files' that does the same) and extract the files using 7-Zip (as learned above ):

Step three: Changing the values in hex editor

Open HxD.exe and load the two files that are now without an file extension (in my case '2' and '3'):

Analysis -> File-compare -> compare:

The two loaded files will be suggested by default:

Click F6 (or Analysis -> File-compare -> Next difference) until we hit a point of interest: two values at the same spot, with two different values '02' and '03' (note that there are several differences at the start of the file, surrounded by 'a wall' of FF values, those don't interest us, they will always be different but carry no significance for us):

Once we've found that spot, close one of the files, and rename the value of the other file to '01' (without the 'quotation marks', equals day one loss condition):

Save the file (I chose '1' for the name), then rename it back to .h3m extension:

Ignore the warning message...

Note: If you can't see the file extensions, follow this graphic. Control Panel -> Appearance and Personalization -> File Explorer Options -> Change to 'View' Tab -> Uncheck 'Hide extensions for known file types'. For older versions of Windows, I suggest looking it up online

Step four: Check the result

Let's see in the map editor...well, you can't really do that. Why? The H3 map editor does not allow for a loss condition of one day, so it will crash if you check the 'Special Loss Condition' tab:

Instead, check it ingame (need to add a hero to the finished map, or it won't be playable). Indeed, the loss condition changed to one day! A glorious thing for day-1 puzzle maps!

This method can be applied to all problems where values can not be easily changed or need to stay low, with the most important one being the one described here.