I've been replaying my whole "Ardent" storyline to check that everything still works under the current installation. One bit which didn't is where, following some fun and games on Isla Mona, you impersonate a French frigate captain, join a French fleet, then leave Isla Mona and slip away from the fleet during the next night. Or, if you're brave, foolhardy or impatient, you can hoist a hostile flag and try to take on two frigates and a 3rd rate warship using just your own single frigate.
Except that when I hoist a Spanish flag, the French ships don't care, they stay friendly.
The problem is the HoistFlag function in "PROGRAM\NATIONS\nations.c", specifically this bit:
This doesn't work with "iNation", which is the argument being passed to "HoistFlag", the nation of the flag you're hoisting. It does work if I put in an intermediate variable:
Didn't I need to do this on a previous occasion? I've found a version of HoistFlag in the post-28th July fixes with that fix in place. But it seems to have been left out of the 7th January version. There may have been some other fix which was supposed to make the intermediate variable unnecessary; if so, either it's not working any more or it, too, was left out of the 7th January install. Anyway, with the intermediate variable in place, HoistFlag works properly, and when I raise my Spanish flag, the genuine French ships turn properly hostile.
Incidentally, when I was naming the French commanders, I used my usual method of randomly picking a name out of "Characters_names.c", and one of them ended up with "Rimeaux". This was close enough to "Rimmer", as in Arnold Rimmer, the cowardly hologram character from the TV series "Red Dwarf", so the captain was duly named Arnaud Rimeaux. I ran the battle a few times to sort out various things, and in three battles out of three, Rimeaux surrendered. I swear I did not program him to do that! In fact, I don't know how to make him more likely to surrender. (I do know how to make someone incapable of surrendering, which is why you're not getting the 3rd rate flagship without a fight.)
Except that when I hoist a Spanish flag, the French ships don't care, they stay friendly.
The problem is the HoistFlag function in "PROGRAM\NATIONS\nations.c", specifically this bit:
Code:
if(GetNationRelation(iNation, sti(rCharacter.nation)) == RELATION_ENEMY)
{
SetMutineer(rCharacter, true);
bCompanionMutiny = true;
}
Code:
iNation1 = iNation;
if(GetNationRelation(iNation1, sti(rCharacter.nation)) == RELATION_ENEMY)
{
SetMutineer(rCharacter, true);
bCompanionMutiny = true;
}
Incidentally, when I was naming the French commanders, I used my usual method of randomly picking a name out of "Characters_names.c", and one of them ended up with "Rimeaux". This was close enough to "Rimmer", as in Arnold Rimmer, the cowardly hologram character from the TV series "Red Dwarf", so the captain was duly named Arnaud Rimeaux. I ran the battle a few times to sort out various things, and in three battles out of three, Rimeaux surrendered. I swear I did not program him to do that! In fact, I don't know how to make him more likely to surrender. (I do know how to make someone incapable of surrendering, which is why you're not getting the 3rd rate flagship without a fight.)