<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="38">
  <CheatEntries>
    <CheatEntry>
      <ID>85</ID>
      <Description>"Compact UI Mode for Cheat Engine"</Description>
      <Options moHideChildren="1"/>
      <LastState/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{$lua}
[ENABLE]
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]
cycleFullCompact(nil,false)
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>116</ID>
          <Description>"Show Comment (not possible in compact view - thus ...)"</Description>
          <LastState/>
          <Color>008000</Color>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[ENABLE]
{$lua}
if not syntaxcheck then
  getMainForm().CommentButton.doClick()
  memrec.color = 0x008000
end
{$asm}

00000000:
nop

[DISABLE]
{$lua
if not syntaxcheck then memrec.color = 0x0000ff; end
{$asm}
</AssemblerScript>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>41</ID>
      <Description>"Generic Stats"</Description>
      <Options moHideChildren="1" moDeactivateChildrenAsWell="1"/>
      <LastState/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]

//aobscanmodule(nonBattleStat,Lilitales.exe,01 06 E8 25 24 FD FF) After fight
//aobscanmodule(nonBattleStat,Lilitales.exe,39 14 01 7D 03) always as below
aobscanmodule(nonBattleStat,Lilitales.exe,39 14 01 7E) //39 14 01 7E 03
registersymbol(nonBattleStat)
alloc(newmem,$1000,nonBattleStat)

label(code)
label(return)
label(start)

