Grim Dawn + All DLC's

Upload your cheat tables here (No requests)
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 Dec 23, 2023 6:14 am
Awesome! Thank you for your efforts.

Although they work, I can see that there are some problems... After a bit of testing I realized that one value interferes with the other, i.e. for some reason when I want to give 100% critical I also take 100% of all mobs and this is extremely dangerous. It seems to me that one value is messing up the other... and on the other hand, if I only activate the defensive part I start giving too many Misses because it affects the Offensive.

Maybe I've done something wrong, but that's what's been happening to me.

Regarding the code that freezes the time of buffs, I'm not sure if it's due to some skill of mine (although I checked and didn't find any), but when I activate the primary (or combine the 3 options) I become invincible. I don't know if this is the desired behavior.

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

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 »

Scheimann wrote:
Fri Dec 29, 2023 1:31 am
StinVec wrote:
Sat Dec 23, 2023 6:14 am
Awesome! Thank you for your efforts.

Although they work, I can see that there are some problems... After a bit of testing I realized that one value interferes with the other, i.e. for some reason when I want to give 100% critical I also take 100% of all mobs and this is extremely dangerous. It seems to me that one value is messing up the other... and on the other hand, if I only activate the defensive part I start giving too many Misses because it affects the Offensive.

Maybe I've done something wrong, but that's what's been happening to me.

Regarding the code that freezes the time of buffs, I'm not sure if it's due to some skill of mine (although I checked and didn't find any), but when I activate the primary (or combine the 3 options) I become invincible. I don't know if this is the desired behavior.
You're welcome. Thanks for the feedback on these!

_____OA/DA
I mentioned that I didn't notice an issue of the Offensive Ability being set to a high crit also affecting enemies as well. As I didn't see it happening for me, I didn't include a player/foe check on it. I must not have been engaging the right enemies for it to be clear to me that it was an issue. Sorry about that.

As you've been experiencing a high crit chance setting causing enemies to crit all the time on you as well, I will need to try to adjust it to put a friend/foe check in both OA and DA so changes to them would be sure to only affect the player.

_____Buffs
I'll try it out again on its own to see if something weird is going on with it. It has nothing to do with health or invincibility and should only freeze timers on buffs.

The only time I was invincible while using it while I was testing was if I activated the one skill buff with a bunch of spiky light coming from you that makes you invincible for 5 seconds normally, but was never-ending due to the buff getting frozen.

Perhaps there is some buff or passive that causes a first attack on you to get canceled out/negated, but since it doesn't go away after getting attacked since buffs are frozen, every attack on you is negated and does no damage. I'm not sure if there is a buff/passive that does that or not, but it's a possibility.

_____

I'll look at the buff option to see if I can notice an issue with being invincible with it as well. I'll also try to reconfigure the OA/DA codes to have a player/foe check so changes from them do not affect enemies as well.

Thank you again!

Kuddel
Noobzor
Noobzor
Posts: 10
Joined: Sat May 16, 2020 6:39 pm
Reputation: 0

Re: Grim Dawn + All DLC's

Post by Kuddel »

Hello :) would it be possible to add Tribute from the crucible too? I wanna do the last 2 achivments and hacking tribute would make it way way way more easy <3

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 »

Kuddel wrote:
Fri Dec 29, 2023 4:43 pm
Hello :) would it be possible to add Tribute from the crucible too? I wanna do the last 2 achivments and hacking tribute would make it way way way more easy <3
Hi. I had added a Crucible Control option on the top of the last page if that might be helpful to you: viewtopic.php?p=326874#p326874

It offers changing
- Crucible Score
- Crucible Score Multiplier (with a dropdown for selecting x1 - x10)
- Crucible Wave
- Crucible Tributes
- Crucible Bonus Timer (displays in milliseconds, so 1 second is 1000)

It is a self-contained option and you can just paste (CTRL+V) the copied code into cheat table and it'll paste the option.

Or if you already did give this option a try, was it not working right?

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:
Fri Dec 29, 2023 6:02 am
...
_____OA/DA

It's not that it's directly affecting the enemies, but it is affecting my own DA. Something in the code is "transferring" the 50, 75 or 100% chance of hitting a critical hit to DA, causing me to take 50, 75 or 100% critical hits.

Likewise, depending on how I edit and/or activate it (for example by activating DA cheat first) it affects my OA, making it so that I only have a 55% chance of hitting and 0% critical hit.

So in this scenario, for some reason the codes are interfering with each other.

Just wondering, isn't making an OA and DA multiplier simpler than this method? For example, as is done with the XP multiplier.

_____Buffs

in the case of buffs, unfortunately I can't confirm if I have a passive or something that activates and makes me invincible. Your guess is very good and could be right, but I haven't been able to confirm anything... The only thing I've noticed is that I really do become invincible. My HP doesn't drop by even 1 point... it's exactly the same as in God Mode.

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 »

Scheimann wrote:
Sat Dec 30, 2023 12:26 am
StinVec wrote:
Fri Dec 29, 2023 6:02 am
...
_____OA/DA

It's not that it's directly affecting the enemies, but it is affecting my own DA. Something in the code is "transferring" the 50, 75 or 100% chance of hitting a critical hit to DA, causing me to take 50, 75 or 100% critical hits.

Likewise, depending on how I edit and/or activate it (for example by activating DA cheat first) it affects my OA, making it so that I only have a 55% chance of hitting and 0% critical hit.

So in this scenario, for some reason the codes are interfering with each other.

Just wondering, isn't making an OA and DA multiplier simpler than this method? For example, as is done with the XP multiplier.

_____Buffs

in the case of buffs, unfortunately I can't confirm if I have a passive or something that activates and makes me invincible. Your guess is very good and could be right, but I haven't been able to confirm anything... The only thing I've noticed is that I really do become invincible. My HP doesn't drop by even 1 point... it's exactly the same as in God Mode.
Thank you for that additional information on them. I've removed the OA/DA code from the post on the previous page until the issues get sorted out. I've tried making this option in multiple ways, but issues kept coming up as it isn't as simple as the XP multiplier, sadly.

I've also not found any issue with the buff freezing making me invincible unless I have a buff that is active that makes me invincible and it is getting frozen. Can you tell me what masteries you've put points into so I can see if there is some passive skill/aura somewhere mentioned in them that I can try to find to pinpoint the cause?

The invincible buff could even be on an armor/weapon/jewelry/enhancement/augment that gives a minor temp invincible buff that could be getting frozen. It could potetntially even be from a devotion constellation. I'll see if I can do a search online to find all things that grant temporary invincibility or first hit negation.

If I can check out some of the skills/items that do this, I can get an exclusion put into the option to not freeze that buff.

EDIT:
The one skill I can find that definitely gives invincibility is the Nightblade mastery's Blade Barrier skill. This is the same skill that some enemies like cultists cast on themselves constantly (very noisy skill activation). This skill can also be on items that have a chance of activating when you are hit, from maybe 30% chance up to 100% chance.

If you aren't hitting this skill, check your gear to see if it is on a piece that could be activating it.

Additionally, there are a lot of item skills that grant various forms of Damage Absorption. Most are percentages, but some absorb a set amount of damage. I think these absorption buffs are also frozen so they'll just continually be active and absorb all damage instead of going away once their set amount of damage to absorb is inflicted on you.

Here are some of the many item skills that absorb damage that might be getting activated and not going away and just absorb all damage. Can check for items you are wearing to see if you are wearing any with these skills/effects. If it can be pinpointed to if these type of skills are the trouble, I can try to get them excluded from the freezing after getting the items that have these skills on them.

Ancestral Ward
Deathwalker
Divine Light
Energy Shield
Fiend's Flesh
Grey Barrier
Prismatic Rage
Runeguard
Sanctuary
Stone Ward
Stonetread
Voidwalker
Ward of Gul'Amash
Wyrmscale

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 Dec 30, 2023 6:01 am
..
Damm, thats the f* Wyrmscale haha

too bad the code had to be removed. It's very useful and I'm starting to learn how to use it, but it does have this problem... I keep thinking that if the two options didn't activate automatically it would help as a workaround

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 »

Scheimann wrote:
Tue Jan 02, 2024 9:09 pm
StinVec wrote:
Sat Dec 30, 2023 6:01 am
..
Damm, thats the f* Wyrmscale haha

too bad the code had to be removed. It's very useful and I'm starting to learn how to use it, but it does have this problem... I keep thinking that if the two options didn't activate automatically it would help as a workaround
Thanks for testing and verifying it is a buff from an item causing that invincibility. I'll try to go through and see if I can get those items with those invulnerability buffs and then try to add exclusions so they will not get frozen. Of course the checks for these buffs would also be able to be disabled in the code for those that want invincible buffs to also get frozen.

Regarding the OA/DA:
You can prevent the option from automatically activating its children by right-clicking the option and going to the "Group Config" submenu at the bottom. You can then disabled the two features of "Activating this entry activates its children" and "Deactivating this entry deactivates its children". Then save your change to your table.

You can also uncheck the "Hide children when deactivated" function so that its child options are always shown and you can enable only the one you want. You can also expand and collapse the option using the left and right arrow keys.

Regarding the main reason I think someone would want to alter the OA: Critical Hit Chance
I started to focus on just being able to increase the Crit chance separate from everything else that OA affects. I've been tracing through the entire OA calculation code to pinpoint exactly where and when the actual critical hit chance value in an xmm gets used and takes effect. I can change the text displayed for it in the OA popup in a dozen different places and a dozen different ways with no problem, but setting it to 100% doesn't cause all shots to be critical.

