Grim Dawn + All DLC's

Upload your cheat tables here (No requests)
Chindopopito
Expert Cheater
Expert Cheater
Posts: 52
Joined: Wed Apr 26, 2023 4:40 pm
Reputation: 21

Re: Grim Dawn + All DLC's

Post by Chindopopito »

StinVec wrote:
Wed Nov 22, 2023 4:00 am
1.2.0.2.h2 x64 - Infinite Mana (temporary stand-in version)
1.2.0.2.h2 x64 - Super Spell Cast Speed
1.2.0.2.h2 x64 - Super Attack Speed
1.2.0.2.h2 x64 - Super Run Speed
1.2.0.2.h2 x64 - Set Pet Limit to 20 for all Pets
1.2.0.2.h2 x64 - Infinite Skill Points (999 locked) (re-wrote)
1.2.0.2.h2 x64 - Infinite Devotion Points (999 locked) (re-wrote)
1.2.0.2.h2 x64 - Infinite Attribute Points (999 locked)

Copy all of the code in the spoiler and paste it (CTRL+V) into your cheat table to add each option to your table.
Infinite Mana 1.2.0.2 x64 (temporary stand-in version)

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
  <CheatEntries>
    <CheatEntry>
      <ID>88045</ID>
      <Description>"Infinite Mana 1.2.0.2 x64"</Description>
      <LastState Activated="1"/>
      <Color>0000FF</Color>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>//Grim Dawn 1.2.0.2 Updated
//1.1.9.8 was F3 0F 10 81 A4 0D 00 00
//changed A4 to EC

define(address,Game.GAME::Character::GetCurrentMana)
define(bytes,F3 0F 10 81 EC 0D 00 00)

[ENABLE]
assert(address,bytes)
alloc(newmem,$100,Game.GAME::Character::GetCurrentMana)

label(code)
label(return)

newmem:
  cmp rbx,0 //enemies have common value 0x0
  je code
//  movss xmm1,[rbx+000012C0]  //1.1.9.8 maxMana 000012C0
//  movss [rcx+00000DEC],xmm1  //1.2.0.2 temp disabled
//  movss xmm0,[rcx+00000DEC]  //1.2.0.2 temp disabled
  mov [rcx+00000DEC],(float)250  //1.2.0.2 temp added
  movss xmm0,[rcx+00000DEC]
  jmp return

code:
  movss xmm0,[rcx+00000DEC]
  jmp return

address:
  jmp newmem
  nop
  nop
  nop
return:

[DISABLE]
address:
  db bytes
  // movss xmm0,[rcx+00000DEC]

dealloc(newmem)

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

Game.GAME::Character::ContributeMiscConversionAttributes+E6 - CC                    - int 3
Game.GAME::Character::ContributeMiscConversionAttributes+E7 - CC                    - int 3
Game.GAME::Character::ContributeMiscConversionAttributes+E8 - CC                    - int 3
Game.GAME::Character::ContributeMiscConversionAttributes+E9 - CC                    - int 3
Game.GAME::Character::ContributeMiscConversionAttributes+EA - CC                    - int 3
Game.GAME::Character::ContributeMiscConversionAttributes+EB - CC                    - int 3
Game.GAME::Character::ContributeMiscConversionAttributes+EC - CC                    - int 3
Game.GAME::Character::ContributeMiscConversionAttributes+ED - CC                    - int 3
Game.GAME::Character::ContributeMiscConversionAttributes+EE - CC                    - int 3
Game.GAME::Character::ContributeMiscConversionAttributes+EF - CC                    - int 3
// ---------- INJECTING HERE ----------
Game.GAME::Character::GetCurrentMana                        - F3 0F10 81 EC0D0000   - movss xmm0,[rcx+00000DEC]
// ---------- DONE INJECTING  ----------
Game.GAME::Character::GetCurrentMana+8                      - 0F57 C9               - xorps xmm1,xmm1
Game.GAME::Character::GetCurrentMana+B                      - F3 0F5F C1            - maxss xmm0,xmm1
Game.GAME::Character::GetCurrentMana+F                      - C3                    - ret
Game.GAME::Character::SetCurrentMana                        - 40 53                 - push rbx
Game.GAME::Character::SetCurrentMana+2                      - 48 83 EC 30           - sub rsp,30
Game.GAME::Character::SetCurrentMana+6                      - 48 8B D9              - mov rbx,rcx
Game.GAME::Character::SetCurrentMana+9                      - 0F29 74 24 20         - movaps [rsp+20],xmm6
Game.GAME::Character::SetCurrentMana+E                      - 48 81 C1 480E0000     - add rcx,00000E48
Game.GAME::Character::SetCurrentMana+15                     - BA 05000000           - mov edx,00000005
Game.GAME::Character::SetCurrentMana+1A                     - 0F28 F1               - movaps xmm6,xmm1
}
</AssemblerScript>
    </CheatEntry>
  </CheatEntries>
</CheatTable>
  • Info on temporary Infinite Mana version
    Until I find a way to get the accumulated max mana value to be copied to your current mana and frozen, here is a temporary version.

    This version has the updated Current Mana address and is altered to set your current mana to 250, which is what your starting max mana is.

    What your current mana value is and how much mana a skill costs doesn't seem to matter as long as your mana is locked and doesn't decrease. So even if you have a max mana of 10,000, have 20 activated auras and buffs, and are casting a high energy skill, your mana is still always locked at 250.

    The only potential issue is an aesthetic one. When you level up and you have a higher max mana, the locked 250 current mana will cause your bar to appear mostly empty. If this partially/mostly empty mana bar bothers you, you can just change the float value in the code to whatever your current max mana value is to have your bar appear as full.

    If you raise the value to higher than your max mana, the blue/green mana bar background will not be contained within the mana bar and will stretch across your screen to the left.
Super Spell Cast Speed 1.2.0.2 x64

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
  <CheatEntries>
    <CheatEntry>
      <ID>1175</ID>
      <Description>"Super Spell Cast Speed 1.2.0.2 x64"</Description>
      <LastState/>
      <Color>FFFFFF</Color>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>//Grim Dawn 1.2.0.2 Updated
//1.1.9.8 was GAME::Player::CapSpellCastSpeed+9F
//changed +9F to +AF (the last address in the whole GAME::Player::CapSpellCastSpeed section for the range of the scan)
//00004714 changed to 00004B6C
//00004710 changed to 00004B68

[ENABLE]
//GAME::Player::CapSpellCastSpeed+E
aobscanregion(superSpellCastSpeed,GAME::Player::CapSpellCastSpeed,GAME::Player::CapSpellCastSpeed+AF,F30F10)
alloc(newmem,$1000,superSpellCastSpeed)

label(code)
label(return)

newmem:
  mov [rcx+00004B6C],(float)1000  //maxSpellCastSpeed
  movss xmm6,[rcx+00004B6C]
  jmp return

code:
  movss xmm6,[rcx+00004B68]  //currentSpellCastSpeed
  jmp return

superSpellCastSpeed:
  jmp newmem
  nop 3
return:
registersymbol(superSpellCastSpeed)

[DISABLE]
superSpellCastSpeed:
  db F3 0F 10 B1 68 4B 00 00

unregistersymbol(superSpellCastSpeed)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Game.GAME::Player::CapSpellCastSpeed+E

Game.GAME::Player::CapRunSpeed+AA - CC                    - int 3
Game.GAME::Player::CapRunSpeed+AB - CC                    - int 3
Game.GAME::Player::CapRunSpeed+AC - CC                    - int 3
Game.GAME::Player::CapRunSpeed+AD - CC                    - int 3
Game.GAME::Player::CapRunSpeed+AE - CC                    - int 3
Game.GAME::Player::CapRunSpeed+AF - CC                    - int 3
Game.GAME::Player::CapSpellCastSpeed- 40 53                 - push rbx
Game.GAME::Player::CapSpellCastSpeed+2- 48 83 EC 50           - sub rsp,50
Game.GAME::Player::CapSpellCastSpeed+6- 0F29 74 24 40         - movaps [rsp+40],xmm6
Game.GAME::Player::CapSpellCastSpeed+B- 0F57 C0               - xorps xmm0,xmm0
// ---------- INJECTING HERE ----------
Game.GAME::Player::CapSpellCastSpeed+E- F3 0F10 B1 684B0000   - movss xmm6,[rcx+00004B68]
// ---------- DONE INJECTING  ----------
Game.GAME::Player::CapSpellCastSpeed+16- 48 8B D9              - mov rbx,rcx
Game.GAME::Player::CapSpellCastSpeed+19- 0F2F F0               - comiss xmm6,xmm0
Game.GAME::Player::CapSpellCastSpeed+1C- 44 0F29 44 24 20      - movaps [rsp+20],xmm8
Game.GAME::Player::CapSpellCastSpeed+22- 44 0F28 C1            - movaps xmm8,xmm1
Game.GAME::Player::CapSpellCastSpeed+26- 76 6B                 - jna Game.GAME::Player::CapSpellCastSpeed+93
Game.GAME::Player::CapSpellCastSpeed+28- 0F29 7C 24 30         - movaps [rsp+30],xmm7
Game.GAME::Player::CapSpellCastSpeed+2D- F3 0F10 B9 6C4B0000   - movss xmm7,[rcx+00004B6C]
Game.GAME::Player::CapSpellCastSpeed+35- 0F2F F8               - comiss xmm7,xmm0
Game.GAME::Player::CapSpellCastSpeed+38- 76 53                 - jna Game.GAME::Player::CapSpellCastSpeed+8D
Game.GAME::Player::CapSpellCastSpeed+3A- 48 81 C1 80110000     - add rcx,00001180
}
</AssemblerScript>
    </CheatEntry>
  </CheatEntries>
</CheatTable>
Super Attack Speed 1.2.0.2 x64

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
  <CheatEntries>
    <CheatEntry>
      <ID>1174</ID>
      <Description>"Super Attack Speed 1.2.0.2 x64"</Description>
      <LastState/>
      <Color>FFFFFF</Color>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>//Grim Dawn 1.2.0.2 Updated
//1.1.9.8 was Game.GAME::Player::CapAttackSpeed+9F
//changed +9F to +AF (the last address in the whole Game.GAME::Player::CapAttackSpeed section for the range of the scan)
//0000471C changed to 00004B74
//00004718 changed to 00004B70

[ENABLE]
//Game.GAME::Player::CapAttackSpeed+E
aobscanregion(superAttackSpeed,Game.GAME::Player::CapAttackSpeed,Game.GAME::Player::CapAttackSpeed+AF,F30F10)
alloc(newmem,$1000,superAttackSpeed)

label(code)
label(return)

newmem:
  mov [rcx+00004B74],(float)1000
  movss xmm6,[rcx+00004B74]  //0x4B74 - maxDefaultAttackSpeed { 200 }
  jmp return

code:
  movss xmm6,[rcx+00004B70] //0x4B70 - currentDefaultAttackSpeed { 20 }
  jmp return

superAttackSpeed:
  jmp newmem
  nop 3
return:
registersymbol(superAttackSpeed)

[DISABLE]
superAttackSpeed:
  db F3 0F 10 B1 70 4B 00 00

unregistersymbol(superAttackSpeed)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Game.GAME::Player::CapAttackSpeed+E
Game.GAME::Player::CapSpellCastSpeed+AA - CC                    - int 3
Game.GAME::Player::CapSpellCastSpeed+AB - CC                    - int 3
Game.GAME::Player::CapSpellCastSpeed+AC - CC                    - int 3
Game.GAME::Player::CapSpellCastSpeed+AD - CC                    - int 3
Game.GAME::Player::CapSpellCastSpeed+AE - CC                    - int 3
Game.GAME::Player::CapSpellCastSpeed+AF - CC                    - int 3
Game.GAME::Player::CapAttackSpeed       - 40 53                 - push rbx
Game.GAME::Player::CapAttackSpeed+2     - 48 83 EC 50           - sub rsp,50
Game.GAME::Player::CapAttackSpeed+6     - 0F29 74 24 40         - movaps [rsp+40],xmm6
Game.GAME::Player::CapAttackSpeed+B     - 0F57 C0               - xorps xmm0,xmm0
// ---------- INJECTING HERE ----------
Game.GAME::Player::CapAttackSpeed+E     - F3 0F10 B1 704B0000   - movss xmm6,[rcx+00004B70]
// ---------- DONE INJECTING  ----------
Game.GAME::Player::CapAttackSpeed+16    - 48 8B D9              - mov rbx,rcx
Game.GAME::Player::CapAttackSpeed+19    - 0F2F F0               - comiss xmm6,xmm0
Game.GAME::Player::CapAttackSpeed+1C    - 44 0F29 44 24 20      - movaps [rsp+20],xmm8
Game.GAME::Player::CapAttackSpeed+22    - 44 0F28 C1            - movaps xmm8,xmm1
Game.GAME::Player::CapAttackSpeed+26    - 76 6B                 - jna Game.GAME::Player::CapAttackSpeed+93
Game.GAME::Player::CapAttackSpeed+28    - 0F29 7C 24 30         - movaps [rsp+30],xmm7
Game.GAME::Player::CapAttackSpeed+2D    - F3 0F10 B9 744B0000   - movss xmm7,[rcx+00004B74]
Game.GAME::Player::CapAttackSpeed+35    - 0F2F F8               - comiss xmm7,xmm0
Game.GAME::Player::CapAttackSpeed+38    - 76 53                 - jna Game.GAME::Player::CapAttackSpeed+8D
Game.GAME::Player::CapAttackSpeed+3A    - 48 81 C1 80110000     - add rcx,00001180
}
</AssemblerScript>
    </CheatEntry>
  </CheatEntries>
