Divinity Original Sin 2 Definitive Edition (Steam)

Upload your cheat tables here (No requests)
epichotsauce
Noobzor
Noobzor
Posts: 13
Joined: Wed Jun 26, 2019 8:19 am
Reputation: 0

Divinity Original Sin 2 Definitive Edition (Steam)

Post by epichotsauce »

Anyone have the knowledge to update this table? The game has been updated to [B] (3.6.64.2709) [/B]with new gift bag features.



Thank you

How to use this cheat table?
  1. Install Cheat Engine
  2. Double-click the .CT file in order to open it.
  3. Click the PC icon in Cheat Engine in order to select the game process.
  4. Keep the list.
  5. Activate the trainer options by checking boxes or setting values from 0 to 1

archilles89
Noobzor
Noobzor
Posts: 8
Joined: Sun Oct 22, 2017 1:47 am
Reputation: 0

Divinity Original Sin 2 Definitive Edition (Steam)

Post by archilles89 »

please update this to the new version i'd be so grateful

H_C_L
What is cheating?
What is cheating?
Posts: 2
Joined: Mon May 25, 2020 2:46 am
Reputation: 0

Divinity Original Sin 2 Definitive Edition (Steam)

Post by H_C_L »

So far with the latest cheat table uploaded last time I've been able to use the Last Moved Item and No Skill Cooldown

epichotsauce
Noobzor
Noobzor
Posts: 13
Joined: Wed Jun 26, 2019 8:19 am
Reputation: 0

Divinity Original Sin 2 Definitive Edition (Steam)

Post by epichotsauce »

Well, I have a feeling there won't be a new table anymore. Some of the options from the last table still work. If you need to edit attribute, combat, talent points or spawn items - there's a Steam workshop mod called " The Cheat Commander Definitive Edition" It works fine with the latest update.

archilles89
Noobzor
Noobzor
Posts: 8
Joined: Sun Oct 22, 2017 1:47 am
Reputation: 0

Divinity Original Sin 2 Definitive Edition (Steam)

Post by archilles89 »

[QUOTE="epichotsauce, post: 139906, member: 30575"]

Well, I have a feeling there won't be a new table anymore. Some of the options from the last table still work. If you need to edit attribute, combat, talent points or spawn items - there's a Steam workshop mod called " The Cheat Commander Definitive Edition" It works fine with the latest update.

[/QUOTE]

i dowanna give away i'm cheating to my friends :(

User avatar
bloodsucker
Expert Cheater
Expert Cheater
Posts: 73
Joined: Tue Mar 14, 2017 1:08 am
Reputation: 7

Divinity Original Sin 2 Definitive Edition (Steam)

Post by bloodsucker »

[QUOTE="axuzawan, post: 131182, member: 39861"]

Updated this table to the version 3.6.58.1306

[attachment=0]EoCApp_3.6.58.1306.CT[/attachment]

[/QUOTE]



Beware, "renew chest or container" is cause the game CTD. I have it test and confirm so far.

Arkhana
Noobzor
Noobzor
Posts: 7
Joined: Mon May 08, 2017 3:19 pm
Reputation: 0

Divinity Original Sin 2 Definitive Edition (Steam)

Post by Arkhana »

[QUOTE] Beware, "renew chest or container" is cause the game CTD. I have it test and confirm so far. [/QUOTE]

If you mean "Treat Container as New" then it worked for me without any issue.
Last edited by Arkhana on Thu Jan 01, 1970 12:00 am, edited 1 time in total.

timechaos69
Fearless Donors
Fearless Donors
Posts: 192
Joined: Wed Oct 18, 2017 4:23 am
Reputation: 26

Divinity Original Sin 2 Definitive Edition (Steam)

Post by timechaos69 »

yes Treat container as new works using cheat engine 7.1 and set treasure level

User avatar
bloodsucker
Expert Cheater
Expert Cheater
Posts: 73
Joined: Tue Mar 14, 2017 1:08 am
Reputation: 7

