<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="42">
  <CheatEntries>
    <CheatEntry>
      <ID>79</ID>
      <Description>"==Compact Mode=="</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
//  https://forum.cheatengine.org/viewtopic.php?t=570055
//  MGR.INZ.PLAYER
LuaCall(function cycleFullCompact(sender,force) local state = not(compactmenuitem.Caption == 'Compact View Mode'); if force~=nil then state = not force end; compactmenuitem.Caption = state and 'Compact View Mode' or 'Full View Mode'; getMainForm().Splitter1.Visible = state; getMainForm().Panel4.Visible    = state; getMainForm().Panel5.Visible    = state; end; function addCompactMenu() if compactmenualreadyexists then return end; local parent = getMainForm().Menu.Items; compactmenuitem = createMenuItem(parent); parent.add(compactmenuitem); compactmenuitem.Caption = 'Compact View Mode'; compactmenuitem.OnClick = cycleFullCompact; compactmenualreadyexists = 'yes'; end; addCompactMenu(); cycleFullCompact(nil,true))

[DISABLE]
LuaCall(cycleFullCompact(nil,false))
</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>78</ID>
      <Description>"Player Structure"</Description>
      <Options moHideChildren="1"/>
      <Color>4080FF</Color>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : Lionheart.exe
  Version: 1.1 Build 3021
  Date   : 2022-08-14
  Author : justNOPing - OpenCheatTables.com

  Info: Gets mana, sp, level, exp and gold (merged script)
}

[ENABLE]
aobscanmodule(sp,Lionheart.exe,8B 41 4C C3 90) // The rest
aobscanmodule(getgold,Lionheart.exe,D9 41 1C C3 90) // Gold
alloc(newmem1,$30)
alloc(newmem2,$20)
label(return1 getsp return2 gold)
registersymbol(getsp gold)

newmem1:
  mov eax,[ecx+4C]
  mov [getsp],ecx //Copy ECX value to user-defined symbol
  ret
  nop
  jmp return1

getsp:
dd 00

newmem2:
  fld dword ptr [ecx+1C]
  mov [gold],ecx //Copy ECX value to user-defined symbol
  ret
  nop
  jmp return2

gold:
dd 00

sp:
  jmp newmem1
return1:
registersymbol(sp)

getgold:
  jmp newmem2
return2:
registersymbol(getgold)

[DISABLE]
sp:
  db 8B 41 4C C3 90

getgold:
  db D9 41 1C C3 90

unregistersymbol(*)
dealloc(*)

{
// ORIGINAL CODE - INJECTION POINT: Lionheart.exe+40CF0

Lionheart.exe+40CE6: 5E        - pop esi
Lionheart.exe+40CE7: C3        - ret
Lionheart.exe+40CE8: 90        - nop
Lionheart.exe+40CE9: 90        - nop
Lionheart.exe+40CEA: 90        - nop
Lionheart.exe+40CEB: 90        - nop
Lionheart.exe+40CEC: 90        - nop
Lionheart.exe+40CED: 90        - nop
Lionheart.exe+40CEE: 90        - nop
Lionheart.exe+40CEF: 90        - nop
// ---------- INJECTING HERE ----------
Lionheart.exe+40CF0: 8B 41 4C  - mov eax,[ecx+4C]
// ---------- DONE INJECTING  ----------
Lionheart.exe+40CF3: C3        - ret
Lionheart.exe+40CF4: 90        - nop
Lionheart.exe+40CF5: 90        - nop
Lionheart.exe+40CF6: 90        - nop
Lionheart.exe+40CF7: 90        - nop
Lionheart.exe+40CF8: 90        - nop
Lionheart.exe+40CF9: 90        - nop
Lionheart.exe+40CFA: 90        - nop
Lionheart.exe+40CFB: 90        - nop
Lionheart.exe+40CFC: 90        - nop
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>42</ID>
          <Description>"Experience"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>4 Bytes</VariableType>
          <Address>[getsp]+48</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>41</ID>
          <Description>"Level"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>4 Bytes</VariableType>
          <Address>[getsp]+50</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>40</ID>
          <Description>"Mana"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Float</VariableType>
          <Address>[getsp]+30</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>39</ID>
          <Description>"Skill Points"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>4 Bytes</VariableType>
          <Address>[getsp]+4c</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>36</ID>
          <Description>"Gold"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Float</VariableType>
          <Address>[gold]+1c</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>48</ID>
          <Description>"Skills "</Description>
          <Options moHideChildren="1"/>
          <Color>00FF00</Color>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : Lionheart.exe
  Version: 1.1 Build 3021
  Date   : 2022-08-15
  Author : justNOPing - OpenCheatTables.com

Info: Get Skills structure
}