</CheatTable>
Super Run Speed 1.2.0.2 x64

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
  <CheatEntries>
    <CheatEntry>
      <ID>88047</ID>
      <Description>"Super Run Speed 1.2.0.2 x64"</Description>
      <Options moHideChildren="1"/>
      <LastState/>
      <Color>FFFFFF</Color>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>//Grim Dawn 1.2.0.2 Updated
//1.1.9.8 was Game.GAME::Player::CapRunSpeed+9F
//changed +9F to +AF (the last address in the whole Game.GAME::Player::CapRunSpeed section for the range of the scan)
//0000470C changed to 00004B60
//00004708 changed to 00004B64

[ENABLE]
//Game.GAME::Player::CapRunSpeed+E
aobscanregion(superRunSpeed,Game.GAME::Player::CapRunSpeed,Game.GAME::Player::CapRunSpeed+AF,F30F10)
alloc(newmem,$1000,superRunSpeed)

alloc(runSpeed_ptr,8)
registersymbol(runSpeed_ptr)

label(code)
label(return)

newmem:
  mov [runSpeed_ptr],rcx
  mov [rcx+00004B64],(float)1000  //0x4B64 - maxSpeed

code:
  movss xmm6,[rcx+00004B60]      //0x4B60 - currentSpeed
  jmp return

superRunSpeed:
  jmp newmem
  nop 3
return:
registersymbol(superRunSpeed)

[DISABLE]
superRunSpeed:
  db F3 0F 10 B1 60 4B 00 00

unregistersymbol(superRunSpeed)
unregistersymbol(runSpeed_ptr)
dealloc(runSpeed_ptr)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Game.GAME::Player::CapRunSpeed+E
Game.GAME::Player::GetReflectCap+A - CC                    - int 3
Game.GAME::Player::GetReflectCap+B - CC                    - int 3
Game.GAME::Player::GetReflectCap+C - CC                    - int 3
Game.GAME::Player::GetReflectCap+D - CC                    - int 3
Game.GAME::Player::GetReflectCap+E - CC                    - int 3
Game.GAME::Player::GetReflectCap+F - CC                    - int 3
Game.GAME::Player::CapRunSpeed     - 40 53                 - push rbx
Game.GAME::Player::CapRunSpeed+2   - 48 83 EC 50           - sub rsp,50
Game.GAME::Player::CapRunSpeed+6   - 0F29 74 24 40         - movaps [rsp+40],xmm6
Game.GAME::Player::CapRunSpeed+B   - 0F57 C0               - xorps xmm0,xmm0
// ---------- INJECTING HERE ----------
Game.GAME::Player::CapRunSpeed+E   - F3 0F10 B1 604B0000   - movss xmm6,[rcx+00004B60]
// ---------- DONE INJECTING  ----------
Game.GAME::Player::CapRunSpeed+16  - 48 8B D9              - mov rbx,rcx
Game.GAME::Player::CapRunSpeed+19  - 0F2F F0               - comiss xmm6,xmm0
Game.GAME::Player::CapRunSpeed+1C  - 44 0F29 44 24 20      - movaps [rsp+20],xmm8
Game.GAME::Player::CapRunSpeed+22  - 44 0F28 C1            - movaps xmm8,xmm1
Game.GAME::Player::CapRunSpeed+26  - 76 6B                 - jna Game.GAME::Player::CapRunSpeed+93
Game.GAME::Player::CapRunSpeed+28  - 0F29 7C 24 30         - movaps [rsp+30],xmm7
Game.GAME::Player::CapRunSpeed+2D  - F3 0F10 B9 644B0000   - movss xmm7,[rcx+00004B64]
Game.GAME::Player::CapRunSpeed+35  - 0F2F F8               - comiss xmm7,xmm0
Game.GAME::Player::CapRunSpeed+38  - 76 53                 - jna Game.GAME::Player::CapRunSpeed+8D
Game.GAME::Player::CapRunSpeed+3A  - 48 81 C1 80110000     - add rcx,00001180
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>88048</ID>
          <Description>"currentRunSpeed"</Description>
          <DropDownList ReadOnly="1" DescriptionOnly="1" DisplayValueAsItem="1">20:Default
135:Max Speed
250:Super Speed
500:Super Speed x2
750:Super Speed x3
1000:Super Speed x4
</DropDownList>
          <LastState Value="20" RealAddress="2576A4E0"/>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Float</VariableType>
          <Address>[runSpeed_ptr]+4B60</Address>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
</CheatTable>
Set Pet Limit to 20 for all Pets 1.2.0.2 x64

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
  <CheatEntries>
    <CheatEntry>
      <ID>134845</ID>
      <Description>"Set Pet Limit to 20 for all Pets 1.2.0.2"</Description>
      <LastState/>
      <Color>FFFFFF</Color>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>//Grim Dawn 1.2.0.0 Updated
//1.1.9.8 was Game.GAME::Skill::GetPetLimit+BC
//BC changed to BE
//1.1.9.8 was FF 8B C3 4C 8D 9C 24 E0 00 00 00
//E0 change to F0

[ENABLE]
//Game.GAME::Skill::GetPetLimit+BE
aobscanmodule(PETPOP,Game.dll,FF 8B C3 4C 8D 9C 24 F0 00 00 00) // should be unique
alloc(newmem,$1000,PETPOP)

label(code)
label(return)

newmem:
mov rbx,#20
mov rax,#20
code:
  lea r11,[rsp+000000F0]
  jmp return

PETPOP+03:
  jmp newmem
  nop 3
return:
registersymbol(PETPOP)

[DISABLE]
//code from here till the end of the code will be used to disable the cheat
PETPOP+03:
  db 4C 8D 9C 24 F0 00 00 00

unregistersymbol(PETPOP)
dealloc(newmem)

{
// 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 0EDDC7FF           - 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 20000000        - mov r8d,00000020
Game.GAME::Skill::GetPetLimit+B7 - E8 C486C6FF           - 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 F0000000  - 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>
    </CheatEntry>
  </CheatEntries>
</CheatTable>
Infinite Skill Points (999 locked) 1.2.0.2 x64 (re-wrote)

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
  <CheatEntries>
    <CheatEntry>
      <ID>134933</ID>
      <Description>"Infinite Skill Points (999 locked) 1.2.0.2"</Description>
      <LastState/>
      <Color>FFFFFF</Color>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>//Grim Dawn 1.2.0.2 Re-wrote

[ENABLE]
//Game.GAME::Character::GetSkillPoints
aobscanregion(infSkillPoints,Game.GAME::Character::GetSkillPoints,Game.GAME::Character::GetSkillPoints+F,8B)
alloc(newmem,$1000,infSkillPoints)

label(code)
label(return)

newmem:
  mov eax,#999
  jmp return

code:
  mov eax,[rcx+0000162C]
  jmp return

infSkillPoints:
  jmp newmem
  nop
return:
registersymbol(infSkillPoints)

[DISABLE]
infSkillPoints:
  db 8B 81 2C 16 00 00

unregistersymbol(infSkillPoints)
dealloc(newmem)

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

Game.GAME::Character::ResetModifierPoints+4C: CC                    - int 3
Game.GAME::Character::ResetModifierPoints+4D: CC                    - int 3
Game.GAME::Character::ResetModifierPoints+4E: CC                    - int 3
Game.GAME::Character::ResetModifierPoints+4F: CC                    - int 3
Game.GAME::Character::HasModifierPointsInUse: 48 81 C1 B0 0D 00 00  - add rcx,00000DB0
Game.GAME::Character::HasModifierPointsInUse+7: E9 E4 7E 02 00        - jmp Game.GAME::CharacterBio::HasModifierPointsInUse
Game.GAME::Character::HasModifierPointsInUse+C: CC                    - int 3
Game.GAME::Character::HasModifierPointsInUse+D: CC                    - int 3
Game.GAME::Character::HasModifierPointsInUse+E: CC                    - int 3
Game.GAME::Character::HasModifierPointsInUse+F: CC                    - int 3
// ---------- INJECTING HERE ----------
Game.GAME::Character::GetSkillPoints: 8B 81 2C 16 00 00     - mov eax,[rcx+0000162C]
// ---------- DONE INJECTING  ----------
Game.GAME::Character::GetSkillPoints+6: C3                    - ret
Game.GAME::Character::GetSkillPoints+7: CC                    - int 3
Game.GAME::Character::GetSkillPoints+8: CC                    - int 3
Game.GAME::Character::GetSkillPoints+9: CC                    - int 3
Game.GAME::Character::GetSkillPoints+A: CC                    - int 3
Game.GAME::Character::GetSkillPoints+B: CC                    - int 3
Game.GAME::Character::GetSkillPoints+C: CC                    - int 3
Game.GAME::Character::GetSkillPoints+D: CC                    - int 3
Game.GAME::Character::GetSkillPoints+E: CC                    - int 3
Game.GAME::Character::GetSkillPoints+F: CC                    - int 3
}
</AssemblerScript>
    </CheatEntry>
  </CheatEntries>
</CheatTable>
Infinite Devotion Points (999 locked) 1.2.0.2 x64 (re-wrote)

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
  <CheatEntries>
    <CheatEntry>
      <ID>134934</ID>
      <Description>"Infinite Devotion Points (999 locked) 1.2.0.2"</Description>
      <LastState/>
      <Color>FFFFFF</Color>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>//Grim Dawn 1.2.0.2 Re-wrote

[ENABLE]
aobscanregion(infDevotionPoints,Game.GAME::Character::GetDevotionPoints,Game.GAME::Character::GetDevotionPoints+F,8B)
alloc(newmem,$1000,infDevotionPoints)

label(code)
label(return)

newmem:
  mov eax,#999
  jmp return

code:
  mov eax,[rcx+00001630]
  jmp return

infDevotionPoints:
  jmp newmem
  nop
return:
registersymbol(infDevotionPoints)

[DISABLE]
infDevotionPoints:
  db 8B 81 30 16 00 00

unregistersymbol(infDevotionPoints)
dealloc(newmem)

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

Game.GAME::Character::GetModifierPoints+6: C3                 - ret
Game.GAME::Character::GetModifierPoints+7: CC                 - int 3
Game.GAME::Character::GetModifierPoints+8: CC                 - int 3
Game.GAME::Character::GetModifierPoints+9: CC                 - int 3
Game.GAME::Character::GetModifierPoints+A: CC                 - int 3
Game.GAME::Character::GetModifierPoints+B: CC                 - int 3
Game.GAME::Character::GetModifierPoints+C: CC                 - int 3
Game.GAME::Character::GetModifierPoints+D: CC                 - int 3
Game.GAME::Character::GetModifierPoints+E: CC                 - int 3
Game.GAME::Character::GetModifierPoints+F: CC                 - int 3
// ---------- INJECTING HERE ----------
Game.GAME::Character::GetDevotionPoints: 8B 81 30 16 00 00  - mov eax,[rcx+00001630]
// ---------- DONE INJECTING  ----------
Game.GAME::Character::GetDevotionPoints+6: C3                 - ret
Game.GAME::Character::GetDevotionPoints+7: CC                 - int 3
Game.GAME::Character::GetDevotionPoints+8: CC                 - int 3
Game.GAME::Character::GetDevotionPoints+9: CC                 - int 3
Game.GAME::Character::GetDevotionPoints+A: CC                 - int 3
Game.GAME::Character::GetDevotionPoints+B: CC                 - int 3
Game.GAME::Character::GetDevotionPoints+C: CC                 - int 3
Game.GAME::Character::GetDevotionPoints+D: CC                 - int 3
Game.GAME::Character::GetDevotionPoints+E: CC                 - int 3
Game.GAME::Character::GetDevotionPoints+F: CC                 - int 3
}
</AssemblerScript>
    </CheatEntry>
  </CheatEntries>
</CheatTable>
Infinite Attribute Points (999 locked) 1.2.0.2 x64

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
  <CheatEntries>
    <CheatEntry>
      <ID>134936</ID>
      <Description>"Infinite Attribute Points (999 locked) 1.2.0.2"</Description>
      <LastState/>
      <Color>FFFFFF</Color>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>//Grim Dawn 1.2.0.2 Re-wrote

[ENABLE]
aobscanregion(infAttributePoints,Game.GAME::Character::GetModifierPoints,Game.GAME::Character::GetModifierPoints+F,8B)
alloc(newmem,$1000,infAttributePoints)

label(code)
label(return)

newmem:
  mov eax,#999
  jmp return

code:
  mov eax,[rcx+00001628]
  jmp return

infAttributePoints:
  jmp newmem
  nop
return:
registersymbol(infAttributePoints)

[DISABLE]
infAttributePoints:
  db 8B 81 28 16 00 00

unregistersymbol(infAttributePoints)
dealloc(newmem)

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

