<?xml version="1.0" encoding="utf-8"?>
<CheatTable UsesMono="1" CheatEngineTableVersion="52">
  <CheatEntries>
    <CheatEntry NoCheckbox="1">
      <ID>1337263245</ID>
      <Description>"Es necesario tener Cheat Engine actualizado a una version 7.5 o superior"</Description>
      <Color>804000</Color>
      <GroupHeader>1</GroupHeader>
    </CheatEntry>
    <CheatEntry NoCheckbox="1">
      <ID>1337263246</ID>
      <Description>"y ejecutarlo como Administrador para que la tabla funcione correctamente."</Description>
      <Color>804000</Color>
      <GroupHeader>1</GroupHeader>
    </CheatEntry>
    <CheatEntry NoCheckbox="1">
      <ID>1337263247</ID>
      <Description>"------------------------------------------------------------------------------"</Description>
      <Color>FF0080</Color>
      <GroupHeader>1</GroupHeader>
    </CheatEntry>
    <CheatEntry NoCheckbox="1">
      <ID>1337263259</ID>
      <Description>"You need to have Cheat Engine updated to version 7.5 or higher"</Description>
      <Color>804000</Color>
      <GroupHeader>1</GroupHeader>
    </CheatEntry>
    <CheatEntry NoCheckbox="1">
      <ID>1337263260</ID>
      <Description>"and run it as Administrator for the table to function correctly."</Description>
      <Color>804000</Color>
      <GroupHeader>1</GroupHeader>
    </CheatEntry>
    <CheatEntry NoCheckbox="1">
      <ID>1337263261</ID>
      <Description>"------------------------------------------------------------------------------"</Description>
      <Color>FF0080</Color>
      <GroupHeader>1</GroupHeader>
    </CheatEntry>
    <CheatEntry NoCheckbox="1">
      <ID>1337263248</ID>
      <Description>"TABLA CREADA POR ALBERTO47"</Description>
      <Color>FF0080</Color>
      <GroupHeader>1</GroupHeader>
    </CheatEntry>
    <CheatEntry NoCheckbox="1">
      <ID>1337263249</ID>
      <Description>"------------------------------------------------------------------------------"</Description>
      <Color>800080</Color>
      <GroupHeader>1</GroupHeader>
    </CheatEntry>
    <CheatEntry>
      <ID>20</ID>
      <Description>"F2 - Activar proceso (Activar y esperar 3 segundos para pulsar F3) - Activate process"</Description>
      <Options moHideChildren="1"/>
      <Color>0000FF</Color>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
{$lua}
local process = 'Carpenter.exe'
OpenProcess(process)
	if process ~= process or (readInteger(process) == nil) then
		error(ShowMessage("No se encuentra el proceso"))
	else
		mono_initialize()
        LaunchMonoDataCollector()
	end


--Set Window Title
local title = "Silver Pines 6000.3.15f1 - Alberto47"
if not((MainForm.Caption):match("Silver Pines")) then
MainForm.Caption = title..' ~ '..MainForm.Caption
end
{$asm}

[DISABLE]

</AssemblerScript>
      <Hotkeys>
        <Hotkey>
          <Action>Toggle Activation</Action>
          <Keys>
            <Key>113</Key>
          </Keys>
          <Description>F1 - Activar proceso</Description>
          <ID>0</ID>
          <ActivateSound>Activate</ActivateSound>
          <DeactivateSound>Deactivate</DeactivateSound>
        </Hotkey>
      </Hotkeys>
    </CheatEntry>
    <CheatEntry>
      <ID>0</ID>
      <Description>"F3 - Activar punteros  - Activate pointers"</Description>
      <Options moHideChildren="1"/>
      <Color>0000FF</Color>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : Carpenter.exe
  Version: 
  Date   : 2026-10-09
  Author : alber
  Description : 

  &lt;Optional info&gt;
}

[ENABLE]

aobscanmodule(stamina,GameAssembly.dll,F3 44 0F 10 83 94 00 00 00 0F 57 C0 0F 2F 83 9C 00 00 00) // should be unique
alloc(memoria_stamina,$1000,stamina)
alloc(p_stamina,8)

label(codigo_stamina)
label(return_stamina)

memoria_stamina:
  mov [p_stamina],rbx
codigo_stamina:
  movss xmm8,[rbx+00000094]
  jmp return_stamina

stamina:
  jmp memoria_stamina
  nop 4
return_stamina:
registersymbol(stamina)
registersymbol(p_stamina)
[DISABLE]

stamina:
  db F3 44 0F 10 83 94 00 00 00

unregistersymbol(stamina)
unregistersymbol(p_stamina)
dealloc(memoria_stamina)
dealloc(p_stamina)

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+87726F