[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat

 
 
aobscanmodule(skills,Lionheart.exe,D9 04 8A D9 5C 24 18)
alloc(newmem,$50)
label(return skillsedx)
registersymbol(skillsedx)

newmem:
  fld dword ptr [edx+ecx*4]
  fstp dword ptr [esp+18]
  mov [skillsedx],edx
  jmp return

skillsedx:
dd 00

skills:
  jmp newmem
  nop 2
return:
registersymbol(skills)

[DISABLE]
skills:
db D9 04 8A D9 5C 24 18

unregistersymbol(*)
dealloc(*)

{
// ORIGINAL CODE - INJECTION POINT: Lionheart.exe+42B26

Lionheart.exe+42B0D: 5B              - pop ebx
Lionheart.exe+42B0E: D9 44 24 18     - fld dword ptr [esp+18]
Lionheart.exe+42B12: E8 A1 EA 24 00  - call Lionheart.exe+2915B8
Lionheart.exe+42B17: 5F              - pop edi
Lionheart.exe+42B18: 5E              - pop esi
Lionheart.exe+42B19: 5D              - pop ebp
Lionheart.exe+42B1A: 83 C4 08        - add esp,08
Lionheart.exe+42B1D: C2 04 00        - ret 0004
Lionheart.exe+42B20: 8B 55 54        - mov edx,[ebp+54]
Lionheart.exe+42B23: 8D 0C 7F        - lea ecx,[edi+edi*2]
// ---------- INJECTING HERE ----------
Lionheart.exe+42B26: D9 04 8A        - fld dword ptr [edx+ecx*4]
// ---------- DONE INJECTING  ----------
Lionheart.exe+42B29: D9 5C 24 18     - fstp dword ptr [esp+18]
Lionheart.exe+42B2D: D9 44 24 18     - fld dword ptr [esp+18]
Lionheart.exe+42B31: DB 5C 24 10     - fistp dword ptr [esp+10]
Lionheart.exe+42B35: 8B 44 24 10     - mov eax,[esp+10]
Lionheart.exe+42B39: 5F              - pop edi
Lionheart.exe+42B3A: 5E              - pop esi
Lionheart.exe+42B3B: 5D              - pop ebp
Lionheart.exe+42B3C: 83 C4 08        - add esp,08
Lionheart.exe+42B3F: C2 04 00        - ret 0004
Lionheart.exe+42B42: 90              - nop 
}
</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>60</ID>
              <Description>"Thieving"</Description>
              <Options moHideChildren="1"/>
              <Color>005353</Color>
              <GroupHeader>1</GroupHeader>
              <CheatEntries>
                <CheatEntry>
                  <ID>59</ID>
                  <Description>"Find Traps"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>Float</VariableType>
                  <Address>[skillsedx]+408</Address>
                </CheatEntry>
                <CheatEntry>
                  <ID>58</ID>
                  <Description>"Lockpicking"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>Float</VariableType>
                  <Address>[skillsedx]+414</Address>
                </CheatEntry>
                <CheatEntry>
                  <ID>57</ID>
                  <Description>"Sneak"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>Float</VariableType>
                  <Address>[skillsedx]+420</Address>
                </CheatEntry>
                <CheatEntry>
                  <ID>56</ID>
                  <Description>"Diplomacy"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>Float</VariableType>
                  <Address>[skillsedx]+3fc</Address>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
            <CheatEntry>
              <ID>61</ID>
              <Description>"Fighting"</Description>
              <Options moHideChildren="1"/>
              <Color>1717FF</Color>
              <GroupHeader>1</GroupHeader>
              <CheatEntries>
                <CheatEntry>
                  <ID>51</ID>
                  <Description>"One-Handed Melee"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>Float</VariableType>
                  <Address>[skillsedx]+6c</Address>
                </CheatEntry>
                <CheatEntry>
                  <ID>52</ID>
                  <Description>"Ranged Weapons"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>Float</VariableType>
                  <Address>[skillsedx]+78</Address>
                </CheatEntry>
                <CheatEntry>
                  <ID>53</ID>
                  <Description>"Unarmed"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>Float</VariableType>
                  <Address>[skillsedx]+90</Address>
                </CheatEntry>
                <CheatEntry>
                  <ID>54</ID>
                  <Description>"Two-Hand Melee"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>Float</VariableType>
                  <Address>[skillsedx]+84</Address>
                </CheatEntry>
                <CheatEntry>
                  <ID>55</ID>
                  <Description>"Evasion"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>Float</VariableType>
                  <Address>[skillsedx]+60</Address>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
            <CheatEntry>
              <ID>67</ID>
              <Description>"Divine Magic"</Description>
              <Options moHideChildren="1"/>
              <Color>FF4FA7</Color>
              <GroupHeader>1</GroupHeader>
              <CheatEntries>
                <CheatEntry>
                  <ID>62</ID>
                  <Description>"Divine Favor"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>Float</VariableType>
                  <Address>[skillsedx]+138</Address>
                </CheatEntry>
                <CheatEntry>
                  <ID>64</ID>
                  <Description>"Fortitude"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>Float</VariableType>
                  <Address>[skillsedx]+144</Address>
                </CheatEntry>
                <CheatEntry>
                  <ID>65</ID>
                  <Description>"Smite"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>Float</VariableType>
                  <Address>[skillsedx]+1A4</Address>
                </CheatEntry>
                <CheatEntry>
                  <ID>66</ID>
                  <Description>"Protective"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>Float</VariableType>
                  <Address>[skillsedx]+9c</Address>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
            <CheatEntry>
              <ID>72</ID>
              <Description>"Thought Magic"</Description>
              <Options moHideChildren="1"/>
              <Color>CA0000</Color>
              <GroupHeader>1</GroupHeader>
              <CheatEntries>
                <CheatEntry>
                  <ID>68</ID>
                  <Description>"Electrical"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>Float</VariableType>
                  <Address>[skillsedx]+1f8</Address>
                </CheatEntry>
                <CheatEntry>
                  <ID>69</ID>
                  <Description>"Fire"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>Float</VariableType>
                  <Address>[skillsedx]+204</Address>
                </CheatEntry>
                <CheatEntry>
                  <ID>70</ID>
                  <Description>"Ice"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>Float</VariableType>
                  <Address>[skillsedx]+210</Address>
                </CheatEntry>
                <CheatEntry>
                  <ID>71</ID>
                  <Description>"Protective"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>Float</VariableType>
                  <Address>[skillsedx]+1b0</Address>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
            <CheatEntry>
              <ID>77</ID>
              <Description>"Tribal Magic"</Description>
              <Options moHideChildren="1"/>
              <Color>00AA00</Color>
              <GroupHeader>1</GroupHeader>
              <CheatEntries>
                <CheatEntry>
                  <ID>73</ID>
                  <Description>"Domination"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>Float</VariableType>
                  <Address>[skillsedx]+330</Address>
                </CheatEntry>
                <CheatEntry>
                  <ID>75</ID>
                  <Description>"Necromancy"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>Float</VariableType>
                  <Address>[skillsedx]+3cc</Address>
                </CheatEntry>
                <CheatEntry>
                  <ID>76</ID>
                  <Description>"Nature's Fury"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>Float</VariableType>
                  <Address>[skillsedx]+3d8</Address>
                </CheatEntry>
                <CheatEntry>
                  <ID>74</ID>
                  <Description>"Protective"</Description>
                  <ShowAsSigned>0</ShowAsSigned>
                  <VariableType>Float</VariableType>
                  <Address>[skillsedx]+2d0</Address>
                </CheatEntry>
              </CheatEntries>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>27</ID>
      <Description>"Unlimited HP"</Description>
      <Color>7D7DFF</Color>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : Lionheart.exe
  Version: 1.1 Build 3021
  Date   : 2022-08-14
  Author : justNOPing - OpenCheatTables.com

Info: Set HP to its max value (in this scenario - set damage taken to 0)
}

[ENABLE]
aobscanmodule(maxhp,Lionheart.exe,D9 9E 80 00 00 00 85) // should be unique
alloc(newmem,$100)
label(code)
label(return)

newmem:
cmp [esi+08],0                       //Check if Enemy
je code                              //if ESI+08 = 0 then jump to the original code instead
mov [esi+00000080],(float)0          //Write 0 float (damage taken) to ESI+80]
jmp return

code:
  fstp dword ptr [esi+00000080]      //original opcode
  jmp return

