God-Emperor
Deity
They are not supposed to negate it, it just turns out that features override terrain when it comes to attack and defense bonuses and I expect Jon Shafer didn't know about this (it isn't common knowledge and there is no particular reason it should work that way). The armor is given as a defensive bonus on the "Space" terrain (actually TERRAIN_TUNDRA since space is actually tundra). Therefore when the unit is on a feature it loses the bonus since only the modifiers for the feature are applied, not the one for the underlying terrain.
It would have been done that way because there is no generic defense only bonus in the promotion data. It can be fixed via the XML by giving the same bonus when on each of the feature types (asteroids, radiation clouds, gravity fields, supernova area, solar systems, etc.). This would work but it would add a statement about it for every feature type, which would look bad.
Ideally, the solution is to do either of these:
1) add a new tag to the promotion data that is just "defensive bonus" that always applies regardless of terrain, features, or anything else.
2) make a small change to the promotion processing so that it always checks for both the feature and terrain bonuses instead of only checking for a feature bonus if on a feature.
Either would require DLL changes, but the first would also require XML changes too.
It would have been done that way because there is no generic defense only bonus in the promotion data. It can be fixed via the XML by giving the same bonus when on each of the feature types (asteroids, radiation clouds, gravity fields, supernova area, solar systems, etc.). This would work but it would add a statement about it for every feature type, which would look bad.
Ideally, the solution is to do either of these:
1) add a new tag to the promotion data that is just "defensive bonus" that always applies regardless of terrain, features, or anything else.
2) make a small change to the promotion processing so that it always checks for both the feature and terrain bonuses instead of only checking for a feature bonus if on a feature.
Either would require DLL changes, but the first would also require XML changes too.