spicyboys / drg-completionist

DRG Completionist is a free, open-source online progress tracker for Deep Rock Galactic. It's designed to help keep track of all the different overclocks and cosmetics available for hard-working employees like yourselves, as well as to serve as an handy reference for overclock data.
https://drg-completionist.com
GNU General Public License v3.0
53 stars 13 forks source link

Some Weapon Frameworks & Armor Paint Jobs are not selected correctly #144

Open DRG-17 opened 1 year ago

DRG-17 commented 1 year ago

When analyzing the save game the infected Season 4 weapon framework is not selected for the Gunner BRT7 although it is unlocked ingame.

Same for the Prestige Assignment Armor Paint Jobs (Toxic Defender, Regal Aegis, Black Crag & Scale Brigade) which is only selected for Driller and not the other dwarfs.

rob0rt commented 1 year ago

Thanks for the report, it's most likely that I messed up copying the IDs over. I'll take a look at it sometime in the next few days

hypered1 commented 11 months ago

Any updates for this to be resolved?

DarkAoRaidenX commented 10 months ago

Yeah one it seems to be missing the new Infected skin for Gunner's BRT7 Gun.

Says I do not have Paint Jobs - Black Crag, Regal Aegis, Toxic Defender, Scale Brigade on all Dwarves.

Sorry i guess i blanked out i didn't read they already said which ones. I just read it didnt have some.

dgcarlucci commented 7 months ago

I wanted to point out that every "prestige" based armor set are all unlocked across all characters once you hit that rank.

Currently these are: Black Crag, Regal Aegis, Toxic Defender, Scale Brigade

https://deeprockgalactic.wiki.gg/wiki/Armor_Skins

If you threw some logic into this block here, there might be a function you can create that pushes the Driller's "Prestige" armor based IDs across all of the rest? My assumption here is that Driller is first because it's alphabetical but 🤷 . It might be best to categorize them separately but at this rate I doubt they'd add any more of these so maybe even just hardcoding these from your JSON.

I do not normally use RUST but something like this might work? Apologies if this isn't exactly how this is done, I am just going off of patterns of other languages. 🥉

// Handle Driller armor paint jobs
        if (miner.name === "Driller") {
          const drillerArmorNames = ["Black Crag", "Regal Aegis", "Toxic Defender", "Scale Brigade"];
          for (const armorPaintJob of miner.armorPaintJobs) {
            if (drillerArmorNames.includes(armorPaintJob.name)) {
              UnlockedVanityItemIDs.push(armorPaintJob.saveId);
            }
          }
        }

        // Handle other miners' armor paint jobs
        for (const armorPaintJob of miner.armorPaintJobs) {
          if (["Engineer", "Gunner", "Scout"].includes(miner.name)) {
            // Assuming a consistent naming convention for corresponding armors
            const correspondingArmorName = `${armorPaintJob.name} ${miner.name}`;
            if (UnlockedVanityItemIDs.includes(correspondingArmorName)) {
              UnlockedVanityItemIDs.push(armorPaintJob.saveId);
            }
          }

🤷 There is probably a more elegant solution here.

rob0rt commented 7 months ago

Your suggestion is actually roughly how it was implemented before, with the promotion assignment armor skins being handled totally separately. When I consolidated and normalized all the data I didn't have the GUIDs for the non-Driller skins, hence this bug. My intended fix, to avoid further complexity, was to just go and get the missing GUIDs, but I haven't gotten around to it yet (checking the GitHub repo's commit history shows that I tend to work on this project in bursts and I'm just between one of them). I'd rather not re-introduce special handling at the save file data's ingestion; if anything, maybe adding something to the DB code as a middleware (https://dexie.org/docs/DBCore/DBCore) such that this case is handled for both the save file parser and manually inputting unlocks. I imagine there are other unlocks in the game that could be handled very similarly, so building out that machinery might be handy.