Drakous79 Posted December 5, 2012 Share Posted December 5, 2012 (edited) Storms over former XCOM membersEveryone knows storms over countries, who left XCOM project and sided with aliens. They can be small, medium or large (depending on a size of the country), sometimes covering a lot of Geoscape. I will show, how to decrease size of storms and how to turn them off completely. Changes take effect after new leaves.http://i.imgur.com/Ka7vN.jpg Storms entities are set in XComstrategyGame.upk, class XGCountry in relation to country size. function XGStrategyActor.EEntityGraphic GetStormEntity() { switch(m_kTCountry.iEnum) { case 0: case 15: case 8: case 2: case 1: case 19: case 7: return 21; break; case 21: case 20: case 18: case 22: case 25: return 22; break; default: return 23; } } // 21 = Large Storm (15 in hex) // 22 = Medium Storm (16 in hex) // 23 = Small Storm (17 in hex)In byte code it is (order is large / medium / small):0A 4D 00 2C 07 04 24 15 06 6F 00 0A 52 00 2C 15 0A 57 00 2C 14 0A 5C 00 2C 12 0A 61 00 2C 16 0A 6C 00 2C 19 04 24 16 06 6F 00 0A FF FF 04 24 17 XCOM EU Patch 5, Patch 6 - 0A 4D 00 2C 07 04 24 15 06 6F 00 0A 52 00 2C 15 0A 57 00 2C 14 0A 5C 00 2C 12 0A 61 00 2C 16 0A 6C 00 2C 19 04 24 16 06 6F 00 0A FF FF 04 24 17It is just a matter of replacing numbers to desired storm size. Large to medium = 21 to 22 (is what I prefer). All to small = 21 and 22 to 23. To turn storms completely off, provide number higher than 23, like 99 :smile: //Only Small and Medium Storms, Large Storms will be replaced with Medium Storms 04 24 15 replaced with 04 24 16 //Only Small Storms 04 24 15, 04 24 16, 04 24 17 replaced with 04 24 17 // No Storms - using 99 (63 in hex) as nonexistent entity 04 24 15, 04 24 16, 04 24 17 replaced with 04 24 63This WISIWIG editor is crazy... In XCOM EW, entities were shifted by +2. // 23 = Large Storm (17 in hex) // 24 = Medium Storm (18 in hex) // 25 = Small Storm (19 in hex)XCOM EW vanilla, Patch 1 - 0A 4D 00 2C 07 04 24 17 06 6F 00 0A 52 00 2C 15 0A 57 00 2C 14 0A 5C 00 2C 12 0A 61 00 2C 16 0A 6C 00 2C 19 04 24 18 06 6F 00 0A FF FF 04 24 19 Edited December 20, 2013 by Drakous79 Link to comment Share on other sites More sharing options...
Drakous79 Posted December 5, 2012 Author Share Posted December 5, 2012 (edited) Controlling abductionsAbductions can be a pain, because they come with a lot of panic. Default number of abduction sites, we have to choose from, is 3. With the Second Wave it is 4. Number of abduction sites can be lowered in two ways:by shooting down UFOs preparing the abduction. This requires ShowUFOsOnMission=1 in DefaultGameCore.Plenty of information regarding UFOs can be found in ShowUFOsOnMission and other UFO variables thread.with UPK surgery.In XComGameStrategy.upk, class XGStrategyAI is GetNumAbductionSites() function, where is what we need defined. function int GetNumAbductionSites() { // End:0x33 if(IsOptionEnabled(11)) { return int(class'XGTacticalGameCore'.default.SW_ABDUCTION_SITES); } // End:0x36 else { return 3; } }In byte code it is 04 38 44 12 20 6D FE FF FF 09 00 EF FD FF FF 00 02 EF FD FF FF 06 36 00 04 2C 03 The code changed a bit for EU Patch 5 and EW, because SW_ABDUCTION_SITES is no longer part of the 2nd wave . function int GetNumAbductionSites() { return 3; }XCOM EU Patch 5, Patch 6 - 4B 42 00 00 AB 1F 00 00 00 00 00 00 4A 42 00 00 00 00 00 00 00 00 00 00 4B 42 00 00 00 00 00 00 9F 01 00 00 26 2E 00 00 0E 00 00 00 0A 00 00 00 04 2C 03XCOM EW vanilla, Patch 1 - B2 4F 00 00 94 25 00 00 00 00 00 00 B1 4F 00 00 00 00 00 00 00 00 00 00 B2 4F 00 00 00 00 00 00 A7 01 00 00 79 2F 00 00 0E 00 00 00 0A 00 00 00 04 2C 03To lower number of abduction sites, change 03 to 02 or 01.To turn abductions completely off, change 03 to 00 (tested - 2 months without abductions).The number can be increased as well, but user interface is not dynamic in height and new buttons are not shown. Interface's max is 3. http://i.imgur.com/eUDpy.jpg The problem - user interface not being dynamicIn fact I've tried increasing the number of abductions sites to 4 by UPK surgery and with SW_ABDUCTION_SITES, but I got three buttons at maximum.The problem as I see it is, you cannot choose the fourth abduction site, but still the panic is increased in other 3 countries, meaning the player is out of control!http://i.imgur.com/mCoxk.jpgWe should increase the number of buttons in XComStrategyGame.upk, class UIMissionControl_AbductionSelection according to the number we set in GetNumAbductionSites(), in this case 4. function OnInit() { ... if(I < 3) ... } In bytecode it is 07 30 00 81 19 01 40 FB FF FF 0B 00 97 FF FF FF 00 1C 68 FD FF FF 4A 16 16 0F 01 88 0D 00 00 25 0F 00 90 0D 00 00 25 07 97 02 96 00 90 0D 00 00 2C 03 XCOM EU Patch 5, Patch 6 - 07 30 00 81 19 01 42 FB FF FF 0B 00 97 FF FF FF 00 1C 69 FD FF FF 4A 16 16 0F 01 88 0D 00 00 25 0F 00 90 0D 00 00 25 07 97 02 96 00 90 0D 00 00 2C 03XCOM EW vanilla, Patch 1 - 0F 01 01 10 00 00 35 2F 10 00 00 3B 10 00 00 00 00 19 1B 71 12 00 00 00 00 00 00 4A 16 09 00 46 45 00 00 00 01 46 45 00 00 0F 00 09 10 00 00 25 07 A4 02 96 00 09 10 00 00 2C 03 Replace 03 with 04 at the end.Basically we told the function to add the fourth button. But the UI remains static, so a keyboard have to be used in order to choose the fourth country (arrows, s, d). On the image bellow is the fourth country France.http://i.imgur.com/h8ji8.jpg Well, at least the control is not lost, but not being able to adjust UI menu height is sad.The Second Wave (does not apply to XCOM EU Patch 5 and higher, XCOM EW)As UI isn't cooperating with the Second Wave, I've decided to use SW_ABDUCTION_SITES setting in DefaultGameCore for my own purpose, changing GetNumAbductionSites() function to this: function int GetNumAbductionSites() { // End:0x15 if(IsOptionEnabled(11)) { return 4; } // End:0x36 else { return int(class'XGTacticalGameCore'.default.SW_ABDUCTION_SITES); } } SF: 07 33 00 1B A5 14 00 00 00 00 00 00 24 0B 16 04 38 44 12 20 6D FE FF FF 09 00 EF FD FF FF 00 02 EF FD FF FF 06 36 00 04 2C 03 RW: 07 15 00 1B A5 14 00 00 00 00 00 00 24 0B 16 04 2C 04 06 36 00 04 38 44 12 20 6D FE FF FF 09 00 EF FD FF FF 00 02 EF FD FF FFWhat it does is, that SW_ABDUCTION_SITES setting is used for normal play even with the Second Wave disabled :smile:And finaly how to get abductions in countries with satellite coverageBy default the game does not allow abductions in countries with satellite coverage, so we are not seeing abductions anymore after having complete satellite network.This behaviour can be changed in XComStrategyGame.upk, class XGStrategyAi, function DetermineBestAbductionTargets() by jumping from End:0xc0 to End:0xd9. I'm reposting this for purpose to have relevant info together. if(kCountry.LeftXCom()) { } // End:0xef else { // End:0xc0 if(kCountry.HasSatelliteCoverage()) { } // End:0xef else { // End:0xd9 if(IsTerrorTarget(eTargetCountry)) { } // End:0xef else { arrPossibleCountries.AddItem(eTargetCountry); } } } if(kCountry.LeftXCom()) { } // End:0xef else { // This is an implied JumpToken; goto J0xc0; kCountry.HasSatelliteCoverage(); // This is an implied JumpToken; goto J0xef; J0xc0: // End:0xd9 if(IsTerrorTarget(eTargetCountry)) { } // End:0xef else { arrPossibleCountries.AddItem(eTargetCountry); } } In byte code it is 07 9B 00 19 00 83 43 00 00 0A 00 41 24 00 00 00 1B B4 16 00 00 00 00 00 00 16 06 EF 00 07 C0 00 19 00 83 43 00 00 0A 00 74 24 00 00 00 1B 24 11 00 00 00 00 00 00 16 06 EF. XCOM EU Patch 5, Patch 6 - 07 C0 00 19 00 88 43 00 00 0A 00 76 24 00 00 00 1B 24 11 00 00 00 00 00 00 16XCOM EW vanilla, Patch 1 - 07 C0 00 19 00 13 51 00 00 0A 00 41 2B 00 00 00 1B 33 14 00 00 00 00 00 00 16 Change 07 to 06, so it would be 06 C0 00 ...After doing the change I got abduction mission with full satellite coverage on 25th December 2015 (The game is in a state I am ready to assault mother ship).ConclusionHope this post helps modders, who need to control abductions in some way. Hopefully we would get more dynamic UI one day, so the menu does not crop additional buttons. Edited December 20, 2013 by Drakous79 Link to comment Share on other sites More sharing options...
johnnylump Posted December 5, 2012 Share Posted December 5, 2012 This is great work. When you have abduction UFOs set to appear (ShowUFOsOnMission=1) and you have abductions continuing in a country despite satellite coverage, do you see the abduction UFO *in* the country where the abduction will take place? You'll recall we may have established that abduction UFOs appear over a random country a few days before the pick-your-country abduction event takes place. Link to comment Share on other sites More sharing options...
twinj Posted December 5, 2012 Share Posted December 5, 2012 How about turning this into an XCMM mod so people can install it! This is pretty cool work! Link to comment Share on other sites More sharing options...
Drakous79 Posted December 5, 2012 Author Share Posted December 5, 2012 (edited) Thank you guys! When you have abduction UFOs set to appear (ShowUFOsOnMission=1) and you have abductions continuing in a country despite satellite coverage, do you see the abduction UFO *in* the country where the abduction will take place?Yes I do see them. They spawn above target country. And it is kind of crazy, because they come in 2 waves. Maybe we can see them with SUoM=1 and without satellite coverage, because they spawn in range of another satellite. Like Europe - France, Germany, UK. Testing was done in a game, where I'm about to enter mother ship. Number of abduction sites = 3, ShowUFOsOnMission = 1. Every battleship going after satellite network was shot down. Also the Supply Barge was successfully intercepted. Rest was ignored. Council Report - Grade F! UFO-13 | 09. 12. | Supply Barge - Scout TargetUFO-14 | 12. 12. | Battleship - Terrorize Populace, RussiaUFO-15 | 18. 12. | Large Scout - Abduct Specimen, ArgentinaUFO-16 | 19. 12. | Large Scout - Abduct Specimen, GermanyUFO-18 | 19. 12. | Large Scout - Abduct Specimen, NigeriaUFO-17 | 19. 12. | Battleship - Destroy SatelliteUFO-19 | 21. 12. | Abductor - Abduct Specimen, GermanyUFO-20 | 21. 12. | Abductor - Abduct Specimen, ArgentinaUFO-21 | 21. 12. | Abductor - Abduct Specimen, Nigeria_________ 21. 12. | ABDUCTION - Nigeria, Germany and ArgentinaUFO-22 | 21. 12. | Battleship - Destroy Satellite_________ 22. 12. | COUNCIL - Bomb disposalUFO-23 | 23. 12. | Battleship - Destroy SatelliteUFO-24 | 25. 12. | Battleship - Destroy SatelliteUFO-25 | 26. 12. | Battleship - Terrorize Populace, Russia_________ 27. 12. | TERROR - Saint Petersburg, RussiaAs you see, I've got 3 large scouts, 3 abductors and just 1 abduction mission. And 2 battleships and just 1 terror mission. 3 large scouts ignored ... 3 abductors ignored ... 3 abduction sites.2 of 3 large scouts shot down ... only 1 spawned abductor ignored ... 1 abduction site!Got only one abductor after shooting down two large scouts so they are connected! That's crazy.3 large scouts ignored ... 2 abductors ignored and 1 abductor shot down ... 2 abduction sites.Strange is that abduction mission did not happen once, after toasting one of abductors.3 large scouts shot down ... no abductors ... no abduction sites.The 1st terror battleship ignored ... the 2nd terror battleship ignored ... 1 terror mission after the 2nd TB.The 1st terror battleship shot down ... the 2nd terror battleship ignored, but came sooner, between 15. - 18. 12. ... 1 terror mission after the 2nd TB.The 1st terror battleship ignored ... the 2nd terror battleship shot down ... no terror mission!Well, then what is the first battleship good for? Carrying more crew for later terror mission? I think I'll try to count aliens in St. Petersburg...Edit: Ok, I counted it, 10 units in every case.Result: 1 UFO, 1 terror, 1 council and 1 abduction mission. Okay, that's correct for default mission assignments. What puzzles me is that I am missing one late mission. I should get 1 more UFO or 1 more abduction mission. My LATE_UFO_CHANCE=50 so the roll for it had to fail, but then I would get 1 additional abduction (terror and council missions already in mission que ... function AddLateMission()). All countries are still XCOM members, so there should be enough abduction targets. Is the 1st terror battleship LATE_UFO?. Edit: No, it isn't. Tested with ShowUFOsOnMission = 0 and it didn't appear. Eh, seems like I got too far for answering the question :) Going to repair my Firestorm fleet... :) How about turning this into an XCMM mod so people can install it! This is pretty cool work!It would be lovely, but I feel such mod requires an option for a user to change the values (you know, the dynamic feature). Atm I will be happy, if people use the knowledge to help them balance panic in their mods :) Could you specify, what to include in the mod? Edited December 6, 2012 by Drakous79 Link to comment Share on other sites More sharing options...
johnnylump Posted December 6, 2012 Share Posted December 6, 2012 Great work! Thinking about the implications: With large scouts extremely easy to shoot down, it seems like the presence of a satellite over a country would generally have the same effect as before -- no abduction would take place. But you'd at least have to work for it. (I'm also taking down Abductors with 3 interceptors with Phoenix cannons, but sometimes the Abductor manages to escape.) OTOH, it might mean less abduction missions overall. The next question is, if you have partial satellite coverage, do the aliens prefer to pick countries without satellites, or is it entirely random? You might end up with a zillion crashed large scout missions, and miss a lot of the abduction maps over the course of a game It's too bad they don't have another UFO type, a fighter type that beats up your interceptors and firestorms, that blows up when it crashes and can't be assaulted. (And, for that matter, something between the large scout and abductor classes in size) You'd also need to adjust panic from UFOs and alloys and elerium from crashed UFOs, which are in DFC.ini. Perhaps one way to ensure abductions still happen is to increase repair times for interceptors and firestorms, so the player either runs out of interception capability, or has to pay to replace an interceptor. Just a thought. Link to comment Share on other sites More sharing options...
FlyingHigh10000000 Posted December 7, 2012 Share Posted December 7, 2012 So, in an attempt to make the game a bit more like the original, where XCOM was capable of addressing every single threat if they had the manpower and weapons, I've changed the simultaneous abductions from three to one, and, to balance things a bit, also enabled abductions over satellite-covered nations, and, again for balance, tweaked alloy/elerium values for UFOs across the board. Now what I'd like to do is make the aliens do more missions each month, that way XCOM isn't just doing their one mission and not losing anything for it. Alternatively, I could make panic penalties more harsh, but I'd prefer more missions. Any idea how to do that? Link to comment Share on other sites More sharing options...
Drakous79 Posted December 8, 2012 Author Share Posted December 8, 2012 (edited) Sorry for another wall of text ... it just happened. If I understand the code correctly, the game makes a plan for the next month by calling function AIAddNewObjectives() on pay day. The function sets how many abduction / terror / council missions and flying UFOs do we get next month. By default it is 1 terror / 1 council / 1 abduction misson and 1 UFO. Additions and adjustments to the default are set by few rules:There is no terror mission in the first month (This has confusing code. I would swear it would happen).Until looting Hyperwave Beacon, we get 1 more abduction mission and in the first three months 1 UFO (if EARLY_UFO_CHANCE roll successfull).After looting the beacon, we also get Late Mission adding 1 UFO (if LATE_UFO_CHANCE roll successfull). If LATE_UFO_CHANCE roll fails, function AddLateMission() tries to randomly select from terror / council / abduction mission, if they aren't planned or haven't happened, but in case of abduction, there have to be more than 3 abduction targets available (and there should be enough with jumping over satellites conditional earlier).But if we're always getting terror and council missions by default, Late Mission would add either LATE_UFO or additional abduction mission right? I can't find a situation, when AddLateMission() would be adding terror or council mission, so it may be a good place for some code improvement. Anyway, AIAddNewObjectives() calls AddNewAbductions() function, which creates array of abduction targets by calling DetermineBestAbductionTargets(). DetermineBestAbductionTargets() checks an array of 36 countries and selects countries, who are Council members still participating in XCOM project, have no satellite (conditional we jump over) and are not a target of terror mission. Function AddNewAbductions() also takes care about creating Abduction Blitz. In the end is a loop calling AddAbductionObjectives() function, which chooses cities for the abduction by passing number of cities with the array of abduction targets into PickAbductionTargets() function and then assigns objectives via AIAddNewObjective() into Linked Objectives Array. Function PickAbductionTargets() fires a loop, which filters (FilterCountries()) the array of abduction targets and randomly chooses one city of randomly chosen country. Next the function returns array of target cities. I'm missing what the filter does. It checks Avoid array defined in PickAbductionTargets() as arrContinents = arrContinents. I would understand it filtering out countries on a continent to avoid, but where is defined, what continent should be avoided and why? Can anybody check it please? The array seems empty. With large scouts extremely easy to shoot down, it seems like the presence of a satellite over a country would generally have the same effect as before -- no abduction would take place. But you'd at least have to work for it. (I'm also taking down Abductors with 3 interceptors with Phoenix cannons, but sometimes the Abductor manages to escape.)You are right about the work. It's fine to decide - let it happen and face battleships, let it happen and control number of sites or shoot all crafts responsible for it. In unmoded game, the satellite over a country restricts the abduction from happening there. Jumping the conditional removes the restriction, so we get enough locations and if ShowUFOsOnMission = 0, the abduction should always happen. With ShowUFOsOnMission = 1 is the effect different, because we get +3 or +6 UFOs to take care of and the decision. I think you could use more armor on interceptors for such unequal fight. OTOH, it might mean less abduction missions overall. The next question is, if you have partial satellite coverage, do the aliens prefer to pick countries without satellites, or is it entirely random? You might end up with a zillion crashed large scout missions, and miss a lot of the abduction maps over the course of a game.Yes it is random. All countries are in the same array of targets, with or without satellite conditional jump. Also hard to balance, because it is up to the player's decision, if the abduction happens. I am working on something, that will add more decisions to air combat so you can expect more mess all around :) It's too bad they don't have another UFO type, a fighter type that beats up your interceptors and firestorms, that blows up when it crashes and can't be assaulted. (And, for that matter, something between the large scout and abductor classes in size) You'd also need to adjust panic from UFOs and alloys and elerium from crashed UFOs, which are in DFC.ini. Perhaps one way to ensure abductions still happen is to increase repair times for interceptors and firestorms, so the player either runs out of interception capability, or has to pay to replace an interceptor. Just a thought.UFO interceptor would be sweet - shooting down Skyranger! That would really piss me :) Good thought about resources and interceptors. Would be better, if the game sent either 3 Large Scouts or 3 Abductors depending on player's technology advancements, because 3 small and 3 big crafts at once throws in a lot of unbalance. Maybe someone could look into it. Now what I'd like to do is make the aliens do more missions each month, that way XCOM isn't just doing their one mission and not losing anything for it. Alternatively, I could make panic penalties more harsh, but I'd prefer more missions. Any idea how to do that?Aye. But there are some obstacles in the way. I'll make new post tomorrow to break the wall. I've tested 10 abductions missions per month each with 1 abduction site and it was very cool. If there's an abduction on geoscape and another pops up too soon, they actually stack to linked objective and the player have to choose like in vanilla! Edited December 8, 2012 by Drakous79 Link to comment Share on other sites More sharing options...
FlyingHigh10000000 Posted December 8, 2012 Share Posted December 8, 2012 That last part sounds awesome, almost like it was meant to be that way originally, and was changed for some reason or other, like a lot of other stuff in the game's files.(Flashbangs, multiple variations of Carapace armor, flamethrower, etc) Link to comment Share on other sites More sharing options...
BlackAlpha Posted December 8, 2012 Share Posted December 8, 2012 (edited) I included the "abductions in countries with satellites" part in the new Warspace version. :) Something I noticed is that: - When you get enough satellites, the abduction system will go into a new mode where abductions sometimes don't happen for a while. You can go for a month or two without abductions. - A UFO on an abduction mission will increase the panic if you don't shoot it down. And afterwards you get the usual abduction mission with its penalties. So you get two panic penalties in such a case. By the way, did anyone figure out how to decrease the scout UFO spam that you get when you put a satellite in most countries? Edited December 8, 2012 by BlackAlpha Link to comment Share on other sites More sharing options...
Recommended Posts