Game.GAME::Character::GetNextLevelExperience: 48 81 C1 A8 15 00 00  - add rcx,000015A8
Game.GAME::Character::GetNextLevelExperience+7: E9 C4 B0 19 00        - jmp Game.GAME::Item::SetIgnoreItemSkillCache+AB0
Game.GAME::Character::GetNextLevelExperience+C: CC                    - int 3
Game.GAME::Character::GetNextLevelExperience+D: CC                    - int 3
Game.GAME::Character::GetNextLevelExperience+E: CC                    - int 3
Game.GAME::Character::GetNextLevelExperience+F: CC                    - int 3
Game.GAME::Character::IsMaxLevel: 8B 81 1C 16 00 00     - mov eax,[rcx+0000161C]
Game.GAME::Character::IsMaxLevel+6: 39 81 20 16 00 00     - cmp [rcx+00001620],eax
Game.GAME::Character::IsMaxLevel+C: 0F 93 C0              - setae al
Game.GAME::Character::IsMaxLevel+F: C3                    - ret
// ---------- INJECTING HERE ----------
Game.GAME::Character::GetModifierPoints: 8B 81 28 16 00 00     - mov eax,[rcx+00001628]
// ---------- DONE INJECTING  ----------
Game.GAME::Character::GetModifierPoints+6: C3                    - ret
Game.GAME::Character::GetModifierPoints+7: CC                    - int 3
Game.GAME::Character::GetModifierPoints+8: CC                    - int 3
Game.GAME::Character::GetModifierPoints+9: CC                    - int 3
Game.GAME::Character::GetModifierPoints+A: CC                    - int 3
Game.GAME::Character::GetModifierPoints+B: CC                    - int 3
Game.GAME::Character::GetModifierPoints+C: CC                    - int 3
Game.GAME::Character::GetModifierPoints+D: CC                    - int 3
Game.GAME::Character::GetModifierPoints+E: CC                    - int 3
Game.GAME::Character::GetModifierPoints+F: CC                    - int 3
}
</AssemblerScript>
    </CheatEntry>
  </CheatEntries>
</CheatTable>
Thank you very much for taking time of your day to update the table. Everything working fine for me.

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

Sensei7
Expert Cheater
Expert Cheater
Posts: 163
Joined: Wed Feb 08, 2023 4:04 pm
Reputation: 68

Re: Grim Dawn + All DLC's

Post by Sensei7 »

Chindopopito wrote:
Thu Nov 23, 2023 4:41 am
StinVec wrote:
Wed Nov 22, 2023 4:00 am
1.2.0.2.h2 x64 - Infinite Mana (temporary stand-in version)
1.2.0.2.h2 x64 - Super Spell Cast Speed
1.2.0.2.h2 x64 - Super Attack Speed
1.2.0.2.h2 x64 - Super Run Speed
1.2.0.2.h2 x64 - Set Pet Limit to 20 for all Pets
1.2.0.2.h2 x64 - Infinite Skill Points (999 locked) (re-wrote)
1.2.0.2.h2 x64 - Infinite Devotion Points (999 locked) (re-wrote)
1.2.0.2.h2 x64 - Infinite Attribute Points (999 locked)

Copy all of the code in the spoiler and paste it (CTRL+V) into your cheat table to add each option to your table.
Infinite Mana 1.2.0.2 x64 (temporary stand-in version)

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
  <CheatEntries>
    <CheatEntry>
      <ID>88045</ID>
      <Description>"Infinite Mana 1.2.0.2 x64"</Description>
      <LastState Activated="1"/>
      <Color>0000FF</Color>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>//Grim Dawn 1.2.0.2 Updated
//1.1.9.8 was F3 0F 10 81 A4 0D 00 00
//changed A4 to EC

define(address,Game.GAME::Character::GetCurrentMana)
define(bytes,F3 0F 10 81 EC 0D 00 00)

[ENABLE]
assert(address,bytes)
alloc(newmem,$100,Game.GAME::Character::GetCurrentMana)

label(code)
label(return)

newmem:
  cmp rbx,0 //enemies have common value 0x0
  je code
//  movss xmm1,[rbx+000012C0]  //1.1.9.8 maxMana 000012C0
//  movss [rcx+00000DEC],xmm1  //1.2.0.2 temp disabled
//  movss xmm0,[rcx+00000DEC]  //1.2.0.2 temp disabled
  mov [rcx+00000DEC],(float)250  //1.2.0.2 temp added
  movss xmm0,[rcx+00000DEC]
  jmp return

code:
  movss xmm0,[rcx+00000DEC]
  jmp return

address:
  jmp newmem
  nop
  nop
  nop
return:

[DISABLE]
address:
  db bytes
  // movss xmm0,[rcx+00000DEC]

dealloc(newmem)

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

Game.GAME::Character::ContributeMiscConversionAttributes+E6 - CC                    - int 3
Game.GAME::Character::ContributeMiscConversionAttributes+E7 - CC                    - int 3
Game.GAME::Character::ContributeMiscConversionAttributes+E8 - CC                    - int 3
Game.GAME::Character::ContributeMiscConversionAttributes+E9 - CC                    - int 3
Game.GAME::Character::ContributeMiscConversionAttributes+EA - CC                    - int 3
Game.GAME::Character::ContributeMiscConversionAttributes+EB - CC                    - int 3
Game.GAME::Character::ContributeMiscConversionAttributes+EC - CC                    - int 3
Game.GAME::Character::ContributeMiscConversionAttributes+ED - CC                    - int 3
Game.GAME::Character::ContributeMiscConversionAttributes+EE - CC                    - int 3
Game.GAME::Character::ContributeMiscConversionAttributes+EF - CC                    - int 3
// ---------- INJECTING HERE ----------
Game.GAME::Character::GetCurrentMana                        - F3 0F10 81 EC0D0000   - movss xmm0,[rcx+00000DEC]
// ---------- DONE INJECTING  ----------
Game.GAME::Character::GetCurrentMana+8                      - 0F57 C9               - xorps xmm1,xmm1
Game.GAME::Character::GetCurrentMana+B                      - F3 0F5F C1            - maxss xmm0,xmm1
Game.GAME::Character::GetCurrentMana+F                      - C3                    - ret
Game.GAME::Character::SetCurrentMana                        - 40 53                 - push rbx
Game.GAME::Character::SetCurrentMana+2                      - 48 83 EC 30           - sub rsp,30
Game.GAME::Character::SetCurrentMana+6                      - 48 8B D9              - mov rbx,rcx
Game.GAME::Character::SetCurrentMana+9                      - 0F29 74 24 20         - movaps [rsp+20],xmm6
Game.GAME::Character::SetCurrentMana+E                      - 48 81 C1 480E0000     - add rcx,00000E48
Game.GAME::Character::SetCurrentMana+15                     - BA 05000000           - mov edx,00000005
Game.GAME::Character::SetCurrentMana+1A                     - 0F28 F1               - movaps xmm6,xmm1
}
</AssemblerScript>
    </CheatEntry>
  </CheatEntries>
</CheatTable>
  • Info on temporary Infinite Mana version
    Until I find a way to get the accumulated max mana value to be copied to your current mana and frozen, here is a temporary version.

    This version has the updated Current Mana address and is altered to set your current mana to 250, which is what your starting max mana is.

    What your current mana value is and how much mana a skill costs doesn't seem to matter as long as your mana is locked and doesn't decrease. So even if you have a max mana of 10,000, have 20 activated auras and buffs, and are casting a high energy skill, your mana is still always locked at 250.

    The only potential issue is an aesthetic one. When you level up and you have a higher max mana, the locked 250 current mana will cause your bar to appear mostly empty. If this partially/mostly empty mana bar bothers you, you can just change the float value in the code to whatever your current max mana value is to have your bar appear as full.

    If you raise the value to higher than your max mana, the blue/green mana bar background will not be contained within the mana bar and will stretch across your screen to the left.
Super Spell Cast Speed 1.2.0.2 x64

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
  <CheatEntries>
    <CheatEntry>
      <ID>1175</ID>
      <Description>"Super Spell Cast Speed 1.2.0.2 x64"</Description>
      <LastState/>
      <Color>FFFFFF</Color>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>//Grim Dawn 1.2.0.2 Updated
//1.1.9.8 was GAME::Player::CapSpellCastSpeed+9F
//changed +9F to +AF (the last address in the whole GAME::Player::CapSpellCastSpeed section for the range of the scan)
//00004714 changed to 00004B6C
//00004710 changed to 00004B68

[ENABLE]
//GAME::Player::CapSpellCastSpeed+E
aobscanregion(superSpellCastSpeed,GAME::Player::CapSpellCastSpeed,GAME::Player::CapSpellCastSpeed+AF,F30F10)
alloc(newmem,$1000,superSpellCastSpeed)

label(code)
label(return)

newmem:
  mov [rcx+00004B6C],(float)1000  //maxSpellCastSpeed
  movss xmm6,[rcx+00004B6C]
  jmp return

code:
  movss xmm6,[rcx+00004B68]  //currentSpellCastSpeed
  jmp return

superSpellCastSpeed:
  jmp newmem
  nop 3
return:
registersymbol(superSpellCastSpeed)

[DISABLE]
superSpellCastSpeed:
  db F3 0F 10 B1 68 4B 00 00

unregistersymbol(superSpellCastSpeed)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Game.GAME::Player::CapSpellCastSpeed+E

Game.GAME::Player::CapRunSpeed+AA - CC                    - int 3
Game.GAME::Player::CapRunSpeed+AB - CC                    - int 3
Game.GAME::Player::CapRunSpeed+AC - CC                    - int 3
Game.GAME::Player::CapRunSpeed+AD - CC                    - int 3
Game.GAME::Player::CapRunSpeed+AE - CC                    - int 3
Game.GAME::Player::CapRunSpeed+AF - CC                    - int 3
Game.GAME::Player::CapSpellCastSpeed- 40 53                 - push rbx
Game.GAME::Player::CapSpellCastSpeed+2- 48 83 EC 50           - sub rsp,50
Game.GAME::Player::CapSpellCastSpeed+6- 0F29 74 24 40         - movaps [rsp+40],xmm6
Game.GAME::Player::CapSpellCastSpeed+B- 0F57 C0               - xorps xmm0,xmm0
// ---------- INJECTING HERE ----------
Game.GAME::Player::CapSpellCastSpeed+E- F3 0F10 B1 684B0000   - movss xmm6,[rcx+00004B68]
// ---------- DONE INJECTING  ----------
Game.GAME::Player::CapSpellCastSpeed+16- 48 8B D9              - mov rbx,rcx
Game.GAME::Player::CapSpellCastSpeed+19- 0F2F F0               - comiss xmm6,xmm0
Game.GAME::Player::CapSpellCastSpeed+1C- 44 0F29 44 24 20      - movaps [rsp+20],xmm8
Game.GAME::Player::CapSpellCastSpeed+22- 44 0F28 C1            - movaps xmm8,xmm1
Game.GAME::Player::CapSpellCastSpeed+26- 76 6B                 - jna Game.GAME::Player::CapSpellCastSpeed+93
Game.GAME::Player::CapSpellCastSpeed+28- 0F29 7C 24 30         - movaps [rsp+30],xmm7
Game.GAME::Player::CapSpellCastSpeed+2D- F3 0F10 B9 6C4B0000   - movss xmm7,[rcx+00004B6C]
Game.GAME::Player::CapSpellCastSpeed+35- 0F2F F8               - comiss xmm7,xmm0
Game.GAME::Player::CapSpellCastSpeed+38- 76 53                 - jna Game.GAME::Player::CapSpellCastSpeed+8D
Game.GAME::Player::CapSpellCastSpeed+3A- 48 81 C1 80110000     - add rcx,00001180
}
</AssemblerScript>
    </CheatEntry>
  </CheatEntries>
</CheatTable>
Super Attack Speed 1.2.0.2 x64

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
  <CheatEntries>
    <CheatEntry>
      <ID>1174</ID>
      <Description>"Super Attack Speed 1.2.0.2 x64"</Description>
      <LastState/>
      <Color>FFFFFF</Color>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>//Grim Dawn 1.2.0.2 Updated
//1.1.9.8 was Game.GAME::Player::CapAttackSpeed+9F
//changed +9F to +AF (the last address in the whole Game.GAME::Player::CapAttackSpeed section for the range of the scan)
//0000471C changed to 00004B74
//00004718 changed to 00004B70

[ENABLE]
//Game.GAME::Player::CapAttackSpeed+E
aobscanregion(superAttackSpeed,Game.GAME::Player::CapAttackSpeed,Game.GAME::Player::CapAttackSpeed+AF,F30F10)
alloc(newmem,$1000,superAttackSpeed)

label(code)
label(return)

newmem:
  mov [rcx+00004B74],(float)1000
  movss xmm6,[rcx+00004B74]  //0x4B74 - maxDefaultAttackSpeed { 200 }
  jmp return

code:
  movss xmm6,[rcx+00004B70] //0x4B70 - currentDefaultAttackSpeed { 20 }
  jmp return

superAttackSpeed:
  jmp newmem
  nop 3
return:
registersymbol(superAttackSpeed)

[DISABLE]
superAttackSpeed:
  db F3 0F 10 B1 70 4B 00 00