maxhp:
  jmp newmem
  nop
return:
registersymbol(maxhp)

[DISABLE]
//code from here till the end of the code will be used to disable the cheat
maxhp:
  db D9 9E 80 00 00 00

unregistersymbol(maxhp)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Lionheart.exe+136B54

Lionheart.exe+136B36: D8 64 24 10              - fsub dword ptr [esp+10]
Lionheart.exe+136B3A: D9 54 24 10              - fst dword ptr [esp+10]
Lionheart.exe+136B3E: D8 D9                    - fcomp st(0),st(1)
Lionheart.exe+136B40: DF E0                    - fnstsw ax
Lionheart.exe+136B42: 25 00 41 00 00           - and eax,00004100
Lionheart.exe+136B47: 75 06                    - jne Lionheart.exe+136B4F
Lionheart.exe+136B49: DD D8                    - fstp st(0)
Lionheart.exe+136B4B: D9 44 24 10              - fld dword ptr [esp+10]
Lionheart.exe+136B4F: 8B 46 40                 - mov eax,[esi+40]
Lionheart.exe+136B52: 33 FF                    - xor edi,edi
// ---------- INJECTING HERE ----------
Lionheart.exe+136B54: D9 9E 80 00 00 00        - fstp dword ptr [esi+00000080]
// ---------- DONE INJECTING  ----------
Lionheart.exe+136B5A: 85 C0                    - test eax,eax
Lionheart.exe+136B5C: C7 44 24 10 00 00 00 00  - mov [esp+10],00000000
Lionheart.exe+136B64: 76 28                    - jna Lionheart.exe+136B8E
Lionheart.exe+136B66: 57                       - push edi
Lionheart.exe+136B67: 8B CE                    - mov ecx,esi
Lionheart.exe+136B69: E8 52 2A 08 00           - call Lionheart.exe+1B95C0
Lionheart.exe+136B6E: 85 C0                    - test eax,eax
Lionheart.exe+136B70: 74 14                    - je Lionheart.exe+136B86
Lionheart.exe+136B72: 8B 10                    - mov edx,[eax]
Lionheart.exe+136B74: 8D 4C 24 10              - lea ecx,[esp+10]
}
</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>28</ID>
      <Description>"Unlimited Mana"</Description>
      <Color>FF8080</Color>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : LIONHEART
  Version: 1.1 Build 3021
  Date   : 2022-08-14
  Author : justNOPing - OpenCheatTables.com
  Info: Mana doesn't get decreased. Nops the mana decrease OPCODE
}
define(address,"Lionheart.exe"+40BE3) //credits to Marcus101RR for this neat future!
define(bytes,D8 64 24 04 D9 59 30)

[ENABLE]
alloc(newmem,30)
label(returnhere)
label(exit)

newmem:
//fsub dword ptr [esp+04]
fstp dword ptr [ecx+30]

exit:
jmp returnhere

address:
jmp newmem
nop 2
returnhere:

[DISABLE]
dealloc(newmem)
address:
db bytes
//fsub dword ptr [esp+04]
//fstp dword ptr [ecx+30]
//Alt: db D8 64 24 04 D9 59 30
</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>83</ID>
      <Description>"Damage Multiplier"</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : Lionheart.exe
  Version: 1.1 Build 3021
  Date   : 2022-08-16
  Author : Partizan
  Commented by: justNOPing - OpenCheatTables.com
Multiplies the damage dealt to enemies
}

[ENABLE]
aobscanmodule(damagex,Lionheart.exe,D9 44 24 34 D8 86 80 00 00 00) // should be unique
alloc(newmem,$100)
label(return)
label(DmgMltp)
registersymbol(DmgMltp)
registersymbol(damagex)

newmem:
  fld dword ptr [esp+34]
  cmp [esi+24],0  //Check if enemy. 0 = player
  je short @f     //If player, don't multiply the value and jump to the nearest label
  fmul dword ptr [DmgMltp]
@@:
  fadd dword ptr [esi+00000080]
  jmp return

DmgMltp:
dd (float)1

damagex:
  jmp newmem
  nop 5
return:

[DISABLE]
damagex:
  db D9 44 24 34 D8 86 80 00 00 00

unregistersymbol(*)
dealloc(*)

{
// ORIGINAL CODE - INJECTION POINT: Lionheart.exe+136E97

Lionheart.exe+136E77: B9 48 6B 7E 00     - mov ecx,Lionheart.exe+3E6B48
Lionheart.exe+136E7C: 52                 - push edx
Lionheart.exe+136E7D: E8 BE 78 09 00     - call Lionheart.exe+1CE740
Lionheart.exe+136E82: 85 C0              - test eax,eax
Lionheart.exe+136E84: 74 0B              - je Lionheart.exe+136E91
Lionheart.exe+136E86: D9 40 20           - fld dword ptr [eax+20]
Lionheart.exe+136E89: EB 0C              - jmp Lionheart.exe+136E97
Lionheart.exe+136E8B: D9 44 24 40        - fld dword ptr [esp+40]
Lionheart.exe+136E8F: EB 06              - jmp Lionheart.exe+136E97
Lionheart.exe+136E91: D9 05 AC 45 6B 00  - fld dword ptr [Lionheart.exe+2B45AC]
// ---------- INJECTING HERE ----------
Lionheart.exe+136E97: D9 44 24 34        - fld dword ptr [esp+34]
// ---------- DONE INJECTING  ----------
Lionheart.exe+136E9B: D8 86 80 00 00 00  - fadd dword ptr [esi+00000080]
Lionheart.exe+136EA1: D9 54 24 40        - fst dword ptr [esp+40]
Lionheart.exe+136EA5: D8 D9              - fcomp st(0),st(1)
Lionheart.exe+136EA7: DF E0              - fnstsw ax
Lionheart.exe+136EA9: F6 C4 05           - test ah,05
Lionheart.exe+136EAC: 7A 06              - jp Lionheart.exe+136EB4
Lionheart.exe+136EAE: DD D8              - fstp st(0)
Lionheart.exe+136EB0: D9 44 24 40        - fld dword ptr [esp+40]
Lionheart.exe+136EB4: 8B 46 78           - mov eax,[esi+78]
Lionheart.exe+136EB7: B9 48 6B 7E 00     - mov ecx,Lionheart.exe+3E6B48
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>85</ID>
          <Description>"Multiplier"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Float</VariableType>
          <Address>DmgMltp</Address>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>88</ID>
      <Description>"Ignore Weight"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : LIONHEART
  Version: 1.1 Build 3021
  Date   : 2022-08-14
  Author : Partizan
  Commented by: justNOPing - OpenCheatTables.com

  Info: Ignores weight that our character carries
}
[ENABLE]
aobscanmodule(ignoreweight,Lionheart.exe,74 ? 8B ? ? 8B ? ? 03 ? 89 ? ? 83 ? ? 4E 75 ? DB)
registersymbol(ignoreweight)
ignoreweight:
db EB 0B     //EB is basically regular jmp with no conditions, we use it instead the je

