If there had been a French ship near me when the British flag was up, it would not have remembered me being hostile because by the time I was ashore, it would have been underwater.The memorizing is ship-dependent. A ship that was on the other side of the island when you went ashore would not remember you as being hostile and might believe your friendly flag when you go back to sea.
But a ship that you passed relatively closely would have seen you going in under a British flag.
Try renaming your ship and see if they start believing you again.
That's easily enough done. Just change the calculation line to:I think the false flag detection code was just dumped into a default function which is run very frequently.
That frequency isn't intentional, but simply a result of what was simple to code at the time.
@Levis was intending to have a look at such too-frequent checks and tone things down a bit. That'll help nicely with performance too.
In the meantime, the range of chance values should just be really, really small. So that while there IS a chance of being recognized any second, that chance is always low.
Code:
float chance = rank/MAX_RANK * (11.0-sneak)/100.0;
In the line:
Code:
chance = fclamp(CHANCE_DETECT_FALSE_FLAG_BASE, CHANCE_DETECT_FALSE_FLAG_MAX, chance);