Grim Dawn + All DLC's

Upload your cheat tables here (No requests)
StinVec
Table Makers
Table Makers
Posts: 103
Joined: Sun Jun 25, 2017 7:02 am
Reputation: 131

Re: Grim Dawn + All DLC's

Post by StinVec »

I have been working between 1.1.9.8 and 1.2.0.3 to try to make progress on a few new options. I had made a little progress on some of them, but I discovered that I had at some point mistakenly saved my WIP cheat table over my full 1.2.0.3 cheat table that I use.

I loaded my backup of my full cheat table and found that I had been forgetting to update it and the backup was very old. I spent last night reassembling the whole 1.2.0.3 table again.

As many of the options that have been posted have gone through several iterations to expand them and to fix issues in them, and as I don't believe I'll be completing any new options very soon that I've been working on, I'll attach the re-created table that I am currently using to this post if anyone might find it useful.

Additional options I manage to complete will again be posted as full option codes that can be copied and pasted into this table or other existing tables.

Note:
This table does not include all options that exist and work with the current 1.2.0.3 x64 game version; these are only the options that I've found useful for my playstyle or for use while working on creating new options.

Add, remove, rearrange options and notes as you wish.

Here is an image on several image hosts of all of the options currently included in this attached table (excluding changes and option additions made in post updates):
  • [Link]
    [Link]
    [Link]
_____

EDIT:
Regarding the Instant Level 100 (upon gaining XP from a kill) option:
I have a note on this option in the table saying you need to:
1) Enable and kill an enemy to get maxed XP, then
2) Disable the option and the next kill triggers level 100.

However, this only happens if you try to go from a fresh level 1 character right to level 100 from your first kill; going from other levels to level 100 triggers level 100 right away on the first kill and doesn't require the extra step of disabling the option. Something strange with a fresh level 1 character and required XP calculation to hit level 100 I think.

This is also how this option has always worked I think. Might look into making an Instant Max Level option in a different way sometime to see if I can find a way that doesn't have any issues like this.

_____

EDIT: Updated attached table to Grim Dawn 1.2.0.3 (x64) - 2024-1-25:
Changes
  • Corrected XP Multiplier option - The input field was mistakenly set as "float" display instead of "4 byte", which was resulting in the value displayed not being "0, 1, 2, etc." and was instead a huge value (this resulted in making you instantly being made level 100 upon a kill if the option was enabled as the gained XP was multiplied by the huge number).
  • Added Character Light Radius option from my post that followed this one.
_____

EDIT: Updated attached table to Grim Dawn 1.2.0.3 (x64) - 2024-2-02:
Changes
Slightly adjusted names, notes and positions of a few options.
_____

Removed just a couple of the letter hotkeys that I had configured on some of the options for my personal preference:
  • getConsoleToggle (had it as V)
  • Super Run Speed (had them as B, N and M)
Hotkeys I had set for Auto-latch/compact (CTRL+F12), Activate All (CTRL+F11) and Mastery Control (F10 and F9) still remain.
_____

Updated No Skill Cooldown V2b to V2c
  • Changed offset check for the Runeguard/Stone Ward item skill exclusion to no longer also catch the Medal teleport runes/glyphs; Stormclap, Arcane Insights, Ultos' Arrival, etc. (these skills once again have no cooldown)
_____

Updated both Player Info Pointers option versions:

Re-added pointers:
  • Level - Current (Alters number directly and affects meeting gear requirement and enemy-scaling in zones. Increasing your level does not grant skill points that would have been earned by leveling normally or the XP required to reach that level - alter XP manually.)
  • Level - Max (Increases level cap to continue earning XP and levels beyond 100. I recommend to not go above 200. Enemies also continue to scale to levels above 100.)
  • Run Speed (Changes to match the value set by 'Super Run Speed' option if that is enabled, or if that option is enabled and you change the pointer value, the option value would get changed to match)
Removed these non-editable/useless pointers:
  • Physique - Base (non-editable)
  • Cunning - Base (non-editable)
  • Spirit - Base (non-editable)
_____

Updated Set Pet Limit to 12 for all Pets option:
  • Re-titled as Set Pet Limit (For Each Pet Type)
  • Default value for max of each type is #12 and can be altered in code
  • Setting to #0 makes unlimited of each pet type (Careful, too many pets can crash you)
  • Includes value field for manual value entry for max (hotkey value set, or dropdown select Unlimited, 1, 2, 4, 8, 10, 12, 16, 20)
The option functions just as it had previously with changing the max number for each type of pet and not max of total summoned pets; i.e. setting it to 12 would mean max of 12 skeletons, max of 12 Blight Fiends, etc.

Previously, altering the value had to be done in the code to change the max limit of each pet. This limited on-the-fly changing. I re-wrote it to now allow for choosing a user-configured max on the fly via value entry, dropdown select or hotkey.

Default value is #12 of each summon type, but this default value can be altered in the code.

Note:
If you decrease the value to less than the number of pets of a type you have summoned, summoning more will instead kill excess summons above the value to leave you with the lower number. This is useful if you have too many pets out so you can kill off most of them.

Also, some summons have 'On Death' damaging skills.
Example:
If you have 12 Blight Fiends and you drop the max value down from 12 to 4, summoning another Blight Fiend will kill off 8 of them and leave you with only 4 alive. The deaths of those 8 Blight Fiends will create toxic AoE pools if you have that ability active on them.

Also as noted above:
Setting to 0 makes max of each type unlimited. If you use multiple pet types and summon too many of different types, you could end up with too many on-screen, which could result in lagging and/or crashing your game from too many pets. Be mindful of how many total summons you have if using a high or unlimited max.
_____

