Skip to content

Adding powers to ME2 characters

Tajfun403 edited this page Jan 30, 2021 · 1 revision

Adding powers to ME2 characters

By Tajfun403

This guide will show you how to add any new power to your current ME2 character. It allows you to, essentially, build a custom class with everything you want. The powers you chose will stay with you for whole playthrough - you can normally rank them up without loosing the progress.

Here are the tools you will need to follow the guide:

Table of Contents

Make sure you have backups of all files you edit, just in case you'd want to revert the changes.

Associate powers with their files

In order to use power, file which contains it have to be loaded in game's memory. Otherwise, it won't be found and therefore can't be used. Loading isn't done automatically - it has to be scripted before.

Powers are loaded with help of DynamicLoadMapping - a big list of associations betweens classes and their files. Whenever common game asset want to access given class and it's not loaded yet, this list easily points it to a file that can be loaded in order to access class content.

All powers (by the way, also weapons and some GUI images) which were meant to be used by any player at any time have their mappings set. It allows to load them really easily. Class-unique powers weren't meant to be common-available, though. Therefore, DynamicLoadMapping have to be set manually for them.

To do this, we need to edit the Coalesced.ini file, stored in Mass Effect 2\BioGame\Config\PC\Cooked directory. We need to open it with Notepad++ - using standard notepad will corrupt the file.

After opening the file, we need to find [SFXGame.SFXEngine] section.

Then, we need to add new entries to the list. To do this, make new, empty line anywhere in this section (place the pointer at end of the line and press enter) and copy+paste following entries.

DynamicLoadMapping=(ObjectName="SFXGameContent_Powers.SFXPower_AdrenalineRush",SeekFreePackageName="SFXCharacterClass_Soldier")
DynamicLoadMapping=(ObjectName="SFXGameContent_Powers.SFXPower_AIHacking",SeekFreePackageName="SFXCharacterClass_Engineer")
DynamicLoadMapping=(ObjectName="SFXGameContent_Powers.SFXPower_BioticCharge",SeekFreePackageName="SFXCharacterClass_Vanguard")
DynamicLoadMapping=(ObjectName="SFXGameContent_Powers.SFXPower_Cloak",SeekFreePackageName="SFXCharacterClass_Infiltrator")
DynamicLoadMapping=(ObjectName="SFXGameContent_Powers.SFXPower_CombatDrone",SeekFreePackageName="SFXCharacterClass_Engineer")
DynamicLoadMapping=(ObjectName="SFXGameContent_Powers.SFXPower_ConcussiveShot",SeekFreePackageName="SFXCharacterClass_Soldier")
DynamicLoadMapping=(ObjectName="SFXGameContent_Powers.SFXPower_CryoAmmo",SeekFreePackageName="SFXCharacterClass_Infiltrator")
DynamicLoadMapping=(ObjectName="SFXGameContent_Powers.SFXPower_CryoFreeze",SeekFreePackageName="SFXCharacterClass_Engineer")
DynamicLoadMapping=(ObjectName="SFXGameContent_Powers.SFXPower_IncendiaryAmmo",SeekFreePackageName="SFXCharacterClass_Vanguard")
DynamicLoadMapping=(ObjectName="SFXGameContent_Powers.SFXPower_Incinerate",SeekFreePackageName="SFXCharacterClass_Engineer")
DynamicLoadMapping=(ObjectName="SFXGameContent_Powers.SFXPower_Overload",SeekFreePackageName="SFXCharacterClass_Engineer")
DynamicLoadMapping=(ObjectName="SFXGameContent_Powers.SFXPower_PowerArmor",SeekFreePackageName="SFXCharacterClass_Sentinel")
DynamicLoadMapping=(ObjectName="SFXGameContent_Powers.SFXPower_Pull",SeekFreePackageName="SFXCharacterClass_Vanguard")
DynamicLoadMapping=(ObjectName="SFXGameContent_Powers.SFXPower_Shockwave",SeekFreePackageName="SFXCharacterClass_Vanguard")
DynamicLoadMapping=(ObjectName="SFXGameContent_Powers.SFXPower_Singularity",SeekFreePackageName="SFXCharacterClass_Adept")
DynamicLoadMapping=(ObjectName="SFXGameContent_Powers.SFXPower_Throw",SeekFreePackageName="SFXCharacterClass_Adept")
DynamicLoadMapping=(ObjectName="SFXGameContent_Powers.SFXPower_Warp",SeekFreePackageName="SFXCharacterClass_Adept")
DynamicLoadMapping=(ObjectName="SFXGameContent_Powers.SFXPower_DisruptorAmmo",SeekFreePackageName="SFXCharacterClass_Soldier")

Now, we need to save our file, which isn't so obvious. Each section of Coalesced file contains a size check. When we add or remove something from the file, its size changes, therefore is no longer valid with stored sizes. When actual and stored size differ, game just crashes on loading.