label(retAobMoney)
label(vGen)
{label(vDay)
//label(vMoney)
//label(vLustW)}
label(dMinI)
label(fkit) //keep item
label(fallit) //all items

registersymbol(retAobMoney)
registersymbol(vGen)
{registersymbol(vDay)
registersymbol(vMoney)
registersymbol(vLustW)}
registersymbol(dMinI)
registersymbol(fkit)
registersymbol(fallit)

newmem:
retAobMoney:
  readmem(nonBattleStat,5)
vGen:
dd 0
{vDay:
dd 0
vMoney:
dd 0
vLustW:
dd 0}
dMinI:
dd 02
fkit:
dd 0
fallit:
dd 0

start:
  pushf //safety first
  push ebx
//  push edx
  cmp edi,D3E
  jne short @f
  lea ebx,[ecx+eax]
  mov [vGen],ebx
{D16,D18,D3B-D3E,E0D-E34
// Day
  cmp edi,D3B
  jne short @f
  lea ebx,[ecx+eax]
  mov [vDay],ebx
@@:
// Money
  cmp edi,D3C
  jne short @f
  lea ebx,[ecx+eax]
  mov [vMoney],ebx
@@:
// LustWorm
  cmp edi,D3E
  jne @f
  lea ebx,[ecx+eax]
  mov [vLustW],ebx}
@@:
// Items
  cmp byte ptr [fkit],01
  je short @f
  cmp byte ptr [fallit],01
  je short @f
  jmp continue // Skip as no itemflag is set
@@:
  cmp edi,E0D // Mana Drop E34, Health Drop E33
  jb continue // 4B value 0-5 even up to offset 05C, 064 f.e. is repair kit
  cmp edi,E34
  ja continue

  mov ebx,[dMinI]
  cmp dword ptr [eax+ecx],ebx // Skip if &gt;= min value
  jae continue
  cmp byte ptr [fallit],01 // Flag to set all items regardless if you do own them
  je @f
  cmp dword ptr [eax+ecx],0 // Skip if &lt;= 0 / not owned
  jle continue // SF≠OF or ZF=1

@@:
  mov [ecx+eax],ebx

{  jmp continue // SKIPPED - OLD Way
  // BEGIN LOOP - no need if any item goes through the loop anyway #keepitsimple
  mov ebx,E33
  mov edx,14 // 20 (may 24 or 29 needed - but there add count check)?
iloop:
  cmp edi,ebx     // Item-ID
  jne locmp // ZF=0
  cmp [fallit],01 // Hope it will lead to unlock the items if count is &gt;0
  je @f
  cmp [ecx+eax],0 // Check if you already do own it, skipped if you want all
  jle locmp // SF≠OF or ZF=1
@@:
  mov [ecx+eax],5
locmp:
  dec ebx
  cmp edx,1
  dec edx
  ja iloop  // CF=0 or ZF=0
 // END LOOP}

continue:
//  pop edx
  pop ebx
  popf

code:
  cmp [ecx+eax],edx
  reassemble(nonBattleStat+3)
  jmp return

nonBattleStat:
  jmp start
return:


[DISABLE]

nonBattleStat:
//  db 39 14 01 7E 03
  readmem(retAobMoney,5)

unregistersymbol(retAobMoney)
unregistersymbol(vGen)
{unregistersymbol(vDay)
unregistersymbol(vLustW)
unregistersymbol(vMoney)}
unregistersymbol(dMinI)
unregistersymbol(fkit)
unregistersymbol(fallit)

unregistersymbol(nonBattleStat)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "Lilitales.exe"+461A

"Lilitales.exe"+45FF: 8B 0D 50 85 4F 00  -  mov ecx,[Lilitales.exe+F8550]
"Lilitales.exe"+4605: 56                 -  push esi
"Lilitales.exe"+4606: 8B 35 A8 25 4B 00  -  mov esi,[Lilitales.exe+B25A8]
"Lilitales.exe"+460C: 57                 -  push edi
"Lilitales.exe"+460D: 2B F0              -  sub esi,eax
"Lilitales.exe"+460F: 2B C8              -  sub ecx,eax
"Lilitales.exe"+4611: 8B FA              -  mov edi,edx
"Lilitales.exe"+4613: 8B 10              -  mov edx,[eax]
"Lilitales.exe"+4615: 83 FA FF           -  cmp edx,-01
"Lilitales.exe"+4618: 74 13              -  je Lilitales.exe+462D
// ---------- INJECTING HERE ----------
"Lilitales.exe"+461A: 39 14 01           -  cmp [ecx+eax],edx
"Lilitales.exe"+461D: 7E 03              -  jle Lilitales.exe+4622
// ---------- DONE INJECTING  ----------
"Lilitales.exe"+461F: 89 14 01           -  mov [ecx+eax],edx
"Lilitales.exe"+4622: 8B 14 06           -  mov edx,[esi+eax]
"Lilitales.exe"+4625: 39 14 01           -  cmp [ecx+eax],edx
"Lilitales.exe"+4628: 7D 03              -  jnl Lilitales.exe+462D
"Lilitales.exe"+462A: 89 14 01           -  mov [ecx+eax],edx
"Lilitales.exe"+462D: 83 C0 04           -  add eax,04
"Lilitales.exe"+4630: 83 EF 01           -  sub edi,01
"Lilitales.exe"+4633: 75 DE              -  jne Lilitales.exe+4613
"Lilitales.exe"+4635: 5F                 -  pop edi
"Lilitales.exe"+4636: 5E                 -  pop esi
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>117</ID>
          <Description>"???"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>4 Bytes</VariableType>
          <Address>vGen</Address>
          <Offsets>
            <Offset>4</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>42</ID>
          <Description>"Money"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>00BFBF</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>vGen</Address>
          <Offsets>
            <Offset>8</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>115</ID>
          <Description>"Day"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>4 Bytes</VariableType>
          <Address>vGen</Address>
          <Offsets>
            <Offset>C</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>125</ID>
          <Description>"Time of Day"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>4 Bytes</VariableType>
          <Address>vGen</Address>
          <Offsets>
            <Offset>-1A0</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>118</ID>
          <Description>"Story Progress?"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>4 Bytes</VariableType>
          <Address>vGen</Address>
          <Offsets>
            <Offset>10</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>78</ID>
          <Description>"Dance count"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>4 Bytes</VariableType>
          <Address>vGen</Address>
          <Offsets>
            <Offset>9C</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>43</ID>
          <Description>"Lust Worm Progress (&gt;25%: meet Cless, &gt;60: 4th floor)"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF00FF</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>vGen</Address>
          <Offsets>
            <Offset>0</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>58</ID>
          <Description>"ALT+0 Keep Items (no drop below min value if owned)"</Description>
          <LastState/>
          <Color>000080</Color>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[ENABLE]

fkit:
dd 01

[DISABLE]

fkit:
dd 0
</AssemblerScript>
          <Hotkeys>
            <Hotkey>
              <Action>Toggle Activation</Action>
              <Keys>
                <Key>18</Key>
                <Key>48</Key>
              </Keys>
              <ID>0</ID>
            </Hotkey>
          </Hotkeys>
        </CheatEntry>
        <CheatEntry>
          <ID>59</ID>
          <Description>"Unlock all items (set to min value)"</Description>
          <LastState/>
          <Color>000080</Color>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[ENABLE]

fallit:
dd 01

[DISABLE]

fallit:
dd 0
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>126</ID>
          <Description>"Min. value of items to keep/set (def. 2 / max 5)"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Byte</VariableType>
          <Address>dMinI</Address>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>77</ID>
      <Description>"Unlocks (Skills, Weapons, Access.) &amp; Stats"</Description>
      <Options moHideChildren="1" moDeactivateChildrenAsWell="1"/>
      <LastState/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]

aobscanmodule(Unlockables,Lilitales.exe,8B 3C B0 74 19)
registersymbol(Unlockables)
alloc(newmem,$1000,Unlockables)

label(code)
label(return)
label(start)

label(pUnlocks)
label(vIndItem)
label(faskills)
label(fpskills)
label(fweap)
label(facces)
registersymbol(pUnlocks)
registersymbol(vIndItem)
registersymbol(faskills)
registersymbol(fpskills)
registersymbol(fweap)
registersymbol(facces)

newmem:
pUnlocks:
dd 0
vIndItem: // to provide individual unlock
dd 5E8
faskills:
dd 0
fpskills:
dd 0
fweap:
dd 0
facces:
dd 0

start:
  pushf //safety first
//save unlock base.
  mov [pUnlocks],eax
//Note: EVERY address is going through a loop-&gt; all offsets run through at least once
//(if you enter corr. stats: below ones 5 times each. Others more often)

//active skills
  cmp byte ptr [faskills],01
  jne short @f
  cmp esi,12C //4B0 [esi*4]
  jb short continue // not within range - do nothing
  cmp esi,134 //4D0
  jbe short unlockit // if below/equal, unlock it - if above check next flag
@@:
//weapons
  cmp byte ptr [fweap],01
  jne short @f
  cmp esi,168 //5A0
  jb short continue // not within range - do nothing
  cmp esi,17A //5E8
  jbe short unlockit // if below/equal, unlock it - if above check next flag
@@:
//Accessories
  cmp byte ptr [facces],01
  jne short @f
  cmp esi,1A4 //690
  jb short continue // not within range - do nothing
  cmp esi,1CA //728
  jbe short unlockit // if below/equal, unlock it - if above check next flag
@@:
//Passive skills
  cmp byte ptr [fpskills],01
  jne short continue // last flag checked - do nothing
  cmp esi,1F4 //7D0
  jb short continue // not within range - do nothing
  cmp esi,202 //808
  ja short continue // if below/equal, next inst.=unlock it - if above: not within range - do nothing
unlockit:
//finally set to 1, whatever is currently in loop, if flag is set
  mov dword ptr [eax+esi*4],1
continue:
  popf

code:
  mov edi,dword ptr [eax+esi*4] //FINALLY - reasonable amount of counts! (pretend you didn't see me recenty spitting on 39 14 01 7E 03)
  je Lilitales.exe+62D5E
//  reassemble(Unlockables+3)
  jmp return

Unlockables:
  jmp start
return:


[DISABLE]

Unlockables:
  db 8B 3C B0 74 19

unregistersymbol(pUnlocks)
unregistersymbol(vIndItem)
unregistersymbol(fakills)
unregistersymbol(fpkills)
unregistersymbol(fweap)
unregistersymbol(facces)

unregistersymbol(Unlockables)
dealloc(newmem)

// B&amp;T cond: ESI&gt;=0x00000168

{
// ORIGINAL CODE - INJECTION POINT: "Lilitales.exe"+62D40

"Lilitales.exe"+62D18: 4A                    -  dec edx
"Lilitales.exe"+62D19: 3B F2                 -  cmp esi,edx
"Lilitales.exe"+62D1B: 7E 12                 -  jle Lilitales.exe+62D2F
"Lilitales.exe"+62D1D: 68 4C AC 48 00        -  push Lilitales.exe+8AC4C
"Lilitales.exe"+62D22: 68 70 AC 48 00        -  push Lilitales.exe+8AC70
"Lilitales.exe"+62D27: E8 04 A5 FF FF        -  call Lilitales.exe+5D230
"Lilitales.exe"+62D2C: 83 C4 08              -  add esp,08
"Lilitales.exe"+62D2F: E8 3C F0 F9 FF        -  call Lilitales.exe+1D70
"Lilitales.exe"+62D34: 83 3D 5C CE 59 00 00  -  cmp dword ptr [Lilitales.exe+19CE5C],00
"Lilitales.exe"+62D3B: A1 50 85 4F 00        -  mov eax,[Lilitales.exe+F8550]
// ---------- INJECTING HERE ----------
"Lilitales.exe"+62D40: 8B 3C B0              -  mov edi,[eax+esi*4]
"Lilitales.exe"+62D43: 74 19                 -  je Lilitales.exe+62D5E
// ---------- DONE INJECTING  ----------
"Lilitales.exe"+62D45: 57                    -  push edi
"Lilitales.exe"+62D46: 56                    -  push esi
"Lilitales.exe"+62D47: 68 78 AC 48 00        -  push Lilitales.exe+8AC78
"Lilitales.exe"+62D4C: 68 10 9F 55 00        -  push Lilitales.exe+159F10
"Lilitales.exe"+62D51: E8 8D 54 FA FF        -  call Lilitales.exe+81E3
"Lilitales.exe"+62D56: 83 C4 10              -  add esp,10
"Lilitales.exe"+62D59: E8 02 54 FC FF        -  call Lilitales.exe+28160
"Lilitales.exe"+62D5E: 8B C7                 -  mov eax,edi
"Lilitales.exe"+62D60: 5F                    -  pop edi
"Lilitales.exe"+62D61: 5E                    -  pop esi
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>79</ID>
          <Description>"Unlock all active skills"</Description>
          <LastState/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[ENABLE]

faskills:
dd 01

[DISABLE]

faskills:
dd 0
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>113</ID>
          <Description>"Unlock all passive skills"</Description>
          <LastState/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[ENABLE]

fpskills:
dd 01

[DISABLE]

fpskills:
dd 0
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>80</ID>
          <Description>"Unlock all weapons"</Description>
          <LastState/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[ENABLE]

fweap:
dd 01

[DISABLE]

fweap:
dd 0
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>81</ID>
          <Description>"Unlock all accessories"</Description>
          <LastState/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[ENABLE]

facces:
dd 01

[DISABLE]

facces:
dd 0
</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>82</ID>
          <Description>"Pick individual item"</Description>
          <DropDownList DisplayValueAsItem="1">0:Base Unlock
1:--Skills--
1200:Mana Force
1204:Ray Pentagram
1208:Counter
1212:Thunderbolt
1216:Rapid Pike
1220:Do or Die
1224:Octuple Assault
1228:Fayadaan
1232:Ghost Lance
2:--Weapons--
1440:Short Spear
1444:Wind Sprite Staff
1448:Scorpion Tail
1452:Glaive
1456:Wizard Spear
1460:Fauchard
1464:Flare Javelin
1468:Silencing Spear
1472:Halberd
1476:Ordinary Stick
1480:Ceremonial Spear
1484:Ghostly Spear
1488:Obsidian Staff
1492:Melda's Spear
1512:DEBUG SPEAR
</DropDownList>
          <VariableType>4 Bytes</VariableType>
          <Address>vIndItem</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>84</ID>
          <Description>"Unlock picked Item"</Description>
          <DropDownList DisplayValueAsItem="1">0:No
1:Yes
</DropDownList>
          <VariableType>4 Bytes</VariableType>
          <Address>pUnlocks</Address>
          <Offsets>
            <Offset>getAddress("[vIndItem]")</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>83</ID>
          <Description>"=================="</Description>
          <Options moHideChildren="1"/>
          <LastState Value="" RealAddress="00000000"/>
          <GroupHeader>1</GroupHeader>
        </CheatEntry>
        <CheatEntry>
          <ID>110</ID>
          <Description>"Movement (in dungeons)"</Description>
          <Options moHideChildren="1"/>
          <LastState Value="" RealAddress="00000000"/>
          <GroupHeader>1</GroupHeader>
          <CheatEntries>
            <CheatEntry>
              <ID>106</ID>
              <Description>"Column"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>pUnlocks</Address>
              <Offsets>
                <Offset>4</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>107</ID>
              <Description>"Row"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>pUnlocks</Address>
              <Offsets>
                <Offset>8</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>108</ID>
              <Description>"???"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>pUnlocks</Address>
              <Offsets>
                <Offset>0</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>109</ID>
              <Description>"???"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>pUnlocks</Address>
              <Offsets>
                <Offset>C</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>111</ID>
              <Description>"Look (Compas)"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>pUnlocks</Address>
              <Offsets>
                <Offset>38</Offset>
              </Offsets>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>89</ID>
          <Description>"???"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>4 Bytes</VariableType>
          <Address>pUnlocks</Address>
          <Offsets>
            <Offset>125*4</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>112</ID>
          <Description>"??? 190 esi check"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>4 Bytes</VariableType>
          <Address>pUnlocks</Address>
          <Offsets>
            <Offset>64*4</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>45</ID>
          <Description>"Encounters"</Description>
          <Options moHideChildren="1" moManualExpandCollapse="1"/>
          <LastState/>
          <Color>FF00FF</Color>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[ENABLE]

//aobscan(Encounters,8B 04 88 5F 5E)
aobscanmodule(Encounters,Lilitales.exe,8B 17 89 11 83 06 04)
registersymbol(Encounters)
alloc(newmem,$1000,Encounters)

label(code)
label(return)
alloc(vEncount,4,Encounters)
registersymbol(vEncount)

newmem:
  pushf
// hopefully trustfull compare - not 100% sure
  cmp ebx,25
  jne short @F
// edx 1/C,
  cmp ebp,60
  jne short @F
  mov dword ptr [vEncount],edi
@@:
  popf

code:
  mov edx,[edi]
  mov [ecx],edx
  add dword ptr [esi],04
  jmp return

Encounters:
  jmp newmem
  nop 2
return:


[DISABLE]

Encounters:
  db 8B 17 89 11 83 06 04

unregistersymbol(vEncount)
dealloc(vEncount)
unregistersymbol(Encounters)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "Lilitales.exe"+4471E

"Lilitales.exe"+44702: A1 54 F7 54 00                 -  mov eax,[Lilitales.exe+14F754]
"Lilitales.exe"+44707: 33 DB                          -  xor ebx,ebx
"Lilitales.exe"+44709: 39 5C 28 04                    -  cmp [eax+ebp+04],ebx
"Lilitales.exe"+4470D: 7E 59                          -  jle Lilitales.exe+44768
"Lilitales.exe"+4470F: 90                             -  nop 
"Lilitales.exe"+44710: 83 7E 0C 00                    -  cmp dword ptr [esi+0C],00
"Lilitales.exe"+44714: 8B 04 28                       -  mov eax,[eax+ebp]
"Lilitales.exe"+44717: 8D 3C 98                       -  lea edi,[eax+ebx*4]
"Lilitales.exe"+4471A: 74 29                          -  je Lilitales.exe+44745
"Lilitales.exe"+4471C: 8B 0E                          -  mov ecx,[esi]
// ---------- INJECTING HERE ----------
"Lilitales.exe"+4471E: 8B 17                          -  mov edx,[edi]
"Lilitales.exe"+44720: 89 11                          -  mov [ecx],edx
"Lilitales.exe"+44722: 83 06 04                       -  add dword ptr [esi],04
// ---------- DONE INJECTING  ----------
"Lilitales.exe"+44725: 8B 06                          -  mov eax,[esi]
"Lilitales.exe"+44727: 2B 46 04                       -  sub eax,[esi+04]
"Lilitales.exe"+4472A: 3D 00 20 03 00                 -  cmp eax,00032000
"Lilitales.exe"+4472F: 7C 2B                          -  jl Lilitales.exe+4475C
"Lilitales.exe"+44731: 68 5C FC 48 00                 -  push Lilitales.exe+8FC5C
"Lilitales.exe"+44736: 68 4C FB 48 00                 -  push Lilitales.exe+8FB4C
"Lilitales.exe"+4473B: E8 F0 8A 01 00                 -  call Lilitales.exe+5D230
"Lilitales.exe"+44740: 83 C4 08                       -  add esp,08
"Lilitales.exe"+44743: EB 17                          -  jmp Lilitales.exe+4475C
"Lilitales.exe"+44745: 8B 46 08                       -  mov eax,[esi+08]
}
</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>46</ID>
              <Description>"Sexual Encounters"</Description>
              <Color>FF00FF</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>vEncount</Address>
              <Offsets>
                <Offset>0</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>99</ID>
              <Description>"Total XX counter incl gameover (some enemies double add)"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>pUnlocks</Address>
              <Offsets>
                <Offset>2DB*4</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>100</ID>
              <Description>"Times game over"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>pUnlocks</Address>
              <Offsets>
                <Offset>2DC*4</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>101</ID>
              <Description>"Times continued"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>pUnlocks</Address>
              <Offsets>
                <Offset>2DD*4</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>102</ID>
              <Description>"???"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>pUnlocks</Address>
              <Offsets>
                <Offset>2DE*4</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>103</ID>
              <Description>"Times visited crossroad"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>pUnlocks</Address>
              <Offsets>
                <Offset>2DF*4</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>104</ID>
              <Description>"Won Arena"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>pUnlocks</Address>
              <Offsets>
                <Offset>2E0*4</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>105</ID>
              <Description>"Lost Arena"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>pUnlocks</Address>
              <Offsets>
                <Offset>2E1*4</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>119</ID>
              <Description>"????"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>pUnlocks</Address>
              <Offsets>
                <Offset>2E2*4</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>120</ID>
              <Description>"????"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>pUnlocks</Address>
              <Offsets>
                <Offset>2E3*4</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>87</ID>
              <Description>"Times Penetrated"</Description>
              <VariableType>4 Bytes</VariableType>
              <Address>pUnlocks</Address>
              <Offsets>
                <Offset>2E4*4</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>91</ID>
              <Description>"Times Ejaculated Inside of"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>pUnlocks</Address>
              <Offsets>
                <Offset>2E5*4</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>90</ID>
              <Description>"Numer of Blowjobs"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>pUnlocks</Address>
              <Offsets>
                <Offset>2E6*4</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>88</ID>
              <Description>"Times Luna Sold Her Body"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>pUnlocks</Address>
              <Offsets>
                <Offset>2E7*4</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>92</ID>
              <Description>"Money Acquired Through Prostitution"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>pUnlocks</Address>
              <Offsets>
                <Offset>2E8*4</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>96</ID>
              <Description>"Dance Count"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>pUnlocks</Address>
              <Offsets>
                <Offset>2E9*4</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>95</ID>
              <Description>"Money through Dancing"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>pUnlocks</Address>
              <Offsets>
                <Offset>2EA*4</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>97</ID>
              <Description>"Walked home naked"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>pUnlocks</Address>
              <Offsets>
                <Offset>2EB*4</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>98</ID>
              <Description>"Lost cards / masturbated"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>pUnlocks</Address>
              <Offsets>
                <Offset>2EC*4</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>93</ID>
              <Description>"Number of Times Fucked (Humans)"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>pUnlocks</Address>
              <Offsets>
                <Offset>2ED*4</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>94</ID>
              <Description>"Number of Times Fucked (Monsters)"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>pUnlocks</Address>
              <Offsets>
                <Offset>2EE*4</Offset>
              </Offsets>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>6</ID>
      <Description>"Battlestats (Player + Enemy)"</Description>
      <Options moHideChildren="1" moDeactivateChildrenAsWell="1"/>
      <LastState/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]

