I found a problem like this and fixed it in R2R for patch 0.4.
The issue I found was caused by a combination of 2 things:
1) The "dirty bomb" effect is enabled by the "bAmphib" being set to 1 in a promotion since the advanced espionage mod that was incorporated re-uses promotion tags for other things when the spy has the promotion.
2) Spys can not normally get the regualr Amphibious promotion since it is not available to their unitcombat. But promotions can be given to a unit in Python regardless of whether or not they are normally allowed for that unit. The Amphibious promotion is given out as one of the possible free promotions in the Python\DancingHoskuld\InitMilitaryPromos.py file's onUnitBuilt function. The only restrictions it applies are a check for the domain type (land, water, air) and a check for a list of unit types that doesn't get any free promotions in there (things in a list of settler and worker types or a hero type unit). Any other unit can get any promotion that it gives out.
So a spy can, at random, get some promotions that it is not supposed to have, giving it the ability to do a variety of missions long before they are supposed to be available due to the way they re-use tags for thigns other than the original effect.
So the fix is to modify Python\DancingHoskuld\InitMilitaryPromos.py such that it will not give out any promotions to units that have a unitcombat of UNITCOMBAT_SPY. The C2C version of this file already switched to checking against a list of unitcombat types instead of a list of unit types, so you can just add the spy unitcombat to the list.