<?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>
      <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>1337263278</ID>
          <Description>"------------------------------------------------------------------------------"</Description>
          <Color>FF0080</Color>
          <GroupHeader>1</GroupHeader>
        </CheatEntry>
        <CheatEntry NoCheckbox="1">
          <ID>1337263279</ID>
          <Description>"       HotKeys"</Description>
          <Color>804000</Color>
          <GroupHeader>1</GroupHeader>
        </CheatEntry>
        <CheatEntry NoCheckbox="1">
          <ID>1337263280</ID>
          <Description>"------------------------------------------------------------------------------"</Description>
          <Color>FF0080</Color>
          <GroupHeader>1</GroupHeader>
        </CheatEntry>
        <CheatEntry>
          <ID>1337263275</ID>
          <Description>"F4 Vida Infinita / Infinite Life"</Description>
          <Color>4080FF</Color>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : Carpenter.exe
  Version:
  Date   : 2026-10-11
  Author : alber
  Description :
}

[ENABLE]

aobscanmodule(vida2,GameAssembly.dll,89 BB AC 00 00 00 85 C0 7E ** 85 FF 75 ** 48 8B 4B 50)
alloc(newmem,$1000,vida2)

label(originalcode)
label(return)

newmem:
  push rdi

  // 1. Cargar y validar [p_stamina] en rdi
  mov rdi, [p_stamina]
  test rdi, rdi
  je originalcode

  // 2. Resolver la cadena de offsets: Base + 0xB0 -&gt; + 0x70
  mov rdi, [rdi+0xB0]
  test rdi, rdi
  je originalcode

  mov rdi, [rdi+0x70]
  test rdi, rdi
  je originalcode

  // 3. Comparar [rdi] con edi (el valor que se va a escribir en [rbx+000000AC])
  cmp rdi, rbx
  jne originalcode

  // 4. Si son iguales, escribir el valor de 4 bytes de 100
  mov [rbx+000000AC], #100                // Usa (float)100 si la estamina es decimal
  pop rdi
  jmp return

originalcode:
  pop rdi
  mov [rbx+000000AC],edi         // Instrucción original
  jmp return

vida2:
  jmp newmem
  nop
return:

registersymbol(vida2)

[DISABLE]

vida2:
  db 89 BB AC 00 00 00

unregistersymbol(vida2)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+7C30A8

GameAssembly.dll+7C3088: 3B FE              - cmp edi,esi
GameAssembly.dll+7C308A: 7C 08              - jl GameAssembly.dll+7C3094
GameAssembly.dll+7C308C: 3B F8              - cmp edi,eax
GameAssembly.dll+7C308E: 7E 06              - jle GameAssembly.dll+7C3096
GameAssembly.dll+7C3090: 8B F8              - mov edi,eax
GameAssembly.dll+7C3092: EB 02              - jmp GameAssembly.dll+7C3096
GameAssembly.dll+7C3094: 8B FE              - mov edi,esi
GameAssembly.dll+7C3096: 39 BB AC 00 00 00  - cmp [rbx+000000AC],edi
GameAssembly.dll+7C309C: 0F 84 0C 01 00 00  - je GameAssembly.dll+7C31AE
GameAssembly.dll+7C30A2: 8B 83 AC 00 00 00  - mov eax,[rbx+000000AC]
// ---------- INJECTING HERE ----------
GameAssembly.dll+7C30A8: 89 BB AC 00 00 00  - mov [rbx+000000AC],edi
// ---------- DONE INJECTING  ----------
GameAssembly.dll+7C30AE: 85 C0              - test eax,eax
GameAssembly.dll+7C30B0: 7E 2A              - jle GameAssembly.dll+7C30DC
GameAssembly.dll+7C30B2: 85 FF              - test edi,edi
GameAssembly.dll+7C30B4: 75 41              - jne GameAssembly.dll+7C30F7
GameAssembly.dll+7C30B6: 48 8B 4B 50        - mov rcx,[rbx+50]
GameAssembly.dll+7C30BA: 48 85 C9           - test rcx,rcx
GameAssembly.dll+7C30BD: 0F 84 FB 00 00 00  - je GameAssembly.dll+7C31BE
GameAssembly.dll+7C30C3: 33 D2              - xor edx,edx
GameAssembly.dll+7C30C5: E8 96 73 95 02     - call UnityEngine.Events.UnityEvent.Invoke
GameAssembly.dll+7C30CA: 48 8B 4B 78        - mov rcx,[rbx+78]
}
</AssemblerScript>
          <Hotkeys>
            <Hotkey>
              <Action>Toggle Activation</Action>
              <Keys>
                <Key>115</Key>
              </Keys>
              <ID>0</ID>
              <ActivateSound TTS="EN">Infinite life Activated</ActivateSound>
              <DeactivateSound TTS="EN">Infinite life Deactivated</DeactivateSound>
            </Hotkey>
          </Hotkeys>
        </CheatEntry>
        <CheatEntry>
          <ID>1337263271</ID>
          <Description>"F5 Stamina Infinita / Infinite Stamina"</Description>
          <Color>4080FF</Color>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : Carpenter.exe
  Version: 
  Date   : 2026-10-11
  Author : alber
  Description : Stamina no desciende

  &lt;Optional info&gt;
}

