The main problem with this solution is that you have to repeat it every time a new version of AOM is released . I really don't want to do that, unless it can be automated somehow.
The missing strings reports are a dead giveaway that something is incompatible. You may not be able to observe it immediately, though. It is more likely the lack of special events that is going to be the problem.
Like a missing treaty expiry message: some hardcoded new constants in Diplomat.cpp, combined with TREATY_TO_EXPIRE having been moved from cut_str.txt to info_str.txt. AOM uses AOM_info_str.txt (based on the original info_str.txt), and does not expect TREATY_TO_EXPIRY in this file.
Each change in itself was really harmless. You have reorganised strings a little, to group related strings together, causing just a slight incompatibility. This is unlikely to be a problem, unless you have a mod changing (only) one of the 2 files. And actually, you only moved a couple of strings that were almost never used.
Someone else had a nice idea for a code change: let's make these eternal treaties expire after some turns. Just a slight incompatibility. No problem, because care was taken to notify the player a couple of turns in advance when treaties were going to expire.
Unfortunately, the notification message string happened to be one of the missing moved strings. I wasted a couple of days to find out what had happened to my treaties when I was trying to test some suspect withdrawal code that never seemed to fire properly . I had never noticed the treaty expiry code modification change, because it had been buried in a pile of other changes.
For maximum compatibility, just avoid moving things around, always append new items at the end of existing lists, and treat missing string reports as compiler warnings.
The missing strings reports are a dead giveaway that something is incompatible. You may not be able to observe it immediately, though. It is more likely the lack of special events that is going to be the problem.
Like a missing treaty expiry message: some hardcoded new constants in Diplomat.cpp, combined with TREATY_TO_EXPIRE having been moved from cut_str.txt to info_str.txt. AOM uses AOM_info_str.txt (based on the original info_str.txt), and does not expect TREATY_TO_EXPIRY in this file.
Each change in itself was really harmless. You have reorganised strings a little, to group related strings together, causing just a slight incompatibility. This is unlikely to be a problem, unless you have a mod changing (only) one of the 2 files. And actually, you only moved a couple of strings that were almost never used.
Someone else had a nice idea for a code change: let's make these eternal treaties expire after some turns. Just a slight incompatibility. No problem, because care was taken to notify the player a couple of turns in advance when treaties were going to expire.
Unfortunately, the notification message string happened to be one of the missing moved strings. I wasted a couple of days to find out what had happened to my treaties when I was trying to test some suspect withdrawal code that never seemed to fire properly . I had never noticed the treaty expiry code modification change, because it had been buried in a pile of other changes.
For maximum compatibility, just avoid moving things around, always append new items at the end of existing lists, and treat missing string reports as compiler warnings.
Comment