Jump to content


Photo

Creatures' strings messd up


  • Please log in to reply
30 replies to this topic

#1 melkor_morgoth75

melkor_morgoth75

    Lord

  • Modder
  • 1509 posts

Posted 30 March 2006 - 10:50 PM

I noticed after Scalner had post his problems in "monster again" toic in BP+BGT forum that there are LOT of problems with strings references for a lot of creatures.

For now (unfortunately i don't have so much time) i found:

- Dire wolf & Dread wolf --> some of those cre files have weird dialogue associated to battel_cry, dead and target references
- Hobgoblins --> near ALL hobgoblins version has the same problem as above!
- Ghoul --> IDEM
- Ghast --> a couple of them same problem

I didn't check many creatures (just the ones i'm encountering in the game) but i feel i'll see LOT of these problems with many others in future. Anyway i noticed that the "basic" creature has those problems (so for example BH Ghast has no weird entries).

Is it something related to the fact the BP is beta ... or something else? Has anyone else noticed those above?

mm75

Tired of the same boring spawned creatures u face in BG? Try BGSpawn


#2 Promilus

Promilus
  • Member
  • 378 posts

Posted 30 March 2006 - 11:51 PM

Yeah...I saw A Ghast oproaching to me (hostile) with words like "I don't want to hurt you!" , hahaha :D
Or hobgoblins: "you killed our friend and now u will die" or something like that.

#3 horred the plague

horred the plague

    Scourge of the Seven Seas

  • Modder
  • 1899 posts

Posted 31 March 2006 - 01:10 AM

Yeah...I saw A Ghast oproaching to me (hostile) with words like "I don't want to hurt you!" , hahaha :D
Or hobgoblins: "you killed our friend and now u will die" or something like that.



It's the exact same thing I reported before. There are ~2500 CRE files left in this package (out of >4000); 90%+ of them need to be hex-patched. I imagine that, if somebody experimented, the old BP-classic master TLK file would have these things back to normal. Everything else would be screwed up, but... :rolleyes:

#4 melkor_morgoth75

melkor_morgoth75

    Lord

  • Modder
  • 1509 posts

Posted 31 March 2006 - 01:29 AM

It's the exact same thing I reported before. There are ~2500 CRE files left in this package (out of >4000); 90%+ of them need to be hex-patched. I imagine that, if somebody experimented, the old BP-classic master TLK file would have these things back to normal. Everything else would be screwed up, but... :rolleyes:


Fair enough Horred, just to know ... i'm fixing those strings as soon as i get them during the game. Just a quick question if possible ... Are only the associated texts wrong or could be .cre files have some more bugs/missings due to hex-patching?

mm75

Tired of the same boring spawned creatures u face in BG? Try BGSpawn


#5 horred the plague

horred the plague

    Scourge of the Seven Seas

  • Modder
  • 1899 posts

Posted 31 March 2006 - 01:56 AM

Fair enough Horred, just to know ... i'm fixing those strings as soon as i get them during the game. Just a quick question if possible ... Are only the associated texts wrong or could be .cre files have some more bugs/missings due to hex-patching?


The text is wrong, yet the other things (except XP*) are "right". This is why the bare files remain. Many CRE files have beefed-up stats, or new/different spells/items/effects, bugfixes from original game, new script lineups, and so on. Much of this is part of what made BP..."BP". ;)

* I'm in-process of removing the altered XP awards from BP itself, in favor of the DefJam XP mod. If it was just XP to do, it would already be done.... :rolleyes:


The good news: this is probably the singlemost remaining buggy issue with BP-weidu BETA. When the overwrite files are gone, and the hex-patch coding is done properly....hehehehe. NTM my final plans for this scriptset.

#6 -Xerxandi-

-Xerxandi-
  • Guest

Posted 07 April 2006 - 04:29 AM


Fair enough Horred, just to know ... i'm fixing those strings as soon as i get them during the game. Just a quick question if possible ... Are only the associated texts wrong or could be .cre files have some more bugs/missings due to hex-patching?


The text is wrong, yet the other things (except XP*) are "right". This is why the bare files remain. Many CRE files have beefed-up stats, or new/different spells/items/effects, bugfixes from original game, new script lineups, and so on. Much of this is part of what made BP..."BP". ;)

* I'm in-process of removing the altered XP awards from BP itself, in favor of the DefJam XP mod. If it was just XP to do, it would already be done.... :rolleyes:

The good news: this is probably the singlemost remaining buggy issue with BP-weidu BETA. When the overwrite files are gone, and the hex-patch coding is done properly....hehehehe. NTM my final plans for this scriptset.

Seeing these kind of problems have stopped me dead in my game-tracks looking for what I may have installed wrong over the last couple of weeks, can any of you give a brief summary/tutorial on how we might be able to help fix these problems?

I have limited programing experience, hardly any experience with modding, and haven't touched a hex editor seriously for years, but...

It would give me a good reason to continue to play my current install of BP if I were able to "weed" out any other similar bugs to the abovementioned. If I can get an example of how to fix/hex-patch Hull, or the Direwolves, or Ghasts or any other of the ~2500 CRE files mentioned...

I'm just asking in case there's anything I can do to help to save you time in solving these remaining string "bugs" with BP. If I can't help I'll just wait eagerly for the finished version of BP. :D

Anyway I for one am looking forward to seeing these problems fixed. Sorry to be a pain. I'm really just asking if there's anything I can try to do to help. Cheers. :cheers:

#7 horred the plague

horred the plague

    Scourge of the Seven Seas

  • Modder
  • 1899 posts

Posted 07 April 2006 - 05:09 AM



Fair enough Horred, just to know ... i'm fixing those strings as soon as i get them during the game. Just a quick question if possible ... Are only the associated texts wrong or could be .cre files have some more bugs/missings due to hex-patching?


The text is wrong, yet the other things (except XP*) are "right". This is why the bare files remain. Many CRE files have beefed-up stats, or new/different spells/items/effects, bugfixes from original game, new script lineups, and so on. Much of this is part of what made BP..."BP". ;)

* I'm in-process of removing the altered XP awards from BP itself, in favor of the DefJam XP mod. If it was just XP to do, it would already be done.... :rolleyes:

The good news: this is probably the singlemost remaining buggy issue with BP-weidu BETA. When the overwrite files are gone, and the hex-patch coding is done properly....hehehehe. NTM my final plans for this scriptset.

Seeing these kind of problems have stopped me dead in my game-tracks looking for what I may have installed wrong over the last couple of weeks, can any of you give a brief summary/tutorial on how we might be able to help fix these problems?

I have limited programing experience, hardly any experience with modding, and haven't touched a hex editor seriously for years, but...

It would give me a good reason to continue to play my current install of BP if I were able to "weed" out any other similar bugs to the abovementioned. If I can get an example of how to fix/hex-patch Hull, or the Direwolves, or Ghasts or any other of the ~2500 CRE files mentioned...

I'm just asking in case there's anything I can do to help to save you time in solving these remaining string "bugs" with BP. If I can't help I'll just wait eagerly for the finished version of BP. :D

Anyway I for one am looking forward to seeing these problems fixed. Sorry to be a pain. I'm really just asking if there's anything I can try to do to help. Cheers. :cheers:



Well, the only true help would be from somebody who already knows Weidu coding well enough to hex-patch these files.

The procedure: You have to compare the unmodded ToB-patched version of the file with the one in the BP/CRE folder. If it doesn't exist in ToB-patched, try and track down where it came from. All files that exist in ToB-patched and BP need to be hex-patched.

If it doesn't exist in TDD,SoS, BGT, or TS--then run a search to see if/where it is used in game. If it is not used, discard it. If it is used, it doesn't need hex-patching (it can be copied "as is").

The next version of BP will most likely NOT address this. My emphasis on the next version is to overhaul the scripts, after making a new "Scriptable Stats" package.

#8 -Guest-

-Guest-
  • Guest

Posted 07 April 2006 - 05:28 AM

The procedure: You have to compare the unmodded ToB-patched version of the file with the one in the BP/CRE folder. If it doesn't exist in ToB-patched, try and track down where it came from. All files that exist in ToB-patched and BP need to be hex-patched.

If it doesn't exist in TDD,SoS, BGT, or TS--then run a search to see if/where it is used in game. If it is not used, discard it. If it is used, it doesn't need hex-patching (it can be copied "as is").