CharacterStamina.Update: 48 89 5C 24 20                    - mov [rsp+20],rbx
GameAssembly.dll+877245: 56                                - push rsi
GameAssembly.dll+877246: 48 83 EC 70                       - sub rsp,70
GameAssembly.dll+87724A: 80 3D 7B 76 EA 03 00              - cmp byte ptr [GameAssembly.dll+471E8CC],00
GameAssembly.dll+877251: 48 8B D9                          - mov rbx,rcx
GameAssembly.dll+877254: 44 0F 29 44 24 40                 - movaps [rsp+40],xmm8
GameAssembly.dll+87725A: 75 13                             - jne GameAssembly.dll+87726F
GameAssembly.dll+87725C: 48 8D 0D 3D 3A C2 03              - lea rcx,[GameAssembly.dll+449ACA0]
GameAssembly.dll+877263: E8 B8 69 C3 FF                    - call GameAssembly.il2cpp_get_exception_argument_null+3F0
GameAssembly.dll+877268: C6 05 5D 76 EA 03 01              - mov byte ptr [GameAssembly.dll+471E8CC],01
// ---------- INJECTING HERE ----------
GameAssembly.dll+87726F: F3 44 0F 10 83 94 00 00 00        - movss xmm8,[rbx+00000094]
// ---------- DONE INJECTING  ----------
GameAssembly.dll+877278: 0F 57 C0                          - xorps xmm0,xmm0
GameAssembly.dll+87727B: 0F 2F 83 9C 00 00 00              - comiss xmm0,[rbx+0000009C]
GameAssembly.dll+877282: 0F B6 B3 90 00 00 00              - movzx esi,byte ptr [rbx+00000090]
GameAssembly.dll+877289: 48 89 BC 24 88 00 00 00           - mov [rsp+00000088],rdi
GameAssembly.dll+877291: C7 84 24 80 00 00 00 00 00 00 00  - mov [rsp+00000080],00000000
GameAssembly.dll+87729C: C7 84 24 90 00 00 00 00 00 00 00  - mov [rsp+00000090],00000000
GameAssembly.dll+8772A7: 0F 29 74 24 60                    - movaps [rsp+60],xmm6
GameAssembly.dll+8772AC: 44 0F 29 4C 24 30                 - movaps [rsp+30],xmm9
GameAssembly.dll+8772B2: 73 20                             - jae GameAssembly.dll+8772D4
GameAssembly.dll+8772B4: F3 0F 10 B3 9C 00 00 00           - movss xmm6,[rbx+0000009C]
}
</AssemblerScript>
      <Hotkeys>
        <Hotkey>
          <Action>Toggle Activation</Action>
          <Keys>
            <Key>114</Key>
          </Keys>
          <ID>0</ID>
          <ActivateSound>Activate</ActivateSound>
          <DeactivateSound>Deactivate</DeactivateSound>
        </Hotkey>
      </Hotkeys>
      <CheatEntries>
        <CheatEntry NoCheckbox="1">
          <ID>1337263262</ID>
          <Description>"------------------------------------------------------------------------------"</Description>
          <Color>FF0080</Color>
          <GroupHeader>1</GroupHeader>
        </CheatEntry>
        <CheatEntry NoCheckbox="1">
          <ID>1337263263</ID>
          <Description>"       Opciones del personaje / Character options"</Description>
          <Color>804000</Color>
          <GroupHeader>1</GroupHeader>
        </CheatEntry>
        <CheatEntry NoCheckbox="1">
          <ID>1337263264</ID>
          <Description>"------------------------------------------------------------------------------"</Description>
          <Color>FF0080</Color>
          <GroupHeader>1</GroupHeader>
        </CheatEntry>
        <CheatEntry>
          <ID>4</ID>
          <Description>"Vida / Life"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>4 Bytes</VariableType>
          <Address>[p_stamina]+B0</Address>
          <Offsets>
            <Offset>AC</Offset>
            <Offset>70</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>5</ID>
          <Description>"Vida Max / Life Max"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>4 Bytes</VariableType>
          <Address>[p_stamina]+B0</Address>
          <Offsets>
            <Offset>20</Offset>
            <Offset>70</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>1</ID>
          <Description>"Stamina"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Float</VariableType>
          <Address>[p_stamina]+94</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>2</ID>
          <Description>"Stamina Max"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Float</VariableType>
          <Address>[p_stamina]+A0</Address>
          <Offsets>
            <Offset>1C</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry NoCheckbox="1">
          <ID>1337263265</ID>
          <Description>"------------------------------------------------------------------------------"</Description>
          <Color>FF0080</Color>
          <GroupHeader>1</GroupHeader>
        </CheatEntry>
        <CheatEntry NoCheckbox="1">
          <ID>1337263266</ID>
          <Description>"Otras opciones / Other options"</Description>
          <Color>804000</Color>
          <GroupHeader>1</GroupHeader>
        </CheatEntry>
        <CheatEntry NoCheckbox="1">
          <ID>1337263267</ID>
          <Description>"------------------------------------------------------------------------------"</Description>
          <Color>FF0080</Color>
          <GroupHeader>1</GroupHeader>
        </CheatEntry>
        <CheatEntry>
          <ID>3</ID>
          <Description>"Dinero / Money"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>4 Bytes</VariableType>
          <Address>[p_stamina]+A8</Address>
          <Offsets>
            <Offset>100</Offset>
            <Offset>20</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>6</ID>
          <Description>"El dinero no disminuye / Money doesn't decrease"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : Carpenter.exe
  Version: 
  Date   : 2026-10-09
  Author : alber
  Description : 

  &lt;Optional info&gt;
}

