<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="42">
  <CheatEntries>
    <CheatEntry>
      <ID>97</ID>
      <Description>"Get Pointer Bases (open and enable on the pause menu, open again to update if pointers change)"</Description>
      <Options moActivateChildrenAsWell="1" moDeactivateChildrenAsWell="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : RCRU.exe
  Version:
  Date   : 2022-05-07
  Author : Seneeki

  This script does blah blah blah
}

[ENABLE]

aobscan(get_player_pointer,8B 80 A8 01 00 00 8B 40 0C 89 85) // should be unique
alloc(newmem,$1000)

label(code return gamePtr)
registersymbol(get_player_pointer gamePtr)

newmem:
  mov [gamePtr],eax
code:
  mov eax,[eax+000001A8]
  jmp return
gamePtr:
  dd 0
get_player_pointer:
  jmp newmem
  nop
return:


[DISABLE]

get_player_pointer:
  db 8B 80 A8 01 00 00

unregistersymbol(*)
dealloc(*)

{
// ORIGINAL CODE - INJECTION POINT: RCRU.Screens.PauseScreen::UpdateScreen+24

RCRU.Screens.PauseScreen::UpdateScreen+5: 53                 - push ebx
RCRU.Screens.PauseScreen::UpdateScreen+6: 81 EC DC 00 00 00  - sub esp,000000DC
RCRU.Screens.PauseScreen::UpdateScreen+C: 8B F1              - mov esi,ecx
RCRU.Screens.PauseScreen::UpdateScreen+E: 8D BD 70 FF FF FF  - lea edi,[ebp-00000090]
RCRU.Screens.PauseScreen::UpdateScreen+14: B9 21 00 00 00     - mov ecx,00000021
RCRU.Screens.PauseScreen::UpdateScreen+19: 33 C0              - xor eax,eax
RCRU.Screens.PauseScreen::UpdateScreen+1B: F3 AB              - repe stosd
RCRU.Screens.PauseScreen::UpdateScreen+1D: 8B CE              - mov ecx,esi
RCRU.Screens.PauseScreen::UpdateScreen+1F: 8B D9              - mov ebx,ecx
RCRU.Screens.PauseScreen::UpdateScreen+21: 8B 43 28           - mov eax,[ebx+28]
// ---------- INJECTING HERE ----------
RCRU.Screens.PauseScreen::UpdateScreen+24: 8B 80 A8 01 00 00  - mov eax,[eax+000001A8]
// ---------- DONE INJECTING  ----------
RCRU.Screens.PauseScreen::UpdateScreen+2A: 8B 40 0C           - mov eax,[eax+0C]
RCRU.Screens.PauseScreen::UpdateScreen+2D: 89 85 44 FF FF FF  - mov [ebp-000000BC],eax
RCRU.Screens.PauseScreen::UpdateScreen+33: 8B 4B 2C           - mov ecx,[ebx+2C]
RCRU.Screens.PauseScreen::UpdateScreen+36: 8B 93 A8 00 00 00  - mov edx,[ebx+000000A8]
RCRU.Screens.PauseScreen::UpdateScreen+3C: 8B 49 10           - mov ecx,[ecx+10]
RCRU.Screens.PauseScreen::UpdateScreen+3F: 39 09              - cmp [ecx],ecx
RCRU.Screens.PauseScreen::UpdateScreen+41: E8 EA 38 FE FF     - call RCRU.Engine.RCRUGameState::GetPlayerIncludeInactive
RCRU.Screens.PauseScreen::UpdateScreen+46: 89 85 40 FF FF FF  - mov [ebp-000000C0],eax
RCRU.Screens.PauseScreen::UpdateScreen+4C: 85 C0              - test eax,eax
RCRU.Screens.PauseScreen::UpdateScreen+4E: 75 12              - jne RCRU.Screens.PauseScreen::UpdateScreen+62
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>151</ID>
          <Description>"Create and Update Pointers"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{$lua}
if syntaxcehck then return end
[enable]
function regSym(alMem,sym)
alMem = allocateMemory(0x8)
registerSymbol(sym,alMem)
end
local symbols = {'cBase','pBase','ehBase','egBase','geBase','gState'}
for i,v in pairs(symbols) do
    regSym(string.format('%s','a'..i),string.format('%s',v))
end
ptrTimer = createTimer()
ptrTimer.setInterval(500)
ptrTimer.onTimer = function()
local temp = readPointer('[[[[[gamePtr]+1A8]+c]+38]+4]+8')
writePointer('cBase',temp)
temp = readPointer('[cBase]+28')
writePointer('pBase',temp)
temp = readPointer('[cBase]+68')
writePointer('egBase',temp)
temp = readPointer('[cBase]+6c')
writePointer('ehBase',temp)
temp = readPointer('[cBase]+80')
writePointer('geBase',temp)
temp = readPointer('[[gamePtr]+1A8]+c')
writePointer('gState',temp)
end
[disable]
function unregSym(alMem,sym)
deAlloc(alMem)
unregisterSymbol(sym)
alMem = nil
end
local symbols = {'cBase','pBase','ehBase','egBase','geBase','gState'}
for i,v in pairs(symbols) do
    unregSym(string.format('%s','a'..i),string.format('%s',v))
end
</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>70</ID>
              <Description>"Scripts (won't work if pointers aren't up to date) (do the required action at least once then enable if you can't enable)"</Description>
              <Options moHideChildren="1" moDeactivateChildrenAsWell="1"/>
              <GroupHeader>1</GroupHeader>
              <CheatEntries>
                <CheatEntry>
                  <ID>89</ID>
                  <Description>"Infinite Stamina (get hit or hit someone first)"</Description>
                  <VariableType>Auto Assembler Script</VariableType>
                  <AssemblerScript>{ Game   : RCRU.exe
  Version: 
  Date   : 2022-05-04
  Author : Seneeki

  This script does blah blah blah
}

[ENABLE]

aobscan(infHP,66 29 86 B4 00 00 00) // should be unique
alloc(newmem,$1000)

label(code return)
{$lua}
local mhp = readSmallInteger('[pBase]+3E')
writeSmallInteger('[cBase]+B4',mhp)
{$asm}
newmem:
  cmp [cBase],esi
  jne code
  sub [esi+b4],0
  jmp return
code:
  sub [esi+000000B4],ax
  jmp return

infHP:
  jmp newmem
  nop 2
return:
registersymbol(infHP)

[DISABLE]

infHP:
  db 66 29 86 B4 00 00 00

unregistersymbol(*)
dealloc(*)

{
// ORIGINAL CODE - INJECTION POINT: RCRU.Engine.Actors.Character::TakeDamage+8D

RCRU.Engine.Actors.Character::TakeDamage+6A: 0F BF 86 B4 00 00 00  - movsx eax,word ptr [esi+000000B4]
RCRU.Engine.Actors.Character::TakeDamage+71: 0F BF D3              - movsx edx,bx
RCRU.Engine.Actors.Character::TakeDamage+74: 3B C2                 - cmp eax,edx
RCRU.Engine.Actors.Character::TakeDamage+76: 7C 08                 - jl RCRU.Engine.Actors.Character::TakeDamage+80
RCRU.Engine.Actors.Character::TakeDamage+78: 0F BF DB              - movsx ebx,bx
RCRU.Engine.Actors.Character::TakeDamage+7B: 89 5D F0              - mov [ebp-10],ebx
RCRU.Engine.Actors.Character::TakeDamage+7E: EB 0A                 - jmp RCRU.Engine.Actors.Character::TakeDamage+8A
RCRU.Engine.Actors.Character::TakeDamage+80: 0F B6 86 B4 00 00 00  - movzx eax,byte ptr [esi+000000B4]
RCRU.Engine.Actors.Character::TakeDamage+87: 89 45 F0              - mov [ebp-10],eax
RCRU.Engine.Actors.Character::TakeDamage+8A: 8B 45 F0              - mov eax,[ebp-10]
// ---------- INJECTING HERE ----------
RCRU.Engine.Actors.Character::TakeDamage+8D: 66 29 86 B4 00 00 00  - sub [esi+000000B4],ax
// ---------- DONE INJECTING  ----------
RCRU.Engine.Actors.Character::TakeDamage+94: 50                    - push eax
RCRU.Engine.Actors.Character::TakeDamage+95: 8B CE                 - mov ecx,esi
RCRU.Engine.Actors.Character::TakeDamage+97: 8B D7                 - mov edx,edi
RCRU.Engine.Actors.Character::TakeDamage+99: FF 15 24 E3 24 0C     - call dword ptr [0C24E324]
RCRU.Engine.Actors.Character::TakeDamage+9F: 83 7D F0 00           - cmp dword ptr [ebp-10],00
RCRU.Engine.Actors.Character::TakeDamage+A3: 7E 3B                 - jle RCRU.Engine.Actors.Character::TakeDamage+E0
RCRU.Engine.Actors.Character::TakeDamage+A5: B9 10 08 04 1D        - mov ecx,1D040810
RCRU.Engine.Actors.Character::TakeDamage+AA: E8 71 4E 69 FD        - call 03CA30C8
RCRU.Engine.Actors.Character::TakeDamage+AF: 8B D8                 - mov ebx,eax
RCRU.Engine.Actors.Character::TakeDamage+B1: 8B 47 40              - mov eax,[edi+40]
}
</AssemblerScript>
                </CheatEntry>
                <CheatEntry>
                  <ID>180</ID>
                  <Description>"Negative Status Effects (enable after they've happened once)"</Description>
                  <Options moHideChildren="1"/>
                  <GroupHeader>1</GroupHeader>
                  <CheatEntries>
                    <CheatEntry>
                      <ID>172</ID>
                      <Description>"Get Back Up Quickly"</Description>
                      <VariableType>Auto Assembler Script</VariableType>
                      <AssemblerScript>[ENABLE]

aobscan(get_up_fast,89 86 A4 00 00 00 8B 56) // should be unique
alloc(downed,$1000)

label(dreturn downTime notPlayer)
registersymbol(get_up_fast)

downed:
  cmp [cBase],esi
  jne notPlayer
  mov [cBase+C2],1
  mov eax,[downTime]
  mov [esi+000000A4],eax
  jmp dreturn
notPlayer:
  mov [esi+000000A4],eax
  jmp dreturn
downTime:
  db #255
get_up_fast:
  jmp downed
  nop
dreturn:


[DISABLE]

get_up_fast:
  db 89 86 A4 00 00 00

unregistersymbol(*)
dealloc(*)

{
// ORIGINAL CODE - INJECTION POINT: 286AFE50

286AFE33: 28 B4 F9 2F 0C 55 8B  - sub [ecx+edi*8-MpOav.dll+2F3D1],dh
286AFE3A: EC                    - in al,dx
286AFE3B: 57                    - push edi
286AFE3C: 56                    - push esi
286AFE3D: 8B F1                 - mov esi,ecx
286AFE3F: 8B FA                 - mov edi,edx
286AFE41: 83 BE A4 00 00 00 FF  - cmp dword ptr [esi+000000A4],-01
286AFE48: 75 0C                 - jne 286AFE56
286AFE4A: 8B 47 40              - mov eax,[edi+40]
286AFE4D: 8B 40 74              - mov eax,[eax+74]
// ---------- INJECTING HERE ----------
286AFE50: 89 86 A4 00 00 00     - mov [esi+000000A4],eax
// ---------- DONE INJECTING  ----------
286AFE56: 8B 56 28              - mov edx,[esi+28]
286AFE59: B9 74 2C CF 17        - mov ecx,17CF2C74
286AFE5E: E8 CD 80 5F 4B        - call clr.LogHelp_TerminateOnAssert+6550
286AFE63: 85 C0                 - test eax,eax
286AFE65: 74 2A                 - je 286AFE91
286AFE67: 8B 56 28              - mov edx,[esi+28]
286AFE6A: 85 D2                 - test edx,edx
286AFE6C: 74 16                 - je 286AFE84
286AFE6E: 81 3A 74 2C CF 17     - cmp [edx],17CF2C74
286AFE74: 75 02                 - jne 286AFE78
}
</AssemblerScript>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>181</ID>
                      <Description>"No Freeze"</Description>
                      <VariableType>Auto Assembler Script</VariableType>
                      <AssemblerScript>[ENABLE]
aobscan(noFreeze,89 86 8C 00 00 00 80) // should be unique
alloc(frozen,$1000)
label(freezeTime notPlayer freturn)
registerSymbol(frozen)


frozen:
  cmp [cBase],esi
  jne notPlayer
  mov eax,[freezeTime]
  mov [esi+0000008C],eax
  jmp freturn
notPlayer:
  mov [esi+0000008C],eax
  jmp freturn
freezeTime:
  db #255
noFreeze:
  jmp frozen
  nop
freturn:

 
 
[DISABLE]
noFreeze:
  db 89 86 8C 00 00 00

unregistersymbol(*)
dealloc(*)
</AssemblerScript>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>182</ID>
                      <Description>"Escape Grabs Quickly"</Description>
                      <VariableType>Auto Assembler Script</VariableType>
                      <AssemblerScript>{ Game   : RCRU.exe
  Version: 
  Date   : 2022-05-07
  Author : Seneeki

  This script does blah blah blah
}

[ENABLE]

aobscan(noGrab,89 86 9C 00 00 00 B9 66) // should be unique
alloc(grabbed,$1000)

label(greturn grabTimer notPlayer)
registersymbol(noGrab)

grabbed:
  cmp [cBase],esi
  jne notPlayer
  mov eax,[grabTimer]
  mov [esi+0000009C],eax
  jmp greturn
notPlayer:
  mov [esi+0000009C],eax
  jmp greturn
grabTimer:
  db #255
noGrab:
  jmp grabbed
  nop
greturn:


[DISABLE]

noGrab:
  db 89 86 9C 00 00 00

unregistersymbol(*)
dealloc(*)

{
// ORIGINAL CODE - INJECTION POINT: 00D53A99

00D53A80: F4                    - hlt 
00D53A81: 8D D0                 - lea edx,eax
00D53A83: 00 58 F6              - add [eax-0A],bl
00D53A86: 02 0C 55 8B EC 57 56  - add cl,[edx*2+amdxn32.dll+14DEC8B]
00D53A8D: 53                    - push ebx
00D53A8E: 50                    - push eax
00D53A8F: 8B F1                 - mov esi,ecx
00D53A91: 8B FA                 - mov edi,edx
00D53A93: 8B 47 40              - mov eax,[edi+40]
00D53A96: 8B 40 74              - mov eax,[eax+74]
// ---------- INJECTING HERE ----------
00D53A99: 89 86 9C 00 00 00     - mov [esi+0000009C],eax
// ---------- DONE INJECTING  ----------
00D53A9F: B9 66 16 7B 72        - mov ecx,mscorlib.ni.dll+1666
00D53AA4: BA 01 00 00 00        - mov edx,00000001
00D53AA9: E8 02 F7 D2 02        - call 03A831B0
00D53AAE: 89 45 F0              - mov [ebp-10],eax
00D53AB1: FF 35 70 68 C6 04     - push [04C66870]
00D53AB7: 8B C8                 - mov ecx,eax
00D53AB9: 33 D2                 - xor edx,edx
00D53ABB: E8 A0 64 F5 72        - call clr.LogHelp_TerminateOnAssert+8580
00D53AC0: B9 50 B7 39 09        - mov ecx,0939B750
00D53AC5: E8 FE F5 D2 02        - call 03A830C8
}
</AssemblerScript>
                    </CheatEntry>
                  </CheatEntries>
                </CheatEntry>
                <CheatEntry>
                  <ID>154</ID>
                  <Description>"Infinite Double Jump (if character is capable) (must double jump at least once first)"</Description>
                  <VariableType>Auto Assembler Script</VariableType>
                  <AssemblerScript>[ENABLE]
aobscan(dblJmp,c6 46 4c 00 c6 46 4a 01)

dblJmp+7:
db 00
registersymbol(dblJmp)
[DISABLE]
dblJmp+7:
db 01
unregistersymbol(*)

</AssemblerScript>
                </CheatEntry>
                <CheatEntry>
                  <ID>189</ID>
                  <Description>"Ignore Special Points Requirement"</Description>
                  <VariableType>Auto Assembler Script</VariableType>
                  <AssemblerScript>{ Game   : RCRU.exe
  Version: 
  Date   : 2022-05-18
  Author : Seneeki

  This script does blah blah blah
}

[ENABLE]

aobscan(alwaysSpecial,0F B6 40 47 89 45 D8) // should be unique
alloc(newmem,$1000)

label(code return mSpec)


newmem:
  mov [mSpec],eax
  add [mSpec],48
code:
  movzx eax,byte ptr [mSpec]
  mov [ebp-28],eax
  jmp return
mSpec:
 db 0
alwaysSpecial:
  jmp newmem
  nop 2
return:
registersymbol(alwaysSpecial)

[DISABLE]

alwaysSpecial:
  db 0F B6 40 47 89 45 D8

unregistersymbol(*)
dealloc(*)

{
// ORIGINAL CODE - INJECTION POINT: RCRU.Engine.Actors.Character::TryGoToMoveFromUserInput+28B

RCRU.Engine.Actors.Character::TryGoToMoveFromUserInput+26C: 83 7D F0 00           - cmp dword ptr [ebp-10],00
RCRU.Engine.Actors.Character::TryGoToMoveFromUserInput+270: 74 16                 - je RCRU.Engine.Actors.Character::TryGoToMoveFromUserInput+288
RCRU.Engine.Actors.Character::TryGoToMoveFromUserInput+272: 8B 45 B8              - mov eax,[ebp-48]
RCRU.Engine.Actors.Character::TryGoToMoveFromUserInput+275: 0F B6 40 4F           - movzx eax,byte ptr [eax+4F]
RCRU.Engine.Actors.Character::TryGoToMoveFromUserInput+279: 89 45 D8              - mov [ebp-28],eax
RCRU.Engine.Actors.Character::TryGoToMoveFromUserInput+27C: 8B 45 B8              - mov eax,[ebp-48]
RCRU.Engine.Actors.Character::TryGoToMoveFromUserInput+27F: 0F B6 40 50           - movzx eax,byte ptr [eax+50]
RCRU.Engine.Actors.Character::TryGoToMoveFromUserInput+283: 89 45 D4              - mov [ebp-2C],eax
RCRU.Engine.Actors.Character::TryGoToMoveFromUserInput+286: EB 3E                 - jmp RCRU.Engine.Actors.Character::TryGoToMoveFromUserInput+2C6
RCRU.Engine.Actors.Character::TryGoToMoveFromUserInput+288: 8B 45 B8              - mov eax,[ebp-48]
// ---------- INJECTING HERE ----------
RCRU.Engine.Actors.Character::TryGoToMoveFromUserInput+28B: 0F B6 40 47           - movzx eax,byte ptr [eax+47]
// ---------- DONE INJECTING  ----------
RCRU.Engine.Actors.Character::TryGoToMoveFromUserInput+28F: 89 45 D8              - mov [ebp-28],eax
RCRU.Engine.Actors.Character::TryGoToMoveFromUserInput+292: 8B 55 B8              - mov edx,[ebp-48]
RCRU.Engine.Actors.Character::TryGoToMoveFromUserInput+295: 0F B6 52 48           - movzx edx,byte ptr [edx+48]
RCRU.Engine.Actors.Character::TryGoToMoveFromUserInput+299: 3B C2                 - cmp eax,edx
RCRU.Engine.Actors.Character::TryGoToMoveFromUserInput+29B: 7C 1F                 - jl RCRU.Engine.Actors.Character::TryGoToMoveFromUserInput+2BC
RCRU.Engine.Actors.Character::TryGoToMoveFromUserInput+29D: 8B 45 C0              - mov eax,[ebp-40]
RCRU.Engine.Actors.Character::TryGoToMoveFromUserInput+2A0: 0F BF B8 B4 00 00 00  - movsx edi,word ptr [eax+000000B4]
RCRU.Engine.Actors.Character::TryGoToMoveFromUserInput+2A7: 8B 4D B8              - mov ecx,[ebp-48]
RCRU.Engine.Actors.Character::TryGoToMoveFromUserInput+2AA: 8B 55 C0              - mov edx,[ebp-40]
RCRU.Engine.Actors.Character::TryGoToMoveFromUserInput+2AD: E8 5E 7C F5 FF        - call RCRU.Engine.Controllers.PlayerController::GetMerlinMoveThreshold
}
</AssemblerScript>
                </CheatEntry>
                <CheatEntry>
                  <ID>92</ID>
                  <Description>"Get Enemy Base (updates as you hit enemies, when it feels like it)"</Description>
                  <Options moHideChildren="1"/>
                  <VariableType>Auto Assembler Script</VariableType>
                  <AssemblerScript>{ Game   : RCRU.exe
  Version:
  Date   : 2022-05-05
  Author : Seneeki

  This script does blah blah blah
}

[ENABLE]

aobscan(whoGotHit,C3 0F BF 86 B4 00 00 00) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:
{$luacode gotHit=ESI}
mem = allocateMemory(0x4)
registerSymbol('eBase',mem)
      if readPointer('cBase') == gotHit then
         return
      else
          writePointer('eBase',gotHit)
      end
{$asm}
code:
  movsx eax,word ptr [esi+000000B4]
  jmp return

whoGotHit+01:
  jmp newmem
  nop 2
return:
registersymbol(whoGotHit)

[DISABLE]

whoGotHit+01:
  db 0F BF 86 B4 00 00 00

unregistersymbol(whoGotHit)
dealloc(newmem)
{$lua}
unregisterSymbol('eBase')
deAlloc(mem)
mem = nil
{$asm}
{
// ORIGINAL CODE - INJECTION POINT: RCRU.Engine.Actors.Character::SetGeneralStateAfterDamage+39

RCRU.Engine.Actors.Character::SetGeneralStateAfterDamage+24: 6A 00                 - push 00
RCRU.Engine.Actors.Character::SetGeneralStateAfterDamage+26: 68 9C 68 51 06        - push 0651689C
RCRU.Engine.Actors.Character::SetGeneralStateAfterDamage+2B: 8B CE                 - mov ecx,esi
RCRU.Engine.Actors.Character::SetGeneralStateAfterDamage+2D: 8B D7                 - mov edx,edi
RCRU.Engine.Actors.Character::SetGeneralStateAfterDamage+2F: E8 9C 20 11 1F        - call 1FC2EFF8
RCRU.Engine.Actors.Character::SetGeneralStateAfterDamage+34: 5B                    - pop ebx
RCRU.Engine.Actors.Character::SetGeneralStateAfterDamage+35: 5E                    - pop esi
RCRU.Engine.Actors.Character::SetGeneralStateAfterDamage+36: 5F                    - pop edi
RCRU.Engine.Actors.Character::SetGeneralStateAfterDamage+37: 5D                    - pop ebp
RCRU.Engine.Actors.Character::SetGeneralStateAfterDamage+38: C3                    - ret
// ---------- INJECTING HERE ----------
RCRU.Engine.Actors.Character::SetGeneralStateAfterDamage+39: 0F BF 86 B4 00 00 00  - movsx eax,word ptr [esi+000000B4]
// ---------- DONE INJECTING  ----------
RCRU.Engine.Actors.Character::SetGeneralStateAfterDamage+40: C1 E0 10              - shl eax,10
RCRU.Engine.Actors.Character::SetGeneralStateAfterDamage+43: 8B D8                 - mov ebx,eax
RCRU.Engine.Actors.Character::SetGeneralStateAfterDamage+45: 8B CE                 - mov ecx,esi
RCRU.Engine.Actors.Character::SetGeneralStateAfterDamage+47: 8B D7                 - mov edx,edi
RCRU.Engine.Actors.Character::SetGeneralStateAfterDamage+49: FF 15 80 EE 2E 17     - call dword ptr [172EEE80]
RCRU.Engine.Actors.Character::SetGeneralStateAfterDamage+4F: 3B D8                 - cmp ebx,eax
RCRU.Engine.Actors.Character::SetGeneralStateAfterDamage+51: 7F 15                 - jg RCRU.Engine.Actors.Character::SetGeneralStateAfterDamage+68
RCRU.Engine.Actors.Character::SetGeneralStateAfterDamage+53: 6A 00                 - push 00
RCRU.Engine.Actors.Character::SetGeneralStateAfterDamage+55: 68 50 62 51 06        - push 06516250
RCRU.Engine.Actors.Character::SetGeneralStateAfterDamage+5A: 8B CE                 - mov ecx,esi
}
</AssemblerScript>
                  <CheatEntries>
                    <CheatEntry>
                      <ID>93</ID>
                      <Description>"Enemy Base"</Description>
                      <ShowAsSigned>0</ShowAsSigned>
                      <VariableType>4 Bytes</VariableType>
                      <Address>eBase</Address>
                      <Offsets>
                        <Offset>0</Offset>
                      </Offsets>
                      <CheatEntries>
                        <CheatEntry>
                          <ID>94</ID>
                          <Description>"Stamina"</Description>
                          <ShowAsSigned>0</ShowAsSigned>
                          <VariableType>Byte</VariableType>
                          <Address>+b4</Address>
                        </CheatEntry>
                      </CheatEntries>
                    </CheatEntry>
                  </CheatEntries>
                </CheatEntry>
                <CheatEntry>
                  <ID>167</ID>
                  <Description>"Enemies Don't Fight Back"</Description>
                  <VariableType>Auto Assembler Script</VariableType>
                  <AssemblerScript>{$lua}
if syntaxcheck then return end
[ENABLE]
writeShortInteger('[gState]+8F',1)



[DISABLE]
writeShortInteger('[gState]+8F',0)
</AssemblerScript>
                </CheatEntry>
                <CheatEntry>
                  <ID>169</ID>
                  <Description>"Enemies Don't Spawn"</Description>
                  <VariableType>Auto Assembler Script</VariableType>
                  <AssemblerScript>{$lua}
if syntaxcheck then return end
[ENABLE]
writeShortInteger('[gState]+8A',1)

 
 
[DISABLE]
writeShortInteger('[gState]+8A',0)
</AssemblerScript>
                </CheatEntry>
                <CheatEntry>
                  <ID>185</ID>
                  <Description>"XP Multiplier (kill at least one enemy first)"</Description>
                  <Options moHideChildren="1"/>
                  <VariableType>Auto Assembler Script</VariableType>
                  <AssemblerScript>{ Game   : RCRU.exe
  Version:
  Date   : 2022-05-08
  Author : Seneeki

  This script does blah blah blah
}

[ENABLE]


aobscan(xpMultiplier,8B 46 24 03 C3 3D) // should be unique
alloc(newmem,$1000)

label(code return mult)
registersymbol(xpMultiplier mult)

newmem:
  imul ebx,[mult]
code:
  mov eax,[esi+24]
  add eax,ebx
  jmp return
mult:
  db 1
xpMultiplier:
  jmp newmem
return:
registersymbol(xpMultiplier)

[DISABLE]

xpMultiplier:
  db 8B 46 24 03 C3

unregistersymbol(*)
dealloc(*)

{
// ORIGINAL CODE - INJECTION POINT: RCRU.Engine.Controllers.PlayerController::TryAddXp+73

RCRU.Engine.Controllers.PlayerController::TryAddXp+5C: F7 F9           - idiv ecx
RCRU.Engine.Controllers.PlayerController::TryAddXp+5E: 03 D8           - add ebx,eax
RCRU.Engine.Controllers.PlayerController::TryAddXp+60: EB 11           - jmp RCRU.Engine.Controllers.PlayerController::TryAddXp+73
RCRU.Engine.Controllers.PlayerController::TryAddXp+62: 83 F8 0A        - cmp eax,0A
RCRU.Engine.Controllers.PlayerController::TryAddXp+65: 7E 0C           - jle RCRU.Engine.Controllers.PlayerController::TryAddXp+73
RCRU.Engine.Controllers.PlayerController::TryAddXp+67: 8B C3           - mov eax,ebx
RCRU.Engine.Controllers.PlayerController::TryAddXp+69: B9 0A 00 00 00  - mov ecx,0000000A
RCRU.Engine.Controllers.PlayerController::TryAddXp+6E: 99              - cdq
RCRU.Engine.Controllers.PlayerController::TryAddXp+6F: F7 F9           - idiv ecx
RCRU.Engine.Controllers.PlayerController::TryAddXp+71: 03 D8           - add ebx,eax
// ---------- INJECTING HERE ----------
RCRU.Engine.Controllers.PlayerController::TryAddXp+73: 8B 46 24        - mov eax,[esi+24]
// ---------- DONE INJECTING  ----------
RCRU.Engine.Controllers.PlayerController::TryAddXp+76: 03 C3           - add eax,ebx
RCRU.Engine.Controllers.PlayerController::TryAddXp+78: 3D C2 37 00 00  - cmp eax,000037C2
RCRU.Engine.Controllers.PlayerController::TryAddXp+7D: 7D 02           - jnl RCRU.Engine.Controllers.PlayerController::TryAddXp+81
RCRU.Engine.Controllers.PlayerController::TryAddXp+7F: EB 05           - jmp RCRU.Engine.Controllers.PlayerController::TryAddXp+86
RCRU.Engine.Controllers.PlayerController::TryAddXp+81: B8 C2 37 00 00  - mov eax,000037C2
RCRU.Engine.Controllers.PlayerController::TryAddXp+86: 89 46 24        - mov [esi+24],eax
RCRU.Engine.Controllers.PlayerController::TryAddXp+89: 8B 4E 24        - mov ecx,[esi+24]
RCRU.Engine.Controllers.PlayerController::TryAddXp+8C: E8 0F 1C 76 22  - call RCRU.RPG::GetLevelForXp
RCRU.Engine.Controllers.PlayerController::TryAddXp+91: 25 FF 00 00 00  - and eax,000000FF
RCRU.Engine.Controllers.PlayerController::TryAddXp+96: 3B 45 F0        - cmp eax,[ebp-10]
}
</AssemblerScript>
                  <CheatEntries>
                    <CheatEntry>
                      <ID>186</ID>
                      <Description>"Multiplication Factor"</Description>
                      <ShowAsSigned>0</ShowAsSigned>
                      <VariableType>Byte</VariableType>
                      <Address>mult</Address>
                    </CheatEntry>
                  </CheatEntries>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
            <CheatEntry>
              <ID>146</ID>
              <Description>"Pointers"</Description>
              <Options moHideChildren="1"/>
              <GroupHeader>1</GroupHeader>
              <CheatEntries>
                <CheatEntry>
                  <ID>98</ID>
                  <Description>"Player Base"</Description>
                  <Options moHideChildren="1"/>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>4 Bytes</VariableType>
                  <Address>cBase</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                  <CheatEntries>
                    <CheatEntry>
                      <ID>99</ID>
                      <Description>"Current Character Name"</Description>
                      <ShowAsSigned>0</ShowAsSigned>
                      <VariableType>String</VariableType>
                      <Length>10</Length>
                      <Unicode>1</Unicode>
                      <CodePage>0</CodePage>
                      <ZeroTerminate>1</ZeroTerminate>
                      <Address>+7c</Address>
                      <Offsets>
                        <Offset>8</Offset>
                      </Offsets>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>116</ID>
                      <Description>"money"</Description>
                      <ShowAsSigned>0</ShowAsSigned>
                      <VariableType>4 Bytes</VariableType>
                      <Address>pBase</Address>
                      <Offsets>
                        <Offset>4</Offset>
                        <Offset>1c</Offset>
                      </Offsets>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>100</ID>
                      <Description>"Stamina"</Description>
                      <ShowAsSigned>0</ShowAsSigned>
                      <VariableType>2 Bytes</VariableType>
                      <Address>+b4</Address>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>101</ID>
                      <Description>"energy"</Description>
                      <VariableType>2 Bytes</VariableType>
                      <Address>+66</Address>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>102</ID>
                      <Description>"stunnedStarted"</Description>
                      <VariableType>4 Bytes</VariableType>
                      <Address>+A0</Address>
                    </CheatEntry>
                    <CheatEntry>
                      <ID>103</ID>
                      <Description>"Stats Base"</Description>
                      <Options moHideChildren="1"/>
                      <ShowAsSigned>0</ShowAsSigned>
                      <VariableType>4 Bytes</VariableType>
                      <Address>pBase</Address>
                      <Offsets>
                        <Offset>0</Offset>
                      </Offsets>
                      <CheatEntries>
                        <CheatEntry>
                          <ID>115</ID>
                          <Description>"xp"</Description>
                          <ShowAsSigned>0</ShowAsSigned>
                          <VariableType>4 Bytes</VariableType>
                          <Address>+24</Address>
                        </CheatEntry>
                        <CheatEntry>
                          <ID>117</ID>
                          <Description>"energyDrinkStartedAt"</Description>
                          <VariableType>4 Bytes</VariableType>
                          <Address>+20</Address>
                        </CheatEntry>
                        <CheatEntry>
                          <ID>118</ID>
                          <Description>"maxSpecialPower"</Description>
                          <VariableType>Byte</VariableType>
                          <Address>+48</Address>
                        </CheatEntry>
                        <CheatEntry>
                          <ID>119</ID>
                          <Description>"specialPower"</Description>
                          <VariableType>Byte</VariableType>
                          <Address>+47</Address>
                        </CheatEntry>
                        <CheatEntry>
                          <ID>120</ID>
                          <Description>"willPower"</Description>
                          <VariableType>Byte</VariableType>
                          <Address>+46</Address>
                        </CheatEntry>
                        <CheatEntry>
                          <ID>121</ID>
                          <Description>"strength"</Description>
                          <VariableType>Byte</VariableType>
                          <Address>+45</Address>
                        </CheatEntry>
                        <CheatEntry>
                          <ID>122</ID>
                          <Description>"defense"</Description>
                          <VariableType>Byte</VariableType>
                          <Address>+44</Address>
                        </CheatEntry>
                        <CheatEntry>
                          <ID>123</ID>
                          <Description>"agility"</Description>
                          <VariableType>Byte</VariableType>
                          <Address>+43</Address>
                        </CheatEntry>
                        <CheatEntry>
                          <ID>124</ID>
                          <Description>"throwing"</Description>
                          <VariableType>Byte</VariableType>
                          <Address>+42</Address>
                        </CheatEntry>
                        <CheatEntry>
                          <ID>125</ID>
                          <Description>"weapon"</Description>
                          <VariableType>Byte</VariableType>
                          <Address>+41</Address>
                        </CheatEntry>
                        <CheatEntry>
                          <ID>126</ID>
                          <Description>"attack"</Description>
                          <VariableType>Byte</VariableType>
                          <Address>+40</Address>
                        </CheatEntry>
                        <CheatEntry>
                          <ID>127</ID>
                          <Description>"maxStamina"</Description>
                          <VariableType>2 Bytes</VariableType>
                          <Address>+3E</Address>
                        </CheatEntry>
                        <CheatEntry>
                          <ID>128</ID>
                          <Description>"maxEnergy"</Description>
                          <VariableType>2 Bytes</VariableType>
                          <Address>+3C</Address>
                        </CheatEntry>
                      </CheatEntries>
                    </CheatEntry>
                  </CheatEntries>
                </CheatEntry>
                <CheatEntry>
                  <ID>139</ID>
                  <Description>"Current Grabbed Weapon/Enemy Base"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>4 Bytes</VariableType>
                  <Address>geBase</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                  <CheatEntries>
                    <CheatEntry>
                      <ID>140</ID>
                      <Description>"Stamina"</Description>
                      <ShowAsSigned>0</ShowAsSigned>
                      <VariableType>2 Bytes</VariableType>
                      <Address>+b4</Address>
                    </CheatEntry>
                  </CheatEntries>
                </CheatEntry>
                <CheatEntry>
                  <ID>141</ID>
                  <Description>"Last Grabbed By Enemy Base"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>4 Bytes</VariableType>
                  <Address>egBase</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                  <CheatEntries>
                    <CheatEntry>
                      <ID>142</ID>
                      <Description>"Stamina"</Description>
                      <ShowAsSigned>0</ShowAsSigned>
                      <VariableType>2 Bytes</VariableType>
                      <Address>+b4</Address>
                    </CheatEntry>
                  </CheatEntries>
                </CheatEntry>
                <CheatEntry>
                  <ID>143</ID>
                  <Description>"Last Hit By Enemy Base"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>4 Bytes</VariableType>
                  <Address>ehBase</Address>
                  <Offsets>
                    <Offset>0</Offset>
                  </Offsets>
                  <CheatEntries>
                    <CheatEntry>
                      <ID>144</ID>
                      <Description>"Stamina"</Description>
                      <ShowAsSigned>0</ShowAsSigned>
                      <VariableType>2 Bytes</VariableType>
                      <Address>+b4</Address>
                    </CheatEntry>
                  </CheatEntries>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
  <UserdefinedSymbols>
    <SymbolEntry>
      <Name>cBase</Name>
      <Address>6F80000</Address>
    </SymbolEntry>
    <SymbolEntry>
      <Name>pBase</Name>
      <Address>6F90000</Address>
    </SymbolEntry>
    <SymbolEntry>
      <Name>ehBase</Name>
      <Address>6FB0000</Address>
    </SymbolEntry>
    <SymbolEntry>
      <Name>egBase</Name>
      <Address>6FC0000</Address>
    </SymbolEntry>
    <SymbolEntry>
      <Name>geBase</Name>
      <Address>6FD0000</Address>
    </SymbolEntry>
    <SymbolEntry>
      <Name>gState</Name>
      <Address>6FE0000</Address>
    </SymbolEntry>
  </UserdefinedSymbols>
  <Comments>This Cheat Table is to have the GNU General Public Licence version 3 applied to it
"Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed." 

www.gnu.org/licenses/gpl-3.0.en.html


©️ Seneekikaant at OpenCheatTable.org</Comments>
</CheatTable>
