* Act 1X = 00 07 ;
Y = 90 8A ;
map 00 - in the room with the crystal bag
NPC Teleporting in generalTo change an NPC's location, you need to know their internal name. In some cases the internal name may correspond (in whole or in part) to the displayed name, and you may be able to find the coordinates by searching for that name. If the displayed name is not found, or occurs enough times that the right one is hard to sort out, the internal name can be found if you know the character's position. This procedure is described below.
As an example, I will use the imp Nixfix in act 4.
1) Make a backup of your latest save game folder, and/or the data.000 file within. This is a good practice before hex editing anything.
2) Open the data.000 file in a hex editor and search for the display name of the character. If it is not found, proceed to step 3b, otherwise 3a.
3a) If the name found is in a list of character names, as described above for the BF merchants, then check that it sounds reasonable (the name may indicate a certain act or location). If so, you have the internal name.
Searching for the text string 'Nixfix', the first instance will be in the name 'Academy_Tunnels_Nixfix49'. The next instance is in the pattern used to mark character data (including position), with the internal name followed by a number, then another instance of the internal name. After this there are a couple instances of 'Imp_Nixfix' and other variations, but none in the right pattern. This means the internal name is 'Academy_Tunnels_Nixfix'.
Proceed to step 4.
3b) Find a save where you have access to the NPC you want to teleport. It doesn't matter if this is from an earlier save or even from a different game. If a character moves around as part of the plot, then the save should be from a similar point as the one that requires teleporting, since they may have different internal names in different acts or locations.
* Load the save and have your hero stand as close as possible to the NPC, then save the game. In my example, I had my hero stand to the immediate right of Nixfix.
* Open the data.000 file from that new save, and search for the text string 'AgentsV' to find the hero's location. In my case it was
X = 60 27 ;
Y = 10 C4.
* The NPC's location is very close to the hero's. In each 2 byte coordinate, the first byte has much less of an effect, so if you can ignore it you can find the NPC's data. The hex editor XVI32 has a wildcard search feature that can allow you to do just that.
In XVI32's options on the Appearance tab, you may wish to change the 'Number of columns' from 17 to 16, and check 'Use Blank to Display Control Characters'.
The hero's location coordinates in this example are '60 27 00 00 10 C4'. The first byte of the X coordinate can be ignored simply by dropping it from the search term. In XVI32's search window, check the 'Joker char hex:' box (the default wildcard term is 2E), and replace the first byte of the hero's Y coordinate with the wildcard.
To find the coordinates for Nixfix in this example, search for the hex term '27 00 00 2E C4'. This will match the hero's coordinates and possibly other places in the data file.
* When you find the search term just under a 'Start Agent Save' (other than the hero's coordinates) then you have the coordinates of the NPC. Here is a
screenshot showing what this part of the data.000 file looks like for Nixfix.
Search for the term again (hotkey F3) and you will find it under the first 'FF' in a line of 'FF' (as described above for the character coordinates). Scroll down in the data file until you come to the bottom of the character data, marked by the internal name followed by a number and then the internal name again. Here is a
screenshot for Nixfix.
From the end of the character data, you find that the internal name is 'Academy_Tunnels_Nixfix'.
4) Now that you have the internal name, you can find and alter the coordinates (as described above for the BF merchants).
If searching for the displayed name worked to get the internal name, then you are already editing the data.000 file you need, and can simply search backwards in the file from the end of the character data for the first instance of 'Start Agent Save'.
If you needed a different save to determine the internal name, then you are done with that data.000 file. Open the data.000 file from the save with the missing or trapped NPC and search for the required instance of the internal name, as described above for the BF merchants.