[ENABLE]

aobscanmodule(stano,GameAssembly.dll,F3 0F 5C CE 0F 2F F9 F3 0F 11 8B 94 00 00 00) // should be unique
alloc(newmem,$1000,stano)

label(code)
label(return)

newmem:
  pxor xmm6, xmm6
code:
  subss xmm1,xmm6
  comiss xmm7,xmm1
  jmp return

stano:
  jmp newmem
  nop 2
return:
registersymbol(stano)

[DISABLE]

stano:
  db F3 0F 5C CE 0F 2F F9

unregistersymbol(stano)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+8766B3

GameAssembly.dll+876684: E8 D7 78 C3 FF           - call GameAssembly.il2cpp_runtime_class_init
GameAssembly.dll+876689: 33 D2                    - xor edx,edx
GameAssembly.dll+87668B: B9 00 80 00 00           - mov ecx,00008000
GameAssembly.dll+876690: E8 0B E9 05 00           - call GameUnlocksSettings.IsUnlockActive
GameAssembly.dll+876695: 84 C0                    - test al,al
GameAssembly.dll+876697: 74 08                    - je GameAssembly.dll+8766A1
GameAssembly.dll+876699: F3 0F 59 35 FF C7 D1 02  - mulss xmm6,[GameAssembly.dll+3592EA0]
GameAssembly.dll+8766A1: F3 0F 10 8B 94 00 00 00  - movss xmm1,[rbx+00000094]
GameAssembly.dll+8766A9: F3 0F 59 73 4C           - mulss xmm6,[rbx+4C]
GameAssembly.dll+8766AE: 48 89 7C 24 70           - mov [rsp+70],rdi
// ---------- INJECTING HERE ----------
GameAssembly.dll+8766B3: F3 0F 5C CE              - subss xmm1,xmm6
// ---------- DONE INJECTING  ----------
GameAssembly.dll+8766B7: 0F 2F F9                 - comiss xmm7,xmm1
GameAssembly.dll+8766BA: F3 0F 11 8B 94 00 00 00  - movss [rbx+00000094],xmm1
GameAssembly.dll+8766C2: 76 79                    - jna GameAssembly.dll+87673D
GameAssembly.dll+8766C4: F3 0F 10 83 98 00 00 00  - movss xmm0,[rbx+00000098]
GameAssembly.dll+8766CC: 0F 2F C7                 - comiss xmm0,xmm7
GameAssembly.dll+8766CF: 76 6C                    - jna GameAssembly.dll+87673D
GameAssembly.dll+8766D1: 0F 57 0D 88 C5 D1 02     - xorps xmm1,[GameAssembly.dll+3592C60]
GameAssembly.dll+8766D8: 48 8B 7B 58              - mov rdi,[rbx+58]
GameAssembly.dll+8766DC: F3 0F 5C C1              - subss xmm0,xmm1
GameAssembly.dll+8766E0: F3 0F 5F F8              - maxss xmm7,xmm0
}
</AssemblerScript>
          <Hotkeys>
            <Hotkey>
              <Action>Toggle Activation</Action>
              <Keys>
                <Key>116</Key>
              </Keys>
              <ID>0</ID>
              <ActivateSound TTS="EN">Infinite Stamina Activated</ActivateSound>
              <DeactivateSound TTS="EN">Infinite Stamina Deactivated</DeactivateSound>
            </Hotkey>
          </Hotkeys>
        </CheatEntry>
        <CheatEntry>
          <ID>1337263277</ID>
          <Description>"F6 Municion Infinita / Infinite ammo"</Description>
          <Color>4080FF</Color>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : Carpenter.exe
  Version: 
  Date   : 2026-10-11
  Author : alber
  Description : 

  &lt;Optional info&gt;
}