[DISABLE]
ignoreweight:
db 74 0B     //74 is JE, it's a conditional jump which we don't need in this scenario
unregistersymbol(ignoreweight)
{
// ORIGINAL CODE - INJECTION POINT: Lionheart.exe+2B82E
Lionheart.exe+2B811: 75 2E                 - jne Lionheart.exe+2B841
Lionheart.exe+2B813: 8B 48 24              - mov ecx,[eax+24]
Lionheart.exe+2B816: C6 40 34 01           - mov byte ptr [eax+34],01
Lionheart.exe+2B81A: 85 C9                 - test ecx,ecx
Lionheart.exe+2B81C: C7 40 30 00 00 00 00  - mov [eax+30],00000000
Lionheart.exe+2B823: 76 1C                 - jna Lionheart.exe+2B841
Lionheart.exe+2B825: 8B 50 20              - mov edx,[eax+20]
Lionheart.exe+2B828: 8B F1                 - mov esi,ecx
Lionheart.exe+2B82A: 8B 0A                 - mov ecx,[edx]
Lionheart.exe+2B82C: 85 C9                 - test ecx,ecx
// ---------- INJECTING HERE ----------
Lionheart.exe+2B82E: 74 0B                 - je Lionheart.exe+2B83B
// ---------- DONE INJECTING  ----------
Lionheart.exe+2B830: 8B 49 1C              - mov ecx,[ecx+1C]
Lionheart.exe+2B833: 8B 78 30              - mov edi,[eax+30]
Lionheart.exe+2B836: 03 F9                 - add edi,ecx
Lionheart.exe+2B838: 89 78 30              - mov [eax+30],edi
Lionheart.exe+2B83B: 83 C2 04              - add edx,04
Lionheart.exe+2B83E: 4E                    - dec esi
Lionheart.exe+2B83F: 75 E9                 - jne Lionheart.exe+2B82A
Lionheart.exe+2B841: DB 40 30              - fild dword ptr [eax+30]
Lionheart.exe+2B844: 8B 54 24 10           - mov edx,[esp+10]
Lionheart.exe+2B848: 5F                    - pop edi
}
</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>23</ID>
      <Description>"One Hit Kill"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : LIONHEART
  Version: 1.1 Build 3021
  Date   : 2022-08-14
  Author : justNOPing - OpenCheatTables.com

  Info: One Hit Kill (this one might be buggy)
}

[ENABLE]
//code from here to '[DISABLE]' will be used to enable the cheat

 
 
aobscanmodule(ohktest,Lionheart.exe,8B 91 80 00 00 00 89) // should be unique
alloc(newmem,$100)

label(code)
label(return)

newmem:
cmp [ecx+08],0 //check if enemy
je code //if ecx+08 = 0 - jump to the OHK code
mov edx,[ecx+00000080] //original code
jmp return

code:
  mov [ecx+00000080],(float)5000.0 //Apply 5000 damage, write the new value to ECX+80
  mov edx,[ecx+00000080] //EDX gets the new value (5000 float)
  jmp return

ohktest:
  jmp newmem
  nop
return:
registersymbol(ohktest)

[DISABLE]
ohktest:
  db 8B 91 80 00 00 00

unregistersymbol(ohktest)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Lionheart.exe+9BF10

Lionheart.exe+9BEF3: 75 02              - jne Lionheart.exe+9BEF7
Lionheart.exe+9BEF5: 32 DB              - xor bl,bl
Lionheart.exe+9BEF7: 8D 7E 28           - lea edi,[esi+28]
Lionheart.exe+9BEFA: 8B CF              - mov ecx,edi
Lionheart.exe+9BEFC: E8 6F 1C 10 00     - call Lionheart.exe+19DB70
Lionheart.exe+9BF01: 84 C0              - test al,al
Lionheart.exe+9BF03: 75 08              - jne Lionheart.exe+9BF0D
Lionheart.exe+9BF05: 84 DB              - test bl,bl
Lionheart.exe+9BF07: 0F 84 1A 03 00 00  - je Lionheart.exe+9C227
Lionheart.exe+9BF0D: 8B 4E 7C           - mov ecx,[esi+7C]
// ---------- INJECTING HERE ----------
Lionheart.exe+9BF10: 8B 91 80 00 00 00  - mov edx,[ecx+00000080]
// ---------- DONE INJECTING  ----------
Lionheart.exe+9BF16: 89 54 24 18        - mov [esp+18],edx
Lionheart.exe+9BF1A: E8 F1 A9 09 00     - call Lionheart.exe+136910
Lionheart.exe+9BF1F: D9 44 24 18        - fld dword ptr [esp+18]
Lionheart.exe+9BF23: D8 44 24 14        - fadd dword ptr [esp+14]
Lionheart.exe+9BF27: D9 54 24 18        - fst dword ptr [esp+18]
Lionheart.exe+9BF2B: D8 D9              - fcomp st(0),st(1)
Lionheart.exe+9BF2D: DF E0              - fnstsw ax
Lionheart.exe+9BF2F: F6 C4 05           - test ah,05
Lionheart.exe+9BF32: 7A 0C              - jp Lionheart.exe+9BF40
Lionheart.exe+9BF34: 8B 44 24 18        - mov eax,[esp+18]
}
</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>99</ID>
      <Description>"EXP Multiplier"</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : Lionheart.exe
  Version: 1.1 Build 3021
  Date   : 2022-08-17
  Author : justNOPing - OpenCheatTables.com

 Multiplies the EXP gained
}

[ENABLE]
aobscanmodule(EXEXEX,Lionheart.exe,D9 44 24 18 DB 5C 24 0C 8B 7C) // should be unique
alloc(newmem,$100)
label(return expm)
registersymbol(expm)

newmem:
  fld dword ptr [esp+18]
  fmul dword ptr [expm]
  fistp dword ptr [esp+0C]
  jmp return

expm:
dd (float)2

EXEXEX:
  jmp newmem
  nop 3
return:
registersymbol(EXEXEX)

[DISABLE]
EXEXEX:
  db D9 44 24 18 DB 5C 24 0C

