<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="44">
  <CheatEntries>
    <CheatEntry>
      <ID>0</ID>
      <Description>"Enable"</Description>
      <Options moAlwaysHideChildren="1" moActivateChildrenAsWell="1" moDeactivateChildrenAsWell="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : SO6.exe
  Version: 
  Date   : 2022-10-29
  Author : seneeki

  This script sets the rest of the scripts up to be used
}

[enable]

aobscanmodule(gbl_usr_mgr,SO6.exe,41 ** ** ** ** ** ** 4d ** ** ** ** ** ** 48 ** ** 8B ** 49 ** 0C ** 48 ** ** 74 ** 48 ** ** 0f ** ** ** ** ** 48)
aobscanmodule(on_ent_hit,SO6.exe,41 ** ** ** 89 ** ** C3 CC E9)

alloc(gummem,$1000,gbl_usr_mgr+7)
alloc(oehmem,$1000,on_ent_hit+4)

label(gum_exit ohkil ohkill pl_char opre_exit gum_ret ub_ptr Raymond Laeticia Albaird ubcycle oeh_exit oeh_ret infhp OHK inf_hp)
registersymbol(on_ent_hit oeh_ret OHK inf_hp gbl_usr_mgr gum_ret ub_ptr Raymond Laeticia Albaird ubcycle)

gummem:
  mov [ub_ptr+0],r8
gum_ret:
  readmem(gbl_usr_mgr+7,7)
  jmp gum_exit
ub_ptr:
  dq 0
  align 8,c3
Raymond:
  dq 0
  align 8,c3
Laeticia:
  dq 0
  align 8,c3
Albaird:
  dq 0
  align 8,c3
ubcycle:
  dq 0
  align 8,c3
OHK:
  dw 0
  align 1,c3
inf_hp:
  dw 0
  align 1,c3
gbl_usr_mgr+7:
  jmp gummem
  nop 2
gum_exit:

oehmem:
  cmp [Raymond],rcx
  jne @f
  jmp pl_char
@@:
  cmp [Laeticia],rcx
  jne @f
  jmp pl_char
@@:
  cmp [Albaird],rcx
  je pl_char
  jmp ohkill
ohkil:
  mov [rcx+10],0
  jmp opre_exit
infhp:
  mov [rcx+10],r9d
  jmp opre_exit
ohkill:
  cmp byte ptr [OHK],1
  jne oeh_ret
  jmp ohkil
pl_char:
  cmp byte ptr [inf_hp+0],1
  je infhp
oeh_ret:
  readmem(on_ent_hit+4,5)
  readmem(on_ent_hit+9,2)
  jmp oeh_exit
on_ent_hit+4:
  jmp oehmem
opre_exit:
  db c3 cc
oeh_exit:

[disable]
gbl_usr_mgr+7:
  readmem(gum_ret,7)
on_ent_hit+4:
  readmem(oeh_ret,7)

unregistersymbol(*)
dealloc(*)

</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>1</ID>
          <Description>"Enable"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{$lua}
if syntaxcheck then return end
[enable]
function regSym(alMem,sym)
alMem = allocateMemory(0x8)
registerSymbol(sym,alMem)
end
function unregSym(alMem,sym)
deAlloc(alMem)
unregisterSymbol(sym)
alMem = nil
end
char = {'Raymond','Laeticia','Albaird'}
function setChar()
if readInteger('[ub_ptr]') ~= nil then
local ub = readPointer('[ub_ptr]+1790')
writePointer('ubcycle',ub)
ub =readPointer('[ubcycle]+8')
writePointer('Raymond',ub+0x20)
ub =readPointer('[ubcycle]+20')
writePointer('Laeticia',ub+0x20)
ub =readPointer('[ubcycle]+90')
writePointer('Albaird',ub+0x20)
end
end

pt_tmr = createTimer()
pt_tmr.setInterval(2000)
pt_tmr.onTimer = setChar

[disable]
pt_tmr.destroy()


</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>2</ID>
          <Description>"Lua Skeleton"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{$lua}
if syntaxcheck then return end
[enable]


[disable]


</AssemblerScript>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>10</ID>
      <Description>"Pointers"</Description>
      <Options moHideChildren="1"/>
      <GroupHeader>1</GroupHeader>
      <CheatEntries>
        <CheatEntry>
          <ID>16</ID>
          <Description>"Party"</Description>
          <Options moHideChildren="1"/>
          <GroupHeader>1</GroupHeader>
          <CheatEntries>
            <CheatEntry>
              <ID>4</ID>
              <Description>"Raymond"</Description>
              <Options moHideChildren="1"/>
              <ShowAsSigned>0</ShowAsSigned>
              <GroupHeader>1</GroupHeader>
              <Address>Raymond</Address>
              <Offsets>
                <Offset>0</Offset>
              </Offsets>
              <CheatEntries>
                <CheatEntry>
                  <ID>5</ID>
                  <Description>"Health"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>4 Bytes</VariableType>
                  <Address>+10</Address>
                </CheatEntry>
                <CheatEntry>
                  <ID>17</ID>
                  <Description>"Exp"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>4 Bytes</VariableType>
                  <Address>+1e0</Address>
                </CheatEntry>
                <CheatEntry>
                  <ID>27</ID>
                  <Description>"Level"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>4 Bytes</VariableType>
                  <Address>+c</Address>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
            <CheatEntry>
              <ID>8</ID>
              <Description>"Laeticia"</Description>
              <Options moHideChildren="1"/>
              <ShowAsSigned>0</ShowAsSigned>
              <GroupHeader>1</GroupHeader>
              <Address>Laeticia</Address>
              <Offsets>
                <Offset>0</Offset>
              </Offsets>
              <CheatEntries>
                <CheatEntry>
                  <ID>9</ID>
                  <Description>"Health"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>4 Bytes</VariableType>
                  <Address>+10</Address>
                </CheatEntry>
                <CheatEntry>
                  <ID>19</ID>
                  <Description>"Exp"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>4 Bytes</VariableType>
                  <Address>+1e0</Address>
                </CheatEntry>
                <CheatEntry>
                  <ID>29</ID>
                  <Description>"Level"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>4 Bytes</VariableType>
                  <Address>+c</Address>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
            <CheatEntry>
              <ID>6</ID>
              <Description>"Albaird"</Description>
              <Options moHideChildren="1"/>
              <ShowAsSigned>0</ShowAsSigned>
              <GroupHeader>1</GroupHeader>
              <Address>Albaird</Address>
              <Offsets>
                <Offset>0</Offset>
              </Offsets>
              <CheatEntries>
                <CheatEntry>
                  <ID>7</ID>
                  <Description>"Health"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>4 Bytes</VariableType>
                  <Address>+10</Address>
                </CheatEntry>
                <CheatEntry>
                  <ID>18</ID>
                  <Description>"Exp"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>4 Bytes</VariableType>
                  <Address>+1e0</Address>
                </CheatEntry>
                <CheatEntry>
                  <ID>28</ID>
                  <Description>"Level"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>4 Bytes</VariableType>
                  <Address>+c</Address>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>13</ID>
      <Description>"Scripts"</Description>
      <Options moHideChildren="1"/>
      <GroupHeader>1</GroupHeader>
      <CheatEntries>
        <CheatEntry>
          <ID>14</ID>
          <Description>"Infinite Health"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[enable]
inf_hp:
db 1
[disable]
inf_hp:
db 0


</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>24</ID>
          <Description>"Exp Scripts"</Description>
          <Options moHideChildren="1"/>
          <GroupHeader>1</GroupHeader>
          <CheatEntries>
            <CheatEntry>
              <ID>23</ID>
              <Description>"Instant Level most kills"</Description>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>{ Game   : SO6.exe
  Version:
  Date   : 2022-10-29
  Author : seneeki

  This script does blah blah blah
}

[ENABLE]

aobscanmodule(exp_on_battle,SO6.exe,3B DD 73 22 45 84 E4) // should be unique
alloc(eobmem,$1000,exp_on_battle)


label(eob_exit)
registersymbol(exp_on_battle)
eobmem:
  cmp ebx,ebp
  jae SO6.exe+24E6DF
  test r12b,r12b
  mov ebx,ebp
  jmp eob_exit

exp_on_battle:
  jmp eobmem
  nop 2
eob_exit:


[DISABLE]

exp_on_battle:
  db 3B DD 73 22 45 84 E4

unregistersymbol(*)
dealloc(*)

{
// ORIGINAL CODE - INJECTION POINT: SO6.exe+24E6B9

SO6.exe+24E690: 44 88 64 24 70     - mov [rsp+70],r12b
SO6.exe+24E695: E8 C2 3D E6 FF     - call SO6.exe+B245C
SO6.exe+24E69A: 44 8D 6E 08        - lea r13d,[rsi+08]
SO6.exe+24E69E: 48 8B C8           - mov rcx,rax
SO6.exe+24E6A1: 41 8B D5           - mov edx,r13d
SO6.exe+24E6A4: E8 73 59 54 00     - call SO6.LZ4_versionString+8FBC
SO6.exe+24E6A9: 41 8D 4F FF        - lea ecx,[r15-01]
SO6.exe+24E6AD: 8B 6C 88 04        - mov ebp,[rax+rcx*4+04]
SO6.exe+24E6B1: 85 ED              - test ebp,ebp
SO6.exe+24E6B3: 0F 84 96 64 7A 00  - je SO6.exe+9F4B4F
// ---------- INJECTING HERE ----------
SO6.exe+24E6B9: 3B DD              - cmp ebx,ebp
// ---------- DONE INJECTING  ----------
exp_on_battle: 73 22              - jae SO6.exe+24E6DF
SO6.exe+24E6BD: 45 84 E4           - test r12b,r12b
SO6.exe+24E6C0: 75 4B              - jne SO6.exe+24E70D
SO6.exe+24E6C2: 89 9F F8 01 00 00  - mov [rdi+000001F8],ebx
SO6.exe+24E6C8: 48 8B 5C 24 68     - mov rbx,[rsp+68]
SO6.exe+24E6CD: 8B C6              - mov eax,esi
SO6.exe+24E6CF: 48 83 C4 20        - add rsp,20
SO6.exe+24E6D3: 41 5F              - pop r15
SO6.exe+24E6D5: 41 5E              - pop r14
SO6.exe+24E6D7: 41 5D              - pop r13
}
</AssemblerScript>
            </CheatEntry>
            <CheatEntry>
              <ID>25</ID>
              <Description>"Exp Multiplier"</Description>
              <Options moHideChildren="1"/>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>{ Game   : SO6.exe
  Version: 
  Date   : 2022-10-29
  Author : seneeki

  This script does blah blah blah
}

[ENABLE]

aobscanmodule(exp_gain_kill,SO6.exe,75 4b 89 9F F8 01 00 00 48 8b) // should be unique
alloc(egkmem,$1000,exp_gain_kill+2)


label(egk_exit exp_multi)
registersymbol(exp_gain_kill exp_multi)
egkmem:
{$luacode tmp=EBX}

   writeInteger('[Raymond]+1e0',tmp)
   writeInteger('[Laeticia]+1e0',tmp)
   writeInteger('[Albaird]+1e0',tmp)

{$asm}
  imul ebx,[exp_multi]
  mov [rdi+000001F8],ebx
  jmp egk_exit
exp_multi:
  dw 1
  align 2,c3
exp_gain_kill+2:
  jmp egkmem
  nop
egk_exit:


[DISABLE]

exp_gain_kill+2:
  db 89 9F F8 01 00 00

unregistersymbol(*)
dealloc(*)

