I have been playing Little Witch Nobeta and have made a table for infinite Health (That only affects Nobeta), I havent had the chance to check if the aob is unique yet but the scirpt works for its intended purpose of only affecting the Health of Nobeta while leaving Enemy health to decrease.
Health Value is a float
as for the compare
enemies seem to be identified by offset +4C being 100, While nobeta is +4C being 45(null),60(ice0,75(fire),90(lightning) which are the charge levels of spells. while the enemy's have a constant charge level of 100.
i want to give credit where due as i was very stuck on both enemy and player using the same code. i followed the doom video for this matter by Stephens Chapman.
also thanks to GreenHouse for helping setting valve for "on/off" and helping me out with writing for the ohk
Code: Select all
{ Game : LittleWitchNobeta.exe
Version:
Date : 2020-06-25
Author : isrever
}
[ENABLE]
aobscan(AobHealth,?? ?? 83 C4 10 D9 5F 18 D9 87 80 00 00 00 D9 9F 84 00 00 00 8D 65 FC 5F C9 C3 00 00 00 00 00 55 8B EC 83 EC 08 8B 45 08)
alloc(newmem,$1000)
globalalloc(PlayerHealthAddress,8)
globalalloc(EnemyHealthAddress,8)
alloc(ohk,1)
registersymbol(ohk)
alloc(god,1)
registersymbol(god)
label(EnemyOhkCode)
label(PlayerCheck)
label(return)
label(PlayerChecked)
label(PlayerGodCode)
label(PlayerOrigDamage)
newmem:
PlayerCheck:
//check if target is player
push rax
mov rax,[edi+4C]
cmp rax,(float)45
je PlayerChecked
cmp rax,(float)60
je PlayerChecked
cmp rax,(float)75
je PlayerChecked
cmp rax,(float)90
jne EnemyOhkCode
pop rax
PlayerChecked:
push rax
lea rax,[edi+18]
mov [PlayerHealthAddress],rax
pop rax
cmp byte [god],1
jne PlayerOrigDamage
PlayerGodCode:
nop
fld dword ptr [edi+00000080]
jmp return
PlayerOrigDamage:
fstp dword ptr [edi+18]
fld dword ptr [edi+00000080]
jmp return
EnemyOhkCode:
push rax
lea rax,[edi+18]
mov [EnemyHealthAddress],rax
pop rax
cmp byte [ohk],1
jne EnemyOrigDamage
mov [edi+18],(float)0
fld dword ptr [edi+00000080]
jmp return
EnemyOrigDamage:
fstp dword ptr [edi+18]
fld dword ptr [edi+00000080]
jmp return
AobHealth+05:
jmp PlayerCheck
nop
nop
nop
nop
return:
registersymbol(AobHealth)
[DISABLE]
AobHealth+05:
db D9 5F 18 D9 87 80 00 00 00
unregistersymbol(AobHealth)
unregistersymbol(ohk)
unregistersymbol(god)
dealloc(newmem)
{
// ORIGINAL CODE - INJECTION POINT: 52BEACD6
52BEACB6: D9 47 14 - fld dword ptr [edi+14]
52BEACB9: 83 EC 04 - sub esp,04
52BEACBC: 83 EC 04 - sub esp,04
52BEACBF: D9 1C 24 - fstp dword ptr [esp]
52BEACC2: 83 EC 04 - sub esp,04
52BEACC5: D9 1C 24 - fstp dword ptr [esp]
52BEACC8: 83 EC 04 - sub esp,04
52BEACCB: D9 1C 24 - fstp dword ptr [esp]
52BEACCE: E8 AD 9F C1 B3 - call 06804C80
// ---------- INJECTING HERE ----------
52BEACD3: 83 C4 10 - add esp,10
52BEACD6: D9 5F 18 - fstp dword ptr [edi+18]
52BEACD9: D9 87 80 00 00 00 - fld dword ptr [edi+00000080]
52BEACDF: D9 9F 84 00 00 00 - fstp dword ptr [edi+00000084]
52BEACE5: 8D 65 FC - lea esp,[ebp-04]
52BEACE8: 5F - pop edi
52BEACE9: C9 - leave
52BEACEA: C3 - ret
52BEACEB: 00 00 - add [eax],al
52BEACED: 00 00 - add [eax],al
52BEACEF: 00 55 8B - add [ebp-75],dl
52BEACF2: EC - in al,dx
52BEACF3: 83 EC 08 - sub esp,08
51E9181E: 8B 45 08 - mov eax,[ebp+08]
// ---------- END HERE ----------
}
How to use this cheat table?
- Install Cheat Engine
- Double-click the .CT file in order to open it.
- Click the PC icon in Cheat Engine in order to select the game process.
- Keep the list.
- Activate the trainer options by checking boxes or setting values from 0 to 1