//#1 aobscanmodule(INJECT,Lilitales.exe,89 0C 90 5F 5E) //mov [eax+edx*4],ecx
//#2 aobscan(INJECT,89 53 1C 83 3D 0C 10 B1 00 01) //mov [ebx+1C],edx
//#3 aobscan(INJECT,8B 17 89 11 83 06 04) //mov edx,[edi]
aobscanmodule(AIOstats,Lilitales.exe,8B 04 88 5F 5E)
registersymbol(AIOstats)
alloc(newmem,$1000,AIOstats)

label(code)
label(return)
label(start)

label(pPlayerHealth)
registersymbol(pPlayerHealth)
label(bfg) //battleflag
label(ppl) //pick player
label(pen) //pick enemy
label(bpc)
label(fHP)
label(fHPdef) //instant defeated
label(fMP)
label(fEnemy)
label(fEnInst) //instant win
registersymbol(bfg)
registersymbol(ppl)
registersymbol(pen)
registersymbol(bpc)
registersymbol(fHP)
registersymbol(fHPdef)
registersymbol(fMP)
registersymbol(fEnemy)
registersymbol(fEnInst)

newmem:
pPlayerHealth:
dd 0
bfg:
dd 0
ppl:
dd 0
pen:
dd 0
bpc:
dd 98
fHP:
dd 0
fHPdef:
dd 0
fMP:
dd 0
fEnemy:
dd 0
fEnInst:
dd 0

