Death's Gambit: Afterlife
To anyone who still cares about this game, new huge update was released. I have tinkered around and found a place to stick an Essence gain from enemies killed multiplier. This works on today's small update, 1.0.3.
Code: Select all
<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
<CheatEntries>
<CheatEntry>
<ID>9</ID>
<Description>"Essence Gain"</Description>
<LastState/>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>{ Game : deathsgambit397.exe
Version:
Date : 2021-10-02
Author : alex
This script does blah blah blah
}
[ENABLE]
//aobscanmodule(INJECT2,deathsgambit397.exe,FF 50 08 89 46 08 68 ?? ?? ?? ?? E8 B9 F8 71 03) // should be unique
aobscanmodule(INJECTEXP,deathsgambit397.exe,FF 50 08 89 46 08 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 83 C4 04 50 E8 ?? ?? ?? ?? 83 C4 04 8D 8E 80 00 00 00 FF 76 08 E8) // should be unique
//deathsgambit397.exe+A485342: E8 B9 F8 71 03 - call deathsgambit397.exe+DBA3190
//deathsgambit397.exe+A485347: 83 C4 04 - add esp,04
alloc(newmem,$1000)
registersymbol(expMult)
label(expCode)
label(expReturn)
label(expMult)
newmem:
expCode:
call dword ptr [eax+08]
movsd xmm6,xmm0
movsd xmm0,[eax]
mulsd xmm0,[expMult]
movsd [eax],xmm0
movsd xmm0,xmm6
mov [esi+08],eax
jmp expReturn
expMult:
dq (double)2
INJECTEXP:
jmp newmem
nop
expReturn:
registersymbol(INJECTEXP)
[DISABLE]
INJECTEXP:
db FF 50 08 89 46 08
unregistersymbol(INJECTEXP)
unregistersymbol(expMult)
dealloc(newmem)
{
// OLD VERSION !!! ORIGINAL CODE - INJECTION POINT: deathsgambit397.exe+A485337
deathsgambit397.exe+A48530E: 50 - push eax
deathsgambit397.exe+A48530F: 68 00 00 00 80 - push 80000000
deathsgambit397.exe+A485314: 68 D6 93 01 00 - push 000193D6
deathsgambit397.exe+A485319: 68 CB 18 00 00 - push 000018CB
deathsgambit397.exe+A48531E: E8 CD E5 71 03 - call deathsgambit397.exe+DBA38F0
deathsgambit397.exe+A485323: 83 C4 10 - add esp,10
deathsgambit397.exe+A485326: 8B 4D 08 - mov ecx,[ebp+08]
deathsgambit397.exe+A485329: C7 46 48 1B 00 00 00 - mov [esi+48],0000001B
deathsgambit397.exe+A485330: 8B 01 - mov eax,[ecx]
deathsgambit397.exe+A485332: 68 BE 93 01 00 - push 000193BE
// ---------- INJECTING HERE ----------
deathsgambit397.exe+A485337: FF 50 08 - call dword ptr [eax+08]
// ---------- DONE INJECTING ----------
deathsgambit397.exe+A48533A: 89 46 08 - mov [esi+08],eax
deathsgambit397.exe+A48533D: 68 CB 18 00 00 - push 000018CB
deathsgambit397.exe+A485342: E8 49 DE 71 03 - call deathsgambit397.exe+DBA3190
deathsgambit397.exe+A485347: 83 C4 04 - add esp,04
deathsgambit397.exe+A48534A: 50 - push eax
deathsgambit397.exe+A48534B: E8 B0 D9 70 03 - call deathsgambit397.exe+DB92D00
deathsgambit397.exe+A485350: 83 C4 04 - add esp,04
deathsgambit397.exe+A485353: 8D 8E 80 00 00 00 - lea ecx,[esi+00000080]
deathsgambit397.exe+A485359: FF 76 08 - push [esi+08]
deathsgambit397.exe+A48535C: E8 1F 2C E7 F5 - call deathsgambit397.exe+2F7F80
}
</AssemblerScript>
<CheatEntries>
<CheatEntry>
<ID>6</ID>
<Description>"Multiplier"</Description>
<ShowAsSigned>0</ShowAsSigned>
<VariableType>Double</VariableType>
<Address>expMult</Address>
</CheatEntry>
</CheatEntries>
</CheatEntry>
</CheatEntries>
</CheatTable>
Just paste this into an open Cheat Engine.
Note that I have no idea what I'm doing or if it's the best spot for the injection. Debugging and tracing this piece of Game Engine mess is a chore. And it will _probably_ break in an update or two. So much random bullshit is inserted into each update, ugh.
Anyway, I'm about done with the game, if the cheat breaks it breaks. I probably won't go back to it in a while, sorry.
Enjoy!
Note 2: Created and tested extensively on an Intel processor with Steam version. No clue if what I'm doing differs for AMD. I've seen some incompatible injections for some games, I'm a total noob when it comes to ASM so can't really say if it works for AMD and/or other than Steam.