So far, everything looks good from my end. MSVC Analyze does't have anything to complain about either. General building does though, in relation to line 528 of the patch, where it encounters a signed/unsigned mismatch in 'SCP_string main_hall_get_name(int index)'. Given that I can't think of a case where we won't ever have a main hall for it to ever be less than 0, maybe making index an unsigned or size_t or something may be in order and pulling out the 'index<0' bit.
Speaking of, I happen to see a lot of usage of INT. And while that is somewhat common to use, it is certainly easy, how many of them actually -need- to be INT's? It's good that we have a dynamic limit, but I can't help but wonder if other types might not be more suitable in some areas than others. Especially in cases where we don't need negative integers because we will always have or should have -something- present, even if just the default initialized value.
I'm not suggesting that we hold up putting in until those are addressed mind you. I'm in favor for it going in as is and getting tuned and tightened up once it is, so long as we don't forget. So, as long as nobody else see's anything worth correcting (other than that signed/unsigned mentioned earlier) I'm all for putting this in.