Noway3 wrote: ↑Sat Aug 26, 2023 2:52 pm
Hi All,
- Update: 2023-12-04:
- I updated the script and generated data up to game version
4.1.1.4079877
, including the "Honour" stuff.
- Older updates:
[*]
Update: 2023-11-04:
- I updated the script and generated data up to game version
Patch #4
- v4.1.1.3905231
[*]
Update: 2023-10-14:
- I updated the script and generated data up to game version
Patch3_Hotfix3
- I optimized the output file generation to eliminate empty columns an minimize empty cells in all formats.
- I fixed some minor cosmetics issues in the excel sheets
[*]
Update: 2023-10-05:
- I re-organized the files and data a bit differently, See the update description further down this post
- more python scripts updates...
[*]
Update: 2023-10-01:
- Updated data to games version
Patch3
- in "
Templates
" files, I have recursively filled in all information from parent templates for each object.
- added
merged-items
and merged-characters
to have smaller files with those more interesting stuff extracted from merged-all
- reworked/updated the python script...
[*]
Update: 2023-09-22:
- New feature: "Merged" objects (array, dict and SQLite database)
The "Merged" database is consolidated from all _merged.lsf data files extracted from the game. These where off the radar until now.
It is supposed, to my knowledge, to be a comprehensive list of all 'character', 'trigger', 'item', 'scenery', 'LevelTemplate' and other FX effects.
for example: if you are looking for a specific character or a specific item, search for that name in the "DisplayNameEnglish" column. You should then find the MapKey of it (e.g. to summon it) and the UUID of the template (to spawn an instance of it).
WARNING: these files are relatively BIG, around 300 MB, they contains a total of 475,746 game objects!
ALSO: It is still work in progress: I am working on:
(1) filling in the empty cells recursively from their template values to make it easier to sort out and browse thru .
And (2) I will also split it to make it easier to download and browse, starting with 'character' (4126 rows) and 'item' list (54408 rows) which seems the most interesting for us (the other stuff could be of interest for modders)
[*]
Update: 2023-09-16:
- Added logic to better completely eliminate duplicates (from game patches)
- Added logic to put "important/useful" columns in front, excel and json files.
[*]
Update: 2023-09-15:
- Fixed missing English translations (mainly in templates files)
- Added Flags and Tags files
- Added TimelineTemplates in addition to RootTemplates
- Updated the code and data up to game version "Patch2 / Hotfix2"
- Re-organized files on a google drive share (see new links in this post)
- Published the python script source code
- Added SQLite3 output format (for future use)
[*]
Update: 2023-09-01:
I have refreshed all the JSON and the EXCEL sheets to include Patch2 updates for all items, spells, etc ... and translations.
[*]
Update: 2023-08-28:
I have updated all the JSON and the EXCEL sheets with a "fresh script run" today. With these changes:
- Added all RootTemplates records (.xlsx and _dict.json))
- In these files I have gathered the records from "RootTemplates" files found in the 'UnpackedData' directory tree.
- All are there (367792 rows) and, as a result, it is quite a cumbersome list. I suggest to filter it with "Type = item" to get the essentials:
- You will find there, among other, "skinned" weapons and armors (like the Nightsong outfit), books, alchemy, food, weapons, quests and other more mundane stuff.
- Sorted the columns in the excel sheets
- I have moved the most "interesting one" to left so you have then on screen at first sight (English names, UUID, ..)
- Corrected few bugs in my script that missed certain type of translations.
Pitch and details
I have created a script to gather all the stats of things such as Armors, Characters, Object, Passives, Spells, Statuses, Tags, Flags, Templates, Weapons and outputs them into JSON, Excel files and SQLite database .
With these files, you should be able to query for any item, spell, boost, flag, tag, status that you may be looking for and find the corresponding UUID to use in the cheat tables.
Here is the link to the google drive directory, with all the files: [Link]
It is organized with "Json", "Excel" and "SQLite" and "Script" directories:
Note: the JSON, Excel or SQLite version contains exactly the same data in different formats; choose the format that fits your needs or your preference.
- Json Files (Array or Dict format):
- Flags, Tags
- Stats_*: Stats_Passives, Stats_Armors, Stats_Characters, Stats_Spells, Stats_Statuses, Stats_Weapons, Stats_CriticalHitTypes, Stats_Interrupts, Stats_Objects --- with all data from the "Stats" game directories files
- Templates --- with all data from "RootTemplates" and "TimelineTemplates" game directories files
- Merged --- with all data from the "_merged.lsf.lsx" game files (> 500MB!)
- Excel files:
- Flags.xlsx, Tags.xlsx
- Stats.xlsx - sheets: "Armors", "Weapons", "Objects", "Passives", "Spells", "Statuses", "Characters", "CriticalHitTypes", "Interrupts"
- Templates.xlsx - sheets: "item", "character", "scenery", "LevelTemplate" --- and other environmental stuff
- Merged.xlsx - sheets: "Items", "Characters" --- (see json or sqlite formats for full dumps of "Meged" files)
- SQLite files:
- bg3data-raw.sqlite3
- Contains all tables found in "Stats", "Flags" and "Tags"
- bg3data-merged.sqlite3
- Contains one table with all the "_merged.lsf.lsx" game files (470 MB !)
--> The Python script, that generates all these files, is also shared on the google drive, in the "Script" directory
My thanks again (and again) and credits to Zanzer, EvenLess and all the others in this forum that heavily inspired my own production here.
----------------------------------------------------------------------
You can view JSON files in any text viewer but I suggest to use a specialized viewer, like "Datroit JSON Viewer" (available on datroit_dot_com).
MS Visual Studio Code is also fine for viewing and searching inside JSON files.
While testing my script, I have found that they are sometimes multiple instances of the same object in different files.
Does anybody knows where I can find the proper "load order" of "unpacked _data" to ensure that I am taking the latest update of an object only?
ROOT_FOLDERS_L1: List[str] = [ # List of first level root folders directory (add new game Patch/Version here)
"Shared", "Gustav",
"Patch0_Hotfix1", "Patch0_Hotfix2", "Patch0_Hotfix3", "Patch0_Hotfix4",
"Patch1",
"Patch2", "Patch2_Hotfix1", "Patch2_Hotfix2",
"Patch3"
]
ROOT_FOLDERS_L2: List[str] = [ # List of second level root folders directory
"Public/Shared",
"Public/SharedDev",
"Public/Gustav",
"Public/GustavDev"
]
Here are some example of what's in those files:
"Shout_MAG_Critical_ArcanicCritical": {
"EntryName": "Shout_MAG_Critical_ArcanicCritical",
"EntryType": "SpellData",
"SpellType": "Shout",
"EntryUsing": "Shout_FalseLife",
"SpellSchool": "Divination",
"SpellProperties": "ApplyStatus(MAG_CRITICAL_ARCANIC_CRITICAL,100, 1)",
"Icon": "Action_Monster_Orin_DeathbringerAssault",
"DisplayName": "hcb4c06ebgeb5dg4b0dgb4d3gce925d8b8833;2",
"DisplayName_English": "Arcane Critical",
"Description": "h32772a4agf2f6g43fagaa4fgecb011feb623;3",
"Description_English": "Magically augment your ability to annihilate your foes with powerful attacks. The number you need to <LSTag Tooltip=\"AttackRoll\">roll</LSTag> a <LSTag Tooltip=\"CriticalHit\">Critical Hit</LSTag> while attacking is reduced by 2. This effect can stack.",
"DescriptionParams": "1",
"TooltipStatusApply": "ApplyStatus(MAG_CRITICAL_ARCANIC_CRITICAL,100, 1)",
"UseCosts": "BonusActionPoint:1;SpellSlotsGroup:1:1:1",
"VerbalIntent": "Buff",
"root_folder": "Patch1/Public/GustavDev"
},
Example of lookup for "Legendary" in file "Armor_dict.json" with Datroit JSON viewer:
Another example of browsing JSON file with MS Visual Studio Code:
Please let me know if something looks to be missing or wrong!
And don't forget to enjoy the game!