/** * @brief Intercept mission ends: UFO leave earth. * @param[in] mission Pointer to the mission * @param[in] destroyed true if the UFO actually destroyed the installation, false else * @note Intercept mission -- Stage 3 */ void CP_InterceptMissionLeave (mission_t* mission, bool destroyed) { installation_t* installation; assert(mission->ufo); mission->stage = STAGE_RETURN_TO_ORBIT; /* if the mission was an attack of an installation, destroy it */ installation = mission->data.installation; if (installation) { vec3_t missionPos; Vector2Copy(mission->pos, missionPos); missionPos[2] = installation->pos[2]; if (destroyed && VectorCompareEps(missionPos, installation->pos, UFO_EPSILON)) INS_DestroyInstallation(installation); } CP_MissionDisableTimeLimit(mission); UFO_SetRandomDest(mission->ufo); CP_MissionRemoveFromGeoscape(mission); /* Display UFO on geoscape if it is detected */ mission->ufo->landed = false; }
/** * @brief console function for destroying an installation * @sa INS_DestroyInstallation */ static void INS_DestroyInstallation_f (void) { installation_t* installation; if (cgi->Cmd_Argc() < 2 || atoi(cgi->Cmd_Argv(1)) < 0) { installation = INS_GetCurrentSelectedInstallation(); } else { installation = INS_GetByIDX(atoi(cgi->Cmd_Argv(1))); if (!installation) { Com_DPrintf(DEBUG_CLIENT, "Installation not founded (idx %i)\n", atoi(cgi->Cmd_Argv(1))); return; } } /* Ask 'Are you sure?' by default */ if (cgi->Cmd_Argc() < 3 || !atoi(cgi->Cmd_Argv(2))) { char command[MAX_VAR]; Com_sprintf(command, sizeof(command), "mn_installation_destroy %d 1; ui_pop;", installation->idx); cgi->UI_PopupButton(_("Destroy Installation"), _("Do you really want to destroy this installation?"), command, _("Destroy"), _("Destroy installation"), "ui_pop;", _("Cancel"), _("Forget it"), nullptr, nullptr, nullptr); return; } INS_DestroyInstallation(installation); }