If this error occurs, then the ENTIRE function is aborted in the middle of it trying to load flags. No wonder the flags can get a bit messed up at times. But while I managed to replicate this insanity EVERY time straight upon loading an old savegame by @Jason, I haven't yet been able to replicate it on demand in other situations. I found myself a bunch of pirate ships at sea, then made a Save at Sea and loaded that. This time, everything behaved perfectly fine. I now know what ISN'T the problem (it has nothing to do with array sizes), but the actual issue remains elusive. What I did do is to slightly modify the GetPirateFlag function to ensure EVERY character gets the required attributes set. Not sure if that will help, but it can't hurt.