unregistersymbol(superAttackSpeed)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Game.GAME::Player::CapAttackSpeed+E
Game.GAME::Player::CapSpellCastSpeed+AA - CC                    - int 3
Game.GAME::Player::CapSpellCastSpeed+AB - CC                    - int 3
Game.GAME::Player::CapSpellCastSpeed+AC - CC                    - int 3
Game.GAME::Player::CapSpellCastSpeed+AD - CC                    - int 3
Game.GAME::Player::CapSpellCastSpeed+AE - CC                    - int 3
Game.GAME::Player::CapSpellCastSpeed+AF - CC                    - int 3
Game.GAME::Player::CapAttackSpeed       - 40 53                 - push rbx
Game.GAME::Player::CapAttackSpeed+2     - 48 83 EC 50           - sub rsp,50
Game.GAME::Player::CapAttackSpeed+6     - 0F29 74 24 40         - movaps [rsp+40],xmm6
Game.GAME::Player::CapAttackSpeed+B     - 0F57 C0               - xorps xmm0,xmm0
// ---------- INJECTING HERE ----------
Game.GAME::Player::CapAttackSpeed+E     - F3 0F10 B1 704B0000   - movss xmm6,[rcx+00004B70]
// ---------- DONE INJECTING  ----------
Game.GAME::Player::CapAttackSpeed+16    - 48 8B D9              - mov rbx,rcx
Game.GAME::Player::CapAttackSpeed+19    - 0F2F F0               - comiss xmm6,xmm0
Game.GAME::Player::CapAttackSpeed+1C    - 44 0F29 44 24 20      - movaps [rsp+20],xmm8
Game.GAME::Player::CapAttackSpeed+22    - 44 0F28 C1            - movaps xmm8,xmm1
Game.GAME::Player::CapAttackSpeed+26    - 76 6B                 - jna Game.GAME::Player::CapAttackSpeed+93
Game.GAME::Player::CapAttackSpeed+28    - 0F29 7C 24 30         - movaps [rsp+30],xmm7
Game.GAME::Player::CapAttackSpeed+2D    - F3 0F10 B9 744B0000   - movss xmm7,[rcx+00004B74]
Game.GAME::Player::CapAttackSpeed+35    - 0F2F F8               - comiss xmm7,xmm0
Game.GAME::Player::CapAttackSpeed+38    - 76 53                 - jna Game.GAME::Player::CapAttackSpeed+8D
Game.GAME::Player::CapAttackSpeed+3A    - 48 81 C1 80110000     - add rcx,00001180
}
</AssemblerScript>
    </CheatEntry>
  </CheatEntries>
</CheatTable>
Super Run Speed 1.2.0.2 x64

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
  <CheatEntries>
    <CheatEntry>
      <ID>88047</ID>
      <Description>"Super Run Speed 1.2.0.2 x64"</Description>
      <Options moHideChildren="1"/>
      <LastState/>
      <Color>FFFFFF</Color>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>//Grim Dawn 1.2.0.2 Updated
//1.1.9.8 was Game.GAME::Player::CapRunSpeed+9F
//changed +9F to +AF (the last address in the whole Game.GAME::Player::CapRunSpeed section for the range of the scan)
//0000470C changed to 00004B60
//00004708 changed to 00004B64

[ENABLE]
//Game.GAME::Player::CapRunSpeed+E
aobscanregion(superRunSpeed,Game.GAME::Player::CapRunSpeed,Game.GAME::Player::CapRunSpeed+AF,F30F10)
alloc(newmem,$1000,superRunSpeed)

alloc(runSpeed_ptr,8)
registersymbol(runSpeed_ptr)

label(code)
label(return)

newmem:
  mov [runSpeed_ptr],rcx
  mov [rcx+00004B64],(float)1000  //0x4B64 - maxSpeed

code:
  movss xmm6,[rcx+00004B60]      //0x4B60 - currentSpeed
  jmp return

superRunSpeed:
  jmp newmem
  nop 3
return:
registersymbol(superRunSpeed)

[DISABLE]
superRunSpeed:
  db F3 0F 10 B1 60 4B 00 00

unregistersymbol(superRunSpeed)
unregistersymbol(runSpeed_ptr)
dealloc(runSpeed_ptr)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Game.GAME::Player::CapRunSpeed+E
Game.GAME::Player::GetReflectCap+A - CC                    - int 3
Game.GAME::Player::GetReflectCap+B - CC                    - int 3
Game.GAME::Player::GetReflectCap+C - CC                    - int 3
Game.GAME::Player::GetReflectCap+D - CC                    - int 3
Game.GAME::Player::GetReflectCap+E - CC                    - int 3
Game.GAME::Player::GetReflectCap+F - CC                    - int 3
Game.GAME::Player::CapRunSpeed     - 40 53                 - push rbx
Game.GAME::Player::CapRunSpeed+2   - 48 83 EC 50           - sub rsp,50
Game.GAME::Player::CapRunSpeed+6   - 0F29 74 24 40         - movaps [rsp+40],xmm6
Game.GAME::Player::CapRunSpeed+B   - 0F57 C0               - xorps xmm0,xmm0
// ---------- INJECTING HERE ----------
Game.GAME::Player::CapRunSpeed+E   - F3 0F10 B1 604B0000   - movss xmm6,[rcx+00004B60]
// ---------- DONE INJECTING  ----------
Game.GAME::Player::CapRunSpeed+16  - 48 8B D9              - mov rbx,rcx
Game.GAME::Player::CapRunSpeed+19  - 0F2F F0               - comiss xmm6,xmm0
Game.GAME::Player::CapRunSpeed+1C  - 44 0F29 44 24 20      - movaps [rsp+20],xmm8
Game.GAME::Player::CapRunSpeed+22  - 44 0F28 C1            - movaps xmm8,xmm1
Game.GAME::Player::CapRunSpeed+26  - 76 6B                 - jna Game.GAME::Player::CapRunSpeed+93
Game.GAME::Player::CapRunSpeed+28  - 0F29 7C 24 30         - movaps [rsp+30],xmm7
Game.GAME::Player::CapRunSpeed+2D  - F3 0F10 B9 644B0000   - movss xmm7,[rcx+00004B64]
Game.GAME::Player::CapRunSpeed+35  - 0F2F F8               - comiss xmm7,xmm0
Game.GAME::Player::CapRunSpeed+38  - 76 53                 - jna Game.GAME::Player::CapRunSpeed+8D
Game.GAME::Player::CapRunSpeed+3A  - 48 81 C1 80110000     - add rcx,00001180
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>88048</ID>
          <Description>"currentRunSpeed"</Description>
          <DropDownList ReadOnly="1" DescriptionOnly="1" DisplayValueAsItem="1">20:Default
135:Max Speed
250:Super Speed
500:Super Speed x2
750:Super Speed x3
1000:Super Speed x4
</DropDownList>
          <LastState Value="20" RealAddress="2576A4E0"/>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Float</VariableType>
          <Address>[runSpeed_ptr]+4B60</Address>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
</CheatTable>
Set Pet Limit to 20 for all Pets 1.2.0.2 x64

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
  <CheatEntries>
    <CheatEntry>
      <ID>134845</ID>
      <Description>"Set Pet Limit to 20 for all Pets 1.2.0.2"</Description>
      <LastState/>
      <Color>FFFFFF</Color>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>//Grim Dawn 1.2.0.0 Updated
//1.1.9.8 was Game.GAME::Skill::GetPetLimit+BC
//BC changed to BE
//1.1.9.8 was FF 8B C3 4C 8D 9C 24 E0 00 00 00
//E0 change to F0

[ENABLE]
//Game.GAME::Skill::GetPetLimit+BE
aobscanmodule(PETPOP,Game.dll,FF 8B C3 4C 8D 9C 24 F0 00 00 00) // should be unique
alloc(newmem,$1000,PETPOP)

label(code)
label(return)

newmem:
mov rbx,#20
mov rax,#20
code:
  lea r11,[rsp+000000F0]
  jmp return

PETPOP+03:
  jmp newmem
  nop 3
return:
registersymbol(PETPOP)

[DISABLE]
//code from here till the end of the code will be used to disable the cheat
PETPOP+03:
  db 4C 8D 9C 24 F0 00 00 00

unregistersymbol(PETPOP)
dealloc(newmem)

{
// 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 0EDDC7FF           - 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 20000000        - mov r8d,00000020
Game.GAME::Skill::GetPetLimit+B7 - E8 C486C6FF           - 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 F0000000  - 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>
    </CheatEntry>
  </CheatEntries>
</CheatTable>
Infinite Skill Points (999 locked) 1.2.0.2 x64 (re-wrote)

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
  <CheatEntries>
    <CheatEntry>
      <ID>134933</ID>
      <Description>"Infinite Skill Points (999 locked) 1.2.0.2"</Description>
      <LastState/>
      <Color>FFFFFF</Color>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>//Grim Dawn 1.2.0.2 Re-wrote

[ENABLE]
//Game.GAME::Character::GetSkillPoints
aobscanregion(infSkillPoints,Game.GAME::Character::GetSkillPoints,Game.GAME::Character::GetSkillPoints+F,8B)
alloc(newmem,$1000,infSkillPoints)

label(code)
label(return)

newmem:
  mov eax,#999
  jmp return

code:
  mov eax,[rcx+0000162C]
  jmp return

infSkillPoints:
  jmp newmem
  nop
return:
registersymbol(infSkillPoints)

[DISABLE]
infSkillPoints:
  db 8B 81 2C 16 00 00

unregistersymbol(infSkillPoints)
dealloc(newmem)

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

Game.GAME::Character::ResetModifierPoints+4C: CC                    - int 3
Game.GAME::Character::ResetModifierPoints+4D: CC                    - int 3
Game.GAME::Character::ResetModifierPoints+4E: CC                    - int 3
Game.GAME::Character::ResetModifierPoints+4F: CC                    - int 3
Game.GAME::Character::HasModifierPointsInUse: 48 81 C1 B0 0D 00 00  - add rcx,00000DB0
Game.GAME::Character::HasModifierPointsInUse+7: E9 E4 7E 02 00        - jmp Game.GAME::CharacterBio::HasModifierPointsInUse
Game.GAME::Character::HasModifierPointsInUse+C: CC                    - int 3
Game.GAME::Character::HasModifierPointsInUse+D: CC                    - int 3
Game.GAME::Character::HasModifierPointsInUse+E: CC                    - int 3
Game.GAME::Character::HasModifierPointsInUse+F: CC                    - int 3
// ---------- INJECTING HERE ----------
Game.GAME::Character::GetSkillPoints: 8B 81 2C 16 00 00     - mov eax,[rcx+0000162C]
// ---------- DONE INJECTING  ----------
Game.GAME::Character::GetSkillPoints+6: C3                    - ret
Game.GAME::Character::GetSkillPoints+7: CC                    - int 3
Game.GAME::Character::GetSkillPoints+8: CC                    - int 3
Game.GAME::Character::GetSkillPoints+9: CC                    - int 3
Game.GAME::Character::GetSkillPoints+A: CC                    - int 3
Game.GAME::Character::GetSkillPoints+B: CC                    - int 3
Game.GAME::Character::GetSkillPoints+C: CC                    - int 3
Game.GAME::Character::GetSkillPoints+D: CC                    - int 3
Game.GAME::Character::GetSkillPoints+E: CC                    - int 3
Game.GAME::Character::GetSkillPoints+F: CC                    - int 3
}
</AssemblerScript>
    </CheatEntry>
  </CheatEntries>
</CheatTable>
Infinite Devotion Points (999 locked) 1.2.0.2 x64 (re-wrote)

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
  <CheatEntries>
    <CheatEntry>
      <ID>134934</ID>
      <Description>"Infinite Devotion Points (999 locked) 1.2.0.2"</Description>
      <LastState/>
      <Color>FFFFFF</Color>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>//Grim Dawn 1.2.0.2 Re-wrote

[ENABLE]
aobscanregion(infDevotionPoints,Game.GAME::Character::GetDevotionPoints,Game.GAME::Character::GetDevotionPoints+F,8B)
alloc(newmem,$1000,infDevotionPoints)

label(code)
label(return)

newmem:
  mov eax,#999
  jmp return

code:
  mov eax,[rcx+00001630]
  jmp return

infDevotionPoints:
  jmp newmem
  nop
return:
registersymbol(infDevotionPoints)

[DISABLE]
infDevotionPoints:
  db 8B 81 30 16 00 00

unregistersymbol(infDevotionPoints)
dealloc(newmem)

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

Game.GAME::Character::GetModifierPoints+6: C3                 - ret
Game.GAME::Character::GetModifierPoints+7: CC                 - int 3
Game.GAME::Character::GetModifierPoints+8: CC                 - int 3
Game.GAME::Character::GetModifierPoints+9: CC                 - int 3
Game.GAME::Character::GetModifierPoints+A: CC                 - int 3
Game.GAME::Character::GetModifierPoints+B: CC                 - int 3
Game.GAME::Character::GetModifierPoints+C: CC                 - int 3
Game.GAME::Character::GetModifierPoints+D: CC                 - int 3
Game.GAME::Character::GetModifierPoints+E: CC                 - int 3
Game.GAME::Character::GetModifierPoints+F: CC                 - int 3
// ---------- INJECTING HERE ----------
Game.GAME::Character::GetDevotionPoints: 8B 81 30 16 00 00  - mov eax,[rcx+00001630]
// ---------- DONE INJECTING  ----------
Game.GAME::Character::GetDevotionPoints+6: C3                 - ret
Game.GAME::Character::GetDevotionPoints+7: CC                 - int 3
Game.GAME::Character::GetDevotionPoints+8: CC                 - int 3
Game.GAME::Character::GetDevotionPoints+9: CC                 - int 3
Game.GAME::Character::GetDevotionPoints+A: CC                 - int 3
Game.GAME::Character::GetDevotionPoints+B: CC                 - int 3
Game.GAME::Character::GetDevotionPoints+C: CC                 - int 3
Game.GAME::Character::GetDevotionPoints+D: CC                 - int 3
Game.GAME::Character::GetDevotionPoints+E: CC                 - int 3
Game.GAME::Character::GetDevotionPoints+F: CC                 - int 3
}
</AssemblerScript>
    </CheatEntry>
  </CheatEntries>