unregistersymbol(EXEXEX)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: Lionheart.exe+41B3B

Lionheart.exe+41B0A: 8B CE                    - mov ecx,esi
Lionheart.exe+41B0C: C7 44 24 24 00 00 00 00  - mov [esp+24],00000000
Lionheart.exe+41B14: E8 87 03 00 00           - call Lionheart.exe+41EA0
Lionheart.exe+41B19: D9 44 24 1C              - fld dword ptr [esp+1C]
Lionheart.exe+41B1D: 8B 54 24 18              - mov edx,[esp+18]
Lionheart.exe+41B21: C7 44 24 10 00 00 00 00  - mov [esp+10],00000000
Lionheart.exe+41B29: D8 0D 48 9E 6B 00        - fmul dword ptr [Lionheart.exe+2B9E48]
Lionheart.exe+41B2F: 89 54 24 0C              - mov [esp+0C],edx
Lionheart.exe+41B33: DA 4C 24 0C              - fimul [esp+0C]
Lionheart.exe+41B37: D9 5C 24 18              - fstp dword ptr [esp+18]
// ---------- INJECTING HERE ----------
Lionheart.exe+41B3B: D9 44 24 18              - fld dword ptr [esp+18]
// ---------- DONE INJECTING  ----------
Lionheart.exe+41B3F: DB 5C 24 0C              - fistp dword ptr [esp+0C]
Lionheart.exe+41B43: 8B 7C 24 0C              - mov edi,[esp+0C]
Lionheart.exe+41B47: EB 04                    - jmp Lionheart.exe+41B4D
Lionheart.exe+41B49: 8B 7C 24 18              - mov edi,[esp+18]
Lionheart.exe+41B4D: 8B 4E 48                 - mov ecx,[esi+48]
Lionheart.exe+41B50: 68 14 E4 72 00           - push Lionheart.exe+32E414
Lionheart.exe+41B55: 03 CF                    - add ecx,edi
Lionheart.exe+41B57: 89 4E 48                 - mov [esi+48],ecx
Lionheart.exe+41B5A: 8D 4C 24 0C              - lea ecx,[esp+0C]
Lionheart.exe+41B5E: E8 AD 6B 15 00           - call Lionheart.exe+198710
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>100</ID>
          <Description>"EXP Multiplier"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Float</VariableType>
          <Address>expm</Address>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>89</ID>
      <Description>"Move Speed Multiplier"</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : LIONHEART
  Version: 1.1 Build 3021
  Date   : 2022-08-15
  Author : Partizan
  Commented by: justNOPing - OpenCheatTables.com

  Info: Multiplies the movespeed of the character
}
[ENABLE]
aobscanmodule(XXX,Lionheart.exe,D9 44 24 30 D8 85 14 01 00 00)
aobscanmodule(YYY,Lionheart.exe,D9 44 24 2C D8 85 18 01 00 00)
alloc(newmem,$50)
alloc(newmem_2,$50)
label(_speed)
label(return)
label(return_2)
registersymbol(_speed)
registersymbol(XXX)
registersymbol(YYY)

newmem:
  fld dword ptr [esp+30]              //XXX DELTA
  cmp [ebp+24],00                     //Check if player (0 = player)
  jne short @F                        //If not a player, jump to the nearest label (-127 to 128 b. jump)
  fmul [_speed]                       //Multiply the value by the one in our symbol (see line 32)
@@:
  fadd dword ptr [ebp+00000114]        //XXX COORD
  jmp return

newmem_2:
  fld dword ptr [esp+2C]               //YYY DELTA
  cmp [ebp+24],00                      //Check if player (0 = player)
  jne short @F                         //If not a player, jump to the nearest label (-127 to 128 b. jump)
  fmul [_speed]                        //Multiply the value by the one in our symbol (see line 32)
@@:
  fadd dword ptr [ebp+00000118]        //YYY COORD
  jmp return_2

_speed:                                //User-Defined symbol to multiply. Being used in the table
dd (float)2

XXX:
  jmp newmem
  nop 5
return:

YYY:
  jmp newmem_2
  nop 5
return_2:


[DISABLE]
XXX:
db D9 44 24 30 D8 85 14 01 00 00
YYY:
db D9 44 24 2C D8 85 18 01 00 00
unregistersymbol(XXX)
unregistersymbol(YYY)
unregistersymbol(_speed)
dealloc(newmem)
dealloc(newmem_2)
//Lionheart.exe+BD7F0
//Lionheart.exe+BD803
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>90</ID>
          <Description>"Speed Multiplier"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Float</VariableType>
          <Address>_speed</Address>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>115</ID>
      <Description>"Save/Load Teleport"</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : Lionheart.exe
  Version: 1.1 Build 3021
  Date   : 2022-08-19
  Author : justNOPing - OpenCheatTables.com

Info: Regular Save/Load teleport
}

[ENABLE]
aobscanmodule(AOBTeleport,Lionheart.exe,D8 86 14 01 00 00 D9 9E) // should be unique
alloc(newmem,2048)
label(_loadRet)
label(_loadOrg)
label(coordX)
label(coordY)
label(_save)
label(_load)
label(_saveCoords)
label(_loadCoords)
registersymbol(_saveCoords)
registersymbol(_loadCoords)
registersymbol(AOBTeleport)

newmem:
////////////////////////////////////
// SAVE COORDINATES BLOCK
////////////////////////////////////
_save:
cmp [esi+24],0          //Compare if player before saving the location
jne _loadOrg            //If not equal - jump to the original code
cmp [_saveCoords],1     //If 1 = execute save coords code
jne short _load         //If _saveCoords = 0, short jump to _load, containing load coords code
push edx                //Places EDX in stack.
mov edx,[esi+00000114]  //Places ESI into EDX. In this case, we place X coord which is in ESI+114
mov [coordX],edx        //Place value of the EDX into CoordX (our label)
mov edx,[esi+00000118]  //Same as above, places Y coord
mov [coordY],edx
pop edx                 //Popping EDX out of stack
mov [_saveCoords],0     //Set flag to 0 to prevent from saving again

jmp _loadOrg             //Jump to original code

////////////////////////////////////
// LOAD COORDINATES BLOCK
////////////////////////////////////

_load:                      //Executed when _saveCoords is not equal 1
       //That means:
       // cmp [_saveCoords],1
       // jne short _load
