Jump to content

Modding EXALT


wghost81

Recommended Posts

  • Replies 114
  • Created
  • Last Reply

Top Posters In This Topic

 

Ok then. I should have figured that out myself, but I wrongly assumed that these missions seem to use Terror mission maps (actually using separate re-used maps), also because that is possible to have dynamically placed objects on maps, so these relays are similar to meld canisters, and can be safely removed from maps.

I though so, but again, I can't seem to find the placement code.

 

I've noticed the positions of the relays coincide directly with the position of the green pods in the abduction variants of the same maps.

That's an interesting observation. Which could suggest, that those maps were in fact re-done for EXALT missions and those objects aren't dynamic.

:facepalm: That is exactly what I was trying to say in my last post; perhaps I should have used another word to describe those cheap copies of existing maps (re-done is too strong word to describe map with minimal, almost cosmetic difference from original).

 

<..>

The base defense code is a very strange one. I'm working on Larger Pods Mod for EW now and I see some places inside the code, which do not match with my in-game experience. First, as I remember, there are no random stationary pods on the map, all aliens drop in during combat. Second, numDynamicAliens is equal to 10 in the code, but, again, as I remember there were more. I suspect that the final version of this mission is hard-coded in some native function, because it's heavily scripted.

Thought so, because that part of code in <XGStrategyAI.DetermineHQAssaultSquad> doesn't make any sense, and I strongly suspect, that if we try to dig deeper and to find actual function, responsible for that - it will lead us to same result, as in case with EXALT reinforcements.

 

Edit: got ninja'd by Panzercracker (I hate, when forum does that).

 

Can you make EXALT still exist for covert operation after attack their HQ? I like their gun appearent. I am trying collecting them for the rest of my troops.

You know, that you can still do scans and have covert operations, even if you have all clues to pinpoint EXALT HQ location, right? There is nothing forcing you to raid (except continued EXALT activity).

Edited by Tycus
Link to comment
Share on other sites

Thought so, because that part of code in <XGStrategyAI.DetermineHQAssaultSquad> doesn't make any sense, and I strongly suspect, that if we try to dig deeper and to find actual function, responsible for that - it will lead us to same result, as in case with EXALT reinforcements.

 

Agreed. Also EWI_HQAssault has no dynamic aliens set in DefaultMaps.ini. Maybe someone could test it with Uber Etheral.

Edit: Tested with DynamicAliens[0]=eChar_Outsider, DynamicAliens[1]=eChar_EtherealUber and none of them spawned.

 

I suspect there are streamed parts of maps, that contain events or scripts (maybe action scripts). In already mentioned ini are following maps listed as StreamingMaps:

 

EWI_HQAssault

  • EWI_ExaltHQAssault_Stream
  • Stream file contains strings: SelectAlienSet | Alien Set 0 | Trigger Alien First Wave

URB_Trainyard

  • URB_Trainyard_CovExt (Covert Extraction)
  • CovExt file contains strings: m_arrAlienSets | Is this the first wave of reinforcements? | Array reinforcement events

URB_TruckStop

  • URB_TruckStop_CNH (Capture and Hold)
  • CNH file contains strings: m_arrAlienSets | m_nFirstAlienEnteredRemoteEvent | Wave system events

If are these files opened with UE Explorer, there are no classes inside.

 

 

Here are some pictures with debug info from XCOM HQ Assault. AIDebugWaveSystem true

http://i.imgur.com/eyqxlOl.jpg

 

Two events before the end. AIDebugWaveSystemContentRequests true

http://i.imgur.com/ApirIpH.jpg

 

The last wave. Notice note about XComWaveSystem deactivated. AIDebugWaveSystemContentRequests true

http://i.imgur.com/NjR8HFb.jpg

 

And Exalt's debug.

http://i.imgur.com/mc09yfB.jpg

 

And here is some logged output from HQ assault mission:

 

 