</CheatTable>
Infinite Attribute Points (999 locked) 1.2.0.2 x64

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
  <CheatEntries>
    <CheatEntry>
      <ID>134936</ID>
      <Description>"Infinite Attribute Points (999 locked) 1.2.0.2"</Description>
      <LastState/>
      <Color>FFFFFF</Color>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>//Grim Dawn 1.2.0.2 Re-wrote

[ENABLE]
aobscanregion(infAttributePoints,Game.GAME::Character::GetModifierPoints,Game.GAME::Character::GetModifierPoints+F,8B)
alloc(newmem,$1000,infAttributePoints)

label(code)
label(return)

newmem:
  mov eax,#999
  jmp return

code:
  mov eax,[rcx+00001628]
  jmp return

infAttributePoints:
  jmp newmem
  nop
return:
registersymbol(infAttributePoints)

[DISABLE]
infAttributePoints:
  db 8B 81 28 16 00 00

unregistersymbol(infAttributePoints)
dealloc(newmem)

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

Game.GAME::Character::GetNextLevelExperience: 48 81 C1 A8 15 00 00  - add rcx,000015A8
Game.GAME::Character::GetNextLevelExperience+7: E9 C4 B0 19 00        - jmp Game.GAME::Item::SetIgnoreItemSkillCache+AB0
Game.GAME::Character::GetNextLevelExperience+C: CC                    - int 3
Game.GAME::Character::GetNextLevelExperience+D: CC                    - int 3
Game.GAME::Character::GetNextLevelExperience+E: CC                    - int 3
Game.GAME::Character::GetNextLevelExperience+F: CC                    - int 3
Game.GAME::Character::IsMaxLevel: 8B 81 1C 16 00 00     - mov eax,[rcx+0000161C]
Game.GAME::Character::IsMaxLevel+6: 39 81 20 16 00 00     - cmp [rcx+00001620],eax
Game.GAME::Character::IsMaxLevel+C: 0F 93 C0              - setae al
Game.GAME::Character::IsMaxLevel+F: C3                    - ret
// ---------- INJECTING HERE ----------
Game.GAME::Character::GetModifierPoints: 8B 81 28 16 00 00     - mov eax,[rcx+00001628]
// ---------- DONE INJECTING  ----------
Game.GAME::Character::GetModifierPoints+6: C3                    - ret
Game.GAME::Character::GetModifierPoints+7: CC                    - int 3
Game.GAME::Character::GetModifierPoints+8: CC                    - int 3
Game.GAME::Character::GetModifierPoints+9: CC                    - int 3
Game.GAME::Character::GetModifierPoints+A: CC                    - int 3
Game.GAME::Character::GetModifierPoints+B: CC                    - int 3
Game.GAME::Character::GetModifierPoints+C: CC                    - int 3
Game.GAME::Character::GetModifierPoints+D: CC                    - int 3
Game.GAME::Character::GetModifierPoints+E: CC                    - int 3
Game.GAME::Character::GetModifierPoints+F: CC                    - int 3
}
</AssemblerScript>
    </CheatEntry>
  </CheatEntries>
</CheatTable>
Thank you very much for taking time of your day to update the table. Everything working fine for me.
It's possibile make a full cheat table file for download,thx.

grimmboi
What is cheating?
What is cheating?
Posts: 2
Joined: Wed Nov 22, 2023 10:28 pm
Reputation: 1

Re: Grim Dawn + All DLC's

Post by grimmboi »

StinVec wrote:
Wed Nov 22, 2023 11:17 pm
@grimmboi You and everyone are very welcome! I'm glad to try to help out.

Are you certain you are running and are trying to activate the options on the x64 version of the game and not the 32bit?

If so, I haven't done any work on 32bit options for this 1.2 update and likely will not. I don't really understand why anyone would choose 32bit over 64bit or why there even is a 32bit version that can be played. If you or others could enlighten me on why 32bit would even be used and if most people are using that over the 64bit for a certain reason, maybe I'll try to do 32bit updates for those options.

If you are using x64, are you certain you are updated to at least 1.2.0.0 or the current 1.2.0.2.h2 version?

_____NOTE also:
I am still adding to the above post as long as it doesn't hit the post character limit.
Just added Set Pet Limit to 20 for all Pets 1.2.0.2 to it.
Yes I am running the x64 (always) version and version 1.2.0.2....

can now confirm that invincibility and other options works :)

R3V0L
Cheater
Cheater
Posts: 31
Joined: Sun May 12, 2019 8:26 pm
Reputation: 37

Re: Grim Dawn + All DLC's

Post by R3V0L »

StinVec wrote:
Wed Nov 22, 2023 4:00 am
1.2.0.2.h2 x64 - Infinite Mana (temporary stand-in version)
1.2.0.2.h2 x64 - Super Spell Cast Speed
1.2.0.2.h2 x64 - Super Attack Speed
1.2.0.2.h2 x64 - Super Run Speed
1.2.0.2.h2 x64 - Set Pet Limit to 20 for all Pets
1.2.0.2.h2 x64 - Infinite Skill Points (999 locked) (re-wrote)
1.2.0.2.h2 x64 - Infinite Devotion Points (999 locked) (re-wrote)
1.2.0.2.h2 x64 - Infinite Attribute Points (999 locked)

Copy all of the code in the spoiler and paste it (CTRL+V) into your cheat table to add each option to your table.
Infinite Mana 1.2.0.2 x64 (temporary stand-in version)

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
  <CheatEntries>
    <CheatEntry>
      <ID>88045</ID>
      <Description>"Infinite Mana 1.2.0.2 x64"</Description>
      <LastState Activated="1"/>
      <Color>0000FF</Color>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>//Grim Dawn 1.2.0.2 Updated
//1.1.9.8 was F3 0F 10 81 A4 0D 00 00
//changed A4 to EC

define(address,Game.GAME::Character::GetCurrentMana)
define(bytes,F3 0F 10 81 EC 0D 00 00)

[ENABLE]
assert(address,bytes)
alloc(newmem,$100,Game.GAME::Character::GetCurrentMana)

label(code)
label(return)

newmem:
  cmp rbx,0 //enemies have common value 0x0
  je code
//  movss xmm1,[rbx+000012C0]  //1.1.9.8 maxMana 000012C0
//  movss [rcx+00000DEC],xmm1  //1.2.0.2 temp disabled
//  movss xmm0,[rcx+00000DEC]  //1.2.0.2 temp disabled
  mov [rcx+00000DEC],(float)250  //1.2.0.2 temp added
  movss xmm0,[rcx+00000DEC]
  jmp return

code:
  movss xmm0,[rcx+00000DEC]
  jmp return

address:
  jmp newmem
  nop
  nop
  nop
return:

[DISABLE]
address:
  db bytes
  // movss xmm0,[rcx+00000DEC]

dealloc(newmem)

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

Game.GAME::Character::ContributeMiscConversionAttributes+E6 - CC                    - int 3
Game.GAME::Character::ContributeMiscConversionAttributes+E7 - CC                    - int 3
Game.GAME::Character::ContributeMiscConversionAttributes+E8 - CC                    - int 3
Game.GAME::Character::ContributeMiscConversionAttributes+E9 - CC                    - int 3
Game.GAME::Character::ContributeMiscConversionAttributes+EA - CC                    - int 3
Game.GAME::Character::ContributeMiscConversionAttributes+EB - CC                    - int 3
Game.GAME::Character::ContributeMiscConversionAttributes+EC - CC                    - int 3
Game.GAME::Character::ContributeMiscConversionAttributes+ED - CC                    - int 3
Game.GAME::Character::ContributeMiscConversionAttributes+EE - CC                    - int 3
Game.GAME::Character::ContributeMiscConversionAttributes+EF - CC                    - int 3
// ---------- INJECTING HERE ----------
Game.GAME::Character::GetCurrentMana                        - F3 0F10 81 EC0D0000   - movss xmm0,[rcx+00000DEC]
// ---------- DONE INJECTING  ----------
Game.GAME::Character::GetCurrentMana+8                      - 0F57 C9               - xorps xmm1,xmm1
Game.GAME::Character::GetCurrentMana+B                      - F3 0F5F C1            - maxss xmm0,xmm1
Game.GAME::Character::GetCurrentMana+F                      - C3                    - ret
Game.GAME::Character::SetCurrentMana                        - 40 53                 - push rbx
Game.GAME::Character::SetCurrentMana+2                      - 48 83 EC 30           - sub rsp,30
Game.GAME::Character::SetCurrentMana+6                      - 48 8B D9              - mov rbx,rcx
Game.GAME::Character::SetCurrentMana+9                      - 0F29 74 24 20         - movaps [rsp+20],xmm6
Game.GAME::Character::SetCurrentMana+E                      - 48 81 C1 480E0000     - add rcx,00000E48
Game.GAME::Character::SetCurrentMana+15                     - BA 05000000           - mov edx,00000005
Game.GAME::Character::SetCurrentMana+1A                     - 0F28 F1               - movaps xmm6,xmm1
}
</AssemblerScript>
    </CheatEntry>
  </CheatEntries>
</CheatTable>
  • Info on temporary Infinite Mana version
    Until I find a way to get the accumulated max mana value to be copied to your current mana and frozen, here is a temporary version.

    This version has the updated Current Mana address and is altered to set your current mana to 250, which is what your starting max mana is.

    What your current mana value is and how much mana a skill costs doesn't seem to matter as long as your mana is locked and doesn't decrease. So even if you have a max mana of 10,000, have 20 activated auras and buffs, and are casting a high energy skill, your mana is still always locked at 250.

    The only potential issue is an aesthetic one. When you level up and you have a higher max mana, the locked 250 current mana will cause your bar to appear mostly empty. If this partially/mostly empty mana bar bothers you, you can just change the float value in the code to whatever your current max mana value is to have your bar appear as full.

    If you raise the value to higher than your max mana, the blue/green mana bar background will not be contained within the mana bar and will stretch across your screen to the left.
Super Spell Cast Speed 1.2.0.2 x64

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
  <CheatEntries>
    <CheatEntry>
      <ID>1175</ID>
      <Description>"Super Spell Cast Speed 1.2.0.2 x64"</Description>
      <LastState/>
      <Color>FFFFFF</Color>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>//Grim Dawn 1.2.0.2 Updated
//1.1.9.8 was GAME::Player::CapSpellCastSpeed+9F
//changed +9F to +AF (the last address in the whole GAME::Player::CapSpellCastSpeed section for the range of the scan)
//00004714 changed to 00004B6C
//00004710 changed to 00004B68

[ENABLE]
//GAME::Player::CapSpellCastSpeed+E
aobscanregion(superSpellCastSpeed,GAME::Player::CapSpellCastSpeed,GAME::Player::CapSpellCastSpeed+AF,F30F10)
alloc(newmem,$1000,superSpellCastSpeed)

label(code)
label(return)

newmem:
  mov [rcx+00004B6C],(float)1000  //maxSpellCastSpeed
  movss xmm6,[rcx+00004B6C]
  jmp return

code:
  movss xmm6,[rcx+00004B68]  //currentSpellCastSpeed
  jmp return

superSpellCastSpeed:
  jmp newmem
  nop 3
return:
registersymbol(superSpellCastSpeed)

[DISABLE]
superSpellCastSpeed:
  db F3 0F 10 B1 68 4B 00 00

unregistersymbol(superSpellCastSpeed)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Game.GAME::Player::CapSpellCastSpeed+E

Game.GAME::Player::CapRunSpeed+AA - CC                    - int 3
Game.GAME::Player::CapRunSpeed+AB - CC                    - int 3
Game.GAME::Player::CapRunSpeed+AC - CC                    - int 3
Game.GAME::Player::CapRunSpeed+AD - CC                    - int 3
Game.GAME::Player::CapRunSpeed+AE - CC                    - int 3
Game.GAME::Player::CapRunSpeed+AF - CC                    - int 3
Game.GAME::Player::CapSpellCastSpeed- 40 53                 - push rbx
Game.GAME::Player::CapSpellCastSpeed+2- 48 83 EC 50           - sub rsp,50
Game.GAME::Player::CapSpellCastSpeed+6- 0F29 74 24 40         - movaps [rsp+40],xmm6
Game.GAME::Player::CapSpellCastSpeed+B- 0F57 C0               - xorps xmm0,xmm0
// ---------- INJECTING HERE ----------
Game.GAME::Player::CapSpellCastSpeed+E- F3 0F10 B1 684B0000   - movss xmm6,[rcx+00004B68]
// ---------- DONE INJECTING  ----------
Game.GAME::Player::CapSpellCastSpeed+16- 48 8B D9              - mov rbx,rcx
Game.GAME::Player::CapSpellCastSpeed+19- 0F2F F0               - comiss xmm6,xmm0
Game.GAME::Player::CapSpellCastSpeed+1C- 44 0F29 44 24 20      - movaps [rsp+20],xmm8
Game.GAME::Player::CapSpellCastSpeed+22- 44 0F28 C1            - movaps xmm8,xmm1
Game.GAME::Player::CapSpellCastSpeed+26- 76 6B                 - jna Game.GAME::Player::CapSpellCastSpeed+93
Game.GAME::Player::CapSpellCastSpeed+28- 0F29 7C 24 30         - movaps [rsp+30],xmm7
Game.GAME::Player::CapSpellCastSpeed+2D- F3 0F10 B9 6C4B0000   - movss xmm7,[rcx+00004B6C]
Game.GAME::Player::CapSpellCastSpeed+35- 0F2F F8               - comiss xmm7,xmm0
Game.GAME::Player::CapSpellCastSpeed+38- 76 53                 - jna Game.GAME::Player::CapSpellCastSpeed+8D
Game.GAME::Player::CapSpellCastSpeed+3A- 48 81 C1 80110000     - add rcx,00001180
}
</AssemblerScript>
    </CheatEntry>
  </CheatEntries>
