[Tool] GDViewer - Fast lightweight character viewer and note keeper

Here is a list of items you find outside of records/items/…

ID Name
records/endlessdungeon/items/a001_ring.dbr Leovinus’ Ring
records/endlessdungeon/items/craft_keystone_01.dbr Shattered Waystone
records/endlessdungeon/items/craft_keystone_02.dbr Resonating Waystone
records/endlessdungeon/items/craft_keystone_03.dbr Haunted Waystone
records/endlessdungeon/items/craft_keystone_04.dbr Desecrated Waystone
records/endlessdungeon/items/craft_keystone_05.dbr Celestial Waystone
records/endlessdungeon/items/craft_keystone_06.dbr Death’s Waystone
records/endlessdungeon/items/q001_torso.dbr Miss Gazer Man
records/endlessdungeon/items/z001_test.dbr Mildly Amusing Box
records/endlessdungeon/scriptentities/portal_s01.dbr Totally Normal Shield
records/endlessdungeon/scriptentities/portal_s02.dbr Totally Normal Shield
records/endlessdungeon/scriptentities/portal_s03.dbr Totally Normal Shield
records/storyelements/questassets/q000_torso.dbr Gazer Man
records/storyelements/questitems/cultistdirections.dbr Direni’s Directions
records/storyelements/questitems/cultistkey.dbr A Strange Key
records/storyelements/questitems/secretritual_01.dbr Dravis’ Letter to Daila - First Entry
records/storyelements/questitems/secretritual_02.dbr Dravis’ Letter to Daila - Second Entry
records/storyelements/questitems/secretritual_03.dbr Dravis’ Letter to Daila - Third Entry
records/storyelements/questitems/secretritual_loreobject.dbr Dravis’ Letter to Daila - Final Entry
records/storyelements/questitems/sq_amulet_harts_amulet.dbr Hart’s Amulet
records/storyelements/questitems/sq_lost_journal.dbr Cultist Orders
records/storyelements/questitems/sq_lostelder_talisman.dbr Bone Talisman
records/storyelements/rewards/q001_necklace.dbr Sister’s Amulet of Lifegiving
records/storyelements/rewards/q001b_necklace.dbr Sister’s Amulet of Lifegiving
records/storyelements/rewards/q001c_necklace.dbr Sister’s Amulet of Lifegiving
records/storyelements/rewards/q003_ring_slithring.dbr Slith Primal Ring
records/storyelements/rewards/q003b_ring_slithring.dbr Slith Primal Ring
records/storyelements/rewards/q003c_ring_slithring.dbr Slith Primal Ring
records/storyelements/signs/signf.dbr Lokarr’s Boots
records/storyelements/signs/signh.dbr Lokarr’s Gaze
records/storyelements/signs/signs.dbr Lokarr’s Mantle
records/storyelements/signs/signt.dbr Lokarr’s Coat
records/storyelementsgdx2/questassets/areag_n.dbr Wilhelm’s Wondrous Wargem

You are a star - Those are exactly the anomalies I am missing apart from the ones you cannot equip.

INCLUDING something I have never seen in the game before ???.

WTF is a “Wilhelms’s Wonderous Wargen” ?

Just one SQL query away with GD Stash :smiley:

select item_id, name from gd_item where item_id not like ‘records/items/%’ and enemy_only = false

1 Like

with a slight nuance: first you need to parse the game db , which first (again-)) requires digging a lot into that db ))

Wilhelm’s Wonderous Wargen is an amulet - the spelling above is incorrect. It’s listed in item DB of Grimtools - https://www.grimtools.com/db/search?query=Wilhelm&in_description=1&exact_match=0

yep, but GD Stash does the digging into the game .arz, you then need to connect to it with some SQL client and figure out the table and fields, but that is relatively easy…

For me it is one SQL query away, and that is what I meant, i.e. it was very little effort to collect that list

Updated tool to 1.1.7 (Build 18) at top of post

Now that I have a better idea of how the item descriptions work with the prefix and suffix, I have expanded the equipment descriptions to include them.

image

I have also added a button that displays a simple form showing which armor augments are available at which factions. Once again this was from an old spreadsheet as I can never remember where to go to fill in my resistance gaps and found it useful to have it included here.

Hi Mike,

Thanks for the updated feature ! All working. Just an FYI but my AV Norton’s reports the executable as “dangerous” and removes it. Not a big deal. I can put it back in place, but you did say to let you know :grinning:

This may have been asked before but any chance this can also read the user directory, which is also under the save directory. This contains all the characters used in mods. It would be nice to have those show as well and maybe a column that says Mod with a Y/N similar to the hardcore one you have already.

Thanks for the info on AV Norton. I don’t have that AV, but certainly AVG and Kaspersky has no problem with it. As you say you can whitelist the app to prevent the false positive, but I will see if I can send to Norton to get them to comment.