start:
  pushf //safety first
//  push ebx
  mov [pPlayerHealth],eax //always save curr. address
// check if we're in battle or outside
  cmp [eax],#2000 //Player-ID outside battle, 2000 is P1, 2002 P2, 2003 P3
  jb @f
  cmp [eax],#2003
  ja @f
  jmp outside
// if there is 1 or s.t. like 2345 it's an enemy, thus we're in battle

@@:
// Battle
  mov [bpc],A8
  mov [bfg],08
  //  add [pPlayerHealth],8 //Workaround CE wouldn't update offset changes
  // not needed with that workaround: https://www.cheatengine.org/forum/viewtopic.php?t=611066
  // compare flags during battle (Note: eax - w.o. add workaround - real offsets)
  cmp byte ptr [fHPdef],01 //defeated player rather than max hp
  jne short @f
  mov [eax+14],0  //Alive resp. fighting/defeated
  mov [eax+1C],0  //CurrHP
  mov [eax+BC],0
  mov [eax+C4],0
  mov [eax+164],0
  mov [eax+16C],0
  jmp short mana //of course don't revive after defeat
@@:
  cmp byte ptr [fHP],01
  jne short mana
  mov ebx,[eax+18]  //MaxHP
  mov [eax+1C],ebx  //CurrHP
  mov [eax+14],1    //Alive
  cmp byte ptr [eax+B8],1    //In Current Party?
  jne short @f
  mov ebx,[eax+C0]  //P2 MaxHP - diff A8
  mov [eax+C4],ebx
  mov [eax+BC],1