cmp [coordX],0             //Prevent from accidental loading X=6,Y=0.
je short _loadOrg          //if coordX=0, execute original code
cmp [_loadCoords],1        //If _loadCoords = 1 then save code will be executed instead
jne short _loadOrg         //If _loadCoords is not equal 1, jump to original code instead
push edx                   //placing EDX into stack again
mov edx,[coordX]           //Placing saved X coord into EDX
mov [esi+00000114],edx     //Placing the result in EDX, replacing coordinates
mov edx,[coordY]
mov [esi+00000118],edx
pop edx                    //Popping EDX outta stack
mov [_loadCoords],0        //Changing _loadCoords to 0 so it won't load again

_loadOrg:
  fadd dword ptr [esi+00000114]
  jmp _loadRet             //Basically jmp return, label was renamed. See line 86

////////////////////////////////////
//USER-DEFINED SYMBOLS AREA
////////////////////////////////////

coordX:
dd 0
coordY:
dd 0
coordZ:
dd 0
_saveCoords:
dd 0
_loadCoords:
dd 0

AOBTeleport:
  jmp _save               //Jump straight to save code
  nop

_loadRet:


[DISABLE]
AOBTeleport:
  db D8 86 14 01 00 00

unregistersymbol(*)
dealloc(*)

{
// ORIGINAL CODE - INJECTION POINT: Lionheart.exe+13AFBD

Lionheart.exe+13AF95: D9 86 00 01 00 00  - fld dword ptr [esi+00000100]
Lionheart.exe+13AF9B: D9 C9              - fxch st(1)
Lionheart.exe+13AF9D: D8 4C 24 18        - fmul dword ptr [esp+18]
Lionheart.exe+13AFA1: 89 44 24 10        - mov [esp+10],eax
Lionheart.exe+13AFA5: D9 5C 24 08        - fstp dword ptr [esp+08]
Lionheart.exe+13AFA9: D8 4C 24 18        - fmul dword ptr [esp+18]
Lionheart.exe+13AFAD: D9 44 24 10        - fld dword ptr [esp+10]
Lionheart.exe+13AFB1: D8 4C 24 18        - fmul dword ptr [esp+18]
Lionheart.exe+13AFB5: D9 5C 24 10        - fstp dword ptr [esp+10]
Lionheart.exe+13AFB9: D9 44 24 08        - fld dword ptr [esp+08]
// ---------- INJECTING HERE ----------
Lionheart.exe+13AFBD: D8 86 14 01 00 00  - fadd dword ptr [esi+00000114]
// ---------- DONE INJECTING  ----------
Lionheart.exe+13AFC3: D9 9E 14 01 00 00  - fstp dword ptr [esi+00000114]
Lionheart.exe+13AFC9: D8 86 18 01 00 00  - fadd dword ptr [esi+00000118]
Lionheart.exe+13AFCF: D9 9E 18 01 00 00  - fstp dword ptr [esi+00000118]
Lionheart.exe+13AFD5: FF 92 FC 00 00 00  - call dword ptr [edx+000000FC]
Lionheart.exe+13AFDB: D8 44 24 10        - fadd dword ptr [esp+10]
Lionheart.exe+13AFDF: 51                 - push ecx
Lionheart.exe+13AFE0: 8B CE              - mov ecx,esi
Lionheart.exe+13AFE2: D9 1C 24           - fstp dword ptr [esp]
Lionheart.exe+13AFE5: E8 C6 A3 FF FF     - call Lionheart.exe+1353B0
Lionheart.exe+13AFEA: DD D8              - fstp st(0)
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>6</ID>
          <Description>"save (1 = save) (num 1)"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Byte</VariableType>
          <Address>_saveCoords</Address>
          <Hotkeys>
            <Hotkey>
              <Action>Set Value</Action>
              <Keys>
                <Key>97</Key>
              </Keys>
              <Value>1</Value>
              <ID>0</ID>
            </Hotkey>
          </Hotkeys>
        </CheatEntry>
        <CheatEntry>
          <ID>7</ID>
          <Description>"load (1 = load) (num 2)"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Byte</VariableType>
          <Address>_loadCoords</Address>
          <Hotkeys>
            <Hotkey>
              <Action>Set Value</Action>
              <Keys>
                <Key>98</Key>
              </Keys>
              <Value>1</Value>
              <ID>0</ID>
            </Hotkey>
          </Hotkeys>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>38</ID>
      <Description>"Blink Teleport (TP to cursor)"</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : Lionheart.exe
  Version: 1.1 Build 3021
  Date   : 2022-08-19
  Author : justNOPing - OpenCheatTables.com

Info: Blink teleport
}

[ENABLE]
aobscanmodule(AOBTeleport,Lionheart.exe,D8 86 14 01 00 00 D9 9E)
aobscanmodule(_saveAOB,Lionheart.exe,8B 8E 00 01 00 00 89 4C)
alloc(newmem,2048)
label(_loadRet)
label(_saveRet)
label(_loadOrg)
label(coordX)
label(coordY)
label(_save)
label(_load)
label(_loadcoordsBlink)
registersymbol(_loadcoordsBlink)
registersymbol(AOBTeleport)
registersymbol(_saveAOB)

newmem:
_save:
push ebx                  //Places EBX in stack.
mov ebx,[esi+00000100]    //Places ESI value into EBX. ESI+100 Holds the value of cursos X position on map
mov [coordX],ebx          //Place value of the EBX into CoordX
mov ebx,[esi+00000104]    //Same as above, places Y coord of the mouse position
mov [coordY],ebx
pop ebx                   //Popping EBX out of stack
mov ecx,[esi+00000100]    //Execute the original cursor code

jmp _saveRet

_load:
cmp [_loadcoordsBlink],1  //If _loadcoordsBlink = 1 then save code will be executed instead
jne short _loadOrg        //If _loadcoordsBlink is not equal 1, jump to original code instead
cmp [coordX],0            //Prevent from accidental loading X=6,Y=0.
je short _loadOrg         //if coordX=0, execute original code
cmp [esi+24],0            //Check if player
jne _loadOrg
push ebx                  //placing EBX into stack again
mov ebx,[coordX]          //Placing saved X coord into EBX
mov [esi+00000114],ebx    //Placing the result in EBX, replacing coordinates
mov ebx,[coordY]
mov [esi+00000118],ebx
pop ebx                   //Popping EBX outta stack
mov [_loadcoordsBlink],0  //Changing _loadcoordsBlink to 0 so it won't load again

_loadOrg:                 //Original code (Player Coords)
  fadd dword ptr [esi+00000114]
  jmp _loadRet

coordX:
dd 0
coordY:
dd 0
coordZ:
dd 0
_saveCoords:
dd 0
_loadcoordsBlink:
dd 0

AOBTeleport:
  jmp _load               //jump straight to load code
  nop
