/** * @brief Subverting Mission ends: UFO leave earth. * @note Build Base mission -- Stage 3 */ static void CP_BuildBaseGovernmentLeave (const campaign_t* campaign, mission_t* mission) { nation_t* nation; assert(mission); assert(mission->ufo); mission->stage = STAGE_RETURN_TO_ORBIT; /* Mission is a success: government is subverted => lower happiness */ nation = GEO_GetNation(mission->pos); /** @todo when the mission is created, we should select a position where nation exists, * otherwise subverting a government is meaningless */ if (nation) { const nationInfo_t* stats = NAT_GetCurrentMonthInfo(nation); NAT_SetHappiness(campaign->minhappiness, nation, stats->happiness + HAPPINESS_SUBVERSION_LOSS); } CP_MissionDisableTimeLimit(mission); UFO_SetRandomDest(mission->ufo); /* Display UFO on geoscape if it is detected */ mission->ufo->landed = false; }
/** * @brief Changes nation happiness by given value. * @note There must be argument passed to this function being converted to float. */ static void CP_ChangeNationHappiness_f (void) { float change; nation_t *nation; const nationInfo_t *stats; const mission_t *mission = MAP_GetSelectedMission(); if (Cmd_Argc() < 2) { Com_Printf("Usage: %s <absolute change value>\n", Cmd_Argv(0)); return; } change = atof(Cmd_Argv(1)); if (!mission) { Com_Printf("No mission selected - could not determine nation to use\n"); return; } nation = MAP_GetNation(mission->pos); assert(nation); stats = NAT_GetCurrentMonthInfo(nation); NAT_SetHappiness(ccs.curCampaign->minhappiness, nation, stats->happiness + change); }