@@:
  cmp byte ptr [eax+160],1
  jne short @f
  mov ebx,[eax+168] //P3 MaxHP
  mov [eax+16C],ebx
  mov [eax+164],1
//  mov [ebx+18],(int)999
//  mov [ebx+1C],(int)999
mana:
  cmp byte ptr [fMP],01
  jne short @f
  mov ebx,[eax+20]  //MaxMP
  mov [eax+24],ebx  //CurrMP
  mov ebx,[eax+C8]  // P2 MaxMP - diff A8
  mov [eax+CC],ebx
  mov ebx,[eax+170] // P3 MaxMP
  mov [eax+174],ebx
//  mov [ebx+20],(int)99
//  mov [ebx+24],(int)99
@@:
  cmp byte ptr [fEnemy],01
  jne short @f
  mov [eax+214],0 //En1HP - diff A8
  mov [eax+2BC],0 //En2HP
  mov [eax+364],0 //En3HP
  mov [eax+40C],0 //En4HP
  cmp byte ptr [fEnInst],01 //setting all to dead results in instant win
  jne short @f
  mov [eax+20C],0 //En1 Alive
  mov [eax+2B4],0 //En2 Alive
  mov [eax+35C],0 //En3 Alive
  mov [eax+404],0 //En4 Alive
@@:
  jmp short continue

outside:
// Outside
  mov [bpc],98
  mov [bfg],0
  mov [fHPdef],0 //reset it, you prob. only want to be defeated 1 time each

continue:
//  pop ebx
  popf

code:
  mov eax,[eax+ecx*4]
  pop edi
  pop esi
  jmp return

AIOstats:
  jmp start
return:


[DISABLE]

AIOstats:
  db 8B 04 88 5F 5E

unregistersymbol(pPlayerHealth)
unregistersymbol(bfg)
unregistersymbol(ppl)
unregistersymbol(pen)
unregistersymbol(bpc)
unregistersymbol(fHP)
unregistersymbol(fHPdef)
unregistersymbol(fMP)
unregistersymbol(fEnemy)
unregistersymbol(fEnInst)

unregistersymbol(AIOstats)
dealloc(newmem)

// Player - old compare
//  cmp ecx,3
//  cmp ecx,31
// notes: base atk fe ECX=10, atk=8, at #1 the same but EDX, at #3 EBX
//   cmp [eax+ecx*4],[[pPlayerHealth]+38] - intended
//  cmp edx,[eax+38] // Luna 1P
//  cmp ecx,31 // Others 1P!?
//  cmp edx,02

