<?xml version="1.0" encoding="utf-8"?>
<CheatTable 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>1337263262</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 = 'WellDweller.exe'
OpenProcess(process)
	if process ~= process or (readInteger(process) == nil) then
		error(ShowMessage("No se encuentra el proceso"))
	end


--Set Window Title
local title = "Well Dweller versiones 8.12.2026 y 9.14.2026 - Alberto47"
if not((MainForm.Caption):match("Well Dweller")) 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>1337263263</ID>
      <Description>"F3 - Activar punteros  - Activate pointers"</Description>
      <Color>0000FF</Color>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : WellDweller.exe
  Version:
  Date   : 2026-09-27
  Author : alber
  Description :
}

[ENABLE]

aobscanmodule(valor,WellDweller.exe,FD FF EB 06 48 8B 02 48 89 03 C7) // should be unique  FD FF EB 06 48 8B 02 48 89 03 C7
alloc(newmem,$1000,valor)
alloc(puntero,8)

label(return)

newmem:
  // Guardamos los flags originales porque el CMP los modifica
  pushfq

  // Comprobamos los últimos 12 bits de RDX
  mov rax,rdx
  and eax,00000FFF

  cmp eax,000003C0
  je guardar_puntero

  cmp eax,00000840
  je guardar_puntero

  popfq

  // Código original
  mov rax,[rdx]
  mov [rbx],rax
  jmp return


guardar_puntero:
  mov [puntero],rdx
  popfq

  // Código original
  mov rax,[rdx]
  mov [rbx],rax
  jmp return


valor+04:
  jmp newmem
  nop

return:

registersymbol(valor)
registersymbol(puntero)

[DISABLE]

valor+04:
  db 48 8B 02 48 89 03

unregistersymbol(valor)
unregistersymbol(puntero)

dealloc(newmem)
dealloc(puntero)

{
// ORIGINAL CODE - INJECTION POINT: WellDweller.exe+AE2F1

WellDweller.exe+AE2D3: 8B 42 08                 - mov eax,[rdx+08]
WellDweller.exe+AE2D6: 89 43 08                 - mov [rbx+08],eax
WellDweller.exe+AE2D9: 83 E1 1F                 - and ecx,1F
WellDweller.exe+AE2DC: B8 01 00 00 00           - mov eax,00000001
WellDweller.exe+AE2E1: D3 E0                    - shl eax,cl
WellDweller.exe+AE2E3: A8 46                    - test al,46
WellDweller.exe+AE2E5: 74 0A                    - je WellDweller.exe+AE2F1
WellDweller.exe+AE2E7: 48 8B CB                 - mov rcx,rbx
WellDweller.exe+AE2EA: E8 21 C7 FD FF           - call WellDweller.exe+8AA10
WellDweller.exe+AE2EF: EB 06                    - jmp WellDweller.exe+AE2F7

// ---------- INJECTING HERE ----------
WellDweller.exe+AE2F1: 48 8B 02                 - mov rax,[rdx]
// ---------- DONE INJECTING ----------

WellDweller.exe+AE2F4: 48 89 03                 - mov [rbx],rax
WellDweller.exe+AE2F7: C7 44 24 20 01 00 00 00  - mov [rsp+20],00000001
WellDweller.exe+AE2FF: 48 8B D7                 - mov rdx,rdi
WellDweller.exe+AE302: 48 8B CB                 - mov rcx,rbx
WellDweller.exe+AE305: E8 36 CE FD FF           - call WellDweller.exe+8B140
WellDweller.exe+AE30A: 48 8B C3                 - mov rax,rbx
WellDweller.exe+AE30D: 48 8B 5C 24 48           - mov rbx,[rsp+48]
WellDweller.exe+AE312: 48 83 C4 30              - add rsp,30
WellDweller.exe+AE316: 5F                       - pop rdi
WellDweller.exe+AE317: C3                       - ret
}
</AssemblerScript>
      <Hotkeys>
        <Hotkey>
          <Action>Toggle Activation</Action>
          <Keys>
            <Key>114</Key>
          </Keys>
          <ID>0</ID>
          <ActivateSound>Activate</ActivateSound>
          <DeactivateSound>Activate</DeactivateSound>
        </Hotkey>
      </Hotkeys>
      <CheatEntries>
        <CheatEntry>
          <ID>4</ID>
          <Description>"Vida / Life"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Double</VariableType>
          <Address>[puntero]+250</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>5</ID>
          <Description>"Bomba / Bomb"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Double</VariableType>
          <Address>[puntero]</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>7</ID>
          <Description>"Dinero / Money"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Double</VariableType>
          <Address>[puntero]-470</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>8</ID>
          <Description>"Casillas disponibles para Amuletos / Available slots for Amulets"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Double</VariableType>
          <Address>[puntero]-3B0</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>9</ID>
          <Description>"Pajaros rescatados / Rescued birds"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Double</VariableType>
          <Address>[puntero]-5E0</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>10</ID>
          <Description>"Herramientas / Tools"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Double</VariableType>
          <Address>[puntero]-4E0</Address>
        </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>