</CheatTable>
Super Attack Speed 1.2.0.2 x64

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
  <CheatEntries>
    <CheatEntry>
      <ID>1174</ID>
      <Description>"Super Attack Speed 1.2.0.2 x64"</Description>
      <LastState/>
      <Color>FFFFFF</Color>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>//Grim Dawn 1.2.0.2 Updated
//1.1.9.8 was Game.GAME::Player::CapAttackSpeed+9F
//changed +9F to +AF (the last address in the whole Game.GAME::Player::CapAttackSpeed section for the range of the scan)
//0000471C changed to 00004B74
//00004718 changed to 00004B70

[ENABLE]
//Game.GAME::Player::CapAttackSpeed+E
aobscanregion(superAttackSpeed,Game.GAME::Player::CapAttackSpeed,Game.GAME::Player::CapAttackSpeed+AF,F30F10)
alloc(newmem,$1000,superAttackSpeed)

label(code)
label(return)

newmem:
  mov [rcx+00004B74],(float)1000
  movss xmm6,[rcx+00004B74]  //0x4B74 - maxDefaultAttackSpeed { 200 }
  jmp return

code:
  movss xmm6,[rcx+00004B70] //0x4B70 - currentDefaultAttackSpeed { 20 }
  jmp return

superAttackSpeed:
  jmp newmem
  nop 3
return:
registersymbol(superAttackSpeed)

[DISABLE]
superAttackSpeed:
  db F3 0F 10 B1 70 4B 00 00

unregistersymbol(superAttackSpeed)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Game.GAME::Player::CapAttackSpeed+E
Game.GAME::Player::CapSpellCastSpeed+AA - CC                    - int 3
Game.GAME::Player::CapSpellCastSpeed+AB - CC                    - int 3
Game.GAME::Player::CapSpellCastSpeed+AC - CC                    - int 3
Game.GAME::Player::CapSpellCastSpeed+AD - CC                    - int 3
Game.GAME::Player::CapSpellCastSpeed+AE - CC                    - int 3
Game.GAME::Player::CapSpellCastSpeed+AF - CC                    - int 3
Game.GAME::Player::CapAttackSpeed       - 40 53                 - push rbx
Game.GAME::Player::CapAttackSpeed+2     - 48 83 EC 50           - sub rsp,50
Game.GAME::Player::CapAttackSpeed+6     - 0F29 74 24 40         - movaps [rsp+40],xmm6
Game.GAME::Player::CapAttackSpeed+B     - 0F57 C0               - xorps xmm0,xmm0
// ---------- INJECTING HERE ----------
Game.GAME::Player::CapAttackSpeed+E     - F3 0F10 B1 704B0000   - movss xmm6,[rcx+00004B70]
// ---------- DONE INJECTING  ----------
Game.GAME::Player::CapAttackSpeed+16    - 48 8B D9              - mov rbx,rcx
Game.GAME::Player::CapAttackSpeed+19    - 0F2F F0               - comiss xmm6,xmm0
Game.GAME::Player::CapAttackSpeed+1C    - 44 0F29 44 24 20      - movaps [rsp+20],xmm8
Game.GAME::Player::CapAttackSpeed+22    - 44 0F28 C1            - movaps xmm8,xmm1
Game.GAME::Player::CapAttackSpeed+26    - 76 6B                 - jna Game.GAME::Player::CapAttackSpeed+93
Game.GAME::Player::CapAttackSpeed+28    - 0F29 7C 24 30         - movaps [rsp+30],xmm7
Game.GAME::Player::CapAttackSpeed+2D    - F3 0F10 B9 744B0000   - movss xmm7,[rcx+00004B74]
Game.GAME::Player::CapAttackSpeed+35    - 0F2F F8               - comiss xmm7,xmm0
Game.GAME::Player::CapAttackSpeed+38    - 76 53                 - jna Game.GAME::Player::CapAttackSpeed+8D
Game.GAME::Player::CapAttackSpeed+3A    - 48 81 C1 80110000     - add rcx,00001180
}
</AssemblerScript>
    </CheatEntry>
  </CheatEntries>
</CheatTable>
Super Run Speed 1.2.0.2 x64

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
  <CheatEntries>
    <CheatEntry>
      <ID>88047</ID>
      <Description>"Super Run Speed 1.2.0.2 x64"</Description>
      <Options moHideChildren="1"/>
      <LastState/>
      <Color>FFFFFF</Color>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>//Grim Dawn 1.2.0.2 Updated
//1.1.9.8 was Game.GAME::Player::CapRunSpeed+9F
//changed +9F to +AF (the last address in the whole Game.GAME::Player::CapRunSpeed section for the range of the scan)
//0000470C changed to 00004B60
//00004708 changed to 00004B64

[ENABLE]
//Game.GAME::Player::CapRunSpeed+E
aobscanregion(superRunSpeed,Game.GAME::Player::CapRunSpeed,Game.GAME::Player::CapRunSpeed+AF,F30F10)
alloc(newmem,$1000,superRunSpeed)

alloc(runSpeed_ptr,8)
registersymbol(runSpeed_ptr)

label(code)
label(return)

newmem:
  mov [runSpeed_ptr],rcx
  mov [rcx+00004B64],(float)1000  //0x4B64 - maxSpeed

code:
  movss xmm6,[rcx+00004B60]      //0x4B60 - currentSpeed
  jmp return

superRunSpeed:
  jmp newmem
  nop 3
return:
registersymbol(superRunSpeed)

[DISABLE]
superRunSpeed:
  db F3 0F 10 B1 60 4B 00 00

unregistersymbol(superRunSpeed)
unregistersymbol(runSpeed_ptr)
dealloc(runSpeed_ptr)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Game.GAME::Player::CapRunSpeed+E
Game.GAME::Player::GetReflectCap+A - CC                    - int 3
Game.GAME::Player::GetReflectCap+B - CC                    - int 3
Game.GAME::Player::GetReflectCap+C - CC                    - int 3
Game.GAME::Player::GetReflectCap+D - CC                    - int 3
Game.GAME::Player::GetReflectCap+E - CC                    - int 3
Game.GAME::Player::GetReflectCap+F - CC                    - int 3
Game.GAME::Player::CapRunSpeed     - 40 53                 - push rbx
Game.GAME::Player::CapRunSpeed+2   - 48 83 EC 50           - sub rsp,50
Game.GAME::Player::CapRunSpeed+6   - 0F29 74 24 40         - movaps [rsp+40],xmm6
Game.GAME::Player::CapRunSpeed+B   - 0F57 C0               - xorps xmm0,xmm0
// ---------- INJECTING HERE ----------
Game.GAME::Player::CapRunSpeed+E   - F3 0F10 B1 604B0000   - movss xmm6,[rcx+00004B60]
// ---------- DONE INJECTING  ----------
Game.GAME::Player::CapRunSpeed+16  - 48 8B D9              - mov rbx,rcx
Game.GAME::Player::CapRunSpeed+19  - 0F2F F0               - comiss xmm6,xmm0
Game.GAME::Player::CapRunSpeed+1C  - 44 0F29 44 24 20      - movaps [rsp+20],xmm8
Game.GAME::Player::CapRunSpeed+22  - 44 0F28 C1            - movaps xmm8,xmm1
Game.GAME::Player::CapRunSpeed+26  - 76 6B                 - jna Game.GAME::Player::CapRunSpeed+93
Game.GAME::Player::CapRunSpeed+28  - 0F29 7C 24 30         - movaps [rsp+30],xmm7
Game.GAME::Player::CapRunSpeed+2D  - F3 0F10 B9 644B0000   - movss xmm7,[rcx+00004B64]
Game.GAME::Player::CapRunSpeed+35  - 0F2F F8               - comiss xmm7,xmm0
Game.GAME::Player::CapRunSpeed+38  - 76 53                 - jna Game.GAME::Player::CapRunSpeed+8D
Game.GAME::Player::CapRunSpeed+3A  - 48 81 C1 80110000     - add rcx,00001180
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>88048</ID>
          <Description>"currentRunSpeed"</Description>
          <DropDownList ReadOnly="1" DescriptionOnly="1" DisplayValueAsItem="1">20:Default
135:Max Speed
250:Super Speed
500:Super Speed x2
750:Super Speed x3
1000:Super Speed x4
</DropDownList>
          <LastState Value="20" RealAddress="2576A4E0"/>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Float</VariableType>
          <Address>[runSpeed_ptr]+4B60</Address>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
</CheatTable>
Set Pet Limit to 20 for all Pets 1.2.0.2 x64

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
  <CheatEntries>
    <CheatEntry>
      <ID>134845</ID>
      <Description>"Set Pet Limit to 20 for all Pets 1.2.0.2"</Description>
      <LastState/>
      <Color>FFFFFF</Color>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>//Grim Dawn 1.2.0.0 Updated
//1.1.9.8 was Game.GAME::Skill::GetPetLimit+BC
//BC changed to BE
//1.1.9.8 was FF 8B C3 4C 8D 9C 24 E0 00 00 00
//E0 change to F0

[ENABLE]
//Game.GAME::Skill::GetPetLimit+BE
aobscanmodule(PETPOP,Game.dll,FF 8B C3 4C 8D 9C 24 F0 00 00 00) // should be unique
alloc(newmem,$1000,PETPOP)

label(code)
label(return)

newmem:
mov rbx,#20
mov rax,#20
code:
  lea r11,[rsp+000000F0]
  jmp return

PETPOP+03:
  jmp newmem
  nop 3
return:
registersymbol(PETPOP)

[DISABLE]
//code from here till the end of the code will be used to disable the cheat
PETPOP+03:
  db 4C 8D 9C 24 F0 00 00 00

unregistersymbol(PETPOP)
dealloc(newmem)

{
// 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 0EDDC7FF           - 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 20000000        - mov r8d,00000020
Game.GAME::Skill::GetPetLimit+B7 - E8 C486C6FF           - 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 F0000000  - 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>
    </CheatEntry>
  </CheatEntries>
</CheatTable>
Infinite Skill Points (999 locked) 1.2.0.2 x64 (re-wrote)

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
  <CheatEntries>
    <CheatEntry>
      <ID>134933</ID>
      <Description>"Infinite Skill Points (999 locked) 1.2.0.2"</Description>
      <LastState/>
      <Color>FFFFFF</Color>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>//Grim Dawn 1.2.0.2 Re-wrote

[ENABLE]
//Game.GAME::Character::GetSkillPoints
aobscanregion(infSkillPoints,Game.GAME::Character::GetSkillPoints,Game.GAME::Character::GetSkillPoints+F,8B)
alloc(newmem,$1000,infSkillPoints)

label(code)
label(return)

newmem:
  mov eax,#999
  jmp return

code:
  mov eax,[rcx+0000162C]
  jmp return

infSkillPoints:
  jmp newmem
  nop
return:
registersymbol(infSkillPoints)

[DISABLE]
infSkillPoints:
  db 8B 81 2C 16 00 00

unregistersymbol(infSkillPoints)
dealloc(newmem)

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

Game.GAME::Character::ResetModifierPoints+4C: CC                    - int 3
Game.GAME::Character::ResetModifierPoints+4D: CC                    - int 3
Game.GAME::Character::ResetModifierPoints+4E: CC                    - int 3
Game.GAME::Character::ResetModifierPoints+4F: CC                    - int 3
Game.GAME::Character::HasModifierPointsInUse: 48 81 C1 B0 0D 00 00  - add rcx,00000DB0
Game.GAME::Character::HasModifierPointsInUse+7: E9 E4 7E 02 00        - jmp Game.GAME::CharacterBio::HasModifierPointsInUse
Game.GAME::Character::HasModifierPointsInUse+C: CC                    - int 3
Game.GAME::Character::HasModifierPointsInUse+D: CC                    - int 3
Game.GAME::Character::HasModifierPointsInUse+E: CC                    - int 3
Game.GAME::Character::HasModifierPointsInUse+F: CC                    - int 3
// ---------- INJECTING HERE ----------
Game.GAME::Character::GetSkillPoints: 8B 81 2C 16 00 00     - mov eax,[rcx+0000162C]
// ---------- DONE INJECTING  ----------
Game.GAME::Character::GetSkillPoints+6: C3                    - ret
Game.GAME::Character::GetSkillPoints+7: CC                    - int 3
Game.GAME::Character::GetSkillPoints+8: CC                    - int 3
Game.GAME::Character::GetSkillPoints+9: CC                    - int 3
Game.GAME::Character::GetSkillPoints+A: CC                    - int 3
Game.GAME::Character::GetSkillPoints+B: CC                    - int 3
Game.GAME::Character::GetSkillPoints+C: CC                    - int 3
Game.GAME::Character::GetSkillPoints+D: CC                    - int 3
Game.GAME::Character::GetSkillPoints+E: CC                    - int 3
Game.GAME::Character::GetSkillPoints+F: CC                    - int 3
}
</AssemblerScript>
    </CheatEntry>
  </CheatEntries>
