Razzmatazzz / RemnantSaveGuardian

Tool to backup your saves and view your world rolls
GNU General Public License v3.0
347 stars 50 forks source link

Add known DLC3 items #280

Closed silvanshade closed 1 month ago

silvanshade commented 1 month ago

This PR adds support for most of the known DLC3 items (except for prisms).

Q-Sharp commented 1 month ago

nice work mate. @Razzmatazzz

silvanshade commented 1 month ago

I've associated most of the new items with their locations but there are a couple of issues:

  1. In DLC3 one shot mode, the DLC3Story area seems to be detected incorrectly. The associated location for it is detected as Losomn: Stagnant Manufactury.
  2. In DLC3 one shot mode, the POI is detected as location N'Erud: Logistics Bridge with the name The Custodian.

Instead there should be locations showing up for Agronomy Sector and Withered Necropolis.

I'm assuming those issues are probably due to some special case handling that is no longer quite valid with the new patterns introduced by DLC3. I'll try to figure out how to fix that if someone else doesn't get to it first.

Also, I would think that the new boss area The Convergence should show up and that there should be a POI or something associated with the Prototype robot. There are several items that would need to have their locations set to those to be more accurate.

silvanshade commented 1 month ago

EDIT: I've removed the commit referenced in the comment below since it seemed to cause duplicate entries to appear sometimes. I don't think the changes I introduced should cause this but it's hard to follow the event processing logic accurately enough to determine what is causing it. In any case, I think I'll just leave the PR like this and someone more familiar with the internals can adjust as necessary.

I've added a second commit which attempts to fix the invalid location rendering. In order to do this, I basically added another mapping from "sublocation" back to the associated "world".

This mapping is computed within the loop that loads the "subLocations" field from game.json, to try and avoid needing to add a bunch of additional data.

It seems to be sufficient to fix the problem for the few error cases I encountered but it may be that a few more locations need to be added (similar to how I have done here) if there are other cases not covered.

I considered just exhaustively adding all known locations for all of the worlds to that mapping but it seemed unnecessary. But that might be a better way to go just to be sure.