The next version of BP will most likely NOT address this. My emphasis on the next version is to overhaul the scripts, after making a new "Scriptable Stats" package.

Ok, that's a clear enough rule for which files to hex-patch. Have you got any leads as to where I should start if I'm going to understand the process of hex-patching in terms of WeiDU context? And what editor would your recommend using for this hex-patching?

If you can't easily give an example of a before/after patched CRE file I'd appreciate just a lead as to where to get started, and I'll see if I can make some silent progress... but an example of the complexity would be great & maybe we could shoot down one of the files in the process. Thanks.

#9 horred the plague

horred the plague

    Scourge of the Seven Seas

  • Modder
  • 1899 posts

Posted 07 April 2006 - 05:38 AM


The procedure: You have to compare the unmodded ToB-patched version of the file with the one in the BP/CRE folder. If it doesn't exist in ToB-patched, try and track down where it came from. All files that exist in ToB-patched and BP need to be hex-patched.

If it doesn't exist in TDD,SoS, BGT, or TS--then run a search to see if/where it is used in game. If it is not used, discard it. If it is used, it doesn't need hex-patching (it can be copied "as is").

The next version of BP will most likely NOT address this. My emphasis on the next version is to overhaul the scripts, after making a new "Scriptable Stats" package.

Ok, that's a clear enough rule for which files to hex-patch. Have you got any leads as to where I should start if I'm going to understand the process of hex-patching in terms of WeiDU context? And what editor would your recommend using for this hex-patching?

If you can't easily give an example of a before/after patched CRE file I'd appreciate just a lead as to where to get started, and I'll see if I can make some silent progress... but an example of the complexity would be great & maybe we could shoot down one of the files in the process. Thanks.


Look in the Setup-BPv176.tp2 for examples. Several hundred have already been patched. Go down~halfway into the file to find these.

King Diamond has also made some wonderful "shortcut" systems, which you can view at the very top of the file. These are for memorised spells, and proficiency effects. There are likely several hundred CRE's in ToB-patched that also could use this proficiency effect, but were never accounted for in BP package.

#10 -Xerxandi-

-Xerxandi-
  • Guest

Posted 08 April 2006 - 03:51 PM

Look in the Setup-BPv176.tp2 for examples. Several hundred have already been patched. Go down~halfway into the file to find these.

Ok, I've made some progress in understanding this I think... I could be completely off track so I'm looking for any tips:

Concentrating on the HULL example,

First I've opened up Patched-TOB HULL.CRE in Near Infinity after extracting it from the Biff, and also opened up the BP/CRE version of HULL.CRE. In comparing the two I note a difference in the "Default Script" field (was "WTASIGHT" in original & is "WDASIGHT" in BP) as well as in the "XP Value" field... as you mentioned you're removing the altered XP awards in BP I'll ignore the "XP Value" field, but to "hex-patch" the Default Script difference I work out the position of this part in the original HULL.CRE and patch in the change, effectively by changing the line in the BP tp2 file from:

COPY ~BPv176/CRE/HULL.CRE~ ~override/HULL.CRE~

to

COPY_EXISTING ~HULL.CRE~ ~override~
WRITE_ASCII 0x268 ~WDASIGHT~ #8
BUT_ONLY_IF_IT_CHANGES

Is this correct?

There also seem to be a whole bunch of other differences like the fields "Effect Flag", "Sound: INITIAL MEETING" and other "Sound: " fields with which there are differences, but I don't yet know if these differences need to be patched or not..

At first I had been doing my comparing of the two versions of hull.cre in a hex editor, and had noticed many more differences, like even the first line of the file is "CRE V1.01?..1?.." in the original compared with "CRE V1.0.<...<.." in BP.

Am I looking to patch ALL differences or just those obvious game fields like I see in an IE file viewer like Near Infinity?

Understanding WeiDU seems straight-forward to me, but as far as knowing what differences to patch I'm completely at sea right now, So if you guys could give me a bit of instruction and don't think I'm completely wasting time here I might get the hang of it ;)

#11 horred the plague

horred the plague

    Scourge of the Seven Seas

  • Modder
  • 1899 posts

Posted 08 April 2006 - 07:04 PM

Your code is correct. The differences you see in the greetings are the cause of the parse errors.

I decided on simply removing hull from the list of modded npc's; but you are on the right track here. However--the scripts have changed in BP-weidu. The proper script would actually be BPWDASGT. You can find the changed script referrences in BPv176/BPSCRIPT.2DA file. Most are done automatically, with the exception of any of the "W" series (I made nine version out of 3 scripts, these have to be dealt with specially). True WTASIGHT references are converted automatically at the very end, to BPWTASGT.

#12 Intox

Intox
  • Member
  • 32 posts

Posted 28 April 2006 - 04:31 PM

Ok, Xerxandi here with a registered name now...

I've been working on and off for the last few weeks on automating the generation of the TP2 required to patch these creatures. It's been educational, though perhaps fruitless.... we shall see!

I'm now at the stage where I want to ask for some advice/answers from Horred to see if I can finish it up.

My program (which is written in python) compares all the .CRE files in one (NEW_CREATURES) directory with those in another (ORIGINAL_CREATURES), looks for differences, and attempts to output the correct TP2/WeiDU code to patch the original.

Example output of running the program on a small batch of CRE files (just those from TOB-PATCHED/BP-WEIDU starting with the letter "H") gives the following:

COPY_EXISTING ~HABIB.CRE~ ~override~
WRITE_LONG 0x14 ~76~ // XP
WRITE_ASCII 0x268 ~CBERS20B~ #8 // Default
REMOVE_KNOWN_SPELL ~SPIN117~
ADD_KNOWN_SPELL ~SPCL321~ ~0~ ~INNATE~
REMOVE_MEMORIZED_SPELL ~SPIN117~
//ADD_MEMORIZED_SPELL ~SPCL321~ ~1~ // ------ for the future WeiDU
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HABIB2.CRE~ ~override~
WRITE_LONG 0x14 ~60~ // XP
WRITE_ASCII 0x268 ~WDASIGHT~ #8 // Default
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HABREGA.CRE~ ~override~
WRITE_ASCII 0x260 ~BPPLOT~ #8 // General
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HAEGAN.CRE~ ~override~
WRITE_LONG 0x14 ~970~ // XP
WRITE_ASCII 0x268 ~WBASIGHT~ #8 // Default
ADD_CRE_ITEM ~SCRLSLV2~ #0 #0 #0 ~NONE~ ~INV8~
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HAJANOS.CRE~ ~override~
WRITE_ASCII 0x260 ~BPBARD~ #8 // General
WRITE_ASCII 0x268 ~WDASIGHT~ #8 // Default
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HAKSU.CRE~ ~override~
WRITE_LONG 0x8 ~46138~ // LongName
WRITE_BYTE 0x271 ~255~ // IDSGeneral
WRITE_BYTE 0x273 ~174~ // IDSClass
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HAMASU.CRE~ ~override~
WRITE_ASCII 0x2cc ~~ #8 // Dlg
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HAMEK.CRE~ ~override~
WRITE_ASCII 0x250 ~PRIEST12~ #8 // Class
ADD_CRE_ITEM ~DART01~ #30 #0 #0 ~NONE~ ~WEAPON2~
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HARPASS1.CRE~ ~override~
WRITE_LONG 0x14 ~3389~ // XP
WRITE_BYTE 0x64 ~65~ // DtectIll
WRITE_BYTE 0x68 ~80~ // Stealth
WRITE_ASCII 0x250 ~MAGE12A~ #8 // Class
WRITE_ASCII 0x268 ~BPTHIEF~ #8 // Default
ADD_KNOWN_SPELL ~SPIN483~ ~0~ ~INNATE~
//ADD_MEMORIZED_SPELL ~SPIN483~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPIN483~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPIN483~ ~1~ // ------ for the future WeiDU
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HAWKER01.CRE~ ~override~
WRITE_LONG 0x14 ~75~ // XP
WRITE_ASCII 0x268 ~WDASIGHT~ #8 // Default
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HDRAGRED.CRE~ ~override~
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HDRAGSIL.CRE~ ~override~
WRITE_LONG 0x14 ~19680~ // XP
WRITE_ASCII 0x250 ~MAGE10B~ #8 // Class
WRITE_ASCII 0x268 ~WDASIGHT~ #8 // Default
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HEARTG1.CRE~ ~override~
WRITE_LONG 0x14 ~1780~ // XP
WRITE_ASCII 0x268 ~WDASIGHT~ #8 // Default
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HEARTG2.CRE~ ~override~
WRITE_LONG 0x14 ~1785~ // XP
WRITE_ASCII 0x268 ~WDASIGHT~ #8 // Default
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HELLBEH1.CRE~ ~override~
WRITE_LONG 0x14 ~4875~ // XP
WRITE_ASCII 0x250 ~BEHELD01~ #8 // Class
WRITE_ASCII 0x260 ~~ #8 // General
WRITE_ASCII 0x268 ~WDASIGHT~ #8 // Default
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HELLBEH2.CRE~ ~override~
WRITE_LONG 0x14 ~4875~ // XP
WRITE_ASCII 0x250 ~BEHELD01~ #8 // Class
WRITE_ASCII 0x260 ~~ #8 // General
WRITE_ASCII 0x268 ~WDASIGHT~ #8 // Default
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HELLFEAR.CRE~ ~override~
WRITE_ASCII 0x248 ~BPDEMON~ #8 // Override
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HELLGEN.CRE~ ~override~
WRITE_LONG 0x14 ~5678~ // XP
WRITE_ASCII 0x250 ~INITIN15~ #8 // Class
WRITE_ASCII 0x258 ~MAGE20B~ #8 // Race
WRITE_ASCII 0x268 ~WDASIGHT~ #8 // Default
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HELLGREE.CRE~ ~override~
WRITE_ASCII 0x268 ~BPDEMON~ #8 // Default
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HELLHO01.CRE~ ~override~
WRITE_LONG 0x14 ~861~ // XP
WRITE_SHORT 0x24 ~42~ // CurrHP
WRITE_SHORT 0x26 ~42~ // MaxHP
WRITE_ASCII 0x34 ~~ #8 // SmallPortrait
WRITE_ASCII 0x3c ~~ #8 // LargePortrait
WRITE_SHORT 0x46 ~5~ // ACNatul
WRITE_SHORT 0x48 ~5~ // ACEffec
WRITE_BYTE 0x53 ~2~ // NOAtt
WRITE_BYTE 0x54 ~11~ // SaveVDth
WRITE_BYTE 0x55 ~13~ // SaveVWnd
WRITE_BYTE 0x56 ~12~ // SaveVPoly
WRITE_BYTE 0x57 ~13~ // SaveVAtks
WRITE_BYTE 0x58 ~14~ // SaveVspell
WRITE_BYTE 0x5e ~125~ // RstMFre
WRITE_BYTE 0x234 ~6~ // HighestLevelPrimary
WRITE_BYTE 0x23a ~5~ // Int
WRITE_BYTE 0x23b ~5~ // Wis
WRITE_BYTE 0x23c ~16~ // Dex
WRITE_BYTE 0x23d ~16~ // Con
WRITE_ASCII 0x248 ~~ #8 // Override
WRITE_ASCII 0x250 ~~ #8 // Class
WRITE_ASCII 0x258 ~HELHOU01~ #8 // Race
WRITE_ASCII 0x260 ~~ #8 // General
WRITE_ASCII 0x268 ~~ #8 // Default
//REMOVE_CRE_ITEM ~P1-10~ // ------ for the future WeiDU
//REMOVE_CRE_ITEM ~HELLHO~ // ------ for the future WeiDU
ADD_CRE_ITEM ~HELLHO~ #12 #0 #0 ~NONE~ ~WEAPON1~ EQUIP
ADD_CRE_ITEM ~HELLHOUN~ #0 #0 #0 ~NONE~ ~WEAPON2~
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HELLIL01.CRE~ ~override~
WRITE_LONG 0x14 ~1233~ // XP
WRITE_SHORT 0x24 ~68~ // CurrHP
WRITE_SHORT 0x26 ~68~ // MaxHP
WRITE_BYTE 0x59 ~125~ // RstFire
WRITE_BYTE 0x5a ~0~ // RstCold
WRITE_BYTE 0x5b ~0~ // RstElec
WRITE_BYTE 0x5c ~0~ // RstAcid
WRITE_BYTE 0x5d ~0~ // RstMagc
WRITE_BYTE 0x5e ~125~ // RstMFre
WRITE_BYTE 0x5f ~0~ // RstMCld
WRITE_BYTE 0x60 ~0~ // RstSlash
WRITE_BYTE 0x61 ~0~ // RstCrush
WRITE_BYTE 0x62 ~0~ // RstPierc
WRITE_BYTE 0x63 ~0~ // RstMissl
WRITE_ASCII 0x250 ~HELHOU01~ #8 // Class
WRITE_ASCII 0x268 ~NONE~ #8 // Default
ADD_KNOWN_SPELL ~SPIN484~ ~0~ ~INNATE~
//ADD_MEMORIZED_SPELL ~SPIN484~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPIN484~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPIN484~ ~1~ // ------ for the future WeiDU
//REMOVE_CRE_ITEM ~P1-10~ // ------ for the future WeiDU
ADD_CRE_ITEM ~HELLHO~ #12 #0 #0 ~NONE~ ~WEAPON1~ EQUIP
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HELLSARE.CRE~ ~override~
WRITE_LONG 0x14 ~11360~ // XP
WRITE_ASCII 0x268 ~WDASIGHT~ #8 // Default
ADD_CRE_ITEM ~PLATSAR~ #0 #0 #0 ~NONE~ ~INV11~
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HELLSLAY.CRE~ ~override~
WRITE_ASCII 0x250 ~MAGE20A~ #8 // Class
WRITE_ASCII 0x268 ~WDASIGHT~ #8 // Default
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HELMBYR.CRE~ ~override~
WRITE_LONG 0x14 ~449~ // XP
WRITE_ASCII 0x34 ~~ #8 // SmallPortrait
WRITE_ASCII 0x3c ~~ #8 // LargePortrait
WRITE_ASCII 0x250 ~INITP110~ #8 // Class
WRITE_ASCII 0x260 ~~ #8 // General
WRITE_ASCII 0x268 ~WDASIGHT~ #8 // Default
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HELMKNI1.CRE~ ~override~
WRITE_LONG 0x14 ~3085~ // XP
WRITE_ASCII 0x250 ~PRIEST6~ #8 // Class
WRITE_ASCII 0x268 ~WDASIGHT~ #8 // Default
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HENDAK.CRE~ ~override~
WRITE_ASCII 0x248 ~~ #8 // Override
WRITE_ASCII 0x260 ~BPPLOT~ #8 // General
WRITE_ASCII 0x268 ~WDASIGHT~ #8 // Default
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HIDDEN.CRE~ ~override~
WRITE_LONG 0x14 ~2820~ // XP
WRITE_ASCII 0x268 ~WDASIGHT~ #8 // Default
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HLASSA.CRE~ ~override~
WRITE_LONG 0x14 ~3347~ // XP
WRITE_BYTE 0x64 ~50~ // DtectIll
WRITE_BYTE 0x68 ~60~ // Stealth
WRITE_ASCII 0x268 ~BPTHIEF~ #8 // Default
ADD_KNOWN_SPELL ~SPCL423~ ~0~ ~INNATE~
ADD_KNOWN_SPELL ~SPIN483~ ~0~ ~INNATE~
//ADD_MEMORIZED_SPELL ~SPCL423~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPCL423~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPCL423~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPCL423~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPIN483~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPIN483~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPIN483~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPIN483~ ~1~ // ------ for the future WeiDU
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HLCLERIC.CRE~ ~override~
WRITE_ASCII 0x268 ~WDASIGHT~ #8 // Default
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HLFIGHT.CRE~ ~override~
WRITE_LONG 0x14 ~1715~ // XP
WRITE_ASCII 0x268 ~WDASIGHT~ #8 // Default
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HLHIVE.CRE~ ~override~
WRITE_LONG 0x14 ~8460~ // XP
WRITE_ASCII 0x258 ~BEHHIV01~ #8 // Race
WRITE_ASCII 0x260 ~BPLEADER~ #8 // General
WRITE_ASCII 0x268 ~WDASIGHT~ #8 // Default
ADD_KNOWN_SPELL ~SPPR698~ ~5~ ~PRIEST~
ADD_KNOWN_SPELL ~SPPR607~ ~5~ ~PRIEST~
ADD_KNOWN_SPELL ~SPPR717~ ~6~ ~PRIEST~
ADD_KNOWN_SPELL ~SPWI408~ ~3~ ~WIZARD~
ADD_KNOWN_SPELL ~SPWI508~ ~4~ ~WIZARD~
ADD_KNOWN_SPELL ~SPWI519~ ~4~ ~WIZARD~
ADD_KNOWN_SPELL ~SPWI615~ ~5~ ~WIZARD~
ADD_KNOWN_SPELL ~SPWI609~ ~5~ ~WIZARD~
ADD_KNOWN_SPELL ~SPWI606~ ~5~ ~WIZARD~
ADD_KNOWN_SPELL ~SPWI714~ ~6~ ~WIZARD~
ADD_KNOWN_SPELL ~SPWI703~ ~6~ ~WIZARD~
ADD_KNOWN_SPELL ~SPWI813~ ~7~ ~WIZARD~
ADD_KNOWN_SPELL ~SPWI803~ ~7~ ~WIZARD~
ADD_KNOWN_SPELL ~SPWI907~ ~8~ ~WIZARD~
ADD_KNOWN_SPELL ~SPWI910~ ~8~ ~WIZARD~
ADD_KNOWN_SPELL ~SPWI913~ ~8~ ~WIZARD~
ADD_KNOWN_SPELL ~SPPR613~ ~5~ ~PRIEST~
ADD_KNOWN_SPELL ~SPWI219~ ~1~ ~WIZARD~
ADD_KNOWN_SPELL ~SPIN477~ ~0~ ~INNATE~
//ADD_MEMORIZED_SPELL ~SPWI907~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPWI910~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPWI913~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPWI813~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPWI813~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPWI803~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPWI714~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPWI703~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPWI615~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPWI609~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPWI609~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPWI606~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPWI508~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPWI519~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPWI408~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPWI408~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPWI408~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPPR698~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPPR607~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPPR613~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPPR717~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPWI219~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPWI219~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPIN477~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPIN477~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPIN477~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPIN477~ ~1~ // ------ for the future WeiDU
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HLKANG.CRE~ ~override~
WRITE_LONG 0x14 ~13580~ // XP
WRITE_ASCII 0x260 ~BPLEADER~ #8 // General
WRITE_ASCII 0x268 ~WDASIGHT~ #8 // Default
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HLKETTA.CRE~ ~override~
WRITE_LONG 0x14 ~3327~ // XP
WRITE_BYTE 0x64 ~70~ // DtectIll
WRITE_BYTE 0x68 ~95~ // Stealth
WRITE_ASCII 0x268 ~CTHIE20A~ #8 // Default
ADD_KNOWN_SPELL ~SPIN486~ ~0~ ~INNATE~
ADD_KNOWN_SPELL ~SPCL913~ ~0~ ~INNATE~
ADD_KNOWN_SPELL ~SPCL914~ ~0~ ~INNATE~
ADD_KNOWN_SPELL ~SPCL916~ ~0~ ~INNATE~
ADD_KNOWN_SPELL ~SPCL917~ ~0~ ~INNATE~
//ADD_MEMORIZED_SPELL ~SPIN486~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPIN486~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPIN486~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPIN486~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPIN486~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPCL913~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPCL914~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPCL916~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPCL917~ ~1~ // ------ for the future WeiDU
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HLKETTA2.CRE~ ~override~
WRITE_LONG 0x14 ~3327~ // XP
WRITE_BYTE 0x64 ~70~ // DtectIll
WRITE_BYTE 0x68 ~95~ // Stealth
WRITE_ASCII 0x268 ~CTHIE20A~ #8 // Default
ADD_KNOWN_SPELL ~SPIN486~ ~0~ ~INNATE~
ADD_KNOWN_SPELL ~SPCL913~ ~0~ ~INNATE~
ADD_KNOWN_SPELL ~SPCL914~ ~0~ ~INNATE~
ADD_KNOWN_SPELL ~SPCL916~ ~0~ ~INNATE~
ADD_KNOWN_SPELL ~SPCL917~ ~0~ ~INNATE~
//ADD_MEMORIZED_SPELL ~SPIN486~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPIN486~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPIN486~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPIN486~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPIN486~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPCL913~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPCL914~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPCL916~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPCL917~ ~1~ // ------ for the future WeiDU
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HLKOSHI.CRE~ ~override~
WRITE_LONG 0x8 ~53215~ // LongName
ADD_CRE_ITEM ~SCRL3I~ #0 #0 #0 ~NONE~ ~INV4~
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HLLAYEN.CRE~ ~override~
ADD_CRE_ITEM ~DART04~ #30 #0 #0 ~NONE~ ~WEAPON2~
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HLLICH.CRE~ ~override~
WRITE_LONG 0x14 ~11500~ // XP
WRITE_LONG 0x18 ~11500~ // PowerLevel
WRITE_ASCII 0x268 ~WDASIGHT~ #8 // Default
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HLMAFER.CRE~ ~override~
WRITE_LONG 0x14 ~3846~ // XP
WRITE_ASCII 0x250 ~~ #8 // Class
WRITE_ASCII 0x268 ~WBASIGHT~ #8 // Default
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HLMAGE.CRE~ ~override~
ADD_CRE_ITEM ~DART01~ #30 #0 #0 ~NONE~ ~WEAPON2~
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HLOLAF.CRE~ ~override~
WRITE_LONG 0x14 ~3486~ // XP
WRITE_ASCII 0x250 ~~ #8 // Class
WRITE_ASCII 0x268 ~WBASIGHT~ #8 // Default
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HLORB.CRE~ ~override~
WRITE_LONG 0x14 ~5775~ // XP
WRITE_ASCII 0x34 ~~ #8 // SmallPortrait
WRITE_ASCII 0x3c ~~ #8 // LargePortrait
WRITE_ASCII 0x250 ~~ #8 // Class
WRITE_ASCII 0x258 ~~ #8 // Race
WRITE_ASCII 0x260 ~BEHELD01~ #8 // General
WRITE_ASCII 0x268 ~WDASIGHT~ #8 // Default
ADD_KNOWN_SPELL ~SPWI311~ ~2~ ~WIZARD~
ADD_KNOWN_SPELL ~SPWI509~ ~4~ ~WIZARD~
ADD_KNOWN_SPELL ~SPWI612~ ~5~ ~WIZARD~
ADD_KNOWN_SPELL ~SPWI609~ ~5~ ~WIZARD~
ADD_KNOWN_SPELL ~SPWI716~ ~6~ ~WIZARD~
ADD_KNOWN_SPELL ~SPWI702~ ~6~ ~WIZARD~
ADD_KNOWN_SPELL ~SPWI813~ ~7~ ~WIZARD~
ADD_KNOWN_SPELL ~SPWI815~ ~7~ ~WIZARD~
ADD_KNOWN_SPELL ~SPWI898~ ~7~ ~WIZARD~
ADD_KNOWN_SPELL ~SPWI912~ ~8~ ~WIZARD~
ADD_KNOWN_SPELL ~SPWI909~ ~8~ ~WIZARD~
ADD_KNOWN_SPELL ~SPWI408~ ~3~ ~WIZARD~
ADD_KNOWN_SPELL ~SPWI611~ ~5~ ~WIZARD~
ADD_KNOWN_SPELL ~SPWI219~ ~1~ ~WIZARD~
ADD_KNOWN_SPELL ~SPWI112~ ~0~ ~WIZARD~
//ADD_MEMORIZED_SPELL ~SPWI509~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPWI612~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPWI609~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPWI611~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPWI311~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPWI716~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPWI702~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPWI813~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPWI815~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPWI898~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPWI912~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPWI909~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPWI408~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPWI408~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPWI219~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPWI219~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPWI112~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPWI112~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPWI112~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPWI112~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPWI112~ ~1~ // ------ for the future WeiDU
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HLREVAN.CRE~ ~override~
WRITE_LONG 0x14 ~2320~ // XP
WRITE_ASCII 0x268 ~WDASIGHT~ #8 // Default
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HLSHADE.CRE~ ~override~
WRITE_LONG 0x14 ~11700~ // XP
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HLSHANG.CRE~ ~override~
WRITE_LONG 0x14 ~14850~ // XP
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HLSION.CRE~ ~override~
WRITE_ASCII 0x258 ~MAGE14A~ #8 // Race
ADD_CRE_ITEM ~STAF01~ #0 #0 #0 ~NONE~ ~WEAPON1~ EQUIP
ADD_CRE_ITEM ~DART01~ #30 #0 #0 ~NONE~ ~WEAPON2~
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HLSTAL.CRE~ ~override~
WRITE_LONG 0x14 ~2380~ // XP
WRITE_ASCII 0x268 ~WDASIGHT~ #8 // Default
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HLVAXAL.CRE~ ~override~
WRITE_LONG 0x14 ~5675~ // XP
WRITE_ASCII 0x268 ~WDASIGHT~ #8 // Default
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HMELVIN.CRE~ ~override~
WRITE_LONG 0x14 ~119~ // XP
WRITE_ASCII 0x268 ~WDASIGHT~ #8 // Default
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HOBARC01.CRE~ ~override~
WRITE_LONG 0x14 ~68~ // XP
WRITE_SHORT 0x24 ~24~ // CurrHP
WRITE_SHORT 0x26 ~24~ // MaxHP
WRITE_BYTE 0x234 ~2~ // HighestLevelPrimary
WRITE_ASCII 0x258 ~~ #8 // Race
WRITE_ASCII 0x268 ~WDASIGHT~ #8 // Default
WRITE_BYTE 0x27b ~19~ // Alignment
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HOBARC02.CRE~ ~override~
WRITE_LONG 0x14 ~68~ // XP
WRITE_SHORT 0x24 ~24~ // CurrHP
WRITE_SHORT 0x26 ~24~ // MaxHP
WRITE_ASCII 0x258 ~~ #8 // Race
WRITE_ASCII 0x268 ~WDASIGHT~ #8 // Default
WRITE_BYTE 0x27b ~19~ // Alignment
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HOBCAP01.CRE~ ~override~
WRITE_LONG 0x14 ~346~ // XP
WRITE_SHORT 0x24 ~49~ // CurrHP
WRITE_SHORT 0x26 ~49~ // MaxHP
WRITE_BYTE 0x2d ~0~ // MinorColour
WRITE_BYTE 0x2e ~0~ // MajorColour
WRITE_BYTE 0x2f ~0~ // SkinColour
WRITE_BYTE 0x52 ~15~ // THACO
WRITE_BYTE 0x238 ~18~ // Str
WRITE_BYTE 0x239 ~51~ // StrBon
WRITE_BYTE 0x23d ~20~ // Con
WRITE_ASCII 0x258 ~BPLEADER~ #8 // Race
WRITE_ASCII 0x268 ~WSASIGHT~ #8 // Default
WRITE_BYTE 0x273 ~8~ // IDSClass
WRITE_BYTE 0x27b ~19~ // Alignment
//REMOVE_CRE_ITEM ~POTN08~ // ------ for the future WeiDU
//REMOVE_CRE_ITEM ~CHAN04~ // ------ for the future WeiDU
ADD_CRE_ITEM ~POTN08~ #2 #0 #0 ~NONE~ ~QITEM2~
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HOBELI01.CRE~ ~override~
WRITE_SHORT 0x24 ~38~ // CurrHP
WRITE_SHORT 0x26 ~38~ // MaxHP
WRITE_BYTE 0x2d ~0~ // MinorColour
WRITE_BYTE 0x2e ~0~ // MajorColour
WRITE_BYTE 0x2f ~0~ // SkinColour
WRITE_BYTE 0x52 ~16~ // THACO
WRITE_BYTE 0x23d ~19~ // Con
WRITE_ASCII 0x258 ~~ #8 // Race
WRITE_BYTE 0x272 ~111~ // IDSRace
WRITE_BYTE 0x27b ~19~ // Alignment
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HOBGOB01.CRE~ ~override~
WRITE_LONG 0x14 ~50~ // XP
WRITE_SHORT 0x24 ~15~ // CurrHP
WRITE_SHORT 0x26 ~15~ // MaxHP
WRITE_ASCII 0x258 ~WDASIGHT~ #8 // Race
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HOBGOBSU.CRE~ ~override~
WRITE_SHORT 0x24 ~38~ // CurrHP
WRITE_SHORT 0x26 ~38~ // MaxHP
WRITE_BYTE 0x2d ~0~ // MinorColour
WRITE_BYTE 0x2e ~0~ // MajorColour
WRITE_BYTE 0x2f ~0~ // SkinColour
WRITE_BYTE 0x52 ~16~ // THACO
WRITE_BYTE 0x53 ~7~ // NOAtt
WRITE_BYTE 0x234 ~3~ // HighestLevelPrimary
WRITE_BYTE 0x239 ~0~ // StrBon
WRITE_ASCII 0x258 ~~ #8 // Race
WRITE_ASCII 0x268 ~WTASIGHT~ #8 // Default
WRITE_BYTE 0x272 ~111~ // IDSRace
WRITE_BYTE 0x27b ~19~ // Alignment
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HOBSHA01.CRE~ ~override~
WRITE_LONG 0x14 ~513~ // XP
WRITE_SHORT 0x24 ~47~ // CurrHP
WRITE_SHORT 0x26 ~47~ // MaxHP
WRITE_ASCII 0x34 ~~ #8 // SmallPortrait
WRITE_ASCII 0x3c ~~ #8 // LargePortrait
WRITE_SHORT 0x46 ~4~ // ACNatul
WRITE_SHORT 0x48 ~4~ // ACEffec
WRITE_BYTE 0x52 ~16~ // THACO
WRITE_BYTE 0x54 ~10~ // SaveVDth
WRITE_BYTE 0x55 ~14~ // SaveVWnd
WRITE_BYTE 0x56 ~13~ // SaveVPoly
WRITE_BYTE 0x57 ~15~ // SaveVAtks
WRITE_BYTE 0x58 ~12~ // SaveVspell
WRITE_BYTE 0x234 ~5~ // HighestLevelPrimary
WRITE_BYTE 0x23b ~16~ // Wis
WRITE_ASCII 0x250 ~~ #8 // Class
WRITE_ASCII 0x258 ~PRIES10A~ #8 // Race
WRITE_ASCII 0x260 ~~ #8 // General
WRITE_ASCII 0x268 ~WDASIGHT~ #8 // Default
ADD_KNOWN_SPELL ~SPPR211~ ~1~ ~PRIEST~
ADD_KNOWN_SPELL ~SPPR312~ ~2~ ~PRIEST~
ADD_KNOWN_SPELL ~SPPR203~ ~1~ ~PRIEST~
ADD_KNOWN_SPELL ~SPPR108~ ~0~ ~PRIEST~
ADD_KNOWN_SPELL ~SPPR401~ ~2~ ~PRIEST~
ADD_KNOWN_SPELL ~SPPR411~ ~2~ ~PRIEST~
//ADD_MEMORIZED_SPELL ~SPPR108~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPPR211~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPPR401~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPPR411~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPPR312~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPPR314~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPPR203~ ~1~ // ------ for the future WeiDU
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HOBWAR01.CRE~ ~override~
WRITE_LONG 0x14 ~121~ // XP
WRITE_SHORT 0x24 ~28~ // CurrHP
WRITE_SHORT 0x26 ~28~ // MaxHP
WRITE_BYTE 0x52 ~17~ // THACO
WRITE_BYTE 0x53 ~7~ // NOAtt
WRITE_BYTE 0x54 ~13~ // SaveVDth
WRITE_BYTE 0x55 ~15~ // SaveVWnd
WRITE_BYTE 0x56 ~14~ // SaveVPoly
WRITE_BYTE 0x57 ~16~ // SaveVAtks
WRITE_BYTE 0x58 ~16~ // SaveVspell
WRITE_BYTE 0x234 ~3~ // HighestLevelPrimary
WRITE_BYTE 0x238 ~17~ // Str
WRITE_BYTE 0x23d ~19~ // Con
WRITE_ASCII 0x258 ~~ #8 // Race
WRITE_ASCII 0x268 ~WDASIGHT~ #8 // Default
WRITE_BYTE 0x27b ~19~ // Alignment
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HOBWIZ01.CRE~ ~override~
WRITE_LONG 0x14 ~362~ // XP
WRITE_SHORT 0x24 ~34~ // CurrHP
WRITE_SHORT 0x26 ~34~ // MaxHP
WRITE_ASCII 0x268 ~WDASIGHT~ #8 // Default
WRITE_BYTE 0x27b ~19~ // Alignment
ADD_KNOWN_SPELL ~SPWI118~ ~0~ ~WIZARD~
ADD_KNOWN_SPELL ~SPWI106~ ~0~ ~WIZARD~
ADD_KNOWN_SPELL ~SPWI119~ ~0~ ~WIZARD~
ADD_KNOWN_SPELL ~SPWI211~ ~1~ ~WIZARD~
ADD_KNOWN_SPELL ~SPWI213~ ~1~ ~WIZARD~
ADD_KNOWN_SPELL ~SPWI205~ ~1~ ~WIZARD~
ADD_KNOWN_SPELL ~SPWI303~ ~2~ ~WIZARD~
ADD_KNOWN_SPELL ~SPWI317~ ~2~ ~WIZARD~
ADD_KNOWN_SPELL ~SPWI401~ ~3~ ~WIZARD~
ADD_KNOWN_SPELL ~SPWI408~ ~3~ ~WIZARD~
ADD_KNOWN_SPELL ~SPWI415~ ~3~ ~WIZARD~
//ADD_MEMORIZED_SPELL ~SPWI118~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPWI106~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPWI119~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPWI211~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPWI213~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPWI205~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPWI303~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPWI317~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPWI401~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPWI408~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPWI415~ ~1~ // ------ for the future WeiDU
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HPRELATE.CRE~ ~override~
WRITE_LONG 0x14 ~4742~ // XP
WRITE_ASCII 0x268 ~CPALA20A~ #8 // Default
ADD_KNOWN_SPELL ~SPPR101~ ~0~ ~PRIEST~
ADD_KNOWN_SPELL ~SPPR108~ ~0~ ~PRIEST~
ADD_KNOWN_SPELL ~SPPR109~ ~0~ ~PRIEST~
ADD_KNOWN_SPELL ~SPPR210~ ~1~ ~PRIEST~
ADD_KNOWN_SPELL ~SPPR212~ ~1~ ~PRIEST~
ADD_KNOWN_SPELL ~SPPR214~ ~1~ ~PRIEST~
ADD_KNOWN_SPELL ~SPPR323~ ~2~ ~PRIEST~
ADD_KNOWN_SPELL ~SPPR313~ ~2~ ~PRIEST~
ADD_KNOWN_SPELL ~SPPR303~ ~2~ ~PRIEST~
ADD_KNOWN_SPELL ~SPPR403~ ~3~ ~PRIEST~
ADD_KNOWN_SPELL ~SPPR406~ ~3~ ~PRIEST~
ADD_KNOWN_SPELL ~SPPR412~ ~3~ ~PRIEST~
ADD_KNOWN_SPELL ~SPCL211~ ~0~ ~INNATE~
ADD_KNOWN_SPELL ~SPCL213~ ~0~ ~INNATE~
ADD_KNOWN_SPELL ~SPCL909~ ~0~ ~INNATE~
ADD_KNOWN_SPELL ~SPCL905~ ~0~ ~INNATE~
ADD_KNOWN_SPELL ~SPCL904~ ~0~ ~INNATE~
ADD_KNOWN_SPELL ~SPCL907~ ~0~ ~INNATE~
ADD_KNOWN_SPELL ~SPCL901~ ~0~ ~INNATE~
//ADD_MEMORIZED_SPELL ~SPCL211~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPCL211~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPCL211~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPCL213~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPCL213~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPCL213~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPCL213~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPCL213~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPCL213~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPCL213~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPCL213~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPCL213~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPCL909~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPCL905~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPCL904~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPCL907~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPCL901~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPPR101~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPPR108~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPPR109~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPPR210~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPPR212~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPPR214~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPPR323~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPPR313~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPPR303~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPPR403~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPPR406~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPPR412~ ~1~ // ------ for the future WeiDU
ADD_CRE_ITEM ~HELMNOAN~ #0 #0 #0 ~NONE~ ~HELMET~
ADD_CRE_ITEM ~BOW04~ #0 #0 #0 ~NONE~ ~WEAPON1~ EQUIP
ADD_CRE_ITEM ~AROW08~ #40 #0 #0 ~NONE~ ~QUIVER1~
ADD_CRE_ITEM ~POTN14~ #2 #0 #0 ~NONE~ ~QITEM2~
ADD_CRE_ITEM ~POTN52~ #5 #0 #0 ~NONE~ ~QITEM3~
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HSPECTR1.CRE~ ~override~
WRITE_LONG 0x14 ~2270~ // XP
WRITE_ASCII 0x268 ~WDASIGHT~ #8 // Default
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HSPECTR2.CRE~ ~override~
WRITE_LONG 0x14 ~2270~ // XP
WRITE_ASCII 0x268 ~WDASIGHT~ #8 // Default
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HSPECTR3.CRE~ ~override~
WRITE_LONG 0x14 ~2270~ // XP
WRITE_ASCII 0x268 ~WDASIGHT~ #8 // Default
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HULL.CRE~ ~override~
WRITE_LONG 0x8 ~16177~ // LongName
WRITE_LONG 0xc ~16177~ // ShortName
WRITE_LONG 0x14 ~121~ // XP
WRITE_ASCII 0x268 ~WDASIGHT~ #8 // Default
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HULL2.CRE~ ~override~
WRITE_LONG 0x8 ~16177~ // LongName
WRITE_LONG 0xc ~16177~ // ShortName
WRITE_LONG 0x14 ~119~ // XP
WRITE_ASCII 0x268 ~WDASIGHT~ #8 // Default
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HULL3.CRE~ ~override~
WRITE_LONG 0x8 ~16177~ // LongName
WRITE_LONG 0xc ~16177~ // ShortName
WRITE_LONG 0x14 ~350~ // XP
WRITE_ASCII 0x268 ~WDASIGHT~ #8 // Default
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HURGISF.CRE~ ~override~
WRITE_LONG 0x14 ~2408~ // XP
WRITE_ASCII 0x258 ~PALAD10~ #8 // Race
WRITE_ASCII 0x268 ~NONE~ #8 // Default
ADD_KNOWN_SPELL ~SPPR101~ ~0~ ~PRIEST~
ADD_KNOWN_SPELL ~SPPR108~ ~0~ ~PRIEST~
ADD_KNOWN_SPELL ~SPPR109~ ~0~ ~PRIEST~
ADD_KNOWN_SPELL ~SPPR210~ ~1~ ~PRIEST~
ADD_KNOWN_SPELL ~SPPR212~ ~1~ ~PRIEST~
ADD_KNOWN_SPELL ~SPPR214~ ~1~ ~PRIEST~
ADD_KNOWN_SPELL ~SPCL211~ ~0~ ~INNATE~
ADD_KNOWN_SPELL ~SPCL213~ ~0~ ~INNATE~
//ADD_MEMORIZED_SPELL ~SPCL211~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPCL211~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPCL213~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPCL213~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPCL213~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPCL213~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPCL213~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPCL213~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPPR101~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPPR108~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPPR109~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPPR210~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPPR212~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPPR214~ ~1~ // ------ for the future WeiDU
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~HURGISR.CRE~ ~override~
WRITE_LONG 0x14 ~2408~ // XP
WRITE_BYTE 0x52 ~10~ // THACO
WRITE_BYTE 0x53 ~7~ // NOAtt
WRITE_BYTE 0x235 ~0~ // HighestLevelSecond
WRITE_BYTE 0x236 ~0~ // HighestLevelTertiary
WRITE_ASCII 0x258 ~PALAD10~ #8 // Race
WRITE_ASCII 0x268 ~NONE~ #8 // Default
WRITE_BYTE 0x27b ~51~ // Alignment
REMOVE_KNOWN_SPELL ~SPIN111~
REMOVE_KNOWN_SPELL ~SPIN113~
REMOVE_KNOWN_SPELL ~SPIN109~
REMOVE_KNOWN_SPELL ~SPIN120~
REMOVE_KNOWN_SPELL ~SPIN121~
ADD_KNOWN_SPELL ~SPPR101~ ~0~ ~PRIEST~
ADD_KNOWN_SPELL ~SPPR108~ ~0~ ~PRIEST~
ADD_KNOWN_SPELL ~SPPR109~ ~0~ ~PRIEST~
ADD_KNOWN_SPELL ~SPPR210~ ~1~ ~PRIEST~
ADD_KNOWN_SPELL ~SPPR212~ ~1~ ~PRIEST~
ADD_KNOWN_SPELL ~SPPR214~ ~1~ ~PRIEST~
ADD_KNOWN_SPELL ~SPCL211~ ~0~ ~INNATE~
ADD_KNOWN_SPELL ~SPCL213~ ~0~ ~INNATE~
REMOVE_MEMORIZED_SPELL ~SPIN111~
REMOVE_MEMORIZED_SPELL ~SPIN113~
REMOVE_MEMORIZED_SPELL ~SPIN109~
REMOVE_MEMORIZED_SPELL ~SPIN120~
REMOVE_MEMORIZED_SPELL ~SPIN120~
REMOVE_MEMORIZED_SPELL ~SPIN120~
REMOVE_MEMORIZED_SPELL ~SPIN120~
REMOVE_MEMORIZED_SPELL ~SPIN120~
REMOVE_MEMORIZED_SPELL ~SPIN120~
REMOVE_MEMORIZED_SPELL ~SPIN120~
REMOVE_MEMORIZED_SPELL ~SPIN120~
REMOVE_MEMORIZED_SPELL ~SPIN120~
REMOVE_MEMORIZED_SPELL ~SPIN120~
REMOVE_MEMORIZED_SPELL ~SPIN121~
REMOVE_MEMORIZED_SPELL ~SPIN121~
REMOVE_MEMORIZED_SPELL ~SPIN121~
REMOVE_MEMORIZED_SPELL ~SPIN121~
REMOVE_MEMORIZED_SPELL ~SPIN121~
REMOVE_MEMORIZED_SPELL ~SPIN121~
//ADD_MEMORIZED_SPELL ~SPCL211~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPCL211~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPCL213~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPCL213~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPCL213~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPCL213~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPCL213~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPCL213~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPPR101~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPPR108~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPPR109~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPPR210~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPPR212~ ~1~ // ------ for the future WeiDU
//ADD_MEMORIZED_SPELL ~SPPR214~ ~1~ // ------ for the future WeiDU
//REMOVE_CRE_ITEM ~POTN05~ // ------ for the future WeiDU
ADD_CRE_ITEM ~POTN06~ #0 #0 #0 ~NONE~ ~QITEM3~
BUT_ONLY_IF_IT_CHANGES


