Ariescyn / EldenRing-Save-Manager

EldenRing Save Manager GUI app written entirely in Python
230 stars 49 forks source link

[FR] Starting Class #23

Closed God-damnit-all closed 1 year ago

God-damnit-all commented 2 years ago

Could you add a feature that lets you change what starting class the character is? (So I can potentially make it so the character doesn't end up with "impossible stats".)

Ariescyn commented 2 years ago

I can look into it but depending on how it works and how many things change between classes, it might be pretty difficult. I'm by no means an experienced reverse engineer or developer, just been figuring this stuff out as i go.

I had thought about this a while back and was going to pull which class the character is, then prevent the user from setting their stats below that particular classes base stats

God-damnit-all commented 2 years ago

If it helps, starting class can be changed using the "Ultimate Cheat Table": https://www.nexusmods.com/eldenring/mods/48

This could allow you to generate a couple of very similar save files where the only major difference is character class, then the part of the save file that stores that information can be better isolated.

God-damnit-all commented 2 years ago

Oh, and let me know if you need a version of Cheat Engine to use with it that doesn't have a bunch of crapware in the installer.

The relevant data is in Character Data -> Player Param -> ArcheType [Starting Class].

Values: 0 - Vagabond 1 - Warrior 2 - Hero 3 - Bandit 4 - Astrologer 5 - Prophet 6 - Confessor 7 - Samurai 8 - Prisoner 9 - Wretch

God-damnit-all commented 2 years ago

Actually, on second thought, since I'm making this request of you, I decided to go ahead and do the groundwork myself.

I first generated a brand new ER0000.sl2 file, made a new character of default everything with the name Foobar, class Vagabond, and then immediately saved without taking a step or even turning the camera. Then I quit to main menu, and made 9 copies of this same save. In each copy, I went in and changed the starting class using that cheat table to one of the above values.

The only differing piece of data in each save should be the class and the play time.

Starting Class Saves.zip

Ariescyn commented 2 years ago

Hey there thanks for the work! The classes should be in the main and character headers which are static so that will be straightforward. But even when you load a save and don't change anything, massive amounts of data shift around. If there are other values related to your class and they don't mesh up with the ones in the headers, then I dont know how safe that would be to use online or if there would be discrepancies with your class in-game in certainly situations.

I will take a look tomorrow and do some testing. I'll change the class and send you a save file back if you wanna test anything

God-damnit-all commented 1 year ago

Has the starting class feature not yet been committed or is it no longer in the plans? I ask because the issue was closed as 'completed'.

Ariescyn commented 1 year ago

Has the starting class feature not yet been committed or is it no longer in the plans? I ask because the issue was closed as 'completed'.

Hey there, sorry i totally forgot about . I went ahead and used your saves to find the index position of the starting class flag. It's stored 42165 bytes from the start of a character block.

I went ahead and changed a class but i have no idea how to check it in-game. (Haven't played the game much) Changing the flag won't change your stats etc, I'm curious what purpose this would serve. Can you only do certain quests or get certain items depending on your starting class?

God-damnit-all commented 1 year ago

Has the starting class feature not yet been committed or is it no longer in the plans? I ask because the issue was closed as 'completed'.

Hey there, sorry i totally forgot about . I went ahead and used your saves to find the index position of the starting class flag. It's stored 42165 bytes from the start of a character block.

I went ahead and changed a class but i have no idea how to check it in-game. (Haven't played the game much) Changing the flag won't change your stats etc, I'm curious what purpose this would serve. Can you only do certain quests or get certain items depending on your starting class?

It would mainly be for convenience purposes to ensure that the stats are not "illegal" without having to look up what the starting class stats are on a wiki every time. Given that the game now has save tampering detection, I'm guessing that impossible stats are something that's flagged.

Ariescyn commented 1 year ago

I wrote the code to set the character class flag and it will be in the next update. Should i make it more complex and increase the stats of the character to meet minimum stats for that class? Or would that be annoying and intrusive?

I'm honestly questioning whether those few reports of file tampering warnings were actually from the save manager or something else they did because i was walking around with 40,000 hit points while signed in trying to get a ban and got nothing yet.

Either way, I'm not sure if their tampering detection even looks at the starting class flag but the option will be there in the manager now

God-damnit-all commented 1 year ago

I wrote the code to set the character class flag and it will be in the next update. Should i make it more complex and increase the stats of the character to meet minimum stats for that class? Or would that be annoying and intrusive?

I think that'd be good, I don't see why anyone would change their class unless they wanted to try to stay legit.