<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="51">
  <CheatEntries>
    <CheatEntry>
      <ID>114982</ID>
      <Description>"&lt;=== Attach to process  and activate mono"</Description>
      <Options moHideChildren="1" moDeactivateChildrenAsWell="1"/>
      <Color>0000FF</Color>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
{$lua}
if syntaxcheck then return end
  if(getCEVersion() &lt; 7.4) then
    ShowMessage('Warning! CE version should be 7.4 or above')
  end

OpenProcess("Timberborn.exe")
  if(process == nil) then
    ShowMessage('The process is NOT found!')
  end

LaunchMonoDataCollector()
{$asm}


[DISABLE]

</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>114988</ID>
          <Description>"don't subtract ressources when using them"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>define(address,Timberborn.InventorySystem.Inventory:Take+a8 )
define(bytes,41 FF D3)

[ENABLE]
assert(address,bytes)

address:
  nop 3

[DISABLE]

address:
  db bytes
  // call r11

dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Timberborn.InventorySystem.Inventory:Take+a8

Timberborn.InventorySystem.Inventory:Take+7d: 48 8B D5                       - mov rdx,rbp
Timberborn.InventorySystem.Inventory:Take+80: 48 83 C2 C8                    - add rdx,-38
Timberborn.InventorySystem.Inventory:Take+84: 4C 8B 45 B8                    - mov r8,[rbp-48]
Timberborn.InventorySystem.Inventory:Take+88: 4C 89 45 C8                    - mov [rbp-38],r8
Timberborn.InventorySystem.Inventory:Take+8c: 4C 8B 45 C0                    - mov r8,[rbp-40]
Timberborn.InventorySystem.Inventory:Take+90: 4C 89 45 D0                    - mov [rbp-30],r8
Timberborn.InventorySystem.Inventory:Take+94: 48 8D 12                       - lea rdx,[rdx]
Timberborn.InventorySystem.Inventory:Take+97: 83 38 00                       - cmp dword ptr [rax],00
Timberborn.InventorySystem.Inventory:Take+9a: 48 8D 6D 00                    - lea rbp,[rbp+00]
Timberborn.InventorySystem.Inventory:Take+9e: 49 BB 70 84 6A 14 A9 02 00 00  - mov r11,Timberborn.Goods.GoodRegistry:Subtract
// ---------- INJECTING HERE ----------
Timberborn.InventorySystem.Inventory:Take+a8: 41 FF D3                       - call r11
// ---------- DONE INJECTING  ----------
Timberborn.InventorySystem.Inventory:Take+ab: 48 8B CE                       - mov rcx,rsi
Timberborn.InventorySystem.Inventory:Take+ae: 49 BB A0 62 1B 29 A9 02 00 00  - mov r11,Timberborn.InventorySystem.Inventory:CheckIfUnwantedStockDisappeared
Timberborn.InventorySystem.Inventory:Take+b8: 41 FF D3                       - call r11
Timberborn.InventorySystem.Inventory:Take+bb: 48 8B 45 80                    - mov rax,[rbp-80]
Timberborn.InventorySystem.Inventory:Take+bf: 48 8B 08                       - mov rcx,[rax]
Timberborn.InventorySystem.Inventory:Take+c2: 48 8B 45 80                    - mov rax,[rbp-80]
Timberborn.InventorySystem.Inventory:Take+c6: 48 63 40 08                    - movsxd  rax,dword ptr [rax+08]
Timberborn.InventorySystem.Inventory:Take+ca: F7 D8                          - neg eax
Timberborn.InventorySystem.Inventory:Take+cc: 33 D2                          - xor edx,edx
Timberborn.InventorySystem.Inventory:Take+ce: 48 89 55 88                    - mov [rbp-78],rdx
}
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>114998</ID>
          <Description>"get additional +10 when producing something (Science, e.g.)"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>define(address,Timberborn.Workshops.Manufactory:FinishProduction+12c )
define(bytes,03 CA 89 48 20 00 00 00 67 42 80 01 00 00 C9)

[ENABLE]

assert(address,bytes)
alloc(newmem,$1000)

label(code)
label(return)

newmem:
  add edx,#10
code:
  add ecx,edx
  mov [rax+20],ecx
  add [rax],al
  add [rdi+42],ah
  add byte ptr [rcx],00
  add cl,cl
  jmp return

address:
  jmp far newmem
  nop
return:

[DISABLE]

address:
  db bytes
  // add ecx,edx
  // mov [rax+20],ecx
  // add [rax],al
  // add [rdi+42],ah
  // add byte ptr [rcx],00
  // add cl,cl

dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Timberborn.Workshops.Manufactory:FinishProduction+12c