NB: Things like ADD_MEMORIZED_SPELL & REMOVE_CRE_ITEM which aren't yet but maybe will be implemented in a future version of WeiDU are just commented out for now. If they're going to need patching then I will work out the details of doing that without them being inbuilt features of WeiDU soon. Be aware as a work in progress my program currently attempts to notice and patch ALL changes between the CRE files with the same name with the exception of the fields in the header marked as "currently ignoring" below and "effects" which are for the moment being ignored.

So, hope that makes sense. If there's any comments of the format of the TP2 code you see then please let me know what mistakes I'm making. As this is all automated output changes are easily made by tweaking the program.

So on to my questions for Horred...

First of all, I've got to ask now which elements of the creature files actually do need patching, and which should be ignored. For example "changes in HP should be patched, but changes in XP should not, etc, etc"...

So, for your help on this, here is a list of potentially changed attributes of any given CRE file (mostly from IESDP). I would appreciate it if you could indicate which fields should be patched and which should be ignored (some I am already ignoring are marked):

From the Header:

Signature [Currently Ignoring]
Version [Currently Ignoring]
LongName
ShortName
CreatureFlags
XP
PowerLevel
Goldcarried
Statusflags
CurrHP
MaxHP
AnimationID
Unknown0 [Currently Ignoring]
MetalColour
MinorColour
MajorColour
SkinColour
LeatherColour
ArmorColour
HairColour
Effversion [Currently Ignoring]
SmallPortrait
LargePortrait
Reputation
HidInShad
ACNatul
ACEffec
ACCrush
ACMissl
ACPierc
ACSlash
THACO
NOAtt
SaveVDth
SaveVWnd
SaveVPoly
SaveVAtks
SaveVspell
RstFire
RstCold
RstElec
RstAcid
RstMagc
RstMFre
RstMCld
RstSlash
RstCrush
RstPierc
RstMissl
DtectIll
SetTraps
Lore
Lock
Stealth
FDTraps
PickPoct
Fatigue
Intox
Luck
Unu0 [Currently Ignoring]
Unu1 [Currently Ignoring]
Unu2 [Currently Ignoring]
Unu3 [Currently Ignoring]
Unu4 [Currently Ignoring]
Unu5 [Currently Ignoring]
Unu6 [Currently Ignoring]
Unu7 [Currently Ignoring]
Unknown1 [Currently Ignoring]
Tracking
Unknown2 [Currently Ignoring]
HighestLevelPrimary
HighestLevelSecond
HighestLevelTertiary
Gender
Str
StrBon
Int
Wis
Dex
Con
Cha
Mor
Morbrk
Racial
MrlReco
Unknown3 [Currently Ignoring]
KitInfo
Override
Class
Race
General
Default
EnemyAlly
IDSGeneral
IDSRace
IDSClass
IDSSpecifc
IDSGender
Unknown4 [Currently Ignoring]
Alignment
GAE [Currently Ignoring]
LAE [Currently Ignoring]
DeathVariable
KnownSpellsOffset [Currently Ignoring]
KnownSpellsCount [Currently Ignoring]
SpellInfoMemOffset [Currently Ignoring]
SpellInfoMemCount [Currently Ignoring]
SpellMemOffset [Currently Ignoring]
SpellMemCount [Currently Ignoring]
OffItemSlt [Currently Ignoring]
OffItem [Currently Ignoring]
CntItem [Currently Ignoring]
OffEff [Currently Ignoring]
CntEff [Currently Ignoring]
Dlg
Refs(1-100) Strrefs pertaining to the character. Most are connected with the sound-set. (There are 100 of these.) [Currently Ignoring]