The mods are a little tricky for me at this stage as I currently do not have a single one installed or have any experience with them, and then there will be the issue of accessing the info I need from the mod’s database. I currently only create a small custom internal lookup list that I manually pre-extract and build from the GD item database just for the equipable items. To do this for mods would require internal lookup lists to be created for each mod. If I just add the mod characters (only reads from the player.gdc files), then the grid could show all EXCEPT the Title,Class 1,Class 2 and obviously the Equipment list. Not sure if this would be of any help?

The intention of this app was to keep it small,lite and fast, but it may be a starting place for a heavier version on the app that would require extractions to a local database for each mod. If I get around to installing a mod I will have a look at maybe developing a version 2 of the app that obviously then would require the user to extract the database from a settings menu much in the same line as GD Stash does.

EDIT: I see Norton has a site that you can submit false positives for testing, but I dont have the details of when the detection happens or what Norton product ver you have? If you get a chance you can post the exe to

https://submit.norton.com/?type=FP

and select the “Incorrectly detected by Norton” tab and tick the relevant info as well as to upload the file. Alternatively, if there is any other info required by myself, I can submit it myself if you let me know what options you tick on forms 1 and 2.

I did submit the executable to Norton. It updates automatically so I’m on the latest version all the time. I had the same issue with gd-edit and grim internals as well. Hopefully submitting it to them should stop it trashing the executable and me having to restore it.

If you do get an opportunity to put the mod character functionality in this, or an expanded tool, I’ll certainly use it, but the existing tool is fantastic as it is !

1 Like

Cool, I am currently busy expanding on that new static Armor Augment form I have added. I am changing it to be able to SEARCH for Augments and show their properties and where available for the Armor,Rings,Amulets,Weapons and Offhands. Much in the same manner that you can search for stuff in the Stash or at the Blacksmith. I always have an issue when trying to remember which faction has which augment and usually resort to visiting each one or finding an online reference. This feature will let me enter for eg. Level and Search criteria strings and display only the augments that are available at each faction that matches the filter.

The current added form is just a static spreadsheet copy/paste, but if I am changing the Armor augments to be dynamic searchable, then it sort of makes sense to add the other equipment augments as well as they pose the same problem when trying to search for them.

One of these days I intend to install that “Reign of Terror” D2 mod and that will probably trigger me to expand the tool to version 2, but just too busy at the moment with soaking up play with all the latest GD patch changes.

Not to distract from what your doing at the moment, but you might want to look at the Grim UI Mod-x mod as your first step into incorporating mod character listings in the tool (or the tool to come after this :grinning:). It just expands character stash so should avoid you having to find, open and read additional DB’s afaik (though I could be totally wrong on that of course).

This looks cool.
Is there chance to add death count as a column?

Let me have a look at where that value is in the stat fields.

I had a look at including the Death Count as a column.
Turns out it is NOT as simple as it sounds.

Technical explanation

I do not decode the whole character and database files as I want to keep this app as a light and fast solution.

I use sections of the C++ web example to decode the gdc character file.
I just currently process the first 3 data blocks as it has some of the data I require.

Block 1 - Character Information : Used
Block 2 - Player Stats : Useless as they change by modifiers, but required for encrypt read progess.
Block 3 - Player Equipment list : Used

The issue with Death Count is that it is way down in Block 16 of the gdc file.

I thought I could just skip all the blocks down to 16 using a BlockRead(BlockSize) and just call the encryption enabled ReadByte() for every byte read. Turns out that this does not work. You have to read each block with the correct defined block structure in order to update the Encryption Table correctly.
eg.
ReadInteger();
ReadString();

etc.

There is nothing in the blocks 4…16 that I particularly need, apart from the Death Count at 16 and the processing cost of getting there for the one property is not really worth the effort.

On the bright side though, I have just posted an update 1.3.11 (Build 23) for the app that has some nice new features.

Hello,

thanks for trying to add the feature I requested. Sadly it’s buried deep in the file. Who knows, as time passes, maybe Block 16 will be reached :slight_smile:
Also, problem I noticed, clicking on headers to sort by desired column does not perform as expected.
It always sorts Ascending, but on second click, which should perform the same sort on column clicked, but Descending, it does not work, or rather it behaves strange.
I made short video, because I know I did not explain it well :smiley:

Yea, maybe Crate will eventually open up all the character definition files in unencrypted plain TEXT files once they have deemed the game is complete and NO further patches will be applied.

In the meantime - we play and survive in Cairn as best as we can

I wouldn’t bet on that :scorv:

1 Like

Thank you for this, work perfect for me.
I love to have notes for each chars.

As for the collection tags, I use GDSC for extra storage, not mules, but I found a nice way to use your feature that maybe other people can find useful, there are many possibilies, pic related:

… actually, I have NO chars that can beat Callagadra or SR 70+, the pic is just a test for GDViewer :stuck_out_tongue:

1 Like

Small update at top of page. Having over 40 characters now I got weary of the initial load time getting longer and longer with each new character. Added multi-threading for each character which significantly reduces the initial load time with many characters.

1 Like