I'll keep trying.

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 »

Scheimann wrote:
Tue Jan 02, 2024 9:09 pm
StinVec wrote:
Sat Dec 30, 2023 6:01 am
..
Damm, thats the f* Wyrmscale haha

too bad the code had to be removed. It's very useful and I'm starting to learn how to use it, but it does have this problem... I keep thinking that if the two options didn't activate automatically it would help as a workaround
I tested out the Wyrmscale buff. The cause of it never expiring is not related to the Freeze Buffs option at all; it is the No Skill Cooldown option causing it.
  • That passive item skill absorbs 6000 damage, but only Bleeding and Elemental damage.
  • When 6000 of those damage types are absorbed it will go onto a 20 second skill cooldown.
  • Since No Skill Cooldown removes the cooldown, the buff is reapplied immediately to again absorb 6000 more Bleeding and Elemental damage.
  • It does this indefinitely while cooldowns are removed.
It also happens for the "Ward of Gul'Amash" skill from the "Skull of Gul'Amash" off-hand.
It absorbs 4000 Physical damage and goes on cooldown for 20 seconds, but no cooldown means instant reapplication.
Essentially immune to Physical damage.

It also happens for the "Voidwalker" skill from the "Voidwalker Footpads" (boots).
It absorbs 6000 Poison/Acid/Vitality/Chaos damage and goes on cooldown for 20 seconds, but no cooldown means instant reapplication.
Essentially immune to Poison/Acid/Vitality/Chaos damage.

It also happens for the "Runeguard" skill from the "Runeguard Greaves" (boots).
It absorbs 6000 Elemental/Aether damage and goes on cooldown for 20 seconds, but no cooldown means instant reapplication.
Essentially immune to Elemental/Aether damage.

It also happens for the "Divine Light" skill from the "Mark of Divinity" medal.
It absorbs 100% of all damage for 3 seconds and then goes on cooldown for 120 seconds, but no cooldown means instant reapplication.
Essentially invincible.

It also happens for the "Stone Ward" skill from the "Stoneguard Ward" amulet.
It absorbs 9000 Aether/Chaos damage and goes on cooldown for 16 seconds, but no cooldown means instant reapplication.
Essentially immune to Aether/Chaos damage.

Possibly some others.

I'll also look at rewriting the No Skill Cooldown option into a form that can have exclusions to cooldown removal.
(and also look at adding cooldown reduction/half time instead of no cooldowns)

_____
EDIT:
However, I did find a buff that gives invincibility that the Freeze Buffs option does freeze.

The "Ancestral Ward" skill from the "Seal of Ancestry" component.
It absorbs 350 of any damage for 3 seconds and then goes on cooldown for 8 seconds, but the "Skill Passive On Hit" Freeze Buffs option freezes it and it never expires. Essentially invincible.

I'll update that "Skill Passive On Hit" Freeze Buffs option to exclude this buff.

Edit2:
Updated Freeze Buff Timers option:
  • "Skill Primary & Potions" now includes a check to exclude the "Blade Barrier" Nightblade skill that roots you and locks you out of skill casting for its duration (was permanent due to getting frozen).
  • "Skill Passive On Hit" now includes a check to exclude the "Ancestral Ward" buff (Seal of Ancestry component) from being frozen.
Freeze Buff Timers 1.2.0.3 x64 - Updated

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
  <CheatEntries>
    <CheatEntry>
      <ID>136156</ID>
      <Description>"Freeze Buff Timers"</Description>
      <Options moActivateChildrenAsWell="1" moDeactivateChildrenAsWell="1" moAllowManualCollapseAndExpand="1"/>
      <Color>FFFFFF</Color>
      <GroupHeader>1</GroupHeader>
      <CheatEntries>
        <CheatEntry>
          <ID>136128</ID>
          <Description>"Skill Primary &amp; Potions"</Description>
          <Options moAllowManualCollapseAndExpand="1"/>
          <Color>FFFFFF</Color>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>//Grim Dawn 1.2.0.3 Re-wrote

[ENABLE]
//Game.GAME::Skill_BuffSelfDuration::Update+4B
aobscanregion(buffTimeFreeze1,Game.GAME::Skill_BuffSelfDuration::Update,Game.GAME::Skill_BuffSelfDuration::Update+9F,29)
alloc(newmem,$1000,buffTimeFreeze1)

label(code)
label(return)

newmem:
//CHECK - PLAYER/FOE
  cmp [rsi+00001B44],0     // checks if it is the player (0) or an enemy (2)
  jne code                 // if not the player, jump to code

//CHECK - BLADE BARRIER (NIGHTBLADE SKILL)
  cmp [rbx+00000018],#46   // checks if it is the Blade Barrier skill on the player
  je code                  // if Blade Barrier, jump to code for time subtraction
                           // Change jump based on offset/value used
                           // je=jump if equal to #, jne=if not equal, jg=if greater, jl=if lower
                           //
                           // alternate Blade Barrier check offsets
                           // rbx+18  blade=#46  other=not #46  (tests are consistent) &lt;&lt;&lt; using this one
                           // rbx+98  blade=#23  other=#22      (tests are consistent)
                           // rbx+A8  blade=#1   other=#2       (tests are consistent)
                           // rbx+BC  blade=#1   other=not #1   (tests are consistent)
                           // rbx+C8  blade=#1   other=#12      (tests are consistent)
                           // rbx+1E8 blade=0    other=not 0    (tests are consistent)
                           // rbx+55C blade=#100 other=not #100 (tests are consistent)

//CHECK - ANGUISH BELT DEBUFF
  cmp [rbx+000001C0],0     // checks if it is the Anguish debuff or a real buff on the player
  je code                  // if Anguish debuff, jump to code for time subtraction
                           //
                           // alternate Anguish debuff check offsets
                           // rbx+1C0 anguish=0     buff=not 0 (tests are consistent) &lt;&lt;&lt; using this one
                           // rbx+64C anguish=0     buff=not 0 (tests are consistent)
                           // rbx+658 anguish=#1    buff=0     (tests are consistent) (2nd choice)
                           // rbx+750 anguish=0     buff=not 0 (tests are consistent)
                           // rbx+868 anguish=#23   buff=0     (tests are consistent)
                           // rbx+870 anguish=#31   buff=#15   (tests are consistent)
                           // rbx+87C anguish=not 0 buff=0     (tests are consistent)

//OPTIONAL CHECK -  Disable Burrwitch Brew drunk potion buff (disable the next two lines for this buff to get frozen also)
  cmp [rbx+000001D0],0     // checks if it is the Burrwitch Brew drunk buff or a real buff on the player
  jne code                 // if Burrwitch Brew drunk potion buff, jump to code for time subtraction
                           //
                           // alternate Burrwitch Brew buff check offsets
                           // rbx+1D0 Brew=not 0 buff=0 (tests are consistent) &lt;&lt;&lt; using this one
                           // rbx+2C0 Brew=#256  buff=0 (tests are consistent)

//OPTIONAL: Time Remaining Check (enable the next two lines to activate)
//  cmp [rbx+0000053C],#5100 // check if time remaining is under 5100ms (or your custom value in milliseconds)
//  jl code                  // if lower, jump to code for time subtraction
//
  sub [rbx+0000053C],0     // if a real buff, subtract nothing from timer
  jmp return

code:
  sub [rbx+0000053C],edi   // subtract time from buff normally
  jmp return

buffTimeFreeze1:
  jmp newmem
  nop

return:
registersymbol(buffTimeFreeze1)

[DISABLE]

buffTimeFreeze1:
  db 29 BB 3C 05 00 00

unregistersymbol(buffTimeFreeze1)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Game.GAME::Skill_BuffSelfDuration::Update+4B

