Mash said:
Not sure what you did to fix the patch.dat path changing problem. But as my appearance mod uses some of the same fallout functions its still causing it to occur. To point a finger, the culprit would probably be my LoadHeroDat function.
weird, my fix didn't actually involve modifing any fallout code, it was just a problem with the way I was reading back the paths list, so you didn't do anything that would have effected it.
Even weirder, I now can't cause the original problem, even if I remove my fix and your bit of code...
Edit: ok, if I remove your code completely it goes away, setting EnableHeroAppearanceMod=0 on its own isn't enough. It doesn't look like patch000.dat is getting loaded at all here unless I comment out the 'call LoadHeroAppearance;' line in the main menu function, hence why I couldn't cause the problem without the fix.
Edit2: I think the problem is that you're fooling fallout into thinking a patch dat is already loaded. I believe that changing LoadHeroDat to manually inject the paths into the paths structure instead of calling _db_init will fix it, but it'll have the side effect that any frm's in a patch dat or in the data folder will override those in your apperence folder. Is that going to be a problem? Are there likely to be any file name conflicts?
Edit3: urk, ReloadCritterDat's seems to be stomping on stuff too. I think I should just change it so that disabling it in the ini completely disables it for now, and later maybe we should try and rewrite it using sfalls existing filesystem override functions, rather than messing with fallout's db file functions.
Edit4: And the last edit for now, reuploaded with just that change. (New static variable 'loaded' in HeroApperence.cpp that gets inited to 0, then set to 1 in EnableHeroAppearanceMod(). All other non-static functions instantly return if loaded==0.)