About the plasma cannon:
In FMP ruleset, there is a "dependency", but not a "requirement" on the STR_PLASMA_WEAPONS. So if some other technology "unlocks" the STR_PLASMA_CANNON then the dependency will be ignored. In FMP ruleset, there is nothing which unlocks it (that's why I was confused at first), but in the vanilla, it is unlocked by any of the following: STR_PLASMA_CANNON_DEP1, STR_PLASMA_CANNON_DEP2.
So -- if I understand the "dependencies", "requires" and "unlocks" correctly -- it is not a coding error.
There are several ways of fixing it, but I guess you figured it out already.
One question though: did you consider turning FMP into a master (i.e. total conversion)? Altough total conversion doesn't "feel" right, technically it would prevent conflicts between vanilla and FMP rulesets and also make your work easier I think.