To fix it, we need to run ME2IniFixer utility after each edit. It corrects stored sizes, making the file valid again.

Make powers survive loading screen

Each time when game summons a loading screen, a special check is performed, where any 'invalid' powers are removed from the character.

Powers which are considered as valid are the ones that are default to current character's class (eg. Incendiary ammo, Cryo ammo, Charge, Shockwave and Pull for Vanguard) as well as bonus powers. If a power belongs to any of these two groups, it won't be removed. Also, if any of default powers were removed, the same check will add them back.

Unfortunately, most of powers are by default available to only one or two classes. Such power added to other class will be removed on loading screen.

Easiest way to bypass this limitation is marking all powers in the game as a bonus powers, and this is what we'll do now now.

For clarify - it won't make them apper neither in Advanced Training screen, nor in a New Game one. They're handled by special GUIs, which are independ from what we'll be doing now.

Sometimes, namely when using Advanced Training Research or creating a New Game, all already added bonus powers are removed. And since we'll mark all powers in the game as such, yeah, you may guess. In such case, you NEED to reload your save (e.g. by doing a Quick Save - Quick Load sequence), which will bring all default powers back.

Run ME3Explorer and open Package Editor tool. You can find it either by using search bar, or by looking to 'Develop mods' group, in lower part of main window.

When it's ready, open Mass Effect 2\BioGame\CookedPC\SFXGame.pcc file. You can either use File -> open menu, or search for the file from Windows Explorer and drag-n-drop it to the PkgEd window.

It contains parent class of all powers. It's the class which all powers in the game inherits from - each power have 'copy' of all SFXPower properties, which can be either overridden, or inhertied with original value. Basic properties, such as damage or stringRefs, are overridden in all playable powers, therefore changing their default value here won't take any effect on them. Other properties, are, however, rarely overridden, and therefore updating them here will affect a lot of powers.

The property which marks power as a bonus power is named IsHenchmenUnique. Its default value is 'false', and all original bonus powers override it to 'true'. When we change default value here, in main SFXPower class, all powers will inherite new value and become bonus powers (well, some kind of).

Let's start then. Using goto window from upper menu, move to export number 31039. First type this number in the texbox, and then click button next to it (1). As you can see, not all available properties are listed. We have to add it with help of Add Property menu (2).

When new window is open, scroll down the list on right and select BoolProperty IsHenchmenUnique (3), then click Add Property button (4).

You can notice a new element has been added on the list in right side of PkgEd window - it's our property. Now, we have to change its value to true. Click on new property. Then expand drop-down list from interpreter menu, select option True from it, and save your value by clicking 'set'.

Now, we only have to save the file (Ctrl+S or File -> Save) and we're done with Package Editor part.

Adding powers using in-game console

With required edits commited, we can slowly proceed to adding powers. Well-known method of adding new powers is doing it with help of the console. A binkw32 patch is needed to be installed in order to enable it. You can then open the console by pressing either:

  • tab, for a small, single-line console that will disappear after entring one command
  • tilde (~), to open a bigger one which also doesn't close automatically (you have to press Escape for that).

The console only supports entering unformatted text - there aren't any buttons, auto-completion, typing-time validations... just a normal string.

There are 4 console commands oriented in powers, which allow to add, remove, and levelup any power, namely:

givepower target PowerName
removepower target PowerName
setrank powersOwner PowerName NewRankToSet
givetalentpoints amount

When typing the command in the console, you need to repeat the name, and then, write values for parameters:

You can add power to Shepard (typing "self"), squadmate (typing their name, eg "liara", "tali", "miranda" etc.), or to the enemy you're currently aiming at (typing simple "target"). List of available powers is placed below.

Powers for squadmates/enemies can only be added temporarily - IsHenchmenUnique hack which worked for Shepard doesn't work for them. The only way to edit their powers is either readding them after each loading screen, or editing pawns' PCC files, which is a lot harder and not covered by this guide.

If you don't longer want given power, you can remove it by using removepower command. Parameters goes the same as with givepower one.

Removing default powers require additional edits. See Removing default powers for instructions.

With setrank command, you can level up first power ranks (0-3) without consuming squad points. Still, going to squad menu and leveling power up from it GUI will be easier. You can give yourself more squad points with givetalentpoints amount command - where first, and the only parameter, is how much points do you want to add. You can also write negative number to subtract surplus points.

Powers list

Here's the list of names of all fully-working powers you can add. You should write the name as a last command parameter.

If name needs a comment, I place it after a semicolon (;) symbol - you have not to write this comment in your console command. I.e. if it's "SFXPower_PowerArmor ;Tech Armor", you only take "SFXPower_PowerArmor". ";Tech Armor" is there only for your knowledge.