Game.GAME::Skill_BuffSelfDuration::Update+24 - 75 0E                 - jne Game.GAME::Skill_BuffSelfDuration::Update+34
Game.GAME::Skill_BuffSelfDuration::Update+26 - 48 8B 0D FB324D00     - mov rcx,[Game.GAME::gGameEngine]
Game.GAME::Skill_BuffSelfDuration::Update+2D - 48 81 C1 785A0300     - add rcx,00035A78
Game.GAME::Skill_BuffSelfDuration::Update+34 - 48 8B 01              - mov rax,[rcx]
Game.GAME::Skill_BuffSelfDuration::Update+37 - FF 50 08              - call qword ptr [rax+08]
Game.GAME::Skill_BuffSelfDuration::Update+3A - 48 8B C8              - mov rcx,rax
Game.GAME::Skill_BuffSelfDuration::Update+3D - 48 85 C0              - test rax,rax
Game.GAME::Skill_BuffSelfDuration::Update+40 - 74 47                 - je Game.GAME::Skill_BuffSelfDuration::Update+89
Game.GAME::Skill_BuffSelfDuration::Update+42 - 80 BB 38050000 00     - cmp byte ptr [rbx+00000538],00
Game.GAME::Skill_BuffSelfDuration::Update+49 - 74 3E                 - je Game.GAME::Skill_BuffSelfDuration::Update+89
// ---------- INJECTING HERE ----------
Game.GAME::Skill_BuffSelfDuration::Update+4B - 29 BB 3C050000        - sub [rbx+0000053C],edi
// ---------- DONE INJECTING  ----------
Game.GAME::Skill_BuffSelfDuration::Update+51 - 83 BB 3C050000 00     - cmp dword ptr [rbx+0000053C],00
Game.GAME::Skill_BuffSelfDuration::Update+58 - 7F 2F                 - jg Game.GAME::Skill_BuffSelfDuration::Update+89
Game.GAME::Skill_BuffSelfDuration::Update+5A - C6 83 38050000 00     - mov byte ptr [rbx+00000538],00
Game.GAME::Skill_BuffSelfDuration::Update+61 - 4C 8D 44 24 30        - lea r8,[rsp+30]
Game.GAME::Skill_BuffSelfDuration::Update+66 - 48 8B 00              - mov rax,[rax]
Game.GAME::Skill_BuffSelfDuration::Update+69 - 48 8B D3              - mov rdx,rbx
Game.GAME::Skill_BuffSelfDuration::Update+6C - C7 44 24 30 00000000  - mov [rsp+30],00000000
Game.GAME::Skill_BuffSelfDuration::Update+74 - 66 C7 44 24 34 0000   - mov word ptr [rsp+34],0000
Game.GAME::Skill_BuffSelfDuration::Update+7B - FF 50 30              - call qword ptr [rax+30]
Game.GAME::Skill_BuffSelfDuration::Update+7E - 48 8B D6              - mov rdx,rsi
}
</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>136133</ID>
              <Description>"&gt;&gt;&gt; NOTES"</Description>
              <Options moHideChildren="1" moManualExpandCollapse="1" moAllowManualCollapseAndExpand="1"/>
              <Color>80FFFF</Color>
              <GroupHeader>1</GroupHeader>
              <CheatEntries>
                <CheatEntry>
                  <ID>136140</ID>
                  <Description>"Example Buffs Affected"</Description>
                  <Options moManualExpandCollapse="1" moAllowManualCollapseAndExpand="1"/>
                  <Color>80FFFF</Color>
                  <GroupHeader>1</GroupHeader>
                  <CheatEntries>
                    <CheatEntry>
                      <ID>136268</ID>
                      <Description>"&gt; Bloodfang Oil (Potion) (def: 30s)"</Description>
                      <Color>80FFFF</Color>
                      <GroupHeader>1</GroupHeader>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>136141</ID>
                      <Description>"&gt; Pneumatic Burst (Nightblade) (def: 60s)"</Description>
                      <Color>80FFFF</Color>
                      <GroupHeader>1</GroupHeader>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>136145</ID>
                      <Description>"&gt; Mirror of Ereoctes (Arcanist) (def: 3s) "</Description>
                      <Color>80FFFF</Color>
                      <GroupHeader>1</GroupHeader>
                    </CheatEntry>
                  </CheatEntries>
                </CheatEntry>
                <CheatEntry>
                  <ID>136302</ID>
                  <Description>"Buff/Skill Exclusions (Default: Excluded)"</Description>
                  <Options moManualExpandCollapse="1" moAllowManualCollapseAndExpand="1"/>
                  <Color>80FFFF</Color>
                  <GroupHeader>1</GroupHeader>
                  <CheatEntries>
                    <CheatEntry>
                      <ID>136405</ID>
                      <Description>"&gt; "Blade Barrier" (Nightblade skill)"</Description>
                      <Color>80FFFF</Color>
                      <GroupHeader>1</GroupHeader>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>136524</ID>
                      <Description>"&gt; "Anguish" non-buff (Chains of Anguish - belt)"</Description>
                      <Color>80FFFF</Color>
                      <GroupHeader>1</GroupHeader>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>136301</ID>
                      <Description>"&gt; "Burrwitch Brew" (alcoholic potion)"</Description>
                      <Color>80FFFF</Color>
                      <GroupHeader>1</GroupHeader>
                    </CheatEntry>
                  </CheatEntries>
                </CheatEntry>
                <CheatEntry>
                  <ID>136266</ID>
                  <Description>"Examine Code For Options"</Description>
                  <Options moManualExpandCollapse="1" moAllowManualCollapseAndExpand="1"/>
                  <Color>80FFFF</Color>
                  <GroupHeader>1</GroupHeader>
                  <CheatEntries>
                    <CheatEntry>
                      <ID>136303</ID>
                      <Description>"Freeze only if minimum time remaining (Default: Disabled)"</Description>
                      <Color>80FFFF</Color>
                      <GroupHeader>1</GroupHeader>
                    </CheatEntry>
                  </CheatEntries>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>136132</ID>
          <Description>"Skill Secondary"</Description>
          <Options moAllowManualCollapseAndExpand="1"/>
          <Color>FFFFFF</Color>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[ENABLE]
aobscanregion(buffTimeFreeze2,Game.GAME::SkillBuff::Update,Game.GAME::SkillBuff::Update+DF,0F84)
alloc(newmem,$2048,buffTimeFreeze2)

label(foecheck)
label(code)
label(return)

newmem:
  jne foecheck                         // if time on buff remaining is above 0, redirects to my code instead of moving on to subtracting time

foecheck:
//PLAYER/FOE CHECK
  cmp [rsi+00001B44],0                 // checks if it is the player (0) or an enemy (2)
  jne code                             // if not the player, jump to code
//BUFF/DEBUFF CHECK
  cmp [rbx+000002C0],1                 // checks if it is a buff (257) or a debuff (1) on the player
  je code                              // if a debuff, jump to code for time subtraction
  jmp Game.GAME::SkillBuff::Update+CD  // if not a buff, jump past the subtraction of time
                                       //
                                       // alternate buff/debuff check offsets
                                       // rbx+20  buff=63  debuff=79 or 95
                                       // rbx+98  buff=20  debuff=18 or 23
                                       // rbx+BC  buff=0   debuff=1 or 3
                                       // rbx+C8  buff=13  debuff=19 or 20
                                       // rbx+D8  buff=13  debuff=20,19
                                       // rbx+2C0 buff=257 debuff=1 &lt;&lt;&lt; using this one, tests are consistent

code:
  cmp dword ptr [rbx+00000518],00      // run original check
  je Game.GAME::SkillBuff::Update+CD   // if no time remains, jump past the subtraction of time, otherwise subtract time
  jmp return

buffTimeFreeze2:
  jmp newmem
  nop

return:
registersymbol(buffTimeFreeze2)

[DISABLE]
buffTimeFreeze2:
  db 0F 84 A1 00 00 00

unregistersymbol(buffTimeFreeze2)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Game.GAME::SkillBuff::Update+26

Game.GAME::SkillBuff::LoadResources+3E: CC                          - int 3
Game.GAME::SkillBuff::LoadResources+3F: CC                          - int 3
Game.GAME::SkillBuff::Update: 40 57                       - push rdi
Game.GAME::SkillBuff::Update+2: 48 83 EC 50                 - sub rsp,50
Game.GAME::SkillBuff::Update+6: 48 C7 44 24 20 FE FF FF FF  - mov qword ptr [rsp+20],FFFFFFFFFFFFFFFE
Game.GAME::SkillBuff::Update+F: 48 89 5C 24 60              - mov [rsp+60],rbx
Game.GAME::SkillBuff::Update+14: 41 8B F8                    - mov edi,r8d
Game.GAME::SkillBuff::Update+17: 48 8B D9                    - mov rbx,rcx
Game.GAME::SkillBuff::Update+1A: E8 61 F5 F7 FF              - call Game.GAME::Skill::Update
Game.GAME::SkillBuff::Update+1F: 83 BB 18 05 00 00 00        - cmp dword ptr [rbx+00000518],00
// ---------- INJECTING HERE ----------
Game.GAME::SkillBuff::Update+26: 0F 84 A1 00 00 00           - je Game.GAME::SkillBuff::Update+CD
// ---------- DONE INJECTING  ----------
Game.GAME::SkillBuff::Update+2C: 29 BB 14 05 00 00           - sub [rbx+00000514],edi
Game.GAME::SkillBuff::Update+32: 0F 89 95 00 00 00           - jns Game.GAME::SkillBuff::Update+CD
Game.GAME::SkillBuff::Update+38: 48 8B 4B 30                 - mov rcx,[rbx+30]
Game.GAME::SkillBuff::Update+3C: 48 85 C9                    - test rcx,rcx
Game.GAME::SkillBuff::Update+3F: 75 0E                       - jne Game.GAME::SkillBuff::Update+4F
Game.GAME::SkillBuff::Update+41: 48 8B 0D F0 3F 4A 00        - mov rcx,[Game.GAME::gGameEngine]
Game.GAME::SkillBuff::Update+48: 48 81 C1 B8 5A 03 00        - add rcx,00035AB8
Game.GAME::SkillBuff::Update+4F: 48 8B 01                    - mov rax,[rcx]
Game.GAME::SkillBuff::Update+52: FF 50 08                    - call qword ptr [rax+08]
Game.GAME::SkillBuff::Update+55: 48 8B F8                    - mov rdi,rax
}
</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>136142</ID>
              <Description>"&gt;&gt;&gt; NOTES"</Description>
              <Options moHideChildren="1" moManualExpandCollapse="1" moAllowManualCollapseAndExpand="1"/>
              <Color>80FFFF</Color>
              <GroupHeader>1</GroupHeader>
              <CheatEntries>
                <CheatEntry>
                  <ID>136267</ID>
                  <Description>"Debuffs on the player excluded"</Description>
                  <Color>80FFFF</Color>
                  <GroupHeader>1</GroupHeader>
                </CheatEntry>
                <CheatEntry>
                  <ID>136269</ID>
                  <Description>"Example Buffs Affected"</Description>
                  <Options moManualExpandCollapse="1" moAllowManualCollapseAndExpand="1"/>
                  <Color>80FFFF</Color>
                  <GroupHeader>1</GroupHeader>
                  <CheatEntries>
                    <CheatEntry>
                      <ID>136144</ID>
                      <Description>"&gt; Lethal Assault (Nightblade &gt; Amarasta's Blade Burst) (def: 8s)"</Description>
                      <Color>80FFFF</Color>
                      <GroupHeader>1</GroupHeader>
                    </CheatEntry>
                  </CheatEntries>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>136304</ID>
          <Description>"Skill Passive On Hit"</Description>
          <Options moAllowManualCollapseAndExpand="1"/>
          <Color>FFFFFF</Color>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>//Grim Dawn 1.2.0.3

