- Update: 2024-01-18: I wish you a Happy New Year 2024!
- Data updates:
- I updated the script and generated new data files for the BG3 game version
"4.1.1.4494476"
(2024-01-15), including up to "Patch5_Hotfix6"
stuff.
- Improvements:
- Added logic to fill empty stats columns from their parent templates, so you don't need to trackback the stats description (for example).
- Added logic to remove empty GameObjects columns.
- Update: 2023-12-18:
- Data updates:
- I updated the script and generated data up to game version
"4.1.1.4216792"
, including the "Patch5_Hotfix2"
stuff.
- Bug Fixes:
- Some important game elements were missing: items, passives, statuses among other and this is now corrected.
It was due to a recent change in game "pak" directory structure that I did not noticed earlier.
- Some translations that where also missing in Stats records have been added now.
- Improvements:
- "Merged" and "Templates" objects are now consolidated together into single "GameObjects" files.
This is much more closer to the original game structure and make it easier to find an object within a single file.
- Added all GameObjects from "LevelTemplates" and "Levels" on top of "RootTemplates" and "TimelineTemplates".
These are, to my understanding, objects that are available only in specific, region, level or area of the game.
- There are columns named "LevelName" and "RootFolder" in the sheets that will hint you where, in-game, these objects can be found.
- More globally, the script is now scanning much more thoroughly across game data for those bits and pieces that have been missed so far!
- Please let me know if something looks to be still missing or wrong!
- 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.
The "
Stats" files contains information about: "Armors", "Weapons", "Objects", "Passives", "Spells", "Statuses", "Characters", "CriticalHitTypes", "Interrupts"
The "
GameObjects" files contain information about: "item", "character", "LevelTemplate", "" ---
and other environmental stuff
- Json Files (Array or Dict format):
- Flags, Tags
- Stats_*: Stats file --- with all data from the "Stats" game directories files
- GameObjects_*: -GameObjects files -- with all data from "RootTemplates", "TimelineTemplates", "LevelTemplates" and "Levels" game directories files
- Excel files:
- Flags.xlsx, Tags.xlsx
- Stats.xlsx: one sheet per type of Stats
- GameObjects_All.xlsx - sheets: "item", "character", "scenery" --- and other environmental stuff
- GameObjects_Items_Characters.xlsx - sheets: "item" and "character" only (smaller file)
- SQLite files:
- bg3data-raw.sqlite3: Stats Tables (one Table per type of stats) + Flags and Tags tables.
- bg3data-gameobjects.sqlite3: One single table with all objects types.
- bg3data-gameobjects-split.sqlite3: Multiple tables split per object types.
- bg3data-gameobjects-small.sqlite3: The two most wanted tables only: Characters and Items
--> 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!