SFXPower_AdrenalineRush
SFXPower_AIHacking
SFXPower_BioticCharge
SFXPower_Cloak
SFXPower_CombatDrone
SFXPower_ConcussiveShot
SFXPower_DisruptorAmmo
SFXPower_CryoAmmo
SFXPower_CryoFreeze
SFXPower_IncendiaryAmmo
SFXPower_Incinerate
SFXPower_Overload
SFXPower_PowerArmor  ;Tech Armor
SFXPower_Pull
SFXPower_Shockwave
SFXPower_Singularity
SFXPower_Throw
SFXPower_Warp
SFXPower_AntiOrganicAmmo_Player  ;Shredder Ammo
SFXPower_NeuralShock_Player
SFXPower_WarpAmmo_Player
SFXPower_Dominate_Player
SFXPower_ShieldJack_Player  ;Energy Drain
SFXPower_Reave_Player
SFXPower_Fortification_Player
SFXPower_GethShieldBoost_Player
SFXPower_Barrier_Player
SFXPower_Crush_Player  ;Slam
SFXPower_ArmorPiercingAmmo_Player
SFXGameContentDLC_HEN_VT.SFXPower_ZaeedUnique_Player  ;Inferno Grenade, requires Zaeed DLC
SFXGameContentKasumi.SFXPower_KasumiUnique_Player ;Flashbang Grenade, requires Kasumi DLC
SFXGameContentLiara.SFXPower_StasisNew  ;Stasis, requires LotSB

Removing default powers

This step is optional - you don't need to complete it if you don't need additional space for new powers.

As we stated before, each class have a set of default powers, which you can't get rid of easily. Whenever you remove them, they'll come back after loading screen. While it's not really a bad thing, since it prevents you from removing critical powers without which your character would be broken, our space for powers is... limited. All in-game GUIs have a maximum amout of powers they can show. Both in-battle HUDs, namely Command Menu and Mapped Powers, can handle up to 8 powers. Escape Squad Menu can display more, but in cost of reducing space for description.

If we want to add really many powers, removing default ones may be required, to free-up the space. Unfortunately, the removepowers command which works for newly added powers, doesn't exactly work with default ones - loading screen will bring them back. To prevent it, we need to change default powers for current class by editing its PCC file.

First, search for SFXCharacterClass files inside Mass Effect 2/BioGame/CookedPC

Similar as in previous SFXGame edit, we need to open the file with Package Editor from ME3Explorer, and go to a given export. Because there are 6 different classes, there are 6 different export IDs you need to go. Find your current class from table below, open corresponding file, and goto corresponding export number.

Your class File to open Export # to go
Vanguard SFXCharacterClass_Vanguard 4733
Soldier SFXCharacterClass_Soldier 4770
Sentinel SFXCharacterClass_Sentinel 6182
Infiltrator SFXCharacterClass_Infiltrator 4480
Engineer SFXCharacterClass_Engineer 4940
Adept SFXCharacterClass_Adept 4095

Screenshots are taken from the Vanguard file, but it'll look really similar for all other ones.

When we get to our export, we need to look for Powers: Object Array property, which contains default powers for our character. Double-click on the property bar to expand it.

We can see all default powers there. Removing them is as simple as removing array element, but since removing is 2-part, you need to note-out all powers which you remove. Best to do a screenshot and save it in visible place, e.g. desktop.

Click on the bar that has name of power you want to remove, and select "Remove array element" from interpreter menu.

Do NOT remove FirstAid, melee, and passive powers. In other words - last 4 elements.

Also, there's no Ctrl-Z in Package Editor. If you removed too much, you need to close the Editor, don't save changes, and open the file once again.

Technical note: each element from the array links to an export from the file. You can't add new powers just by writing their names - you'd have to import them to the file, which isn't in scope of this guide.

Save the file when you removed what you wanted.

We're not done yet. Powers will no longer come back after removing, but they won't remove themselves. We need to remove them manually with the console. They're not exactly the same powers what we could add from the powers list above - each class uses a special variant of given power. In behavior, it's almost the same as a base power we could add from the list, but the name is different. Therefore, remove command will be different too.

Look at the screenshot you've made a minute ago. Powers' names from this array are a bit longer than what we're typing to the console - we need to crop it a bit.

First part is a tree name - console automatically assumes the power we're adding is in SFXGameContent_Powers tree, so we don't need to write it. The last part - underline and number, is instance number, which we should crop too.

Then, we need to remove that power with console command removepower target PowerName, like in previous section

We can go to the Squad Menu and check if we actually removed the power we wanted. We can also do a Quick Save - Quick Load sequence to make sure they don't come back.

Testing changes

We're practically done at this point. If everything stays in the place after Quick Save - Quick load, you did everything correctly. You can now freely add and remove powers, making power-set of your dreams.

Clone this wiki locally