Map Data Monster Names

Monster names
The monster names block is not compressed. Each monster name is terminated by a 00h byte. Monster names can be splitted into a singular name and a plural name. This is done by separating the name into four parts. A 0Ah byte is used as the separator between each part. The first part is the left text which is used for singular and plural. The second part is the middle text used only for singular. The third part is the middle part used only for plural and the forth part is the right text used for singular and plural. Example:

Gunm ==\0A== a ==\0A== e ==\0A== n (Singular name: Gunman, Plural name: Gunmen)

Any part can be left blank. So if the plural name of a monster just has an additional 's' appended to the singular name then it may be encoded like this:

Cutthroat ==\0A== ==\0A== s ==\0A== (Singular name: Cutthroat, Plural name: Cutthroats)

If the monster has no plural name or the plural name is the same as the singular name then this 0Ah encoding is not necessary. Just write the plain text name.

Reading the monster names

 * 1) Seek to the offset of the monster names block. The offset can be found in the Central MSQ Directory.
 * 2) Calculate the number of monsters. This can be done by subtracting the monster data offset with the strings offset (Both offsets can be found in the Central MSQ Directory) and dividing the result with 8 (because each monster data block is 8 bytes long).
 * 3) Read characters until you hit the 00h separator.
 * 4) Repeat step 3 until you have the names of all monsters.
 * 5) You may notice that some maps have a FFh byte left. Currently the real purpose of this byte is unclear. I think the intention was to have a END-OF-NAMES marker. But it's useless because not all maps have this marker.

The first monster name (and also the first monster data in the monster data block) is always empty. Exceptions are maps with no monsters (like the derilict building maps). For these maps the monster name block and the monster data block is completely empty.