<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="52">
  <Files>
    <File Name="launchgame.dat" Encoding="Ascii85">i),74NXp62Pbo@Q%uCfvtw]l@wu+62%uOwhaRP{4fy5P?QcHje5[1%E72Jwai!(6QGE0Cek{}sR(}z)sr6uMRr$R@o</File>
  </Files>
  <CheatEntries>
    <CheatEntry>
      <ID>1</ID>
      <Description>"Infinite Health"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
// aobscanfunction(name, functionStart, aob)
aobscanfunction(infiniteHealth, bloodrayne.Rayne::SubtractHealth, F3 0F 5C C1 F3 0F 11 81 ** ** ** **)
assert(infiniteHealth, F3 0F 5C C1 F3 0F 11 81 ** ** ** **)

alloc(infiniteHealthBytes, 4)

registersymbol(infiniteHealth)
registersymbol(infiniteHealthBytes)

infiniteHealthBytes:
 readmem(infiniteHealth, 4)

infiniteHealth:
 db 90 90 90 90

[DISABLE]
infiniteHealth:
 readmem(infiniteHealthBytes, 4)

dealloc(*)
unregistersymbol(*)
</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>2</ID>
      <Description>"Invincibility (Can't Get Hit) (W+V to toggle on/off)"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
bloodrayne.Rayne::CanGetHit:
 mov al, 00 // Can Get Hit? No.

[DISABLE]
bloodrayne.Rayne::CanGetHit:
 mov al, 01 // Can Get Hit? Yes.
</AssemblerScript>
      <Hotkeys>
        <Hotkey>
          <Action>Toggle Activation</Action>
          <Keys>
            <Key>87</Key>
            <Key>86</Key>
          </Keys>
          <ID>0</ID>
        </Hotkey>
      </Hotkeys>
    </CheatEntry>
    <CheatEntry>
      <ID>6</ID>
      <Description>"Infinite Pistol Ammo"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
aobscanfunction(infinitePistolAmmo, bloodrayne.Rayne::UpdateState, FE 8E ** ** ** ** 48 8B CE)
assert(infinitePistolAmmo, FE 8E ** ** ** ** 48 8B CE)

alloc(infinitePistolAmmoBytes, 6)

registersymbol(infinitePistolAmmo)
registersymbol(infinitePistolAmmoBytes)

infinitePistolAmmoBytes:
 readmem(infinitePistolAmmo, 6)

infinitePistolAmmo:
 db 90 90 90 90 90 90

[DISABLE]
infinitePistolAmmo:
 readmem(infinitePistolAmmoBytes, 6)

dealloc(*)
unregistersymbol(*)
</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>10</ID>
      <Description>"Big Jump (alt+space to toggle on/off)"</Description>
      <Options moHideChildren="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
aobscanfunction(bigJump, bloodrayne.Rayne::InitState, C7 40 04 ** ** ** ** 48 8B 07 0F 28 CE)
assert(bigJump, C7 40 04 ** ** ** ** 48 8B 07 0F 28 CE)

alloc(newmem, 32, bigJump)
alloc(bigJumpBytes, 7)
alloc(jumpBoost, 4)

label(exit)

registersymbol(bigJump)
registersymbol(bigJumpBytes)
registersymbol(jumpBoost)

bigJumpBytes:
 readmem(bigJump, 7)

jumpBoost:
 readmem(bigJump+3, 4)

newmem:
movss xmm1, [jumpBoost]
movss [rax+04], xmm1
jmp exit

bigJump:
 jmp newmem
 nop
 nop
 exit:

[DISABLE]
bigJump:
 readmem(bigJumpBytes, 7)

dealloc(*)
unregistersymbol(*)
</AssemblerScript>
      <Hotkeys>
        <Hotkey>
          <Action>Toggle Activation</Action>
          <Keys>
            <Key>18</Key>
            <Key>32</Key>
          </Keys>
          <ID>0</ID>
          <ActivateSound>Activate</ActivateSound>
          <DeactivateSound>Deactivate</DeactivateSound>
        </Hotkey>
      </Hotkeys>
      <CheatEntries>
        <CheatEntry>
          <ID>11</ID>
          <Description>"Jump Height"</Description>
          <DropDownList DisplayValueAsItem="1">115:Normal
143:x1.25
172:x1.50
201:x1.75
230:Double
</DropDownList>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>Float</VariableType>
          <Address>jumpBoost</Address>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>14</ID>
      <Description>"Moon Jump (Keep Space Pressed / ctrl+space to toggle on/off)"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
{$LUA}
if syntaxcheck then return end
--Hotkey Script
local timer = createTimer(nil)
timer.Interval = 100

timer.OnTimer = function(timer)
  if memrec.Active == false then
    timer.destroy()
    return
  end

  local moonJumpEnabled = getAddressSafe("moonJumpEnabled")
  if not moonJumpEnabled then return end

  if isKeyPressed(VK_SPACE) then
    writeByte(moonJumpEnabled, 1)
  else
    writeByte(moonJumpEnabled, 0)
  end
end
--]]
{$ASM}
aobscanfunction(moonJump, bloodrayne.wfControllerManager::Update, F3 0F 11 69 ** F3 0F 58 61 **)
assert(moonJump, F3 0F 11 69 ** F3 0F 58 61 **)

alloc(newmem, 64, moonJump)
alloc(moonJumpBytes, 5)
alloc(moonJumpEnabled, 1)
alloc(jumpSpeed, 4)

label(originalcode)
label(exit)

registersymbol(moonJump)
registersymbol(moonJumpBytes)
registersymbol(moonJumpEnabled)

moonJumpBytes:
 readmem(moonJump, 5)

moonJumpEnabled:
 db 0

jumpSpeed:
 dd (float)20.0

newmem:
 cmp byte ptr [moonJumpEnabled], 1
 jne originalcode

 comiss xmm5, [jumpSpeed]
 ja exit
 movss xmm5, [jumpSpeed]

originalcode:
 readmem(moonJump, 5)
 jmp exit

moonJump:
 jmp newmem
 exit:

[DISABLE]
moonJump:
 readmem(moonJumpBytes, 5)

dealloc(*)
unregistersymbol(*)
</AssemblerScript>
      <Hotkeys>
        <Hotkey>
          <Action>Toggle Activation</Action>
          <Keys>
            <Key>17</Key>
            <Key>32</Key>
          </Keys>
          <ID>0</ID>
          <ActivateSound>Activate</ActivateSound>
          <DeactivateSound>Deactivate</DeactivateSound>
        </Hotkey>
      </Hotkeys>
    </CheatEntry>
    <CheatEntry>
      <ID>15</ID>
      <Description>"Reinitialize Symbol Handler"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{$LUA}
if syntaxcheck then return end

[ENABLE]
showMessage("Reinitializing Symbol Handler should take a few seconds")
reinitializeSymbolhandler()
[DISABLE]
</AssemblerScript>
    </CheatEntry>
  </CheatEntries>
  <UserdefinedSymbols/>
</CheatTable>
