Ultima VII Monsters

The following is taken from the Exult source code. It can be found on the Exult project discussion board.

Most of the file formats I have figured out by looking at and modifying the files, then running the game to see what happens. Of course "looking" doesn't mean just with a hex editor; I write simple programs that print out files in a table format. On the other hand, egg fields were not too difficult because (as I think I have mentioned) Serpent Isle has a cheat where you can press F9 and click on an egg to see all its info. If you press F9 in the Black Gate you can click on any item but it won't show the egg-specific data.

I have also discovered the format of the EQUIP.DAT file, which tells the game which items are given to monsters when they are created by eggs. As is common with Ultima 7, the first byte is a count of how many records in the file, with each record being 60 bytes. A record is simply an array of 10 elements of 6 bytes each, with each element describing a type of item:

So a monster can be given up to 10 types of items, with unused elements having a shape number of zero (other fields are zero too). Note that the quantity can apply to items which do not normally have a quantity, e.g. gems. Now you must be wondering how these records correspond to each type of monster...

We already know the purpose of MONSTER.DAT and that there are 25 bytes per records. There is still a lot in this file to decipher, but here is what I know:

(We already know about these fields)

ability flags:

From this you can see how to give items to newly spawned monsters (though this wouldn't really be useful until combat is implemented).

- Infidel