Then there's the tables:

known_spells
spell_info
memorized_spells
item_table
item_slots
effects [Currently Ignoring]

After I know which fields you want patched I will be able to concentrate on limiting the output to just those.


The procedure: You have to compare the unmodded ToB-patched version of the file with the one in the BP/CRE folder. If it doesn't exist in ToB-patched, try and track down where it came from. All files that exist in ToB-patched and BP need to be hex-patched.

If it doesn't exist in TDD,SoS, BGT, or TS--then run a search to see if/where it is used in game. If it is not used, discard it. If it is used, it doesn't need hex-patching (it can be copied "as is").


My second question relates to what you said above about the "process" & is basically to ask for clarification on which files to run the compare on. Ideally I'd end up with one big directory of all the "original" files that need to be looked at and compared with the as yet unpatched BP-Weidu ones. Some instruction would be helpful.

Take the creature "GHAST.cre" for example, which is one of the culprits giving funny battlecrys, etc. This file exists only in BGT & BP-WeiDU (not in ToB-patched), so following your instructions above I would assume that it doesn't need hex-patching and can be copied "as is"... but I guess I mis-understood. Please let me know which files should be compared with the BP ones.

To explain myself all I can say is that I'm very eager to see the wacky creature dialogues cleared up in BP and seeing there are ~2500 cre files yet to be hex-patched it made sense to try and automate as much of the process as possible. I suppose that's enough said for now as this message is getting a little long :rolleyes:

Edited by Intox, 28 April 2006 - 06:06 PM.


#13 horred the plague

horred the plague

    Scourge of the Seven Seas

  • Modder
  • 1899 posts

Posted 30 April 2006 - 03:52 AM

*Makes certain he didn't quote that post*


This all sounds very promising. Very promising, indeed. I can see both solutions and problems here; I'm fairly certain that the problems can be resolved.

To answer the questions:

1) Fields that can be ignored: XP

These values are being removed from BP, and DefJam will be used to offer player choice.

However, other changes can not be ignored, that are. I'm referring to all the "bottom" entries, like offsets, effects, adding memorized spells, removing items. All these tables. I'm also fairly certain that these could not be "automated"--though you are welcome to correct me on this point.

There is the tables on top of the tp2, that allow for adding memorized spells and proficiencies. Perhaps you can devise a way to simply list these for creatures (by name)--I can manually add them to the lists.

I guess I'd say the same for other added effects (besides proficiencies), items, and so on. If they can be listed, at least I'd know what to code without manually surveying the files. At the very least, a "heads up" to which files the offset values change on would be sufficient. Eliminating the files that can be easily patched is helpful, as well.

2) Something like the GHAST.cre is a special case. BGT added it, BP-BGT made its own version, and BP-weidu somehow ended up with it--complete with funky strref's. Set files like this aside, and bring to my attention. I will address them on a per-case basis. I think this will be the best way.


