Jump to content

R&D Multiple Alien Bases / Retaking Lost Countries


Amineri

Recommended Posts

Use option 1, of course. I always thought it was kind of lame, that outsiders were removed from game after base assault mission (as already number of alien types in game are too few, imho).

And making skeleton key not spendable would be sort of imbalancing (practically free and unlimited base assaults).

 

Option 1 is easier for the player and easier to code, but option 1 is intriguing me. I'm just not sure if it's crossing the line into "too much"

Option 1 (making more skeleton keys) is only logical solution, why it would be crossing line too much?

 

If you go with number 1, any modder would have to ensure that outsiders can be encountered somewhat regularly after the first base mission. I believe they are eliminated from the game in vanilla.

I have foreseen this whole "issue" (which I do not believe to be any real "issue" at all) from start.

 

Besides, you can always make option 2 later (for those, who does not like outsiders :wink:).

Link to comment
Share on other sites

  • Replies 43
  • Created
  • Last Reply

Top Posters In This Topic

Sounds like the option to keep the skeleton key spendable, but able to manufacture additional keys for additional base assaults has three of three votes so far, so I think I'll go with that one first.

 

Right now it's set up to trigger based on the presence of the hyperwave item as a mission reward (because of course in vanilla there's only the one base mission and it gives it). I'm not quite sure what additional hyperwave items could have in terms of gameplay, but it's an intriguing thought.

 

The following all happens when that item is the mission reward :

1) Alien base defeat cinematic plays -- should it play for every alien base mission, or only the first?

2) Destroy skeleton key -- sounds like we want to keep this

3) Advance plot to objective 5 -- this really HAS to happen only for the first alien base mission.

 

I'll figure out some way to trigger item 2 but not 3, but what do people think about the narrative? In general each alien base mission and freeing a country is a kind of significant event, but not sure if the cinematic should play each time. I set up the base reveal cinematic to play only the first time, so I'm inclined to do the same here.

Link to comment
Share on other sites

<...>

1) Alien base defeat cinematic plays -- should it play for every alien base mission, or only the first?

<...>

I'll figure out some way to trigger item 2 but not 3, but what do people think about the narrative? In general each alien base mission and freeing a country is a kind of significant event, but not sure if the cinematic should play each time. I set up the base reveal cinematic to play only the first time, so I'm inclined to do the same here.

First time only is good enough (it will be in line of other cinematic cutscenes - first UFO shotdown, first Terror mission etc).

Link to comment
Share on other sites

Option 1 is easier for the player and easier to code, but option 1 is intriguing me. I'm just not sure if it's crossing the line into "too much"

Did you mean option 2 is easier or is the "but" used incorrectly?

 

If option 2 is far easier to code (IE kill 1 line and good to go) then I'd say do option 2 first then work on 1.

 

As johnnylump said option 1 would require modding missions to still include outsiders after the first base mission witch may be beyond the skills of some of the people here.

Link to comment
Share on other sites

 

Option 1 is easier for the player and easier to code, but option 1 is intriguing me. I'm just not sure if it's crossing the line into "too much"

Did you mean option 2 is easier or is the "but" used incorrectly?

 

If option 2 is far easier to code (IE kill 1 line and good to go) then I'd say do option 2 first then work on 1.

 

As johnnylump said option 1 would require modding missions to still include outsiders after the first base mission witch may be beyond the skills of some of the people here.

 

 

My bad, I mis-typed there.

 

I meant option 2 is easier to code and is easier for the player.

 

I think I'm probably going to end up with two versions for the two cases. Both JL and Tycus would like to see option 1 (and I think it's pretty cool, too), but option 2 is easy to code up and easier to integrated into mods.

 

Sorry there haven't been any updates in a couple of days -- never fear, I'm not going to be dropping this :smile:

Edited by Amineri
Link to comment
Share on other sites

I thought I had a simple solution to the issue by making the CreateAlienBase function only create the hyperwave relay item as a reward if the current objective is 4 (the 'Assault Alien Base' objective), but there is a little bit of a loophole still.

 

It is possible to spawn multiple alien bases while still on that objective by launching multiple satelllites over multiple occupied countries. Each one would create the alien base at that time, and since the objective is still Assault Alien Base all of them will have the hyperwave relay item created.

 

Each one would then attempt to update the objective and play the cinematics after the mission was completed, which would be problematic.

 

In practice I don't think this would come up much (since typically it will be "launch one satellite, assault the base"), but I'd hate to have a game-breaking bug like this in there.

Link to comment
Share on other sites

Okay, I think I've worked out a plan. Hopefully my logic is sound.

 

The first thing is in the XGStrategyAI.CreateAlienBaseMission, adding the following conditional:

    if(OBJECTIVES().m_eObjective == 4)
    {
        kMission.m_arrArtifacts[180] = 1;
    }

This adds the Hyperwave relay item to the collected artifacts only if the current objective is "Assault Alien Base". This should handle 99% of all cases.

 

For the other situation, in XGDebriefUI.CheckForMatinee, changing the case:

            if(HQ().m_arrLastCargo[180] > 0)
            {
                PRES().UINarrative(xcomnarrativemoment'HyperWaveRetrieved',, PostHyperwaveMatinee);
                STORAGE().RemoveItem(192);
                STAT_SetStat(68, Game().GetDays());
                m_bPlayedMatinee = true;
                return true;
            }

to :

            if((HQ().m_arrLastCargo[180] > 0) && OBJECTIVES().m_eObjective == 4)
            {
                PRES().UINarrative(xcomnarrativemoment'HyperWaveRetrieved',, PostHyperwaveMatinee);
                STAT_SetStat(68, STAT_GetStat(1));
                m_bPlayedMatinee = true;
                return true;
            }

will prevent the exit scene narrative moment (and the objective update triggered by the callback function parameter PostHyperwaveMatinee) unless this is the first successful alien base mission.

 

It will be possible to pick up more than one hyperwave relay item if multiple alien bases are spawned before beating any, but that shouldn't have any in-game effect, since hyperwave relays cannot be sold in the gray market.

 

Note that to free up space I also removed the line that destroys the skeleton key (item 192). This means that this code will no longer destroy it, making the skeleton key a multi-use item.

 

Hex changes for these two functions :

 

 

XGDebriefUI.CheckForMatinee  // prevent cinematic and objective updating except for first alien base mission, prevent destruction of skeleton key

original hex:
07 D7 01 97 10 2C B4 19 1B 5C 11 00 00 00 00 00 00 16 09 00 A2 32 00 00 00 01 A2 32 00 00 25 16 19 1B 12 22 00 00 00 00 00 00 16 29 00 66 FF FF FF 00 1B 27 2B 00 00 00 00 00 00 20 7D 48 00 00 4A 43 FA 21 00 00 00 00 00 00 00 00 00 00 4A 4A 4A 4A 16 19 1B 23 27 00 00 00 00 00 00 16 0D 00 00 00 00 00 00 1B B0 22 00 00 00 00 00 00 2C C0 4A 16 1B CE 26 00 00 00 00 00 00 24 44 19 1B 4C 0E 00 00 00 00 00 00 16 0A 00 82 41 00 00 00 1B F2 0E 00 00 00 00 00 00 16 16 14 2D 01 2C 26 00 00 27 04 27 

new hex:
07 D7 01 82 97 10 2C B4 19 1B 5C 11 00 00 00 00 00 00 16 09 00 A2 32 00 00 00 01 A2 32 00 00 25 16 18 26 00 9A 38 3A 19 1B DE 1F 00 00 00 00 00 00 16 09 00 E1 38 00 00 00 01 E1 38 00 00 2C 04 16 16 19 1B 12 22 00 00 00 00 00 00 16 29 00 66 FF FF FF 00 1B 27 2B 00 00 00 00 00 00 20 7D 48 00 00 4A 43 FA 21 00 00 00 00 00 00 00 00 00 00 4A 4A 4A 4A 16 1B CE 26 00 00 00 00 00 00 24 44 1B CA 26 00 00 00 00 00 00 26 16 16 14 2D 01 2C 26 00 00 27 04 27 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 

----------------------

XGStrategyAI.CreateAlienBase

original hex:
header:
05 43 00 00 AB 1F 00 00 00 00 00 00 04 43 00 00 00 00 00 00 00 00 00 00 05 43 00 00 00 00 00 00 3D 04 00 00 EF 7B 00 00 23 04 00 00 DB 02 00 00 

