KS212 wrote: ↑Tue Mar 26, 2024 12:47 pm
Tried, your save crashes upon load so something is screwed.
Considering the game loads even with my savewizard 'bugged' saves, yours has to be seriously broken if it hard crashes the game.
Mmmm.... Anyway i try to complete another save to 100% like i did on ps5. I can tell that with today is to 100% but don't have all resources like in other save so... if someone is interest tell me and i post it here.
For the script that i wrote, I can post only some because otheer have cash or corrupt save like before so... Here the scrits that i tested fo hours without any problem:
1 - Infinite valor surge for ability that "buff" you like Overshield (To deactivate press 2 on keyboard)
Code: Select all
{ Game : Horizon Forbidden West™ Complete Edition v1.0.38.0
Version:
Date : 2024-03-23
Author : David LionHeart
This script does blah blah blah
}
[ENABLE]
aobscanmodule(INJECT,HorizonForbiddenWest.exe,08 * * * * C4 C1 7A 11 00) // should be unique
alloc(newmem,$1000,INJECT)
registersymbol(DeactiveBuffs)
label(DeactiveBuffs)
label(code)
label(return)
newmem:
push r8
mov [DeactiveBuffs],r8
pop r8
jmp return
DeactiveBuffs:
dq 0
code:
vmovss [r8],xmm0
jmp return
INJECT+05:
jmp newmem
return:
registersymbol(INJECT)
aobscanmodule(INJECT2,HorizonForbiddenWest.exe,C5 FA 10 81 80 00 00 00 * * * * 10 0F) // should be unique
alloc(newmem2,$1000,INJECT2)
label(code2)
label(return2)
newmem2:
fld [rax+40]//[rax+10] first level surge
fstp [rcx+00000080]
code2:
vmovss xmm0,[rcx+80]
jmp return2
INJECT2:
jmp newmem2
nop 3
return2:
registersymbol(INJECT2)
[DISABLE]
INJECT+05:
db C4 C1 7A 11 00
unregistersymbol(INJECT)
dealloc(newmem)
{
// ORIGINAL CODE - INJECTION POINT: HorizonForbiddenWest.exe+FF86AB
HorizonForbiddenWest.exe+FF868C: CC - int 3
HorizonForbiddenWest.exe+FF868D: CC - int 3
HorizonForbiddenWest.exe+FF868E: CC - int 3
HorizonForbiddenWest.exe+FF868F: CC - int 3
HorizonForbiddenWest.exe+FF8690: C5 FA 10 41 38 - vmovss xmm0,[rcx+38]
HorizonForbiddenWest.exe+FF8695: 48 8B 41 20 - mov rax,[rcx+20]
HorizonForbiddenWest.exe+FF8699: C5 FA 5E 50 28 - vdivss xmm2,xmm0,[rax+28]
HorizonForbiddenWest.exe+FF869E: C5 EA 59 D9 - vmulss xmm3,xmm2,xmm1
HorizonForbiddenWest.exe+FF86A2: C4 C1 7A 10 08 - vmovss xmm1,[r8]
HorizonForbiddenWest.exe+FF86A7: C5 F2 5C C3 - vsubss xmm0,xmm1,xmm3
// ---------- INJECTING HERE ----------
HorizonForbiddenWest.exe+FF86AB: C4 C1 7A 11 00 - vmovss [r8],xmm0
// ---------- DONE INJECTING ----------
HorizonForbiddenWest.exe+FF86B0: C3 - ret
HorizonForbiddenWest.exe+FF86B1: CC - int 3
HorizonForbiddenWest.exe+FF86B2: CC - int 3
HorizonForbiddenWest.exe+FF86B3: CC - int 3
HorizonForbiddenWest.exe+FF86B4: CC - int 3
HorizonForbiddenWest.exe+FF86B5: CC - int 3
HorizonForbiddenWest.exe+FF86B6: CC - int 3
HorizonForbiddenWest.exe+FF86B7: CC - int 3
HorizonForbiddenWest.exe+FF86B8: CC - int 3
HorizonForbiddenWest.exe+FF86B9: CC - int 3
}
INJECT2:
db C5 FA 10 81 80 00 00 00
unregistersymbol(INJECT2)
dealloc(newmem2)
{
// ORIGINAL CODE - INJECTION POINT: HorizonForbiddenWest.exe+FF4493
HorizonForbiddenWest.exe+FF446A: 48 8B F1 - mov rsi,rcx
HorizonForbiddenWest.exe+FF446D: 48 85 DB - test rbx,rbx
HorizonForbiddenWest.exe+FF4470: 74 37 - je HorizonForbiddenWest.exe+FF44A9
HorizonForbiddenWest.exe+FF4472: C5 FB 10 81 B8 00 00 00 - vmovsd xmm0,[rcx+000000B8]
HorizonForbiddenWest.exe+FF447A: C5 F9 2E 05 46 B0 9B 00 - vucomisd xmm0,[HorizonForbiddenWest.exe+19AF4C8]
HorizonForbiddenWest.exe+FF4482: 7A 25 - jp HorizonForbiddenWest.exe+FF44A9
HorizonForbiddenWest.exe+FF4484: 75 23 - jne HorizonForbiddenWest.exe+FF44A9
HorizonForbiddenWest.exe+FF4486: 44 38 B1 C5 00 00 00 - cmp [rcx+000000C5],r14b
HorizonForbiddenWest.exe+FF448D: 75 1A - jne HorizonForbiddenWest.exe+FF44A9
HorizonForbiddenWest.exe+FF448F: 48 8B 43 40 - mov rax,[rbx+40]
// ---------- INJECTING HERE ----------
HorizonForbiddenWest.exe+FF4493: C5 FA 10 81 80 00 00 00 - vmovss xmm0,[rcx+00000080]
// ---------- DONE INJECTING ----------
HorizonForbiddenWest.exe+FF449B: C5 F8 2F 40 10 - vcomiss xmm0,[rax+10]
HorizonForbiddenWest.exe+FF44A0: 0F 83 41 01 00 00 - jae HorizonForbiddenWest.exe+FF45E7
HorizonForbiddenWest.exe+FF44A6: 41 B6 01 - mov r14b,01
HorizonForbiddenWest.exe+FF44A9: 40 32 ED - xor bpl,bpl
HorizonForbiddenWest.exe+FF44AC: 48 8B 46 30 - mov rax,[rsi+30]
HorizonForbiddenWest.exe+FF44B0: 4C 8B 80 88 00 00 00 - mov r8,[rax+00000088]
HorizonForbiddenWest.exe+FF44B7: 4D 85 C0 - test r8,r8
HorizonForbiddenWest.exe+FF44BA: 74 18 - je HorizonForbiddenWest.exe+FF44D4
HorizonForbiddenWest.exe+FF44BC: 48 8B 56 48 - mov rdx,[rsi+48]
HorizonForbiddenWest.exe+FF44C0: 44 0F B6 CD - movzx r9d,bpl
}
2 - Infinite valor surge for attack like radial blast (Press 1 on keyboard if need to refill to max)
Code: Select all
{ Game : HorizonForbiddenWest.exe
Version:
Date : 2024-03-23
Author : David LionHeart
This script does blah blah blah
}
[ENABLE]
aobscanmodule(INJECT,HorizonForbiddenWest.exe,C4 81 7A 5C 4C F7 F8) // should be unique
alloc(newmem,$1000,INJECT)
registersymbol(DeactiveAttack)
label(DeactiveAttack)
label(code)
label(return)
newmem:
push rdi
mov [DeactiveAttack],rdi
pop rdi
jmp code0
DeactiveAttack:
dq 0
code0:
vaddss xmm1,xmm0,[r15+r14*8-08]
jmp return
code:
vsubss xmm1,xmm0,[r15+r14*8-08]
jmp return
INJECT:
jmp newmem
nop 2
return:
registersymbol(INJECT)
[DISABLE]
INJECT:
db C4 81 7A 5C 4C F7 F8
unregistersymbol(INJECT)
dealloc(newmem)
{
// ORIGINAL CODE - INJECTION POINT: HorizonForbiddenWest.exe+FF61B0
HorizonForbiddenWest.exe+FF6178: 48 8D 70 20 - lea rsi,[rax+20]
HorizonForbiddenWest.exe+FF617C: 49 0F 44 F5 - cmove rsi,r13
HorizonForbiddenWest.exe+FF6180: 48 39 B7 98 00 00 00 - cmp [rdi+00000098],rsi
HorizonForbiddenWest.exe+FF6187: 74 1F - je HorizonForbiddenWest.exe+FF61A8
HorizonForbiddenWest.exe+FF6189: 48 8D 8F 98 00 00 00 - lea rcx,[rdi+00000098]
HorizonForbiddenWest.exe+FF6190: E8 1B 24 12 FF - call HorizonForbiddenWest.exe+1185B0
HorizonForbiddenWest.exe+FF6195: 48 8D 8F 98 00 00 00 - lea rcx,[rdi+00000098]
HorizonForbiddenWest.exe+FF619C: 48 89 B7 98 00 00 00 - mov [rdi+00000098],rsi
HorizonForbiddenWest.exe+FF61A3: E8 88 23 12 FF - call HorizonForbiddenWest.exe+118530
HorizonForbiddenWest.exe+FF61A8: C5 FA 10 87 80 00 00 00 - vmovss xmm0,[rdi+00000080]
// ---------- INJECTING HERE ----------
HorizonForbiddenWest.exe+FF61B0: C4 81 7A 5C 4C F7 F8 - vsubss xmm1,xmm0,[r15+r14*8-08]
// ---------- DONE INJECTING ----------
HorizonForbiddenWest.exe+FF61B7: C5 FA 11 8F C0 00 00 00 - vmovss [rdi+000000C0],xmm1
HorizonForbiddenWest.exe+FF61BF: 4B 8B 44 F7 F0 - mov rax,[r15+r14*8-10]
HorizonForbiddenWest.exe+FF61C4: 48 8B 70 30 - mov rsi,[rax+30]
HorizonForbiddenWest.exe+FF61C8: 48 85 F6 - test rsi,rsi
HorizonForbiddenWest.exe+FF61CB: 75 0A - jne HorizonForbiddenWest.exe+FF61D7
HorizonForbiddenWest.exe+FF61CD: C5 FA 11 8F 80 00 00 00 - vmovss [rdi+00000080],xmm1
HorizonForbiddenWest.exe+FF61D5: EB 7F - jmp HorizonForbiddenWest.exe+FF6256
HorizonForbiddenWest.exe+FF61D7: 48 8B 06 - mov rax,[rsi]
HorizonForbiddenWest.exe+FF61DA: 48 8B CE - mov rcx,rsi
HorizonForbiddenWest.exe+FF61DD: C5 F8 29 B4 24 E0 00 00 00 - vmovaps [rsp+000000E0],xmm6
}
To make pointer work use valor surge 1 time, I'm working on "infinite ammo weapons machine" - work well but some aloy weapons shoot 3 or more arrows and block animation sometimes and persistent override but sometime crash the game :/
Update: Remove script for Infinite Health Mount because it can visualize health of all machines not only yours... so if block the script the enemy have infinite health xD