<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="46">
  <CheatEntries>
    <CheatEntry>
      <ID>114982</ID>
      <Description>"&lt;=== Attach to process"</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("Stardew Valley.exe")
  if(process == nil) then
    ShowMessage('The process is NOT found!')
  end
{$asm}

[DISABLE]

</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>186</ID>
          <Description>"always 270 energy"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[ENABLE]

aobscan(energy,C5 7A 10 49 4C) // should be unique
alloc(newmem,$100,energy)

label(code)
label(return)
label(value)

newmem:
  push rax
  mov rax,[value]
  mov [rcx+4c],rax
  pop rax
code:
  vmovss xmm9,[rcx+4C]
  jmp return

value:
  dd (float)270.0

energy:
  jmp newmem
return:
registersymbol(energy)

[DISABLE]

energy:
  db C5 7A 10 49 4C

unregistersymbol(energy)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: 7FFBED474266

7FFBED474235: 39 09                          - cmp [rcx],ecx
7FFBED474237: E8 54 FE EB FE                 - call 7FFBEC334090
7FFBED47423C: C5 F8 57 C0                    - vxorps xmm0,xmm0,xmm0
7FFBED474240: C5 FA 2A C0                    - vcvtsi2ss xmm0,xmm0,eax
7FFBED474244: C5 FA 59 05 64 27 00 00        - vmulss xmm0,xmm0,[7FFBED4769B0]
7FFBED47424C: C5 FA 2C D8                    - vcvttss2si ebx,xmm0
7FFBED474250: 03 FB                          - add edi,ebx
7FFBED474252: 48 B9 E8 57 F0 F5 AF 01 00 00  - mov rcx,000001AFF5F057E8
7FFBED47425C: 48 8B 09                       - mov rcx,[rcx]
7FFBED47425F: 48 8B 89 D0 04 00 00           - mov rcx,[rcx+000004D0]
// ---------- INJECTING HERE ----------
7FFBED474266: C5 7A 10 49 4C                 - vmovss xmm9,[rcx+4C]
// ---------- DONE INJECTING  ----------
7FFBED47426B: C4 41 78 28 D1                 - vmovaps xmm10,xmm9
7FFBED474270: C5 F8 57 C0                    - vxorps xmm0,xmm0,xmm0
7FFBED474274: C5 78 2E D0                    - vucomiss xmm10,xmm0
7FFBED474278: 0F 8A DA 02 00 00              - jp 7FFBED474558
7FFBED47427E: 0F 85 D4 02 00 00              - jne 7FFBED474558
7FFBED474284: C4 C1 78 28 C2                 - vmovaps xmm0,xmm10
7FFBED474289: C5 F9 7E C1                    - vmovd ecx,xmm0
7FFBED47428D: 85 C9                          - test ecx,ecx
7FFBED47428F: 0F 8C DD 22 00 00              - jl 7FFBED476572
7FFBED474295: C5 AA 59 05 13 27 00 00        - vmulss xmm0,xmm10,[7FFBED4769B0]
}
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>184</ID>
          <Description>"always 50M Gold"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[ENABLE]

aobscan(gold,FF 8B 40 4C 48 83 C4 28) // should be unique
alloc(newmem,$1000,gold)

label(code)
label(return)

newmem:
  push ebx
  mov ebx,#50000000
  mov [rax+4c],ebx
  pop ebx
code:
  mov eax,[rax+4C]
  add rsp,28
  jmp return

gold+01:
  jmp newmem
  nop 2
return:
registersymbol(gold)

[DISABLE]

gold+01:
  db 8B 40 4C 48 83 C4 28

unregistersymbol(gold)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: StardewValley.Farmer::get__money+20

7FFBDF48EAF7: 00 58 98              - add [rax-68],bl
7FFBDF48EAFA: 68 DF FB 7F 00        - push 007FFBDF
7FFBDF48EAFF: 00 48 83              - add [rax-7D],cl
StardewValley.Farmer::get__money+2: EC                    - in al,dx
StardewValley.Farmer::get__money+3: 28 48 89              - sub [rax-77],cl
StardewValley.Farmer::get__money+6: 4C 24 30              - and al,30
StardewValley.Farmer::get__money+9: 48 8B 91 D8 04 00 00  - mov rdx,[rcx+000004D8]
StardewValley.Farmer::get__money+10: 48 8B 4A 48           - mov rcx,[rdx+48]
StardewValley.Farmer::get__money+14: 48 8B 54 24 30        - mov rdx,[rsp+30]
StardewValley.Farmer::get__money+19: 39 09                 - cmp [rcx],ecx
// ---------- INJECTING HERE ----------
StardewValley.Farmer::get__money+1B: E8 80 F3 59 FF        - call 7FFBDEA2DEA0
// ---------- DONE INJECTING  ----------
StardewValley.Farmer::get__money+20: 8B 40 4C              - mov eax,[rax+4C]
StardewValley.Farmer::get__money+23: 48 83 C4 28           - add rsp,28
StardewValley.Farmer::get__money+27: C3                    - ret 
7FFBDF48EB28: 19 04 01              - sbb [rcx+rax],eax
7FFBDF48EB2B: 00 04 42              - add [rdx+rax*2],al
7FFBDF48EB2E: 00 00                 - add [rax],al
7FFBDF48EB30: 00 00                 - add [rax],al
7FFBDF48EB32: 00 00                 - add [rax],al
7FFBDF48EB34: 00 00                 - add [rax],al
7FFBDF48EB36: 00 00                 - add [rax],al
}
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>244</ID>
          <Description>"Godmode"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[ENABLE]

aobscan(dmg,8B 8E EC 06 00 00 2B) // should be unique
alloc(newmem,$1000,dmg)

label(code)
label(return)

newmem:
  mov edi,0 // Zero Damage for Bozo :)
code:
  mov ecx,[rsi+000006EC]
  jmp return

dmg:
  jmp newmem
  nop
return:
registersymbol(dmg)

[DISABLE]

dmg:
  db 8B 8E EC 06 00 00

unregistersymbol(dmg)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: 7FFE5FC11525

7FFE5FC114FD: C5 FA 59 05 63 09 00 00  - vmulss xmm0,xmm0,[7FFE5FC11E68]
7FFE5FC11505: C5 CA 5C F0              - vsubss xmm6,xmm6,xmm0
7FFE5FC11509: C5 F8 57 C0              - vxorps xmm0,xmm0,xmm0
7FFE5FC1150D: C5 FA 2A C7              - vcvtsi2ss xmm0,xmm0,edi
7FFE5FC11511: C5 FA 59 C6              - vmulss xmm0,xmm0,xmm6
7FFE5FC11515: C5 FA 2C F8              - vcvttss2si edi,xmm0
7FFE5FC11519: 83 FF 01                 - cmp edi,01
7FFE5FC1151C: 7E 02                    - jle 7FFE5FC11520
7FFE5FC1151E: EB 05                    - jmp 7FFE5FC11525
7FFE5FC11520: BF 01 00 00 00           - mov edi,00000001
// ---------- INJECTING HERE ----------
7FFE5FC11525: 8B 8E EC 06 00 00        - mov ecx,[rsi+000006EC]
// ---------- DONE INJECTING  ----------
7FFE5FC1152B: 2B CF                    - sub ecx,edi
7FFE5FC1152D: 85 C9                    - test ecx,ecx
7FFE5FC1152F: 7E 02                    - jle 7FFE5FC11533
7FFE5FC11531: EB 02                    - jmp 7FFE5FC11535
7FFE5FC11533: 33 C9                    - xor ecx,ecx
7FFE5FC11535: 89 8E EC 06 00 00        - mov [rsi+000006EC],ecx
7FFE5FC1153B: 48 8B 9E 00 06 00 00     - mov rbx,[rsi+00000600]
7FFE5FC11542: 39 1B                    - cmp [rbx],ebx
7FFE5FC11544: 45 33 F6                 - xor r14d,r14d
7FFE5FC11547: EB 17                    - jmp 7FFE5FC11560
}
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>114985</ID>
          <Description>"water can does not decrease"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[ENABLE]

aobscan(water,4C 8B 86 08 01 00 00 45) // should be unique
alloc(newmem,$1000,water)

label(code)
label(return)

newmem:

code:
  mov r8,[rsi+00000108]
  push eax
  mov eax, #55
  mov [r8+4c],eax
  pop eax
  jmp return

water:
  jmp newmem
  nop 2
return:
registersymbol(water)

[DISABLE]

water:
  db 4C 8B 86 08 01 00 00

unregistersymbol(water)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: StardewValley.Tools.WateringCan::drawInMenu+2CB

StardewValley.Tools.WateringCan::drawInMenu+29F: 48 B8 68 59 B3 AC C3 01 00 00  - mov rax,000001C3ACB35968
StardewValley.Tools.WateringCan::drawInMenu+2A9: 48 8B 18                       - mov rbx,[rax]
StardewValley.Tools.WateringCan::drawInMenu+2AC: C5 FA 2C 45 20                 - vcvttss2si eax,[rbp+20]
StardewValley.Tools.WateringCan::drawInMenu+2B1: 83 C0 08                       - add eax,08
StardewValley.Tools.WateringCan::drawInMenu+2B4: C5 FA 2C 55 24                 - vcvttss2si edx,[rbp+24]
StardewValley.Tools.WateringCan::drawInMenu+2B9: 83 C2 30                       - add edx,30
StardewValley.Tools.WateringCan::drawInMenu+2BC: 48 8B 8E 00 01 00 00           - mov rcx,[rsi+00000100]
StardewValley.Tools.WateringCan::drawInMenu+2C3: 0F B6 49 4D                    - movzx ecx,byte ptr [rcx+4D]
StardewValley.Tools.WateringCan::drawInMenu+2C7: 85 C9                          - test ecx,ecx
StardewValley.Tools.WateringCan::drawInMenu+2C9: 75 0D                          - jne StardewValley.Tools.WateringCan::drawInMenu+2D8
// ---------- INJECTING HERE ----------
StardewValley.Tools.WateringCan::drawInMenu+2CB: 4C 8B 86 08 01 00 00           - mov r8,[rsi+00000108]
// ---------- DONE INJECTING  ----------
StardewValley.Tools.WateringCan::drawInMenu+2D2: 45 8B 40 4C                    - mov r8d,[r8+4C]
StardewValley.Tools.WateringCan::drawInMenu+2D6: EB 07                          - jmp StardewValley.Tools.WateringCan::drawInMenu+2DF
StardewValley.Tools.WateringCan::drawInMenu+2D8: 44 8B 86 10 01 00 00           - mov r8d,[rsi+00000110]
StardewValley.Tools.WateringCan::drawInMenu+2DF: C5 F8 57 C0                    - vxorps xmm0,xmm0,xmm0
StardewValley.Tools.WateringCan::drawInMenu+2E3: C4 C1 7A 2A C0                 - vcvtsi2ss xmm0,xmm0,r8d
StardewValley.Tools.WateringCan::drawInMenu+2E8: C5 F0 57 C9                    - vxorps xmm1,xmm1,xmm1
StardewValley.Tools.WateringCan::drawInMenu+2EC: C5 F2 2A 8E 10 01 00 00        - vcvtsi2ss xmm1,xmm1,[rsi+00000110]
StardewValley.Tools.WateringCan::drawInMenu+2F4: C5 FA 5E C1                    - vdivss xmm0,xmm0,xmm1
StardewValley.Tools.WateringCan::drawInMenu+2F8: C5 FA 59 05 04 01 00 00        - vmulss xmm0,xmm0,[7FFE5F8CF1D4]
StardewValley.Tools.WateringCan::drawInMenu+300: C5 7A 2C C0                    - vcvttss2si r8d,xmm0
}
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>227</ID>
          <Description>"all stackable Items are at 999"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[ENABLE]

aobscan(items,8B 40 4C 85 C0 7E) // should be unique
alloc(newmem,$100,items)

label(code)
label(return)

newmem:
  push ebx
  mov ebx,#999
  mov [rax+4c],ebx
  pop ebx
code:
  mov eax,[rax+4C]
  test eax,eax
  jmp return

items:
  jmp newmem
return:
registersymbol(items)

[DISABLE]

items:
  db 8B 40 4C 85 C0

unregistersymbol(items)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: StardewValley.Item::get_Stack+4

7FFBEC4A7530: 00 00     - add [rax],al
7FFBEC4A7532: 00 00     - add [rax],al
7FFBEC4A7534: 00 00     - add [rax],al
7FFBEC4A7536: 00 00     - add [rax],al
7FFBEC4A7538: 40 C5     -  
7FFBEC4A753A: 6A EC     - push -14
7FFBEC4A753C: FB        - sti 
7FFBEC4A753D: 7F 00     - jg 7FFBEC4A753F
7FFBEC4A753F: 00 48 8B  - add [rax-75],cl
StardewValley.Item::get_Stack+2: 41 78     - db 41 78 
// ---------- INJECTING HERE ----------
StardewValley.Item::get_Stack+4: 8B 40 4C  - mov eax,[rax+4C]
// ---------- DONE INJECTING  ----------
StardewValley.Item::get_Stack+7: 85 C0     - test eax,eax
StardewValley.Item::get_Stack+9: 7E 02     - jle StardewValley.Item::get_Stack+D
StardewValley.Item::get_Stack+B: EB 02     - jmp StardewValley.Item::get_Stack+F
StardewValley.Item::get_Stack+D: 33 C0     - xor eax,eax
StardewValley.Item::get_Stack+F: C3        - ret 
7FFBEC4A7550: 19 00     - sbb [rax],eax
7FFBEC4A7552: 00 00     - add [rax],al
7FFBEC4A7554: 00 00     - add [rax],al
7FFBEC4A7556: 00 00     - add [rax],al
7FFBEC4A7558: 60        - pushad (invalid) 
}
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>114986</ID>
          <Description>"Get Code which accesses the current Time (thx Akira Fudo!)"</Description>
          <Options moHideChildren="1"/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{$lua}
if syntaxcheck then return end
[ENABLE]
local addr = AOBScan('85 C0 74 07 83 05')[0]..'+04'
local str  = disassemble(addr)
local extra, opcode, bytes, address = splitDisassembledString(str)
local offset = opcode:match('%[(.-)%]')
registerSymbol('pointer_timer', offset)
[DISABLE]
unregisterSymbol('pointer_timer')


</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>114987</ID>
              <Description>"Current Time in simple written Form (e.g. 1810=18:10)"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>pointer_timer</Address>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
  <UserdefinedSymbols>
    <SymbolEntry>
      <Name>pointer_timer</Name>
      <Address>7FF95D16AD8C</Address>
    </SymbolEntry>
  </UserdefinedSymbols>
</CheatTable>