[ENABLE]


//aobscanmodule(dinero,GameAssembly.dll,CC BB 00 01 00 00) // should be unique
define(dinero,GameAssembly.dll+6E79BB)
alloc(newmem,$1000,dinero)

label(code)
label(return)

newmem:

code:
  //sub [rbx+00000100],edi
  jmp return

dinero:
  jmp newmem
  nop
return:
registersymbol(dinero)

[DISABLE]

dinero:
  db CC BB 00 01 00 00

unregistersymbol(dinero)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+6E79BB

GameAssembly.dll+6E7991: 8B FA                 - mov edi,edx
GameAssembly.dll+6E7993: 48 8B D9              - mov rbx,rcx
GameAssembly.dll+6E7996: 75 1F                 - jne GameAssembly.dll+6E79B7
GameAssembly.dll+6E7998: 48 8D 0D 19 E7 D6 03  - lea rcx,[GameAssembly.dll+44560B8]
GameAssembly.dll+6E799F: E8 7C 62 DC FF        - call GameAssembly.il2cpp_get_exception_argument_null+3F0
GameAssembly.dll+6E79A4: 48 8D 0D F5 32 DB 03  - lea rcx,[GameAssembly.dll+449ACA0]
GameAssembly.dll+6E79AB: E8 70 62 DC FF        - call GameAssembly.il2cpp_get_exception_argument_null+3F0
GameAssembly.dll+6E79B0: C6 05 25 61 03 04 01  - mov byte ptr [GameAssembly.dll+471DADC],01
GameAssembly.dll+6E79B7: 85 FF                 - test edi,edi
GameAssembly.dll+6E79B9: 7E 51                 - jle GameAssembly.dll+6E7A0C
// ---------- INJECTING HERE ----------
GameAssembly.dll+6E79BB: 29 BB 00 01 00 00     - sub [rbx+00000100],edi
// ---------- DONE INJECTING  ----------
GameAssembly.dll+6E79C1: 48 8B 0D D8 32 DB 03  - mov rcx,[GameAssembly.dll+449ACA0]
GameAssembly.dll+6E79C8: 48 8B BB 18 01 00 00  - mov rdi,[rbx+00000118]
GameAssembly.dll+6E79CF: 83 B9 E4 00 00 00 00  - cmp dword ptr [rcx+000000E4],00
GameAssembly.dll+6E79D6: 75 05                 - jne GameAssembly.dll+6E79DD
GameAssembly.dll+6E79D8: E8 83 65 DC FF        - call GameAssembly.il2cpp_runtime_class_init
GameAssembly.dll+6E79DD: 45 33 C0              - xor r8d,r8d
GameAssembly.dll+6E79E0: 33 D2                 - xor edx,edx
GameAssembly.dll+6E79E2: 48 8B CF              - mov rcx,rdi
GameAssembly.dll+6E79E5: E8 46 13 9F 02        - call UnityEngine.Object.op_Inequality
GameAssembly.dll+6E79EA: 84 C0                 - test al,al
}
</AssemblerScript>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
  <UserdefinedSymbols/>
  <LuaScript>function cycleFullCompact(sender,force) local state = not(compactmenuitem.Caption == 'Compact View Mode'); if force~=nil then state = not force end; compactmenuitem.Caption = state and 'Compact View Mode' or 'Full View Mode'; getMainForm().Splitter1.Visible = state; getMainForm().Panel5.Visible    = state; end; function addCompactMenu() if compactmenualreadyexists then return end; local parent = getMainForm().Menu.Items; compactmenuitem = createMenuItem(parent); parent.add(compactmenuitem); compactmenuitem.Caption = 'Compact View Mode'; compactmenuitem.OnClick = cycleFullCompact; compactmenualreadyexists = 'yes'; end; addCompactMenu(); cycleFullCompact(nil,true)

function setTheme(c, cb, cap) local mf=getMainForm(); local al=getAddressList(); mf.Color=c; mf.Foundlist3.Color=c; al.Control[0].BackgroundColor=c; AddressList.CheckboxColor=cb; themeMenu.Caption='Theme: '..cap; end; function addThemeMenu() if thememenuexists then return end; local m=getMainForm().Menu.Items; themeMenu=createMenuItem(m); m.add(themeMenu); themeMenu.Caption='Theme'; local function addSub(n,f) local s=createMenuItem(themeMenu); s.Caption=n; s.OnClick=f; themeMenu.add(s) end; addSub('Dark Mode', function() setTheme(0x000000, 0x0000FF, 'Dark') end); addSub('Light Mode', function() setTheme(0xFFFFFF, 0x000000, 'Light') end); addSub('Default', function() setTheme(clDefault, clDefault, 'Default') end); thememenuexists='yes' end; addThemeMenu();



</LuaScript>
</CheatTable>