Divinity Original Sin 2 Definitive Edition (Steam)

Post by bloodsucker »

[QUOTE="Arkhana, post: 140282, member: 4583"]

If you mean "Treat Container as New" then it worked for me without any issue.

[/QUOTE]

Yes, "Treat Containers as New" it work for me too but it make game crash when the game auto save and it also create a bad save and unable to load. i have test it and confirm

[automerge]1592868653[/automerge]
Last edited by bloodsucker on Mon Jun 22, 2020 11:31 pm, edited 3 times in total.

Arkhana
Noobzor
Noobzor
Posts: 7
Joined: Mon May 08, 2017 3:19 pm
Reputation: 0

Divinity Original Sin 2 Definitive Edition (Steam)

Post by Arkhana »

[QUOTE="bloodsucker, post: 140448, member: 1162"]

Yes, "Treat Containers as New" it work for me too but it make game crash when the game auto save and it also create a bad save and unable to load. i have test it and confirm

[/QUOTE]

Yeah it works for me without any saving/loading issue so you might want to give more details as to when/how it happens.

Cowtow
Noobzor
Noobzor
Posts: 13
Joined: Fri Apr 07, 2017 5:38 am
Reputation: 5

Divinity Original Sin 2 Definitive Edition (Steam)

Post by Cowtow »

I went ahead and updated this. I haven't been able to test every single script (durability, set level, and immunity), but every other script on the table works. I took the liberty of adding a cat stat tracker to the player portion of the table (seems to track peep in act 2). Built for CE 7.1
Attachments
EoCApp.CT
Table for version 3.6.64.2709
(241.48 KiB) Downloaded 1172 times
Last edited by Cowtow on Thu Jan 01, 1970 12:00 am, edited 2 times in total.

epichotsauce
Noobzor
Noobzor
Posts: 13
Joined: Wed Jun 26, 2019 8:19 am
Reputation: 0

Re: Divinity Original Sin 2 Definitive Edition (Steam)

Post by epichotsauce »

Thank you for the 3.6.64.2709 updated table, it works wonder.