EDIT: Updated attached table to Grim Dawn 1.2.0.3 (x64) - 2024-2-04:
Changes
  • Added (censored author's name)'s alternate to the Monsters Can't Move option called Undetected from his post here on page 17 (surprisingly, it still works on 1.2.0.3 without needing updated): viewtopic.php?p=281698#p281698 - monsters/pets still move around fine, but enemies do not register you or pets as foes to attack. However, pets also don't register enemies as foes to attack, but at least pets don't get frozen in place with this option.
  • Added alternate version of the Character Light Radius option for GoG game users. Different game version bytes kindly provided by vfg36276.
And an archive.org backup of the updated attached table:
  • [Link]


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
Attachments
Grim Dawn v1.2.0.3 (x64) 2024-2-04.ct
Grim Dawn 1.2.0.3 (x64) 2024-2-04 (various option authors)
- Added "Undetected" option (author name censored)
- Added GoG version Character Light Radius option
(thank you, vfg36276!)
(241.01 KiB) Downloaded 447 times
Last edited by StinVec on Sun Feb 04, 2024 3:13 pm, edited 13 times in total.

StinVec
Table Makers
Table Makers
Posts: 103
Joined: Sun Jun 25, 2017 7:02 am
Reputation: 131

Re: Grim Dawn + All DLC's

Post by StinVec »

Adding a Player Light Emission Radius option.

Normal is 0 and you can specify a percentage value to use:
Positive values are percent more than normal (20 would be 20% more than normal)
Negative values are percent less than normal (-20 would be 20% less than normal)

You can even disable character ambient light emission entirely if you would like, which some might like.

Manual value entry, or dropdown selection options include:
  • -100 = No Light Emission
  • -50 = Half of Normal
  • 0 = Normal / Default
  • 50 = 50% More Than Normal
  • 100 = Double Normal
Disabling the option restores the light radius you would normally have.

EDIT:
  • Added alternate version for GoG game users. Different game version bytes kindly provided by vfg36276.
This is a full option. Select the code and copy it, then paste it into your cheat table to add the option.
Character Light Radius - 1.2.0.3 x64 (+GoG Alt Version)

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
  <CheatEntries>
    <CheatEntry>
      <ID>136626</ID>
      <Description>"Character Light Radius"</Description>
      <Color>FFFFFF</Color>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>//Grim Dawn 1.2.0.3 x64

define(address,Game.GAME::Player::UpdateSelf+6E2)
define(bytes,E8 69 97 D8 FF)

[ENABLE]
assert(address,bytes)
alloc(newmem,$1000,Game.GAME::Player::UpdateSelf+6E2)

alloc(_playerLight,8)
registersymbol(_playerLight)

label(code)
label(return)

newmem:
  movss xmm0,[_playerLight] //Instead of getting the current radius value above normal (0) to increase, use player-defined percentage
  jmp return

code:
  call Game.GAME::CharAttributeAccumulator::GetValue
  jmp return

address:
  jmp newmem

return:

[DISABLE]
address:
  db bytes
  // E8 69 97 D8 FF

unregistersymbol(_playerLight)
dealloc(newmem)
dealloc(_playerLight)

{
// ORIGINAL CODE - INJECTION POINT: Game.GAME::Player::UpdateSelf+6E2

Game.GAME::Player::UpdateSelf+6B4: BA 06 00 00 00           - mov edx,00000006
Game.GAME::Player::UpdateSelf+6B9: FF 15 79 36 1E 00        - call qword ptr [Game.dll+4EFB88]
Game.GAME::Player::UpdateSelf+6BF: 41 8B D7                 - mov edx,r15d
Game.GAME::Player::UpdateSelf+6C2: B9 04 00 00 00           - mov ecx,00000004
Game.GAME::Player::UpdateSelf+6C7: 83 F8 03                 - cmp eax,03
Game.GAME::Player::UpdateSelf+6CA: 0F 44 D1                 - cmove edx,ecx
Game.GAME::Player::UpdateSelf+6CD: 48 8B CB                 - mov rcx,rbx
Game.GAME::Player::UpdateSelf+6D0: FF 15 32 4A 1E 00        - call qword ptr [Game.dll+4F0F58]
Game.GAME::Player::UpdateSelf+6D6: 48 8D 8F 48 0E 00 00     - lea rcx,[rdi+00000E48]
Game.GAME::Player::UpdateSelf+6DD: BA 38 00 00 00           - mov edx,00000038
// ---------- INJECTING HERE ----------
Game.GAME::Player::UpdateSelf+6E2: E8 69 97 D8 FF           - call Game.GAME::CharAttributeAccumulator::GetValue
// ---------- DONE INJECTING  ----------
Game.GAME::Player::UpdateSelf+6E7: F3 0F 59 05 E5 CE 32 00  - mulss xmm0,[Game.GAME::WeaponArmor_Offhand::`vftable'+EDC]
Game.GAME::Player::UpdateSelf+6EF: F3 0F 58 05 65 CF 32 00  - addss xmm0,[Game.GAME::WeaponArmor_Offhand::`vftable'+F64]
Game.GAME::Player::UpdateSelf+6F7: F3 0F 59 87 84 1D 00 00  - mulss xmm0,[rdi+00001D84]
Game.GAME::Player::UpdateSelf+6FF: 0F 28 C8                 - movaps xmm1,xmm0
Game.GAME::Player::UpdateSelf+702: 48 8B CB                 - mov rcx,rbx
Game.GAME::Player::UpdateSelf+705: FF 15 3D 3C 1E 00        - call qword ptr [Game.dll+4F0198]
Game.GAME::Player::UpdateSelf+70B: 45 32 E4                 - xor r12l,r12l
Game.GAME::Player::UpdateSelf+70E: 45 32 F6                 - xor r14l,r14l
Game.GAME::Player::UpdateSelf+711: 48 8B CF                 - mov rcx,rdi
Game.GAME::Player::UpdateSelf+714: FF 15 96 2F 1E 00        - call qword ptr [Game.dll+4EF500]
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>136627</ID>
          <Description>"Light Radius %"</Description>
          <DropDownList DescriptionOnly="1" DisplayValueAsItem="1">-100:None
-50:Half
0:Normal
50:+50%
100:+100%
</DropDownList>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>00FF00</Color>
          <VariableType>Float</VariableType>
          <Address>_playerLight</Address>
          <CheatEntries>
            <CheatEntry>
              <ID>136628</ID>
              <Description>"&gt;&gt;&gt; NOTES: Usage"</Description>
              <Options moHideChildren="1" moManualExpandCollapse="1" moAllowManualCollapseAndExpand="1"/>
              <Color>80FFFF</Color>
              <GroupHeader>1</GroupHeader>
              <CheatEntries>
                <CheatEntry>
                  <ID>136629</ID>
                  <Description>"Dropdown select value or enter manually"</Description>
                  <Color>80FFFF</Color>
                  <GroupHeader>1</GroupHeader>
                  <CheatEntries>
                    <CheatEntry>
                      <ID>136636</ID>
                      <Description>"Negative values are percent less than normal"</Description>
                      <Color>8080FF</Color>
                      <GroupHeader>1</GroupHeader>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>136637</ID>
                      <Description>"Positive values are percent more than normal"</Description>
                      <Color>80FF80</Color>
                      <GroupHeader>1</GroupHeader>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>136631</ID>
                      <Description>"-100 = No Light Emission"</Description>
                      <Color>80FFFF</Color>
                      <GroupHeader>1</GroupHeader>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>136632</ID>
                      <Description>"-50 = Half of Normal"</Description>
                      <Color>80FFFF</Color>
                      <GroupHeader>1</GroupHeader>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>136633</ID>
                      <Description>"0 = Normal / Default"</Description>
                      <Color>80FFFF</Color>
                      <GroupHeader>1</GroupHeader>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>136635</ID>
                      <Description>"50 = 50% More Than Normal"</Description>
                      <Color>80FFFF</Color>
                      <GroupHeader>1</GroupHeader>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>136634</ID>
                      <Description>"100 = Double Normal"</Description>
                      <Color>80FFFF</Color>
                      <GroupHeader>1</GroupHeader>
                    </CheatEntry>
                  </CheatEntries>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
            <CheatEntry>
              <ID>136973</ID>
              <Description>"Alternate - GoG Version"</Description>
              <Options moHideChildren="1" moManualExpandCollapse="1" moAllowManualCollapseAndExpand="1"/>
              <Color>FFFF80</Color>
              <GroupHeader>1</GroupHeader>
              <CheatEntries>
                <CheatEntry>
                  <ID>136962</ID>
                  <Description>"Character Light Radius (GOG version)"</Description>
                  <Color>FFFFFF</Color>
                  <VariableType>Auto Assembler Script</VariableType>
                  <AssemblerScript>//Grim Dawn 1.2.0.3 x64
//GoG game version bytes for the address provided by vfg36276

define(address,Game.GAME::Player::UpdateSelf+6E2)
define(bytes,E8 F9 AB D8 FF)

[ENABLE]
assert(address,bytes)
alloc(newmem,$1000,Game.GAME::Player::UpdateSelf+6E2)

alloc(_playerLight,8)
registersymbol(_playerLight)

label(code)
label(return)

newmem:
  movss xmm0,[_playerLight] //Instead of getting the current radius value above normal (0) to increase, use player-defined percentage
  jmp return

code:
  call Game.GAME::CharAttributeAccumulator::GetValue
  jmp return

address:
  jmp newmem

return:

[DISABLE]
address:
  db bytes
  // E8 F9 AB D8 FF

unregistersymbol(_playerLight)
dealloc(newmem)
dealloc(_playerLight)

{
// ORIGINAL CODE - INJECTION POINT: Game.GAME::Player::UpdateSelf+6E2

// ---------- INJECTING HERE ----------
Game.GAME::Player::UpdateSelf+6E2: E8 F9 AB D8 FF           - call Game.GAME::CharAttributeAccumulator::GetValue
// ---------- DONE INJECTING  ----------
}
</AssemblerScript>
                  <CheatEntries>
                    <CheatEntry>
                      <ID>136963</ID>
                      <Description>"Light Radius %"</Description>
                      <DropDownList DescriptionOnly="1" DisplayValueAsItem="1">-100:None
-50:Half
0:Normal
50:+50%
100:+100%
</DropDownList>
                      <ShowAsSigned>0</ShowAsSigned>
                      <Color>00FF00</Color>
                      <VariableType>Float</VariableType>
                      <Address>_playerLight</Address>
                      <CheatEntries>
                        <CheatEntry>
                          <ID>136964</ID>
                          <Description>"&gt;&gt;&gt; NOTES: Usage"</Description>
                          <Options moHideChildren="1" moManualExpandCollapse="1" moAllowManualCollapseAndExpand="1"/>
                          <Color>80FFFF</Color>
                          <GroupHeader>1</GroupHeader>
                          <CheatEntries>
                            <CheatEntry>
                              <ID>136965</ID>
                              <Description>"Dropdown select value or enter manually"</Description>
                              <Color>80FFFF</Color>
                              <GroupHeader>1</GroupHeader>
                              <CheatEntries>
                                <CheatEntry>
                                  <ID>136966</ID>
                                  <Description>"Negative values are percent less than normal"</Description>
                                  <Color>8080FF</Color>
                                  <GroupHeader>1</GroupHeader>
                                </CheatEntry>
                                <CheatEntry>
                                  <ID>136967</ID>
                                  <Description>"Positive values are percent more than normal"</Description>
                                  <Color>80FF80</Color>
                                  <GroupHeader>1</GroupHeader>
                                </CheatEntry>
                                <CheatEntry>
                                  <ID>136968</ID>
                                  <Description>"-100 = No Light Emission"</Description>
                                  <Color>80FFFF</Color>
                                  <GroupHeader>1</GroupHeader>
                                </CheatEntry>
                                <CheatEntry>
                                  <ID>136969</ID>
                                  <Description>"-50 = Half of Normal"</Description>
                                  <Color>80FFFF</Color>
                                  <GroupHeader>1</GroupHeader>
                                </CheatEntry>
                                <CheatEntry>
                                  <ID>136970</ID>
                                  <Description>"0 = Normal / Default"</Description>
                                  <Color>80FFFF</Color>
                                  <GroupHeader>1</GroupHeader>
                                </CheatEntry>
                                <CheatEntry>
                                  <ID>136971</ID>
                                  <Description>"50 = 50% More Than Normal"</Description>
                                  <Color>80FFFF</Color>
                                  <GroupHeader>1</GroupHeader>
                                </CheatEntry>
                                <CheatEntry>
                                  <ID>136972</ID>
                                  <Description>"100 = Double Normal"</Description>
                                  <Color>80FFFF</Color>
                                  <GroupHeader>1</GroupHeader>
                                </CheatEntry>
                              </CheatEntries>
                            </CheatEntry>
                          </CheatEntries>
                        </CheatEntry>
                      </CheatEntries>
                    </CheatEntry>
                  </CheatEntries>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
</CheatTable>
Last edited by StinVec on Sun Feb 04, 2024 2:53 pm, edited 1 time in total.

chakabetao
Noobzor
Noobzor
Posts: 5
Joined: Wed May 31, 2023 2:36 am
Reputation: 0

Re: Grim Dawn + All DLC's

Post by chakabetao »

Is there any trainer/cheat/table that increases drops and item rarity? Would this ''get maximum item stack'' option be for this?

IDDQD_2023
What is cheating?
What is cheating?
Posts: 3
Joined: Mon Apr 10, 2023 10:24 am
Reputation: 1

Re: Grim Dawn + All DLC's

Post by IDDQD_2023 »

chakabetao wrote:
Fri Jan 26, 2024 2:11 pm
Is there any trainer/cheat/table that increases drops and item rarity? Would this ''get maximum item stack'' option be for this?
Yes.
"Ctrl + Num 0 > Better Loot"
~~~~~~~~~~
LINK: [Link]

PICTURE (older version but funtion is there): Image

krmit
Expert Cheater
Expert Cheater
Posts: 411
Joined: Wed Apr 19, 2017 7:02 am
Reputation: 61

Re: Grim Dawn + All DLC's

Post by krmit »

@StinVec
Cannot activate "Player Light Emission Radius" option:
<<Error in line 7 (assert(Game.GAME::Player::UpdateSelf+6E2,E8 69 97 D8 FF)) :The bytes at Game.GAME::Player::UpdateSelf+6E2 are not what was expected>>

StinVec
Table Makers
Table Makers
Posts: 103
Joined: Sun Jun 25, 2017 7:02 am
Reputation: 131

Re: Grim Dawn + All DLC's

Post by StinVec »

krmit wrote:
Sun Jan 28, 2024 6:37 pm
@StinVec
Cannot activate "Player Light Emission Radius" option:
<<Error in line 7 (assert(Game.GAME::Player::UpdateSelf+6E2,E8 69 97 D8 FF)) :The bytes at Game.GAME::Player::UpdateSelf+6E2 are not what was expected>>
Hi. I just downloaded the attached 2024-1-25 table and loaded GD v1.2.0.3 x64.
I activated the option and it works properly. I deactivated the option and it correctly restored the code and could be reactivated again.

I also copied the code from the standalone post in case that is how you added the option to your table.
I pasted the code into the table and the code option works properly as well and could be disabled and re-enabled without issue.

Things that could cause that include:
  • Make sure you are using the current v1.2.0.3 game version. The bytes might be different in older game versions.
  • If using v1.2.0.3 already, also make sure that you are running the x64 version of the game. Trying to use the option on the 32-bit game version instead of 64-bit would likely have the bytes for that instruction being different.
  • If using v1.2.0.3 x64, but you are also using a trainer that includes a light radius option, that can interfere with this cheat option if it also alters these same bytes. If you enabled that option in the trainer first then it would alter these bytes and the normal bytes would no longer exist for this cheat table option to then alter.
  • Another possibility is that you had downloaded the attached table and are using it, but you had then also pasted the code for that option from the above post into it. However, since I made that code post, I have updated the attached table to include that option in the table. You could have a duplicate of the option in the table where one is already activated and trying to activate the other one gives that error as the other one has already altered those bytes. Check to see if you have two of the option in your table.

StinVec
Table Makers
Table Makers
Posts: 103
Joined: Sun Jun 25, 2017 7:02 am
Reputation: 131

Re: Grim Dawn + All DLC's

Post by StinVec »

Adding code in a separate post for another option I updated in the above table:
_____

Updated Set Pet Limit to 12 for all Pets option:
  • Re-titled as Set Pet Limit (For Each Pet Type)
  • Default value for max of each type is #12 and can be altered in code
  • Setting to #0 makes unlimited of each pet type (Careful, too many pets can crash you)
  • Includes value field for manual value entry for max (hotkey value set, or dropdown select Unlimited, 1, 2, 4, 8, 10, 12, 16, 20)
The option functions just as it had previously with changing the max number for each type of pet and not max of total summoned pets; i.e. setting it to 12 would mean max of 12 skeletons, max of 12 Blight Fiends, etc.

Previously, altering the value had to be done in the code to change the max limit of each pet. This limited on-the-fly changing. I re-wrote it to now allow for choosing a user-configured max on the fly via value entry, dropdown select or hotkey.

Default value is #12 of each summon type, but this default value can be altered in the code.

Note:
If you decrease the value to less than the number of pets of a type you have summoned, summoning more will instead kill excess summons above the value to leave you with the lower number. This is useful if you have too many pets out so you can kill off most of them.

Also, some summons have 'On Death' damaging skills.
Example:
If you have 12 Blight Fiends and you drop the max value down from 12 to 4, summoning another Blight Fiend will kill off 8 of them and leave you with only 4 alive. The deaths of those 8 Blight Fiends will create toxic AoE pools if you have that ability active on them.

Also as noted above:
Setting to 0 makes max of each type unlimited. If you use multiple pet types and summon too many of different types, you could end up with too many on-screen, which could result in lagging and/or crashing your game from too many pets. Be mindful of how many total summons you have if using a high or unlimited max.
Set Pet Limit (For Each Pet Type) - 1.2.0.3 x64

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
  <CheatEntries>
    <CheatEntry>
      <ID>134845</ID>
      <Description>"Set Pet Limit (For Each Pet Type)"</Description>
      <LastState/>
      <Color>FFFFFF</Color>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>//Grim Dawn 1.2.0.3 x64

define(address,Game.GAME::Skill::GetPetLimit+BE)
define(bytes,4C 8D 9C 24 F0 00 00 00)

[ENABLE]
alloc(_petMaxNum,$4)
_petMaxNum:
  dd #12 //Change number to set default option value
  registersymbol(_petMaxNum)

assert(address,bytes)
alloc(newmem,$1000,Game.GAME::Skill::GetPetLimit+BE)

label(code)
label(return)

newmem:
  mov rbx,[_petMaxNum]
  mov rax,[_petMaxNum]

code:
  lea r11,[rsp+000000F0]
  jmp return

address:
  jmp newmem
  nop 3

return:

[DISABLE]
address:
  db bytes
  // 4C 8D 9C 24 F0 00 00 00

unregistersymbol(_petMaxNum)
dealloc(newmem)
dealloc(_petMaxNum)

{
// ORIGINAL CODE - INJECTION POINT: Game.GAME::Skill::GetPetLimit+BE

Game.GAME::Skill::GetPetLimit+97: 74 23                    - je Game.GAME::Skill::GetPetLimit+BC
Game.GAME::Skill::GetPetLimit+99: 48 8B 55 B7              - mov rdx,[rbp-49]
Game.GAME::Skill::GetPetLimit+9D: E8 3E DC C7 FF           - call Game.GAME::ItemEquipment::GetRTTIClassInfo+10
Game.GAME::Skill::GetPetLimit+A2: 48 8B 55 BF              - mov rdx,[rbp-41]
Game.GAME::Skill::GetPetLimit+A6: 48 8B 4D AF              - mov rcx,[rbp-51]
Game.GAME::Skill::GetPetLimit+AA: 48 2B D1                 - sub rdx,rcx
Game.GAME::Skill::GetPetLimit+AD: 48 C1 FA 05              - sar rdx,05
Game.GAME::Skill::GetPetLimit+B1: 41 B8 20 00 00 00        - mov r8d,00000020
Game.GAME::Skill::GetPetLimit+B7: E8 F4 85 C6 FF           - call Game.GAME::AuraContainer::~AuraContainer+50
Game.GAME::Skill::GetPetLimit+BC: 8B C3                    - mov eax,ebx
// ---------- INJECTING HERE ----------
Game.GAME::Skill::GetPetLimit+BE: 4C 8D 9C 24 F0 00 00 00  - lea r11,[rsp+000000F0]
// ---------- DONE INJECTING  ----------
Game.GAME::Skill::GetPetLimit+C6: 49 8B 5B 10              - mov rbx,[r11+10]
Game.GAME::Skill::GetPetLimit+CA: 49 8B 7B 18              - mov rdi,[r11+18]
Game.GAME::Skill::GetPetLimit+CE: 49 8B E3                 - mov rsp,r11
Game.GAME::Skill::GetPetLimit+D1: 5D                       - pop rbp
Game.GAME::Skill::GetPetLimit+D2: C3                       - ret
Game.GAME::Skill::GetPetLimit+D3: CC                       - int 3
Game.GAME::Skill::GetPetLimit+D4: CC                       - int 3
Game.GAME::Skill::GetPetLimit+D5: CC                       - int 3
Game.GAME::Skill::GetPetLimit+D6: CC                       - int 3
Game.GAME::Skill::GetPetLimit+D7: CC                       - int 3
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>136948</ID>
          <Description>"Max Pets Per Type"</Description>
          <DropDownList DescriptionOnly="1" DisplayValueAsItem="1">0:UNLIMITED
1:1
2:2
4:4
8:8
10:10
12:12
16:16
20:20
</DropDownList>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>00FF00</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>_petMaxNum</Address>
          <CheatEntries>
            <CheatEntry>
              <ID>136949</ID>
              <Description>"&gt;&gt;&gt; NOTES: Usage"</Description>
              <Options moHideChildren="1" moManualExpandCollapse="1" moAllowManualCollapseAndExpand="1"/>
              <LastState Value="" RealAddress="00000000"/>
              <Color>80FFFF</Color>
              <GroupHeader>1</GroupHeader>
              <CheatEntries>
                <CheatEntry>
                  <ID>136957</ID>
                  <Description>"Value is max of EACH type of pet"</Description>
                  <LastState Value="" RealAddress="00000000"/>
                  <Color>80FFFF</Color>
                  <GroupHeader>1</GroupHeader>
                  <CheatEntries>
                    <CheatEntry>
                      <ID>136955</ID>
                      <Description>"0 = Unlimited of each type"</Description>
                      <LastState Value="" RealAddress="00000000"/>
                      <Color>80FFFF</Color>
                      <GroupHeader>1</GroupHeader>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>136956</ID>
                      <Description>"!!! Careful, too many pets can crash you !!!"</Description>
                      <LastState Value="" RealAddress="00000000"/>
                      <Color>0000FF</Color>
                      <GroupHeader>1</GroupHeader>
                    </CheatEntry>
                  </CheatEntries>
                </CheatEntry>
                <CheatEntry>
                  <ID>136950</ID>
                  <Description>"Dropdown select value or enter manually"</Description>
                  <LastState Value="" RealAddress="00000000"/>
                  <Color>80FFFF</Color>
                  <GroupHeader>1</GroupHeader>
                </CheatEntry>
                <CheatEntry>
                  <ID>136952</ID>
                  <Description>"Can change default value (#12) in code"</Description>
                  <LastState Value="" RealAddress="00000000"/>
                  <Color>80FFFF</Color>
                  <GroupHeader>1</GroupHeader>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
</CheatTable>

StinVec
Table Makers
Table Makers
Posts: 103
Joined: Sun Jun 25, 2017 7:02 am
Reputation: 131

Re: Grim Dawn + All DLC's

Post by StinVec »

Adding codes in a separate post for options I updated in the above table:
_____

Updated No Skill Cooldown V2b to V2c
  • Changed offset check for the Runeguard/Stone Ward item skill exclusion to no longer also catch the Medal teleport runes/glyphs; Stormclap, Arcane Insights, Ultos' Arrival, etc. (these skills once again have no cooldown)
No Skill Cooldown V2c - 1.2.0.3 x64

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
  <CheatEntries>
    <CheatEntry>
      <ID>136438</ID>
      <Description>"No Skill Cooldown V2c"</Description>
      <Options moAllowManualCollapseAndExpand="1"/>
      <LastState/>
      <Color>FFFFFF</Color>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>//Grim Dawn 1.2.0.3 x64

define(address,Game.GAME::Skill::StartCooldown+A1)
define(bytes,48 8B 07 0F 57 D2 0F)

[ENABLE]
//Game.GAME::Skill::StartCooldown+A1
assert(address,bytes)
alloc(newmem,$1000,Game.GAME::Skill::StartCooldown+A1)

label(code)
label(return)

newmem:
//DAMAGE ABSORPTION ITEM SKILL CHECKS
//(no cooldown means instant reapplication/invincibility)
//
//Runeguard (Runeguard Greaves - Boots) and Stone Ward (Stoneguard Ward - Amulet)
  cmp [rdi+00000098],#26                 // checks if it is the Runeguard or Stoneguard item skill on the player
  je code                                // if Runeguard or Stoneguard, jump to code for cooldown application
                                         // alternate Blade Barrier check offsets
                                         // rdi+98  guard=#26    other=not #26  (tests are consistent) &lt;&lt;&lt; using this one
                                         // rdi+AC  guard=#0     other=not #0   (tests are consistent)
                                         // rdi+260 guard=#15    other=not #15  (tests are consistent)
                                         // rdi+27C guard=#248   other=not #248 (tests are consistent)
                                         // rdi+2D0 guard=#15    other=not #15  (tests are consistent)
                                         // rdi+438 guard=#15    other=not #15  (tests are consistent)
                                         //
//Wyrmscale (Wyrmscale Footguards - Boots)
  cmp [rdi+00000018],#54                 // checks if it is the Wyrmscale item skill on the player
  je code                                // if Wyrmscale, jump to code for cooldown application
//Voidwalker (Voidwalker Footpads - Boots)
  cmp [rdi+00000018],#55                 // checks if it is the Voidwalker item skill on the player
  je code                                // if Voidwalker, jump to code for cooldown application
//Divine Light (Mark of Divinity - Medal)
  cmp [rdi+00000018],#56                 // checks if it is the Divinity item skill on the player
  je code                                // if Divinity, jump to code for cooldown application
//Ward of Gul'Amash (Skull of Gul'Amash - Off-hand)
  cmp [rdi+00000018],#59                 // checks if it is the Skull item skill on the player
  je code                                // if Skull, jump to code for cooldown application
//
  jmp Game.GAME::Skill::StartCooldown+BE // if any other skill, jump past the application of a cooldown

code:
  mov rax,[rdi]                          // apply cooldown normally
  xorps xmm2,xmm2
  jmp return

address:
  jmp newmem
  nop

return:

[DISABLE]
address:
  db bytes
  //  48 8B 07 0F 57 D2

dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Game.GAME::Skill::StartCooldown+A1

Game.GAME::Skill::StartCooldown+78: 48 8B 74 24 50                 - mov rsi,[rsp+50]
Game.GAME::Skill::StartCooldown+7D: 48 8B 6C 24 48                 - mov rbp,[rsp+48]
Game.GAME::Skill::StartCooldown+82: 83 F8 01                       - cmp eax,01
Game.GAME::Skill::StartCooldown+85: 7E 09                          - jle Game.GAME::Skill::StartCooldown+90
Game.GAME::Skill::StartCooldown+87: 83 BF B0 01 00 00 00           - cmp dword ptr [rdi+000001B0],00
Game.GAME::Skill::StartCooldown+8E: 7F 38                          - jg Game.GAME::Skill::StartCooldown+C8
Game.GAME::Skill::StartCooldown+90: 0F 57 C9                       - xorps xmm1,xmm1
Game.GAME::Skill::StartCooldown+93: F3 0F 5A CE                    - cvtss2sd xmm1,xmm6
Game.GAME::Skill::StartCooldown+97: 66 0F 2F 0D E1 DE 28 00        - comisd xmm1,[Game.GAME::WeaponArmor_Offhand::`vftable'+F78]
Game.GAME::Skill::StartCooldown+9F: 76 1D                          - jna Game.GAME::Skill::StartCooldown+BE
// ---------- INJECTING HERE ----------
Game.GAME::Skill::StartCooldown+A1: 48 8B 07                       - mov rax,[rdi]
// ---------- DONE INJECTING  ----------
Game.GAME::Skill::StartCooldown+A4: 0F 57 D2                       - xorps xmm2,xmm2
Game.GAME::Skill::StartCooldown+A7: 0F 28 CE                       - movaps xmm1,xmm6
Game.GAME::Skill::StartCooldown+AA: 48 8B CF                       - mov rcx,rdi
Game.GAME::Skill::StartCooldown+AD: 0F 28 74 24 20                 - movaps xmm6,[rsp+20]
Game.GAME::Skill::StartCooldown+B2: 48 83 C4 30                    - add rsp,30
Game.GAME::Skill::StartCooldown+B6: 5F                             - pop rdi
Game.GAME::Skill::StartCooldown+B7: 48 FF A0 50 02 00 00           - jmp qword ptr [rax+00000250]
Game.GAME::Skill::StartCooldown+BE: C7 87 B4 01 00 00 00 00 00 00  - mov [rdi+000001B4],00000000
Game.GAME::Skill::StartCooldown+C8: 0F 28 74 24 20                 - movaps xmm6,[rsp+20]
Game.GAME::Skill::StartCooldown+CD: 48 83 C4 30                    - add rsp,30
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>136804</ID>
          <Description>"&gt;&gt;&gt; NOTES"</Description>
          <Options moHideChildren="1" moManualExpandCollapse="1" moAllowManualCollapseAndExpand="1"/>
          <LastState Value="" RealAddress="00000000"/>
          <Color>80FFFF</Color>
          <GroupHeader>1</GroupHeader>
          <CheatEntries>
            <CheatEntry>
              <ID>136805</ID>
              <Description>"Skills Causing Invincibility Excluded (Default: Excluded)"</Description>
              <Options moManualExpandCollapse="1" moAllowManualCollapseAndExpand="1"/>
              <LastState Value="" RealAddress="00000000"/>
              <Color>80FFFF</Color>
              <GroupHeader>1</GroupHeader>
              <CheatEntries>
                <CheatEntry>
                  <ID>136806</ID>
                  <Description>"Edit option code to disable exclusions for skills"</Description>
                  <LastState Value="" RealAddress="00000000"/>
                  <Color>80FFFF</Color>
                  <GroupHeader>1</GroupHeader>
                </CheatEntry>
                <CheatEntry>
                  <ID>136807</ID>
                  <Description>"&gt; "Divine Light" (Mark of Divinity - Medal)"</Description>
                  <LastState Value="" RealAddress="00000000"/>
                  <Color>80FFFF</Color>
                  <GroupHeader>1</GroupHeader>
                </CheatEntry>
                <CheatEntry>
                  <ID>136808</ID>
                  <Description>"&gt; "Runeguard" (Runeguard Greaves - Boots)"</Description>
                  <LastState Value="" RealAddress="00000000"/>
                  <Color>80FFFF</Color>
                  <GroupHeader>1</GroupHeader>
                </CheatEntry>
                <CheatEntry>
                  <ID>136809</ID>
                  <Description>"&gt; "Stone Ward" (Stoneguard Ward - Amulet)"</Description>
                  <LastState Value="" RealAddress="00000000"/>
                  <Color>80FFFF</Color>
                  <GroupHeader>1</GroupHeader>
                </CheatEntry>
                <CheatEntry>
                  <ID>136810</ID>
                  <Description>"&gt; "Voidwalker" (Voidwalker Footpads - Boots)"</Description>
                  <LastState Value="" RealAddress="00000000"/>
                  <Color>80FFFF</Color>
                  <GroupHeader>1</GroupHeader>
                </CheatEntry>
                <CheatEntry>
                  <ID>136811</ID>
                  <Description>"&gt; "Ward of Gul'Amash" (Skull of Gul'Amash - Off-hand)"</Description>
                  <LastState Value="" RealAddress="00000000"/>
                  <Color>80FFFF</Color>
                  <GroupHeader>1</GroupHeader>
                </CheatEntry>
                <CheatEntry>
                  <ID>136812</ID>
                  <Description>"&gt; "Wyrmscale" (Wyrmscale Footguards - boots)"</Description>
                  <LastState Value="" RealAddress="00000000"/>
                  <Color>80FFFF</Color>
                  <GroupHeader>1</GroupHeader>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
</CheatTable>
_____
Updated both Player Info Pointers option versions:
Re-added pointers:
  • Level - Current (Alters number directly and affects meeting gear requirement and enemy-scaling in zones. Increasing your level does not grant skill points that would have been earned by leveling normally or the XP required to reach that level - alter XP manually.)
  • Level - Max (Increases level cap to continue earning XP and levels beyond 100. I recommend to not go above 200. Enemies also continue to scale to levels above 100.)
  • Run Speed (Changes to match the value set by 'Super Run Speed' option if that is enabled, or if that option is enabled and you change the pointer value, the option value would get changed to match)
Removed these non-editable/useless pointers:
  • Physique - Base (non-editable)
  • Cunning - Base (non-editable)
  • Spirit - Base (non-editable)
Player Info Pointers v1 (populates after a few seconds) - 1.2.0.3 x64

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
  <CheatEntries>
    <CheatEntry>
      <ID>87827</ID>
      <Description>"Player Info Pointers v1 (populates after a few seconds)"</Description>
      <Options moHideChildren="1" moManualExpandCollapse="1" moAllowManualCollapseAndExpand="1"/>
      <LastState/>
      <Color>FFFFFF</Color>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : Grim Dawn.exe
  Version: v1.2.0.3 (x64) Updated by StinVec
  Date   : 2023-11-24
  Original Author : Artykalamata
}

define(address,Game.GAME::Character::GetExperiencePoints)
define(bytes,8B 81 24 16 00 00)

[ENABLE]
assert(address,bytes)
alloc(newmem,$1000,Game.GAME::Character::GetExperiencePoints)
globalalloc(_playerBase, 0x8, Game.GAME::Character::GetExperiencePoints)

label(code)
label(return)

newmem:

code:
  mov eax,[rcx+00001624]
  mov [_playerBase], rcx
  jmp return

address:
  jmp newmem
  nop

return:

[DISABLE]
address:
  db bytes
  // mov eax,[rcx+00001624]

dealloc(newmem)
dealloc(_playerBase)

{
// ORIGINAL CODE - INJECTION POINT: Game.GAME::Character::GetExperiencePoints

Game.GAME::Character::IncrementBaseAttribute+66 - CC                    - int 3
Game.GAME::Character::IncrementBaseAttribute+67 - CC                    - int 3
Game.GAME::Character::IncrementBaseAttribute+68 - CC                    - int 3
Game.GAME::Character::IncrementBaseAttribute+69 - CC                    - int 3
Game.GAME::Character::IncrementBaseAttribute+6A - CC                    - int 3
Game.GAME::Character::IncrementBaseAttribute+6B - CC                    - int 3
Game.GAME::Character::IncrementBaseAttribute+6C - CC                    - int 3
Game.GAME::Character::IncrementBaseAttribute+6D - CC                    - int 3
Game.GAME::Character::IncrementBaseAttribute+6E - CC                    - int 3
Game.GAME::Character::IncrementBaseAttribute+6F - CC                    - int 3
// ---------- INJECTING HERE ----------
Game.GAME::Character::GetExperiencePoints       - 8B 81 24160000        - mov eax,[rcx+00001624]
// ---------- DONE INJECTING  ----------
Game.GAME::Character::GetExperiencePoints+6     - C3                    - ret
Game.GAME::Character::GetExperiencePoints+7     - CC                    - int 3
Game.GAME::Character::GetExperiencePoints+8     - CC                    - int 3
Game.GAME::Character::GetExperiencePoints+9     - CC                    - int 3
Game.GAME::Character::GetExperiencePoints+A     - CC                    - int 3
Game.GAME::Character::GetExperiencePoints+B     - CC                    - int 3
Game.GAME::Character::GetExperiencePoints+C     - CC                    - int 3
Game.GAME::Character::GetExperiencePoints+D     - CC                    - int 3
Game.GAME::Character::GetExperiencePoints+E     - CC                    - int 3
Game.GAME::Character::GetExperiencePoints+F     - CC                    - int 3
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>136116</ID>
          <Description>"Flag - Invincible (set to 1)"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>80FF80</Color>
          <VariableType>Byte</VariableType>
          <Address>[_playerBase]+1D9C</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>136118</ID>
          <Description>"Flag - Invincible Alt (set to 1)"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>80FF80</Color>
          <VariableType>Byte</VariableType>
          <Address>[_playerBase]+1D9E</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>136000</ID>
          <Description>"Flag - Infinite Mana (set to 1)"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>80FF80</Color>
          <VariableType>Byte</VariableType>
          <Address>[_playerBase]+1D9F</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>87814</ID>
          <Description>"HP - Current"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FFFFFF</Color>
          <VariableType>Double</VariableType>
          <Address>[_playerBase]+DD0</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>87817</ID>
          <Description>"Mana - Current"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FFFFFF</Color>
          <VariableType>Float</VariableType>
          <Address>[_playerBase]+DEC</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>87816</ID>
          <Description>"Money / Iron bits"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FFFFFF</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>[_playerBase]+1584</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>136020</ID>
          <Description>"XP"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FFFFFF</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>[_playerBase]+1624</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>136788</ID>
          <Description>"Level - Current"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FFFFFF</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>[_playerBase]+1620</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>136791</ID>
          <Description>"Level - Max"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FFFFFF</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>[_playerBase]+161C</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>136793</ID>
          <Description>"Run Speed"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FFFFFF</Color>
          <VariableType>Float</VariableType>
          <Address>[_playerBase]+4B60</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>87815</ID>
          <Description>"Attribute Points Available"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FFFFFF</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>[_playerBase]+1628</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>134950</ID>
          <Description>"Skill Points Available"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FFFFFF</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>[_playerBase]+162C</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>134953</ID>
          <Description>"Devotion Points Available"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FFFFFF</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>[_playerBase]+1630</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>134952</ID>
          <Description>"Total Devotion Points"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FFFFFF</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>[_playerBase]+1634</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>134951</ID>
          <Description>"Max Devotion Points"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FFFFFF</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>[_playerBase]+1638</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>134955</ID>
          <Description>"+Factions+ (sorted by pointer offset, not alphabetical or status)"</Description>
          <Options moManualExpandCollapse="1" moAllowManualCollapseAndExpand="1"/>
          <LastState Value="" RealAddress="00000000"/>
          <Color>0080FF</Color>
          <GroupHeader>1</GroupHeader>
          <CheatEntries>
            <CheatEntry>
              <ID>134956</ID>
              <Description>"Friendly Max Revered = 25000"</Description>
              <LastState Value="" RealAddress="00000000"/>
              <Color>80FF80</Color>
              <GroupHeader>1</GroupHeader>
            </CheatEntry>
            <CheatEntry>
              <ID>134957</ID>
              <Description>"Enemy Max Nemesis = -20000"</Description>
              <LastState Value="" RealAddress="00000000"/>
              <Color>8080FF</Color>
              <GroupHeader>1</GroupHeader>
            </CheatEntry>
            <CheatEntry>
              <ID>134958</ID>
              <Description>"Devil's Crossing"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>40FF00</Color>
              <VariableType>Float</VariableType>
              <Address>[_playerBase]+18B4</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>134959</ID>
              <Description>"Aetherials"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>0000FF</Color>
              <VariableType>Float</VariableType>
              <Address>[_playerBase]+18B8</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>134960</ID>
              <Description>"Chthonians"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>0000FF</Color>
              <VariableType>Float</VariableType>
              <Address>[_playerBase]+18BC</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>134961</ID>
              <Description>"Cronley's Gang"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>0000FF</Color>
              <VariableType>Float</VariableType>
              <Address>[_playerBase]+18C0</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>134962</ID>
              <Description>"Beasts"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>0000FF</Color>
              <VariableType>Float</VariableType>
              <Address>[_playerBase]+18C4</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>134963</ID>
              <Description>"Rovers"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>40FF00</Color>
              <VariableType>Float</VariableType>
              <Address>[_playerBase]+18C8</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>134964</ID>
              <Description>"Neutral Faction (Hidden &amp; Locked)"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>00FFFF</Color>
              <VariableType>Float</VariableType>
              <Address>[_playerBase]+18CC</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>134965</ID>
              <Description>"Homestead"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>40FF00</Color>
              <VariableType>Float</VariableType>
              <Address>[_playerBase]+18D0</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>134966</ID>
              <Description>"Free Men of Corrigan Mine (Hidden &amp; Locked)"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>40FF00</Color>
              <VariableType>Float</VariableType>
              <Address>[_playerBase]+18D4</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>134967</ID>
              <Description>"The Outcast"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>00FFFF</Color>
              <VariableType>Float</VariableType>
              <Address>[_playerBase]+18D8</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>134968</ID>
              <Description>"Order of Death's Vigil"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>00FFFF</Color>
              <VariableType>Float</VariableType>
              <Address>[_playerBase]+18DC</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>134969</ID>
              <Description>"Arkovian Undead"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>0000FF</Color>
              <VariableType>Float</VariableType>
              <Address>[_playerBase]+18E0</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>134970</ID>
              <Description>"Black Legion"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>40FF00</Color>
              <VariableType>Float</VariableType>
              <Address>[_playerBase]+18E4</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>134971</ID>
              <Description>"Kymon's Chosen"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>00FFFF</Color>
              <VariableType>Float</VariableType>
              <Address>[_playerBase]+18E8</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>134972</ID>
              <Description>"Coven of Ugdenbog"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>40FF00</Color>
              <VariableType>Float</VariableType>
              <Address>[_playerBase]+18EC</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>134973</ID>
              <Description>"Barrowholm"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>00FFFF</Color>
              <VariableType>Float</VariableType>
              <Address>[_playerBase]+18F0</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>134974</ID>
              <Description>"Malmouth Resistance"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>40FF00</Color>
              <VariableType>Float</VariableType>
              <Address>[_playerBase]+18F4</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>134975</ID>
              <Description>"Aetherial Vanguard"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>0000FF</Color>
              <VariableType>Float</VariableType>
              <Address>[_playerBase]+18F8</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>134976</ID>
              <Description>"Cult of Bysmiel"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>40FF00</Color>
              <VariableType>Float</VariableType>
              <Address>[_playerBase]+18FC</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>134977</ID>
              <Description>"Cult of Dreeg"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>40FF00</Color>
              <VariableType>Float</VariableType>
              <Address>[_playerBase]+1900</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>134978</ID>
              <Description>"Cult of Solael"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>40FF00</Color>
              <VariableType>Float</VariableType>
              <Address>[_playerBase]+1904</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>134979</ID>
              <Description>"Eldritch Horrors"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>0000FF</Color>
              <VariableType>Float</VariableType>
              <Address>[_playerBase]+1908</Address>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
</CheatTable>
Player Info Pointers v2 (attack to briefly populate) - 1.2.0.3 x64

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
  <CheatEntries>
    <CheatEntry>
      <ID>134891</ID>
      <Description>"Player Info Pointers v2 (attack to briefly populate)"</Description>
      <Options moHideChildren="1" moManualExpandCollapse="1" moAllowManualCollapseAndExpand="1"/>
      <LastState/>
      <Color>FFFFFF</Color>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>//Grim Dawn 1.2.0.3 x64

[ENABLE]
//Game.GAME::CharacterBio::Update+294
aobscanmodule(PLAYERINFO,Game.dll,F3 0F 10 97 6C 07 00 00)
alloc(newmem,$1000,PLAYERINFO)
label(player_ptr)
label(code)
label(return)

newmem:
mov [player_ptr],rbx
code:
  movss xmm2,[rbx+0000076C]
  jmp return

player_ptr:
dq 0

PLAYERINFO:
  jmp newmem
  nop 3

return:
registersymbol(player_ptr)
registersymbol(PLAYERINFO)

[DISABLE]
PLAYERINFO:
  db F3 0F 10 97 6C 07 00 00

unregistersymbol(player_ptr)
unregistersymbol(PLAYERINFO)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Game.GAME::CharacterBio::Update+294

Game.GAME::CharacterBio::Update+458: 45 0F 5B ED Game.GAME::CharacterBio::Update+264 - 45 0F5B DB            - cvtdq2ps xmm11,xmm11
Game.GAME::CharacterBio::Update+268 - 41 0F28 C3            - movaps xmm0,xmm11
Game.GAME::CharacterBio::Update+26C - F3 0F59 05 40F95B00   - mulss xmm0,[Game.GAME::WeaponArmor_Offhand::`vftable'+EBC]
Game.GAME::CharacterBio::Update+274 - 44 0F5A D0            - cvtps2pd xmm10,xmm0
Game.GAME::CharacterBio::Update+278 - 0F84 BB000000         - je Game.GAME::CharacterBio::Update+339
Game.GAME::CharacterBio::Update+27E - 44 0F2E 47 2C         - ucomiss xmm8,[rdi+2C]
Game.GAME::CharacterBio::Update+283 - 0F85 B0000000         - jne Game.GAME::CharacterBio::Update+339
Game.GAME::CharacterBio::Update+289 - F3 0F10 4F 38         - movss xmm1,[rdi+38]
Game.GAME::CharacterBio::Update+28E - 41 0F2F C8            - comiss xmm1,xmm8
Game.GAME::CharacterBio::Update+292 - 76 53                 - jna Game.GAME::CharacterBio::Update+2E7
// ---------- INJECTING HERE ----------
Game.GAME::CharacterBio::Update+294 - F3 0F10 97 6C070000   - movss xmm2,[rdi+0000076C]
// ---------- DONE INJECTING  ----------
Game.GAME::CharacterBio::Update+29C - 0F5A C2               - cvtps2pd xmm0,xmm2
Game.GAME::CharacterBio::Update+29F - 66 0F2F 47 20         - comisd xmm0,[rdi+20]
Game.GAME::CharacterBio::Update+2A4 - 76 41                 - jna Game.GAME::CharacterBio::Update+2E7
Game.GAME::CharacterBio::Update+2A6 - F3 0F10 47 30         - movss xmm0,[rdi+30]
Game.GAME::CharacterBio::Update+2AB - 0F28 D9               - movaps xmm3,xmm1
Game.GAME::CharacterBio::Update+2AE - F3 0F59 05 1EF95B00   - mulss xmm0,[Game.GAME::WeaponArmor_Offhand::`vftable'+EDC]
Game.GAME::CharacterBio::Update+2B6 - F3 0F59 C2            - mulss xmm0,xmm2
Game.GAME::CharacterBio::Update+2BA - 0F5A C0               - cvtps2pd xmm0,xmm0
Game.GAME::CharacterBio::Update+2BD - F2 41 0F59 C2         - mulsd xmm0,xmm10
Game.GAME::CharacterBio::Update+2C2 - 66 0F5A F0            - cvtpd2ps xmm6,xmm0
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>136001</ID>
          <Description>"Flag - Invincible (set to 1)"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>80FF80</Color>
          <VariableType>Byte</VariableType>
          <Address>player_ptr</Address>
          <Offsets>
            <Offset>1D9C</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>136002</ID>
          <Description>"Flag - Invincible Alt (set to 1)"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>80FF80</Color>
          <VariableType>Byte</VariableType>
          <Address>player_ptr</Address>
          <Offsets>
            <Offset>1D9E</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>136003</ID>
          <Description>"Flag - Infinite Mana (set to 1)"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>80FF80</Color>
          <VariableType>Byte</VariableType>
          <Address>player_ptr</Address>
          <Offsets>
            <Offset>1D9F</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>134949</ID>
          <Description>"HP - Current"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FFFFFF</Color>
          <VariableType>Double</VariableType>
          <Address>player_ptr</Address>
          <Offsets>
            <Offset>DD0</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>134948</ID>
          <Description>"Mana - Current"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FFFFFF</Color>
          <VariableType>Float</VariableType>
          <Address>player_ptr</Address>
          <Offsets>
            <Offset>DEC</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>134893</ID>
          <Description>"Money / Iron Bits"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FFFFFF</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>player_ptr</Address>
          <Offsets>
            <Offset>1584</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>134894</ID>
          <Description>"XP"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FFFFFF</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>player_ptr</Address>
          <Offsets>
            <Offset>1624</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>136789</ID>
          <Description>"Level - Current"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FFFFFF</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>player_ptr</Address>
          <Offsets>
            <Offset>1620</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>136790</ID>
          <Description>"Level - Max"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FFFFFF</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>player_ptr</Address>
          <Offsets>
            <Offset>161C</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>136792</ID>
          <Description>"Run Speed"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FFFFFF</Color>
          <VariableType>Float</VariableType>
          <Address>player_ptr</Address>
          <Offsets>
            <Offset>4B60</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>134895</ID>
          <Description>"Attribute Points"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FFFFFF</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>player_ptr</Address>
          <Offsets>
            <Offset>1628</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>134896</ID>
          <Description>"Skill Points"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FFFFFF</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>player_ptr</Address>
          <Offsets>
            <Offset>162C</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>134897</ID>
          <Description>"Devotion Points"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FFFFFF</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>player_ptr</Address>
          <Offsets>
            <Offset>1630</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>134898</ID>
          <Description>"Total Devotion Points"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FFFFFF</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>player_ptr</Address>
          <Offsets>
            <Offset>1634</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>134899</ID>
          <Description>"Max Devotion Points"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FFFFFF</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>player_ptr</Address>
          <Offsets>
            <Offset>1638</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>134910</ID>
          <Description>"+Factions+ (sorted by pointer offset, not alphabetical or status)"</Description>
          <Options moManualExpandCollapse="1" moAllowManualCollapseAndExpand="1"/>
          <LastState Value="" RealAddress="00000000"/>
          <Color>0080FF</Color>
          <GroupHeader>1</GroupHeader>
          <CheatEntries>
            <CheatEntry>
              <ID>134937</ID>
              <Description>"Friendly Max Revered = 25000"</Description>
              <LastState Value="" RealAddress="00000000"/>
              <Color>80FF80</Color>
              <GroupHeader>1</GroupHeader>
            </CheatEntry>
            <CheatEntry>
              <ID>134938</ID>
              <Description>"Enemy Max Nemesis = -20000"</Description>
              <LastState Value="" RealAddress="00000000"/>
              <Color>8080FF</Color>
              <GroupHeader>1</GroupHeader>
            </CheatEntry>
            <CheatEntry>
              <ID>134911</ID>
              <Description>"Devil's Crossing"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>40FF00</Color>
              <VariableType>Float</VariableType>
              <Address>player_ptr</Address>
              <Offsets>
                <Offset>18B4</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>134912</ID>
              <Description>"Aetherials"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>0000FF</Color>
              <VariableType>Float</VariableType>
              <Address>player_ptr</Address>
              <Offsets>
                <Offset>18B8</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>134913</ID>
              <Description>"Chthonians"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>0000FF</Color>
              <VariableType>Float</VariableType>
              <Address>player_ptr</Address>
              <Offsets>
                <Offset>18BC</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>134914</ID>
              <Description>"Cronley's Gang"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>0000FF</Color>
              <VariableType>Float</VariableType>
              <Address>player_ptr</Address>
              <Offsets>
                <Offset>18C0</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>134915</ID>
              <Description>"Beasts"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>0000FF</Color>
              <VariableType>Float</VariableType>
              <Address>player_ptr</Address>
              <Offsets>
                <Offset>18C4</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>134916</ID>
              <Description>"Rovers"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>40FF00</Color>
              <VariableType>Float</VariableType>
              <Address>player_ptr</Address>
              <Offsets>
                <Offset>18C8</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>134917</ID>
              <Description>"Neutral Faction (Hidden &amp; Locked)"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>00FFFF</Color>
              <VariableType>Float</VariableType>
              <Address>player_ptr</Address>
              <Offsets>
                <Offset>18CC</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>134918</ID>
              <Description>"Homestead"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>40FF00</Color>
              <VariableType>Float</VariableType>
              <Address>player_ptr</Address>
              <Offsets>
                <Offset>18D0</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>134919</ID>
              <Description>"Free Men of Corrigan Mine (Hidden &amp; Locked)"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>40FF00</Color>
              <VariableType>Float</VariableType>
              <Address>player_ptr</Address>
              <Offsets>
                <Offset>18D4</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>134920</ID>
              <Description>"The Outcast"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>00FFFF</Color>
              <VariableType>Float</VariableType>
              <Address>player_ptr</Address>
              <Offsets>
                <Offset>18D8</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>134921</ID>
              <Description>"Order of Death's Vigil"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>00FFFF</Color>
              <VariableType>Float</VariableType>
              <Address>player_ptr</Address>
              <Offsets>
                <Offset>18DC</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>134922</ID>
              <Description>"Arkovian Undead"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>0000FF</Color>
              <VariableType>Float</VariableType>
              <Address>player_ptr</Address>
              <Offsets>
                <Offset>18E0</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>134923</ID>
              <Description>"Black Legion"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>40FF00</Color>
              <VariableType>Float</VariableType>
              <Address>player_ptr</Address>
              <Offsets>
                <Offset>18E4</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>134924</ID>
              <Description>"Kymon's Chosen"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>00FFFF</Color>
              <VariableType>Float</VariableType>
              <Address>player_ptr</Address>
              <Offsets>
                <Offset>18E8</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>134925</ID>
              <Description>"Coven of Ugdenbog"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>40FF00</Color>
              <VariableType>Float</VariableType>
              <Address>player_ptr</Address>
              <Offsets>
                <Offset>18EC</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>134926</ID>
              <Description>"Barrowholm"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>00FFFF</Color>
              <VariableType>Float</VariableType>
              <Address>player_ptr</Address>
              <Offsets>
                <Offset>18F0</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>134927</ID>
              <Description>"Malmouth Resistance"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>40FF00</Color>
              <VariableType>Float</VariableType>
              <Address>player_ptr</Address>
              <Offsets>
                <Offset>18F4</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>134928</ID>
              <Description>"Aetherial Vanguard"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>0000FF</Color>
              <VariableType>Float</VariableType>
              <Address>player_ptr</Address>
              <Offsets>
                <Offset>18F8</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>134929</ID>
              <Description>"Cult of Bysmiel"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>40FF00</Color>
              <VariableType>Float</VariableType>
              <Address>player_ptr</Address>
              <Offsets>
                <Offset>18FC</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>134930</ID>
              <Description>"Cult of Dreeg"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>40FF00</Color>
              <VariableType>Float</VariableType>
              <Address>player_ptr</Address>
              <Offsets>
                <Offset>1900</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>134931</ID>
              <Description>"Cult of Solael"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>40FF00</Color>
              <VariableType>Float</VariableType>
              <Address>player_ptr</Address>
              <Offsets>
                <Offset>1904</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>134932</ID>
              <Description>"Eldritch Horrors"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>0000FF</Color>
              <VariableType>Float</VariableType>
              <Address>player_ptr</Address>
              <Offsets>
                <Offset>1908</Offset>
              </Offsets>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
</CheatTable>

vfg36276
What is cheating?
What is cheating?
Posts: 4
Joined: Mon May 01, 2023 8:39 am
Reputation: 3

Re: Grim Dawn + All DLC's

Post by vfg36276 »

Hello StinVec, for the light radius, same error: (gog, grim dawn 1.2.0.3 64bits and last table download)
<<Error in line 7 (assert(Game.GAME::Player::UpdateSelf+6E2,E8 69 97 D8 FF)) :The bytes at Game.GAME::Player::UpdateSelf+6E2 are not what was expected>>

Thank's for the updated table!

StinVec
Table Makers
Table Makers
Posts: 103
Joined: Sun Jun 25, 2017 7:02 am
Reputation: 131

Re: Grim Dawn + All DLC's

Post by StinVec »

vfg36276 wrote:
Sat Feb 03, 2024 2:51 pm
Hello StinVec, for the light radius, same error: (gog, grim dawn 1.2.0.3 64bits and last table download)
<<Error in line 7 (assert(Game.GAME::Player::UpdateSelf+6E2,E8 69 97 D8 FF)) :The bytes at Game.GAME::Player::UpdateSelf+6E2 are not what was expected>>

Thank's for the updated table!
(Also @krmit if in case the GoG game version is also being used)

Hi, @vfg36276. You're welcome! Thank you for noting you are using the GoG game version while encountering this issue with that option!

If the cause isn't due to having two of the option in the table (included in table + pasted code from post), where one being enabled would cause the other to give this error since the bytes are already changed, perhaps the bytes of that address are different in the GoG game version.

If you could please try this to verify this is the cause, you will be able to alter the option to match your GoG game version:
1) Launch Grim Dawn and latch the cheat table to Grim Dawn.exe (if in compact view, click the button on the toolbar to return to Full View Mode)
2) Click the 'Memory View' button just above the options section on the left
3) Right-click anywhere in the upper memory section and click 'Go to address' at the top
4) Paste the address noted in the error:

Code: Select all

Game.GAME::Player::UpdateSelf+6E2
It will take you to that memory address and you should see this highlighted: [Link]

Code: Select all

Game.GAME::Player::UpdateSelf+6E2: E8 69 97 D8 FF           - call Game.GAME::CharAttributeAccumulator::GetValue
5) If the +6E2 address does say it performs that 'call' instruction, but the bytes are different, you can note the bytes that it does have for that instruction at +6E2. You can then select to edit this Light Radius option and replace the bytes at the top with those bytes, then hit OK to save the change (and then save your table after verifying the option works correctly).
6) However, it could be that the bytes are not different in the GoG game version, but that 'call' instruction is performed on a different address instead of +6E2. If +6E2 does not do that 'call' instruction for you, look at nearby addresses above and below and one should say that it does that 'call' instruction. So it is possible that the bytes for the instruction may be correct, but the +address might be a digit or few different in the GoG version. If that is the case, you can edit this Light Radius option and replace the two instances of the +6E2 address in the code with the +address that does do that 'call' instruction.

So you may need to alter either the +address, the bytes, or both of those in the option code to get it to work on your GoG version.

If you would perform this task and make note of what is different for the GoG version, I'll update the table to include the GoG version of the option from your efforts for other GoG users to be able to use it as well.

Otherwise, just a screenshot or copy>paste of that area of memory would provide information so I can do the changes instead and update the table with the GoG option version.

vfg36276
What is cheating?
What is cheating?
Posts: 4
Joined: Mon May 01, 2023 8:39 am
Reputation: 3

Re: Grim Dawn + All DLC's

Post by vfg36276 »

Thanks' for your help, i have learned something today!
The new Bytes:

Code: Select all

Game.GAME::Player::UpdateSelf+6E2 - E8 F9ABD8FF
And the corrected Script:

Code: Select all

//Grim Dawn 1.2.0.3

define(address,Game.GAME::Player::UpdateSelf+6E2)
define(bytes,E8 F9 AB D8 FF)

[ENABLE]
assert(address,bytes)
alloc(newmem,$1000,Game.GAME::Player::UpdateSelf+6E2)

alloc(_playerLight,8)
registersymbol(_playerLight)

label(code)
label(return)

newmem:
  movss xmm0,[_playerLight] //Instead of getting the current radius value above normal (0) to increase, use player-defined percentage
  jmp return

code:
  call Game.GAME::CharAttributeAccumulator::GetValue
  jmp return

address:
  jmp newmem

return:

[DISABLE]
address:
  db bytes
  // E8 69 97 D8 FF

unregistersymbol(_playerLight)
dealloc(newmem)
dealloc(_playerLight)

{
// ORIGINAL CODE - INJECTION POINT: Game.GAME::Player::UpdateSelf+6E2

Game.GAME::Player::UpdateSelf+6B4: BA 06 00 00 00           - mov edx,00000006
Game.GAME::Player::UpdateSelf+6B9: FF 15 79 36 1E 00        - call qword ptr [Game.dll+4EFB88]
Game.GAME::Player::UpdateSelf+6BF: 41 8B D7                 - mov edx,r15d
Game.GAME::Player::UpdateSelf+6C2: B9 04 00 00 00           - mov ecx,00000004
Game.GAME::Player::UpdateSelf+6C7: 83 F8 03                 - cmp eax,03
Game.GAME::Player::UpdateSelf+6CA: 0F 44 D1                 - cmove edx,ecx
Game.GAME::Player::UpdateSelf+6CD: 48 8B CB                 - mov rcx,rbx
Game.GAME::Player::UpdateSelf+6D0: FF 15 32 4A 1E 00        - call qword ptr [Game.dll+4F0F58]
Game.GAME::Player::UpdateSelf+6D6: 48 8D 8F 48 0E 00 00     - lea rcx,[rdi+00000E48]
Game.GAME::Player::UpdateSelf+6DD: BA 38 00 00 00           - mov edx,00000038
// ---------- INJECTING HERE ----------
Game.GAME::Player::UpdateSelf+6E2: E8 69 97 D8 FF           - call Game.GAME::CharAttributeAccumulator::GetValue
// ---------- DONE INJECTING  ----------
Game.GAME::Player::UpdateSelf+6E7: F3 0F 59 05 E5 CE 32 00  - mulss xmm0,[Game.GAME::WeaponArmor_Offhand::`vftable'+EDC]
Game.GAME::Player::UpdateSelf+6EF: F3 0F 58 05 65 CF 32 00  - addss xmm0,[Game.GAME::WeaponArmor_Offhand::`vftable'+F64]
Game.GAME::Player::UpdateSelf+6F7: F3 0F 59 87 84 1D 00 00  - mulss xmm0,[rdi+00001D84]
Game.GAME::Player::UpdateSelf+6FF: 0F 28 C8                 - movaps xmm1,xmm0
Game.GAME::Player::UpdateSelf+702: 48 8B CB                 - mov rcx,rbx
Game.GAME::Player::UpdateSelf+705: FF 15 3D 3C 1E 00        - call qword ptr [Game.dll+4F0198]
Game.GAME::Player::UpdateSelf+70B: 45 32 E4                 - xor r12l,r12l
Game.GAME::Player::UpdateSelf+70E: 45 32 F6                 - xor r14l,r14l
Game.GAME::Player::UpdateSelf+711: 48 8B CF                 - mov rcx,rdi
Game.GAME::Player::UpdateSelf+714: FF 15 96 2F 1E 00        - call qword ptr [Game.dll+4EF500]
}
All run now!

StinVec
Table Makers
Table Makers
Posts: 103
Joined: Sun Jun 25, 2017 7:02 am
Reputation: 131

Re: Grim Dawn + All DLC's

Post by StinVec »

@vfg36276
You're welcome. Very well done getting the altered bytes for the GoG version! I'm glad you got it to work properly in your game version now.

Thank you for taking the time to do that and also for posting it so that it can help other GoG users have that option working for them! I'll update the table post at the top to include the GoG version with your updated bytes.

It has me curious as to why all other options seem to be fine and the bytes the same between game versions, but not these bytes. I'll keep this in mind as something that does happen and could cause a problem for some.

vfg36276
What is cheating?
What is cheating?
Posts: 4
Joined: Mon May 01, 2023 8:39 am
Reputation: 3

Re: Grim Dawn + All DLC's

Post by vfg36276 »

StinVec wrote:
Sun Feb 04, 2024 2:43 pm
@vfg36276
You're welcome. Very well done getting the altered bytes for the GoG version! I'm glad you got it to work properly in your game version now.

Thank you for taking the time to do that and also for posting it so that it can help other GoG users have that option working for them! I'll update the table post at the top to include the GoG version with your updated bytes.

It has me curious as to why all other options seem to be fine and the bytes the same between game versions, but not these bytes. I'll keep this in mind as something that does happen and could cause a problem for some.
I haven't had the chance to test all the scripts yet.

Only these ones:
-XP Gain Multiplier (change # to increase/decrease multiplier)
-Character Light Radius
-Invincible (Player, Pets and Allies) (disables subtraction of life)
-Super Attack Speed
-Super Spell Cast Speed
-No Skill Cooldown V2c
-All in Freeze Buff Timers
-Player Info Pointers v1 (populates after a few seconds)

I remain at your disposal for further tests if you need.

AlexS
Expert Cheater
Expert Cheater
Posts: 309
Joined: Sun Apr 08, 2018 3:46 pm
Reputation: 185

Re: Grim Dawn + All DLC's

Post by AlexS »

StinVec wrote:
Sun Feb 04, 2024 2:43 pm
It has me curious as to why all other options seem to be fine and the bytes the same between game versions, but not these bytes.

(Google translation)

This is because the call instruction you chose to inject contains a hardcoded address.
Look at this statement from your table:

Code: Select all

Game.GAME::Player::UpdateSelf+6E2: E8 69 97 D8 FF
The last 4 bytes - 69 97 D8 FF - indicate the address where execution is redirected. Even if the game version is the same and the instructions at the specified address do the same thing, this address may be different for Steam or GOG or other platforms.
To avoid this problem, try not to use byte sequences containing addresses in your script. Avoid injection points in code sections that contain call instructions, jump to a specific address, or read from memory at a specific address. If this cannot be avoided, replace these address bytes with wildcard characters (for example, "E8 xx xx xx xx") when searching for the byte sequence, and inside the script, use reading the original byte sequence to calculate the real address.
In your script, so that it works correctly with both versions of the game, you can use injection, for example, in any of the two instructions that are located directly above the call instruction:

Code: Select all

Game.GAME::Player::UpdateSelf+6D6: 48 8D 8F 48 0E 00 00 - lea rcx,[rdi+00000E48]
Game.GAME::Player::UpdateSelf+6DD: BA 38 00 00 00 - mov edx,00000038
// ---------- INJECTING HERE ----------
Game.GAME::Player::UpdateSelf+6E2: E8 69 97 D8 FF - call Game.GAME::CharAttributeAccumulator::GetValue
These instructions do not contain addresses, so the script will work regardless of the game platform.
If the byte sequence of these two instructions is not unique, it can be expanded up or down, but remember that the bytes pointing to the addresses will need to be replaced with wildcards.

Sorry for bad English, I hope you understood these explanations.

StinVec
Table Makers
Table Makers
Posts: 103
Joined: Sun Jun 25, 2017 7:02 am
Reputation: 131

Re: Grim Dawn + All DLC's

Post by StinVec »

AlexS wrote:
Sun Feb 04, 2024 4:48 pm
StinVec wrote:
Sun Feb 04, 2024 2:43 pm
It has me curious as to why all other options seem to be fine and the bytes the same between game versions, but not these bytes.

(Google translation)

This is because the call instruction you chose to inject contains a hardcoded address.
Look at this statement from your table:

Code: Select all

Game.GAME::Player::UpdateSelf+6E2: E8 69 97 D8 FF
The last 4 bytes - 69 97 D8 FF - indicate the address where execution is redirected. Even if the game version is the same and the instructions at the specified address do the same thing, this address may be different for Steam or GOG or other platforms.
To avoid this problem, try not to use byte sequences containing addresses in your script. Avoid injection points in code sections that contain call instructions, jump to a specific address, or read from memory at a specific address. If this cannot be avoided, replace these address bytes with wildcard characters (for example, "E8 xx xx xx xx") when searching for the byte sequence, and inside the script, use reading the original byte sequence to calculate the real address.
In your script, so that it works correctly with both versions of the game, you can use injection, for example, in any of the two instructions that are located directly above the call instruction:

Code: Select all

Game.GAME::Player::UpdateSelf+6D6: 48 8D 8F 48 0E 00 00 - lea rcx,[rdi+00000E48]
Game.GAME::Player::UpdateSelf+6DD: BA 38 00 00 00 - mov edx,00000038
// ---------- INJECTING HERE ----------
Game.GAME::Player::UpdateSelf+6E2: E8 69 97 D8 FF - call Game.GAME::CharAttributeAccumulator::GetValue
These instructions do not contain addresses, so the script will work regardless of the game platform.
If the byte sequence of these two instructions is not unique, it can be expanded up or down, but remember that the bytes pointing to the addresses will need to be replaced with wildcards.

Sorry for bad English, I hope you understood these explanations.
Thank you for that offered information. I do appreciate that you took the time to share it as I am certain that it will be of great use to others and help them to learn. Thank you.

(Edited immediately after posting to remove my excess response regarding memory differences between GoG/Steam. I realized I had misread what was written, which affected my response. Thank you again for taking the time to share this information.)

Post Reply