[ENABLE]

aobscanmodule(municion,GameAssembly.dll,FF C8 39 41 60 74 ** 89 41 60 48 8B 89 88 00 00 00) // should be unique
alloc(newmem,$1000,municion)

label(code)
label(return)

newmem:

code:
  //dec eax
  cmp [rcx+60],eax
  jmp return

municion:
  jmp newmem
return:
registersymbol(municion)

[DISABLE]

municion:
  db FF C8 39 41 60

unregistersymbol(municion)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+6EA46C

GameAssembly.dll+6EA45A: CC                    - int 3 
GameAssembly.dll+6EA45B: CC                    - int 3 
GameAssembly.dll+6EA45C: CC                    - int 3 
GameAssembly.dll+6EA45D: CC                    - int 3 
GameAssembly.dll+6EA45E: CC                    - int 3 
GameAssembly.dll+6EA45F: CC                    - int 3 
ProjectileWeaponItemInstance.Fire: 40 53                 - push rbx
GameAssembly.dll+6EA462: 48 83 EC 20           - sub rsp,20
GameAssembly.dll+6EA466: 8B 41 60              - mov eax,[rcx+60]
GameAssembly.dll+6EA469: 48 8B D9              - mov rbx,rcx
// ---------- INJECTING HERE ----------
GameAssembly.dll+6EA46C: FF C8                 - dec eax
// ---------- DONE INJECTING  ----------
GameAssembly.dll+6EA46E: 39 41 60              - cmp [rcx+60],eax
GameAssembly.dll+6EA471: 74 1D                 - je GameAssembly.dll+6EA490
GameAssembly.dll+6EA473: 89 41 60              - mov [rcx+60],eax
GameAssembly.dll+6EA476: 48 8B 89 88 00 00 00  - mov rcx,[rcx+00000088]
GameAssembly.dll+6EA47D: 48 85 C9              - test rcx,rcx
GameAssembly.dll+6EA480: 74 0E                 - je GameAssembly.dll+6EA490
GameAssembly.dll+6EA482: 48 8B 41 18           - mov rax,[rcx+18]
GameAssembly.dll+6EA486: 48 8B 51 28           - mov rdx,[rcx+28]
GameAssembly.dll+6EA48A: 48 8B 49 40           - mov rcx,[rcx+40]
GameAssembly.dll+6EA48E: FF D0                 - call rax
}
</AssemblerScript>
          <Hotkeys>
            <Hotkey>
              <Action>Toggle Activation</Action>
              <Keys>
                <Key>117</Key>
              </Keys>
              <ID>0</ID>
              <ActivateSound TTS="EN">Infinite ammo Activated</ActivateSound>
              <DeactivateSound TTS="EN">Infinite ammo Deactivated</DeactivateSound>
            </Hotkey>
          </Hotkeys>
        </CheatEntry>
        <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]


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 29 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>
        <CheatEntry>
          <ID>1337263269</ID>
          <Description>"Durabilidad de armas infinita / Infinite weapon durability"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : Carpenter.exe
   Version:
   Date   : 2026-10-11
   Author : alber
   Description : Durabilidad infinita segura
}

[ENABLE]

aobscanmodule(durabilidad,GameAssembly.dll,F3 0F 5C C6 F3 0F 5F C1 0F 2F C8 F3 0F 11 43 60)
alloc(newmem,$1000,durabilidad)

