You're welcome! I'm glad helping to update, tweak and create options has been useful to so many so far.
_____Minimap
The minimap reveal option works somewhat decently most of the time for me, but it seems to be hit-or-miss with revealing all of the map or only parts of it (or losing my existing exploration and resetting it to unexplored).
I think the option might work better if it is activated prior to loading into an area rather than toggling it on and off at times while already in an area. It also doesn't reveal underground areas at all for that I've tested the option on.
I'll look closer at the option though, just in case it isn't actually working as proper and full as it could/should.
_____Crucible Stuff
Those offsets you supplied worked perfectly in 1.2.0.3 x64 when using the run speed pointer as the base. If anyone wants to continue using the runspeed pointer with those offsets, they'll work fine.
However, I backtraced and got the main addresses for controlling crucible stuff, like "Game.GAME::PlayStats::GetSurvivalScore" and I made a new standalone option using that as the base with these pointers for controlling crucible stuff:
- Crucible Score
- Crucible Score Multiplier (with a dropdown for selecting x1 - x10)
- Crucible Wave
- Crucible Tributes
- Crucible Bonus Timer (displays in milliseconds, so 1 second is 1000)
The bonus timer can be locked to freeze it, but my "Crucible / Shattered Realm - Timer Does Not Decrease" option also works well for keeping the timer from decreasing.
I haven't hopped into Shattered Realm yet to do a "Shattered Realm Control" option just yet. I'll try to get to that in a while to see what other options/pointer control can be made for it.
Let me know if this works well enough for you or if it is lacking some aspects of control that should be added, like controlling High Score/Restarts stats stuff.
Crucible Control (Pointers) 1.2.0.3 x64
Code: Select all
<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
<CheatEntries>
<CheatEntry>
<ID>136176</ID>
<Description>"Crucible Control"</Description>
<Options moAllowManualCollapseAndExpand="1"/>
<Color>FFFFFF</Color>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>//Grim Dawn 1.2.0.3
[ENABLE]
//Game.GAME::PlayStats::GetSurvivalScore
aobscanregion(crucibleControl,Game.GAME::PlayStats::GetSurvivalScore,Game.GAME::PlayStats::GetSurvivalScore+F,8B)
alloc(newmem,$1000,crucibleControl)
alloc(cruControl_ptr,8)
registersymbol(cruControl_ptr)
label(code)
label(return)
newmem:
mov [cruControl_ptr],rcx
mov eax,[rcx+00000150]
code:
mov eax,[rcx+00000150]
jmp return
crucibleControl:
jmp newmem
nop
return:
registersymbol(crucibleControl)
[DISABLE]
crucibleControl:
db 8B 81 50 01 00 00
unregistersymbol(crucibleControl)
unregistersymbol(cruControl_ptr)
dealloc(cruControl_ptr)
dealloc(newmem)
{
// ORIGINAL CODE - INJECTION POINT: Game.GAME::PlayStats::GetSurvivalScore
Game.GAME::PlayStats::GetSurvivalWaveTier+6: C3 - ret
Game.GAME::PlayStats::GetSurvivalWaveTier+7: CC - int 3
Game.GAME::PlayStats::GetSurvivalWaveTier+8: CC - int 3
Game.GAME::PlayStats::GetSurvivalWaveTier+9: CC - int 3
Game.GAME::PlayStats::GetSurvivalWaveTier+A: CC - int 3
Game.GAME::PlayStats::GetSurvivalWaveTier+B: CC - int 3
Game.GAME::PlayStats::GetSurvivalWaveTier+C: CC - int 3
Game.GAME::PlayStats::GetSurvivalWaveTier+D: CC - int 3
Game.GAME::PlayStats::GetSurvivalWaveTier+E: CC - int 3
Game.GAME::PlayStats::GetSurvivalWaveTier+F: CC - int 3
// ---------- INJECTING HERE ----------
Game.GAME::PlayStats::GetSurvivalScore: 8B 81 50 01 00 00 - mov eax,[rcx+00000150]
// ---------- DONE INJECTING ----------
Game.GAME::PlayStats::GetSurvivalScore+6: C3 - ret
Game.GAME::PlayStats::GetSurvivalScore+7: CC - int 3
Game.GAME::PlayStats::GetSurvivalScore+8: CC - int 3
Game.GAME::PlayStats::GetSurvivalScore+9: CC - int 3
Game.GAME::PlayStats::GetSurvivalScore+A: CC - int 3
Game.GAME::PlayStats::GetSurvivalScore+B: CC - int 3
Game.GAME::PlayStats::GetSurvivalScore+C: CC - int 3
Game.GAME::PlayStats::GetSurvivalScore+D: CC - int 3
Game.GAME::PlayStats::GetSurvivalScore+E: CC - int 3
Game.GAME::PlayStats::GetSurvivalScore+F: CC - int 3
}
</AssemblerScript>
<CheatEntries>
<CheatEntry>
<ID>136177</ID>
<Description>"Crucible Score"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>80FF80</Color>
<VariableType>4 Bytes</VariableType>
<Address>[cruControl_ptr]+150</Address>
</CheatEntry>
<CheatEntry>
<ID>136178</ID>
<Description>"Crucible Score Multiplier"</Description>
<Options moAllowManualCollapseAndExpand="1"/>
<DropDownList ReadOnly="1" DescriptionOnly="1" DisplayValueAsItem="1">1:x1
2:x2
3:x3
4:x4
5:x5
6:x6
7:x7
8:x8
9:x9
10:x10
</DropDownList>
<ShowAsSigned>0</ShowAsSigned>
<Color>80FF80</Color>
<VariableType>Byte</VariableType>
<Address>[cruControl_ptr]+158</Address>
<CheatEntries>
<CheatEntry>
<ID>136183</ID>
<Description>"NOTE: Dropdown select x1 to x10"</Description>
<Color>80FFFF</Color>
<GroupHeader>1</GroupHeader>
</CheatEntry>
</CheatEntries>
</CheatEntry>
<CheatEntry>
<ID>136179</ID>
<Description>"Crucible Wave"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>80FF80</Color>
<VariableType>Byte</VariableType>
<Address>[cruControl_ptr]+148</Address>
</CheatEntry>
<CheatEntry>
<ID>136180</ID>
<Description>"Crucible Tributes"</Description>
<ShowAsSigned>0</ShowAsSigned>
<Color>80FF80</Color>
<VariableType>Byte</VariableType>
<Address>[cruControl_ptr]-C8</Address>
</CheatEntry>
<CheatEntry>
<ID>136181</ID>
<Description>"Crucible Bonus Timer"</Description>
<Options moAllowManualCollapseAndExpand="1"/>
<ShowAsSigned>0</ShowAsSigned>
<Color>80FF80</Color>
<VariableType>4 Bytes</VariableType>
<Address>[cruControl_ptr]+16C</Address>
<CheatEntries>
<CheatEntry>
<ID>136182</ID>
<Description>"NOTE: In milliseconds (1 second is 1000)"</Description>
<Color>80FFFF</Color>
<GroupHeader>1</GroupHeader>
</CheatEntry>
</CheatEntries>
</CheatEntry>
</CheatEntries>
</CheatEntry>
</CheatEntries>
</CheatTable>
EDIT: Adding updated Shattered Realm: Instant Clear Floor (on kill) option:
As usual, complete option - copy code and paste (CTRL+V) into cheat table.
Shattered Realm: Instant Clear Floor (on kill) 1.2.0.3 x64
Code: Select all
<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
<CheatEntries>
<CheatEntry>
<ID>136209</ID>
<Description>"Shattered Realm: Instant Clear Floor (on kill)"</Description>
<Color>FFFFFF</Color>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>//Grim Dawn 1.2.0.3 Re-wrote
[ENABLE]
//Game.GAME::EndlessDungeon_Generator::IncrementProgress+D6
aobscanregion(instantClearSR,Game.GAME::EndlessDungeon_Generator::IncrementProgress,Game.GAME::EndlessDungeon_Generator::IncrementProgress+22F,0F82)
alloc(newmem,$1000,instantClearSR)
label(code)
label(return)
newmem:
// jb Game.GAME::EndlessDungeon_Generator::IncrementProgress+1F2
jmp return
code:
jb Game.GAME::EndlessDungeon_Generator::IncrementProgress+1F2
jmp return
instantClearSR:
jmp newmem
nop
return:
registersymbol(instantClearSR)
[DISABLE]
instantClearSR:
db 0F 82 16 01 00 00
// 0F 82 16 01 00 00
unregistersymbol(instantClearSR)
dealloc(newmem)
{
// ORIGINAL CODE - INJECTION POINT: Game.GAME::EndlessDungeon_Generator::IncrementProgress+D6
Game.GAME::EndlessDungeon_Generator::IncrementProgress+A8: 0F 85 61 01 00 00 - jne Game.GAME::EndlessDungeon_Generator::IncrementProgress+20F
Game.GAME::EndlessDungeon_Generator::IncrementProgress+AE: 8B 8F F4 00 00 00 - mov ecx,[rdi+000000F4]
Game.GAME::EndlessDungeon_Generator::IncrementProgress+B4: 8B 87 F8 00 00 00 - mov eax,[rdi+000000F8]
Game.GAME::EndlessDungeon_Generator::IncrementProgress+BA: 3B C8 - cmp ecx,eax
Game.GAME::EndlessDungeon_Generator::IncrementProgress+BC: 0F 83 4D 01 00 00 - jae Game.GAME::EndlessDungeon_Generator::IncrementProgress+20F
Game.GAME::EndlessDungeon_Generator::IncrementProgress+C2: 84 DB - test bl,bl
Game.GAME::EndlessDungeon_Generator::IncrementProgress+C4: 44 8D 04 29 - lea r8d,[rcx+rbp]
Game.GAME::EndlessDungeon_Generator::IncrementProgress+C8: 44 0F 45 C0 - cmovne r8d,eax
Game.GAME::EndlessDungeon_Generator::IncrementProgress+CC: 44 89 87 F4 00 00 00 - mov [rdi+000000F4],r8d
Game.GAME::EndlessDungeon_Generator::IncrementProgress+D3: 44 3B C0 - cmp r8d,eax
// ---------- INJECTING HERE ----------
Game.GAME::EndlessDungeon_Generator::IncrementProgress+D6: 0F 82 16 01 00 00 - jb Game.GAME::EndlessDungeon_Generator::IncrementProgress+1F2
// ---------- DONE INJECTING ----------
Game.GAME::EndlessDungeon_Generator::IncrementProgress+DC: 33 C9 - xor ecx,ecx
Game.GAME::EndlessDungeon_Generator::IncrementProgress+DE: 45 85 C0 - test r8d,r8d
Game.GAME::EndlessDungeon_Generator::IncrementProgress+E1: 41 0F 45 C8 - cmovne ecx,r8d
Game.GAME::EndlessDungeon_Generator::IncrementProgress+E5: 3B C8 - cmp ecx,eax
Game.GAME::EndlessDungeon_Generator::IncrementProgress+E7: 0F 42 C1 - cmovb eax,ecx
Game.GAME::EndlessDungeon_Generator::IncrementProgress+EA: 89 87 F4 00 00 00 - mov [rdi+000000F4],eax
Game.GAME::EndlessDungeon_Generator::IncrementProgress+F0: 8B 96 CC 00 00 00 - mov edx,[rsi+000000CC]
Game.GAME::EndlessDungeon_Generator::IncrementProgress+F6: C6 86 9D 04 00 00 00 - mov byte ptr [rsi+0000049D],00
Game.GAME::EndlessDungeon_Generator::IncrementProgress+FD: FF C2 - inc edx
Game.GAME::EndlessDungeon_Generator::IncrementProgress+FF: 48 8B 8E C0 01 00 00 - mov rcx,[rsi+000001C0]
}
</AssemblerScript>
</CheatEntry>
</CheatEntries>
</CheatTable>
EDIT: Adding updated Get All Devotion Points 1.2.0.3 x64 option.
Current points: 8B 81 DC 16 00 00 Game.GAME::Character::GetTotalDevotionPoints
Max points: 8B 81 38 16 00 00 Game.GAME::Character::GetMaxDevotionPoints
Now properly changes second byte (+2) in address of Current Points from DC to 38 instead of E0, so the address of Current Points now matches address of Max Points.
Get All Devotion Points 1.2.0.3 x64
Code: Select all
<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
<CheatEntries>
<CheatEntry>
<ID>22</ID>
<Description>"Get All Devotion Points"</Description>
<Color>FFFFFF</Color>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>//Game: Grim Dawn + All DLC's
//Version: v1.2.0.3 updated
//000013DC changed to 000016DC
//E0 changed to 38
//Current points: 8B 81 DC 16 00 00 Game.GAME::Character::GetTotalDevotionPoints
//Max points: 8B 81 38 16 00 00 Game.GAME::Character::GetMaxDevotionPoints
//Changes second byte (+2) in address of current points from DC to 38, so the address of current now matches address of max points
[ENABLE]
Game.GAME::Character::GetTotalDevotionPoints+2:
db 38
//8B 81 38 16 00 00
//Game.GAME::Character::GetMaxDevotionPoints
//mov eax,[rcx+00001638]
[DISABLE]
Game.GAME::Character::GetTotalDevotionPoints+2:
db DC
//8B 81 DC 16 00 00
//Game.GAME::Character::GetTotalDevotionPoints
//mov eax,[rcx+000016DC]
</AssemblerScript>
</CheatEntry>
</CheatEntries>
</CheatTable>
How to use this cheat table?
- Install Cheat Engine
- Double-click the .CT file in order to open it.
- Click the PC icon in Cheat Engine in order to select the game process.
- Keep the list.
- Activate the trainer options by checking boxes or setting values from 0 to 1