</CheatTable>
Infinite Devotion Points (999 locked) 1.2.0.2 x64 (re-wrote)

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
  <CheatEntries>
    <CheatEntry>
      <ID>134934</ID>
      <Description>"Infinite Devotion Points (999 locked) 1.2.0.2"</Description>
      <LastState/>
      <Color>FFFFFF</Color>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>//Grim Dawn 1.2.0.2 Re-wrote

[ENABLE]
aobscanregion(infDevotionPoints,Game.GAME::Character::GetDevotionPoints,Game.GAME::Character::GetDevotionPoints+F,8B)
alloc(newmem,$1000,infDevotionPoints)

label(code)
label(return)

newmem:
  mov eax,#999
  jmp return

code:
  mov eax,[rcx+00001630]
  jmp return

infDevotionPoints:
  jmp newmem
  nop
return:
registersymbol(infDevotionPoints)

[DISABLE]
infDevotionPoints:
  db 8B 81 30 16 00 00

unregistersymbol(infDevotionPoints)
dealloc(newmem)

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

Game.GAME::Character::GetModifierPoints+6: C3                 - ret
Game.GAME::Character::GetModifierPoints+7: CC                 - int 3
Game.GAME::Character::GetModifierPoints+8: CC                 - int 3
Game.GAME::Character::GetModifierPoints+9: CC                 - int 3
Game.GAME::Character::GetModifierPoints+A: CC                 - int 3
Game.GAME::Character::GetModifierPoints+B: CC                 - int 3
Game.GAME::Character::GetModifierPoints+C: CC                 - int 3
Game.GAME::Character::GetModifierPoints+D: CC                 - int 3
Game.GAME::Character::GetModifierPoints+E: CC                 - int 3
Game.GAME::Character::GetModifierPoints+F: CC                 - int 3
// ---------- INJECTING HERE ----------
Game.GAME::Character::GetDevotionPoints: 8B 81 30 16 00 00  - mov eax,[rcx+00001630]
// ---------- DONE INJECTING  ----------
Game.GAME::Character::GetDevotionPoints+6: C3                 - ret
Game.GAME::Character::GetDevotionPoints+7: CC                 - int 3
Game.GAME::Character::GetDevotionPoints+8: CC                 - int 3
Game.GAME::Character::GetDevotionPoints+9: CC                 - int 3
Game.GAME::Character::GetDevotionPoints+A: CC                 - int 3
Game.GAME::Character::GetDevotionPoints+B: CC                 - int 3
Game.GAME::Character::GetDevotionPoints+C: CC                 - int 3
Game.GAME::Character::GetDevotionPoints+D: CC                 - int 3
Game.GAME::Character::GetDevotionPoints+E: CC                 - int 3
Game.GAME::Character::GetDevotionPoints+F: CC                 - int 3
}
</AssemblerScript>
    </CheatEntry>
  </CheatEntries>
</CheatTable>
Infinite Attribute Points (999 locked) 1.2.0.2 x64

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
  <CheatEntries>
    <CheatEntry>
      <ID>134936</ID>
      <Description>"Infinite Attribute Points (999 locked) 1.2.0.2"</Description>
      <LastState/>
      <Color>FFFFFF</Color>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>//Grim Dawn 1.2.0.2 Re-wrote

[ENABLE]
aobscanregion(infAttributePoints,Game.GAME::Character::GetModifierPoints,Game.GAME::Character::GetModifierPoints+F,8B)
alloc(newmem,$1000,infAttributePoints)

label(code)
label(return)

newmem:
  mov eax,#999
  jmp return

code:
  mov eax,[rcx+00001628]
  jmp return

infAttributePoints:
  jmp newmem
  nop
return:
registersymbol(infAttributePoints)

[DISABLE]
infAttributePoints:
  db 8B 81 28 16 00 00

unregistersymbol(infAttributePoints)
dealloc(newmem)

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

Game.GAME::Character::GetNextLevelExperience: 48 81 C1 A8 15 00 00  - add rcx,000015A8
Game.GAME::Character::GetNextLevelExperience+7: E9 C4 B0 19 00        - jmp Game.GAME::Item::SetIgnoreItemSkillCache+AB0
Game.GAME::Character::GetNextLevelExperience+C: CC                    - int 3
Game.GAME::Character::GetNextLevelExperience+D: CC                    - int 3
Game.GAME::Character::GetNextLevelExperience+E: CC                    - int 3
Game.GAME::Character::GetNextLevelExperience+F: CC                    - int 3
Game.GAME::Character::IsMaxLevel: 8B 81 1C 16 00 00     - mov eax,[rcx+0000161C]
Game.GAME::Character::IsMaxLevel+6: 39 81 20 16 00 00     - cmp [rcx+00001620],eax
Game.GAME::Character::IsMaxLevel+C: 0F 93 C0              - setae al
Game.GAME::Character::IsMaxLevel+F: C3                    - ret
// ---------- INJECTING HERE ----------
Game.GAME::Character::GetModifierPoints: 8B 81 28 16 00 00     - mov eax,[rcx+00001628]
// ---------- DONE INJECTING  ----------
Game.GAME::Character::GetModifierPoints+6: C3                    - ret
Game.GAME::Character::GetModifierPoints+7: CC                    - int 3
Game.GAME::Character::GetModifierPoints+8: CC                    - int 3
Game.GAME::Character::GetModifierPoints+9: CC                    - int 3
Game.GAME::Character::GetModifierPoints+A: CC                    - int 3
Game.GAME::Character::GetModifierPoints+B: CC                    - int 3
Game.GAME::Character::GetModifierPoints+C: CC                    - int 3
Game.GAME::Character::GetModifierPoints+D: CC                    - int 3
Game.GAME::Character::GetModifierPoints+E: CC                    - int 3
Game.GAME::Character::GetModifierPoints+F: CC                    - int 3
}
</AssemblerScript>
    </CheatEntry>
  </CheatEntries>
</CheatTable>
Thanks for the update!
Works great)
Is it possible to add masteries and factions? Especially masteries)))

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 »

@Chindopopito
You're welcome! Thank you for noting your appreciation for my trying to help out and also for noting that the updated options are all working properly so far for you.

_____
@grimmboi
I'm glad to know there's not still a problem with getting them to work right and they are working for you now.

_____
@R3V0L
You're welcome!

Regarding Masteries
I don't know what you mean about adding Masteries. Do you mean creating an option that shows your currently selected masteries and a way for you to be able to change them? I don't know if that is possible or even where to begin to try to make that option, but I'll start looking into it as I get time.

Regarding the faction options (instant revered/instant nemesis/both)
These options are all working properly for me without any updating needed. Are they not working for you?

If you are meaning the "Factions" section of the "Player Info Pointers" option from that other table of combined various options, here is that Player Info Pointers section partially updated.

This partially-updated option only contains updated playerbase address, Money, XP, Attribute Points, Skill Points, Devotion Points, Total Devotion points, Max Devotion Points, and also the Faction section updated with the factions color-coded (red for enemy factions, green for friendly factions, yellow for neutral factions):
Player Info Pointers (attack something to briefly populate) 1.2.0.2 x64 (partially updated)

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
  <CheatEntries>
    <CheatEntry>
      <ID>134891</ID>
      <Description>"Player Info Pointers (attack something to briefly populate)"</Description>
      <Options moHideChildren="1" moAllowManualCollapseAndExpand="1"/>
      <LastState/>
      <Color>FFFFFF</Color>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>//Grim Dawn 1.2.0.0 Updated
//1.1.9.8 was F3 0F 10 93 5C 05 00 00
//changed 93 5C 05 to 97 6C 07 for Game.dll process.

//Game.GAME::CharacterBio::Update+294
[ENABLE]
aobscanmodule(PLAYERINFO,Game.dll,F3 0F 10 97 6C 07 00 00) // should be unique
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]
//code from here till the end of the code will be used to disable the cheat
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>134892</ID>
          <Description>"Player Base"</Description>
          <ShowAsHex>1</ShowAsHex>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>808080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>player_ptr</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>134893</ID>
          <Description>"Money"</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>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>
          <LastState Value="" RealAddress="00000000"/>
          <Color>FFFFFF</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 Vanguagrd"</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>
_____
I've added this partial option update to my 2nd post of 1.2.0.0+ updates: And also linking my 1st post of some other 1.2.0.0+ updates:
Last edited by StinVec on Sun Nov 26, 2023 1:23 am, edited 1 time in total.

SV-X
What is cheating?
What is cheating?
Posts: 1
Joined: Fri Nov 24, 2023 1:39 pm
Reputation: 0

Re: Grim Dawn + All DLC's

Post by SV-X »

StinVec wrote:
Fri Nov 17, 2023 6:25 pm

Sorry, still short on time and access for now. I'll paste some updated cheat option codes below. I'll add in new comments if and when I am able to update others.

Select all the code for an option and copy it.
Then paste it (CTRL+V) into your cheat table to add the updated option.
Max Item Stack (98) (split/merge item to max out stack) 1.2.0.0 x64

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
  <CheatEntries>
    <CheatEntry>
      <ID>65</ID>
      <Description>"Max Item Stack (98) (split/merge item to max out stack) 1.2.0.0 x64"</Description>
      <LastState/>
      <Color>FFFFFF</Color>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>//Game: Grim Dawn + All DLC's
//Version: v1.1.1.1

//Grim Dawn 1.2.0.0 Updated
//1.1.9.8 was 89 8F 5C 07 00 00
//changed 5C to 74

define(address,Game.GAME::Item::IncrementStack+3F)
define(bytes,89 8F 74 07 00 00)

[ENABLE]
assert(address,bytes)
alloc(newmem,$1000,Game.GAME::Item::IncrementStack+3F)

label(code)
label(return)

newmem:
  mov ecx,#98
//mov ecx,[rdi+00000760]  //0x760 - maxItemValue { 100 }

code:
  mov [rdi+00000774],ecx  //0x75C - currentItemValue
  jmp return

address:
  jmp newmem
  nop
return:

[DISABLE]
address:
  db bytes
  // mov [rdi+00000774],ecx

dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Game.GAME::Item::IncrementStack+3F
Game.GAME::Item::IncrementStack+1E - 48 8B F9              - mov rdi,rcx
Game.GAME::Item::IncrementStack+21 - FF 90 C8050000        - call qword ptr [rax+000005C8]
Game.GAME::Item::IncrementStack+27 - 8B 8F 74070000        - mov ecx,[rdi+00000774]
Game.GAME::Item::IncrementStack+2D - 03 CB                 - add ecx,ebx
Game.GAME::Item::IncrementStack+2F - 3B C8                 - cmp ecx,eax
Game.GAME::Item::IncrementStack+31 - 76 0C                 - jna Game.GAME::Item::IncrementStack+3F
Game.GAME::Item::IncrementStack+33 - 2B C8                 - sub ecx,eax
Game.GAME::Item::IncrementStack+35 - 89 0E                 - mov [rsi],ecx
// ---------- INJECTING HERE ----------
Game.GAME::Item::IncrementStack+37 - 89 87 74070000        - mov [rdi+00000774],eax
// ---------- DONE INJECTING  ----------
Game.GAME::Item::IncrementStack+3D - EB 06                 - jmp Game.GAME::Item::IncrementStack+45
Game.GAME::Item::IncrementStack+3F - 89 8F 74070000        - mov [rdi+00000774],ecx
Game.GAME::Item::IncrementStack+45 - 8B 87 74070000        - mov eax,[rdi+00000774]
Game.GAME::Item::IncrementStack+4B - 48 8B 5C 24 30        - mov rbx,[rsp+30]
Game.GAME::Item::IncrementStack+50 - 48 8B 74 24 38        - mov rsi,[rsp+38]
Game.GAME::Item::IncrementStack+55 - 89 87 F4050000        - mov [rdi+000005F4],eax
Game.GAME::Item::IncrementStack+5B - B0 01                 - mov al,01
Game.GAME::Item::IncrementStack+5D - 48 83 C4 20           - add rsp,20
Game.GAME::Item::IncrementStack+61 - 5F                    - pop rdi
Game.GAME::Item::IncrementStack+62 - C3                    - ret
Game.GAME::Item::IncrementStack+63 - CC                    - int 3
Game.GAME::Item::IncrementStack+64 - CC                    - int 3
}
</AssemblerScript>
    </CheatEntry>
  </CheatEntries>
</CheatTable>
Max Item Stack (98) - I set it to make a stack 98 to prevent each item picked up from creating a new stack. If 99 or more, a new stack is created each time you loot a component. 98 is max to keep all same items looted from making new stacks each time. Set 98 to whatever you want.
First of all, thank you for your contributions.

