<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="45">
  <CheatEntries>
    <CheatEntry>
      <ID>8</ID>
      <Description>"Enable table"</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
{$lua}
mono_initialize()
LaunchMonoDataCollector()
{$asm}
[DISABLE]
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>1</ID>
          <Description>"Find Player"</Description>
          <Options moHideChildren="1"/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[ENABLE]
aobscanregion(FindPlayer,Forestrike.Characters.ForestrikePlayer.OnUpdate,Forestrike.Characters.ForestrikePlayer.OnUpdate+A4,80 B9 10 02 00 00 00)
aobscanregion(FindCoins,Forestrike.PlayerCurrencyManager.HasEnoughGold,Forestrike.PlayerCurrencyManager.HasEnoughGold+21,48 8B 59 40 48 8B F9)
alloc(newmem1,$1000,FindPlayer)
alloc(newmem2,$1000,FindCoins)
registersymbol(FindPlayer)
registersymbol(FindCoins)
registersymbol(pPlayer)
registersymbol(pCoins)
label(return1)
label(return2)
alloc(pPlayer,8)
alloc(pCoins,8)

pPlayer:
  dq 0

pCoins:
  dq 0

newmem1:
  cmp byte ptr [rcx+00000210],00
  mov [pPlayer],rcx
  jmp return1

FindPlayer:
  jmp newmem1
  nop 2
return1:

newmem2:
  mov rbx,[rcx+40]
  mov rdi,rcx
  mov [pCoins],rdi
  jmp return2

FindCoins:
  jmp newmem2
  nop 2
return2:

[DISABLE]
FindPlayer:
  db 80 B9 10 02 00 00 00

FindCoins:
  db 48 8B 59 40 48 8B F9

unregistersymbol(*)
dealloc(*)

{
// ORIGINAL CODE - INJECTION POINT: FindPlayer - GameAssembly.dll+74DA3A

GameAssembly.dll+74DA1E: 48 8B 5C 24 30        - mov rbx,[rsp+30]
GameAssembly.dll+74DA23: 48 83 C4 20           - add rsp,20
GameAssembly.dll+74DA27: 5F                    - pop rdi
GameAssembly.dll+74DA28: C3                    - ret
GameAssembly.dll+74DA29: E8 52 01 BE FF        - call GameAssembly.il2cpp_method_get_class+A0
GameAssembly.dll+74DA2E: CC                    - int 3
GameAssembly.dll+74DA2F: CC                    - int 3
Forestrike.Characters.ForestrikePlayer.OnUpdate: 48 89 5C 24 08        - mov [rsp+08],rbx
GameAssembly.dll+74DA35: 57                    - push rdi
GameAssembly.dll+74DA36: 48 83 EC 20           - sub rsp,20
// ---------- INJECTING HERE ----------
GameAssembly.dll+74DA3A: 80 B9 10 02 00 00 00  - cmp byte ptr [rcx+00000210],00
// ---------- DONE INJECTING  ----------
GameAssembly.dll+74DA41: 48 8B D9              - mov rbx,rcx
GameAssembly.dll+74DA44: 74 3A                 - je GameAssembly.dll+74DA80
GameAssembly.dll+74DA46: 33 C9                 - xor ecx,ecx
GameAssembly.dll+74DA48: E8 73 D2 08 00        - call Forestrike.FGC.get_InputManager
GameAssembly.dll+74DA4D: 48 85 C0              - test rax,rax
GameAssembly.dll+74DA50: 74 7D                 - je GameAssembly.dll+74DACF
GameAssembly.dll+74DA52: 33 D2                 - xor edx,edx
GameAssembly.dll+74DA54: 48 8B C8              - mov rcx,rax
GameAssembly.dll+74DA57: E8 E4 6C 09 00        - call Forestrike.InputManager.get_CurrentCategory
GameAssembly.dll+74DA5C: 83 F8 02              - cmp eax,02

--------------------------------------

// ORIGINAL CODE - INJECTION POINT: FindCoins - GameAssembly.dll+7F9238

GameAssembly.dll+7F921C: CC                    - int 3
GameAssembly.dll+7F921D: CC                    - int 3
GameAssembly.dll+7F921E: CC                    - int 3
GameAssembly.dll+7F921F: CC                    - int 3
Forestrike.PlayerCurrencyManager.HasEnoughGold: 48 89 5C 24 10        - mov [rsp+10],rbx
GameAssembly.dll+7F9225: 48 89 74 24 18        - mov [rsp+18],rsi
GameAssembly.dll+7F922A: 57                    - push rdi
GameAssembly.dll+7F922B: 48 83 EC 20           - sub rsp,20
GameAssembly.dll+7F922F: 80 3D E3 DE 89 03 00  - cmp byte ptr [GameAssembly.dll+4097119],00
GameAssembly.dll+7F9236: 8B F2                 - mov esi,edx
// ---------- INJECTING HERE ----------
GameAssembly.dll+7F9238: 48 8B 59 40           - mov rbx,[rcx+40]
// ---------- DONE INJECTING  ----------
GameAssembly.dll+7F923C: 48 8B F9              - mov rdi,rcx
GameAssembly.dll+7F923F: 75 13                 - jne GameAssembly.dll+7F9254
GameAssembly.dll+7F9241: 48 8D 0D 20 64 61 03  - lea rcx,[GameAssembly.dll+3E0F668]
GameAssembly.dll+7F9248: E8 93 46 B3 FF        - call GameAssembly.il2cpp_get_exception_argument_null+3E0
GameAssembly.dll+7F924D: C6 05 C5 DE 89 03 01  - mov byte ptr [GameAssembly.dll+4097119],01
GameAssembly.dll+7F9254: 48 8B 0D 0D 64 61 03  - mov rcx,[GameAssembly.dll+3E0F668]
GameAssembly.dll+7F925B: 83 B9 E0 00 00 00 00  - cmp dword ptr [rcx+000000E0],00
GameAssembly.dll+7F9262: 75 05                 - jne GameAssembly.dll+7F9269
GameAssembly.dll+7F9264: E8 A7 49 B3 FF        - call GameAssembly.il2cpp_runtime_class_init
GameAssembly.dll+7F9269: 45 33 C0              - xor r8d,r8d
}
</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>4</ID>
              <Description>"Ki"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>pPlayer</Address>
              <Offsets>
                <Offset>44</Offset>
                <Offset>80</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>7</ID>
              <Description>"Gold"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>pCoins</Address>
              <Offsets>
                <Offset>1C</Offset>
                <Offset>30</Offset>
                <Offset>18</Offset>
                <Offset>70</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>3</ID>
              <Description>"God Mode"</Description>
              <DropDownList ReadOnly="1" DescriptionOnly="1" DisplayValueAsItem="1">0:Off
1:On
</DropDownList>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>Byte</VariableType>
              <Address>pPlayer</Address>
              <Offsets>
                <Offset>7A</Offset>
                <Offset>90</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>5</ID>
              <Description>"No Ki Consumption"</Description>
              <DropDownList ReadOnly="1" DescriptionOnly="1" DisplayValueAsItem="1">0:Off
1:On
</DropDownList>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>Byte</VariableType>
              <Address>pPlayer</Address>
              <Offsets>
                <Offset>48</Offset>
                <Offset>80</Offset>
              </Offsets>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
  <UserdefinedSymbols/>
</CheatTable>
