EtienneLamoureux / TQVaultAE

Extra bank space for Titan Quest Anniversary Edition
MIT License
284 stars 62 forks source link

Disable Relic, Charm & Potion stacking and Stuff! #465

Closed hguy closed 1 year ago

hguy commented 2 years ago

Fix #278 disable Relic, Charm & Potion stacking

You can configure it from the user settings. Default is uncheck. image

Add "Having Relic", "Having Charm" into Highlight

image

Resolve #442 Display the effects of EE potions

image

Revamp configuration window

image

Cloud backup via Git

image

Documentation here https://github.com/hguy/TQVaultAE/blob/disable-stacking/documentation/GITBACKUP.md

Add support for TQ original character saves

Documentation here https://github.com/hguy/TQVaultAE/blob/disable-stacking/documentation/TQORIGINAL.md

Close #471 - Add Highlight "Set Item" filter

image

Refresh Advanced Search

This update is closing the gap between the "Highlight" form and the "Search" form.

Close #469 - Add a character save management system

image

Documentation here https://github.com/hguy/TQVaultAE/blob/disable-stacking/documentation/CHARMANAGE.md

Others

hguy commented 2 years ago

@EtienneLamoureux it looks like the old TQ game has a built in mecanism that detect when an item has been added or removed from the player.chr and make the altered save unplayable (tested on steam). I tried to understand and trick the system but in vain for now. Putting back the item at the exact same place make the save work again. So it's not about file format integrity. It's not a comparison with last backup file either because tweaking the backup file doesn't break the save. It looks more like a checksum check where the hash is... somewhere.

The solutions are one of these

For now i'm excluding the feature (option 2), just to be non blocking on the PR.

Considering the facts, i don't think TQVaultAE ever worked with Titan Quest Original.

Maybe @ejfudd have some insight about this?

ejfudd commented 2 years ago

@hguy That does sound familiar. I checked my file decoding notes and I did not see anything there about a checksum. I do have the original TQVault 2.1 code somewhere and it should be in there. I will dig it up and take a look.

Edit: With the original Titan Quest, we used a utility called TQVaultMon which would monitor the Titan Quest process and disable the anti-cheat for modifying your character.

hguy commented 2 years ago

@hguy That does sound familiar. I checked my file decoding notes and I did not see anything there about a checksum. I do have the original TQVault 2.1 code somewhere and it should be in there. I will dig it up and take a look.

I confirm that if checksum it is, it's not stored inside the Player.chr after 30 min doing binary compare on this file, i didn't detect any differences except the items. TQVault fully support the TQ Original file format.

Edit: With the original Titan Quest, we used a utility called TQVaultMon which would monitor the Titan Quest process and disable the anti-cheat for modifying your character.

@ejfudd It looks like i just hit the wall of this anti-cheat. I can't find anything about this "TQVaultMon". Do you have any copy, any code somewhere, any link ?

ejfudd commented 2 years ago

@hguy I was able to find the source for TQVault 2.3.1.4. I have extracted the TQVaultMon project and attached it.

To be honest, TQVaultMon is a relic from before I took over TQVault. The code just does an in-memory patch of the Titan Quest exe file to bypass the anti-cheat. The actual patches were provided by Soulsekkor of TQDefiler fame.

TQVaultMon.zip

hguy commented 2 years ago

@ejfudd Thanks! my investigation lead me to soulseeker/TQDefiler work on this to. I just decompile the tool to have a look. Looks like his patch work for v1.2-v1.3, but steam current version is labeled "v1.3.sd" and defiler doesn't support it. I have to look at this a little bit closer when i have time.

hguy commented 2 years ago

@ejfudd @EtienneLamoureux well i did compromise. https://github.com/hguy/TQVaultAE/blob/disable-stacking/documentation/TQORIGINAL.md

ejfudd commented 2 years ago

That was probably the quickest and simplest fix.
If the process fix in TQDefiler.NET still works for TQ 1.3, TQVaultMon should also work. I can post a binary from one of the older TQVault versions or you can create one from the project that I attached previously. Of course, that's if you want to pursue it.

hguy commented 2 years ago

That was probably the quickest and simplest fix. If the process fix in TQDefiler.NET still works for TQ 1.3, TQVaultMon should also work. I can post a binary from one of the older TQVault versions or you can create one from the project that I attached previously. Of course, that's if you want to pursue it.

That's what i though first, and it certainly must with CD versions until v1.30, but for some reason the Steam version have a memory allocation that TQVaultMon can't handle and TQDefiler does. My prefered solution was to apply patch directly on the TitanQuest.exe, but the Steam binary is also slightly different and i didn't succeed either. I only use steam version and i don't have any iso for older version, so my testing capability is limited.

hguy commented 1 year ago

Hi @EtienneLamoureux, Is there any blocking code in this PR ?

EtienneLamoureux commented 1 year ago

Hi @EtienneLamoureux, Is there any blocking code in this PR ?

No, it should be all good :)

Are all the changes documented above?

hguy commented 1 year ago

Are all the changes documented above?

When documentation was needed, yes!