Timberborn.Workshops.Manufactory:FinishProduction+108: 41 FF D3           - call r11
Timberborn.Workshops.Manufactory:FinishProduction+10b: 85 C0              - test eax,eax
Timberborn.Workshops.Manufactory:FinishProduction+10d: 0F 85 5D FF FF FF  - jne Timberborn.Workshops.Manufactory:FinishProduction+70
Timberborn.Workshops.Manufactory:FinishProduction+113: 48 8B 46 50        - mov rax,[rsi+50]
Timberborn.Workshops.Manufactory:FinishProduction+117: 48 8B 4E 40        - mov rcx,[rsi+40]
Timberborn.Workshops.Manufactory:FinishProduction+11b: 48 8B D1           - mov rdx,rcx
Timberborn.Workshops.Manufactory:FinishProduction+11e: 83 3A 00           - cmp dword ptr [rdx],00
Timberborn.Workshops.Manufactory:FinishProduction+121: 48 63 51 64        - movsxd  rdx,dword ptr [rcx+64]
Timberborn.Workshops.Manufactory:FinishProduction+125: 83 38 00           - cmp dword ptr [rax],00
Timberborn.Workshops.Manufactory:FinishProduction+128: 48 63 48 20        - movsxd  rcx,dword ptr [rax+20]
// ---------- INJECTING HERE ----------
Timberborn.Workshops.Manufactory:FinishProduction+12c: 03 CA              - add ecx,edx
// ---------- DONE INJECTING  ----------
Timberborn.Workshops.Manufactory:FinishProduction+12e: 89 48 20           - mov [rax+20],ecx
Timberborn.Workshops.Manufactory:FinishProduction+131: 00 00              - add [rax],al
Timberborn.Workshops.Manufactory:FinishProduction+133: 00 67 42           - add [rdi+42],ah
Timberborn.Workshops.Manufactory:FinishProduction+136: 80 01 00           - add byte ptr [rcx],00
Timberborn.Workshops.Manufactory:FinishProduction+139: 00 C9              - add cl,cl
Timberborn.Workshops.Manufactory:FinishProduction+13b: 6F                 - outsd
Timberborn.Workshops.Manufactory:FinishProduction+13c: 7F 01              - jg Timberborn.Workshops.Manufactory:FinishProduction+13f
Timberborn.Workshops.Manufactory:FinishProduction+13e: 00 00              - add [rax],al
Timberborn.Workshops.Manufactory:FinishProduction+140: 41 FF D3           - call r11
Timberborn.Workshops.Manufactory:FinishProduction+143: 48 8B CE           - mov rcx,rsi
}
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>114999</ID>
          <Description>"don't spend science points when unlocking something"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>define(address,Timberborn.ScienceSystem.ScienceService:SubtractPoints+27)
define(bytes,2B C6)

[ENABLE]
assert(address,bytes)

address:
  nop 2

[DISABLE]

address:
  db bytes
  // sub eax,esi

dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Timberborn.ScienceSystem.ScienceService:SubtractPoints+27

Timberborn.ScienceSystem.ScienceService:SubtractPoints+4: 48 81 EC 90 00 00 00           - sub rsp,00000090
Timberborn.ScienceSystem.ScienceService:SubtractPoints+b: 48 89 75 F0                    - mov [rbp-10],rsi
Timberborn.ScienceSystem.ScienceService:SubtractPoints+f: 48 89 7D F8                    - mov [rbp-08],rdi
Timberborn.ScienceSystem.ScienceService:SubtractPoints+13: 48 8B F9                       - mov rdi,rcx
Timberborn.ScienceSystem.ScienceService:SubtractPoints+16: 48 8B F2                       - mov rsi,rdx
Timberborn.ScienceSystem.ScienceService:SubtractPoints+19: 48 63 47 20                    - movsxd  rax,dword ptr [rdi+20]
Timberborn.ScienceSystem.ScienceService:SubtractPoints+1d: 2B C6                          - sub eax,esi
Timberborn.ScienceSystem.ScienceService:SubtractPoints+1f: 85 C0                          - test eax,eax
Timberborn.ScienceSystem.ScienceService:SubtractPoints+21: 7C 17                          - jl Timberborn.ScienceSystem.ScienceService:SubtractPoints+3a
Timberborn.ScienceSystem.ScienceService:SubtractPoints+23: 48 63 47 20                    - movsxd  rax,dword ptr [rdi+20]
// ---------- INJECTING HERE ----------
Timberborn.ScienceSystem.ScienceService:SubtractPoints+27: 2B C6                          - sub eax,esi
// ---------- DONE INJECTING  ----------
Timberborn.ScienceSystem.ScienceService:SubtractPoints+29: 89 47 20                       - mov [rdi+20],eax
Timberborn.ScienceSystem.ScienceService:SubtractPoints+2c: 00 00                          - add [rax],al
Timberborn.ScienceSystem.ScienceService:SubtractPoints+2e: 00 69 42                       - add [rcx+42],ch
Timberborn.ScienceSystem.ScienceService:SubtractPoints+31: 80 01 00                       - add byte ptr [rcx],00
Timberborn.ScienceSystem.ScienceService:SubtractPoints+34: 00 8D 65 00 5D C3              - add [rbp-3CA2FF9B],cl
Timberborn.ScienceSystem.ScienceService:SubtractPoints+3a: 48 B9 60 89 0A B4 7E 01 00 00  - mov rcx,0000017EB40A8960
Timberborn.ScienceSystem.ScienceService:SubtractPoints+44: BA 85 01 00 00                 - mov edx,00000185
Timberborn.ScienceSystem.ScienceService:SubtractPoints+49: 48 8D 64 24 00                 - lea rsp,[rsp+00]
Timberborn.ScienceSystem.ScienceService:SubtractPoints+4e: 49 BB 50 B1 C8 40 7F 01 00 00  - mov r11,System.Object:__icall_wrapper_mono_helper_ldstr
Timberborn.ScienceSystem.ScienceService:SubtractPoints+58: 41 FF D3                       - call r11
}
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>115000</ID>
          <Description>"happiness only increases"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>define(address,Timberborn.NeedSystem.Need:AddPoints+38)
