So, I've been fixing hydras (fast healing, more AoOs, etc.). And some of that involves editing protos.tab, which I've dropped into an override directory. It worked fine when I was spawning from the Temple+ DM menu. Then I was curious to see how dangerous it is to fight the hydra in the temple (I suspect still not very). So I teleported a party there, and started the fight. Then the hydra poisoned me. It also doesn't have either fast healing or regeneration. I see in a protos.tab extracted from the original DATs that the hydra has poison. I assume Co8 changed it to regeneration (because fast healing was broken). But somehow this one hydra uses the original proto line? How does that work? Is it a separate file somewhere? I notice it's also not hostile like the ones I spawn in from the DM. It has the same proto number as the other hydras, though. Anyone more familiar with how the actual module is put together know why this sort of thing would happen?
A mob in the original DATs has a lot of things already written into the mob, and it only draws from the protos.tab what isn't in the mob (which doesn't have to be much). Not sure if that answers your question, I dare say this is common knowledge. Generally speaking most of what it needs comes from protos.tab, since there is rarely need to change a mob (created from the proto) into something specific with additional stuff using WorldEd, but there may be something on the mob itself. Also, remember we have to start a new game to test this sort of thing, I hope you didn't forget that, or it may have already created the hydra from the original proto before you changed it EDIT: Also, wasn't the Hyrda in the Temple the only one? They may have re-used the proto for summoning spells, but wasn't that the only one. They may have then set up the mob to be unique, that would explain it, though it's not their modus operandi.
Yeah, I think that answers my question. I'm not really familiar with how the actual game locations are set up, so I didn't realize you could override so much of the proto in them. It sounds like that hydra must be pretty custom. I'm pretty sure I did try with a new game, since that was one of my thoughts on why it was behaving wrongly (already spawned). If that were the case, though, it would have had regeneration rather than poison anyway (since that's already in the Co8 proto). I think I saw a random encounter with hydras in the files somewhere. You're right that that's the only specifically placed hydra, as far as I'm aware. I could have sworn I fought a hydra with regeneration back in the day, so I guess it must have been the random encounter.
3.5 Hydras break assumptions: They can move AND full attack without a charge! Some can breathe fire or cold! They're wonderful as zombies who can partial charge while still effectively full attacking! Alleluia!
Yeah, sounds like they may have added that Hydra proto to random_encounter.py then tinkered the mob to make the Temple one unique. As I said, the devs didn't usually do that - they just made a new proto for basically everything - but that would explain it. An example of the mobs having weird setups is the gnolls in the Moathouse who had DR for some reason, that was coming from the mob and no amount of tinkering protos.tab was able to fix it - another strange choice, if that was even deliberate and not some weird corruption that snuck into the mob and got interpreted by the engine as DR.
I see. I didn't even know about mob files, but I see them in my dat extracts now. So, does that mean that every specifically placed creature has its own (binary) file specifying its information, and doesn't really even need a proto entry? Kind of makes the protos table seem a little bloated. I suppose the proto would often be used as a starting point to place things in the module editor or something, and they just didn't economize on that, or delete them after they weren't needed or something?
MOBs can override protos fields, but if they are unchanged they will be inherited from the proto. There's a bit field to indicate that IIRC. One common trick used by early scripters was to destroy MOBs and replace them with a fixed proto spawn (usually via some spawner object's heartbeat script). This also has the advantage of savegame compatibility.
Yeah, that's how the gnolls were fixed, I believe. For those of us who were spawning things by script before Agetian cracked the MOB code, mobs were initially a bit irrelevant, but they are easier to create, and priceless when used correctly. Then again, spawned things have their moments too, for sure. As I said, (and Sitra said better) they get everything that isn't in the mob, from the proto. Infinitely easier than setting up a mob by inputing every element into the editor.
Oh I see. So this is actually an unusual situation where they decided to override parts of the proto entry with exactly the same information. Or maybe you have to override the whole condition list and I just didn't notice the extra one.
Well, I can't comment on condition lists, although having to do the whole thing may not be an unreasonable assumption. As to it being unusual - generally speaking, you just generate a mob and not even open it, it all comes from protos.tab with a randomised inventory.
That theory doesn't work anyway. I checked, and the only differences I can see are the factions and the 'will kill on sight' script. They're otherwise identical. So I guess we'll never know why they did this.