Even if your fine procedure cannot eliminate every file--it will be very helpful indeed. Eliminating all of the "easy" files will still save many hours of manual labor, and show me precisely where to concentrate my efforts when I get to this part.

Thank you again for writing this useful program. I wonder if other mods besides BP could make use of your procedure.

#14 Intox

Intox
  • Member
  • 32 posts

Posted 30 April 2006 - 04:43 AM

Ok, well just when I thought I'd have a barrage of questions for you it seems that the robot inside me took the helm and I've been able to make some progress without bugging.

Here are my remaining questions...

------------------------------------------
Q1 - WHICH FILES?
------------------------------------------
The files I'm running the compare on are all the cre files from bp-weidu176 compared with one big directory containing the following:

1)The SOA-TOB cre files from "Creature.bif"
2)Cre files from the override folder after installing TOB-Patch
3)Cre files from BGTCRE.bif

For each copy I replaced existing files if there were any.

If you have a better suggestion of what files to be comparing or in what order they should be copied into my "original files" folder please let me know.

PS: I'm not taking into account SOS,TDD,CtB or any other mod at this stage. Maybe the output would be more correct if it did, though I thought these mods were all fully weidu now.


------------------------------------------
Q2 - WHICH HEADER FIELDS?
------------------------------------------
Same as before, one of my main concerns was that there were header fields all over the place that I was unsure if they needed patching or not. But a quick addition to the program last night (listing a count of the differences for each header field) meant that I have been able to narrow down my concerns to just two types of these fields.