[ENABLE]
aobscanregion(buffTimeFreeze3,Game.GAME::Skill_PassiveOnHitBuffSelf::Update,Game.GAME::Skill_PassiveOnHitBuffSelf::Update+7F,2B)
alloc(newmem,$1000,buffTimeFreeze3)

label(code)
label(return)

newmem:
//PLAYER/FOE CHECK
  cmp [rsi+00001B44],0     // checks if it is the player (0) or an enemy (2)
  jne code                 // if not the player, jump to code
//
//BUFF CHECK - ANCESTRAL WARD (Invincibility)
  cmp [rbx+C8],1           // checks if it is the Ancestral Ward buff on the player from the "Seal of Ancestry" component
  je code                  // if Ancestral Ward buff, jump to code for time subtraction
                           //
                           // alternate Ancestral Ward buff check offsets
                           // rbx+C8  Ward=1     Others=12 (tests are consistent) &lt;&lt;&lt; using this one
                           // rbx+2C0 Ward=257   Others=0  (tests are consistent)
                           // rbx+2C4 Ward=256   Others=0  (tests are consistent)
                           // rbx+508 Ward=not 0 Others=0  (tests are consistent, but likely unreliable longterm)
  sub ecx,0
  mov [rbx+00000504],ecx
  jmp return

code:
  sub ecx,edi
  mov [rbx+00000504],ecx
  jmp return

buffTimeFreeze3:
  jmp newmem
  nop 3

return:
registersymbol(buffTimeFreeze3)

[DISABLE]
buffTimeFreeze3:
  db 2B CF 89 8B 04 05 00 00

unregistersymbol(buffTimeFreeze3)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Game.GAME::Skill_PassiveOnHitBuffSelf::Update+44

Game.GAME::Skill_PassiveOnHitBuffSelf::Update+1E: 48 8B 0D 23 27 4C 00     - mov rcx,[Game.GAME::gGameEngine]
Game.GAME::Skill_PassiveOnHitBuffSelf::Update+25: 48 81 C1 B8 5A 03 00     - add rcx,00035AB8
Game.GAME::Skill_PassiveOnHitBuffSelf::Update+2C: 48 8B 01                 - mov rax,[rcx]
Game.GAME::Skill_PassiveOnHitBuffSelf::Update+2F: FF 50 08                 - call qword ptr [rax+08]
Game.GAME::Skill_PassiveOnHitBuffSelf::Update+32: 4C 8B C8                 - mov r9,rax
Game.GAME::Skill_PassiveOnHitBuffSelf::Update+35: 48 85 C0                 - test rax,rax
Game.GAME::Skill_PassiveOnHitBuffSelf::Update+38: 74 36                    - je Game.GAME::Skill_PassiveOnHitBuffSelf::Update+70
Game.GAME::Skill_PassiveOnHitBuffSelf::Update+3A: 8B 8B 04 05 00 00        - mov ecx,[rbx+00000504]
Game.GAME::Skill_PassiveOnHitBuffSelf::Update+40: 85 C9                    - test ecx,ecx
Game.GAME::Skill_PassiveOnHitBuffSelf::Update+42: 7E 2C                    - jle Game.GAME::Skill_PassiveOnHitBuffSelf::Update+70
// ---------- INJECTING HERE ----------
Game.GAME::Skill_PassiveOnHitBuffSelf::Update+44: 2B CF                    - sub ecx,edi
// ---------- DONE INJECTING  ----------
Game.GAME::Skill_PassiveOnHitBuffSelf::Update+46: 89 8B 04 05 00 00        - mov [rbx+00000504],ecx
Game.GAME::Skill_PassiveOnHitBuffSelf::Update+4C: 85 C9                    - test ecx,ecx
Game.GAME::Skill_PassiveOnHitBuffSelf::Update+4E: 7F 20                    - jg Game.GAME::Skill_PassiveOnHitBuffSelf::Update+70
Game.GAME::Skill_PassiveOnHitBuffSelf::Update+50: 48 8B 00                 - mov rax,[rax]
Game.GAME::Skill_PassiveOnHitBuffSelf::Update+53: 4C 8D 44 24 30           - lea r8,[rsp+30]
Game.GAME::Skill_PassiveOnHitBuffSelf::Update+58: 48 8B D3                 - mov rdx,rbx
Game.GAME::Skill_PassiveOnHitBuffSelf::Update+5B: C7 44 24 30 00 00 00 00  - mov [rsp+30],00000000
Game.GAME::Skill_PassiveOnHitBuffSelf::Update+63: 49 8B C9                 - mov rcx,r9
Game.GAME::Skill_PassiveOnHitBuffSelf::Update+66: 66 C7 44 24 34 00 00     - mov word ptr [rsp+34],0000
Game.GAME::Skill_PassiveOnHitBuffSelf::Update+6D: FF 50 30                 - call qword ptr [rax+30]
}
</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>136305</ID>
              <Description>"&gt;&gt;&gt; NOTES"</Description>
              <Options moHideChildren="1" moManualExpandCollapse="1" moAllowManualCollapseAndExpand="1"/>
              <Color>80FFFF</Color>
              <GroupHeader>1</GroupHeader>
              <CheatEntries>
                <CheatEntry>
                  <ID>136306</ID>
                  <Description>"Example Buffs Affected"</Description>
                  <Options moManualExpandCollapse="1" moAllowManualCollapseAndExpand="1"/>
                  <Color>80FFFF</Color>
                  <GroupHeader>1</GroupHeader>
                  <CheatEntries>
                    <CheatEntry>
                      <ID>136307</ID>
                      <Description>"&gt; Deadly Aim (Inquisitor)"</Description>
                      <Color>80FFFF</Color>
                      <GroupHeader>1</GroupHeader>
                    </CheatEntry>
                  </CheatEntries>
                </CheatEntry>
                <CheatEntry>
                  <ID>136412</ID>
                  <Description>"Buff Exclusions (Default: Excluded)"</Description>
                  <Options moManualExpandCollapse="1" moAllowManualCollapseAndExpand="1"/>
                  <Color>80FFFF</Color>
                  <GroupHeader>1</GroupHeader>
                  <CheatEntries>
                    <CheatEntry>
                      <ID>136416</ID>
                      <Description>"&gt; "Ancestral Ward" (Invincibility) (Seal of Ancestry - component)"</Description>
                      <Color>80FFFF</Color>
                      <GroupHeader>1</GroupHeader>
                    </CheatEntry>
                  </CheatEntries>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
</CheatTable>
Last edited by StinVec on Mon Jan 08, 2024 1:18 pm, edited 5 times in total.

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

Re: Grim Dawn + All DLC's

Post by StinVec »

Scheimann wrote:
Tue Jan 02, 2024 9:09 pm
StinVec wrote:
Sat Dec 30, 2023 6:01 am
..
Damm, thats the f* Wyrmscale haha

too bad the code had to be removed. It's very useful and I'm starting to learn how to use it, but it does have this problem... I keep thinking that if the two options didn't activate automatically it would help as a workaround
Here is an alternate version of the No Skill Cooldown option: No Skill Cooldown V2

No Skill Cooldown V1 jumps past the entire cooldown application for every skill that would get a cooldown applied to it.
This one steps one instruction into applying cooldowns and will skip applying them for everything except for certain skills it checks for.

For now it only includes a check/exclusion for Wyrmscale from the "Wyrmscale Footguards" boots that causes invincibility.

I'll work on adding exclusions for those other skills I noted above that cause invincibility and update this post with the new code.


After getting these checks added in, I'll then work on adding an option into it for cooldown reduction instead of no cooldowns (like dividing the applied cooldown in half to be 50% reduction, etc.)

EDIT: Should now have all the checks needed to prevent item skill damage absorption with no cooldowns causing invincibility. Check lines can be disabled in the code if wanted.