body:
0F 00 05 43 00 00 1C A3 FD FF FF 20 75 37 00 00 4A 4A 4A 4A 4A 4A 4A 16 0F 19 00 05 43 00 00 09 00 31 37 00 00 00 01 31 37 00 00 1C A3 FD FF FF 20 7A FE FF FF 4A 4A 4A 4A 4A 4A 4A 16 05 6C FC FF FF 00 A7 2C 05 16 0A C5 00 25 0F 19 00 05 43 00 00 09 00 36 37 00 00 00 01 36 37 00 00 25 0F 19 00 05 43 00 00 09 00 39 37 00 00 00 01 39 37 00 00 1C B9 FD FF FF 1E BE 9F 9A 3E 1E 5E BA C9 3E 16 06 36 02 0A 20 01 26 0F 19 00 05 43 00 00 09 00 36 37 00 00 00 01 36 37 00 00 2C 04 0F 19 00 05 43 00 00 09 00 39 37 00 00 00 01 39 37 00 00 1C B9 FD FF FF 1E BE 9F 1A 3F 1E 10 58 F9 3E 16 06 36 02 0A 7C 01 2C 02 0F 19 00 05 43 00 00 09 00 36 37 00 00 00 01 36 37 00 00 2C 02 0F 19 00 05 43 00 00 09 00 39 37 00 00 00 01 39 37 00 00 1C B9 FD FF FF 1E 2F DD E4 3E 1E 29 5C 0F 3E 16 06 36 02 0A D8 01 2C 03 0F 19 00 05 43 00 00 09 00 36 37 00 00 00 01 36 37 00 00 2C 03 0F 19 00 05 43 00 00 09 00 39 37 00 00 00 01 39 37 00 00 1C B9 FD FF FF 1E 58 39 54 3F 1E 96 43 0B 3E 16 06 36 02 0A 33 02 2C 04 0F 19 00 05 43 00 00 09 00 36 37 00 00 00 01 36 37 00 00 26 0F 19 00 05 43 00 00 09 00 39 37 00 00 00 01 39 37 00 00 1C B9 FD FF FF 1E 2B 87 96 3E 1E C5 20 F0 3E 16 06 36 02 0A FF FF 0F 19 19 00 05 43 00 00 09 00 31 37 00 00 00 01 31 37 00 00 09 00 C1 F9 FF FF 00 01 C1 F9 FF FF 1B C4 07 00 00 00 00 00 00 16 0F 10 2C AC 19 00 05 43 00 00 09 00 32 37 00 00 00 01 32 37 00 00 2C 32 0F 10 2C B3 19 00 05 43 00 00 09 00 32 37 00 00 00 01 32 37 00 00 2C 03 0F 10 2C AB 19 00 05 43 00 00 09 00 32 37 00 00 00 01 32 37 00 00 38 44 AB 10 19 1B 4C 0E 00 00 00 00 00 00 16 0A 00 43 41 00 00 00 1B F6 0E 00 00 00 00 00 00 16 12 20 6D FE FF FF 09 00 CA FF FF FF 00 02 CA FF FF FF 38 3F 10 2C B3 19 00 05 43 00 00 09 00 32 37 00 00 00 01 32 37 00 00 16 0F 10 2C B2 19 00 05 43 00 00 09 00 32 37 00 00 00 01 32 37 00 00 2C 04 0F 10 2C B0 19 00 05 43 00 00 09 00 32 37 00 00 00 01 32 37 00 00 2C 0F 0F 10 2C AF 19 00 05 43 00 00 09 00 32 37 00 00 00 01 32 37 00 00 2C 0A 0F 10 2C AE 19 00 05 43 00 00 09 00 32 37 00 00 00 01 32 37 00 00 26 0F 10 2C B4 19 00 05 43 00 00 09 00 32 37 00 00 00 01 32 37 00 00 26 19 1B 69 0E 00 00 00 00 00 00 16 14 00 AC 2F 00 00 00 1B A9 00 00 00 00 00 00 00 00 05 43 00 00 4A 16 04 0B 53 

new hex: (virtual 0x407)
header:
05 43 00 00 AB 1F 00 00 00 00 00 00 04 43 00 00 00 00 00 00 00 00 00 00 05 43 00 00 00 00 00 00 3D 04 00 00 EF 7B 00 00 07 04 00 00 DB 02 00 00 

body:
0F 00 88 43 00 00 1B 45 06 00 00 00 00 00 00 01 10 42 00 00 16 07 2E 00 72 00 88 43 00 00 2A 16 04 0B 07 54 00 81 19 00 88 43 00 00 0A 00 47 24 00 00 00 1B 40 14 00 00 00 00 00 00 16 16 04 0B 07 7A 00 81 19 00 88 43 00 00 0A 00 41 24 00 00 00 1B B6 16 00 00 00 00 00 00 16 16 04 0B 0F 00 05 43 00 00 1C A3 FD FF FF 20 75 37 00 00 4A 4A 4A 4A 4A 4A 4A 16 0F 19 00 05 43 00 00 09 00 31 37 00 00 00 01 31 37 00 00 1C A3 FD FF FF 20 7A FE FF FF 4A 4A 4A 4A 4A 4A 4A 16 0F 19 00 05 43 00 00 09 00 37 37 00 00 00 01 37 37 00 00 19 00 88 43 00 00 0A 00 5E 24 00 00 00 1B 58 0F 00 00 00 00 00 00 16 0F 19 00 05 43 00 00 09 00 39 37 00 00 00 01 39 37 00 00 19 1B AB 05 00 00 00 00 00 00 19 00 88 43 00 00 0A 00 62 24 00 00 00 1B 09 10 00 00 00 00 00 00 16 16 09 00 61 23 00 00 00 01 61 23 00 00 0F 19 00 05 43 00 00 09 00 25 37 00 00 00 01 25 37 00 00 70 19 00 05 43 00 00 09 00 25 37 00 00 00 01 25 37 00 00 19 00 88 43 00 00 0B 00 58 24 00 00 00 1B A3 0F 00 00 00 00 00 00 4A 16 16 0F 19 19 00 05 43 00 00 09 00 31 37 00 00 00 01 31 37 00 00 09 00 C1 F9 FF FF 00 01 C1 F9 FF FF 1B C4 07 00 00 00 00 00 00 16 0F 10 2C AC 19 00 05 43 00 00 09 00 32 37 00 00 00 01 32 37 00 00 2C 32 0F 10 2C B3 19 00 05 43 00 00 09 00 32 37 00 00 00 01 32 37 00 00 2C 03 0F 10 2C AB 19 00 05 43 00 00 09 00 32 37 00 00 00 01 32 37 00 00 38 44 AB 10 19 1B 4C 0E 00 00 00 00 00 00 16 0A 00 43 41 00 00 00 1B F6 0E 00 00 00 00 00 00 16 12 20 6D FE FF FF 09 00 CA FF FF FF 00 02 CA FF FF FF 38 3F 2C 03 16 0F 10 2C B2 19 00 05 43 00 00 09 00 32 37 00 00 00 01 32 37 00 00 2C 04 0F 10 2C B0 19 00 05 43 00 00 09 00 32 37 00 00 00 01 32 37 00 00 2C 0F 0F 10 2C AF 19 00 05 43 00 00 09 00 32 37 00 00 00 01 32 37 00 00 2C 0A 0F 10 2C AE 19 00 05 43 00 00 09 00 32 37 00 00 00 01 32 37 00 00 2C 01 07 9E 03 9A 38 3A 19 1B DE 1F 00 00 00 00 00 00 16 09 00 E1 38 00 00 00 01 E1 38 00 00 38 3A 24 04 16 0F 10 2C B4 19 00 05 43 00 00 09 00 32 37 00 00 00 01 32 37 00 00 2C 01 0F 19 00 05 43 00 00 09 00 30 37 00 00 00 01 30 37 00 00 2C 00 0B 0B 0B 19 1B 69 0E 00 00 00 00 00 00 16 14 00 AC 2F 00 00 00 1B A9 00 00 00 00 00 00 00 00 05 43 00 00 4A 16 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 04 0B 53 
 

 

 

 

--------------------

 

I'll have to create a separate set of code to destroy the skeleton key upon mission complete, as well as the changes to Engineering to allow for multiple skeleton key projects. Those won't be part of the main release, but will (probably) be folded into Long War and supplied to anyone that wants to use that option in their own mod (like Tycus).

Link to comment
Share on other sites

  • 1 month later...

I apologize if I'm reviving this out of turn, but I was wondering if there's a full version released. I have noticed the latest Long War Mod seems to have a functional modlet in it,

 

I tested the hex-changes above and this is what happened:

 

- The Hyperwave Relay item was added successfully after capturing an outsider

- The Assault Alien Base objective was received, but it was missing in the globe map (only the scan). I had to enable the console and use the CreateAlientBaseAlert command.

- The Skeleton Key was not destroyed upon use

