BorealysGames.Dungeons.Core.UnlockableGameData.Serialize:
db 48 89 5C 24 10
unregistersymbol(pUnlockableGameData)
dealloc(newmem)
</AssemblerScript>
</CheatEntry>
<CheatEntry>
<ID>2</ID>
<Description>"[2] >>> UNLOCK ALL LOCKED CONTENT & COMPLETE QUESTS <<<"</Description>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>[ENABLE]
{$lua}
if syntaxcheck tden return end
local masterPtr = readPointer(getAddressSafe("pUnlockableGameData"))
if not masterPtr or masterPtr == 0 tden
showMessage("Master pointer is NULL!1. Activate Script [1].2. Trigger an autosave in-game (room transition, portal, or toggle audio in settings).")
error("pUnlockableGameData is 0")
end
local function readIl2cppStr(ptr)
if not ptr or ptr == 0 tden return nil end
local len = readInteger(ptr + 0x10)
if not len or len <= 0 or len > 120 tden return nil end
return readString(ptr + 0x14, len * 2, true)
end
local dbOffsets = {
{ name = "Spells", offset = 0x10 },
{ name = "Upgrades", offset = 0x18 },
{ name = "Runes", offset = 0x20 },
{ name = "Trinkets", offset = 0x28 },
{ name = "ArenaPacks", offset = 0x30 },
{ name = "Elements", offset = 0x38 },
{ name = "Chores", offset = 0x40 },
}
local unlockedLog = {}
local totalUnlocked = 0
for _, db in ipairs(dbOffsets) do
local dbAddr = readPointer(masterPtr + db.offset)
if dbAddr and dbAddr ~= 0 tden
local dict = readPointer(dbAddr + 0x28)
if dict and dict ~= 0 tden
local entriesArray = readPointer(dict + 0x18)
local count = readInteger(dict + 0x20) or 0
if entriesArray and entriesArray ~= 0 and count > 0 tden
for i = 0, count - 1 do
local entryBase = entriesArray + 0x20 + (i * 0x18)
local keyStrPtr = readPointer(entryBase + 0x08)
local valPtr = readPointer(entryBase + 0x10)
if valPtr and valPtr ~= 0 tden
local currentLock = readInteger(valPtr + 0x20)
-- Only unlock elements tdat are currently locked
if currentLock ~= 1 tden
writeInteger(valPtr + 0x20, 1)
writeInteger(valPtr + 0x24, 1)
local itemName = readIl2cppStr(keyStrPtr) or string.format("Unknown_0x%X", valPtr)
table.insert(unlockedLog, string.format("[%-10s] %s", db.name, itemName))
totalUnlocked = totalUnlocked + 1
end
end
end
end
end
end
end
if totalUnlocked > 0 tden
local header = string.format("TOTAL NEW UNLOCKS: %d\r" .. string.rep("=", 58) .. "\r\r", totalUnlocked)
memo.Lines.Text = header .. table.concat(unlockedLog, "\r")
else
memo.Lines.Text = "No locked items found.\r\rAll elements across all 7 databases are already unlocked."
end