{
// ORIGINAL CODE - INJECTION POINT: SO6.exe+24E71B

SO6.exe+24E6F7: E8 20 59 54 00     - call SO6.LZ4_versionString+8FBC
SO6.exe+24E6FC: 41 8D 4F FF        - lea ecx,[r15-01]
SO6.exe+24E700: 8B 6C 88 04        - mov ebp,[rax+rcx*4+04]
SO6.exe+24E704: 85 ED              - test ebp,ebp
SO6.exe+24E706: 75 B1              - jne SO6.exe+24E6B9
SO6.exe+24E708: E9 3D 64 7A 00     - jmp SO6.exe+9F4B4A
SO6.exe+24E70D: 41 B0 01           - mov r8b,01
SO6.exe+24E710: 41 8B D7           - mov edx,r15d
SO6.exe+24E713: 48 8B CF           - mov rcx,rdi
SO6.exe+24E716: E8 69 21 F0 FF     - call SO6.exe+150884
// ---------- INJECTING HERE ----------
SO6.exe+24E71B: 89 9F F8 01 00 00  - mov [rdi+000001F8],ebx
// ---------- DONE INJECTING  ----------
SO6.exe+24E721: 89 AF FC 01 00 00  - mov [rdi+000001FC],ebp
SO6.exe+24E727: EB 9F              - jmp SO6.exe+24E6C8
SO6.exe+24E729: CC                 - int 3 
SO6.exe+24E72A: CC                 - int 3 
SO6.exe+24E72B: CC                 - int 3 
SO6.exe+24E72C: E9 0A A4 A5 04     - jmp SO6.exe+4CA8B3B
SO6.exe+24E731: 91                 - xchg eax,ecx
SO6.exe+24E732: 5A                 - pop rdx
SO6.exe+24E733: E9 8C E6 05 00     - jmp SO6.exe+2ACDC4
SO6.exe+24E738: B9 0F 86 FD C1     - mov ecx,C1FD860F
}
</AssemblerScript>
              <CheatEntries>
                <CheatEntry>
                  <ID>26</ID>
                  <Description>"Multiplication Factor"</Description>
                  <DropDownList ReadOnly="1" DescriptionOnly="1" DisplayValueAsItem="1">1:Normal Rate
2:Double Rate
3:Triple Rate
5:Fast Levelling
10:Faster Levelling
20:Very Fast Levelling
50:Extreme Powerlevelling
100:Ludicrous Powerlevelling
</DropDownList>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>2 Bytes</VariableType>
                  <Address>exp_multi</Address>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>15</ID>
          <Description>"One Hit Kills"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[enable]
OHK:
db 1
[disable]
OHK:
db 0


</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>22</ID>
          <Description>"Ignore Fol Requirement (shop, inn)"</Description>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : SO6.exe
  Version: 
  Date   : 2022-10-29
  Author : seneeki

  This script iugnores Fol requirements when making a purchase
}

[ENABLE]

aobscanmodule(free_shop_items,SO6.exe,0F 85 90 00 00 00 48 8B 46)
aobscanmodule(free_inn_stays,SO6.exe,79 2F 48 8B 0D 70 B4 20 F1)

alloc(fismem,$1000,free_inn_stays)
alloc(fsimem,$1000,free_shop_items)


label(fsi_exit fsi_ret fis_exit fis_ret)
registersymbol(free_shop_items fsi_ret free_inn_stays fis_ret)
fsimem:

  jmp SO6.exe+CFC004
  jmp fsi_exit
fsi_ret:
  readmem(free_shop_items,6)
  jmp fsi_exit
free_shop_items:
  jmp fsimem
  nop
fsi_exit:

fismem:
  jmp SO6.exe+11278910
fis_ret:
  readmem(free_inn_stays+2,7)
  jmp fis_exit
free_inn_stays:
  jmp fismem
  nop 4
fis_exit:
[DISABLE]

free_shop_items:
  readmem(fsi_ret,6)

free_inn_stays:
  db 79 2f
  readmem(fis_ret,7)

unregistersymbol(*)
dealloc(*)

</AssemblerScript>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
  <UserdefinedSymbols/>
  <Comments>this table belongs to 
https://opencheattables.com
https://opencheattables.com/viewtopic.php?t=480
</Comments>
</CheatTable>