XCom_Content: Alien Content Requested - # current requests: 11
XCom_Content: Alien: ePawnType_Mechtoid
XCom_Content: RequestAlienContentForPawnType TRACE:
Script call stack:
    (XGAISpawnMethod_DropIn_13) XGAISpawnMethod::Init
    (XGAISpawnMethod_DropIn_13) XGAISpawnMethod::InitParams
    (XGAISpawnMethod_DropIn_13) XGAISpawnMethod_DropIn::InitDropIn
    (XComWaveSystem_1) XComWaveSystem::CreateSpawnMethod
    (XComWaveSystem_1) XComWaveSystem::SpawnGroup
    (XComWaveSystem_1) XComWaveSystem::SpawnWave
    (XComWaveSystem_1) XComWaveSystem::UpdateWaveSpawning
    (XComWaveSystem_1) XComWaveSystem::OnEndTurn
    (XGOvermind_0) XGOvermind::UpdateWaves
    (XGOvermind_0) XGOvermind::EndTurn
    (XGAIPlayerOvermindHandler_0) XGAIPlayerOvermindHandler::EndTurn
    (XGAIPlayer_0) XGAIPlayer::ExecutingAI
XCom_Content: Large: eItem_MechtoidPlasmaCannon
XCom_Content: Calling CacheAlienContentAsync: # current requests: 11
XCom_Content: CacheContentAsync: Starting
XCom_Content: Loading GameUnit_XComMechtoid for ePawnType_Mechtoid
XCom_Content: Loading package GameUnit_XComMechtoid_SF (async)
XCom_Content: Loading Weapon_MechtoidPlasmaCannon for eItem_MechtoidPlasmaCannon
XCom_Content: Loading package Weapon_MechtoidPlasmaCannon_SF (async)
XCom_Content: CacheContentAsync: Requested 2 Archetypes
XCom_Content: Alien Content Requested - # current requests: 13
XCom_Content: LoadContentArchetype: Async load of ePawnType_Sectoid complete
XCom_Content: LoadContentArchetype: Async load of eItem_SectoidPlasmaPistol complete
XCom_Content: LoadContentArchetype: Async load of ePerk_MindMerge complete
XCom_Content: LoadContentArchetype: Async load of ePawnType_Mechtoid complete
XCom_Content: LoadContentArchetype: Async load of eItem_MechtoidPlasmaCannon complete
XCom_Content: Loading package ..\..\XComGame\CookedPCConsole\Sectoid1_Bank2_SF.upk (0 remaining for ..\..\XComGame\CookedPCConsole\Sectoid1_Bank2_SF.upk)

ScriptWarning: Accessed None 'kTriggerEvent'
XComWaveSystem EWI_HQAssault_Stream.TheWorld:PersistentLevel.XComWaveSystem_1

 

 

Edited by Drakous79
Link to comment
Share on other sites

I'm almost done with Larger Pods and after some little tweaking I will release it. EXALT will be buffed too: http://static2.nexusmods.com/15/mods/151/images/404-2-1386052582.jpg

 

EXALT will have 4+ (4-6) pods with heavy+medic+(3-4)operatives. It is theoretically possible to add more heavies (main alien) or medics (supporting alien), but practically there is no space inside the function. I could free more space by getting rid of alien leaders compatibility code and early Mutons LPR, but I'm not sure I want to do this right now. I think, we have to test it in-game first.

Link to comment
Share on other sites

  • 2 weeks later...

Returning to modding EXALT. :smile:

 

This is some EXALT-related code in GetPossibleAliens and GetSupportAlien.

 

 

 

if((iMonth < 4) && !bExaltEliteOnly)
{
    AddPossible(25, 100, kSquad.arrPossibleSoldiers); // eChar_ExaltSniper
    AddPossible(26, 100, kSquad.arrPossibleSoldiers); // eChar_ExaltHeavy
    AddPossible(27, 100, kSquad.arrPossibleSoldiers); // eChar_ExaltMedic
}
else
{
    AddPossible(29, 100, kSquad.arrPossibleSoldiers); // eChar_ExaltEliteSniper
    AddPossible(30, 100, kSquad.arrPossibleSoldiers); // eChar_ExaltEliteHeavy
    AddPossible(31, 100, kSquad.arrPossibleSoldiers); // eChar_ExaltEliteMedic
}

 

 

 

 

case 24:            // eChar_ExaltOperative
case 25:            // eChar_ExaltSniper
case 26:            // eChar_ExaltHeavy
case 27:            // eChar_ExaltMedic
    return 24;      // eChar_ExaltOperative
    break;
case 28:            // eChar_ExaltEliteOperative
if(!bAlt)
{
    return 30;  // eChar_ExaltEliteHeavy
}
else
{
    return 31;  // eChar_ExaltEliteMedic
}
case 29:        // eChar_ExaltEliteSniper
if(!bAlt)
{
    return 28;  // eChar_ExaltEliteOperative
}
else
{
    return 31;  // eChar_ExaltEliteMedic
}
case 30:        // eChar_ExaltEliteHeavy
if(!bAlt)
{
    return 28;  // eChar_ExaltEliteOperative
}
else
{
    return 29;  // eChar_ExaltEliteSniper
}
case 31:        // eChar_ExaltEliteMedic
if(!bAlt)
{
    return 30;  // eChar_ExaltEliteHeavy
}
else
{
    return 29;  // eChar_ExaltEliteSniper
}
break;

 

 

First thing: all types have equal probabilities, elites replace regular EXALT since Month 4. Second: only elites have 3 different types of units in pod, regular EXALT have operatives as both supporting "aliens".

 

I want to remove Exalt Medic (regular and elite) from list of possible aliens and add it as second support, so EXALT pods will always look like: Heavy + Medic + Operative or Sniper + Medic + Operative.

 

Any thoughts on improvement of EXALT pod composition?

 

UPD: I see now, I'll loose interesting Medic + Heavy + Sniper combo if I'll remove Medics. In this case, I will leave Medics in possible aliens list and just add switches to regular EXALT, which will result in Heavy + Medic + Operative, Sniper + Medic + Operative, Medic + Heavy + Sniper for both regular and elite EXALT pods.

Edited by wghost81
Link to comment
Share on other sites

  • 1 month later...

Returning to modding EXALT. :smile:

 

Exalt Squad Composition v.1.0. Allows for all three different types of EXALT units in one pod for both regular and elite EXALT.

 

Next thing on my TODO list is to give them lasers from the very beginning and then upgrade elites with plasmas. But if player is allowed to capture powerful weapons early in the game. it won't be fun. So I will make EXALT weapons explode into fragments too. This will mean more fragments, but I hope EXALT will be more of a challenge.

 

And another thing to do is lower suicidal "capture the flag" tendencies. I want to make EXALT prioritize killing XCOM soldiers on the battlefield, not dash for transmitter and die.

Link to comment
Share on other sites

I've just read the entire thread since I'm looking to document the number and type of EXALT units during missions to add to the info about the aliens already present http://ufopaedia.org/index.php?title=Alien_Deployment_(EU2012)#Mission_Deployment. As mentioned above, the code in XGStrategyAI, DetermineCovertOpsSquad doesn't correspond to actual missions.

		default:
			iNumPods = 4;
			iNumAliens = 12;
			// End:0x9f Break;
			break;
	}
	// End:0xdf Loop:False
	if(Game().GetDifficulty() == 3)
	{
		iNumPods += 1;
		iNumAliens += 3;

This would seem to set the number of EXALT units during Covert Ops in 12, divided into 4 pods, with 3 additional units added if playing on Impossible.

 

The issue is that, when playing on Impossible I'm only seeing 12 EXALT units during Covert Extraction missions and 16 units during Data Recovery. With regular Elites it does seem that their regular pods are built around 1 Medic, Sniper or Heavy + 2 Operatives. But with Elites I'm pretty sure I've seen 2 Snipers or Heavies appearing as DynamicAliens type.

 

Anyway, for a few suggestions, I'd say to beef up the Operatives since they have no abilities whatsoever. For instance, add Tactical Sense and Aggression to regular Operatives, and with Elites give them also Lightning Reflexes (which would go rather well since my tactics against EXALT use a lot of Overwatch shots) or even Resilience.

Link to comment
Share on other sites

Number of EXALT depends on current month:

    switch(GetMonth())
    {
        // End:0x18
        case 0:
        // End:0x37
        case 1:
            iNumPods = 2;
            iNumAliens = 6;
            // End:0x9F
            break;
        // End:0x3C
        case 2:
        // End:0x5C
        case 3:
            iNumPods = 3;
            iNumAliens = 9;
            // End:0x9F
            break;
        // End:0x61
        case 4:
        // End:0x81
        case 5:
            iNumPods = 4;
            iNumAliens = 12;
            // End:0x9F
            break;
        // End:0xFFFF
        default:
            iNumPods = 4;
            iNumAliens = 12;
            // End:0x9F
            break;
    }
    // End:0xDF
    if(Game().GetDifficulty() == 3)
    {
        iNumPods += 1;
        iNumAliens += 3;
    }
Months 0-5 are set specifically and default used for all others (6+). Note that GetMonth() takes Marathon setting into account and halves the return value, resulting in slower progression. Edited by wghost81
Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.

×
×
  • Create New...