- Currently two countries have withdrawn support, but no alien base / retake mission for these two has triggered (I don't think I see any change in the code that would lead to this)

Link to comment
Share on other sites

Finally finished up with the changes enough to release some hex code.

 

I stupidly created my test campaign at Easy difficulty, so only had 1 occupied country and so wasn't able to test some aspects of second and subsequent alien base missions, so there may still be a few bugs relating to that aspect lurking about.

 

Some aspects of the full mod were depending on some Long War changes and one of my previous mods, the "All Countries Contribute" modlet. The first impacts the ability to create the infiltration missions I was using to guarantee at least one occupied country. The second impacted some UI tweaks in the satellite launch UI in the situation room.

 

I'm not releasing those hex changes here in order to keep compatibility with the vanilla game. Note that some form of ensuring that at least one country is lost is required, or the plot cannot advance to the alien base mission.

 

Here is the set of hex changes that are vanilla-compatible, which includes all functionality (excepting the lost country thing):

 

 

 

Hex Changes for Multi-base + retaking countries

XGMissionControlUI.UpdateAlert -- display country name instead of continent

original hex: (next line at 0x473A)
07 ED 45 9A 19 1B 23 27 00 00 00 00 00 00 16 0C 00 7D 40 00 00 00 1B CC 0F 00 00 00 00 00 00 2C C0 16 25 16 0F 35 D8 F9 FF FF 66 FA FF FF 00 01 00 CB 38 00 00 01 C3 37 00 00 0F 35 54 FB FF FF 66 FA FF FF 00 01 00 CB 38 00 00 2C 03 55 35 64 0D 00 00 67 0D 00 00 00 00 00 CD 38 00 00 0A 00 00 CB 38 00 00 16 0F 35 DE F9 FF FF 6C FA FF FF 00 01 00 CC 38 00 00 01 FA 37 00 00 0F 35 DD F9 FF FF 6C FA FF FF 00 01 00 CC 38 00 00 19 19 00 C8 38 00 00 0A 00 4B 37 00 00 00 1B C5 0E 00 00 00 00 00 00 16 0A 00 9E 23 00 00 00 1B A3 0F 00 00 00 00 00 00 16 0F 35 57 FB FF FF 6C FA FF FF 00 01 00 CC 38 00 00 2C 05 55 35 63 0D 00 00 67 0D 00 00 00 00 00 CD 38 00 00 0A 00 00 CC 38 00 00 16 0F 35 DA F9 FF FF 6A FA FF FF 00 01 00 C9 38 00 00 01 C2 37 00 00 07 1C 47 9A 19 1B 23 27 00 00 00 00 00 00 16 0C 00 7D 40 00 00 00 1B CC 0F 00 00 00 00 00 00 2C C0 16 25 16 0F 35 56 FB FF FF 6A FA FF FF 00 01 00 C9 38 00 00 26 06 3A 47 0F 35 56 FB FF FF 6A FA FF FF 00 01 00 C9 38 00 00 25 

new hex: (0x473A)
0F 35 56 FB FF FF 6A FA FF FF 00 01 00 C9 38 00 00 25 07 29 46 9A 19 1B 23 27 00 00 00 00 00 00 16 0C 00 7D 40 00 00 00 1B CC 0F 00 00 00 00 00 00 2C C0 16 25 16 0F 35 D8 F9 FF FF 66 FA FF FF 00 01 00 CB 38 00 00 01 C3 37 00 00 0F 35 54 FB FF FF 66 FA FF FF 00 01 00 CB 38 00 00 2C 03 55 35 64 0D 00 00 67 0D 00 00 00 00 00 CD 38 00 00 0A 00 00 CB 38 00 00 16 0F 35 56 FB FF FF 6A FA FF FF 00 01 00 C9 38 00 00 26 0F 35 DE F9 FF FF 6C FA FF FF 00 01 00 CC 38 00 00 01 FA 37 00 00 0F 35 DD F9 FF FF 6C FA FF FF 00 01 00 CC 38 00 00 19 1B 45 06 00 00 00 00 00 00 19 00 C8 38 00 00 0A 00 49 37 00 00 00 1B CE 0E 00 00 00 00 00 00 16 16 0B 00 58 24 00 00 00 1B A3 0F 00 00 00 00 00 00 4A 16 0F 35 57 FB FF FF 6C FA FF FF 00 01 00 CC 38 00 00 2C 05 55 35 63 0D 00 00 67 0D 00 00 00 00 00 CD 38 00 00 0A 00 00 CC 38 00 00 16 0F 35 DA F9 FF FF 6A FA FF FF 00 01 00 C9 38 00 00 01 C2 37 00 00 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 00 89 43 00 00 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 


------------------------

XGStrategyAI.CreateAlienBase

original hex:
header:
05 43 00 00 AB 1F 00 00 00 00 00 00 04 43 00 00 00 00 00 00 00 00 00 00 05 43 00 00 00 00 00 00 3D 04 00 00 EF 7B 00 00 23 04 00 00 DB 02 00 00 

body:
0F 00 05 43 00 00 1C A3 FD FF FF 20 75 37 00 00 4A 4A 4A 4A 4A 4A 4A 16 0F 19 00 05 43 00 00 09 00 31 37 00 00 00 01 31 37 00 00 1C A3 FD FF FF 20 7A FE FF FF 4A 4A 4A 4A 4A 4A 4A 16 05 6C FC FF FF 00 A7 2C 05 16 0A C5 00 25 0F 19 00 05 43 00 00 09 00 36 37 00 00 00 01 36 37 00 00 25 0F 19 00 05 43 00 00 09 00 39 37 00 00 00 01 39 37 00 00 1C B9 FD FF FF 1E BE 9F 9A 3E 1E 5E BA C9 3E 16 06 36 02 0A 20 01 26 0F 19 00 05 43 00 00 09 00 36 37 00 00 00 01 36 37 00 00 2C 04 0F 19 00 05 43 00 00 09 00 39 37 00 00 00 01 39 37 00 00 1C B9 FD FF FF 1E BE 9F 1A 3F 1E 10 58 F9 3E 16 06 36 02 0A 7C 01 2C 02 0F 19 00 05 43 00 00 09 00 36 37 00 00 00 01 36 37 00 00 2C 02 0F 19 00 05 43 00 00 09 00 39 37 00 00 00 01 39 37 00 00 1C B9 FD FF FF 1E 2F DD E4 3E 1E 29 5C 0F 3E 16 06 36 02 0A D8 01 2C 03 0F 19 00 05 43 00 00 09 00 36 37 00 00 00 01 36 37 00 00 2C 03 0F 19 00 05 43 00 00 09 00 39 37 00 00 00 01 39 37 00 00 1C B9 FD FF FF 1E 58 39 54 3F 1E 96 43 0B 3E 16 06 36 02 0A 33 02 2C 04 0F 19 00 05 43 00 00 09 00 36 37 00 00 00 01 36 37 00 00 26 0F 19 00 05 43 00 00 09 00 39 37 00 00 00 01 39 37 00 00 1C B9 FD FF FF 1E 2B 87 96 3E 1E C5 20 F0 3E 16 06 36 02 0A FF FF 0F 19 19 00 05 43 00 00 09 00 31 37 00 00 00 01 31 37 00 00 09 00 C1 F9 FF FF 00 01 C1 F9 FF FF 1B C4 07 00 00 00 00 00 00 16 0F 10 2C AC 19 00 05 43 00 00 09 00 32 37 00 00 00 01 32 37 00 00 2C 32 0F 10 2C B3 19 00 05 43 00 00 09 00 32 37 00 00 00 01 32 37 00 00 2C 03 0F 10 2C AB 19 00 05 43 00 00 09 00 32 37 00 00 00 01 32 37 00 00 38 44 AB 10 19 1B 4C 0E 00 00 00 00 00 00 16 0A 00 43 41 00 00 00 1B F6 0E 00 00 00 00 00 00 16 12 20 6D FE FF FF 09 00 CA FF FF FF 00 02 CA FF FF FF 38 3F 10 2C B3 19 00 05 43 00 00 09 00 32 37 00 00 00 01 32 37 00 00 16 0F 10 2C B2 19 00 05 43 00 00 09 00 32 37 00 00 00 01 32 37 00 00 2C 04 0F 10 2C B0 19 00 05 43 00 00 09 00 32 37 00 00 00 01 32 37 00 00 2C 0F 0F 10 2C AF 19 00 05 43 00 00 09 00 32 37 00 00 00 01 32 37 00 00 2C 0A 0F 10 2C AE 19 00 05 43 00 00 09 00 32 37 00 00 00 01 32 37 00 00 26 0F 10 2C B4 19 00 05 43 00 00 09 00 32 37 00 00 00 01 32 37 00 00 26 19 1B 69 0E 00 00 00 00 00 00 16 14 00 AC 2F 00 00 00 1B A9 00 00 00 00 00 00 00 00 05 43 00 00 4A 16 04 0B 53 

new hex: (virtual 0x413)
header:
05 43 00 00 AB 1F 00 00 00 00 00 00 04 43 00 00 00 00 00 00 00 00 00 00 05 43 00 00 00 00 00 00 3D 04 00 00 EF 7B 00 00 13 04 00 00 DB 02 00 00 

body:
0F 00 88 43 00 00 1B 45 06 00 00 00 00 00 00 01 10 42 00 00 16 07 2E 00 72 00 88 43 00 00 2A 16 04 0B 07 54 00 81 19 00 88 43 00 00 0A 00 47 24 00 00 00 1B 40 14 00 00 00 00 00 00 16 16 04 0B 07 7A 00 81 19 00 88 43 00 00 0A 00 41 24 00 00 00 1B B6 16 00 00 00 00 00 00 16 16 04 0B 0F 00 05 43 00 00 1C A3 FD FF FF 20 75 37 00 00 4A 4A 4A 4A 4A 4A 4A 16 0F 19 00 05 43 00 00 09 00 31 37 00 00 00 01 31 37 00 00 1C A3 FD FF FF 20 7A FE FF FF 4A 4A 4A 4A 4A 4A 4A 16 0F 19 00 05 43 00 00 09 00 37 37 00 00 00 01 37 37 00 00 19 00 88 43 00 00 0A 00 5E 24 00 00 00 1B 58 0F 00 00 00 00 00 00 16 0F 19 00 05 43 00 00 09 00 39 37 00 00 00 01 39 37 00 00 19 1B AB 05 00 00 00 00 00 00 19 00 88 43 00 00 0A 00 62 24 00 00 00 1B 09 10 00 00 00 00 00 00 16 16 09 00 61 23 00 00 00 01 61 23 00 00 0F 19 00 05 43 00 00 09 00 25 37 00 00 00 01 25 37 00 00 70 19 00 05 43 00 00 09 00 25 37 00 00 00 01 25 37 00 00 19 00 88 43 00 00 0B 00 58 24 00 00 00 1B A3 0F 00 00 00 00 00 00 4A 16 16 0F 19 19 00 05 43 00 00 09 00 31 37 00 00 00 01 31 37 00 00 09 00 C1 F9 FF FF 00 01 C1 F9 FF FF 1B C4 07 00 00 00 00 00 00 16 0F 10 2C AC 19 00 05 43 00 00 09 00 32 37 00 00 00 01 32 37 00 00 2C 32 0F 10 2C B3 19 00 05 43 00 00 09 00 32 37 00 00 00 01 32 37 00 00 2C 03 0F 10 2C AB 19 00 05 43 00 00 09 00 32 37 00 00 00 01 32 37 00 00 38 44 AB 10 19 1B 4C 0E 00 00 00 00 00 00 16 0A 00 43 41 00 00 00 1B F6 0E 00 00 00 00 00 00 16 12 20 6D FE FF FF 09 00 CA FF FF FF 00 02 CA FF FF FF 38 3F 2C 03 16 0F 10 2C B2 19 00 05 43 00 00 09 00 32 37 00 00 00 01 32 37 00 00 2C 04 0F 10 2C B0 19 00 05 43 00 00 09 00 32 37 00 00 00 01 32 37 00 00 2C 0F 0F 10 2C AF 19 00 05 43 00 00 09 00 32 37 00 00 00 01 32 37 00 00 2C 0A 0F 10 2C AE 19 00 05 43 00 00 09 00 32 37 00 00 00 01 32 37 00 00 2C 01 0F 10 2C B4 19 00 05 43 00 00 09 00 32 37 00 00 00 01 32 37 00 00 2C 01 0F 19 00 05 43 00 00 09 00 30 37 00 00 00 01 30 37 00 00 2C 00 0B 0B 0B 0F 35 5B 1E 00 00 64 1E 00 00 00 00 19 00 88 43 00 00 09 00 34 24 00 00 00 01 34 24 00 00 19 1B 69 0E 00 00 00 00 00 00 16 14 00 AC 2F 00 00 00 1B A9 00 00 00 00 00 00 00 00 05 43 00 00 4A 16 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 04 0B 53 


-------------------------


XGStrategyAI.InitNewGame(); // remove vanilla call to create base at start of new game

original:
1B 5B 06 00 00 00 00 00 00 16 0F 01 0C 42 00 00 2C 02 

new:
0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0F 01 0C 42 00 00 2C 02 


---------------------------

XGHeadquarters.ActivateSatellite // add conditions to create alien bases when satellite arrives, via call to XGFacility_SituationRoom.OnCodeCracked

original hex:
header:
EB 32 00 00 AB 1F 00 00 00 00 00 00 E8 32 00 00 00 00 00 00 00 00 00 00 EB 32 00 00 00 00 00 00 98 01 00 00 42 2E 00 00 14 02 00 00 7C 01 00 00 

body:
07 BD 01 2D 00 EA 32 00 00 0F 00 E9 32 00 00 2E 71 FE FF FF 19 19 2E 94 FE FF FF 12 20 FD FE FF FF 0A 00 3A FB FF FF 00 1C 91 FD FF FF 16 09 00 09 FB FF FF 00 01 09 FB FF FF 13 00 A4 FA FF FF 00 1B B6 0D 00 00 00 00 00 00 1F 58 47 50 61 72 61 6D 00 16 0F 19 00 E9 32 00 00 09 00 EF F9 FF FF 00 01 EF F9 FF FF 35 C7 02 00 00 C8 02 00 00 01 00 1B 09 15 00 00 00 00 00 00 35 97 02 00 00 98 02 00 00 00 00 10 00 EB 32 00 00 01 BB 32 00 00 4A 16 0F 19 00 E9 32 00 00 09 00 EE F9 FF FF 00 01 EE F9 FF FF 19 1B 45 06 00 00 00 00 00 00 35 94 02 00 00 98 02 00 00 00 00 10 00 EB 32 00 00 01 BB 32 00 00 16 0B 00 58 24 00 00 00 1B A3 0F 00 00 00 00 00 00 4A 16 19 1B 12 22 00 00 00 00 00 00 16 35 00 5E FE FF FF 00 1B 8F 26 00 00 00 00 00 00 12 20 8C FE FF FF 14 00 09 FA FF FF 00 1B 39 0D 00 00 00 00 00 00 01 99 32 00 00 4A 16 24 08 16 19 1B 12 22 00 00 00 00 00 00 16 17 00 00 00 00 00 00 1B B2 1F 00 00 00 00 00 00 24 21 00 EB 32 00 00 4A 4A 16 19 19 1B 9C 2C 00 00 00 00 00 00 16 09 00 EB 46 00 00 00 01 EB 46 00 00 1F 00 00 00 00 00 00 1B F2 20 00 00 00 00 00 00 10 00 EB 32 00 00 01 BB 32 00 00 4A 4A 16 1B 04 2C 00 00 00 00 00 00 16 04 0B 53 


new hex: (virtual 0x200)
header:
EB 32 00 00 AB 1F 00 00 00 00 00 00 E8 32 00 00 00 00 00 00 00 00 00 00 EB 32 00 00 00 00 00 00 98 01 00 00 42 2E 00 00 00 02 00 00 7C 01 00 00 

body:
07 90 01 2D 00 EA 32 00 00 0F 00 E9 32 00 00 2E 71 FE FF FF 19 19 2E 94 FE FF FF 12 20 FD FE FF FF 0A 00 3A FB FF FF 00 1C 91 FD FF FF 16 09 00 09 FB FF FF 00 01 09 FB FF FF 13 00 A4 FA FF FF 00 1B B6 0D 00 00 00 00 00 00 1F 58 47 50 61 72 61 6D 00 16 0F 19 00 E9 32 00 00 09 00 EF F9 FF FF 00 01 EF F9 FF FF 35 C7 02 00 00 C8 02 00 00 01 00 1B 09 15 00 00 00 00 00 00 35 97 02 00 00 98 02 00 00 00 00 10 00 EB 32 00 00 01 BB 32 00 00 4A 16 0F 19 00 E9 32 00 00 09 00 EE F9 FF FF 00 01 EE F9 FF FF 19 1B 45 06 00 00 00 00 00 00 35 94 02 00 00 98 02 00 00 00 00 10 00 EB 32 00 00 01 BB 32 00 00 16 0B 00 58 24 00 00 00 1B A3 0F 00 00 00 00 00 00 4A 16 19 1B 12 22 00 00 00 00 00 00 16 35 00 5E FE FF FF 00 1B 8F 26 00 00 00 00 00 00 12 20 8C FE FF FF 14 00 09 FA FF FF 00 1B 39 0D 00 00 00 00 00 00 01 99 32 00 00 4A 16 24 08 16 07 D5 01 19 1B 8B 16 00 00 00 00 00 00 16 0C 00 77 2C 00 00 00 1B BF 14 00 00 00 00 00 00 2C 03 16 19 1B C5 24 00 00 00 00 00 00 16 0A 00 00 00 00 00 00 1B 25 20 00 00 00 00 00 00 16 1B 04 2C 00 00 00 00 00 00 16 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 04 0B 53 


-------------------------------


XGFacility_Labs.OnResearchComplete  // disable alien base reveal narrative after outsider shard research complete

change:
19 1B 12 22 00 00 00 00 00 00 16 29 00 66 FF FF FF 00 1B 27 2B 00 00 00 00 00 00 20 29 48 00 00 2A 43 DC 22 00 00 00 00 00 00 00 00 00 00 4A 4A 4A 4A 16 

to:
01 E7 2B 00 00 0B 0B 01 E7 2B 00 00 0B 01 E7 2B 00 00 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 


-------------------------------

XGCountry.SetSatelliteCoverage  // prevent satellite coverage over occupied countries from granting bonuses

original hex:
header:
78 24 00 00 AB 1F 00 00 00 00 00 00 77 24 00 00 00 00 00 00 00 00 00 00 78 24 00 00 00 00 00 00 5D 01 00 00 8F 25 00 00 F8 00 00 00 B0 00 00 00 

body:
07 1B 00 F2 2D 01 32 24 00 00 2D 00 78 24 00 00 16 04 0B 14 2D 01 32 24 00 00 2D 00 78 24 00 00 19 1B 23 06 00 00 00 00 00 00 35 5D 1E 00 00 64 1E 00 00 00 00 01 34 24 00 00 16 30 00 00 00 00 00 00 1B F1 23 00 00 00 00 00 00 35 63 1E 00 00 64 1E 00 00 00 00 01 34 24 00 00 2D 00 78 24 00 00 16 07 D5 00 2D 00 78 24 00 00 1B B3 00 00 00 00 00 00 00 12 20 6D FE FF FF 09 00 D5 FB FF FF 00 02 D5 FB FF FF 4A 16 1B 64 03 00 00 00 00 00 00 16 06 F5 00 1B 64 03 00 00 00 00 00 00 16 40 01 2D 24 00 00 25 36 01 2D 24 00 00 16 04 0B 53 

new hex: (virtual 0xE4)
header:
78 24 00 00 AB 1F 00 00 00 00 00 00 77 24 00 00 00 00 00 00 00 00 00 00 78 24 00 00 00 00 00 00 5D 01 00 00 8F 25 00 00 E4 00 00 00 B0 00 00 00 

body:
07 1B 00 F2 2D 01 32 24 00 00 2D 00 78 24 00 00 16 04 0B 14 2D 01 32 24 00 00 2D 00 78 24 00 00 07 40 00 2D 01 33 24 00 00 06 B6 00 19 1B 23 06 00 00 00 00 00 00 38 3A 1B C5 0E 00 00 00 00 00 00 16 16 30 00 00 00 00 00 00 1B F1 23 00 00 00 00 00 00 1B 58 0F 00 00 00 00 00 00 16 2D 00 78 24 00 00 16 07 B6 00 2D 00 78 24 00 00 1B B3 00 00 00 00 00 00 00 12 20 6D FE FF FF 09 00 D5 FB FF FF 00 02 D5 FB FF FF 4A 16 40 01 2D 24 00 00 25 36 01 2D 24 00 00 16 1B 64 03 00 00 00 00 00 00 16 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 04 0B 53 


--------------------------------


XGSatelliteSitRoomUI.UpdateCountryHelp // allow launching of satellites over occupied countries

original hex:
header:
83 3B 00 00 AB 1F 00 00 00 00 00 00 82 3B 00 00 00 00 00 00 00 00 00 00 83 3B 00 00 00 00 00 00 76 01 00 00 99 28 00 00 2C 04 00 00 AC 02 00 00 

body:
07 99 00 9A 01 5A 3B 00 00 1D FF FF FF FF 16 14 2D 35 F4 3A 00 00 F5 3A 00 00 00 01 00 83 3B 00 00 28 0F 35 E1 F9 FF FF 6F FA FF FF 00 00 35 F3 3A 00 00 F5 3A 00 00 00 01 00 83 3B 00 00 1F 00 0F 35 59 FB FF FF 6F FA FF FF 00 00 35 F3 3A 00 00 F5 3A 00 00 00 01 00 83 3B 00 00 2C 03 06 16 04 07 51 01 19 1B 45 06 00 00 00 00 00 00 01 5A 3B 00 00 16 0A 00 76 24 00 00 00 1B 24 11 00 00 00 00 00 00 16 14 2D 35 F4 3A 00 00 F5 3A 00 00 00 01 00 83 3B 00 00 28 0F 35 E1 F9 FF FF 6F FA FF FF 00 00 35 F3 3A 00 00 F5 3A 00 00 00 01 00 83 3B 00 00 01 49 3B 00 00 0F 35 59 FB FF FF 6F FA FF FF 00 00 35 F3 3A 00 00 F5 3A 00 00 00 01 00 83 3B 00 00 26 06 16 04 07 0A 02 19 1B 45 06 00 00 00 00 00 00 01 5A 3B 00 00 16 0A 00 41 24 00 00 00 1B B6 16 00 00 00 00 00 00 16 14 2D 35 F4 3A 00 00 F5 3A 00 00 00 01 00 83 3B 00 00 28 0F 35 E1 F9 FF FF 6F FA FF FF 00 00 35 F3 3A 00 00 F5 3A 00 00 00 01 00 83 3B 00 00 01 32 3B 00 00 0F 35 59 FB FF FF 6F FA FF FF 00 00 35 F3 3A 00 00 F5 3A 00 00 00 01 00 83 3B 00 00 2C 03 06 16 04 07 A6 02 81 1B 28 11 00 00 00 00 00 00 16 16 14 2D 35 F4 3A 00 00 F5 3A 00 00 00 01 00 83 3B 00 00 28 0F 35 E1 F9 FF FF 6F FA FF FF 00 00 35 F3 3A 00 00 F5 3A 00 00 00 01 00 83 3B 00 00 01 33 3B 00 00 0F 35 59 FB FF FF 6F FA FF FF 00 00 35 F3 3A 00 00 F5 3A 00 00 00 01 00 83 3B 00 00 2C 03 06 16 04 07 5B 03 9A 19 1B 23 27 00 00 00 00 00 00 16 0C 00 7D 40 00 00 00 1B CC 0F 00 00 00 00 00 00 2C 6C 16 25 16 14 2D 35 F4 3A 00 00 F5 3A 00 00 00 01 00 83 3B 00 00 28 0F 35 E1 F9 FF FF 6F FA FF FF 00 00 35 F3 3A 00 00 F5 3A 00 00 00 01 00 83 3B 00 00 01 4A 3B 00 00 0F 35 59 FB FF FF 6F FA FF FF 00 00 35 F3 3A 00 00 F5 3A 00 00 00 01 00 83 3B 00 00 2C 03 06 16 04 14 2D 35 F4 3A 00 00 F5 3A 00 00 00 01 00 83 3B 00 00 27 0F 35 5A FB FF FF 6F FA FF FF 00 00 35 F3 3A 00 00 F5 3A 00 00 00 01 00 83 3B 00 00 26 0F 35 E1 F9 FF FF 6F FA FF FF 00 00 35 F3 3A 00 00 F5 3A 00 00 00 01 00 83 3B 00 00 01 48 3B 00 00 0F 35 59 FB FF FF 6F FA FF FF 00 00 35 F3 3A 00 00 F5 3A 00 00 00 01 00 83 3B 00 00 2C 02 0F 01 61 3B 00 00 00 83 3B 00 00 04 0B 53 


new hex: (virtual 0x420)
header:
83 3B 00 00 AB 1F 00 00 00 00 00 00 82 3B 00 00 00 00 00 00 00 00 00 00 83 3B 00 00 00 00 00 00 76 01 00 00 99 28 00 00 20 04 00 00 AC 02 00 00 

body:
0F 35 E1 F9 FF FF 6F FA FF FF 00 00 35 F3 3A 00 00 F5 3A 00 00 00 01 00 83 3B 00 00 1F 00 0F 35 59 FB FF FF 6F FA FF FF 00 00 35 F3 3A 00 00 F5 3A 00 00 00 01 00 83 3B 00 00 2C 03 07 99 00 9A 01 5A 3B 00 00 1D FF FF FF FF 16 14 2D 35 F4 3A 00 00 F5 3A 00 00 00 01 00 83 3B 00 00 28 06 F4 03 07 30 01 19 1B 45 06 00 00 00 00 00 00 01 5A 3B 00 00 16 0A 00 41 24 00 00 00 1B B6 16 00 00 00 00 00 00 16 0F 35 E1 F9 FF FF 6F FA FF FF 00 00 35 F3 3A 00 00 F5 3A 00 00 00 01 00 83 3B 00 00 01 32 3B 00 00 0F 35 59 FB FF FF 6F FA FF FF 00 00 35 F3 3A 00 00 F5 3A 00 00 00 01 00 83 3B 00 00 2C 03 07 E8 01 19 1B 45 06 00 00 00 00 00 00 01 5A 3B 00 00 16 0A 00 76 24 00 00 00 1B 24 11 00 00 00 00 00 00 16 14 2D 35 F4 3A 00 00 F5 3A 00 00 00 01 00 83 3B 00 00 28 0F 35 E1 F9 FF FF 6F FA FF FF 00 00 35 F3 3A 00 00 F5 3A 00 00 00 01 00 83 3B 00 00 01 49 3B 00 00 0F 35 59 FB FF FF 6F FA FF FF 00 00 35 F3 3A 00 00 F5 3A 00 00 00 01 00 83 3B 00 00 26 06 F4 03 07 84 02 81 1B 28 11 00 00 00 00 00 00 16 16 14 2D 35 F4 3A 00 00 F5 3A 00 00 00 01 00 83 3B 00 00 28 0F 35 E1 F9 FF FF 6F FA FF FF 00 00 35 F3 3A 00 00 F5 3A 00 00 00 01 00 83 3B 00 00 01 33 3B 00 00 0F 35 59 FB FF FF 6F FA FF FF 00 00 35 F3 3A 00 00 F5 3A 00 00 00 01 00 83 3B 00 00 2C 03 06 F4 03 07 39 03 9A 19 1B 23 27 00 00 00 00 00 00 16 0C 00 7D 40 00 00 00 1B CC 0F 00 00 00 00 00 00 2C 6C 16 25 16 14 2D 35 F4 3A 00 00 F5 3A 00 00 00 01 00 83 3B 00 00 28 0F 35 E1 F9 FF FF 6F FA FF FF 00 00 35 F3 3A 00 00 F5 3A 00 00 00 01 00 83 3B 00 00 01 4A 3B 00 00 0F 35 59 FB FF FF 6F FA FF FF 00 00 35 F3 3A 00 00 F5 3A 00 00 00 01 00 83 3B 00 00 2C 03 06 F4 03 14 2D 35 F4 3A 00 00 F5 3A 00 00 00 01 00 83 3B 00 00 27 0F 35 5A FB FF FF 6F FA FF FF 00 00 35 F3 3A 00 00 F5 3A 00 00 00 01 00 83 3B 00 00 26 0F 35 E1 F9 FF FF 6F FA FF FF 00 00 35 F3 3A 00 00 F5 3A 00 00 00 01 00 83 3B 00 00 01 48 3B 00 00 0F 35 59 FB FF FF 6F FA FF FF 00 00 35 F3 3A 00 00 F5 3A 00 00 00 01 00 83 3B 00 00 2C 02 0F 01 61 3B 00 00 00 83 3B 00 00 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 04 0B 53 


--------------------------------


XGFacility_SituationRoom.OnCodeCracked // alter to require satellite coverage before creating each alien base, add narrative moment on first base

original hex:
header:
AE 2E 00 00 AB 1F 00 00 00 00 00 00 AD 2E 00 00 00 00 00 00 00 00 00 00 AE 2E 00 00 00 00 00 00 8C 03 00 00 C0 66 00 00 59 01 00 00 FD 00 00 00 

body:
0F 01 2B 2E 00 00 26 14 2D 01 2D 2E 00 00 27 0F 00 AE 2E 00 00 25 07 3E 01 96 00 AE 2E 00 00 36 19 1B 69 0E 00 00 00 00 00 00 16 09 00 94 2F 00 00 00 01 94 2F 00 00 16 07 30 01 9A 19 10 00 AE 2E 00 00 19 1B 69 0E 00 00 00 00 00 00 16 09 00 94 2F 00 00 00 01 94 2F 00 00 09 00 35 37 00 00 00 01 35 37 00 00 2C 06 16 0F 19 10 00 AE 2E 00 00 19 1B 69 0E 00 00 00 00 00 00 16 09 00 94 2F 00 00 00 01 94 2F 00 00 09 00 30 37 00 00 00 01 30 37 00 00 25 19 10 00 AE 2E 00 00 19 1B 69 0E 00 00 00 00 00 00 16 09 00 94 2F 00 00 00 01 94 2F 00 00 26 00 00 00 00 00 00 1B C6 23 00 00 00 00 00 00 1C A3 FD FF FF 20 DB 38 00 00 4A 4A 4A 4A 4A 4A 4A 16 24 13 16 A5 00 AE 2E 00 00 16 06 22 00 1B 72 00 00 00 00 00 00 00 24 13 16 1B 4C 22 00 00 00 00 00 00 24 02 16 04 0B 53 

new hex: (virtual 0x139)
header:
AE 2E 00 00 AB 1F 00 00 00 00 00 00 AD 2E 00 00 00 00 00 00 00 00 00 00 AE 2E 00 00 00 00 00 00 8C 03 00 00 C0 66 00 00 39 01 00 00 FD 00 00 00 

body:
58 19 1B 9C 2C 00 00 00 00 00 00 16 ED 00 EF 46 00 00 00 01 EF 46 00 00 00 DD 42 00 00 00 4A 03 01 07 02 01 19 00 DD 42 00 00 0A 00 33 24 00 00 00 2D 01 33 24 00 00 07 02 01 19 00 DD 42 00 00 0A 00 76 24 00 00 00 1B 24 11 00 00 00 00 00 00 16 19 1B E1 00 00 00 00 00 00 00 16 17 00 00 00 00 00 00 1B C7 00 00 00 00 00 00 00 38 3D 19 00 DD 42 00 00 0A 00 5E 24 00 00 00 1B 58 0F 00 00 00 00 00 00 16 00 AB 44 00 00 16 07 02 01 81 2D 01 2D 2E 00 00 16 14 2D 01 2D 2E 00 00 27 1B 34 14 00 00 00 00 00 00 16 19 1B 12 22 00 00 00 00 00 00 16 0C 00 00 00 00 00 00 1B 2B 2B 00 00 00 00 00 00 24 04 16 31 30 1B 72 00 00 00 00 00 00 00 24 13 16 1B 4C 22 00 00 00 00 00 00 24 02 16 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 04 0B 53 


----------------------------

XGStrategyAI.AddToAssets  // helper function to create alien base in country

original hex:
header:
A4 44 00 00 AB 1F 00 00 00 00 00 00 A1 44 00 00 00 00 00 00 00 00 00 00 A4 44 00 00 00 00 00 00 01 0E 00 00 24 AD 01 00 A1 00 00 00 81 00 00 00 

body:
07 41 00 81 1B 18 14 00 00 00 00 00 00 00 A4 44 00 00 48 A3 44 00 00 16 16 55 48 A3 44 00 00 14 00 1B 8A 0E 00 00 00 00 00 00 00 A4 44 00 00 16 16 07 9E 00 84 9A 38 3A 00 A4 44 00 00 38 3A 24 08 16 18 12 00 9A 38 3A 00 A4 44 00 00 38 3A 24 10 16 16 07 9E 00 81 1B 18 14 00 00 00 00 00 00 24 11 48 A3 44 00 00 16 16 55 48 A3 44 00 00 0D 00 1B 8A 0E 00 00 00 00 00 00 24 11 16 16 04 0B 53 

new hex: (virtual 0x89)
header:
A4 44 00 00 AB 1F 00 00 00 00 00 00 A1 44 00 00 00 00 00 00 00 00 00 00 A4 44 00 00 00 00 00 00 01 0E 00 00 24 AD 01 00 89 00 00 00 81 00 00 00 

body:
0F 01 10 42 00 00 38 3A 00 A4 44 00 00 1B 5B 06 00 00 00 00 00 00 16 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 04 0B 53 

---------------------------------


XGFacility_SituationRoom.IsCodeActive // helper function for OnCodeCracked to play cinematic

original hex:
header:
A1 2E 00 00 AB 1F 00 00 00 00 00 00 A0 2E 00 00 00 00 00 00 00 00 00 00 A1 2E 00 00 00 00 00 00 60 03 00 00 84 62 00 00 57 00 00 00 4B 00 00 00 

body:
04 82 19 1B 8B 16 00 00 00 00 00 00 16 0C 00 77 2C 00 00 00 1B BF 14 00 00 00 00 00 00 2C 03 16 18 25 00 81 19 1B 8B 16 00 00 00 00 00 00 16 0C 00 6B 2C 00 00 00 1B E0 14 00 00 00 00 00 00 24 07 16 16 16 04 3A A1 2E 00 00 53 

new hex: (virtual 0x53)
header:
A1 2E 00 00 AB 1F 00 00 00 00 00 00 A0 2E 00 00 00 00 00 00 00 00 00 00 A1 2E 00 00 00 00 00 00 60 03 00 00 84 62 00 00 53 00 00 00 4B 00 00 00 

body:
19 1B 12 22 00 00 00 00 00 00 16 29 00 66 FF FF FF 00 1B 27 2B 00 00 00 00 00 00 20 29 48 00 00 2A 4A 4A 4A 4A 4A 16 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 04 28 53 



---------------------------------

XGSituationRoomUI.UpdateView   // remove call to IsCodeActive

change:
UpdateCode()
1B 9F 2B 00 00 00 00 00 00 16 

to:
2C 01 0B 0B 1D 45 33 00 00 0B 


---------------------------------


XGStrategyAI.CostTest/JoinXCom  // function that makes a country designated via AI().m_iAlienMonth rejoin XCom

original hex:
header:
BD 44 00 00 AB 1F 00 00 00 00 00 00 BC 44 00 00 00 00 00 00 00 00 00 00 BD 44 00 00 00 00 00 00 CD 0E 00 00 7F BC 01 00 DA 01 00 00 7A 01 00 00 

body:
0F 00 BD 44 00 00 1B C4 07 00 00 00 00 00 00 16 1B 3E 06 00 00 00 00 00 00 00 BD 44 00 00 16 0F 00 BD 44 00 00 1B DE 07 00 00 00 00 00 00 27 16 1B 3E 06 00 00 00 00 00 00 00 BD 44 00 00 16 0F 00 BD 44 00 00 1B C5 07 00 00 00 00 00 00 16 1B 3E 06 00 00 00 00 00 00 00 BD 44 00 00 16 0F 00 BD 44 00 00 1B D8 07 00 00 00 00 00 00 16 1B 3E 06 00 00 00 00 00 00 00 BD 44 00 00 16 0F 00 BD 44 00 00 1B C4 07 00 00 00 00 00 00 16 1B 3E 06 00 00 00 00 00 00 00 BD 44 00 00 16 0F 00 BD 44 00 00 1B DE 07 00 00 00 00 00 00 27 16 1B 3E 06 00 00 00 00 00 00 00 BD 44 00 00 16 0F 00 BD 44 00 00 1B C5 07 00 00 00 00 00 00 16 1B 3E 06 00 00 00 00 00 00 00 BD 44 00 00 16 0F 00 BD 44 00 00 1B D8 07 00 00 00 00 00 00 16 1B 3E 06 00 00 00 00 00 00 00 BD 44 00 00 16 0F 00 BD 44 00 00 1B C4 07 00 00 00 00 00 00 16 1B 3E 06 00 00 00 00 00 00 00 BD 44 00 00 16 0F 00 BD 44 00 00 1B DE 07 00 00 00 00 00 00 27 16 1B 3E 06 00 00 00 00 00 00 00 BD 44 00 00 16 0F 00 BD 44 00 00 1B C5 07 00 00 00 00 00 00 16 1B 3E 06 00 00 00 00 00 00 00 BD 44 00 00 16 0F 00 BD 44 00 00 1B D8 07 00 00 00 00 00 00 16 1B 3E 06 00 00 00 00 00 00 00 BD 44 00 00 16 04 0B 53 


new hex:(virtual 0x1EA)
header:
BD 44 00 00 AB 1F 00 00 00 00 00 00 BC 44 00 00 00 00 00 00 00 00 00 00 BD 44 00 00 00 00 00 00 CD 0E 00 00 7F BC 01 00 EA 01 00 00 7A 01 00 00 

body: 
01 10 42 00 00 0B 0B 0B 0B 0F 00 88 43 00 00 1B 45 06 00 00 00 00 00 00 01 10 42 00 00 16 14 19 00 88 43 00 00 0A 00 33 24 00 00 00 2D 01 33 24 00 00 28 A2 19 1B 9C 2C 00 00 00 00 00 00 16 09 00 E9 46 00 00 00 01 E9 46 00 00 2C 01 16 1B C7 26 00 00 00 00 00 00 24 14 1D FF FF FF FF 16 0F 19 00 88 43 00 00 09 00 2E 24 00 00 00 01 2E 24 00 00 2C 03 07 0D 01 19 00 88 43 00 00 0A 00 76 24 00 00 00 1B 24 11 00 00 00 00 00 00 16 19 1B 23 06 00 00 00 00 00 00 38 3A 19 00 88 43 00 00 0A 00 60 24 00 00 00 1B C5 0E 00 00 00 00 00 00 16 16 30 00 00 00 00 00 00 1B F1 23 00 00 00 00 00 00 01 10 42 00 00 27 16 19 00 88 43 00 00 09 00 64 03 00 00 00 1B 64 03 00 00 00 00 00 00 16 07 9F 01 77 19 00 88 43 00 00 0A 00 23 00 00 00 00 1B 04 0F 00 00 00 00 00 00 16 2A 16 19 00 88 43 00 00 0B 00 00 00 00 00 00 1B 42 11 00 00 00 00 00 00 27 16 19 19 00 88 43 00 00 0A 00 23 00 00 00 00 1B 04 0F 00 00 00 00 00 00 16 03 00 B7 FF FF FF 00 61 17 16 19 1B 69 0E 00 00 00 00 00 00 16 55 00 00 00 00 00 00 1B F3 00 00 00 00 00 00 00 19 1B 69 0E 00 00 00 00 00 00 16 35 00 10 30 00 00 00 1B AB 1E 00 00 00 00 00 00 24 18 2C 01 4A 4A 4A 16 16 0B 04 0B 53 


----------------------------------


rename function :

original:
CostTest
09 00 00 00 43 6F 73 74 54 65 73 74

new:
JoinXCom
09 00 00 00 4A 6F 69 6E 58 43 6F 6D


----------------------------------

XGStrategyAI.ApplyMissionPanic // calls JoinXCom when Alien Base mission is successfully completed

original hex: (next line 0xB1D)
0A 1D 0B 2C 06 0F 35 58 03 00 00 5C 03 00 00 00 01 19 1B 5C 11 00 00 00 00 00 00 16 09 00 A3 32 00 00 00 01 A3 32 00 00 12 20 6D FE FF FF 09 00 E7 FB FF FF 00 02 E7 FB FF FF 19 1B 9C 2C 00 00 00 00 00 00 16 3C 00 00 00 00 00 00 1B B3 00 00 00 00 00 00 00 35 58 03 00 00 5C 03 00 00 00 00 19 1B 5C 11 00 00 00 00 00 00 16 09 00 A3 32 00 00 00 01 A3 32 00 00 16 06 20 0B 

new hex:
0A 1D 0B 2C 06 07 0D 0B 2D 00 7D 43 00 00 0F 01 10 42 00 00 19 00 7A 43 00 00 0A 00 5E 24 00 00 00 1B 58 0F 00 00 00 00 00 00 16 1B 3F 06 00 00 00 00 00 00 16 01 10 42 00 00 01 10 42 00 00 01 10 42 00 00 01 10 42 00 00 01 10 42 00 00 01 10 42 00 00 01 10 42 00 00 01 10 42 00 00 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 0B 06 20 0B 

----------------------------------


XGObjectiveManager.BuildSubObjective // add subobjective 7, to launch a satellite over an occupied country

original hex: (next line 0x4AD)
0A AD 04 24 07 07 AA 04 9A 19 1B 23 27 00 00 00 00 00 00 16 0C 00 7D 40 00 00 00 1B CC 0F 00 00 00 00 00 00 2C BF 16 26 16 0F 35 D5 08 00 00 D9 08 00 00 00 01 00 F4 38 00 00 24 02 06 FC 0D 

new hex:
0A AD 04 24 07 07 AA 04 19 1B C5 24 00 00 00 00 00 00 16 0A 00 A3 2E 00 00 00 1B 35 14 00 00 00 00 00 00 16 0F 35 D5 08 00 00 D9 08 00 00 00 01 00 F4 38 00 00 24 02 0B 0B 0B 0B 0B 06 FC 0D 



------------------------------------

XGResearchUI.UpdateView // display objective 3 instead of 4 after completing the outsider shard research project

change:
PRES().UIObjectiveDisplay(4)
19 1B 12 22 00 00 00 00 00 00 16 0C 00 00 00 00 00 00 1B 2B 2B 00 00 00 00 00 00 24 04 16 

to:
PRES().UIObjectiveDisplay(3)
19 1B 12 22 00 00 00 00 00 00 16 0C 00 00 00 00 00 00 1B 2B 2B 00 00 00 00 00 00 24 03 16 


------------------------------------


XComHQPresentationLayer.GetObjectiveImagePath  // change image for objective three UI popup

original hex:
header:
5C 20 00 00 AB 1F 00 00 00 00 00 00 59 20 00 00 00 00 00 00 00 00 00 00 5C 20 00 00 00 00 00 00 00 08 00 00 56 08 01 00 78 01 00 00 48 01 00 00 

body:
0F 00 5A 20 00 00 1F 69 6D 67 3A 2F 2F 2F 55 49 4C 69 62 72 61 72 79 5F 53 74 72 61 74 65 67 79 49 6D 61 67 65 73 2E 53 63 69 65 6E 63 65 49 63 6F 6E 73 2E 00 05 5C 20 00 00 00 00 5C 20 00 00 0A 73 00 26 04 70 00 5A 20 00 00 1F 49 43 5F 49 6E 74 65 72 72 6F 67 61 74 65 53 65 63 74 6F 69 64 00 16 0A 9C 00 2C 02 04 70 00 5A 20 00 00 1F 49 43 5F 49 6E 74 65 72 72 6F 67 61 74 65 4F 75 74 73 69 64 65 72 00 16 0A BF 00 2C 03 04 70 00 5A 20 00 00 1F 49 43 5F 4F 75 74 73 69 64 65 72 53 68 61 72 64 00 16 0A DE 00 2C 04 04 70 00 5A 20 00 00 1F 49 43 5F 41 6C 69 65 6E 42 61 73 65 00 16 0A 0A 01 2C 05 04 70 00 5A 20 00 00 1F 49 43 5F 48 79 70 65 72 77 61 76 65 43 6F 6D 6D 75 6E 69 63 61 74 69 6F 6E 00 16 0A 2B 01 2C 06 04 70 00 5A 20 00 00 1F 49 43 5F 55 46 4F 54 72 61 63 6B 69 6E 67 00 16 0A 48 01 2C 07 04 70 00 5A 20 00 00 1F 49 43 5F 50 73 69 4C 69 6E 6B 00 16 0A 67 01 2C 08 04 70 00 5A 20 00 00 1F 49 43 5F 55 46 4F 46 6C 69 67 68 74 00 16 0A FF FF 04 1F 00 04 3A 5B 20 00 00 53 

new hex: (virtual 0x174)
header:
5C 20 00 00 AB 1F 00 00 00 00 00 00 59 20 00 00 00 00 00 00 00 00 00 00 5C 20 00 00 00 00 00 00 00 08 00 00 56 08 01 00 74 01 00 00 48 01 00 00 

body:
0F 00 5A 20 00 00 1F 69 6D 67 3A 2F 2F 2F 55 49 4C 69 62 72 61 72 79 5F 53 74 72 61 74 65 67 79 49 6D 61 67 65 73 2E 53 63 69 65 6E 63 65 49 63 6F 6E 73 2E 00 05 5C 20 00 00 00 00 5C 20 00 00 0A 73 00 26 04 70 00 5A 20 00 00 1F 49 43 5F 49 6E 74 65 72 72 6F 67 61 74 65 53 65 63 74 6F 69 64 00 16 0A 9C 00 2C 02 04 70 00 5A 20 00 00 1F 49 43 5F 49 6E 74 65 72 72 6F 67 61 74 65 4F 75 74 73 69 64 65 72 00 16 0A C2 00 2C 03 04 70 00 5A 20 00 00 1F 49 43 5F 53 74 65 61 6C 74 68 53 61 74 65 6C 6C 69 74 65 00 16 0A E1 00 2C 04 04 70 00 5A 20 00 00 1F 49 43 5F 41 6C 69 65 6E 42 61 73 65 00 16 0A 0D 01 2C 05 04 70 00 5A 20 00 00 1F 49 43 5F 48 79 70 65 72 77 61 76 65 43 6F 6D 6D 75 6E 69 63 61 74 69 6F 6E 00 16 0A 2E 01 2C 06 04 70 00 5A 20 00 00 1F 49 43 5F 55 46 4F 54 72 61 63 6B 69 6E 67 00 16 0A 4B 01 2C 07 04 70 00 5A 20 00 00 1F 49 43 5F 50 73 69 4C 69 6E 6B 00 16 0A 6A 01 2C 08 04 70 00 5A 20 00 00 1F 49 43 5F 55 46 4F 46 6C 69 67 68 74 00 16 0A FF FF 04 1F 00 0B 0B 0B 53 	


-----------------------------------


XGDebriefUI.UpdateCouncilDebrief // on returning from mission, display country in debrief instead of continent (which is blank)

original hex:
07 CA 06 9A 38 3A 35 5B 03 00 00 5C 03 00 00 00 00 19 00 59 26 00 00 09 00 A3 32 00 00 00 01 A3 32 00 00 38 3A 24 06 16 0F 00 65 26 00 00 1B 23 06 00 00 00 00 00 00 35 53 03 00 00 5C 03 00 00 00 00 19 00 59 26 00 00 09 00 A3 32 00 00 00 01 A3 32 00 00 16 0F 19 00 60 26 00 00 09 00 EF F9 FF FF 00 01 EF F9 FF FF 19 00 65 26 00 00 0A 00 9E 23 00 00 00 1B A3 0F 00 00 00 00 00 00 16 07 8C 06 2D 35 52 03 00 00 5C 03 00 00 00 00 19 00 59 26 00 00 09 00 A3 32 00 00 00 01 A3 32 00 00 0F 00 61 26 00 00 12 20 8C FE FF FF 1C 00 08 FA FF FF 00 1B 3A 0D 00 00 00 00 00 00 01 12 26 00 00 00 60 26 00 00 16 06 C7 06 0F 00 61 26 00 00 12 20 8C FE FF FF 1C 00 08 FA FF FF 00 1B 3A 0D 00 00 00 00 00 00 01 11 26 00 00 00 60 26 00 00 16 06 1C 09 


new hex:
07 CA 06 9A 38 3A 35 5B 03 00 00 5C 03 00 00 00 00 19 00 59 26 00 00 09 00 A3 32 00 00 00 01 A3 32 00 00 38 3A 24 06 16 0F 19 00 60 26 00 00 09 00 EF F9 FF FF 00 01 EF F9 FF FF 19 1B 45 06 00 00 00 00 00 00 35 54 03 00 00 5C 03 00 00 00 00 19 00 59 26 00 00 09 00 A3 32 00 00 00 01 A3 32 00 00 16 0B 00 5B 24 00 00 00 1B A6 0F 00 00 00 00 00 00 27 16 07 7A 06 2D 35 52 03 00 00 5C 03 00 00 00 00 19 00 59 26 00 00 09 00 A3 32 00 00 00 01 A3 32 00 00 0F 00 61 26 00 00 12 20 8C FE FF FF 1C 00 08 FA FF FF 00 1B 3A 0D 00 00 00 00 00 00 01 12 26 00 00 00 60 26 00 00 16 06 C7 06 0F 00 61 26 00 00 12 20 8C FE FF FF 1C 00 08 FA FF FF 00 1B 3A 0D 00 00 00 00 00 00 01 11 26 00 00 00 60 26 00 00 16 00 60 26 00 00 00 60 26 00 00 06 1C 09 

------------------------------------

XComStrategyGame.int  // New Localization Entry for subobjective 7

placed after SubObjectiveNames[eSubObj_ResearchShard]="Research the Outsider Shard"

SubObjectiveNames[eSubObj_ObtainShards] ="Launch a satellite over an occupied country"

placed after SubObjectiveInDepth[eSubObj_ResearchShard]

SubObjectiveInDepth[eSubObj_ObtainShards]="To find one of the alien bases, we'll need eyes in the sky. We should launch a satellite over an alien-occupied country so that we can do a detailed search."


Change and use objective 3

change:
GameObjectiveNames[eObj_ObtainShards]="Obtain More Outsider shards."

to:
GameObjectiveNames[eObj_ObtainShards]="Recon an Occupied Country"


Update Alien Base debrief localization text:
change:
m_strAlienBaseFeedback="XCOM successfully infiltrated and eliminated the alien base in <XGParam:StrValue0/>!"

to:
m_strAlienBaseFeedback="XCOM successfully infiltrated and eliminated the alien base in <XGParam:StrValue0/>, which has now rejoined the XCOM Project."


Localization Change:
change:
m_strTitle="Alien Base Assault"

to:
m_strTitle="Assault Base: " 

 

 

 

Probably because you didn't read the thread.

Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.

×
×
  • Create New...