I can't get the Max Item Stack to work. I'm not too well-versed in cheat engine, so perhaps I am doing something wrong. Each of these additions can be used as stand-alone tables, right? Regardless of whether I try to use them as standalone or through replacing the code in the outdated table, I cannot get the cheat's box to be check-marked whenever I select it. I am trying to duplicate crystals to respec devotion without grinding, so any help would be appreciated.

Chindopopito
Expert Cheater
Expert Cheater
Posts: 52
Joined: Wed Apr 26, 2023 4:40 pm
Reputation: 21

Re: Grim Dawn + All DLC's

Post by Chindopopito »

SV-X wrote:
Fri Nov 24, 2023 1:51 pm
StinVec wrote:
Fri Nov 17, 2023 6:25 pm

Sorry, still short on time and access for now. I'll paste some updated cheat option codes below. I'll add in new comments if and when I am able to update others.

Select all the code for an option and copy it.
Then paste it (CTRL+V) into your cheat table to add the updated option.
Max Item Stack (98) (split/merge item to max out stack) 1.2.0.0 x64

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
  <CheatEntries>
    <CheatEntry>
      <ID>65</ID>
      <Description>"Max Item Stack (98) (split/merge item to max out stack) 1.2.0.0 x64"</Description>
      <LastState/>
      <Color>FFFFFF</Color>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>//Game: Grim Dawn + All DLC's
//Version: v1.1.1.1

//Grim Dawn 1.2.0.0 Updated
//1.1.9.8 was 89 8F 5C 07 00 00
//changed 5C to 74

define(address,Game.GAME::Item::IncrementStack+3F)
define(bytes,89 8F 74 07 00 00)

[ENABLE]
assert(address,bytes)
alloc(newmem,$1000,Game.GAME::Item::IncrementStack+3F)

label(code)
label(return)

newmem:
  mov ecx,#98
//mov ecx,[rdi+00000760]  //0x760 - maxItemValue { 100 }

code:
  mov [rdi+00000774],ecx  //0x75C - currentItemValue
  jmp return

address:
  jmp newmem
  nop
return:

[DISABLE]
address:
  db bytes
  // mov [rdi+00000774],ecx

dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Game.GAME::Item::IncrementStack+3F
Game.GAME::Item::IncrementStack+1E - 48 8B F9              - mov rdi,rcx
Game.GAME::Item::IncrementStack+21 - FF 90 C8050000        - call qword ptr [rax+000005C8]
Game.GAME::Item::IncrementStack+27 - 8B 8F 74070000        - mov ecx,[rdi+00000774]
Game.GAME::Item::IncrementStack+2D - 03 CB                 - add ecx,ebx
Game.GAME::Item::IncrementStack+2F - 3B C8                 - cmp ecx,eax
Game.GAME::Item::IncrementStack+31 - 76 0C                 - jna Game.GAME::Item::IncrementStack+3F
Game.GAME::Item::IncrementStack+33 - 2B C8                 - sub ecx,eax
Game.GAME::Item::IncrementStack+35 - 89 0E                 - mov [rsi],ecx
// ---------- INJECTING HERE ----------
Game.GAME::Item::IncrementStack+37 - 89 87 74070000        - mov [rdi+00000774],eax
// ---------- DONE INJECTING  ----------
Game.GAME::Item::IncrementStack+3D - EB 06                 - jmp Game.GAME::Item::IncrementStack+45
Game.GAME::Item::IncrementStack+3F - 89 8F 74070000        - mov [rdi+00000774],ecx
Game.GAME::Item::IncrementStack+45 - 8B 87 74070000        - mov eax,[rdi+00000774]
Game.GAME::Item::IncrementStack+4B - 48 8B 5C 24 30        - mov rbx,[rsp+30]
Game.GAME::Item::IncrementStack+50 - 48 8B 74 24 38        - mov rsi,[rsp+38]
Game.GAME::Item::IncrementStack+55 - 89 87 F4050000        - mov [rdi+000005F4],eax
Game.GAME::Item::IncrementStack+5B - B0 01                 - mov al,01
Game.GAME::Item::IncrementStack+5D - 48 83 C4 20           - add rsp,20
Game.GAME::Item::IncrementStack+61 - 5F                    - pop rdi
Game.GAME::Item::IncrementStack+62 - C3                    - ret
Game.GAME::Item::IncrementStack+63 - CC                    - int 3
Game.GAME::Item::IncrementStack+64 - CC                    - int 3
}
</AssemblerScript>
    </CheatEntry>
  </CheatEntries>
</CheatTable>
Max Item Stack (98) - I set it to make a stack 98 to prevent each item picked up from creating a new stack. If 99 or more, a new stack is created each time you loot a component. 98 is max to keep all same items looted from making new stacks each time. Set 98 to whatever you want.
First of all, thank you for your contributions.

I can't get the Max Item Stack to work. I'm not too well-versed in cheat engine, so perhaps I am doing something wrong. Each of these additions can be used as stand-alone tables, right? Regardless of whether I try to use them as standalone or through replacing the code in the outdated table, I cannot get the cheat's box to be check-marked whenever I select it. I am trying to duplicate crystals to respec devotion without grinding, so any help would be appreciated.
There's this specific entry in the cheat table that overrides the one from @StinVec code.
Spoiler
<CheatEntry>
<ID>134592</ID>
<Description>"Get Max (50) Item Stack (split/merge the item to have max item value)"</Description>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>//Game: Grim Dawn + All DLC's
//Version: v1.1.1.1

{

If aobscanregion method below does not work for you, replace it (line 15)
by this aobscanmodule method..

aobscanmodule(getMaxItemStack,Game.dll,898F5C070000)

}

[ENABLE]
//Game.GAME::Item::IncrementStack+3F
aobscanregion(maxItemStack,Game.GAME::Item::IncrementStack,Game.GAME::Item::IncrementStack+6F,89 8F)
alloc(newmem,$1000,maxItemStack)

label(code)
label(return)

newmem:
mov ecx,#50
//mov ecx,[rdi+00000760] //0x760 - maxItemValue { 100 }

code:
mov [rdi+0000075C],ecx //0x75C - currentItemValue
jmp return

maxItemStack:
jmp newmem
nop
return:
registersymbol(maxItemStack)

[DISABLE]
maxItemStack:
db 89 8F 5C 07 00 00

unregistersymbol(maxItemStack)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "Game.dll"+261A3F

"Game.dll"+261A1E: 48 8B F9 - mov rdi,rcx
"Game.dll"+261A21: FF 90 A0 05 00 00 - call qword ptr [rax+000005A0]
"Game.dll"+261A27: 8B 8F 5C 07 00 00 - mov ecx,[rdi+0000075C]
"Game.dll"+261A2D: 03 CB - add ecx,ebx
"Game.dll"+261A2F: 3B C8 - cmp ecx,eax
"Game.dll"+261A31: 76 0C - jna Game.dll+261A3F
"Game.dll"+261A33: 2B C8 - sub ecx,eax
"Game.dll"+261A35: 89 0E - mov [rsi],ecx
"Game.dll"+261A37: 89 87 5C 07 00 00 - mov [rdi+0000075C],eax
"Game.dll"+261A3D: EB 06 - jmp Game.dll+261A45
// ---------- INJECTING HERE ----------
"Game.dll"+261A3F: 89 8F 5C 07 00 00 - mov [rdi+0000075C],ecx
// ---------- DONE INJECTING ----------
"Game.dll"+261A45: 8B 87 5C 07 00 00 - mov eax,[rdi+0000075C]
"Game.dll"+261A4B: 48 8B 5C 24 30 - mov rbx,[rsp+30]
"Game.dll"+261A50: 48 8B 74 24 38 - mov rsi,[rsp+38]
"Game.dll"+261A55: 89 87 DC 05 00 00 - mov [rdi+000005DC],eax
"Game.dll"+261A5B: B0 01 - mov al,01
"Game.dll"+261A5D: 48 83 C4 20 - add rsp,20
"Game.dll"+261A61: 5F - pop rdi
"Game.dll"+261A62: C3 - ret
"Game.dll"+261A63: CC - int 3
"Game.dll"+261A64: CC - int 3
}
Even if you delete this entry and add the one from StinVec, it won't work. What I did was:
1. Replace the code I added in the spoiler, with the code from StinVec and it will work.
2. For whatever reason, it only works if it uses that specific ID entry.
3. If you want your stack to be more than 98, just replace the #98 for the amount you want your stacks to be. I only use this script for ointments and components/augments in my stash.

azorman77
Novice Cheater
Novice Cheater
Posts: 22
Joined: Sat Jan 09, 2021 6:11 pm
Reputation: 2

Re: Grim Dawn + All DLC's

Post by azorman77 »

any chance to share a working table for version 1.2.0.2 please?!

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 »

@azorman77
I'll likely post an updated table with working options up to that point when I am done posting individual options as I manage to update them.

If others want to post a partially-updated table and maybe also update it with further updated options that are posted prior to the table I will eventually post, that's cool.

If you want one right now, just grab the outdated table on the previous page and then copy the codes for each of the updated options that have been posted and paste them into the table. Then just delete the outdated option versions. Should only take ~2 minutes going slowly with the copy>paste and you'll have a table with most things working on it.

Sensei7
Expert Cheater
Expert Cheater
Posts: 163
Joined: Wed Feb 08, 2023 4:04 pm
Reputation: 68

Re: Grim Dawn + All DLC's

Post by Sensei7 »

azorman77 wrote:
Fri Nov 24, 2023 10:19 pm
any chance to share a working table for version 1.2.0.2 please?!
I Agree :mellow:

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 »

@Sensei7
> Didn't even take the time to say thank you for any updates, or the minimal effort of a thumbs up on posts sharing updated options.
> Went straight to requesting a table with the updates already added into it instead of doing it manually yourself like everyone else.
> After I responded to a request for an updated table with explaining how someone can have a mostly-updated table in under 2 minutes by doing it manually with very minimal effort of basic copy>paste, you have now proceeded to second a request for a table with the effort already done for you...and included a 'disappointed' face.

Yeah. I don't support or reward lazy, thankless entitlement.

I am no longer going to take the time to put them all into a table download specifically because of such entitled behavior. Again, if someone else wants to, fine. But I will not be.

While I'm not irked enough to remove my efforts to help that I've already posted of updated options and I will leave them as they are of just code for people to copy>paste into their existing tables, I am feeling less inspired to make time to try to help with updating further options. I'll just help out how I can, when I can with updating options instead of re-working my schedule in order to make time to be able to work on updating options.

dogetothemoon
Noobzor
Noobzor
Posts: 5
Joined: Thu Sep 02, 2021 5:43 pm
Reputation: 4

Re: Grim Dawn + All DLC's

Post by dogetothemoon »

I would be great if I can change my mastery without drop of my learned skills in the mastery I drop. GD stash was changed and return me all my skill points invested. But I want to be a real necromancer with dawn of mastery mod. Any tips anyone?

Scheimann
Expert Cheater
Expert Cheater
Posts: 107
Joined: Sun Jul 21, 2019 4:27 am
Reputation: 25

Re: Grim Dawn + All DLC's

Post by Scheimann »

StinVec wrote:
Sat Nov 25, 2023 4:34 pm
I know your feelings...

It's really disappointing how people don't even want to go to the trouble of copying and pasting.

I mean, they don't even pay for other people's effort, they don't want to read instructions and they don't want to make the minimum, simple effort either... It's just demands and demands. I forgot to say that they are also incapable of reading the thread (a few posts later) and are incapable of waiting before coming up with a new demand.

If I were you, I would do the same (and I did). I thought I'd post the updated table when you or others finished updating the scripts (I'm very layman in this part :( ) to help, but, since the instructions are so simple and both I and others have already explained more than once how to do it and they don't want to do the least bit of work... Nope

machine4578
Expert Cheater
Expert Cheater
Posts: 273
Joined: Tue Mar 07, 2017 3:12 pm
Reputation: 166

Re: Grim Dawn + All DLC's

Post by machine4578 »

and the old saying goes.. all it takes is ONE person to ruin it for everyone.. and bam it comes to fruition. morons man.

@StinVec
thanks for all your hard work and time updating and fixing the table, and yes its VERY easy to manually fix the table with your fixes if one wanted to. too bad people are lazy AF!

Chindopopito
Expert Cheater
Expert Cheater
Posts: 52
Joined: Wed Apr 26, 2023 4:40 pm
Reputation: 21

Re: Grim Dawn + All DLC's

Post by Chindopopito »

@StinVec
Yeah, I've seen a lot of CTables abandoned by their creators/collaborators because of bad attitudes or comments from lazy players. I remember this one for The Slormancer that was hell of a CTable, full of working options and I mean A LOT of scripts and pointers. The guy that created the table just stopped updating because people didn't ask kindly, no, they demanded updates every single time the dev updated their game (an Early Access game by the way) so the scripter just said: “I don't need this shit, I don't even play the game anymore, yet I tried to update it as soon as possible, and you can't even wait?” and months later he came back to update the table, and he still got a couple of entitled comments…

I can't stand lazy people that can't even follow a few easy steps (copy and paste code) and they just want everything handed to them. Thank you for your time, I do appreciate it, and it sucks that you get comments like those.

Post Reply