Hobbes77 Posted January 3, 2014 Share Posted January 3, 2014 I'm looking to document how missions are generated according to XComStrategyGame.upk. I only got access at the code for version 347752 (patch 3 I think) so I'm in a blank regarding any changes brought by the EW DLC. My question is what functions are used in XSG.upk to calculate the frequency and the days between missions and if those have been altered in EW. I've never learned coding so I'm a bit of a noob there but I'm trying to learn how to read the code. Link to comment Share on other sites More sharing options...
johnnylump Posted January 3, 2014 Share Posted January 3, 2014 XGStrategyAI --> AIAddNewObjectives should be your starting point. XGStrategyAI --> AddLateMission adds missions after the base assault. Link to comment Share on other sites More sharing options...
Hobbes77 Posted January 3, 2014 Author Share Posted January 3, 2014 AIAddNewObjectives* Council mission added each month* If Terror counter is less or equal to 0, add Terror mission and reset counter to 2* If the month is between April and May, calculate chance of 2nd UFO mission (50%?)* iAbductionsAdded - I can't understand this one Link to comment Share on other sites More sharing options...
Drakous79 Posted January 4, 2014 Share Posted January 4, 2014 (edited) XCOM EU and EW (checked EU 347752, EU 398179, EW 398180)XGStrategyAI.AIAddNewObjectives is called:when new game is started (XGStrategyAI.InitNewGame),and then on the 1st day of each month (XGGeoscape.GameTick calls XGStrategyAI.MakeMonthlyPlan). function InitNewGame() { <snip> m_iTerrorCounter = 2; // note this value for later if(!ISCONTROLLED()) // not playing tutorial { AIAddNewObjectives(); } } function GameTick(float fGameTime) { <snip> if((IsPayDay()) && !IsBusy()) // In EW there's also && !IsPaused() { <snip> if(!m_kDateTime.IsFirstDay()) // not the first day (not the 1st of March 2015) { <snip> AI().MakeMonthlyPlan(); } } } function MakeMonthlyPlan() { <snip> AIAddNewObjectives(); }I used to believe, that pay day is at the end of a month, but !m_kDateTime.IsFirstDay() condition proved me wrong. Technically it happens on a transition between two months, on the first game tick in the new month, when EncodePayDay() > m_iLastMonthPaid becomes true. XCOM EU and EW (checked EU 347752, EU 398179, EW 398180)XGStrategyAI.AIAddNewObjectives sets how many abduction / terror / council missions and UFOs do we get that month. I will separate the code, but it's all part of one function. function AIAddNewObjectives() { local array<XComGame.XGGameData.ECountry> arrVisibleTargets; local int iNumAbductions, iNumUFOs, iNumTerror, iMonth, iNumCouncil, iAbductionsAdded; m_iCounter = 0; iMonth = GetMonth(); if((Ceil(iMonth, 2) == 0) || World().m_kFundingCouncil.HasActiveCampaign()) // no HasActiveCampaign() condition in EW { AddCouncilMission(); ++ iNumCouncil; } Adds one council mission. Can be DLC mission too. Not sure about Ceil(iMonth, 2) == 0. Can someone explain how it works please? If I recall right, I read something (from Amineri) about council missions and council requests sharing mission slots in EW. I've tested 2 months in EW and got 2 satellite transfer requests instead of missions.------ if(-- m_iTerrorCounter <= 0) // every second month (in April, June, August, October, December, February) { AddNewTerrorMission(AI().DetermineBestTerrorTarget()); ++ iNumTerror; m_iTerrorCounter = 2; }As we saw XGStrategyAI.InitNewGame sets m_iTerrorCounter = 2. No terror mission in the first month. When the condition is checked, 1 is subtracted from m_iTerrorCounter so the second month (April) returns true.------ iNumUFOs = 1; // +1 UFO iNumAbductions = 1; // +1 abduction missionAdds +1 UFO and +1 abduction mission.------ if(STORAGE().EverHadItem(180)) // ever had eItem_HyperwaveBeacon equals to defeating alien base { AddLateMission(iNumCouncil, iNumTerror, iNumUFOs, iNumAbductions); } else { ++ iNumAbductions; // +1 abduction mission if((GetMonth()) > 0) // April and up; March and up with SW Marathon { if(((GetMonth()) < 3) || Roll(class'XGTacticalGameCore'.default.EARLY_UFO_CHANCE)) // April and May; April, May, June and July with SW Marathon; applies to the first year { ++ iNumUFOs; // +1 UFO if the roll succeeds (50% chance by default) } } }Prior to looting Hyperwave Beacon from alien base, adds +1 abduction mission and rolls for +1 UFO mission in April and May (March - July with SW Marathon). The chance is set in DGC.ini (EARLY_UFO_CHANCE). After looting Hyperwave Beacon from alien base, XGStrategyAI.AddLateMission is called. Now comes the fun.If there's no terror mission, adds +1 terror mission. If there's no council mission, adds +1 council mission. If there is enough abduction targets (>= 3), adds +1 abduction mission. If LATE_UFO_CHANCE (DGC.ini, 50% chance by default) roll succeeds, adds +1 UFO mission, else random mission (1., 2. or 3.) is added. If random mission is added depends on an array filled with missions added by points 1 to 3. If the array is empty, not missions are added when LATE_UFO_CHANCE fails.I am not sure point 2. can happen. Also this effectively adds terror mission to odd months.If LATE_UFO_CHANCE (DGC.ini, 50% chance by default) roll succeeds, adds +1 UFO mission, else +1 random mission is added. Random mission can be terror, council or abduction. It is randomly selected out of an array filled with missions of said type, that are not already planned (terror, council) and are possible (abduction). If the array is empty, not missions are added when LATE_UFO_CHANCE roll fails.See post #10 in this thread for more details about XGStrategyAI.AddLateMission.------ iAbductionsAdded = AddNewAbductions(iNumAbductions, iMonth == 0);This line calls XGStrategyAI.AddNewAbductions, that builds iNumAbductions count of abduction missions and sets iAbductionsAdded to return value of XGStrategyAI.AddNewAbductions, so it is known, if all planned abduction missions were created. XGStrategyAI.AddNewAbductions returns 0, if there are less than 2 abduction targets. Mostly all abduction missions are added and than the function returns iNumAbductions. If an abduction cannot be added (for an example when it adds 1 abduction and then there's not enough targets), the function returns iNumAbductions - failed additions. Next the function sets starting date for the first planned abduction to 11 + Rand(14) and the rest of abductions to Rand(8 ). Tutorial has abduction start date set to 24. Also the function calls XGStrategyAI.CreateAbductionBlitz, but SW Blitz option is deprecated in EU P6 and EW P1. XGStrategyAI.CreateAbductionBlitz selects cities (2 for tutorial and 3 for normal play) for m_arrFirstBlitzTargets array and sets m_iFirstBlitzCounter = iStartDate * 48. The Blitz mechanic still eludes me.------ if(iAbductionsAdded < iNumAbductions) { iNumUFOs += (iNumAbductions - iAbductionsAdded); }Abduction missions cannot be created? Nevermind, add UFO missions instead.------ if(iNumUFOs > class'XGTacticalGameCore'.default.UFO_LIMIT) { iNumUFOs = class'XGTacticalGameCore'.default.UFO_LIMIT; } Too many UFO missions? Nevermind, use a value from UFO_LIMIT (DGC.ini, 2 by default).------ arrVisibleTargets = DetermineBestVisibleTargets(); AddUFOs(iNumUFOs, arrVisibleTargets); // creates UFO missions AddNewOverseers(); // creates Overseer UFO mission }Creates UFO missions using iNumUFOs. Seems like there is Overseer mission added every month, until eItem_PsiLink is looted, but they are invisible, until Hyperwave Relay starts working. XCOM EW additions and differencesExalt missions.XCOM HQ Assault. Pretty long post :smile: If you see any errors, don't hesitate to correct them please. Edit: corrected outcome of XGStrategyAI.AddLateMission Edited January 4, 2014 by Drakous79 Link to comment Share on other sites More sharing options...
Drakous79 Posted January 4, 2014 Share Posted January 4, 2014 (edited) XCOM EU/EW mission frequency Monthly default:1 council2 abductions1 UFO Every even month (February, April, June, August, October, December) ... OR ... monthly after alien base defeat:+1 terror The first year's April, May ... OR ... March, April, May, June, July with SW Marathon:50% chance +1 UFO (early) - DefaultGameCore.ini EARLY_UFO_CHANCE = 50 Every month after alien base defeat:+1 abduction if there is enough abduction targets (>= 3)1 abduction instead of 2, if there is enough abduction targets (>= 3)50% chance +1 UFO (late) - DefaultGameCore.ini LATE_UFO_CHANCE = 50Chance (in a case the roll above fails) to get +1 terror or +1 abduction in odd month ... OR ... +1 abduction ... if there is enough abduction targets (>= 3)Chance (in a case the roll above fails) to get +1 random mission. Random mission can be terror, council or abduction. It is randomly selected out of an array filled with missions of said type, that are not already planned (terror, council) and are possible (abduction). Specials:+UFO, if abduction cannot be created, but up to DefaultGameCore.ini UFO_LIMIT = 2+1 Overseer UFO after Hyperwave Relay startBattle ships hunting satellitesAlien Base AssaultDLC missions are counted as council missions (3 Slingshot, 3 Progeny)EW Exalt HQ AssaultEW XCOM HQ AssaultEW Exalt Covert Ops and Extraction missions Edit: corrected 2 points in Every month after alien base defeat Edited January 4, 2014 by Drakous79 Link to comment Share on other sites More sharing options...
Hobbes77 Posted January 4, 2014 Author Share Posted January 4, 2014 (edited) First, both posts are clear explaining the functions, thank you. :smile:Regarding Council missions: XCOM EU/EW mission frequency Monthly default:1 council2 abductions1 UFO Every even month (February, April, June, August, October, December) ... OR ... monthly after alien base defeat:+1 terror The first year's April, May ... OR ... March, April, May, June, July with SW Marathon:50% chance +1 UFO (early) - DefaultGameCore.ini EARLY_UFO_CHANCE = 50 Every month after alien base defeat:+1 abduction if there is enough abduction targets (>= 3)50% chance +1 UFO (late) - DefaultGameCore.ini LATE_UFO_CHANCE = 50Chance (in a case the roll above fails) to get +1 terror or +1 abduction in odd month ... OR ... +1 abduction ... if there is enough abduction targets (>= 3 Regarding the Council mission, XGStrategyAI.AddLateMission seems to point that a Council mission will take place monthly after the alien base, which I'm not sure it fits what I've seen. There was also a post somewhere that mentioned that the mechanic on Council missions on EW has been changed. Probably the answer lies with the XGStrategyAI.AddCouncilMission. Another thing is time windows for the missions to take place, the Council ones seem to be in XGStrategyAI.AddCouncilMission but I cant figure it out either: noexport function AddCouncilMission(optional int iDays) { local int iRandDays; iDays = -1; // End:0xbc Loop:False if(World().m_kFundingCouncil.HasActiveCampaign()) { // End:0xb9 Loop:False if(m_iCouncilCounter <= 0) { // End:0xa2 Loop:False if(iDays == -1) { iDays = World().m_kFundingCouncil.GetDaysUntilNextCampaignMission(); } m_iCouncilCounter = iDays * 48; } } // End:0x163 else { iDays = int(class'XGTacticalGameCore'.default.COUNCIL_DAY); iRandDays = int(class'XGTacticalGameCore'.default.COUNCIL_RAND_DAYS); m_iCouncilCounter = iDays * 48; // End:0x163 Loop:False if(!ISCONTROLLED()) { m_iCouncilCounter += Rand(iRandDays * 48 * 2) - iRandDays * 48; } } } Is the iDays value expressed in half-hours? Edited January 4, 2014 by Hobbes77 Link to comment Share on other sites More sharing options...
Drakous79 Posted January 4, 2014 Share Posted January 4, 2014 (edited) Regarding the Council mission, XGStrategyAI.AddLateMission seems to point that a Council mission will take place monthly after the alien base, which I'm not sure it fits what I've seen. There was also a post somewhere that mentioned that the mechanic on Council missions on EW has been changed. Probably the answer lies with the XGStrategyAI.AddCouncilMission. I remember having council mission every month, but my memory is quite rusty. XGStrategyAI.AddLateMission adds council mission only if it isn't already planned (how I understand the code). The post you are reffering to was written by Amineri in Enemy Within Discovery Thread. Is the iDays value expressed in half-hours? I don't think so. Both EU and EW has these entries in DefaultGameCore.ini: COUNCIL_DAY=20 COUNCIL_RAND_DAYS=7In EW, only else branch is present from the code you posted (the one with DGC.ini variables). It is m_iCouncilCounter, that appears to be in half hours. Following m_iCouncilCounter into XGStrategyAI.GetEvents shows, that m_iCouncilCounter value is divided by two to get hours: function GetEvents(out array<THQEvent> arrEvents) { <snip> if(m_iCouncilCounter > 0) { AddAIEvent(9, m_iCouncilCounter / 2, 0, arrEvents); // mission type, hours, target, events array } <snip> function AddAIEvent(XComGame.XGGameData.EMissionType eMission, int iHours, XComGame.XGGameData.ECountry eTarget, out array<THQEvent> arrEvents)------ If we use DGC.ini entries in !ISCONTROLLED() branch of XGStrategyAI.AddCouncilMission: // iDays = 20 iDays = int(class'XGTacticalGameCore'.default.COUNCIL_DAY); // iRandDays = 7 iRandDays = int(class'XGTacticalGameCore'.default.COUNCIL_RAND_DAYS); // m_iCouncilCounter = 960 ... in days 20 m_iCouncilCounter = iDays * 48; if(!ISCONTROLLED()) { // 960 += Rand(672) - 336 ... in days 20 += Rand(14) - 7 m_iCouncilCounter += Rand(iRandDays * 48 * 2) - iRandDays * 48; } If counting right, the result is that council mission in EU can happen between the 13th and 27th day of a month, while not playing the tutorial. There are definitely exceptions. I remember the 3rd Slingshot mission Gangplank to happen X days after Confounding Light. Also in EW there are 2 council request windows as Amineri posted, but haven't looked into the mechanic yet. EW DefaultGameData.ini config variables: SLINGSHOT_LOWFRIENDS_START_DAY=51 SLINGSHOT_CNFNDLIGHT_DAYS=25 SLINGSHOT_GANGPLANK_DAYS=2 REQUEST_WINDOW1_MIN_DAY=5 REQUEST_WINDOW1_MAX_DAY=15 REQUEST_WINDOW2_MIN_DAY=17 REQUEST_WINDOW2_MAX_DAY=27 REQUEST_MISSION_CHANCE=50 Edited January 4, 2014 by Drakous79 Link to comment Share on other sites More sharing options...
Hobbes77 Posted January 4, 2014 Author Share Posted January 4, 2014 (edited) I was also looking at Amineri's post. I'm starting to summarize the info in your post and the one contained on Amineri's: Events Frequency Before Alien Base Mission* 2 Abductions each month.* 1 Terror Site every even month (April, June, etc.)* 1 Council Mission every month, between the 13th and the 27th, can be Slingshot campaign (EU only).* 1 Council Request each 20 days.** On EW, there are two monthly time windows, between the 5th and 15th days and between the 17th and 27th. ** There can be only 1 Council Mission each month. On each window there will be either a Mission or Request (25% chance for 2 Requests, 50% for Mission and a Request, 25% for a Request/Mission). The Slingshot and Progeny missions can fill either window. * 1 detected UFO each month, either crashed or landed. ** 50% chance for a 2nd detected UFO during April or May (March to July with Second Wave's Marathon). Special Missions* On the Enemy Within DLC, Slingshot's Friends In Low Places mission happens on day 51, or around April 20th. Confounding Light mission happens 25 days after (around May 15th) and Gangplank 2 days afterwards.* Also in EW, the Portent mission of the Progeny campaign is the Council mission in the late April window. * EXALT appears on June, on the 12th to 24th (Easy and Normal) and 6th to 24th (Classic and Impossible). After Alien Base Mission* 1 monthly Abduction mission.* 1 Terror Site every month.* 1 Council Mission every month, between the 13th and the 27th, can be Slingshot campaign (EU only).* 1 Council Request each 20 days.** On EW, there are two monthly time windows, between the 5th and 15th days and between the 17th and 27th. ** There can be only 1 Council Mission each month. On each window there will be either a Mission or Request (25% chance for 2 Requests, 50% for Mission and a Request, 25% for a Request/Mission). The Slingshot and Progeny missions can fill either window. * 1 detected UFO each month, either crashed or landed.** 50% chance for a 2nd detected UFO each month.** Random Mission - if the 2nd UFO wasn't added, the game may add an additional Abductions, Terror or Council mission. The AI will choose randomly between the mission types according to the following criteria: Terror and Council missions can only be chosen if they haven't been already scheduled for the month; in the case of Abductions, they are only chosen if there are 3 or more countries without satellites. If none of the criteria is met, there won't be an additional mission added. Special Missions* Base Defense - 2 to 3 weeks after XCOM assaults the Alien Base (EW DLC)** Progeny campaign Deluge and Furies missions - both take place the month after Base Defense and building the Psionic Lab. Furies takes place 7 days (168 hours) after Deluge.* EXALT appears on June, on the 12th to 24th (Easy and Normal) and 6th to 24th (Classic and Impossible). Updated with Drakous and Amineri's info below this post. Edited January 4, 2014 by Hobbes77 Link to comment Share on other sites More sharing options...
Amineri Posted January 4, 2014 Share Posted January 4, 2014 The function XGFundingCouncil.Update is also called on the 1-hour tick that updates most of the base-related updates (note that other alien objectives are updated on a half-hour tick). Just to start off the whole updating process from the beginning, it all starts with XGGeoscape().Tick(float fDeltaT), which calls XGGeoscape().GameTick(float fGameTime). I think Tick is what is used by most Unreal games to manage real-time events, while GameTick performs the translation from real-time to in-game time (i.e. Geoscape time passing faster than real time). Within GameTick :UpdateShips happens in real-time, since they are flying around as you watchAIUpdate() is called every 1800 seconds, or 1/2 hour, via : if(m_fAITimer <= float(0)) { AIUpdate(); m_fAITimer += float(1800); } HQ().Update() is called every 3600 seconds, or 1 hour, via: if(m_fGameTimer <= float(0)) { HQ().Update(); m_fGameTimer += float(3600); } At the end is the check for PayDay / EndOfMonth conditions, which calls XGFundingCouncil.OnEndOfMonth, XGWorld.CouncilMeeting, XGStrategyAI.UpdateObjectives, and XGStrategyAI.MakeMonthlyPlan. So the StrategyAI does make monthly plans, but also updates those plans every half hour, which is what allows it to launch the plans on schedule. Occasionally new objectives get added -- such as when you fail to shoot down a scout UFO, a new mission to shoot down your satellite gets added. Regarding the Funding Council stuff ... it appears that they don't actually get planned out. If you forward and see what Council "thing" you get, then re-load and advance again, you generally get a different request from the Council, meaning that the Council stuff isn't being (in general) planned out at the start of month. I'm not totally sure what is happening within XGStrategyAI with regard to Council Missions. That XGHeadquarters.Update function that is called every 1 hour of game time does the following : function Update() { local XGFacility kFacility; UpdateHiringOrders(); UpdateInterceptorOrders(); UpdateSatellites(); foreach m_arrFacilities(kFacility,) { kFacility.Update(); } World().m_kFundingCouncil.Update(); //return; At the end is a call to XGFundingCouncil.Update. This FC Update function is a little bit longer, so I'll summarize it :Loop over possible FC Requests and tick down their cooldown timer. Each type of FC Request can only be made so often (this is set in DefaultGameData.ini to 10 days)Count down the timer on pending FC RequestsCounts down the m_iFirstRequestCountdown and m_iSecondRequestCountdown countersThese are set in SetupMonthlyRequests based on DGD.ini data (randomized within a possible range of days: function SetupMonthlyRequests() { m_iFirstRequestCountdown = (((REQUEST_WINDOW1_MIN_DAY + Rand(REQUEST_WINDOW1_MAX_DAY - REQUEST_WINDOW1_MIN_DAY)) - 1) * 24) + Rand(24); m_iSecondRequestCountdown = (((REQUEST_WINDOW2_MIN_DAY + Rand(REQUEST_WINDOW2_MAX_DAY - REQUEST_WINDOW2_MIN_DAY)) - 1) * 24) + Rand(24); //return; } From the DGD.ini: REQUEST_WINDOW1_MIN_DAY=5 REQUEST_WINDOW1_MAX_DAY=15 REQUEST_WINDOW2_MIN_DAY=17 REQUEST_WINDOW2_MAX_DAY=27 When each timer counts down to 0, it turns off the timer and calls: if(ChooseMissionOrRequest()) { DetermineNewFCMission(); } else { DetermineNewFCRequest(); } The ChooseMissionOrRequest checks:If already done a Council mission this month, return false (i.e. FC Request)If in Month 1 (April), and Progeny is active, return true (this is a forced trigger for Progeny 1st mission)If ProgenyIsActive and HQAssaultIsCompleted return true (this is the trigger for the Furies mission, I think)Otherwise return Rand(100) < REQUEST_MISSION_CHANCE;From the DGD.ini, REQUEST_MISSION_CHANCE=50 So in the absence of any special Progeny conditions, each chance has a 50/50 chance of being a mission or a Request, excepting that only 1 Mission per month is allowed.The possible results are :2 FC Requests : 25% chanceFC Mission followed by FC Request : 50% chanceFC Request followed by FC Mission : 25% chanceSo there's a 75% chance each month to get a mission. Progeny 1st mission is set up to trigger as the first mission in the first slot in April, and the Progeny 3rd mission is set up to trigger as the first mission immediately following the HQ base defense mission. The Progeny 2nd mission has a different set of triggers located elsewhere, and I haven't quite yet sorted out how the Slingshot mission triggers fit into all of this (they might be getting invoked directly from XGStrategyAI). The DELUGE_GAP_HOURS variable is used in XGFundingCouncil.PostCombat : if((kMission.m_iMissionType == 7) && bSuccess) { if((m_iFCMissionsThisMonth == 0) && m_iFCRequestsThisMonth == 0) { if((m_iFirstRequestCountdown > 0) && m_iFirstRequestCountdown < DELUGE_GAP_HOURS) { m_iFirstRequestCountdown = DELUGE_GAP_HOURS; } } 7 = eMission_HQAssault in this case, so it is set up to trigger the next Deluge FC mission exactly 7 days after the HQ Assault mission, but only if no FC Missions/Requests have been completed in the current month. If you've already done a FC Mission/Request, then it gets deferred to the first mission in the next month. Link to comment Share on other sites More sharing options...
Drakous79 Posted January 4, 2014 Share Posted January 4, 2014 (edited) After Alien Base Mission* Council - 1 mission every month, between the 13th and the 27th.** Gets added even with an active Slingshot or Progeny campaign? Slingshot and Progeny missions are counted as council missions. Council mission is added and it can be DLC one. After Alien Base Mission** 1 additional mission if there's 3 or more countries still without a sat.* 1 Terror Site every month.** 50% chance for a 2nd detected UFO each month.* Random Mission - if the 2nd UFO is added, then either an additional Terror, Council or Abductions mission will be randomly generated for the month. Many apologies, I read XGStrategyAI.AddLateMission wrong! Will fix it in previous post. Random mission happens, if the second UFO is not added. Also type of random mission depends on:if that type of mission was not already added by XGStrategyAI.AIAddNewObjectives - applies for terror and council missionif there's enough abduction targets - applies for abduction missionif a mission is randomly selectedSo in case terror and council mission is added by XGStrategyAI.AIAddNewObjectives and there's not enough abduction mission targets, nothing is added into arrMissions array and there'll be no mission. In case all 3 types of mission were added into arrMissions array, only one of them (randomly selected) will happen. function AddLateMission(out int iNumCouncil, out int iNumTerror, out int iNumUFOs, out int iNumAbductions) { local array<XComGame.XGGameData.EMissionType> arrMissions; local XComGame.XGGameData.EMissionType eMission; local array<XComGame.XGGameData.ECountry> arrAbductionTargets; if(iNumTerror == 0) // if there's no terror mission added { arrMissions.AddItem(7); // then add it to arrMissions array } if(iNumCouncil == 0) // if there's no council mission added { arrMissions.AddItem(9); // then add it to arrMissions array } arrAbductionTargets = DetermineBestAbductionTargets(); if(arrAbductionTargets.Length >= 3) // if there are enough abduction targets { arrMissions.AddItem(2); // then add abduction mission to arrMissions array } if(Roll(class'XGTacticalGameCore'.default.LATE_UFO_CHANCE)) // roll for UFO { ++ iNumUFOs; // +1 UFO on successful roll } else // if the roll failed { eMission = arrMissions[Rand(arrMissions.Length)]; // choose one of missions that were added to arrMission array; 0 if no mission added switch(eMission) { case 7: // create terror mission, if eMission == 7 AddNewTerrorMission(AI().DetermineBestTerrorTarget()); ++ iNumTerror; break; case 9: // create council mission, if eMission == 9 AddCouncilMission(); ++ iNumCouncil; break; case 2: // create abduction mission, if eMission == 2 ++ iNumAbductions; break; default: } }Edit: typos Edited January 4, 2014 by Drakous79 Link to comment Share on other sites More sharing options...
Recommended Posts