_loadRet:

_saveAOB:
  jmp _save               //jump straight to save code
  nop
_saveRet:
[DISABLE]
AOBTeleport:
  db D8 86 14 01 00 00

_saveAOB:
  db 8B 8E 00 01 00 00

unregistersymbol(*)       // unregister all symbols
dealloc(*)                //deallocate all the allocated memory regions

{
// ORIGINAL CODE - INJECTION POINT: Lionheart.exe+13AFBD

Lionheart.exe+13AF95: D9 86 00 01 00 00  - fld dword ptr [esi+00000100]
Lionheart.exe+13AF9B: D9 C9              - fxch st(1)
Lionheart.exe+13AF9D: D8 4C 24 18        - fmul dword ptr [esp+18]
Lionheart.exe+13AFA1: 89 44 24 10        - mov [esp+10],eax
Lionheart.exe+13AFA5: D9 5C 24 08        - fstp dword ptr [esp+08]
Lionheart.exe+13AFA9: D8 4C 24 18        - fmul dword ptr [esp+18]
Lionheart.exe+13AFAD: D9 44 24 10        - fld dword ptr [esp+10]
Lionheart.exe+13AFB1: D8 4C 24 18        - fmul dword ptr [esp+18]
Lionheart.exe+13AFB5: D9 5C 24 10        - fstp dword ptr [esp+10]
Lionheart.exe+13AFB9: D9 44 24 08        - fld dword ptr [esp+08]
// ---------- INJECTING HERE ----------
Lionheart.exe+13AFBD: D8 86 14 01 00 00  - fadd dword ptr [esi+00000114]
// ---------- DONE INJECTING  ----------
Lionheart.exe+13AFC3: D9 9E 14 01 00 00  - fstp dword ptr [esi+00000114]
Lionheart.exe+13AFC9: D8 86 18 01 00 00  - fadd dword ptr [esi+00000118]
Lionheart.exe+13AFCF: D9 9E 18 01 00 00  - fstp dword ptr [esi+00000118]
Lionheart.exe+13AFD5: FF 92 FC 00 00 00  - call dword ptr [edx+000000FC]
Lionheart.exe+13AFDB: D8 44 24 10        - fadd dword ptr [esp+10]
Lionheart.exe+13AFDF: 51                 - push ecx
Lionheart.exe+13AFE0: 8B CE              - mov ecx,esi
Lionheart.exe+13AFE2: D9 1C 24           - fstp dword ptr [esp]
Lionheart.exe+13AFE5: E8 C6 A3 FF FF     - call Lionheart.exe+1353B0
Lionheart.exe+13AFEA: DD D8              - fstp st(0)
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>114</ID>
          <Description>"Teleport to cursor (1 = tp) (num 5)"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Byte</VariableType>
          <Address>_loadcoordsBlink</Address>
          <Hotkeys>
            <Hotkey>
              <Action>Set Value</Action>
              <Keys>
                <Key>101</Key>
              </Keys>
              <Value>1</Value>
              <ID>0</ID>
            </Hotkey>
          </Hotkeys>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>117</ID>
      <Description>"Debug"</Description>
      <Options moHideChildren="1"/>
      <GroupHeader>1</GroupHeader>
      <CheatEntries>
        <CheatEntry>
          <ID>21</ID>
          <Description>"Cursor Screen Pos Y"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>4 Bytes</VariableType>
          <Address>Lionheart.exe+3E6BC0</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>113</ID>
          <Description>"Cursor Screen Pos X"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>4 Bytes</VariableType>
          <Address>Lionheart.exe+3E6BBC</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>110</ID>
          <Description>"Get Player Coordinates"</Description>
          <Options moHideChildren="1"/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : Lionheart.exe
  Version: 1.1 Build 3021
  Date   : 2022-08-19
  Author : justNOPing - OpenCheatTables.com

Info: Get player coordinates stored in EAX
}
[ENABLE]
aobscanmodule(coordssave,Lionheart.exe,90 90 90 90 90 90 90 90 90 90 90 90 8B 44 24 08 8B 10 89 11 8B 40 04)
alloc(newmem,$1000)
label(code)
label(return)
label(savecords)
registersymbol(savecords)

newmem:
cmp [eax+24],1
jne code
mov [savecords],eax

code:
  mov edx,[eax]
  mov [ecx],edx
  mov eax,[eax+04]
  jmp return

  savecords:
dd 00

coordssave+10:
  jmp newmem
  nop 2
return:
registersymbol(coordssave)

[DISABLE]
//code from here till the end of the code will be used to disable the cheat
coordssave+10:
  db 8B 10 89 11 8B 40 04

unregistersymbol(*)
dealloc(*)

{
// ORIGINAL CODE - INJECTION POINT: 005F6664

005F6657: 90           - nop 
005F6658: 90           - nop 
005F6659: 90           - nop 
005F665A: 90           - nop 
005F665B: 90           - nop 
005F665C: 90           - nop 
005F665D: 90           - nop 
005F665E: 90           - nop 
005F665F: 90           - nop 
005F6660: 8B 44 24 08  - mov eax,[esp+08]
// ---------- INJECTING HERE ----------
005F6664: 8B 10        - mov edx,[eax]
// ---------- DONE INJECTING  ----------
005F6666: 89 11        - mov [ecx],edx
005F6668: 8B 40 04     - mov eax,[eax+04]
005F666B: D9 01        - fld dword ptr [ecx]
005F666D: 89 41 04     - mov [ecx+04],eax
005F6670: 8B 44 24 04  - mov eax,[esp+04]
005F6674: D8 20        - fsub dword ptr [eax]
005F6676: D9 19        - fstp dword ptr [ecx]
005F6678: D9 41 04     - fld dword ptr [ecx+04]
005F667B: D8 60 04     - fsub dword ptr [eax+04]
005F667E: 8B 11        - mov edx,[ecx]
}
</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>112</ID>
              <Description>"YYY"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>Float</VariableType>
              <Address>[savecords]+4</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>111</ID>
              <Description>"XXX"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>Float</VariableType>
              <Address>[savecords]+0</Address>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>37</ID>
          <Description>"VACUUM Enemies to Cursor"</Description>
          <Options moHideChildren="1"/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>{ Game   : Lionheart.exe
  Version: 1.1 Build 3021
  Date   : 2022-08-19
  Author : justNOPing - OpenCheatTables.com

VACUUM players to your cursor pos on map
}