These are:

1. REFS. At the moment I'm working on the made-up assumption that no strrefs need to be patched, but please correct me if I'm wrong in this. I notice that the overwhelming number of creatures with changed Refs (those 100 strrefs) are present in BGT (you can see this near the end of the program's output where it says "THESE FILES HAVE CHANGED STREFS"). So, looks like the fuzzed up strrefs are only on creatures that are in BGT? I want to know if these should all be ignored, patched, or raised (patched but commented out), or if there should be a case determined on whether the creature is present in BGT or not.

2. UNU*0-7. These 8 'proficiency' fields in the header are claimed in the IESDP to be unused in BG2, however there are several changes made in the BP versions of the files (you can see the counts at the end of the output I've attached), as well they definitely have values in the original game. Again, I want to know if these fields should be ignored, patched, or raised (patched but commented out). Currently they are ignored.

PS: As far as the "bottom" entries go, offsets are being ignored because WeiDU takes care of those at install time I assume, i.e. when it processes commands like ADD_KNOWN_SPELL, ADD_CRE_ITEM, etc, also I assume they are also corrected by your routines that use the SPELLS.TBL and ITM_RMV.TBL. By the way, I've made some assumptions about how SPELLS.TBL and ITM_RMV.TBL work, and could be wrong :whistling:

PPS: BP's changes in XP are now being ignored.

PPPS: Also, what is the "Effversion" field - I mean what does it do? Should changes in this field be ignored, patched, or raised?


------------------------------------------
Q3 - EFFECTS
------------------------------------------
As you will hopefully see (search the attached file for "ADD THE FOLLOWING EFFECT"), changes in the effects tables are being noted in the output, but not in any finished way. I'm looking to understand how I can deal with the effects. It shouldn't be hard once I understand the structure of effects, which is not given in the IESDP as far as I can see. However the format must be understood by someone as programs like Near Infinity happily read effects tables in and display their meaning. So any advice here, or suggestions of what to do with the effects data changes is appreciated.

------------------------------------------
Q4 - BIG (or small) PROBLEMS YOU SEE
------------------------------------------
To ensure you have a good cross-section of the output to look at, hell I'm going to attach the full 'alpha' output of the program here. The size of the output is a real testament to the amount of work you've done for BP, considering this is just the 'unpatched' CRE's!

Anyway, before answering my Q's I'd really appreciate it if you could browse and cross-check the output for as long as it takes to be able to point out any glaring errors or omissions (things the program is doing incorrectly). It's likely that if there are errors, then it will effect a whole swaythe of creatures as it's treating every CRE file in the same robotic way. Other than that, pointing out any problems at all will help me get this finished.

------------------------------------------
Q5 - ITEMS WITHOUT SLOTS?
------------------------------------------
Items without designated item slots - should these be patched or raised?
Currently they're raised (commented out of the TP2) and you can see a few by searching for "WARNING -- NO ITEM SLOT DESIGNATED FOR THIS ITEM". It's even caught "invalid" items (I think they're invalid - correct me), like in the case of BP's BODHI2.CRE, where their item is composed of incorrect characters.
EDIT: Open up BP's BODHI2.CRE in any IE file viewer to see.

------------------------------------------

The mission, is essentially to remove the need for you to manually patch the remaining creature changes from BP-BGT into WeiDU (except where you want to :P ). Hence BP can hopefully get a lot closer to first official non-beta release :woot:

After I know I'm getting the right output I'll finally make it move files which can be removed from the package (i.e. those successfully patched) to a 'can delete' folder and get it to add its own rows to the ITM_RMV.TBL and SPELLS.TBL. It already writes the TP2 'copy to override' code for the ones that weren't patched and are still needed, and removes newly patched entries from that section. There's still going to be the question of the "W" series scripts you mentioned, as well as any other special cases, but basically the final iteration of the program should be able run on BP's latest install files and end up with a fully WeiDU version of the same (for creatures).

My impetus on writing this program was to get rid of those wacky strref problems, but in the process of understanding how I might do that it's become capable of more.

Any suggestions on how to make it better, like additional warnings I should implement (currently it's capable of noting creatures that haven't got a weapon equipped, for example), please let me know.

Thank you again for writing this useful program. I wonder if other mods besides BP could make use of your procedure.

No sweat. Actually it's been fun learning about how this part of the game was structured, but I would like to see its original goal completed successfully. The goal is to eliminate all problems due to the ~2500 non-weidu creatures in BP-weidu beta.

As far as it being useful to other mods... I was actually a little taken back by the fact that there were apparently no utilities around that were designed to help convert pre-WeiDU mods into WeiDU format, at least as far as I could find (EDIT: WeiDU does have an -automate command). But I wouldn't bet on this program being useful to any other mods until I've achieved the first goal of updating what it can of BP (especially eliminating all Strref issues), and I hope it will be able to eliminate *almost* every file. Then I suppose the concept could be expanded to compare or validate any type of file with a similar structure, which might be useful for updating other old mods to WeiDU..

Sorry about the great big posts. I found it better to just do as much as I could at once until now, but if you'd find it more efficient to deal with my questions small post-at-a-time, that's fine. :cheers:

<attachment removed by Intox>

Edited by Intox, 12 May 2006 - 05:12 AM.


#15 Intox

Intox
  • Member
  • 32 posts

Posted 04 May 2006 - 03:08 AM

just to let you know I've just edited the above post with the current state of progress with the program

#16 radish_hoedown

radish_hoedown
  • Member
  • 201 posts

Posted 06 May 2006 - 07:20 AM

really good work so far, Intox. You could really be onto something big here :)

#17 Intox

Intox
  • Member
  • 32 posts

Posted 06 May 2006 - 08:25 PM

Seems I may have been a little hasty in posting the above results. I've begun to 'strike out' any of my above questions that I've been able to make progress on. My main questions are still the REFS and UNU fields, as well as any other problems noticed. B)

#18 Salk

Salk
  • Modder
  • 1419 posts

Donator

Posted 06 May 2006 - 09:13 PM

The text is wrong, yet the other things (except XP*) are "right". This is why the bare files remain. Many CRE files have beefed-up stats, or new/different spells/items/effects, bugfixes from original game, new script lineups, and so on. Much of this is part of what made BP..."BP". ;)


I hope the CREs stats are not so beefed up to make the respective P&P counterparts wonder what the hell that is...

#19 horred the plague

horred the plague

    Scourge of the Seven Seas

  • Modder
  • 1899 posts

Posted 06 May 2006 - 10:34 PM

I hope the CREs stats are not so beefed up to make the respective P&P counterparts wonder what the hell that is...



Open some files and see for yourself. :P

#20 Salk

Salk
  • Modder
  • 1419 posts

Donator

Posted 07 May 2006 - 06:21 AM

I will certainly do it... :P

Please can you take a look at this topic and tell me what you think about it,horred ?
http://www.shsforums...showtopic=20241

Also can you confirm you got my PM sent some days ago ?

Thanks! :cheers: