Jump to content

Modding EXALT


wghost81

Recommended Posts

Made two quick mods for EXALT:

1. EXALT laser/plasma

2. Increased number of reinforcements per group

 

http://www.nexusmods.com/xcom/mods/428

 

More details in mod file/readme.

 

From the download page description:

 

4. "EXALT Weapons Mod" — This mod changes DefaultLoadouts.ini to give regular EXALT units XCOM laser weapons and elite EXALT units XCOM plasma weapons. You will not collect nor fragments, not weapons from EXALT on battlefield.

The last sentence is missing a subject. "You will not collect [something] nor fragments," and the last part is also unclear. Possibly it should be "nor weapons from EXALT on the battlefield"?

 

-Dubious-

Link to comment
Share on other sites

  • Replies 114
  • Created
  • Last Reply

Top Posters In This Topic

I think I've finally cracked how to separate out the stat bonuses for Exalt (and alien, incidentally) weapons from the base weapon types.

 

As I'd mentioned in previous threads, the key to getting the damage differentiated is in XGAbility_Targeted.CalcDamage:

m_iActualDamage = XComGameReplicationInfo(class'Engine'.static.GetCurrentWorldInfo().GRI).m_kGameCore.CalcOverallDamage(m_kWeapon.GameplayType(), m_kUnit.m_aCurrentStats[12], m_bCritical, m_bReflected)

