• New Horizons on Maelstrom
    Maelstrom New Horizons


    Visit our website www.piratehorizons.com to quickly find download links for the newest versions of our New Horizons mods Beyond New Horizons and Maelstrom New Horizons!

Fixed Issues with Female Characters and Officers: Frequency and Variety

With Nelson as starting character, I just encountered an "OldWoman" as Enc_walker in Kingston town.
If I understand you correctly, that doesn't happen for you anymore at all, does it?
Quite the reverse. "OldWoman", or variants thereof, are among the few types who do appear among the limited subset. And periods in which it's Kingston rather than Port Royal don't seem to have the problem anyway - I also started a free play as Nelson, wandered around Kingston and saw a more complete set of models. Now try starting "Tales of a Sea Hawk", or generate a free play character who starts in Port Royal, and see what happens.

But for now I haven't actually been able to replicate the problem. Could you please remove your "options" file and try again on a new game?
Then if it still happens, please tell me your exact game starting settings and possible custom options so that I can try to replicate it.
I effectively did that when I reinstalled the entire game from scratch to get the latest update working. Both before and after that, only the limited set of models were to be seen in any town when I was playing the "Bartolomeu" storyline. Only after I modified "initModels.c" to replace the "AssignModelTypeNatMask(isstart, model, "Upper_Citizens", 1.0, GetNationStringNorthEuroFr());" lines did I get a more complete set when starting "Tales of a Sea Hawk".

Settings are difficulty "Adventurer"; realism mode "Realistic"; "InternalSettings.h" edited to disable "ALLOW_LOCKED_PERKS" and "REALISTIC_ABILITIES", and enable "SIDESTEP_ENABLED"; advanced options menu set to allow brothel access, and survival 130 so I never need to bother with resurrecting to a tavern before reloading a savegame. "Engine.ini" set to 1024x768 resolution, full screen, loading tips 0.
 
How about "dan_tg3"? Does she show for you as well?

I probably won't have time to further look into this for now one as some other things need doing too.
In the meantime, you could try the tests I suggested on the previous page to see if you can catch anything out-of-the-ordinary with those.
 
How about "dan_tg3"? Does she show for you as well?
Yes, and so do other characters with the line:
Code:
AssignModelTypeNatMask(isstart, model, "Upper_Citizens", 1.0, GetNationStringNot(PIRATE));
They're rare compared to the "towngirl7", "towngirl5", "towngirl3_1" and "Oldwoman" types, but they do occasionally show up.

Anyway, I already fixed the problem - sort of. The modified version of "initModels.c" which I posted here has the offending lines containing "GetNationStringNorthEuroFr()" replaced, resulting in a wider range of character models walking around town. It just means the attempt to tie models to specific nations is effectively disabled, and that wasn't working anyway. (I'll maybe have a look at "LAi_monsters.c" and try to bypass that code, then see if a full range of models then appears with the original version of "initModels.c".)
 
Indeed something weird IS going on; the big question is how and why. And why this is apparently different now compared to Beta 3.4.

One thing I wonder about.... In LAi_monsters.c find this:
Code:
ainfo.model = GetRandomModelForTypeExSubCheck(sti(ainfo.iscombat), ainfo.model, ainfo.sex, sti(ainfo.nation));
Replace with this:
Code:
ainfo.model = GetRandomModelForTypeExSubCheck(sti(ainfo.iscombat), ainfo.model, ainfo.sex, GetCurrentLocationNation());
I don't know where that "nation 266" came from or where that was defined. If I searched properly, it in fact wasn't defined anywhere, which could throw the code out of whack.
This change ensures that attribute isn't even used, whether it is properly defined or not.
Instead it uses a function that I know to return a sensible nation number. Perhaps that helps?
 
I've made that change to "LAi_monsters.c" and a wider range of character models is certainly now wandering around towns. The easiest to spot, when she shows up, is "towngirl6", who never appeared as a random walker before. I put back the original version of "initModels.c", not that this was significant because that file has no effect unless I start a new game, whereas the updated version of "LAi_monsters.c" has resulted in more different citizens wandering around town in my ongoing "Bartolomeu" game.

Bug fixed. :onya
 
So are you saying that the current Beta 3.5 WIP version of initModels.c together with my GetCurrentLocationNation() change actually WORKS!?!? :shock
I wouldn't have expected it to be that easy....

The next step I was considering is to give ALL models the apparent WRONG model assignment and check if anything still shows up at all.
If you force every model to be bugged, it becomes much simpler to replicate it after all. ;)
 
So are you saying that the current Beta 3.5 WIP version of initModels.c together with my GetCurrentLocationNation() change actually WORKS!?!? :shock
I wouldn't have expected it to be that easy....
Apparently so.

The next step I was considering is to give ALL models the apparent WRONG model assignment and check if anything still shows up at all.
If you force every model to be bugged, it becomes much simpler to replicate it after all. ;)
There's a saying, "If it ain't broke, don't fix it". ;) Unless there's further trouble with models which needs fixing, it's probably time to mark this one as done now. Besides, I was the only one to even notice the problem in the first place, so even if it is still broken, nobody else is likely to care. There's plenty more needing to be fixed without re-breaking something that is apparently now fixed...
 
Good news! I'll mark it "Fix in Progress" then and hopefully you and others can keep an eye out for it when the next update is posted.

Besides, I was the only one to even notice the problem in the first place, so even if it is still broken, nobody else is likely to care.
I care. It is so much nicer when code actually performs like it was once intended to!
Indeed not game-breaking though, so should probably be a bit lower priority than most.
 
I don't know where that "nation 266" came from or where that was defined. If I searched properly, it in fact wasn't defined anywhere, which could throw the code out of whack.

just in passing I noticed 266 set to ALL_NATIONS in model.h which is then used in the intialisation of models in initModel.c (and I remembered reading "somewhere" about it appearing as a "rogue" setting) so that is how it arises if not subsequently overwritten.
 
Ah, that does explain where that number comes from!
Indeed I'm not at all sure if overriding that and putting in the location nation number is actually a proper fix.
As far as I can tell, the whole model system is rather complex and I'm not overly familiar with it.
 
Back
Top