bugfix(ai): fix crash when AI fires China Nuclear Missile while another is under construction #1769
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.

Addresses Issue #1664
The behavior differs between versions:
Generals: Causes visual bugs (missile launches from scaffold) but does not crash
Zero Hour (GeneralsMD): Crashes with a NULL pointer dereference
Root Cause Theory:
For Nuclear Missiles with
MissileLauncherBuildingUpdate, this causes issues because:m_specialPowerModulepointerupdate(), which exits early forOBJECT_STATUS_UNDER_CONSTRUCTIONMauller's fix (#1218): Prevents exploit where special power timers initialize to 0
This fix (#1664): Prevents AI from firing special powers from buildings under construction
Proposed Fix:
Prevention (AIGroup): Skip buildings under construction when firing special powers. Guarded by !RETAIL_COMPATIBLE_AIGROUP flag
Protection (MissileLauncherBuildingUpdate): Add NULL check to return early if the module isn't initialized. Always active in all builds.
Note: Not yet tested. Also, added Mauller's fix to Generals