Last Epoch Save Editor

Upload *YOUR* gamehacking tools/helpers here
insom999
What is cheating?
What is cheating?
Posts: 1
Joined: Thu Jun 01, 2023 4:23 am
Reputation: 0

Re: Last Epoch Save Editor

Post by insom999 »

Hi, new to all this editor stuff, ive downloaded the editor can edit character, but there is no option to create gear do i have to download something else to get this part to work
thanks

User avatar
Ash06
Expert Cheater
Expert Cheater
Posts: 246
Joined: Wed Oct 09, 2019 2:34 pm
Reputation: 117

Re: Last Epoch Save Editor

Post by Ash06 »

insom999 wrote:
Thu Jun 01, 2023 4:25 am
Hi, new to all this editor stuff, ive downloaded the editor can edit character, but there is no option to create gear do i have to download something else to get this part to work
thanks
Right click inventory or character slot, then "Add item"
or right click item, "Copy Item", right click inventory "Paste"
If you create an item in your inventory, you have to to move it in a good position (container position) then save before editing your new item
Netninja wrote:
Thu Jun 01, 2023 1:12 am
The newest version of Melon has an issue with Unity Explorer. Finally downgraded and have Unity Explorer working via F7 in Last Epoch, however, the last dependency is :
Melon Preferences Manager
Which no longer exists :( Even the existing fork references a repository that doesn't exist anymore.
Extractor Mod require:
Melon Loader 5.7
Unity explorer
Melon Preferences Manager
MelonPrefManager.IL2CPP.rar
(20.53 KiB) Downloaded 330 times
Result Files (copy to /Src/Icons/) from Icons Extractor Tool (see below)
Netninja wrote:
Thu Jun 01, 2023 1:12 am
I've collected all of the new items and I can browse my save file to pull out the info for each if that helps. I can probably also just extract the image files for each from the Last Epoch Tools website and place the png files in the correct directories
Icons Extractor Tool (work only with [Link] SpriteSheets) :
Image

https://github.com/RCInet/LastEpochIconsExtractor

Requirements : SpritesSheet (convert to .png) and css
All requirements can be found with Developer Tools in any item in [Link]
SpriteSheet https://www.lastepochtools.com/data/be ... 048c.webp
Css https://www.lastepochtools.com/data/be ... e048c.css

I already have apps for doiing all the job (extract items stats, generate database, copy rename icons), don't do it manually ^^

Image
Update V4.5 (Add all new items)

If you have time, edit the Mod for extracting all from game (not only shards)

Bhaine
Noobzor
Noobzor
Posts: 7
Joined: Fri Mar 10, 2023 8:50 pm
Reputation: 1

Re: Last Epoch Save Editor

Post by Bhaine »

Is there a way for me to fix "TableLayoutPanel cannot expand to contain the control, because the panel's GrowStyle property is set to FixedSize"? Only for certain items like belts, amulet and maybe a few more.

User avatar
babylondc
Cheater
Cheater
Posts: 27
Joined: Mon Sep 06, 2021 7:21 pm
Reputation: 6

Re: Last Epoch Save Editor

Post by babylondc »

Guys, how do i edit an unique item to add some exalted affixes on it?

User avatar
Ash06
Expert Cheater
Expert Cheater
Posts: 246
Joined: Wed Oct 09, 2019 2:34 pm
Reputation: 117

Re: Last Epoch Save Editor

Post by Ash06 »

You can't.
Image
If you want to edit item like this, you need to use mods

Code: Select all

private void AddUniqueModToAnother(int item_id, int item2_id)
        {
            UnityEngine.Object obj = GetObject("UniqueList");
            System.Type type = obj.GetActualType();
            if (type == typeof(UniqueList))
            {
                UniqueList unique_list = obj.TryCast<UniqueList>();
                List<UniqueItemMod> mods = new List<UniqueItemMod>();
                //Copy
                int index = -1;
                int i = 0;
                foreach (UniqueList.Entry ul_entry in unique_list.uniques)
                {
                    if ((ul_entry.baseType == item_id) | (ul_entry.baseType == item2_id))
                    {
                        if (ul_entry.baseType == item2_id) { index = i; }
                        foreach (UniqueItemMod m in ul_entry.mods) { mods.Add(m); }
                    }
                    i++;
                }
                //Paste
                if (index > -1) { unique_list.uniques[index].mods = mods; }
            }
        }

Stazz
Novice Cheater
Novice Cheater
Posts: 15
Joined: Fri Apr 14, 2017 2:10 pm
Reputation: 0

Re: Last Epoch Save Editor

Post by Stazz »

Ash06 wrote:
Sun Jun 04, 2023 12:11 am
You can't.
Image
If you want to edit item like this, you need to use mods

Code: Select all

private void AddUniqueModToAnother(int item_id, int item2_id)
        {
            UnityEngine.Object obj = GetObject("UniqueList");
            System.Type type = obj.GetActualType();
            if (type == typeof(UniqueList))
            {
                UniqueList unique_list = obj.TryCast<UniqueList>();
                List<UniqueItemMod> mods = new List<UniqueItemMod>();
                //Copy
                int index = -1;
                int i = 0;
                foreach (UniqueList.Entry ul_entry in unique_list.uniques)
                {
                    if ((ul_entry.baseType == item_id) | (ul_entry.baseType == item2_id))
                    {
                        if (ul_entry.baseType == item2_id) { index = i; }
                        foreach (UniqueItemMod m in ul_entry.mods) { mods.Add(m); }
                    }
                    i++;
                }
                //Paste
                if (index > -1) { unique_list.uniques[index].mods = mods; }
            }
        }
Hi, could you please explain how to do that?

User avatar
Ash06
Expert Cheater
Expert Cheater
Posts: 246
Joined: Wed Oct 09, 2019 2:34 pm
Reputation: 117

Re: Last Epoch Save Editor

Post by Ash06 »

Exemple of Editing Unique Mods

Code: Select all

private void EditUniqueMods(int unique_id)
        {
            UnityEngine.Object obj = GetObject("UniqueList");
            System.Type type = obj.GetActualType();
            if (type == typeof(UniqueList))
            {
                UniqueList unique_list = obj.TryCast<UniqueList>();
                List<UniqueList.Entry> Uniques_List_Entry = unique_list.uniques;
                foreach (UniqueList.Entry ul_entry in Uniques_List_Entry)
                {
                    if (ul_entry.uniqueID == unique_id)
                    {
                        List<UniqueItemMod> mods = new List<UniqueItemMod>();
                        mods.Add(new UniqueItemMod
                        {
                            type = BaseStats.ModType.INCREASED,
                            value = 999,
                            maxValue = 999,
                            property = SP.AttackSpeed,
                            tags = AT.None
                        });
                        mods.Add(new UniqueItemMod
                        {
                            type = BaseStats.ModType.INCREASED,
                            value = 999,
                            maxValue = 999,
                            property = SP.CriticalChance,
                            tags = AT.None
                        });
                        mods.Add(new UniqueItemMod
                        {
                            type = BaseStats.ModType.INCREASED,
                            value = 999,
                            maxValue = 999,
                            property = SP.CriticalMultiplier,
                            tags = AT.None
                        });
                        mods.Add(new UniqueItemMod
                        {
                            type = BaseStats.ModType.INCREASED,
                            value = 999,
                            maxValue = 999,
                            property = SP.Damage,
                            tags = AT.Physical
                        });

                        ul_entry.mods = mods;
                        break;
                    }
                }
            }
        }

Code: Select all

if (Input.GetKeyDown(KeyCode.F10)) { EditUniqueMods(111); } //Woven Flesh
Exemple here :
https://github.com/RCInet/LastEpoch_Extractor

Code have to be launched at the menu after UnityExplorer Initialized win F10.
You can show only 5 mods in tooltip, but you can add more

Result : crit chance not working because "type = BaseStats.ModType.INCREASED", should be "type = BaseStats.ModType.ADDED"
Image

Stazz
Novice Cheater
Novice Cheater
Posts: 15
Joined: Fri Apr 14, 2017 2:10 pm
Reputation: 0

Re: Last Epoch Save Editor

Post by Stazz »

Ash06 wrote:
Sun Jun 04, 2023 4:20 pm
Exemple of Editing Unique Mods

Code: Select all

private void EditUniqueMods(int unique_id)
        {
            UnityEngine.Object obj = GetObject("UniqueList");
            System.Type type = obj.GetActualType();
            if (type == typeof(UniqueList))
            {
                UniqueList unique_list = obj.TryCast<UniqueList>();
                List<UniqueList.Entry> Uniques_List_Entry = unique_list.uniques;
                foreach (UniqueList.Entry ul_entry in Uniques_List_Entry)
                {
                    if (ul_entry.uniqueID == unique_id)
                    {
                        List<UniqueItemMod> mods = new List<UniqueItemMod>();
                        mods.Add(new UniqueItemMod
                        {
                            type = BaseStats.ModType.INCREASED,
                            value = 999,
                            maxValue = 999,
                            property = SP.AttackSpeed,
                            tags = AT.None
                        });
                        mods.Add(new UniqueItemMod
                        {
                            type = BaseStats.ModType.INCREASED,
                            value = 999,
                            maxValue = 999,
                            property = SP.CriticalChance,
                            tags = AT.None
                        });
                        mods.Add(new UniqueItemMod
                        {
                            type = BaseStats.ModType.INCREASED,
                            value = 999,
                            maxValue = 999,
                            property = SP.CriticalMultiplier,
                            tags = AT.None
                        });
                        mods.Add(new UniqueItemMod
                        {
                            type = BaseStats.ModType.INCREASED,
                            value = 999,
                            maxValue = 999,
                            property = SP.Damage,
                            tags = AT.Physical
                        });

                        ul_entry.mods = mods;
                        break;
                    }
                }
            }
        }

Code: Select all

if (Input.GetKeyDown(KeyCode.F10)) { EditUniqueMods(111); } //Woven Flesh
Exemple here :
https://github.com/RCInet/LastEpoch_Extractor

Code have to be launched at the menu after UnityExplorer Initialized win F10.
You can show only 5 mods in tooltip, but you can add more

Result : crit chance not working because "type = BaseStats.ModType.INCREASED", should be "type = BaseStats.ModType.ADDED"
Image
Ok, thanks, I understand that is an example for Woven Flesh, but what do I have to do to edit another item? If you can explain in detail with screenshots or a video tutorial would be really nice. I also have no idea what do to with those codes that you posted.

User avatar
Ash06
Expert Cheater
Expert Cheater
Posts: 246
Joined: Wed Oct 09, 2019 2:34 pm
Reputation: 117

Re: Last Epoch Save Editor

Post by Ash06 »

With this, you can edit all Unity Game Objects and make mods

MelonLoader 5.7 : [Link]
UnityExplorer : [Link] (UnityExplorer.MelonLoader.IL2CPP.zip)
Melon Preferences Manager (link above)
ExempleMod : [Link]

1. Install MelonLoader
2. Extract UnityExplorer to your LastEpochFolder
3. Launch your game once
4. Download Visual Studio and install
5. Extract ExempleMod (source code) in a folder and launch (LastEpochMods.sln)
6. Edit Mod
7. Build (right click LastEpochMods --> Build)
8. Go to folder "ExempleMod\LastEpochMods\LastEpochMods\bin\Debug"
9. Copy "UnityLastEpochMods.dll" to "LastEpochFolder\Mods\"
10. Copy "Src" floder to "LastEpochFolder\Mods\" (For generating Database with F11)
11. Copy "Newtonsoft.Json.dll" to "LastEpochFolder\UserLibs\" (For generating Database with F11)
12. Launch your game (Wait UnityExplorer Initialized)
13. F10 (launch mods) / F11 (Generate LastEpochSaveEditor Database)
14. Select you character and play

F10 Key : in Main.cs
Remove Items Level and Class Req
Edit Drop : Can drop all items or Only Undropables
Edit Unique Mods

Code: Select all

if (Input.GetKeyDown(KeyCode.F10)) //Wait UnityEngine Initialized before
{
	//Level and Class Req
	Mods.ItemsReq.Remove(this); //Comment to Disable
	//Basic Drop
	Mods.ItemsDrop.OnlyUndropablesBasic = true; //False = unlock all / True = Only Undropable
	Mods.ItemsDrop.UnlockForAllBasic(this); //Comment to Disable
	//Unique Drop
	Mods.ItemsDrop.OnlyUndropablesUnique = true; //False = unlock all / True = Only Undropable
	Mods.ItemsDrop.UnlockForAllUniques(this); //Comment to Disable
	//Drop Level minimum for Legenday Potencial
	//Mods.ItemsDrop.SetLevelReqForLegendaryPotencial(0); //Untested //Comment to Disable
	//Unique Mods (UniqueId can be found with Debug Base Option in Save Editor)
	Mods.UniqueMods.Edit(111, Mods.UniqueMods.CustomMods_0(), this); //Wover Flesh : UniqueId = 111
	//Mods.UniqueMods.Edit(UniqueId, CustomMod, this); //Edit Here to Add Unique/Set
	//Mods.UniqueMods.Edit(UniqueId, CustomMod, this);
	//Mods.UniqueMods.Edit(UniqueId, CustomMod, this);
	
	if (!Scenes.MenuNames.Contains(Scenes.CurrentName))
	{ LoggerInstance.Msg("Go Back to Menu for actualize items Mods"); }
}
Create Custom Unique Mods (you can see it in Mobs\UniqueMods.cs)
With this code you have only one Mod (increase attack speed)
Edit for what you want

Code: Select all

public static Il2CppSystem.Collections.Generic.List<UniqueItemMod> CustomMods_1()
{
	//Create new Array of UniqueItemMod
	Il2CppSystem.Collections.Generic.List<UniqueItemMod> mods = new Il2CppSystem.Collections.Generic.List<UniqueItemMod>();
	//Add UniqueItemMod to Array
	mods.Add(new UniqueItemMod
	{
		type = BaseStats.ModType.INCREASED,
		value = 999,
		maxValue = 999,
		property = SP.AttackSpeed,
		tags = AT.None
	});
	//Add More
	
	return mods;
}
Editing Unique Mods
Add one line per item, edit UniqueId and select your CustomMod

Code: Select all

//Mods.UniqueMods.EditUniqueMods(UniqueId , UniqueMods(), this);
Mods.UniqueMods.EditUniqueMods(111, Mods.UniqueMods.CustomMods_0(), this); //Wover Flesh : UniqueId = 111

bigbambu
What is cheating?
What is cheating?
Posts: 2
Joined: Thu Feb 10, 2022 7:34 pm
Reputation: 0

Re: Last Epoch Save Editor

Post by bigbambu »

Thank you so so much for this Ash, it's an amazing tool.

The past iterations of the Editor allowed for maxing out specific nodes of skills, rather than the entire skill tree. Is this still possible?

i.e. I could put only 1-2 points into nodes to unlock further into each skill then, using the editor, max out said nodes.

MikeTheG
What is cheating?
What is cheating?
Posts: 1
Joined: Tue Jun 06, 2023 4:56 pm
Reputation: 0

Re: Last Epoch Save Editor

Post by MikeTheG »

Hi Ash,

thank you for your editor. maybe i am to dumb, but how to use this editor? i cant seem to isntall it. Do i need all Parts? Part 1-3? when i open the ui exe, i have no path. So no save in this directory? where do i put the files?`

Sorry for my questions, i just cant bring it to work. Cheers ike

CyrexBabbel
Noobzor
Noobzor
Posts: 13
Joined: Wed Apr 19, 2017 3:32 pm
Reputation: 1

Re: Last Epoch Save Editor

Post by CyrexBabbel »

Ash06 wrote:
Mon Jun 05, 2023 9:54 am
With this, you can edit all Unity Game Objects and make mods

MelonLoader 5.7 : [Link]
UnityExplorer : [Link] (UnityExplorer.MelonLoader.IL2CPP.zip)
Melon Preferences Manager (link above)
ExempleMod : [Link]

1. Install MelonLoader
2. Extract UnityExplorer to your LastEpochFolder
3. Launch your game once
4. Download Visual Studio and install
5. Extract ExempleMod (source code) in a folder and launch (LastEpochMods.sln)
6. Edit Mod
7. Build (right click LastEpochMods --> Build)
8. Go to folder "ExempleMod\LastEpochMods\LastEpochMods\bin\Debug"
9. Copy "UnityLastEpochMods.dll" to "LastEpochFolder\Mods\"
10. Copy "Src" floder to "LastEpochFolder\Mods\" (For generating Database with F11)
11. Copy "Newtonsoft.Json.dll" to "LastEpochFolder\UserLibs\" (For generating Database with F11)
12. Launch your game (Wait UnityExplorer Initialized)
13. F10 (launch mods) / F11 (Generate LastEpochSaveEditor Database)
14. Select you character and play

F10 Key : in Main.cs
Remove Items Level and Class Req
Edit Drop : Can drop all items or Only Undropables
Edit Unique Mods

Code: Select all

if (Input.GetKeyDown(KeyCode.F10)) //Wait UnityEngine Initialized before
{
	//Level and Class Req
	Mods.ItemsReq.Remove(this); //Comment to Disable
	//Basic Drop
	Mods.ItemsDrop.OnlyUndropablesBasic = true; //False = unlock all / True = Only Undropable
	Mods.ItemsDrop.UnlockForAllBasic(this); //Comment to Disable
	//Unique Drop
	Mods.ItemsDrop.OnlyUndropablesUnique = true; //False = unlock all / True = Only Undropable
	Mods.ItemsDrop.UnlockForAllUniques(this); //Comment to Disable
	//Drop Level minimum for Legenday Potencial
	//Mods.ItemsDrop.SetLevelReqForLegendaryPotencial(0); //Untested //Comment to Disable
	//Unique Mods (UniqueId can be found with Debug Base Option in Save Editor)
	Mods.UniqueMods.Edit(111, Mods.UniqueMods.CustomMods_0(), this); //Wover Flesh : UniqueId = 111
	//Mods.UniqueMods.Edit(UniqueId, CustomMod, this); //Edit Here to Add Unique/Set
	//Mods.UniqueMods.Edit(UniqueId, CustomMod, this);
	//Mods.UniqueMods.Edit(UniqueId, CustomMod, this);
	
	if (!Scenes.MenuNames.Contains(Scenes.CurrentName))
	{ LoggerInstance.Msg("Go Back to Menu for actualize items Mods"); }
}
Create Custom Unique Mods (you can see it in Mobs\UniqueMods.cs)
With this code you have only one Mod (increase attack speed)
Edit for what you want

Code: Select all

public static Il2CppSystem.Collections.Generic.List<UniqueItemMod> CustomMods_1()
{
	//Create new Array of UniqueItemMod
	Il2CppSystem.Collections.Generic.List<UniqueItemMod> mods = new Il2CppSystem.Collections.Generic.List<UniqueItemMod>();
	//Add UniqueItemMod to Array
	mods.Add(new UniqueItemMod
	{
		type = BaseStats.ModType.INCREASED,
		value = 999,
		maxValue = 999,
		property = SP.AttackSpeed,
		tags = AT.None
	});
	//Add More
	
	return mods;
}
Editing Unique Mods
Add one line per item, edit UniqueId and select your CustomMod

Code: Select all

//Mods.UniqueMods.EditUniqueMods(UniqueId , UniqueMods(), this);
Mods.UniqueMods.EditUniqueMods(111, Mods.UniqueMods.CustomMods_0(), this); //Wover Flesh : UniqueId = 111
Hey Ash,

thanks for your editor and also this little guide how to mod different stats!

I only have one question: where do i get the right property names of the stats? For example, one propertiy is named SP.CriticalMultiplier. Where can i get the name now, for lets say mana regeneration? Is this possible to get with the unity explorer ingame?

EDIT: nvmd i think i got it, in the enum SP all of them are listed, arent they?
Can you also tell me, how to get the function or how to edit for example the enemy density?

Thank you!

omarino2011
Novice Cheater
Novice Cheater
Posts: 18
Joined: Wed Apr 14, 2021 10:25 pm
Reputation: 1

Re: Last Epoch Save Editor

Post by omarino2011 »

does this save editor allow my to pick skill nodes withut having the adjacent ones unlocked? so for example i can pick the last node in a given skill tree without starting in the center?

long13579
Noobzor
Noobzor
Posts: 14
Joined: Tue Jun 06, 2023 8:03 pm
Reputation: 0

Re: Last Epoch Save Editor

Post by long13579 »

I'm stuck at step 7. Could someone help me please ?
Last edited by long13579 on Wed Jun 07, 2023 2:26 pm, edited 1 time in total.

User avatar
Ash06
Expert Cheater
Expert Cheater
Posts: 246
Joined: Wed Oct 09, 2019 2:34 pm
Reputation: 117

Re: Last Epoch Save Editor

Post by Ash06 »

CyrexBabbel wrote:
Tue Jun 06, 2023 5:03 pm
I only have one question: where do i get the right property names of the stats? For example, one propertiy is named SP.CriticalMultiplier. Where can i get the name now, for lets say mana regeneration? Is this possible to get with the unity explorer ingame?

Can you also tell me, how to get the function or how to edit for example the enemy density?
You can do the same as the function "Edit" in Mods\UniqueMods.cs with UnityExplorer

Code: Select all

UnityEngine.Object obj = Functions.GetObject("UniqueList");
if (type == typeof(UniqueList))
Search with UnityExplorer an object, filter by class "UniqueList", filter by name "UniqueList"
Select the result object

Code: Select all

Il2CppSystem.Collections.Generic.List<UniqueList.Entry> Uniques_List_Entry = unique_list.uniques;
Inspect UniqueList.Uniques
Inspect any UniqueList.Entry
Image

Code: Select all

ul_entry.mods = mods;
Inspect UniqueList.Entry.Mods
Inspect any UniqueItemMod

Code: Select all

mods.Add(new UniqueItemMod
            {
                type = BaseStats.ModType.INCREASED,
                value = 999,
                maxValue = 999,
                property = SP.AttackSpeed,
                tags = AT.None
            });
Inspect UniqueItemMod.Property for "property" Enum, same with type, tags, ...

With the same method, you can edit any object in Unity (not only Last Epoch)

For density :
- SpawnerPlacementRoom.intendedSpawnerDensity (maybe this, edit alls rooms at the beginning of your scene , see github)
- SpawnerPlacementManager.defaultSpawnerDensity
- SpawnerPlacementManager.alwaysRollSpawnerDensity
- MonolithTimeline.enemyDensityModifier

I Update the github with Gold Multiplier, Experience Multiplier, Item drop Multiplier
long13579 wrote:
Tue Jun 06, 2023 8:27 pm
I'm stuck at step 7. Could someone help me please ?
Image
If you don't have "UniverseLib.IL2CPP.Unhollower.dll" in "UserLibs" folder, you have to install UnityExplorer

Image
All refs (LastEpoch default folder)

Post Reply

Who is online

Users browsing this forum: ronaldintzi