[ENABLE]
aobscanmodule(AOBTeleport,Lionheart.exe,D8 86 14 01 00 00 D9 9E)
aobscanmodule(_saveAOB,Lionheart.exe,8B 8E 00 01 00 00 89 4C)
alloc(newmem,2048)
label(_loadRet)
label(_saveRet)
label(_loadOrg)
label(coordX)
label(coordY)
label(_save)
label(_load)
label(_loadcoordsvac)
registersymbol(_loadcoordsvac)
registersymbol(AOBTeleport)
registersymbol(_saveAOB)

newmem:
_save:
push ebx
mov ebx,[esi+00000100]
mov [coordX],ebx
mov ebx,[esi+00000104]
mov [coordY],ebx
pop ebx //Popping EDX out of stack
mov ecx,[esi+00000100]               //Execute the original cursor code

jmp _saveRet

_load:
cmp [_loadcoordsvac],1
jne short _loadOrg
cmp [coordX],0
je short _loadOrg
cmp [esi+188],0                     //CHECK IF PLAYER
je _loadOrg                         //IF IS PLAYER = JUMP BACK TO ORIGINAL CODE
push ebx
mov ebx,[coordX]
mov [esi+00000114],ebx
mov ebx,[coordY]
mov [esi+00000118],ebx
pop ebx //Popping EDX outta stack
mov [_loadcoordsvac],0

_loadOrg:                           //Original code (Player Coords)
  fadd dword ptr [esi+00000114]
  jmp _loadRet

coordX:
dd 0
coordY:
dd 0
coordZ:
dd 0
_saveCoords:
dd 0
_loadcoordsvac:
dd 0

AOBTeleport:
  jmp _load
  nop
_loadRet:

_saveAOB:
  jmp _save
  nop
_saveRet:
[DISABLE]
AOBTeleport:
  db D8 86 14 01 00 00

_saveAOB:
  db 8B 8E 00 01 00 00

unregistersymbol(*)
dealloc(*)

{
// ORIGINAL CODE - INJECTION POINT: Lionheart.exe+13AFBD

Lionheart.exe+13AF95: D9 86 00 01 00 00  - fld dword ptr [esi+00000100]
Lionheart.exe+13AF9B: D9 C9              - fxch st(1)
Lionheart.exe+13AF9D: D8 4C 24 18        - fmul dword ptr [esp+18]
Lionheart.exe+13AFA1: 89 44 24 10        - mov [esp+10],eax
Lionheart.exe+13AFA5: D9 5C 24 08        - fstp dword ptr [esp+08]
Lionheart.exe+13AFA9: D8 4C 24 18        - fmul dword ptr [esp+18]
Lionheart.exe+13AFAD: D9 44 24 10        - fld dword ptr [esp+10]
Lionheart.exe+13AFB1: D8 4C 24 18        - fmul dword ptr [esp+18]
Lionheart.exe+13AFB5: D9 5C 24 10        - fstp dword ptr [esp+10]
Lionheart.exe+13AFB9: D9 44 24 08        - fld dword ptr [esp+08]
// ---------- INJECTING HERE ----------
Lionheart.exe+13AFBD: D8 86 14 01 00 00  - fadd dword ptr [esi+00000114]
// ---------- DONE INJECTING  ----------
Lionheart.exe+13AFC3: D9 9E 14 01 00 00  - fstp dword ptr [esi+00000114]
Lionheart.exe+13AFC9: D8 86 18 01 00 00  - fadd dword ptr [esi+00000118]
Lionheart.exe+13AFCF: D9 9E 18 01 00 00  - fstp dword ptr [esi+00000118]
Lionheart.exe+13AFD5: FF 92 FC 00 00 00  - call dword ptr [edx+000000FC]
Lionheart.exe+13AFDB: D8 44 24 10        - fadd dword ptr [esp+10]
Lionheart.exe+13AFDF: 51                 - push ecx
Lionheart.exe+13AFE0: 8B CE              - mov ecx,esi
Lionheart.exe+13AFE2: D9 1C 24           - fstp dword ptr [esp]
Lionheart.exe+13AFE5: E8 C6 A3 FF FF     - call Lionheart.exe+1353B0
Lionheart.exe+13AFEA: DD D8              - fstp st(0)
}
</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>116</ID>
              <Description>"VAC to Cursor (num 4)"</Description>
              <ShowAsSigned>0</ShowAsSigned>
              <VariableType>Byte</VariableType>
              <Address>_loadcoordsvac</Address>
              <Hotkeys>
                <Hotkey>
                  <Action>Set Value</Action>
                  <Keys>
                    <Key>100</Key>
                  </Keys>
                  <Value>1</Value>
                  <ID>0</ID>
                </Hotkey>
              </Hotkeys>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>118</ID>
      <Description>"===========OpenCheatTables.com==========="</Description>
      <Color>C63540</Color>
      <GroupHeader>1</GroupHeader>
    </CheatEntry>
    <CheatEntry>
      <ID>119</ID>
      <Description>"Open source cheat tables. Guaranteeing the 'our' in source."</Description>
      <Color>C63540</Color>
      <GroupHeader>1</GroupHeader>
    </CheatEntry>
  </CheatEntries>
  <UserdefinedSymbols/>
  <Comments>Enjoying your lunch break, %username%?
Made by:
justNOPing
Partizan
Game Version 1.1 Build 3021
OpenCheatTables.com
Open source cheat tables. Guaranteeing the 'our' in source.
</Comments>
  <LuaScript>--Attach process
attach_process = 'Lionheart.exe'
getAutoAttachList().add(attach_process)

--Compact Mode
--https://forum.cheatengine.org/viewtopic.php?t=570055
--mgr.inz.Player
function cycleFullCompact()
  local state = not(compactmenuitem.Caption == 'Compact View Mode')
  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()
</LuaScript>
  <DisassemblerComments>
    <DisassemblerComment>
      <Address>"Lionheart.exe"+13AFC3</Address>
      <Comment>XXX
</Comment>
    </DisassemblerComment>
    <DisassemblerComment>
      <Address>"Lionheart.exe"+13AFCF</Address>
      <Comment>YYY
</Comment>
    </DisassemblerComment>
    <DisassemblerComment>
      <Address>"Lionheart.exe"+1F6660</Address>
      <Comment>Push Y coord to EAX
</Comment>
    </DisassemblerComment>
    <DisassemblerComment>
      <Address>"Lionheart.exe"+1F6664</Address>
      <Comment>XXX
</Comment>
    </DisassemblerComment>
    <DisassemblerComment>
      <Address>"Lionheart.exe"+1F6668</Address>
      <Comment>YYY
</Comment>
    </DisassemblerComment>
  </DisassemblerComments>
</CheatTable>