{
// ORIGINAL CODE - INJECTION POINT: "Lilitales.exe"+34D2

"Lilitales.exe"+34B4: 83 44 24 10 04        -  add dword ptr [esp+10],04
"Lilitales.exe"+34B9: 0F AF C8              -  imul ecx,eax
"Lilitales.exe"+34BC: 01 4C 24 14           -  add [esp+14],ecx
"Lilitales.exe"+34C0: 46                    -  inc esi
"Lilitales.exe"+34C1: 8D 56 FF              -  lea edx,[esi-01]
"Lilitales.exe"+34C4: 83 C3 04              -  add ebx,04
"Lilitales.exe"+34C7: 3B D7                 -  cmp edx,edi
"Lilitales.exe"+34C9: 7C A7                 -  jl Lilitales.exe+3472
"Lilitales.exe"+34CB: 8B 45 00              -  mov eax,[ebp+00]
"Lilitales.exe"+34CE: 8B 4C 24 14           -  mov ecx,[esp+14]
// ---------- INJECTING HERE ----------
"Lilitales.exe"+34D2: 8B 04 88              -  mov eax,[eax+ecx*4]
"Lilitales.exe"+34D5: 5F                    -  pop edi
"Lilitales.exe"+34D6: 5E                    -  pop esi
// ---------- DONE INJECTING  ----------
"Lilitales.exe"+34D7: 5D                    -  pop ebp
"Lilitales.exe"+34D8: 5B                    -  pop ebx
"Lilitales.exe"+34D9: 83 C4 08              -  add esp,08
"Lilitales.exe"+34DC: C2 04 00              -  ret 0004
"Lilitales.exe"+34DF: 8B 55 00              -  mov edx,[ebp+00]
"Lilitales.exe"+34E2: 8B 04 82              -  mov eax,[edx+eax*4]
"Lilitales.exe"+34E5: 5F                    -  pop edi
"Lilitales.exe"+34E6: 5E                    -  pop esi
"Lilitales.exe"+34E7: 5D                    -  pop ebp
"Lilitales.exe"+34E8: 5B                    -  pop ebx
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>52</ID>
          <Description>"ALT+1 Keep HP"</Description>
          <LastState/>
          <Color>008000</Color>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[ENABLE]

fHP:
dd 01

[DISABLE]

fHP:
dd 0
</AssemblerScript>
          <Hotkeys>
            <Hotkey>
              <Action>Toggle Activation</Action>
              <Keys>
                <Key>18</Key>
                <Key>49</Key>
              </Keys>
              <ID>0</ID>
            </Hotkey>
          </Hotkeys>
        </CheatEntry>
        <CheatEntry>
          <ID>53</ID>
          <Description>"ALT+2 Keep MP"</Description>
          <LastState/>
          <Color>FF0000</Color>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[ENABLE]

fMP:
dd 01

[DISABLE]

fMP:
dd 0
</AssemblerScript>
          <Hotkeys>
            <Hotkey>
              <Action>Toggle Activation</Action>
              <Keys>
                <Key>18</Key>
                <Key>50</Key>
              </Keys>
              <ID>0</ID>
            </Hotkey>
          </Hotkeys>
        </CheatEntry>
        <CheatEntry>
          <ID>54</ID>
          <Description>"ALT+3 Zero Enemy HP / OHK"</Description>
          <LastState/>
          <Color>0000FF</Color>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[ENABLE]

fEnemy:
dd 01

[DISABLE]

fEnemy:
dd 0
</AssemblerScript>
          <Hotkeys>
            <Hotkey>
              <Action>Toggle Activation</Action>
              <Keys>
                <Key>18</Key>
                <Key>51</Key>
              </Keys>
              <ID>0</ID>
            </Hotkey>
          </Hotkeys>
          <CheatEntries>
            <CheatEntry>
              <ID>71</ID>
              <Description>"ALT+4 Instant Win"</Description>
              <LastState/>
              <VariableType>Auto Assembler Script</VariableType>
              <AssemblerScript>[ENABLE]

fEnInst:
dd 01

[DISABLE]

fEnInst:
dd 0
</AssemblerScript>
              <Hotkeys>
                <Hotkey>
                  <Action>Toggle Activation</Action>
                  <Keys>
                    <Key>18</Key>
                    <Key>52</Key>
                  </Keys>
                  <ID>0</ID>
                </Hotkey>
              </Hotkeys>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>69</ID>
          <Description>"ALT+5 Players defeated (for H-Scenes)"</Description>
          <DropDownList DisplayValueAsItem="1">0:No
1:Yes
</DropDownList>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF00FF</Color>
          <VariableType>Binary</VariableType>
          <BitStart>0</BitStart>
          <BitLength>1</BitLength>
          <ShowAsBinary>0</ShowAsBinary>
          <Address>fHPdef</Address>
          <Hotkeys>
            <Hotkey>
              <Action>Set Value</Action>
              <Keys>
                <Key>18</Key>
                <Key>53</Key>
              </Keys>
              <Value>1</Value>
              <ID>0</ID>
            </Hotkey>
            <Hotkey>
              <Action>Set Value</Action>
              <Keys>
                <Key>18</Key>
                <Key>55</Key>
              </Keys>
              <Value>0</Value>
              <ID>1</ID>
            </Hotkey>
          </Hotkeys>
        </CheatEntry>
        <CheatEntry>
          <ID>114</ID>
          <Description>"=================="</Description>
          <LastState Value="" RealAddress="00000000"/>
          <GroupHeader>1</GroupHeader>
        </CheatEntry>
        <CheatEntry>
          <ID>61</ID>
          <Description>"Select Player (Luna/Cless/Airi)"</Description>
          <Options moManualExpandCollapse="1"/>
          <DropDownList DisplayValueAsItem="1">0:P1 Luna
1:P2 Cless
2:P3 Airi
</DropDownList>
          <VariableType>4 Bytes</VariableType>
          <Address>ppl</Address>
          <CheatEntries>
            <CheatEntry>
              <ID>9</ID>
              <Description>"Player MaxHP"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>pPlayerHealth</Address>
              <Offsets>
                <Offset>getAddress("10+[ppl]*[bpc]+[bfg]")</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>7</ID>
              <Description>"Player HP"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>008000</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>pPlayerHealth</Address>
              <Offsets>
                <Offset>getAddress("14+[ppl]*[bpc]+[bfg]")</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>12</ID>
              <Description>"Player MaxMP"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>pPlayerHealth</Address>
              <Offsets>
                <Offset>getAddress("18+[ppl]*[bpc]+[bfg]")</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>8</ID>
              <Description>"Player MP"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <Color>FF0000</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>pPlayerHealth</Address>
              <Offsets>
                <Offset>getAddress("1c+[ppl]*[bpc]+[bfg]")</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>72</ID>
              <Description>"Armor (Outside Battle) save often and revert if game crashes"</Description>
              <DropDownList DisplayValueAsItem="1">0:Fully Equipped
1:Damaged Equipment
2:Tights Only
3:Ripped Tights
4:Naked
</DropDownList>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>4 Bytes</VariableType>
              <Address>pPlayerHealth</Address>
              <Offsets>
                <Offset>getAddress("5c+[ppl]*[bpc]+[bfg]")</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>18</ID>
              <Description>"Player Stats (BaseStats + EquipmentStats - work always)"</Description>
              <Options moHideChildren="1"/>
              <LastState Value="" RealAddress="00000000"/>
              <Color>4080FF</Color>
              <GroupHeader>1</GroupHeader>
              <CheatEntries>
                <CheatEntry>
                  <ID>11</ID>
                  <Description>"Atk"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>4 Bytes</VariableType>
                  <Address>pPlayerHealth</Address>
                  <Offsets>
                    <Offset>getAddress("20+[ppl]*[bpc]+[bfg]")</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>15</ID>
                  <Description>"Def"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>4 Bytes</VariableType>
                  <Address>pPlayerHealth</Address>
                  <Offsets>
                    <Offset>getAddress("24+[ppl]*[bpc]+[bfg]")</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>16</ID>
                  <Description>"M-Atk"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>4 Bytes</VariableType>
                  <Address>pPlayerHealth</Address>
                  <Offsets>
                    <Offset>getAddress("28+[ppl]*[bpc]+[bfg]")</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>20</ID>
                  <Description>"M-Def"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>4 Bytes</VariableType>
                  <Address>pPlayerHealth</Address>
                  <Offsets>
                    <Offset>getAddress("2C+[ppl]*[bpc]+[bfg]")</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>21</ID>
                  <Description>"Agi"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>4 Bytes</VariableType>
                  <Address>pPlayerHealth</Address>
                  <Offsets>
                    <Offset>getAddress("30+[ppl]*[bpc]+[bfg]")</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>22</ID>
                  <Description>"Luk"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>4 Bytes</VariableType>
                  <Address>pPlayerHealth</Address>
                  <Offsets>
                    <Offset>getAddress("34+[ppl]*[bpc]+[bfg]")</Offset>
                  </Offsets>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
            <CheatEntry>
              <ID>23</ID>
              <Description>"Player BaseStats (Stats Screen / Battle if neg status in effect)"</Description>
              <Options moHideChildren="1"/>
              <LastState Value="" RealAddress="00000000"/>
              <Color>4080FF</Color>
              <GroupHeader>1</GroupHeader>
              <CheatEntries>
                <CheatEntry>
                  <ID>60</ID>
                  <Description>"Level / Battle Agi"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>4 Bytes</VariableType>
                  <Address>pPlayerHealth</Address>
                  <Offsets>
                    <Offset>getAddress("0C+[ppl]*[bpc]")</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>24</ID>
                  <Description>"Base HP / Poison"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>4 Bytes</VariableType>
                  <Address>pPlayerHealth</Address>
                  <Offsets>
                    <Offset>getAddress("38+[ppl]*[bpc]+[bfg]")</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>25</ID>
                  <Description>"Base MP / Paralyzed"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>4 Bytes</VariableType>
                  <Address>pPlayerHealth</Address>
                  <Offsets>
                    <Offset>getAddress("3c+[ppl]*[bpc]+[bfg]")</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>26</ID>
                  <Description>"Base Atk / Confusion"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>4 Bytes</VariableType>
                  <Address>pPlayerHealth</Address>
                  <Offsets>
                    <Offset>getAddress("40+[ppl]*[bpc]+[bfg]")</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>27</ID>
                  <Description>"Base Def / Sleep"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>4 Bytes</VariableType>
                  <Address>pPlayerHealth</Address>
                  <Offsets>
                    <Offset>getAddress("44+[ppl]*[bpc]+[bfg]")</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>28</ID>
                  <Description>"Base M-Atk / ??? recover?"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>4 Bytes</VariableType>
                  <Address>pPlayerHealth</Address>
                  <Offsets>
                    <Offset>getAddress("48+[ppl]*[bpc]+[bfg]")</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>29</ID>
                  <Description>"Base M-Def / Silenced"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>4 Bytes</VariableType>
                  <Address>pPlayerHealth</Address>
                  <Offsets>
                    <Offset>getAddress("4c+[ppl]*[bpc]+[bfg]")</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>30</ID>
                  <Description>"Base Agi / Berserk"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>4 Bytes</VariableType>
                  <Address>pPlayerHealth</Address>
                  <Offsets>
                    <Offset>getAddress("50+[ppl]*[bpc]+[bfg]")</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>31</ID>
                  <Description>"Base Luk / Blind"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>4 Bytes</VariableType>
                  <Address>pPlayerHealth</Address>
                  <Offsets>
                    <Offset>getAddress("54+[ppl]*[bpc]+[bfg]")</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>121</ID>
                  <Description>"--ignore-- / Charmed"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>4 Bytes</VariableType>
                  <Address>pPlayerHealth</Address>
                  <Offsets>
                    <Offset>getAddress("58+[ppl]*[bpc]+[bfg]")</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>122</ID>
                  <Description>"Armor / ????"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>4 Bytes</VariableType>
                  <Address>pPlayerHealth</Address>
                  <Offsets>
                    <Offset>getAddress("5C+[ppl]*[bpc]+[bfg]")</Offset>
                  </Offsets>
                </CheatEntry>
                <CheatEntry>
                  <ID>123</ID>
                  <Description>"--ignore-- / ????"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>4 Bytes</VariableType>
                  <Address>pPlayerHealth</Address>
                  <Offsets>
                    <Offset>getAddress("60+[ppl]*[bpc]+[bfg]")</Offset>
                  </Offsets>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>63</ID>
          <Description>"Select Enemy (Stats during battle)"</Description>
          <Options moManualExpandCollapse="1"/>
          <DropDownList DisplayValueAsItem="1">0:Enemy 1
1:Enemy 2
2:Enemy 3
3:Enemy 4
</DropDownList>
          <Color>0000FF</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>pen</Address>
          <CheatEntries>
            <CheatEntry>
              <ID>32</ID>
              <Description>"Enemy Battle Agi"</Description>
              <VariableType>4 Bytes</VariableType>
              <Address>pPlayerHealth</Address>
              <Offsets>
                <Offset>getAddress("204+[pen]*A8")</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>36</ID>
              <Description>"Enemy MaxHP"</Description>
              <VariableType>4 Bytes</VariableType>
              <Address>pPlayerHealth</Address>
              <Offsets>
                <Offset>getAddress("210+[pen]*A8")</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>37</ID>
              <Description>"Enemy HP"</Description>
              <Color>008000</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>pPlayerHealth</Address>
              <Offsets>
                <Offset>getAddress("214+[pen]*A8")</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>35</ID>
              <Description>"Enemy MaxMP"</Description>
              <VariableType>4 Bytes</VariableType>
              <Address>pPlayerHealth</Address>
              <Offsets>
                <Offset>getAddress("218+[pen]*A8")</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>38</ID>
              <Description>"Enemy MP"</Description>
              <Color>FF0000</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>pPlayerHealth</Address>
              <Offsets>
                <Offset>getAddress("21c+[pen]*A8")</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>64</ID>
              <Description>"Enemy Atk"</Description>
              <VariableType>4 Bytes</VariableType>
              <Address>pPlayerHealth</Address>
              <Offsets>
                <Offset>getAddress("220+[pen]*A8")</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>65</ID>
              <Description>"Enemy Def"</Description>
              <VariableType>4 Bytes</VariableType>
              <Address>pPlayerHealth</Address>
              <Offsets>
                <Offset>getAddress("224+[pen]*A8")</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>66</ID>
              <Description>"Enemy M-Atk"</Description>
              <VariableType>4 Bytes</VariableType>
              <Address>pPlayerHealth</Address>
              <Offsets>
                <Offset>getAddress("228+[pen]*A8")</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>67</ID>
              <Description>"Enemy M-Def"</Description>
              <VariableType>4 Bytes</VariableType>
              <Address>pPlayerHealth</Address>
              <Offsets>
                <Offset>getAddress("22C+[pen]*A8")</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>40</ID>
              <Description>"Enemy Agi"</Description>
              <VariableType>4 Bytes</VariableType>
              <Address>pPlayerHealth</Address>
              <Offsets>
                <Offset>getAddress("230+[pen]*A8")</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>39</ID>
              <Description>"Enemy Luk"</Description>
              <VariableType>4 Bytes</VariableType>
              <Address>pPlayerHealth</Address>
              <Offsets>
                <Offset>getAddress("234+[pen]*A8")</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>48</ID>
              <Description>"Enemy2 HP"</Description>
              <Color>008000</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>pPlayerHealth</Address>
              <Offsets>
                <Offset>2bc</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>50</ID>
              <Description>"Enemy3 HP"</Description>
              <Color>008000</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>pPlayerHealth</Address>
              <Offsets>
                <Offset>364</Offset>
              </Offsets>
            </CheatEntry>
            <CheatEntry>
              <ID>51</ID>
              <Description>"Enemy4 HP"</Description>
              <Color>008000</Color>
              <VariableType>4 Bytes</VariableType>
              <Address>pPlayerHealth</Address>
              <Offsets>
                <Offset>40c</Offset>
              </Offsets>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>19</ID>
      <Description>"Information"</Description>
      <Options moHideChildren="1"/>
      <LastState Value="" RealAddress="00000000"/>
      <Color>C0C0C0</Color>
      <GroupHeader>1</GroupHeader>
      <CheatEntries>
        <CheatEntry>
          <ID>70</ID>
          <Description>"Players defeated (for H-Scenes)"</Description>
          <LastState/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[ENABLE]

fHPdef:
dd 01

[DISABLE]

fHPdef:
dd 0
</AssemblerScript>
          <Hotkeys>
            <Hotkey>
              <Action>Toggle Activation</Action>
              <Keys>
                <Key>18</Key>
                <Key>56</Key>
              </Keys>
              <ID>0</ID>
            </Hotkey>
          </Hotkeys>
        </CheatEntry>
        <CheatEntry>
          <ID>10</ID>
          <Description>"Base - Players/Enemys"</Description>
          <VariableType>4 Bytes</VariableType>
          <Address>pPlayerHealth</Address>
          <Offsets>
            <Offset>0</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>86</ID>
          <Description>"Base - Unlocks"</Description>
          <VariableType>4 Bytes</VariableType>
          <Address>pUnlocks</Address>
          <Offsets>
            <Offset>0</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>13</ID>
          <Description>"OLD compare"</Description>
          <Color>FF0080</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>pPlayerHealth</Address>
          <Offsets>
            <Offset>0C</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>14</ID>
          <Description>"Battleflag"</Description>
          <Color>FF0080</Color>
          <VariableType>Byte</VariableType>
          <Address>bfg</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>124</ID>
          <Description>"Ignore Town Time changes (disable before dance/prost)"</Description>
          <LastState/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[ENABLE]
aobscanmodule(aobDisableTimeSpent,Lilitales.exe,01 06 E8 25 24 FD FF) // should be unique
registersymbol(aobDisableTimeSpent)


aobDisableTimeSpent:
  nop 2



[DISABLE]

aobDisableTimeSpent:
  db 01 06 //E8 25 24 FD FF

unregistersymbol(aobDisableTimeSpent)


{
Note: yeah - quick and dirty disable on a few writes only and not crashproof

// ORIGINAL CODE - INJECTION POINT: Lilitales.AllocDIB+8274

Lilitales.AllocDIB+824B: 3B F9              - cmp edi,ecx
Lilitales.AllocDIB+824D: 7E 12              - jle Lilitales.AllocDIB+8261
Lilitales.AllocDIB+824F: 68 9C 58 48 00     - push Lilitales.exe+8589C
Lilitales.AllocDIB+8254: 68 C0 58 48 00     - push Lilitales.exe+858C0
Lilitales.AllocDIB+8259: E8 82 B0 02 00     - call Lilitales.exe+5D230
Lilitales.AllocDIB+825E: 83 C4 08           - add esp,08
Lilitales.AllocDIB+8261: E8 EA FB FC FF     - call Lilitales.exe+1DA0
Lilitales.AllocDIB+8266: 8B 15 50 85 4F 00  - mov edx,[Lilitales.exe+F8550]
Lilitales.AllocDIB+826C: 8D 34 BA           - lea esi,[edx+edi*4]
Lilitales.AllocDIB+826F: E8 7C 5C FF FF     - call Lilitales.GetSpriteDIB+3AB0
// ---------- INJECTING HERE ----------
Lilitales.AllocDIB+8274: 01 06              - add [esi],eax
// ---------- DONE INJECTING  ----------
Lilitales.AllocDIB+8276: E8 25 24 FD FF     - call Lilitales.exe+45F0
Lilitales.AllocDIB+827B: E9 FB 1E 01 00     - jmp Lilitales.exe+440CB
Lilitales.AllocDIB+8280: 3C 24              - cmp al,24
Lilitales.AllocDIB+8282: 74 12              - je Lilitales.AllocDIB+8296
Lilitales.AllocDIB+8284: 68 C8 58 48 00     - push Lilitales.exe+858C8
Lilitales.AllocDIB+8289: 68 EC 58 48 00     - push Lilitales.exe+858EC
Lilitales.AllocDIB+828E: E8 4D B0 02 00     - call Lilitales.exe+5D230
Lilitales.AllocDIB+8293: 83 C4 08           - add esp,08
Lilitales.AllocDIB+8296: FF 05 A8 70 4F 00  - inc [Lilitales.exe+F70A8]
Lilitales.AllocDIB+829C: E8 4F 0A 03 00     - call Lilitales.exe+62C40
}
</AssemblerScript>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
  <UserdefinedSymbols/>
  <Comments>Lilitales 1.02-.04 Cheat Table by Nironan
.
Normally you'd want to enable "Generic Stats", "Unlocks" (may Encounters) and "Battlestats", then all "real" scripting has been done already. "Compact IU for CE" is optional (game independent), it provides a larger interface, specially usefull if you want to check pointers/generally much CE-table entries. Other "scripts" just activate parts/flags.
The game makes mostly use of 3 tables, 1 in battle, 1 outside, one for stats &amp; items.
.
The table for now features:
- Aobscan and reassamble, rdy for any updates
- Scripts for HP/MP. Since some enemies base their attack not only on their stats but also yours like maxhp, setting it too high and then reverting things could get funky so I decided to set current HP = Max HP. (Note: also revives if activated in battle after 1 player defeated)
- Also a script to get all (good) players instantly defeated in case you want to reach H-Scenes without extra needs of items on each player. You can leave "Keep HP" on, this takes priority. Also it's been reset after use, you prob. would want to get defeated just 1 time. Though in exchange you can only activate it in battle. I wouldn't know why, but if you don't want that behavior comment ("//") line "mov [fHPdef],0" in "Battlestats"-script. To deactivate you may manually set it to "No" (Alt+7), or use the script in "Information" (Alt+8).
- OHK (A little but minor glitch - see below) - also with the ability to instantly win for those lazzy guys.
- Set Items to a min value you can define (default 2, max 5 as per game). Why def 2? So you'll know when you got 
- Also unlock not yet owned items
- Unlock skills, weapons and accessories. All at once (not recommended on first playthrough), or an individual option (at least, skills+weapons. Was enough todo to ensure those, also would make a too long drop-down)
- Pointers to ... even way more than before. This does include 7 generic (??, money, day, time of day, story progress, dance, lust worm prog.), +18 known,5 unknown counters, 24 skills/weapons, as well as player (3x38?) and enemy (4*11) stats. Click "Select Player/Enemy" (+may "Player (Base)Stats"), by default Player/Enemy 1 are selected. Choose from right drop down menu to switch.
.
Known Issues/Limitations/Notes:
- OHK - if you use it while performing a counterspell, it would break after the first counter. Dunno if I'll look into. (-- Prev. it at least meant that with more enemys than party members you're going to take more than 1 round (until you have Airi in the party - Kabus) -- currently with alive being set too, you instantly win, just do any action - imo good enough).
- If you'd like to see the available addresses: 2xCTRL+D,CTRL+A, @mytable expand "Information", @dissect manually enter the "Base - Players/Enemys" address during battle, as well as for stats screen into structure dissect. CTRL+N, enter. Within 98/A8 offset you will see all stats. You can also add them to the table, click "Add Address Manually", click Pointer. Take a look into the other addresses if you are unsure what to exactly fill in there. Beaware tough of the offsite of each table (like playerstats do have bfg, except Level as the offset did start after, while enemy stats are just important in battle, thus "direct" offset.)
- "Time of day" you can simply click the left checkbox freezing the value. Other values like Story Progress are untested if changing them could break things at some point so at least save before you try out. Esp. at start setting her to naked can lead to crash if she's not supposed to be naked there (like vs sandworm). Movement options I only found accid. but idk just visuals?
.
Upcomming:
Nothing. I mean the unlock-address has many things to offer (like above but with "Base - Unlocks"). But it's about finding out what's behind that value and I'm rly through now / too much to check. F.e. by mistake after adding the passive abill. I had "cmp esi,1CA"-&gt;"ja short unlockit" so everything above 1CA(*4) would be set to 1, and instantly several unwanted features happened (replay was activated - so no loading/saving, the disguise equip would be forced as well as another set of clothes (in a visual glitch), the scene to wander around naked on the streets would happen (with disguise and full equip), landing in your room (with my testsave on day 1 - Luna would not even know about it) unable to do anything anymore. The passive skills would look a□kwa□rd□. (Had to disable script, back to title and load save).
Further besides the OHK Limitation all intended features (and more) are there.
If you want s.t. else please say so (PM please), if it's rly simple and I can motivate I may add it.
</Comments>
</CheatTable>