(I'm still a little confused, what happened to the previous thread, the bookmark I saved just took me to this new one...)

tdoyijgn
What is cheating?
What is cheating?
Posts: 1
Joined: Wed Jul 01, 2020 11:18 pm
Reputation: 0

Re: Divinity Original Sin 2 Definitive Edition (Steam)

Post by tdoyijgn »

Fixed Unlimited Carry Weight script for Steam version:

Code: Select all

[ENABLE]
aobscanmodule(weightAOB,EoCApp.exe,40 0F B6 D7 48 8B CE E8 ?? ?? ?? ?? 0F AF C3 66 0F 6E C0 0F 5B C0 F3 0F 59 C2 F3 0F 58 C3)
define(weight, weightAOB+F)
alloc(newmem,$800,weight)

label(code)
label(return)

newmem:
  mov eax,#99999
code:
  movd xmm0,eax
  cvtdq2ps xmm0,xmm0
  jmp return

weight:
  jmp newmem
  nop
  nop
return:
registersymbol(weight)

[DISABLE]
weight:
  db 66 0F 6E C0 0F 5B C0 F3 0F 59 C2 F3 0F 58 C3
unregistersymbol(weight)
dealloc(newmem)


Last edited by tdoyijgn on Tue Jul 07, 2020 11:41 pm, edited 1 time in total.

juntalis
Noobzor
Noobzor
Posts: 7
Joined: Tue Oct 02, 2018 12:01 pm
Reputation: 10

Re: Divinity Original Sin 2 Definitive Edition (Steam)

Post by juntalis »

Fixed two records related to global variables. I might've fixed some others, but I don't really remember. I'm currently able to use Last Moved Item in Backpack for quantity, Remove Skill Cooldown, Unlimited Durability, and Set Treasure Level so if any of those don't work for you, I'll post what I've got in my table.

Should be able to just copy this and paste it into your table for the global variables stuff:

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
  <CheatEntries>
    <CheatEntry>
      <ID>10526</ID>
      <Description>"Global Variables"</Description>
      <Options moHideChildren="1"/>
      <LastState/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
{ old aobscanmodule
aobscanmodule(globals,EoCApp.exe,83 FB ?? 75 ?? 48 8B ?? ?? ?? ?? ?? 33 D2)

old code not sure how to fix
if success then
  globals = getAddress("globals") + 23
  globals = readInteger(globals) + globals + 20
end
EoCApp.exe+1C91227 - mov rax,[EoCApp.exe+29E0798]
EoCApp.exe+1C91231 - mov rcx,[EoCApp.exe+2969208]


}
{$lua}
if syntaxcheck then return end

local AddressList = _G.AddressList

local function disassembleInstr(address)
	local output = disassemble(address)
	local instrParts = table.pack(splitDisassembledString(output))
	local instrText = instrParts[2]
	local results = {["params"]={}}
	local firstTime = true
	for param in string.gmatch(instrText, '[^ ,]+') do
		if firstTime then
			firstTime = false
			results.instr = string.lower(param)
		else
			table.insert(results['params'], param)
		end
	end
	return results
end

local function stripBrackets(address)
	local result = address
	local prefix = string.sub(address, -1)
	local postfix = string.sub(address, 0, 1)
	if prefix == '[' and postfix == ']' then
		result = string.sub(address, 2, -2)
	end
	return result
end

local function lookupGlobalVariables()
	-- Look up mov instruction and disassemble
    --[==[
	local variables_size
	assert(autoAssemble([[
	aobscanmodule(global_variables_aob,EoCApp.exe,83 FB ?? 77 ?? 48 B9 ?? ?? ?? ?? ?? ?? ?? ?? 48 0F A3 D9 73 ?? 48 8B ?? ?? ?? ?? ?? 0F 57 C9)
	registersymbol(global_variables_aob)
	]]))
	local variables_codeaddr = assert(getAddressSafe('global_variables_aob+15'))
	unregisterSymbol('global_variables_aob')
	assert(variables_codeaddr &gt; 0x15)
	local variables_instr = disassembleInstr(variables_codeaddr)

	-- Resolve the variables memory size and pointer.
	local variables_ptr = stripBrackets(variables_instr.params[2])
    ]==]--
    local variables_ptr = 'EoCApp.exe+29E0798'
	variables_ptr = readPointer(variables_ptr)
	variables_ptr = readPointer(variables_ptr + 0x2E0)
	variables_size = readInteger(variables_ptr) - 1
	variables_ptr = readPointer(variables_ptr + 0x8)
	return variables_ptr, variables_size
end

local recordDataCmp = function(a, b)
	return a.name &lt; b.name
end

local function iterGlobalVariables(variables, size)
	local idx
	local results = {}
	for idx = 0,size do
		local variable = readPointer(variables + idx * 8)
		repeat
			local recordData = {}
			recordData.name = readString(readPointer(variable + 0x8))
			recordData.address = variable + 0x10
			table.insert(results, recordData)
			variable = readPointer(variable)
		until variable == 0
	end

	table.sort(results, recordDataCmp)
	return ipairs(results)
end

local function createVariableRecord(recordData)
	local record = AddressList.createMemoryRecord()
	record.DontSave = true
	record.Type = vtSingle
	record.VarType = 'vtSingle'
	record.Description = recordData.name
	record.Address = recordData.address
	return record
end

local function isEmptyRecord(record)
	return record.Count &lt;= 0
end

local function populateVariablesRoot(rootRecord)
	local variables, size = lookupGlobalVariables()
	for _,recordData in iterGlobalVariables(variables, size) do
		local record = createVariableRecord(recordData)
		record.appendToEntry(rootRecord)
	end
end

local function cleanupVariablesRoot(rootRecord)
	if record.Count &gt; 0 then
		local idx
		local lastIdx = rootRecord.Count - 1
		for idx = lastIdx,0,-1 do
			local record = rootRecord.Child[idx]
			record.disableWithoutExecute()
			object_destroy(record)
		end
	end
end

if isEmptyRecord(memrec) then
	populateVariablesRoot(memrec)
end

{$asm}
[DISABLE]
//code from here till the end of the code will be used to disable the cheat
{
// ORIGINAL CODE - INJECTION POINT: "EoCApp.exe"+16AD5B7

"EoCApp.exe"+16AD592: FF 15 40 6D 2D 00              -  call qword ptr [EoCApp.exe+19842D8]
"EoCApp.exe"+16AD598: F3 0F 2C C0                    -  cvttss2si eax,xmm0
"EoCApp.exe"+16AD59C: 48 83 C4 20                    -  add rsp,20
"EoCApp.exe"+16AD5A0: 5B                             -  pop rbx
"EoCApp.exe"+16AD5A1: C3                             -  ret
"EoCApp.exe"+16AD5A2: 83 FB 22                       -  cmp ebx,22
"EoCApp.exe"+16AD5A5: 77 50                          -  ja EoCApp.exe+16AD5F7
"EoCApp.exe"+16AD5A7: 48 B9 50 00 00 00 04 00 00 00  -  mov rcx,0000000400000050
"EoCApp.exe"+16AD5B1: 48 0F A3 D9                    -  bt rcx,rbx
"EoCApp.exe"+16AD5B5: 73 40                          -  jae EoCApp.exe+16AD5F7
// ---------- INJECTING HERE ----------
"EoCApp.exe"+16AD5B7: 48 8B 05 2A 1B 8E 00           -  mov rax,[EoCApp.exe+1F8F0E8]
// ---------- DONE INJECTING  ----------
"EoCApp.exe"+16AD5BE: 33 D2                          -  xor edx,edx
"EoCApp.exe"+16AD5C0: 48 8B 0D F9 B6 87 00           -  mov rcx,[EoCApp.exe+1F28CC0]
"EoCApp.exe"+16AD5C7: 0F 57 C9                       -  xorps xmm1,xmm1
"EoCApp.exe"+16AD5CA: 4C 8B 88 E0 02 00 00           -  mov r9,[rax+000002E0]
"EoCApp.exe"+16AD5D1: 48 8B C1                       -  mov rax,rcx
"EoCApp.exe"+16AD5D4: 45 8B 01                       -  mov r8d,[r9]
"EoCApp.exe"+16AD5D7: 49 F7 F0                       -  div r8
"EoCApp.exe"+16AD5DA: 49 8B 41 08                    -  mov rax,[r9+08]
"EoCApp.exe"+16AD5DE: 4C 8B 04 D0                    -  mov r8,[rax+rdx*8]
"EoCApp.exe"+16AD5E2: 4D 85 C0                       -  test r8,r8
}
</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>4037</ID>
      <Description>"Print Global Variables"</Description>
      <LastState/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
{ old aobscanmodule
aobscanmodule(globals,EoCApp.exe,83 FB ?? 75 ?? 48 8B ?? ?? ?? ?? ?? 33 D2)

old code not sure how to fix
if success then
  globals = getAddress("globals") + 23
  globals = readInteger(globals) + globals + 20
end
EoCApp.exe+1C91227 - mov rax,[EoCApp.exe+29E0798]
EoCApp.exe+1C91231 - mov rcx,[EoCApp.exe+2969208]


}
{$lua}
if syntaxcheck then return end
local success = autoAssemble([[
aobscanmodule(globals,EoCApp.exe,83 FB ?? 77 ?? 48 B9 ?? ?? ?? ?? ?? ?? ?? ?? 48 0F A3 D9 73 ?? 48 8B ?? ?? ?? ?? ?? 0F 57 C9)
registersymbol(globals)
]])
local globals = "EoCApp.exe+29E0798"
local variables = readPointer(globals)
variables = readPointer(variables + 0x2E0)
local size = readInteger(variables) - 1
variables = readPointer(variables + 0x8)
for i = 0, size do
  local variable = readPointer(variables + i * 8)
  repeat
    local name = readString(readPointer(variable + 0x8))
    local address = variable + 0x10
    local value = readFloat(address)
    local result = string.format("%012X %s (%0.3f)", address, name, value)
    print(result)
    variable = readPointer(variable)
  until variable == 0
end
assert(false)
{$asm}
[DISABLE]
{
// ORIGINAL CODE - INJECTION POINT: "EoCApp.exe"+16AD5B7

"EoCApp.exe"+16AD592: FF 15 40 6D 2D 00              -  call qword ptr [EoCApp.exe+19842D8]
"EoCApp.exe"+16AD598: F3 0F 2C C0                    -  cvttss2si eax,xmm0
"EoCApp.exe"+16AD59C: 48 83 C4 20                    -  add rsp,20
"EoCApp.exe"+16AD5A0: 5B                             -  pop rbx
"EoCApp.exe"+16AD5A1: C3                             -  ret
"EoCApp.exe"+16AD5A2: 83 FB 22                       -  cmp ebx,22
"EoCApp.exe"+16AD5A5: 77 50                          -  ja EoCApp.exe+16AD5F7
"EoCApp.exe"+16AD5A7: 48 B9 50 00 00 00 04 00 00 00  -  mov rcx,0000000400000050
"EoCApp.exe"+16AD5B1: 48 0F A3 D9                    -  bt rcx,rbx
"EoCApp.exe"+16AD5B5: 73 40                          -  jae EoCApp.exe+16AD5F7
// ---------- INJECTING HERE ----------
"EoCApp.exe"+16AD5B7: 48 8B 05 2A 1B 8E 00           -  mov rax,[EoCApp.exe+1F8F0E8]
// ---------- DONE INJECTING  ----------
"EoCApp.exe"+16AD5BE: 33 D2                          -  xor edx,edx
"EoCApp.exe"+16AD5C0: 48 8B 0D F9 B6 87 00           -  mov rcx,[EoCApp.exe+1F28CC0]
"EoCApp.exe"+16AD5C7: 0F 57 C9                       -  xorps xmm1,xmm1
"EoCApp.exe"+16AD5CA: 4C 8B 88 E0 02 00 00           -  mov r9,[rax+000002E0]
"EoCApp.exe"+16AD5D1: 48 8B C1                       -  mov rax,rcx
"EoCApp.exe"+16AD5D4: 45 8B 01                       -  mov r8d,[r9]
"EoCApp.exe"+16AD5D7: 49 F7 F0                       -  div r8
"EoCApp.exe"+16AD5DA: 49 8B 41 08                    -  mov rax,[r9+08]
"EoCApp.exe"+16AD5DE: 4C 8B 04 D0                    -  mov r8,[rax+rdx*8]
"EoCApp.exe"+16AD5E2: 4D 85 C0                       -  test r8,r8
}
</AssemblerScript>
    </CheatEntry>
  </CheatEntries>
</CheatTable>

**Note**: This was based off of axuzawan's back in April. Just now seeing that Cowtow released an updated table, so I'll check that out.

waduk
Expert Cheater
Expert Cheater
Posts: 65
Joined: Wed Mar 08, 2017 12:03 pm
Reputation: 4

Re: Divinity Original Sin 2 Definitive Edition (Steam)

Post by waduk »

@everyone :
The "Selected Character" option on the 1st page from DrummerIX still works.
It's helpful if you use more than 4 character (from mod), the latest table by Cowtow only support 4 character.

Thankfully, all we have to do is copy paste the selected character script from DriumerIX to Cowtow table
Thank you everyone ! :)

Post Reply

Who is online

Users browsing this forum: Google [Bot], Google Adsense [Bot], HylianZ, Oridjinn