Invincibility-causing item skills currently excluded
  • "Divine Light" (from Mark of Divinity - Medal)
  • "Runeguard" (from Runeguard Greaves - Boots)
  • "Stone Ward" (from Stoneguard Ward - Amulet)
  • "Voidwalker" (from Voidwalker Footpads - Boots)
  • "Ward of Gul'Amash" (from Skull of Gul'Amash - Off-hand)
  • "Wyrmscale" (from Wyrmscale Footguards - boots)
No Skill Cooldown V2b - 1.2.0.3 x64 (re-wrote with item skill exclusions)

Code: Select all

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

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

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

label(code)
label(return)

newmem:
//DAMAGE ABSORPTION ITEM SKILL CHECKS
//(no cooldown means instant reapplication/invincibility)
//
//Runeguard (Runeguard Greaves - Boots) and Stone Ward (Stoneguard Ward - Amulet)
  cmp [rdi+00000018],#53                 // checks if it is the Runeguard or Stoneguard item skill on the player
  je code                                // if Runeguardor Stoneguard, jump to code for cooldown application
//Wyrmscale (Wyrmscale Footguards - Boots)
  cmp [rdi+00000018],#54                 // checks if it is the Wyrmscale item skill on the player
  je code                                // if Wyrmscale, jump to code for cooldown application
//Voidwalker (Voidwalker Footpads - Boots)
  cmp [rdi+00000018],#55                 // checks if it is the Voidwalker item skill on the player
  je code                                // if Voidwalker, jump to code for cooldown application
//Divine Light (Mark of Divinity - Medal)
  cmp [rdi+00000018],#56                 // checks if it is the Divinity item skill on the player
  je code                                // if Divinity, jump to code for cooldown application
//Ward of Gul'Amash (Skull of Gul'Amash - Off-hand)
  cmp [rdi+00000018],#59                 // checks if it is the Skull item skill on the player
  je code                                // if Skull, jump to code for cooldown application
//
  jmp Game.GAME::Skill::StartCooldown+BE // if any other skill, jump past the application of a cooldown

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

address:
  jmp newmem
  nop

return:

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

dealloc(newmem)

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

Game.GAME::Skill::StartCooldown+78: 48 8B 74 24 50                 - mov rsi,[rsp+50]
Game.GAME::Skill::StartCooldown+7D: 48 8B 6C 24 48                 - mov rbp,[rsp+48]
Game.GAME::Skill::StartCooldown+82: 83 F8 01                       - cmp eax,01
Game.GAME::Skill::StartCooldown+85: 7E 09                          - jle Game.GAME::Skill::StartCooldown+90
Game.GAME::Skill::StartCooldown+87: 83 BF B0 01 00 00 00           - cmp dword ptr [rdi+000001B0],00
Game.GAME::Skill::StartCooldown+8E: 7F 38                          - jg Game.GAME::Skill::StartCooldown+C8
Game.GAME::Skill::StartCooldown+90: 0F 57 C9                       - xorps xmm1,xmm1
Game.GAME::Skill::StartCooldown+93: F3 0F 5A CE                    - cvtss2sd xmm1,xmm6
Game.GAME::Skill::StartCooldown+97: 66 0F 2F 0D E1 DE 28 00        - comisd xmm1,[Game.GAME::WeaponArmor_Offhand::`vftable'+F78]
Game.GAME::Skill::StartCooldown+9F: 76 1D                          - jna Game.GAME::Skill::StartCooldown+BE
// ---------- INJECTING HERE ----------
Game.GAME::Skill::StartCooldown+A1: 48 8B 07                       - mov rax,[rdi]
// ---------- DONE INJECTING  ----------
Game.GAME::Skill::StartCooldown+A4: 0F 57 D2                       - xorps xmm2,xmm2
Game.GAME::Skill::StartCooldown+A7: 0F 28 CE                       - movaps xmm1,xmm6
Game.GAME::Skill::StartCooldown+AA: 48 8B CF                       - mov rcx,rdi
Game.GAME::Skill::StartCooldown+AD: 0F 28 74 24 20                 - movaps xmm6,[rsp+20]
Game.GAME::Skill::StartCooldown+B2: 48 83 C4 30                    - add rsp,30
Game.GAME::Skill::StartCooldown+B6: 5F                             - pop rdi
Game.GAME::Skill::StartCooldown+B7: 48 FF A0 50 02 00 00           - jmp qword ptr [rax+00000250]
Game.GAME::Skill::StartCooldown+BE: C7 87 B4 01 00 00 00 00 00 00  - mov [rdi+000001B4],00000000
Game.GAME::Skill::StartCooldown+C8: 0F 28 74 24 20                 - movaps xmm6,[rsp+20]
Game.GAME::Skill::StartCooldown+CD: 48 83 C4 30                    - add rsp,30
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>136439</ID>
          <Description>"&gt;&gt;&gt; NOTES"</Description>
          <Options moHideChildren="1" moManualExpandCollapse="1" moAllowManualCollapseAndExpand="1"/>
          <Color>80FFFF</Color>
          <GroupHeader>1</GroupHeader>
          <CheatEntries>
            <CheatEntry>
              <ID>136440</ID>
              <Description>"Skills Causing Invincibility Excluded (Default: Excluded)"</Description>
              <Options moManualExpandCollapse="1" moAllowManualCollapseAndExpand="1"/>
              <Color>80FFFF</Color>
              <GroupHeader>1</GroupHeader>
              <CheatEntries>
                <CheatEntry>
                  <ID>136441</ID>
                  <Description>"Edit option code to disable exclusions for skills"</Description>
                  <Color>80FFFF</Color>
                  <GroupHeader>1</GroupHeader>
                </CheatEntry>
                <CheatEntry>
                  <ID>136443</ID>
                  <Description>"&gt; "Divine Light" (Mark of Divinity - Medal)"</Description>
                  <Color>80FFFF</Color>
                  <GroupHeader>1</GroupHeader>
                </CheatEntry>
                <CheatEntry>
                  <ID>136442</ID>
                  <Description>"&gt; "Runeguard" (Runeguard Greaves - Boots)"</Description>
                  <Color>80FFFF</Color>
                  <GroupHeader>1</GroupHeader>
                </CheatEntry>
                <CheatEntry>
                  <ID>136444</ID>
                  <Description>"&gt; "Stone Ward" (Stoneguard Ward - Amulet)"</Description>
                  <Color>80FFFF</Color>
                  <GroupHeader>1</GroupHeader>
                </CheatEntry>
                <CheatEntry>
                  <ID>136445</ID>
                  <Description>"&gt; "Voidwalker" (Voidwalker Footpads - Boots)"</Description>
                  <Color>80FFFF</Color>
                  <GroupHeader>1</GroupHeader>
                </CheatEntry>
                <CheatEntry>
                  <ID>136447</ID>
                  <Description>"&gt; "Ward of Gul'Amash" (Skull of Gul'Amash - Off-hand)"</Description>
                  <Color>80FFFF</Color>
                  <GroupHeader>1</GroupHeader>
                </CheatEntry>
                <CheatEntry>
                  <ID>136446</ID>
                  <Description>"&gt; "Wyrmscale" (Wyrmscale Footguards - boots)"</Description>
                  <Color>80FFFF</Color>
                  <GroupHeader>1</GroupHeader>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
</CheatTable>

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

Re: Grim Dawn + All DLC's

Post by StinVec »

Adding yet another Invincibility option that affects the player, pets and allies.

This is an alternate to that other version for invincible player/pets/allies which deals with activating the Invincibility flag and which does not deactivate it when you disable the option.

This one just disables health subtraction using "Game.GAME::Character::SubtractLife+61 ", but it includes a player/pet/ally/foe check in it so only foes get lowered HP.

It should prevent any form of health being lowered on player/pets/allies from any source. I will note that I haven't run around enough with it on yet to see if certain things can still lower your health (like sacrificing life from a Necromancer skill to heal pets seems I misremembered there being a necro skill that did this in vanilla GD). Haven't had any issues though during the time I have used it.

I'll use it exclusively to see if I encounter any instances of life loss or invincible enemies.
(None so far. Even did a ton of waves on Gladiator Crucible and had no instances of life loss or invincible enemies.)
Invincible (Player, Pets and Allies) (disables subtraction of life) - 1.2.0.3 x64

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
  <CheatEntries>
    <CheatEntry>
      <ID>136458</ID>
      <Description>"Invincible (Player, Pets and Allies) (disables subtraction of life)"</Description>
      <LastState/>
      <Color>FFFFFF</Color>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>//Grim Dawn 1.2.0.3

define(address,Game.GAME::Character::SubtractLife+61)
define(bytes,F2 0F 11 83 D0 0D 00 00)

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

label(code)
label(return)

newmem:
  cmp [rbx+1B44],1            //checks if it is the player (0), friend (1), or a foe (2) being damaged
  jg code                     //jump to code for health subtraction if greater than friend value (1)
//  movsd [rbx+00000DD0],xmm0 //just disabled the moving of lowered health to current health if player/pet/ally is hit
  jmp return

code:
  movsd [rbx+00000DD0],xmm0   //Normal code - moves lowered health value in xmm0 to current health
  jmp return

address:
  jmp newmem
  nop 3

return:

[DISABLE]
address:
  db bytes

dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Game.GAME::Character::SubtractLife+61

Game.GAME::Character::SubtractLife+34: 0F 85 A1 00 00 00        - jne Game.GAME::Character::SubtractLife+DB
Game.GAME::Character::SubtractLife+3A: 0F 57 D2                 - xorps xmm2,xmm2
Game.GAME::Character::SubtractLife+3D: 0F 57 DB                 - xorps xmm3,xmm3
Game.GAME::Character::SubtractLife+40: F3 0F 5A D6              - cvtss2sd xmm2,xmm6
Game.GAME::Character::SubtractLife+44: 66 0F 2F D3              - comisd xmm2,xmm3
Game.GAME::Character::SubtractLife+48: 72 2F                    - jb Game.GAME::Character::SubtractLife+79
Game.GAME::Character::SubtractLife+4A: F2 0F 10 83 D0 0D 00 00  - movsd xmm0,[rbx+00000DD0]
Game.GAME::Character::SubtractLife+52: F3 0F 10 8B DC 0D 00 00  - movss xmm1,[rbx+00000DDC]
Game.GAME::Character::SubtractLife+5A: F2 0F 5C C2              - subsd xmm0,xmm2
Game.GAME::Character::SubtractLife+5E: 0F 5A C9                 - cvtps2pd xmm1,xmm1
// ---------- INJECTING HERE ----------
Game.GAME::Character::SubtractLife+61: F2 0F 11 83 D0 0D 00 00  - movsd [rbx+00000DD0],xmm0
// ---------- DONE INJECTING  ----------
Game.GAME::Character::SubtractLife+69: F2 0F 58 CA              - addsd xmm1,xmm2
Game.GAME::Character::SubtractLife+6D: 66 0F 5A C1              - cvtpd2ps xmm0,xmm1
Game.GAME::Character::SubtractLife+71: F3 0F 11 83 DC 0D 00 00  - movss [rbx+00000DDC],xmm0
Game.GAME::Character::SubtractLife+79: 80 7C 24 60 00           - cmp byte ptr [rsp+60],00
Game.GAME::Character::SubtractLife+7E: C6 83 58 15 00 00 01     - mov byte ptr [rbx+00001558],01
Game.GAME::Character::SubtractLife+85: 74 42                    - je Game.GAME::Character::SubtractLife+C9
Game.GAME::Character::SubtractLife+87: 83 3F 01                 - cmp dword ptr [rdi],01
Game.GAME::Character::SubtractLife+8A: 75 3D                    - jne Game.GAME::Character::SubtractLife+C9
Game.GAME::Character::SubtractLife+8C: F2 0F 10 83 D0 0D 00 00  - movsd xmm0,[rbx+00000DD0]
Game.GAME::Character::SubtractLife+94: F2 0F 5F C3              - maxsd xmm0,xmm3
}
</AssemblerScript>
    </CheatEntry>
  </CheatEntries>
</CheatTable>
Edit:
Still no issues at all. Working great.

If you want it to be for the player only and not pets and allies, change the 1 in the check code to 0:
cmp [rbx+1B44],1
to:
cmp [rbx+1B44],0
The player is 0, pets/allies are 1 and enemies are 2. Anything greater than the number specified doesn't become invincible, so changing it to 0 makes it for the player only and pets/allies being 1 makes them fall into the 'greater than 0' category.
Last edited by StinVec on Sat Jan 06, 2024 12:05 pm, edited 1 time in total.

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

Re: Grim Dawn + All DLC's

Post by StinVec »

Updated, re-wrote and expanded Remove Item Level+Stats Requirements option.

It completely removes all requirements while enabled and restores them when disabled.
  • Level
  • Physique
  • Cunning
  • Spirit
It is split into two options for those that might want to remove requirements on only one or the other group:
  • Augments / Components / Relics
  • Armor / Weapons / Accessories
As usual, code is a complete option: select all code and copy it, then paste it (CTRL+V or right-click>paste) into your cheat table.
(Corrected my error in the one byte at the end of the Armor/Weapons/Accessories code. Thank you for noting this error for me, AlexS.)
Remove Item Level+Stats Requirements (all reqs removed) - 1.2.0.3 x64

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
  <CheatEntries>
    <CheatEntry>
      <ID>136515</ID>
      <Description>"Remove Item Level+Stats Requirements (all reqs removed)"</Description>
      <Options moActivateChildrenAsWell="1" moDeactivateChildrenAsWell="1" moAllowManualCollapseAndExpand="1"/>
      <Color>FFFFFF</Color>
      <GroupHeader>1</GroupHeader>
      <CheatEntries>
        <CheatEntry>
          <ID>136514</ID>
          <Description>"Augments / Components / Relics"</Description>
          <Color>FFFFFF</Color>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>//Grim Dawn 1.2.0.3 x64

[ENABLE]
//LEVEL REQUIREMENT
//Game.GAME::Item::GetLevelRequirement
aobscanregion(removeEnchReqL,Game.GAME::Item::GetLevelRequirement,Game.GAME::Item::GetLevelRequirement+F,8B)
alloc(removeEnchL,$1000,removeEnchReqL)
label(returnEL)

removeEnchL:
//  mov eax,[rcx+00000788] //Original code
  mov eax,0                //Moves 0 to Level requirement
  jmp returnEL

removeEnchReqL:
  jmp removeEnchL
  nop

returnEL:
registersymbol(removeEnchReqL)

[DISABLE]
//LEVEL REQUIREMENT
removeEnchReqL:
  db 8B 81 88 07 00 00
unregistersymbol(removeEnchReqL)
dealloc(removeEnchL)

{
//LEVEL REQUIREMENT INJECTION POINT
Game.GAME::Item::GetLevelRequirement - 8B 81 88070000        - mov eax,[rcx+00000788]
}
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>136512</ID>
          <Description>"Armor / Weapons / Accessories (all reqs removed)"</Description>
          <Color>FFFFFF</Color>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>//Grim Dawn 1.2.0.3 x64

[ENABLE]
//LEVEL REQUIREMENT
//Game.GAME::ItemEquipment::GetLevelRequirement+A
aobscanregion(removeEquipReqL,Game.GAME::ItemEquipment::GetLevelRequirement,Game.GAME::ItemEquipment::GetLevelRequirement+5F,8B99)
alloc(removeEquipL,$1000,removeEquipReqL)
label(returnL)

removeEquipL:
//  mov ebx,[rcx+00000788] //Original code
  mov ebx,0                //Moves 0 to Level requirement
  jmp returnL

removeEquipReqL:
  jmp removeEquipL
  nop

returnL:
registersymbol(removeEquipReqL)

//////////

//PHYSIQUE REQUIREMENT
//Game.GAME::ItemEquipment::GetStrengthRequirement+A
aobscanregion(removeEquipReqP,Game.GAME::ItemEquipment::GetStrengthRequirement,Game.GAME::ItemEquipment::GetStrengthRequirement+5F,8B99)
alloc(removeEquipP,$1000,removeEquipReqP)
label(returnP)

removeEquipP:
//  mov ebx,[rcx+0000077C] //Original code
  mov ebx,0                //Moves 0 to Physique requirement
  jmp returnP

removeEquipReqP:
  jmp removeEquipP
  nop

returnP:
registersymbol(removeEquipReqP)

//////////

//CUNNING REQUIREMENT
//Game.GAME::ItemEquipment::GetDexterityRequirement+A
aobscanregion(removeEquipReqC,Game.GAME::ItemEquipment::GetDexterityRequirement,Game.GAME::ItemEquipment::GetDexterityRequirement+5F,8B99)
alloc(removeEquipC,$1000,removeEquipReqC)
label(returnC)

removeEquipC:
//  mov ebx,[rcx+00000780] //Original code
  mov ebx,0                //Moves 0 to Cunning requirement
  jmp returnC

removeEquipReqC:
  jmp removeEquipC
  nop

returnC:
registersymbol(removeEquipReqC)

//////////

//SPIRIT REQUIREMENT
//Game.GAME::ItemEquipment::GetIntelligenceRequirement+A
aobscanregion(removeEquipReqS,Game.GAME::ItemEquipment::GetIntelligenceRequirement,Game.GAME::ItemEquipment::GetIntelligenceRequirement+5F,8B99)
alloc(removeEquipS,$1000,removeEquipReqS)
label(returnS)

removeEquipS:
//  mov ebx,[rcx+00000784] //Original code
  mov ebx,0                //Moves 0 to Spirit requirement
  jmp returnS

removeEquipReqS:
  jmp removeEquipS
  nop

returnS:
registersymbol(removeEquipReqS)

[DISABLE]
//LEVEL REQUIREMENT
removeEquipReqL:
  db 8B 99 88 07 00 00
unregistersymbol(removeEquipReqL)
dealloc(removeEquipL)
//PHYSIQUE REQUIREMENT
removeEquipReqP:
  db 8B 99 7C 07 00 00
unregistersymbol(removeEquipReqP)
dealloc(removeEquipP)
//CUNNING REQUIREMENT
removeEquipReqC:
  db 8B 99 80 07 00 00
unregistersymbol(removeEquipReqC)
dealloc(removeEquipC)
//SPIRIT REQUIREMENT
removeEquipReqS:
  db 8B 99 84 07 00 00
unregistersymbol(removeEquipReqS)
dealloc(removeEquipS)


{
//LEVEL REQUIREMENT INJECTION POINT
Game.GAME::ItemEquipment::GetLevelRequirement+A - 8B 99 88070000        - mov ebx,[rcx+00000788]

//PHYSIQUE REQUIREMENT INJECTION POINT
Game.GAME::ItemEquipment::GetStrengthRequirement+A - 8B 99 7C070000        - mov ebx,[rcx+0000077C]

//CUNNING REQUIREMENT INJECTION POINT
Game.GAME::ItemEquipment::GetDexterityRequirement+A - 8B 99 80070000        - mov ebx,[rcx+00000780]

//SPIRIT REQUIREMENT INJECTION POINT
Game.GAME::ItemEquipment::GetIntelligenceRequirement+A - 8B 99 84070000        - mov ebx,[rcx+00000784]
}
</AssemblerScript>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
</CheatTable>
EDIT:
Regarding the Armor/Weapons/Accessories option, it is essentially a single option that contains 4 individual requirement removal options all combined into the one option.

Just as I had taken my free crafting option that originally had 8 sub-options to remove individual component slot costs selectively and which I had later combined into one option, I'll do the reverse now for this option.

Adding this for those that only want certain requirements removed instead of all of them (such as only wanting to remove the level requirement from gear while keeping the stat requirements).

This alternate version has the Armor / Weapons / Accessories options split into 4 individual options for selectively removing only certain equip/use requirements from gear; Level, Physique, Cunning and/or Spirit.

(The Augments, Components and Relics option is still included in this code, but those only have a level requirement and nothing needs to be done with that one.)
Remove Item Level+Stats Requirements (selective reqs removed) - 1.2.0.3 x64

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
  <CheatEntries>
    <CheatEntry>
      <ID>136515</ID>
      <Description>"Remove Item Level+Stats Requirements"</Description>
      <Options moActivateChildrenAsWell="1" moDeactivateChildrenAsWell="1" moAllowManualCollapseAndExpand="1"/>
      <Color>FFFFFF</Color>
      <GroupHeader>1</GroupHeader>
      <CheatEntries>
        <CheatEntry>
          <ID>136514</ID>
          <Description>"Augments / Components / Relics"</Description>
          <Color>FFFFFF</Color>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>//Grim Dawn 1.2.0.3 x64

[ENABLE]
//LEVEL REQUIREMENT
//Game.GAME::Item::GetLevelRequirement
aobscanregion(removeEnchReqL,Game.GAME::Item::GetLevelRequirement,Game.GAME::Item::GetLevelRequirement+F,8B)
alloc(removeEnchL,$1000,removeEnchReqL)
label(returnEL)

removeEnchL:
//  mov eax,[rcx+00000788] //Original code
  mov eax,0                //Moves 0 to Level requirement
  jmp returnEL

removeEnchReqL:
  jmp removeEnchL
  nop

returnEL:
registersymbol(removeEnchReqL)

[DISABLE]
//LEVEL REQUIREMENT
removeEnchReqL:
  db 8B 81 88 07 00 00
unregistersymbol(removeEnchReqL)
dealloc(removeEnchL)

{
//LEVEL REQUIREMENT INJECTION POINT
Game.GAME::Item::GetLevelRequirement - 8B 81 88070000        - mov eax,[rcx+00000788]
}
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>136520</ID>
          <Description>"Armor / Weapons / Accessories (selective removal)"</Description>
          <Options moActivateChildrenAsWell="1" moDeactivateChildrenAsWell="1" moAllowManualCollapseAndExpand="1"/>
          <Color>FFFFFF</Color>
          <GroupHeader>1</GroupHeader>
          <CheatEntries>
            <CheatEntry>
              <ID>136516</ID>
              <Description>"Level Removed"</Description>
              <Color>FFFFFF</Color>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>//Grim Dawn 1.2.0.3 x64

[ENABLE]
//LEVEL REQUIREMENT
//Game.GAME::ItemEquipment::GetLevelRequirement+A
aobscanregion(removeEquipReqL,Game.GAME::ItemEquipment::GetLevelRequirement,Game.GAME::ItemEquipment::GetLevelRequirement+5F,8B99)
alloc(removeEquipL,$1000,removeEquipReqL)
label(returnL)

removeEquipL:
//  mov ebx,[rcx+00000788] //Original code
  mov ebx,0                //Moves 0 to Level requirement
  jmp returnL

removeEquipReqL:
  jmp removeEquipL
  nop

returnL:
registersymbol(removeEquipReqL)

[DISABLE]
//LEVEL REQUIREMENT
removeEquipReqL:
  db 8B 99 88 07 00 00
unregistersymbol(removeEquipReqL)
dealloc(removeEquipL)

{
//LEVEL REQUIREMENT INJECTION POINT
Game.GAME::ItemEquipment::GetLevelRequirement+A - 8B 99 88070000        - mov ebx,[rcx+00000788]
}
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>136519</ID>
              <Description>"Physique Removed"</Description>
              <Color>FFFFFF</Color>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>//Grim Dawn 1.2.0.3 x64

[ENABLE]
//PHYSIQUE REQUIREMENT
//Game.GAME::ItemEquipment::GetStrengthRequirement+A
aobscanregion(removeEquipReqP,Game.GAME::ItemEquipment::GetStrengthRequirement,Game.GAME::ItemEquipment::GetStrengthRequirement+5F,8B99)
alloc(removeEquipP,$1000,removeEquipReqP)
label(returnP)

removeEquipP:
//  mov ebx,[rcx+0000077C] //Original code
  mov ebx,0                //Moves 0 to Physique requirement
  jmp returnP

removeEquipReqP:
  jmp removeEquipP
  nop

returnP:
registersymbol(removeEquipReqP)

[DISABLE]
//PHYSIQUE REQUIREMENT
removeEquipReqP:
  db 8B 99 7C 07 00 00
unregistersymbol(removeEquipReqP)
dealloc(removeEquipP)

{
//PHYSIQUE REQUIREMENT INJECTION POINT
Game.GAME::ItemEquipment::GetStrengthRequirement+A - 8B 99 7C070000        - mov ebx,[rcx+0000077C]
}
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>136518</ID>
              <Description>"Cunning Removed"</Description>
              <Color>FFFFFF</Color>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>//Grim Dawn 1.2.0.3 x64

[ENABLE]
//CUNNING REQUIREMENT
//Game.GAME::ItemEquipment::GetDexterityRequirement+A
aobscanregion(removeEquipReqC,Game.GAME::ItemEquipment::GetDexterityRequirement,Game.GAME::ItemEquipment::GetDexterityRequirement+5F,8B99)
alloc(removeEquipC,$1000,removeEquipReqC)
label(returnC)

removeEquipC:
//  mov ebx,[rcx+00000780] //Original code
  mov ebx,0                //Moves 0 to Cunning requirement
  jmp returnC

removeEquipReqC:
  jmp removeEquipC
  nop

returnC:
registersymbol(removeEquipReqC)

[DISABLE]
//CUNNING REQUIREMENT
removeEquipReqC:
  db 8B 99 80 07 00 00
unregistersymbol(removeEquipReqC)
dealloc(removeEquipC)

{
//CUNNING REQUIREMENT INJECTION POINT
Game.GAME::ItemEquipment::GetDexterityRequirement+A - 8B 99 80070000        - mov ebx,[rcx+00000780]
}
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>136517</ID>
              <Description>"Spirit Removed"</Description>
              <Color>FFFFFF</Color>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>//Grim Dawn 1.2.0.3 x64

[ENABLE]
//SPIRIT REQUIREMENT
//Game.GAME::ItemEquipment::GetIntelligenceRequirement+A
aobscanregion(removeEquipReqS,Game.GAME::ItemEquipment::GetIntelligenceRequirement,Game.GAME::ItemEquipment::GetIntelligenceRequirement+5F,8B99)
alloc(removeEquipS,$1000,removeEquipReqS)
label(returnS)

removeEquipS:
//  mov ebx,[rcx+00000784] //Original code
  mov ebx,0                //Moves 0 to Spirit requirement
  jmp returnS

removeEquipReqS:
  jmp removeEquipS
  nop

returnS:
registersymbol(removeEquipReqS)

[DISABLE]
//SPIRIT REQUIREMENT
removeEquipReqS:
  db 8B 99 84 07 00 00
unregistersymbol(removeEquipReqS)
dealloc(removeEquipS)


{
//SPIRIT REQUIREMENT INJECTION POINT
Game.GAME::ItemEquipment::GetIntelligenceRequirement+A - 8B 99 84070000        - mov ebx,[rcx+00000784]
}
</AssemblerScript>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
</CheatTable>
Last edited by StinVec on Sun Jan 07, 2024 4:42 am, edited 5 times in total.

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

Re: Grim Dawn + All DLC's

Post by AlexS »

StinVec wrote:
Sat Jan 06, 2024 11:51 am
Updated, re-wrote and expanded

(Google translation)

Please note that in your last script "Remove Item Level+Stats Requirements - 1.2.0.3 x64" the restored code when the script is disabled does not correspond to the original code.
Original code:
8B 99 84070000 - mov ebx,[rcx+00000784]
Recovered code:
removeEquipReqS:
db 8B 99 80 07 00 00
As you can see the bytes are different.

P.S. The attached script also disables all requirements (game version 1.2.0.3 hf3 GOG), but it is much simpler and does not use jumps and separate memory allocation. The requirement display is not disabled, but the player can use any items without restrictions. If you want, you can use this script as is or modify it as you wish.
Attachments
GD_req_t1.CT
(689 Bytes) Downloaded 516 times

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

Re: Grim Dawn + All DLC's

Post by StinVec »

AlexS wrote:
Sat Jan 06, 2024 2:47 pm
...
Thank you for bringing my error at the very end of the armor requirement option to my attention. It is now corrected in the post.
I had duplicated the previous line for the Cunning bytes and failed to also alter that one byte to be increased for the Spirit attribute, just as the Cunning byte had increased from the Physique byte.

_____
Edit:
Also added to that post a version of requirement removal where the requirements are split into individual options for selective removal instead of removing all of them.

Also updated the Freeze Buff Timers option a few posts prior: viewtopic.php?p=329310#p329310

"Skill Primary & Potions" now includes a check to exclude the "Blade Barrier" Nightblade skill that roots you and locks you out of skill casting for its duration (was permanent due to getting frozen).

(A note on that rooting: if you are using the 'isInvincible' flag version of the Invincibility option or manually enable the Invincible flag in the player info pointers, it makes you immune to being rooted and the Blade Barrier skill becomes just another buff. You can disable its exclusion then so that it gets frozen again since it would no longer be rooting you.)

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 »

The existing Stack Size Increase option increases a stack size to a specified value upon increase (usually by splitting and merging or looting an item).

If these can be of use to anyone, here are alternate Stack Size Increase options that can be used at the same time as that existing one noted above (which is also included in the code and slightly renamed):

Options are:
  • Item Stack Set To 250 On Increase (split>merge / pickup)
  • Infinite Stacked Items / Stacks Locked To 250 / Max Stack On Split
  • All Items Stacked To 250 On Hover / Split / Move (!!! ALL ITEMS !!! --- gear / weapons also)
First option:
  • This is the existing one most are already using; sets a stack to a specified value any time the stack would increase in amount (split>merge / pickup).
Second option:
  • Locks stacks to a specified value even if used in crafting or if the stack is split, which the split item would also be a new stack of this specified value.
Third option:
  • Causes items to immediately become a stack of a specified value when you hover your mouse over the stack as well as when splitting a stack (which requires your mouse to hover the stack and cause it to become the specified value).
  • This option also causes items that do not normally stack like armor and weapons to become stacks of that item in the specified stack size. (Some armor items require moving them from one inventory slot to another for it to set it to being a stack of the item.)
- All options can be used at the same time.
- You can change the specified #250 stack value in the option codes to the value you wish to use for stack sizes.

I am using only the first and second options most of the time. However, sometimes I'll enable the third option briefly and use it as an item duplicator if I want to get more of a piece of armor/weapon to create a stack of that item, or to quickly race my cursor over a window of items to increase all of their stacks to the specified amount.
Item Stack Control - 1.2.0.3 x64

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
  <CheatEntries>
    <CheatEntry>
      <ID>136573</ID>
      <Description>"Item Stack Control"</Description>
      <Options moActivateChildrenAsWell="1" moDeactivateChildrenAsWell="1" moAllowManualCollapseAndExpand="1"/>
      <LastState Value="" RealAddress="00000000"/>
      <Color>FFFFFF</Color>
      <GroupHeader>1</GroupHeader>
      <CheatEntries>
        <CheatEntry>
          <ID>136310</ID>
          <Description>"Item Stack Set To 250 On Increase (split&gt;merge / pickup)"</Description>
          <Options moAllowManualCollapseAndExpand="1"/>
          <LastState/>
          <Color>FFFFFF</Color>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>//Grim Dawn 1.2.0.3 x64

define(address,Game.GAME::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,#250

code:
  mov [rdi+00000774],ecx
  jmp return

address:
  jmp newmem
  nop

return:

[DISABLE]
address:
  db bytes
  // 89 8F 74 07 00 00

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 C8 05 00 00  - call qword ptr [rax+000005C8]
Game.GAME::Item::IncrementStack+27: 8B 8F 74 07 00 00  - 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
Game.GAME::Item::IncrementStack+37: 89 87 74 07 00 00  - mov [rdi+00000774],eax
Game.GAME::Item::IncrementStack+3D: EB 06              - jmp Game.GAME::Item::IncrementStack+45
// ---------- INJECTING HERE ----------
Game.GAME::Item::IncrementStack+3F: 89 8F 74 07 00 00  - mov [rdi+00000774],ecx
// ---------- DONE INJECTING  ----------
Game.GAME::Item::IncrementStack+45: 8B 87 74 07 00 00  - 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 F4 05 00 00  - 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>
          <CheatEntries>
            <CheatEntry>
              <ID>136530</ID>
              <Description>"Alternate (can use all)"</Description>
              <Options moManualExpandCollapse="1" moActivateChildrenAsWell="1" moDeactivateChildrenAsWell="1" moAllowManualCollapseAndExpand="1"/>
              <LastState Value="" RealAddress="00000000"/>
              <Color>FFFF80</Color>
              <GroupHeader>1</GroupHeader>
              <CheatEntries>
                <CheatEntry>
                  <ID>136564</ID>
                  <Description>"Infinite Stacked Items / Stacks Locked To 250 / Max Stack On Split"</Description>
                  <Options moAllowManualCollapseAndExpand="1"/>
                  <LastState/>
                  <Color>FFFFFF</Color>
                  <VariableType>Auto Assembler Script</VariableType>
                  <AssemblerScript>//Grim Dawn 1.2.0.3 x64

define(address,Game.GAME::Item::SetStackSize)
define(bytes,89 91 74 07 00 00)

[ENABLE]
assert(address,bytes)
alloc(newmem,$1000,Game.GAME::Item::SetStackSize)

label(code)
label(return)

newmem:
  mov [rcx+00000774],#250 //Value for stacks to be set to
  jmp return

code:
  mov [rcx+00000774],edx
  jmp return

address:
  jmp newmem
  nop

return:

[DISABLE]
address:
  db bytes
  // 89 91 74 07 00 00

dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Game.GAME::Item::SetStackSize

Game.GAME::Item::GetStackSize+16: CC                    - int 3
Game.GAME::Item::GetStackSize+17: CC                    - int 3
Game.GAME::Item::GetStackSize+18: CC                    - int 3
Game.GAME::Item::GetStackSize+19: CC                    - int 3
Game.GAME::Item::GetStackSize+1A: CC                    - int 3
Game.GAME::Item::GetStackSize+1B: CC                    - int 3
Game.GAME::Item::GetStackSize+1C: CC                    - int 3
Game.GAME::Item::GetStackSize+1D: CC                    - int 3
Game.GAME::Item::GetStackSize+1E: CC                    - int 3
Game.GAME::Item::GetStackSize+1F: CC                    - int 3
// ---------- INJECTING HERE ----------
Game.GAME::Item::SetStackSize: 89 91 74 07 00 00     - mov [rcx+00000774],edx
// ---------- DONE INJECTING  ----------
Game.GAME::Item::SetStackSize+6: 89 91 F4 05 00 00     - mov [rcx+000005F4],edx
Game.GAME::Item::SetStackSize+C: C3                    - ret
Game.GAME::Item::SetStackSize+D: CC                    - int 3
Game.GAME::Item::SetStackSize+E: CC                    - int 3
Game.GAME::Item::SetStackSize+F: CC                    - int 3
Game.GAME::Item::ShouldPreventEasyDrops: 0F B6 81 05 0A 00 00  - movzx eax,byte ptr [rcx+00000A05]
Game.GAME::Item::ShouldPreventEasyDrops+7: C3                    - ret
Game.GAME::Item::ShouldPreventEasyDrops+8: CC                    - int 3
Game.GAME::Item::ShouldPreventEasyDrops+9: CC                    - int 3
Game.GAME::Item::ShouldPreventEasyDrops+A: CC                    - int 3
}
</AssemblerScript>
                </CheatEntry>
                <CheatEntry>
                  <ID>136561</ID>
                  <Description>"All Items Stacked To 250 On Hover / Split / Move"</Description>
                  <Options moAllowManualCollapseAndExpand="1"/>
                  <LastState/>
                  <Color>FFFFFF</Color>
                  <VariableType>Auto Assembler Script</VariableType>
                  <AssemblerScript>//Grim Dawn 1.2.0.3 x64

define(address,Game.GAME::Item::GetStackSize)
define(bytes,8B 91 74 07 00 00)

[ENABLE]
assert(address,bytes)
alloc(newmem,$1000,Game.GAME::Item::GetStackSize)

label(code)
label(return)

newmem:
  mov [rcx+00000774],#250 //Value to set stacks to
  mov edx,[rcx+00000774]
  jmp return

code:
  mov edx,[rcx+00000774]
  jmp return

address:
  jmp newmem
  nop

return:

[DISABLE]
address:
  db bytes
  // 8B 91 74 07 00 00

unregistersymbol(INJECT)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Game.GAME::Item::GetStackSize

Game.GAME::ItemTransmuterSet::GetMaxStackSize+26: CC                 - int 3
Game.GAME::ItemTransmuterSet::GetMaxStackSize+27: CC                 - int 3
Game.GAME::ItemTransmuterSet::GetMaxStackSize+28: CC                 - int 3
Game.GAME::ItemTransmuterSet::GetMaxStackSize+29: CC                 - int 3
Game.GAME::ItemTransmuterSet::GetMaxStackSize+2A: CC                 - int 3
Game.GAME::ItemTransmuterSet::GetMaxStackSize+2B: CC                 - int 3
Game.GAME::ItemTransmuterSet::GetMaxStackSize+2C: CC                 - int 3
Game.GAME::ItemTransmuterSet::GetMaxStackSize+2D: CC                 - int 3
Game.GAME::ItemTransmuterSet::GetMaxStackSize+2E: CC                 - int 3
Game.GAME::ItemTransmuterSet::GetMaxStackSize+2F: CC                 - int 3
// ---------- INJECTING HERE ----------
Game.GAME::Item::GetStackSize: 8B 91 74 07 00 00  - mov edx,[rcx+00000774]
// ---------- DONE INJECTING  ----------
Game.GAME::Item::GetStackSize+6: B8 01 00 00 00     - mov eax,00000001
Game.GAME::Item::GetStackSize+B: 85 D2              - test edx,edx
Game.GAME::Item::GetStackSize+D: 0F 45 C2           - cmovne eax,edx
Game.GAME::Item::GetStackSize+10: C3                 - ret
Game.GAME::Item::GetStackSize+11: CC                 - int 3
Game.GAME::Item::GetStackSize+12: CC                 - int 3
Game.GAME::Item::GetStackSize+13: CC                 - int 3
Game.GAME::Item::GetStackSize+14: CC                 - int 3
Game.GAME::Item::GetStackSize+15: CC                 - int 3
Game.GAME::Item::GetStackSize+16: CC                 - int 3
}
</AssemblerScript>
                  <CheatEntries>
                    <CheatEntry>
                      <ID>136565</ID>
                      <Description>"!!! ALL ITEMS !!! --- (gear / weapons also)"</Description>
                      <LastState Value="" RealAddress="00000000"/>
                      <Color>0000FF</Color>
                      <GroupHeader>1</GroupHeader>
                    </CheatEntry>
                  </CheatEntries>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
</CheatTable>
Last edited by StinVec on Thu Jan 18, 2024 10:40 pm, edited 1 time in total.

Post Reply