Last Epoch Save Editor

Upload *YOUR* gamehacking tools/helpers here
long13579
Noobzor
Noobzor
Posts: 14
Joined: Tue Jun 06, 2023 8:03 pm
Reputation: 0

Re: Last Epoch Save Editor

Post by long13579 »

Ash06 wrote:
Thu Jun 08, 2023 12:33 pm

Code: Select all

public static Il2CppSystem.Collections.Generic.List<UniqueItemMod> NameOfTheMod()
{
	//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;
}
Hi Ash. Your codes work pretty well but I wonder if there is a way to assign the value of a stat <1 but >0 or >-1 but <0 ? There are stats like "more/less damage taken" but the lowest value i can assign it to is "1" which is 100% in game. I can't make it "99% damage taken" or lower

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

Re: Last Epoch Save Editor

Post by CyrexBabbel »

long13579 wrote:
Mon Jun 12, 2023 5:39 pm
Ash06 wrote:
Thu Jun 08, 2023 12:33 pm

Code: Select all

public static Il2CppSystem.Collections.Generic.List<UniqueItemMod> NameOfTheMod()
{
	//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;
}
Hi Ash. Your codes work pretty well but I wonder if there is a way to assign the value of a stat <1 but >0 or >-1 but <0 ? There are stats like "more/less damage taken" but the lowest value i can assign it to is "1" which is 100% in game. I can't make it "99% damage taken" or lower
Hey long,

you could try to add the value as a float, like this:

Code: Select all

mods.Add(new UniqueItemMod
	{
		type = BaseStats.ModType.INCREASED,
                value = 0.9f,
                maxValue = 0.99f,
                property = SP.AttackSpeed,
                tags = AT.None
         });
min value should be 90% and the max 99%.

Tell me if it worked for you!

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

Re: Last Epoch Save Editor

Post by long13579 »

CyrexBabbel wrote:
Mon Jun 12, 2023 6:42 pm

Hey long,

you could try to add the value as a float, like this:

Code: Select all

mods.Add(new UniqueItemMod
	{
		type = BaseStats.ModType.INCREASED,
                value = 0.9f,
                maxValue = 0.99f,
                property = SP.AttackSpeed,
                tags = AT.None
         });
min value should be 90% and the max 99%.

Tell me if it worked for you!
Thanks a lot. It work perfectly fine xD

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

Re: Last Epoch Save Editor

Post by Ash06 »

long13579 wrote:
Mon Jun 12, 2023 5:39 pm
if there is a way to assign the value of a stat >-1 but <0 ?
Add = + flat value
Increase = % value with 1 =100%

Float min value is -1.
Try Increase with value like -0.5f for -50%
Last edited by Ash06 on Mon Jun 12, 2023 7:26 pm, edited 1 time in total.

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

Re: Last Epoch Save Editor

Post by long13579 »

Thank you ! Your tools are fun xD

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

Re: Last Epoch Save Editor

Post by Ash06 »

It's nice to edit variables, but it's better if we use game functions.

Ex : Add Buffs to character (launch with F9)

Code: Select all

if (Input.GetKeyDown(KeyCode.F9)) //Exemple Buff Character
{
	foreach (UnityEngine.Object obj in UniverseLib.RuntimeHelper.FindObjectsOfTypeAll(typeof(UnityEngine.Object)))
	{
		if ((obj.name == "MainPlayer(Clone)") && (obj.GetActualType() == typeof(StatBuffs)))
		{
			float duration = 255;
			SP propertie = SP.Intelligence;
			float added_value = 255;
			float increase_value = 255;
			Il2CppSystem.Collections.Generic.List<float> more_values = null;
			AT tag = AT.Buff;
			byte special_tag = 0;
			
			obj.TryCast<StatBuffs>().addBuff(duration, propertie, added_value, increase_value, more_values, tag, special_tag);
		}
	}
}
Ex : game LevelUp function (launch with F10)

Code: Select all

if (Input.GetKeyDown(KeyCode.F10))
{
	foreach (UnityEngine.Object obj in UniverseLib.RuntimeHelper.FindObjectsOfTypeAll(typeof(UnityEngine.Object)))
	{
		if ((obj.name == "MainPlayer(Clone)") && (obj.GetActualType() == typeof(ExperienceTracker)))
		{
			obj.TryCast<ExperienceTracker>().LevelUp(true);
			break;
		}
	}
}
See github for this

Code: Select all

