Step by step for those who are not familiar with Python and/or those who opened the modding tool and thought 'what the actual F'.
PREPARATIONS
1. Download and install Python 3.6+. Latest version available here: Download Python | Python.org
2. Let's say you installed Python to D:\Apps\Python37. Navigate to that folder, shift+r-click on empty space inside it and choose the 'Open command window here' option.
3. In the cmd window, type the following to get the pip package updated to the latest version (kind of optional, but wouldn't hurt): python -m pip install --upgrade pip
4. In the same cmd window, install brotli library with this command: pip install brotli
5. Download the modding tool from Github (green 'Clone or Download' button > Download ZIP): GitHub - poemods/Path-of-Exile-modding-tool: Path of Exile mods
6. Extract the archive contents to any folder of your preference. Let's say it's D:\Apps\PoEmodding. Make a mental note about these guys inside:
a. The __init__.py file. It's the main executable file of the program and it has a simple yet functional GUI on top of it, so you can just double-click to launch it as a usual Win program.
b. The '/extracted' folder. The assets you are going to change will be saved to this folder for the program to work on them (insert/restore).
c. The 'automods' folder. This is where you are going to store your scripts that will automatically change stuff. Script options can be viewed and enabled/disabled in GUI. Some sample scripts should already be in the folder.
GUI OVERVIEW
- Upon first launch you need to specify the path to your PoE client Content.ggpk file in the topmost textbox. Normally the file resides in the game folder root. E.g. D:\GAMES\Grinding Gear Games\Path of Exile\Content.ggpk. Just copy-&-paste the full path and the program will start scanning the file. It can take up to several minutes, so be patient.
- Green area to the left determines what words/expressions to include into search. Red area to the right is a 'what to exclude from search' filter.
- Central frame displays search results: game files with various extensions that can be edited to our benefit.
- Lowermost area returns the contents of a chosen file.
- 'Automods' button on the right pane lets you choose your script files and apply/remove different parts of their code on the fly. 'Modify' and 'Restore' buttons serve to that purpose.
FILE EXTENSIONS OVERVIEW
.sm - skinned mesh data. Basically a static item model/appearance.
.ao - attached animated object. Basically a dynamic visual effect. Can be added to the .epk file to stack effects.
.pet - particle effect. Can be added to the .epk file.
.epk - effect package. A stack of different effects.
.dds - textures
.mat - materials
REPLACING ITEM SKINS
Let's say you own a Tabula and want to replace its skin with Gothic armour (Gothic Armour Pack - Official Path of Exile Wiki).
1. Create a dummy .txt file in the 'automods' folder with the following text:
Code:
name "Armour to replace Tabula"
#Gothic
title "Gothic"
restriction "filename1"
replacewith "filename2"
First line is the mod name the way you will see it in the 'Automods' dropdown in GUI. Pound sign on the next line denotes a comment. 'Title' is a name of each section of your script that you want to see as a separate checkbox in the mod options in the GUI. 'Restriction' parameter is a path to the file(item, effect) that you want replaced, while 'replacewith' parameter is a path to the file(item, effect) that you want to see on your character eventually.
2. Now that we have a dummy file, we need to find the actual filenames in the Content.ggpk file. In most cases, names and locations of the items are clear and fairly easy to find, in other cases it's guesswork.
In the GUI's green area, try searching for 'gothic'. Wow, that's a whole lot of hits. For now we only need the MTX armour's .sm skin mesh file. So let's use a bit of Regex to narrow down the search. Try this:
Code:
armour.*gothic.*sm$
FYI .* means zero or more characters between the words, whatever they may be. $ indicates end of line.
Note how the armour is called in the files: Gothic Horror Armour.
OK, so that restriction leaves us with much less noise in the list. Let's narrow it down even more.
Code:
gothichorrorarmourbody.*sm$
That leaves us with only seven hits. As you may have guessed, stat type combination at the end of each file (StrInt, Dex, Int) refers to each PoE class, Witch being pure Int, Ranger - pure Dex, Templar - StrInt, and so on.
Let's say you play as a Witch. In that case, you are going to need the .sm file specifically for her character model. So out of the seven files you need this: /Art/Models/Items/Armours/BodyArmours/Microtransactions/GothicHorrorArmour/GothicHorrorArmourBodyInt.sm.
Searching for the right Tabula file may be tricky as there were several versions of this armour throughout the years. I'll save you the trouble, the file you need is: /Art/Models/Items/Armours/BodyArmours/Unique/TabulaRasa/TabulaRasa2Int.sm
3. Now you need to save both files locally so that the program can work with them independently. Just copy each armour's file path to the restriction filter to get a single hit and hit 'Extract'. A corresponding status will appear.
4. Files saved, next you need to edit the dummy automod file. Just replace the filename placeholders with corresponding file paths, like this:
Code:
name "Armour to replace Tabula"
#Gothic
title "Gothic"
restriction "/Art/Models/Items/Armours/BodyArmours/Unique/TabulaRasa/TabulaRasa2Int.sm$"
replacewith "/Art/Models/Items/Armours/BodyArmours/Microtransactions/GothicHorrorArmour/GothicHorrorArmourBodyInt.sm$"
Note the $ at the end of each line. You need it there to eliminate possible multiple hits. We need a single instance replaced with a single instance.
Don't forget to save the updated file.
4. Magic time!
Note: for any changes to take effect you need to close the game client prior to modding.
In the GUI, click on the 'Automods' dropdown on the right pane and select your mod called 'Armour to replace Tabula'. You will see a checkbox underneath titled 'Gothic'. Check it and then hit 'Modify'. Ta-da!
If you search for the Tabula file again in the GUI and click on it, the lowermost area will show the original file vs the changed file. This is how you know that the changes were applied.
Open the game and don your Tabula. You should now be sporting a Gothic armour piece instead.
Same process applies to .ao files. For instance, the following code replaces the original Herald of Ice effect with a wicked-looking Celestial one (Celestial Herald Effect - Official Path of Exile Wiki)
Code:
name "Celestial Herald of Ice"
title "Celestial Herald of Ice"
restriction "/Metadata/Effects/Spells/herald/ice/iceherald_explode.ao$"
replacewith "/Metadata/Effects/Microtransactions/Spells/heralds/celestial/ice_explode.ao$"
restriction "/Metadata/Effects/Spells/herald/ice/iceherald_explode.aoc$"
replacewith "/Metadata/Effects/Microtransactions/Spells/heralds/celestial/ice_explode.aoc$"
Note that both .ao and .aoc files need to be replaced in order for the effect to work correctly.
ADDING NEW EFFECTS TO YOUR CHARACTER
Let's say you want to add the Celestial aura effect to your character (Celestial Aura Effect - Official Path of Exile Wiki). How do you go about it?
First, you need to take a look at your equipped gear. If you own an item that has any kind of animated effect on it, chances are it has an .epk (effect package) file stored as a resource that you can edit.
An .epk file serves as a container for several animations created specifically for a certain item or spell. Thing is, you can stack a bunch of various animations to a single item in the same file regardless of whether they are interrelated. For instance, you can attach an aura, wings and a halo to the Herald of Ice spell activation effect, which is stored as an .epk file. And every time you trigger the herald, all those goodies will appear along with its effect.
Not all wearable items, however, have .epk files for their animations. If you own an item that has any kind of animated effect, try looking for an associated .epk file in the modding tool GUI. If you found it - just use it going forward. If not - well, then we have to stick with the Herald animation .epk.
Let's say you didn't find any relevant .epk's.
1. Look for Metadata/Effects/Spells/herald/ice/ice_herald_epk.epk instead. Export it. It will be saved into the '/exported' folder under the same path.
2. Navigate to the folder and open the file in Notepad. You will see the following text:
Code:
ParticleEffect "Larmfx" "Metadata/Particles/herald/ice/arm_effect.pet"
ParticleEffect "Rarmfx" "Metadata/Particles/herald/ice/arm_effect.pet"
AttachedObject "finger1_r" "Metadata/Effects/Spells/herald/ice/ice_herald.ao"
AttachedObject "finger1_l" "Metadata/Effects/Spells/herald/ice/ice_herald.ao"
These are animations that are currently attached to a standard Herald of Ice.
3. Find the Celestial aura animation in the GUI. You are looking for an .ao file, not .epk, as we need just a single animation effect.
Full path to the aura: /Metadata/Effects/Microtransactions/Spells/auras/celestial/CelestialAura.ao
Export the file.
4. Now copy the file path and add a line to the Ice Herald .epk file: AttachedObject "*" "Metadata/Effects/Microtransactions/Spells/auras/celestial/CelestialAura.ao"
Code:
ParticleEffect "Larmfx" "Metadata/Particles/herald/ice/arm_effect.pet"
ParticleEffect "Rarmfx" "Metadata/Particles/herald/ice/arm_effect.pet"
AttachedObject "finger1_r" "Metadata/Effects/Spells/herald/ice/ice_herald.ao"
AttachedObject "finger1_l" "Metadata/Effects/Spells/herald/ice/ice_herald.ao"
AttachedObject "*" "Metadata/Effects/Microtransactions/Spells/auras/celestial/CelestialAura.ao"
Other examples of attached effects:
Code:
AttachedObject "Head" "Metadata/Effects/Microtransactions/head/arcanehalo.ao"
AttachedObject "Back" "Metadata/Items/Armours/Capes/GothicCapeHeld.ao"
Note that auras are not attached to any specific part of the body, hence the "*".
5. When you're satisfied with your changes, save the file. Then locate it in the GUI by its full path and hit 'Insert' to make the program replace the original file with your copy.
Btw, you can always restore any modified file by clicking 'Restore'.
Thats's it. Open the game and behold the absolute splendor of MTX skins and animations that some of us good folks have laid out hundreds of bucks for : )
P.S. I think somebody's mentioned before that MTX 'obtained' this way are visible only to you on your PC. Other players will still see you in your old rags, so don't expect any fame boost, haha : )