Add "goal" as a type recognized by scripted sexps. Also add `mn.Goals` as a collection to complement `mn.Events` and move the goal type to goal.cpp and goal.h to match event.cpp and event.h. The new `mn.Goals` collection contains the same data as the existing `Objectives` collection in the briefing UI library, so the latter could be deprecated.
* API version of the briefing map
* Cleanup
* Further cleanup
* # This is a combination of 2 commits.
Fix resizing and cleanup remaining static anim calls
Revert changes completely
* Fix documentation
* implement initBriefing and rearrange map drawing methods to match.
* Documentation
* nullptr
Follow-up to #4602. Overall the PR was good, but there are a few extra small changes that should go in. In order of priority:
1) The `exitLoop`, `skipMission`, and `skipTraining` functions should check for campaign mode.
2) The `isVisible` virtvar should be changed to a function, because calling it may have side effects. In standard usage, the briefing formula is evaluated exactly once per stage on briefing initialization, so scripts should follow this convention.
3) The `hasGoalsSlide` function should be called `hasGoalsStage`, because "stage" is the common terminology in FSO.
4) Paging out mission messages is already done in `game_level_close` and should be removed from not only the scripting method but the method it was based on.
5) For consistency, unused parameters should use the `SCP_UNUSED` macro.
6) The `isTraining` flag check can be slightly streamlined using the double-not trick.
* API elements required for the Briefing
* Resolve errors
* Check if the mission is a Scramble mission
* Add one missed flag check
* Slight API naming adjustment
* Address feedback
* Address Feedback again
* Differentiate var names