| 664 | } |
| 665 | |
| 666 | std::vector<std::string> AvailableOutcomes() |
| 667 | { |
| 668 | if (!Available()) |
| 669 | return {}; |
| 670 | // Three universal outcomes always work — every mission can be |
| 671 | // force-won (EMEnd1), force-lost (EMLoser), or force-killed |
| 672 | // (EMKilled) without needing a script-defined sensor. Append |
| 673 | // scripted endings (end1..end6) for those the mission declares. |
| 674 | std::vector<std::string> out{"win", "lose", "killed"}; |
| 675 | const auto scripted = MissionInfo::AvailableEndings(); |
| 676 | out.insert(out.end(), scripted.begin(), scripted.end()); |
| 677 | return out; |
| 678 | } |
| 679 | |
| 680 | void Invoke(std::string_view outcome, std::string& out) |
| 681 | { |