//ItemDrop
        Mods.Character_Mods.increase_equipment_droprate = 1;
        Mods.Character_Mods.increase_equipmentshards_droprate = 1;
        Mods.Character_Mods.increase_uniques_droprate = 1;
        //Speed Manager
        Mods.Character_Mods.base_movement_speed = 10; //default 4,8
        //Ability List
        Mods.Character_Mods.channel_cost = 0;
        Mods.Character_Mods.manaCost = 0;
        Mods.Character_Mods.manaCostPerDistance = 0;
        Mods.Character_Mods.minimumManaCost = 0;
        Mods.Character_Mods.noManaRegenWhileChanneling = false;
        Mods.Character_Mods.stopWhenOutOfMana = false;
        //Tree Data
        Mods.Character_Mods.CharacterClassID character_class = CharacterClassID.Sentinel;
        Mods.Character_Mods.character_level = 100;
        Mods.Character_Mods.chosen_mastery = 0;
        Mods.Character_Mods.number_of_unlocked_slots = 5;
        Mods.Character_Mods.passiveTree_pointsEarnt = 65535;
        Mods.Character_Mods.skilltree_level = 255;
        //GoldTracker
        Mods.Character_Mods.gold_value = 99999999;
        //CharacterStats
        Mods.Character_Mods.attack_rate = 255;
        Mods.Character_Mods.attributes_str = 99999999;
        Mods.Character_Mods.attributes_int = 99999999;
        Mods.Character_Mods.attributes_vita = 99999999;
        Mods.Character_Mods.attributes_dext = 99999999;
        Mods.Character_Mods.attributes_atte = 99999999;
        //ExperienceTracker
        Mods.Character_Mods.NextLevelExperience = 0;

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

Re: Last Epoch Save Editor

Post by CyrexBabbel »

Hey Ash,

would it be possible to add something like "elemental nova" ( or any ability/skill ) on hit/crit as an affix?

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

Re: Last Epoch Save Editor

Post by Ash06 »

I think Paranoia Helmet is the better exemple because this item contain 3 Ability mods and have class_req
[Link]
Class_req can be found in base item (ItemList.EquipmentItem[type].subItems[id].classRequirement)

Get the unique_id with SaveEditor : 221
In the game, Paranoia can be found in UniqueList.uniques[221]
See the 3 mods with Ability

Don't require target
Image

Cooldown Recovery
Image

Level of skill
Image

Special Tags can be found with this

Code: Select all

foreach (UnityEngine.Object obj in UniverseLib.RuntimeHelper.FindObjectsOfTypeAll(typeof(UnityEngine.Object)))
{
	System.Type type = obj.GetActualType();
	if ((type == typeof(AbilityPropertyList)) && (obj.name.Contains("AbilityPropertyList")))
	{
		AbilityPropertyList ability_property_list = obj.TryCast<AbilityPropertyList>();
		int i = 0;
		foreach (AbilityPropertyList.Entry entry in ability_property_list.list)
		{
			LoggerInstance.Msg(i + " : " + entry.abilityID);
			int property_index = 0;
			foreach (AbilityPropertyInfo ability_property_infos in entry.properties)
			{
				LoggerInstance.Msg(property_index + " : " + ability_property_infos.propertyName);
				property_index++;
			}
			i++;			
		}
		break;
	}
}
Result for lunge
Image
if you want custom ability on item, add some AbilityPropertyInfo

Skill_id, isn't in base_item but maybe in unique_item

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

Re: Last Epoch Save Editor

Post by CyrexBabbel »

Hey Ash,

thanks again for your reply!
Got all the id´s but still having trouble to find where the skill_id is determined.
I looked into the unique item and also in the equipment list, but couldnt find anything useful ( at least with my basic knowledge ).

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

Re: Last Epoch Save Editor

Post by Ash06 »

Sorry not home this week, you have to use dnsspy and found function for loading items (append when you load your game), then hook with UnityExplorer.
Filter your results with an item with Ability on it, then see used variables, and were there are store.

Some object are desctuct after using, so it's better to patch functions than editing variables.

I search for this yesterday, found item mods, then I search for event and make stealing mods from rare and unique working.
So i create à Headhunter ^^

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:
Fri Jun 23, 2023 5:12 pm
Sorry not home this week, you have to use dnsspy and found function for loading items (append when you load your game), then hook with UnityExplorer.
Filter your results with an item with Ability on it, then see used variables, and were there are store.

Some object are desctuct after using, so it's better to patch functions than editing variables.

I search for this yesterday, found item mods, then I search for event and make stealing mods from rare and unique working.
So i create à Headhunter ^^
All good, thank you for you help!

Ill try my best and will take a look :D!

"I search for this yesterday, found item mods, then I search for event and make stealing mods from rare and unique working.
So i create à Headhunter ^^
"

Haha, thats amazing :D!! I also want to try to mod the game to get it closer to PoE hahah

Paranoia
What is cheating?
What is cheating?
Posts: 4
Joined: Thu Mar 23, 2023 5:14 am
Reputation: 0

Re: Last Epoch Save Editor

Post by Paranoia »

I'm sorry but when I hit Dev mode button, there is "Dev mode: off" at the right-down corner of the screen, and no other button like your screen shot.

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

Re: Last Epoch Save Editor

Post by Ash06 »

You have to enable dev mode (Click on "Dev mode: off") after unlock it

KillTheMaggots
What is cheating?
What is cheating?
Posts: 1
Joined: Wed Jun 14, 2023 1:06 am
Reputation: 0

Re: Last Epoch Save Editor

Post by KillTheMaggots »

Thanks a lot for maintaining this. It's been a lot of help.
I have the latest version and I encountered an error when trying to edit Gambit of an Erased Rogue with the save editor. I guess it has something to do with it being the highest Id number, 301? The other new uniques all were OK.

Image

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

Re: Last Epoch Save Editor

Post by Ash06 »

That's right, take this fix.
Ui.rar
(2.61 MiB) Downloaded 133 times

Post Reply

Who is online

Users browsing this forum: No registered users