define(bytes,F2 0F 58 C1 48 8B CE F2 0F 10 C8 F2 0F 5A C9)

[ENABLE]

assert(address,bytes)
alloc(newmem,$1000)

label(code)
label(return)
label(NullValue)

newmem:
  comiss xmm1, [NullValue] // check if &gt;0
  jae code                 // if it is, goto code
  xorps xmm1,xmm1          // else set xmm1 to zero
code:
  addsd xmm0,xmm1
  mov rcx,rsi
  movsd xmm1,xmm0
  cvtsd2ss xmm1,xmm1
  jmp return

NullValue:
  dd (float)0.0

address:
  jmp far newmem
  nop
return:

[DISABLE]

address:
  db bytes
  // addsd xmm0,xmm1
  // mov rcx,rsi
  // movsd xmm1,xmm0
  // cvtsd2ss xmm1,xmm1

dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Timberborn.NeedSystem.Need:AddPoints+38

Timberborn.NeedSystem.Need:AddPoints+c: 48 8B F1                       - mov rsi,rcx
Timberborn.NeedSystem.Need:AddPoints+f: F3 0F 11 4D E8                 - movss [rbp-18],xmm1
Timberborn.NeedSystem.Need:AddPoints+14: F3 0F 10 46 1C                 - movss xmm0,[rsi+1C]
Timberborn.NeedSystem.Need:AddPoints+19: F3 0F 5A C0                    - cvtss2sd xmm0,xmm0
Timberborn.NeedSystem.Need:AddPoints+1d: F2 0F 5A E8                    - cvtsd2ss xmm5,xmm0
Timberborn.NeedSystem.Need:AddPoints+21: F3 0F 11 6D F4                 - movss [rbp-0C],xmm5
Timberborn.NeedSystem.Need:AddPoints+26: F3 0F 10 45 F4                 - movss xmm0,[rbp-0C]
Timberborn.NeedSystem.Need:AddPoints+2b: F3 0F 5A C0                    - cvtss2sd xmm0,xmm0
Timberborn.NeedSystem.Need:AddPoints+2f: F3 0F 10 4D E8                 - movss xmm1,[rbp-18]
Timberborn.NeedSystem.Need:AddPoints+34: F3 0F 5A C9                    - cvtss2sd xmm1,xmm1
// ---------- INJECTING HERE ----------
Timberborn.NeedSystem.Need:AddPoints+38: F2 0F 58 C1                    - addsd xmm0,xmm1
// ---------- DONE INJECTING  ----------
Timberborn.NeedSystem.Need:AddPoints+3c: 48 8B CE                       - mov rcx,rsi
Timberborn.NeedSystem.Need:AddPoints+3f: F2 0F 10 C8                    - movsd xmm1,xmm0
Timberborn.NeedSystem.Need:AddPoints+43: F2 0F 5A C9                    - cvtsd2ss xmm1,xmm1
Timberborn.NeedSystem.Need:AddPoints+47: 48 8D AD 00 00 00 00           - lea rbp,[rbp+00000000]
Timberborn.NeedSystem.Need:AddPoints+4e: 49 BB 0D DB 2A 64 7D 01 00 00  - mov r11,0000017D642ADB0D
Timberborn.NeedSystem.Need:AddPoints+58: 41 FF D3                       - call r11
Timberborn.NeedSystem.Need:AddPoints+5b: 48 8B 75 F8                    - mov rsi,[rbp-08]
Timberborn.NeedSystem.Need:AddPoints+5f: 48 8D 65 00                    - lea rsp,[rbp+00]
Timberborn.NeedSystem.Need:AddPoints+63: 5D                             - pop rbp
Timberborn.NeedSystem.Need:AddPoints+64: C3                             - ret
}
</AssemblerScript>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
  <UserdefinedSymbols/>
</CheatTable>
