Page 21 of 55
Re: Last Epoch Save Editor
Posted: Thu Jun 01, 2023 4:25 am
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
Re: Last Epoch Save Editor
Posted: Thu Jun 01, 2023 6:42 am
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
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) :
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 ^^
Update V4.5 (Add all new items)
If you have time, edit the Mod for extracting all from game (not only shards)
Re: Last Epoch Save Editor
Posted: Fri Jun 02, 2023 2:10 pm
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.
Re: Last Epoch Save Editor
Posted: Sat Jun 03, 2023 5:49 pm
by babylondc
Guys, how do i edit an unique item to add some exalted affixes on it?
Re: Last Epoch Save Editor
Posted: Sun Jun 04, 2023 12:11 am
by Ash06
You can't.
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; }
}
}
Re: Last Epoch Save Editor
Posted: Sun Jun 04, 2023 4:27 am
by Stazz
Ash06 wrote: ↑Sun Jun 04, 2023 12:11 am
You can't.
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?
Re: Last Epoch Save Editor
Posted: Sun Jun 04, 2023 4:20 pm
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"
Re: Last Epoch Save Editor
Posted: Sun Jun 04, 2023 9:13 pm
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"
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.
Re: Last Epoch Save Editor
Posted: Mon Jun 05, 2023 9:54 am
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
Re: Last Epoch Save Editor
Posted: Mon Jun 05, 2023 1:50 pm
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.
Re: Last Epoch Save Editor
Posted: Tue Jun 06, 2023 4:58 pm
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
Re: Last Epoch Save Editor
Posted: Tue Jun 06, 2023 5:03 pm
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!
Re: Last Epoch Save Editor
Posted: Tue Jun 06, 2023 8:26 pm
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?
Re: Last Epoch Save Editor
Posted: Tue Jun 06, 2023 8:27 pm
by long13579
I'm stuck at step 7. Could someone help me please ?
Re: Last Epoch Save Editor
Posted: Wed Jun 07, 2023 1:23 am
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
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 ?
If you don't have "UniverseLib.IL2CPP.Unhollower.dll" in "UserLibs" folder, you have to install UnityExplorer
All refs (LastEpoch default folder)