label(valor)
label(return)

newmem:
  movss [valor],xmm0  // Guardamos xmm0
  pxor xmm6, xmm6     // Ponemos xmm6 (zmm6) a 0 para anular el daño/desgaste
  subss xmm0, xmm6    // Ejecutamos la resta original (ahora resta 0, la durabilidad no baja)
  maxss xmm0, xmm1    // Ejecutamos la siguiente instrucción original
  movss xmm0,[valor]  // Restauramos xmm0
  jmp return

valor:
  dd 0

durabilidad:
  jmp newmem
  nop 3

return:
registersymbol(durabilidad)

[DISABLE]

durabilidad:
  db F3 0F 5C C6 F3 0F 5F C1

unregistersymbol(durabilidad)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+6E1865

GameAssembly.dll+6E1836: 8B E8                 - mov ebp,eax
GameAssembly.dll+6E1838: E8 03 E8 FF FF        - call MeleeWeaponItemInstance.get_WeaponDefinition
GameAssembly.dll+6E183D: 48 85 C0              - test rax,rax
GameAssembly.dll+6E1840: 0F 84 1A 01 00 00     - je GameAssembly.dll+6E1960
GameAssembly.dll+6E1846: 83 B8 80 01 00 00 00  - cmp dword ptr [rax+00000180],00
GameAssembly.dll+6E184D: 0F 8E 92 00 00 00     - jng GameAssembly.dll+6E18E5
GameAssembly.dll+6E1853: 0F 57 C9              - xorps xmm1,xmm1
GameAssembly.dll+6E1856: 0F 2F 4B 60           - comiss xmm1,[rbx+60]
GameAssembly.dll+6E185A: 0F 83 85 00 00 00     - jae GameAssembly.dll+6E18E5
GameAssembly.dll+6E1860: F3 0F 10 43 60        - movss xmm0,[rbx+60]
// ---------- INJECTING HERE ----------
GameAssembly.dll+6E1865: F3 0F 5C C6           - subss xmm0,xmm6
// ---------- DONE INJECTING  ----------
GameAssembly.dll+6E1869: F3 0F 5F C1           - maxss xmm0,xmm1
GameAssembly.dll+6E186D: 0F 2F C8              - comiss xmm1,xmm0
GameAssembly.dll+6E1870: F3 0F 11 43 60        - movss [rbx+60],xmm0
GameAssembly.dll+6E1875: 72 6E                 - jb GameAssembly.dll+6E18E5
GameAssembly.dll+6E1877: 48 8B 4B 68           - mov rcx,[rbx+68]
GameAssembly.dll+6E187B: 48 85 C9              - test rcx,rcx
GameAssembly.dll+6E187E: 74 0E                 - je GameAssembly.dll+6E188E
GameAssembly.dll+6E1880: 48 8B 41 18           - mov rax,[rcx+18]
GameAssembly.dll+6E1884: 48 8B 51 28           - mov rdx,[rcx+28]
GameAssembly.dll+6E1888: 48 8B 49 40           - mov rcx,[rcx+40]
}
</AssemblerScript>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
  <CheatCodes>
    <CodeEntry>
      <Description>Change of mov [rdi+000000A8],rax</Description>
      <AddressString>GameAssembly.dll+2131F5F</AddressString>
      <Before>
        <Byte>8F</Byte>
        <Byte>A8</Byte>
        <Byte>00</Byte>
        <Byte>00</Byte>
        <Byte>00</Byte>
      </Before>
      <Actual>
        <Byte>48</Byte>
        <Byte>89</Byte>
        <Byte>87</Byte>
        <Byte>A8</Byte>
        <Byte>00</Byte>
        <Byte>00</Byte>
        <Byte>00</Byte>
      </Actual>
      <After>
        <Byte>48</Byte>
        <Byte>8B</Byte>
        <Byte>D0</Byte>
        <Byte>E8</Byte>
        <Byte>E2</Byte>
      </After>
    </CodeEntry>
  </CheatCodes>
  <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>