The GameplayType() reference needs to be changed to ItemType(). This will change the actual damage, but not the displayed possible damage (which I'll get to in a bit).

 

In order to change the inventory stats (bonus aim, crit, health, etc) for a weapon, the key function to change is XGUnit.ApplyInventoryStatModifiers

eWeapon_GameplayType = kWeapon.GameplayType()

Changing this to ItemType will change the actual inventory stats for the current active weapon, but won't change the detailed list breakdown.

 

To change the to-hit and crit breakdown, two further functions have to be modified : XGAbility_Targeted.GetShotSummary and XGAbility_Targeted.GetCritSummary.

In the first, change the line :

iMod = XComGameReplicationInfo(class'Engine'.static.GetCurrentWorldInfo().GRI).m_kGameCore.GetWeaponStatBonus(1, m_kWeapon.GameplayType(), m_kUnit.GetCharacter().m_kChar)

In the second, change the lines :

if((m_kWeapon != none) && XComGameReplicationInfo(class'Engine'.static.GetCurrentWorldInfo().GRI).m_kGameCore.GetTWeapon(m_kWeapon.GameplayType()).iCritical > 0)
kInfo.arrCritBonusValues.AddItem(XComGameReplicationInfo(class'Engine'.static.GetCurrentWorldInfo().GRI).m_kGameCore.GetTWeapon(m_kWeapon.GameplayType()).iCritical)
pistolCrit = XComGameReplicationInfo(class'Engine'.static.GetCurrentWorldInfo().GRI).m_kGameCore.GetWeaponStatBonus(13, m_kWeapon.GameplayType(), m_kUnit.GetCharacter().m_kChar)

For some reason there is a special case for pistol crit.

 

-----------

 

In order to get the damage display working, somewhat more drastic action is required. There are two functions that have to be modified, and both of them have to be increased in size to make room for the required code.

 

The first function is XGAbility_Targeted.GetPossibleDamage. The vanilla code is has this computation done during weapon initialization (using GameplayType) and sets a class variable, so GetPossibleDamage simply is:

return iPossibleDamage

To remedy this something like :

if(m_kWeapon != none)
{
	iPossibleDamage = XComGameReplicationInfo(class'Engine'.static.GetCurrentWorldInfo().GRI).m_kGameCore.GetTWeapon(m_kWeapon.ItemType()).iDamage
}
return iPossibleDamage

is required. I have this kind of implemented, but my version has more code (since Long War features more extensive damage calculation changes). The key is that (1) Damage is retrieved using ItemType and (2) the iPossibleDamage variable is changed as a side-effect of calling GetPossibleDamage.

 

The second change is to the function XGAbility.GetHelpText. In the vanilla code the help text is created when the XGAbility is initialized, so GetHelpText is simply :

return strHelp

This has to be expanded in order to both call GetPossibleDamage (in order to reset the PossibleDamage based on ItemType instead of GameplayType) and call the function to rebuild the strHelp string.

 

The new code looks like :

if(IsA('XGAbility_Targeted'))
{
	XGAbility_Targeted(self).GetPossibleDamage()
	XComGameReplicationInfo(class'Engine'.static.GetCurrentWorldInfo().GRI).m_kGameCore.m_kAbilities.BuildAbilityText(self)
}	
return strHelp

For this at least I can supply a complete upk_mod file that with the hex for the above code that resizes the function:

 

 

MODFILEVERSION=4
UPKFILE=XComGame.upk
GUID=5B 06 B8 18 67 22 12 44 85 9B A8 5B 9D 57 1D 4B // XComGame_EW_patch1.upk
FUNCTION=GetHelpText@XGAbility
RESIZE=78

// rebuild Help text for certain abilities

[BEFORE_HEX]
[HEADER]
15 00 00 00 0D 00 00 00 
[/HEADER]
[CODE]
//return strHelp
04 01 1B 89 00 00 

//return ReturnValue
04 3A 67 89 00 00 

//EOS
53 	
[/CODE]
[/BEFORE_HEX]


[AFTER_HEX]
[HEADER]
C1 00 00 00 85 00 00 00 
[/HEADER]
[CODE]
//if(IsA('XGAbility_Targeted'))
07 AC 00 C5 21 B9 80 00 00 00 00 00 00 16

	//XGAbility_Targeted(self).GetPossibleDamage()
	19 2E BA 8A 00 00 17 0A 00 4B 8A 00 00 00 1B 88 3A 00 00 00 00 00 00 16 

	//XComGameReplicationInfo(class'Engine'.static.GetCurrentWorldInfo().GRI).m_kGameCore.m_kAbilities.BuildAbilityText(self)
	19 19 19 2E 2D 32 00 00 19 12 20 36 FE FF FF 0A 00 9E F9 FF FF 00 1C DE FB FF FF 16 09 00 5C F9 FF FF 00 01 5C F9 FF FF 09 00 1F 32 00 00 00 01 1F 32 00 00 09 00 19 12 00 00 00 01 19 12 00 00 0B 00 00 00 00 00 00 1B 52 0F 00 00 00 00 00 00 17 16 

//return strHelp
04 01 1B 89 00 00 

//return ReturnValue
04 3A 67 89 00 00 

//EOS
53 	
[/CODE]
[/AFTER_HEX] 

 

 

 

These changes will have the following effects :

  1. Alien LPR variants will no longer derive the +10 aim bonus from the base LPR (Floater, Thin Man, Outsider, and early Mutons)
  2. All Alien and Exalt weapon damage, aim, crit etc stats will be configurable separately in the DGC.ini
Link to comment
Share on other sites

dubiousintent, thanks, fixed the description.

 

Amineri, good work with the weapons! Ability to customize all weapon stats separately is a good thing indeed.

 

I decided to switch EXALT to regular XCOM weapons, as no other changes are required to prevent player from collecting them. There is one contradiction about EXALT weapons modding: we want them more powerful, to make EXALT stronger, but at the same time we don't want to give player access to such powerful weapon, as it will make EXALT (and aliens) weak again.

Edited by wghost81
Link to comment
Share on other sites

I'd like to see them modded to be aliens. Sleeper cells planted before the invasion. This is X-COM - an ALIEN invasion - there are a million titles out there for human on human combat already. For now, when not playing for 'bragging rights' and just playing or fun I use this mod and turn them off.

 

I wish LW would re-purpose every tiny bit of their code to give us more and better aliens and other stuff and just gut them right out of the game.

Edited by hambil
Link to comment
Share on other sites

 

 

I decided to switch EXALT to regular XCOM weapons, as no other changes are required to prevent player from collecting them. There is one contradiction about EXALT weapons modding: we want them more powerful, to make EXALT stronger, but at the same time we don't want to give player access to such powerful weapon, as it will make EXALT (and aliens) weak again.

 

Have you verified the Exalt pawns can in fact carry non-Exalt weapons?

 

 

I wish LW would re-purpose every tiny bit of their code to give us more and better aliens and other stuff and just gut them right out of the game.

 

We can't really change pawns and animations, and I don't see any value in removing or ignoring content entirely, so we're going to repurpose these guys so they'll be alien allies.

Link to comment
Share on other sites

Why not simply let EXALT keep its current weapons and give them instead additional abilities? E.g, giving Bring 'Em On, Aggression or Opportunist could make their critical hits quite dangerous, along with defensive perks like Resilience or Low Profile.

Link to comment
Share on other sites

 

I think I've finally cracked how to separate out the stat bonuses for Exalt (and alien, incidentally) weapons from the base weapon types.

...

 

Well done indeed. :smile: Hmm. Do you have a particular wiki article in mind for this analysis, or do we need a new one?

 

-Dubious-

Edited by dubiousintent
Link to comment
Share on other sites

Well, in terms of where the functionality went in terms of mods I created, it was split between my damage mod (changing the weapon damage values and display of possible damage) and the New Items mod (all of the other stats).

 

The reason I couldn't post up hex for most of the code is that it is a bit entangled with these somewhat more involved mods for Long War EW. (The damage mod has to support new perks and damage-modifying items, and the New Items mod has some other tweaks to allow new items to correctly grant stat bonuses in the tactical game).

 

Whether it should all be put together into a single wiki article ... I don't really have an opinion :)

Link to comment
Share on other sites

Why not simply let EXALT keep its current weapons and give them instead additional abilities? E.g, giving Bring 'Em On, Aggression or Opportunist could make their critical hits quite dangerous, along with defensive perks like Resilience or Low Profile.

 

This, absolutely. EXALT should show you how nasty some of these perks can be when you're up against them yourself.

 

That said, the biggest priority for improving EXALT is certainly upgrading their AI as much as possible. Stat-wise, I would like to see them brought up to mid- to high-level XCOM soldiers; I don't mind that their weapons don't do as much damage as the aliens, but giving each of them +10 aim wouldn't be out of place and mitigate that somewhat.

 

Ideally, EXALT would try to stay in cover and out of sight until enough reinforcements have arrived to overwhelm XCOM, and only then go for an all out attack.

Link to comment
Share on other sites

Have you verified the Exalt pawns can in fact carry non-Exalt weapons?

Of course. I've played with this mod for a while. And you can see EXALT with XCOM lasers on screen-shots. :wink:

 

I don't mind that their weapons don't do as much damage

I do. :smile: They can't one-shoot you, even with regular armor. So they're not much of a threat, it's as simple as that. They have a poor aim and a low damage, it's the only enemy you don't need to use cover against. You can be pretty safe even standing in the open. Even on Impossible.

 

Perks are good. I love covering fire on EXALT medics. With lasers if you careless and trigger reinforcements while standing in the open, they can even one-shoot you. I will think about other perks, sure.

Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.

×
×
  • Create New...