<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="52">
  <CheatEntries>
    <CheatEntry>
      <ID>150</ID>
      <Description>"━━━━━━━━ Cellar Keeper ━━━━━━━━"</Description>
      <GroupHeader>1</GroupHeader>
    </CheatEntry>
    <CheatEntry>
      <ID>3746</ID>
      <Description>"━━━━━━━━ 🖥️ COMPACT VIEW ━━━━━━━━"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
// Script Created By mgr.inz.Player On CE Forums
LuaCall(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().Panel4.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))

[DISABLE]
LuaCall(cycleFullCompact(nil,false))
</AssemblerScript>
    </CheatEntry>
    <CheatEntry NoCheckbox="1">
      <ID>1337187108</ID>
      <Description>""</Description>
      <GroupHeader>1</GroupHeader>
    </CheatEntry>
    <CheatEntry>
      <ID>155</ID>
      <Description>"━━━━━━━━ 🧍 PLAYER ━━━━━━━━"</Description>
      <Options moHideChildren="1"/>
      <GroupHeader>1</GroupHeader>
      <CheatEntries>
        <CheatEntry>
          <ID>92</ID>
          <Description>"Total Play Time"</Description>
          <Options moHideChildren="1"/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{
  ==============================================
         Header Changer by SeryogaSK
  ----------------------------------------------
	Process				: Cellar Keeper.exe
	Game Title 			: Cellar Keeper
	Game Version		: 1.0 // maybe wrong since can' find right Game Version
	Author				: SeryogaSK
  ----------------------------------------------
   Warning: Online use may trigger anti-cheat!
  ==============================================
}
[ENABLE]

aobscanmodule(play_timergamerz,GameAssembly.dll,F3 0F 10 73 14 33 C9 E8 ** ** ** ** F3 0F 58 C6 F3 0F 11 43 14) // should be unique
alloc(newmem,$1000,play_timergamerz)
alloc(played_timers,8)

label(code)
label(return)

newmem:
mov [played_timers],rbx

code:
  movss xmm6,[rbx+14]
  jmp return

play_timergamerz:
  jmp newmem
return:
registersymbol(play_timergamerz played_timers)

[DISABLE]

play_timergamerz:
  db F3 0F 10 73 14

unregistersymbol(*)
dealloc(*)

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+4F4C9F

GameAssembly.dll+4F4C77: 0F 5A C6           - cvtps2pd xmm0,xmm6
GameAssembly.dll+4F4C7A: E8 DD C9 FA FF     - call GameAssembly.dll+4A165C
GameAssembly.dll+4F4C7F: F2 0F 2C C0        - cvttsd2si eax,xmm0
GameAssembly.dll+4F4C83: 89 43 34           - mov [rbx+34],eax
GameAssembly.dll+4F4C86: 48 85 DB           - test rbx,rbx
GameAssembly.dll+4F4C89: 0F 84 2A 01 00 00  - je GameAssembly.dll+4F4DB9
GameAssembly.dll+4F4C8F: 80 7B 31 00        - cmp byte ptr [rbx+31],00
GameAssembly.dll+4F4C93: 0F 84 D0 00 00 00  - je GameAssembly.dll+4F4D69
GameAssembly.dll+4F4C99: 80 7B 30 00        - cmp byte ptr [rbx+30],00
GameAssembly.dll+4F4C9D: 74 40              - je GameAssembly.dll+4F4CDF
// ---------- INJECTING HERE ----------
GameAssembly.dll+4F4C9F: F3 0F 10 73 14     - movss xmm6,[rbx+14]
// ---------- DONE INJECTING  ----------
GameAssembly.dll+4F4CA4: 33 C9              - xor ecx,ecx
GameAssembly.dll+4F4CA6: E8 75 3B E8 01     - call UnityEngine.Time.get_unscaledDeltaTime
GameAssembly.dll+4F4CAB: F3 0F 58 C6        - addss xmm0,xmm6
GameAssembly.dll+4F4CAF: F3 0F 11 43 14     - movss [rbx+14],xmm0
GameAssembly.dll+4F4CB4: 33 D2              - xor edx,edx
GameAssembly.dll+4F4CB6: E8 65 A0 FE FF     - call GameAssembly.dll+4DED20
GameAssembly.dll+4F4CBB: 3B 43 34           - cmp eax,[rbx+34]
GameAssembly.dll+4F4CBE: 74 1F              - je GameAssembly.dll+4F4CDF
GameAssembly.dll+4F4CC0: 89 43 34           - mov [rbx+34],eax
GameAssembly.dll+4F4CC3: 48 8B 4B 20        - mov rcx,[rbx+20]
}
</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>95</ID>
              <Description>"Current Game Mode"</Description>
              <DropDownList ReadOnly="1" DescriptionOnly="1" DisplayValueAsItem="1">0:Cozy (Normal)
1:Speedrun
2:Hardcore
</DropDownList>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>Byte</VariableType>
              <Address>played_timers</Address>
              <Offsets>
                <Offset>18</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>93</ID>
              <Description>"Played Time"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>Float</VariableType>
              <Address>played_timers</Address>
              <Offsets>
                <Offset>14</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>94</ID>
              <Description>"Timer Running"</Description>
              <DropDownList ReadOnly="1" DescriptionOnly="1" DisplayValueAsItem="1">0:OFF
1:ON
</DropDownList>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>Byte</VariableType>
              <Address>played_timers</Address>
              <Offsets>
                <Offset>30</Offset>
              </Offsets>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>104</ID>
          <Description>"Player Data"</Description>
          <Options moHideChildren="1"/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{
  ==============================================
         Header Changer by SeryogaSK
  ----------------------------------------------
	Process				: Cellar Keeper.exe
	Game Title 			: Cellar Keeper
	Game Version		: 1.0 // maybe wrong since can' find right Game Version
	Author				: SeryogaSK
  ----------------------------------------------
   Warning: Online use may trigger anti-cheat!
  ==============================================
}
[ENABLE]

aobscanmodule(ply_datasesson,GameAssembly.dll,FF 40 50 48 83 C4 20) // should be unique
alloc(newmem,$1000,ply_datasesson)
alloc(ply_stater,8)

label(code)
label(return)

newmem:
mov [ply_stater],rax

code:
  inc [rax+50]
  add rsp,20
  jmp return

ply_datasesson:
  jmp newmem
  nop 2
return:
registersymbol(ply_datasesson ply_stater)

[DISABLE]

ply_datasesson:
  db FF 40 50 48 83 C4 20

unregistersymbol(*)
dealloc(*)

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+534FC1

GameAssembly.dll+534F99: E8 72 FB ED FF        - call GameAssembly.il2cpp_get_exception_argument_null+3D0
GameAssembly.dll+534F9E: C6 05 7C 7D F2 02 01  - mov byte ptr [GameAssembly.dll+345CD21],01
GameAssembly.dll+534FA5: 4C 8B 43 10           - mov r8,[rbx+10]
GameAssembly.dll+534FA9: 4D 85 C0              - test r8,r8
GameAssembly.dll+534FAC: 74 1C                 - je GameAssembly.dll+534FCA
GameAssembly.dll+534FAE: 48 8B 15 6B C1 D2 02  - mov rdx,[GameAssembly.dll+3261120]
GameAssembly.dll+534FB5: 33 C9                 - xor ecx,ecx
GameAssembly.dll+534FB7: E8 F4 DB AC FF        - call GameAssembly.il2cpp_class_get_static_field_data+D70
GameAssembly.dll+534FBC: 48 85 C0              - test rax,rax
GameAssembly.dll+534FBF: 74 09                 - je GameAssembly.dll+534FCA
// ---------- INJECTING HERE ----------
GameAssembly.dll+534FC1: FF 40 50              - inc [rax+50]
// ---------- DONE INJECTING  ----------
GameAssembly.dll+534FC4: 48 83 C4 20           - add rsp,20
GameAssembly.dll+534FC8: 5B                    - pop rbx
GameAssembly.dll+534FC9: C3                    - ret
GameAssembly.dll+534FCA: E8 C1 FD ED FF        - call GameAssembly.mono_method_get_class+B0
GameAssembly.dll+534FCF: CC                    - int 3
GameplayStatsService.get_JumpCount: 40 53                 - push rbx
GameAssembly.dll+534FD2: 48 83 EC 20           - sub rsp,20
GameAssembly.dll+534FD6: 80 3D 42 7D F2 02 00  - cmp byte ptr [GameAssembly.dll+345CD1F],00
GameAssembly.dll+534FDD: 48 8B D9              - mov rbx,rcx
GameAssembly.dll+534FE0: 75 13                 - jne GameAssembly.dll+534FF5
}
</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>106</ID>
              <Description>"skillPoints"</Description>
              <VariableType>4 Bytes</VariableType>
              <Address>[ply_stater]+48</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>107</ID>
              <Description>"skillUseCount"</Description>
              <VariableType>4 Bytes</VariableType>
              <Address>[ply_stater]+4C</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>108</ID>
              <Description>"stepCount"</Description>
              <VariableType>4 Bytes</VariableType>
              <Address>[ply_stater]+50</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>109</ID>
              <Description>"jumpCount"</Description>
              <VariableType>4 Bytes</VariableType>
              <Address>[ply_stater]+54</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>110</ID>
              <Description>"bestPlayTimeStandard"</Description>
              <VariableType>Float</VariableType>
              <Address>[ply_stater]+58</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>111</ID>
              <Description>"bestPlayTimeSpeedrun"</Description>
              <VariableType>Float</VariableType>
              <Address>[ply_stater]+5C</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>112</ID>
              <Description>"bestPlayTimeHardcore"</Description>
              <VariableType>Float</VariableType>
              <Address>[ply_stater]+60</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>113</ID>
              <Description>"hardcoreAttemptCount"</Description>
              <VariableType>4 Bytes</VariableType>
              <Address>[ply_stater]+64</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>114</ID>
              <Description>"hardcoreBrokenBottleCount"</Description>
              <VariableType>4 Bytes</VariableType>
              <Address>[ply_stater]+68</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>115</ID>
              <Description>"hasSeenFinishScreen"</Description>
              <VariableType>Byte</VariableType>
              <Address>[ply_stater]+6C</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>116</ID>
              <Description>"hasPlayedCompletionAudio"</Description>
              <VariableType>Byte</VariableType>
              <Address>[ply_stater]+6D</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>117</ID>
              <Description>"hasSeenCageReveal"</Description>
              <VariableType>Byte</VariableType>
              <Address>[ply_stater]+6E</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>118</ID>
              <Description>"isHoldingRescueChicken"</Description>
              <VariableType>Byte</VariableType>
              <Address>[ply_stater]+6F</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>119</ID>
              <Description>"hasRescueChickenWorldPose"</Description>
              <VariableType>Byte</VariableType>
              <Address>[ply_stater]+70</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>120</ID>
              <Description>"totalPlayTime"</Description>
              <VariableType>Float</VariableType>
              <Address>[ply_stater]+14</Address>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>97</ID>
          <Description>"Skill Points"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{
  ==============================================
         Header Changer by SeryogaSK
  ----------------------------------------------
	Process				: Cellar Keeper.exe
	Game Title 			: Cellar Keeper
	Game Version		: 1.0 // maybe wrong since can' find right Game Version
	Author				: SeryogaSK
  ----------------------------------------------
   Warning: Online use may trigger anti-cheat!
  ==============================================
}
[ENABLE]

aobscanmodule(ply_skillpointsg,GameAssembly.dll,E8 ** ** ** ** 48 85 C0 74 ** 8B 40 48 48 83 C4 20 5B C3) // should be unique
alloc(newmem,$1000,ply_skillpointsg)

label(code)
label(return)

newmem:
mov [rax+48],#50
code:
  mov eax,[rax+48]
  add rsp,20
  jmp return

ply_skillpointsg+0A:
  jmp newmem
  nop 2
return:
registersymbol(ply_skillpointsg)

[DISABLE]

ply_skillpointsg+0A:
  db 8B 40 48 48 83 C4 20

unregistersymbol(ply_skillpointsg)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+558EB1

GameAssembly.dll+558E89: E8 82 BC EB FF        - call GameAssembly.il2cpp_get_exception_argument_null+3D0
GameAssembly.dll+558E8E: C6 05 4D 3F F0 02 01  - mov byte ptr [GameAssembly.dll+345CDE2],01
GameAssembly.dll+558E95: 4C 8B 43 10           - mov r8,[rbx+10]
GameAssembly.dll+558E99: 4D 85 C0              - test r8,r8
GameAssembly.dll+558E9C: 74 1C                 - je GameAssembly.dll+558EBA
GameAssembly.dll+558E9E: 48 8B 15 7B 82 D0 02  - mov rdx,[GameAssembly.dll+3261120]
GameAssembly.dll+558EA5: 33 C9                 - xor ecx,ecx
GameAssembly.dll+558EA7: E8 04 9D AA FF        - call GameAssembly.il2cpp_class_get_static_field_data+D70
GameAssembly.dll+558EAC: 48 85 C0              - test rax,rax
GameAssembly.dll+558EAF: 74 09                 - je GameAssembly.dll+558EBA
// ---------- INJECTING HERE ----------
GameAssembly.dll+558EB1: 8B 40 48              - mov eax,[rax+48]
// ---------- DONE INJECTING  ----------
GameAssembly.dll+558EB4: 48 83 C4 20           - add rsp,20
GameAssembly.dll+558EB8: 5B                    - pop rbx
GameAssembly.dll+558EB9: C3                    - ret 
GameAssembly.dll+558EBA: E8 D1 BE EB FF        - call GameAssembly.mono_method_get_class+B0
GameAssembly.dll+558EBF: CC                    - int 3 
SkillPointService.remove_OnPointsChanged: 48 89 5C 24 08        - mov [rsp+08],rbx
GameAssembly.dll+558EC5: 48 89 6C 24 10        - mov [rsp+10],rbp
GameAssembly.dll+558ECA: 48 89 74 24 18        - mov [rsp+18],rsi
GameAssembly.dll+558ECF: 57                    - push rdi
GameAssembly.dll+558ED0: 41 56                 - push r14
}
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>140</ID>
          <Description>"Max. Bottles"</Description>
          <Options moHideChildren="1"/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{
  ==============================================
         Header Changer by SeryogaSK
  ----------------------------------------------
	Process				: Cellar Keeper.exe
	Game Title 			: Cellar Keeper
	Game Version		: 1.0 // maybe wrong since can' find right Game Version
	Author				: SeryogaSK
  ----------------------------------------------
   Warning: Online use may trigger anti-cheat!
  ==============================================
}
[ENABLE]

aobscanfunction(ply_mxbottlest,GameModeRules.GetMaxCarry,BA 02 00 00 00 B8 0A 00 00 00 3B CA 0F 44 C2)  // should be unique in this function
alloc(newmem,$1000,ply_mxbottlest)

label(code)
label(return)

newmem:
  mov edx,#999 //Hardcore
  mov eax,#999//Normal
code:
  //mov edx,00000002 //Hardcore
  //mov eax,0000000A //Normal
  cmp ecx,edx
  cmove eax,edx
  jmp return

ply_mxbottlest:
  jmp far newmem
  nop
return:
registersymbol(ply_mxbottlest)

[DISABLE]

ply_mxbottlest:
  db BA 02 00 00 00 B8 0A 00 00 00 3B CA 0F 44 C2

unregistersymbol(ply_mxbottlest)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameModeRules.GetMaxCarry

GameAssembly.dll+4E2FA6: C3                    - ret 
GameAssembly.dll+4E2FA7: CC                    - int 3 
GameAssembly.dll+4E2FA8: CC                    - int 3 
GameAssembly.dll+4E2FA9: CC                    - int 3 
GameAssembly.dll+4E2FAA: CC                    - int 3 
GameAssembly.dll+4E2FAB: CC                    - int 3 
GameAssembly.dll+4E2FAC: CC                    - int 3 
GameAssembly.dll+4E2FAD: CC                    - int 3 
GameAssembly.dll+4E2FAE: CC                    - int 3 
GameAssembly.dll+4E2FAF: CC                    - int 3 
// ---------- INJECTING HERE ----------
GameModeRules.GetMaxCarry: BA 02 00 00 00        - mov edx,00000002
// ---------- DONE INJECTING  ----------
GameAssembly.dll+4E2FB5: B8 0A 00 00 00        - mov eax,0000000A
GameAssembly.dll+4E2FBA: 3B CA                 - cmp ecx,edx
GameAssembly.dll+4E2FBC: 0F 44 C2              - cmove eax,edx
GameAssembly.dll+4E2FBF: C3                    - ret 
GameSessionLifecycleBridge.Dispose: 48 89 5C 24 08        - mov [rsp+08],rbx
GameAssembly.dll+4E2FC5: 57                    - push rdi
GameAssembly.dll+4E2FC6: 48 83 EC 20           - sub rsp,20
GameAssembly.dll+4E2FCA: 80 3D 56 9A F7 02 00  - cmp byte ptr [GameAssembly.dll+345CA27],00
GameAssembly.dll+4E2FD1: 48 8B F9              - mov rdi,rcx
GameAssembly.dll+4E2FD4: 75 2B                 - jne GameAssembly.dll+4E3001
}
</AssemblerScript>
          <CheatEntries>
            <CheatEntry NoCheckbox="1">
              <ID>1337187110</ID>
              <Description>"└─ Capacity of max. bottles in hand is more"</Description>
              <GroupHeader>1</GroupHeader>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>149</ID>
          <Description>"No Cooldown"</Description>
          <Options moHideChildren="1"/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{
  ==============================================
         Header Changer by SeryogaSK
  ----------------------------------------------
	Process				: Cellar Keeper.exe
	Game Title 			: Cellar Keeper
	Game Version		: 1.0 // maybe wrong since can' find right Game Version
	Author				: SeryogaSK
  ----------------------------------------------
   Warning: Online use may trigger anti-cheat!
  ==============================================
}
[ENABLE]

aobscanmodule(ply_skillster,GameAssembly.dll,84 C0 0F 84 ** ** ** ** 48 8B 4B 40 48 85 C9 0F 84 ** ** ** ** 4C 8B 0D ** ** ** **) // should be unique
alloc(newmem,$1000,ply_skillster)

label(code)
label(return)

newmem:
mov al,1
code:
  //test al,al
  je GameAssembly.dll+55C3B2
  jmp return

ply_skillster:
  jmp newmem
  nop 3
return:
registersymbol(ply_skillster)

[DISABLE]

ply_skillster:
  db 84 C0 0F 84 0A 02 00 00

unregistersymbol(ply_skillster)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+55C1A0

GameAssembly.dll+55C173: 0F 10 45 D7           - movups xmm0,[rbp-29]
GameAssembly.dll+55C177: 44 8B CE              - mov r9d,esi
GameAssembly.dll+55C17A: 48 8B 15 17 60 D0 02  - mov rdx,[GameAssembly.dll+3262198]
GameAssembly.dll+55C181: F2 0F 10 4D E7        - movsd xmm1,[rbp-19]
GameAssembly.dll+55C186: 89 45 BF              - mov [rbp-41],eax
GameAssembly.dll+55C189: 48 8D 45 A7           - lea rax,[rbp-59]
GameAssembly.dll+55C18D: 0F 29 45 A7           - movaps [rbp-59],xmm0
GameAssembly.dll+55C191: 48 89 44 24 20        - mov [rsp+20],rax
GameAssembly.dll+55C196: F2 0F 11 4D B7        - movsd [rbp-49],xmm1
GameAssembly.dll+55C19B: E8 90 A5 AA FF        - call GameAssembly.mono_arch_clear_breakpoint+3350
// ---------- INJECTING HERE ----------
GameAssembly.dll+55C1A0: 84 C0                 - test al,al
// ---------- DONE INJECTING  ----------
GameAssembly.dll+55C1A2: 0F 84 0A 02 00 00     - je GameAssembly.dll+55C3B2
GameAssembly.dll+55C1A8: 48 8B 4B 40           - mov rcx,[rbx+40]
GameAssembly.dll+55C1AC: 48 85 C9              - test rcx,rcx
GameAssembly.dll+55C1AF: 0F 84 01 02 00 00     - je GameAssembly.dll+55C3B6
GameAssembly.dll+55C1B5: 4C 8B 0D 64 7D D0 02  - mov r9,[GameAssembly.dll+3263F20]
GameAssembly.dll+55C1BC: 4C 8D 45 67           - lea r8,[rbp+67]
GameAssembly.dll+55C1C0: 8B D6                 - mov edx,esi
GameAssembly.dll+55C1C2: E8 A9 D3 E5 00        - call GameAssembly.dll+13B9570
GameAssembly.dll+55C1C7: 84 C0                 - test al,al
GameAssembly.dll+55C1C9: 0F 84 E3 01 00 00     - je GameAssembly.dll+55C3B2
}
</AssemblerScript>
          <CheatEntries>
            <CheatEntry NoCheckbox="1">
              <ID>1337187111</ID>
              <Description>"└─ use skill even if not ready"</Description>
              <GroupHeader>1</GroupHeader>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>141</ID>
          <Description>"no Fail on Hardcore"</Description>
          <Options moHideChildren="1"/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{
  ==============================================
         Header Changer by SeryogaSK
  ----------------------------------------------
	Process				: Cellar Keeper.exe
	Game Title 			: Cellar Keeper
	Game Version		: 1.0 // maybe wrong since can' find right Game Version
	Author				: SeryogaSK
  ----------------------------------------------
   Warning: Online use may trigger anti-cheat!
  ==============================================
}
[ENABLE]

aobscanfunction(ply_nogameoverbrak,GameModeRules.FailsOnBottleBreak,83 F9 02 0F 94 C0)  // should be unique in this function
alloc(newmem,$1000,ply_nogameoverbrak)

label(code)
label(return)

newmem:
mov ecx,0
code:
  cmp ecx,02
  sete al
  ret 
  jmp return

ply_nogameoverbrak:
  jmp newmem
  nop 2
return:
registersymbol(ply_nogameoverbrak)

[DISABLE]

ply_nogameoverbrak:
  db 83 F9 02 0F 94 C0 C3

unregistersymbol(ply_nogameoverbrak)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameModeRules.FailsOnBottleBreak

GameAssembly.dll+4E2F96: C3        - ret 
GameAssembly.dll+4E2F97: CC        - int 3 
GameAssembly.dll+4E2F98: CC        - int 3 
GameAssembly.dll+4E2F99: CC        - int 3 
GameAssembly.dll+4E2F9A: CC        - int 3 
GameAssembly.dll+4E2F9B: CC        - int 3 
GameAssembly.dll+4E2F9C: CC        - int 3 
GameAssembly.dll+4E2F9D: CC        - int 3 
GameAssembly.dll+4E2F9E: CC        - int 3 
GameAssembly.dll+4E2F9F: CC        - int 3 
// ---------- INJECTING HERE ----------
GameModeRules.FailsOnBottleBreak: 83 F9 02  - cmp ecx,02
// ---------- DONE INJECTING  ----------
GameAssembly.dll+4E2FA3: 0F 94 C0  - sete al
GameAssembly.dll+4E2FA6: C3        - ret 
GameAssembly.dll+4E2FA7: CC        - int 3 
GameAssembly.dll+4E2FA8: CC        - int 3 
GameAssembly.dll+4E2FA9: CC        - int 3 
GameAssembly.dll+4E2FAA: CC        - int 3 
GameAssembly.dll+4E2FAB: CC        - int 3 
GameAssembly.dll+4E2FAC: CC        - int 3 
GameAssembly.dll+4E2FAD: CC        - int 3 
GameAssembly.dll+4E2FAE: CC        - int 3 
}
</AssemblerScript>
          <CheatEntries>
            <CheatEntry NoCheckbox="1">
              <ID>1337187112</ID>
              <Description>"└─ if you drop Bottle than nothing happen"</Description>
              <GroupHeader>1</GroupHeader>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>154</ID>
      <Description>"━━━━━━━━ 🔧 DEBUG ━━━━━━━━━"</Description>
      <Options moHideChildren="1"/>
      <GroupHeader>1</GroupHeader>
      <CheatEntries>
        <CheatEntry>
          <ID>105</ID>
          <Description>"Base"</Description>
          <ShowAsHex>1</ShowAsHex>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>8 Bytes</VariableType>
          <Address>ply_stater</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>98</ID>
          <Description>"Skill Points no Decrease"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{
  ==============================================
         Header Changer by SeryogaSK
  ----------------------------------------------
	Process				: Cellar Keeper.exe
	Game Title 			: Cellar Keeper
	Game Version		: 1.0 // maybe wrong since can' find right Game Version
	Author				: SeryogaSK
  ----------------------------------------------
   Warning: Online use may trigger anti-cheat!
  ==============================================
}
[ENABLE]

aobscanmodule(skillpoints_ply_dectr,GameAssembly.dll,29 78 48 48 8B 7B 18 48 85 FF 74 ** 33 D2) // should be unique
alloc(newmem,$1000,skillpoints_ply_dectr)

label(code)
label(return)

newmem:
code:
  //sub [rax+48],edi
  mov rdi,[rbx+18]
  jmp return

skillpoints_ply_dectr:
  jmp newmem
  nop 2
return:
registersymbol(skillpoints_ply_dectr)

[DISABLE]

skillpoints_ply_dectr:
  db 29 78 48 48 8B 7B 18

unregistersymbol(skillpoints_ply_dectr)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+558D7C

GameAssembly.dll+558D5B: 39 78 48              - cmp [rax+48],edi
GameAssembly.dll+558D5E: 7C 4C                 - jl GameAssembly.dll+558DAC
GameAssembly.dll+558D60: 4C 8B 43 10           - mov r8,[rbx+10]
GameAssembly.dll+558D64: 4D 85 C0              - test r8,r8
GameAssembly.dll+558D67: 74 50                 - je GameAssembly.dll+558DB9
GameAssembly.dll+558D69: 48 8B 15 B0 83 D0 02  - mov rdx,[GameAssembly.dll+3261120]
GameAssembly.dll+558D70: 33 C9                 - xor ecx,ecx
GameAssembly.dll+558D72: E8 39 9E AA FF        - call GameAssembly.il2cpp_class_get_static_field_data+D70
GameAssembly.dll+558D77: 48 85 C0              - test rax,rax
GameAssembly.dll+558D7A: 74 3D                 - je GameAssembly.dll+558DB9
// ---------- INJECTING HERE ----------
GameAssembly.dll+558D7C: 29 78 48              - sub [rax+48],edi
// ---------- DONE INJECTING  ----------
GameAssembly.dll+558D7F: 48 8B 7B 18           - mov rdi,[rbx+18]
GameAssembly.dll+558D83: 48 85 FF              - test rdi,rdi
GameAssembly.dll+558D86: 74 17                 - je GameAssembly.dll+558D9F
GameAssembly.dll+558D88: 33 D2                 - xor edx,edx
GameAssembly.dll+558D8A: 48 8B CB              - mov rcx,rbx
GameAssembly.dll+558D8D: E8 DE 00 00 00        - call SkillPointService.get_CurrentPoints
GameAssembly.dll+558D92: 4C 8B 47 28           - mov r8,[rdi+28]
GameAssembly.dll+558D96: 8B D0                 - mov edx,eax
GameAssembly.dll+558D98: 48 8B 4F 40           - mov rcx,[rdi+40]
GameAssembly.dll+558D9C: FF 57 18              - call qword ptr [rdi+18]
}
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>139</ID>
          <Description>"Max. Bottles"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{
  ==============================================
         Header Changer by SeryogaSK
  ----------------------------------------------
	Process				: Cellar Keeper.exe
	Game Title 			: Cellar Keeper
	Game Version		: 1.0 // maybe wrong since can' find right Game Version
	Author				: SeryogaSK
  ----------------------------------------------
   Warning: Online use may trigger anti-cheat!
  ==============================================
}
[ENABLE]

aobscanmodule(ply_mxbottles,GameAssembly.dll,B8 0A 00 00 00 3B CA 0F 44 C2) // should be unique
alloc(newmem,$1000,ply_mxbottles)

label(code)
label(return)

newmem:
mov eax,#999
code:
  //mov eax,0000000A
  jmp return

ply_mxbottles:
  jmp newmem
return:
registersymbol(ply_mxbottles)

[DISABLE]

ply_mxbottles:
  db B8 0A 00 00 00

unregistersymbol(ply_mxbottles)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+4E2FB5

GameAssembly.dll+4E2FA7: CC                    - int 3 
GameAssembly.dll+4E2FA8: CC                    - int 3 
GameAssembly.dll+4E2FA9: CC                    - int 3 
GameAssembly.dll+4E2FAA: CC                    - int 3 
GameAssembly.dll+4E2FAB: CC                    - int 3 
GameAssembly.dll+4E2FAC: CC                    - int 3 
GameAssembly.dll+4E2FAD: CC                    - int 3 
GameAssembly.dll+4E2FAE: CC                    - int 3 
GameAssembly.dll+4E2FAF: CC                    - int 3 
GameModeRules.GetMaxCarry: BA 02 00 00 00        - mov edx,00000002
// ---------- INJECTING HERE ----------
GameAssembly.dll+4E2FB5: B8 0A 00 00 00        - mov eax,0000000A
// ---------- DONE INJECTING  ----------
GameAssembly.dll+4E2FBA: 3B CA                 - cmp ecx,edx
GameAssembly.dll+4E2FBC: 0F 44 C2              - cmove eax,edx
GameAssembly.dll+4E2FBF: C3                    - ret 
GameSessionLifecycleBridge.Dispose: 48 89 5C 24 08        - mov [rsp+08],rbx
GameAssembly.dll+4E2FC5: 57                    - push rdi
GameAssembly.dll+4E2FC6: 48 83 EC 20           - sub rsp,20
GameAssembly.dll+4E2FCA: 80 3D 56 9A F7 02 00  - cmp byte ptr [GameAssembly.dll+345CA27],00
GameAssembly.dll+4E2FD1: 48 8B F9              - mov rdi,rcx
GameAssembly.dll+4E2FD4: 75 2B                 - jne GameAssembly.dll+4E3001
GameAssembly.dll+4E2FD6: 48 8D 0D 93 C8 D9 02  - lea rcx,[GameAssembly.dll+327F870]
}
</AssemblerScript>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry NoCheckbox="1">
      <ID>1337187109</ID>
      <Description>""</Description>
      <GroupHeader>1</GroupHeader>
    </CheatEntry>
    <CheatEntry NoCheckbox="1">
      <ID>1337187105</ID>
      <Description>"━━━━━━━━ 📡 Links ━━━━━━━━"</Description>
      <GroupHeader>1</GroupHeader>
      <CheatEntries>
        <CheatEntry NoScriptTag="1">
          <ID>1337187106</ID>
          <Description>"├─ YouTube"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{$lua}
[ENABLE]
shellExecute("https://www.youtube.com/@SeryogaSK");
createThread(function();sleep(100);memrec.Active=false;end);
[DISABLE]

</AssemblerScript>
        </CheatEntry>
        <CheatEntry NoScriptTag="1">
          <ID>1337187107</ID>
          <Description>"└─ OCT PROFILE"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{$lua}
if syntaxcheck then return end
--if not monopipe then if LaunchMonoDataCollector() == 0 then error(MessageDialog('Failed to Launch Mono Data Collector', mtError, mbClose)) end end
{$asm}
[ENABLE]
{$lua}
shellExecute("https://opencheattables.com/memberlist.php?mode=viewprofile&amp;u=6096");
createThread(function();sleep(100);memrec.Active=false;end);
{$asm}
[DISABLE]

</AssemblerScript>
        </CheatEntry>
        <CheatEntry NoCheckbox="1">
          <ID>3755</ID>
          <Description>"━━━━━━━━ 📜 Last Update ━━━━━━━━"</Description>
          <GroupHeader>1</GroupHeader>
          <CheatEntries>
            <CheatEntry NoCheckbox="1">
              <ID>3756</ID>
              <Description>"└─ 09.09.2026"</Description>
              <GroupHeader>1</GroupHeader>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
  <UserdefinedSymbols/>
  <LuaScript>-- Cheat Table Decorator
function decorateSSKTable()
  local mainForm = getMainForm()

  -- Main Form Styling
  mainForm.Caption = 'Cellar Keeper (Steam) - Enhanced Table [by SeryogaSK]'
  getAutoAttachList().add("Cellar Keeper.exe")
end

-- Execute when table loads
decorateSSKTable()

</LuaScript>
</CheatTable>
