@
Tim: Found the reason why Ermac Soul Vaults are locked (aside from the fact that you're missing Ermac's Amulet). Here goes:
- debug 0xD0 byte on access while you're not highlighting a Soul Vault (or Monk)
- once you approach and the "Locked" status becomes visible, these are going to pop-up in the debug window:
Code: Select all
1407DFF83 - F6 87 D0000000 10 - test byte ptr [rdi+000000D0],10 // pop while not showing
1407E105C - F6 83 D0000000 02 - test byte ptr [rbx+000000D0],02 // pops while not showing
14C358212 - F6 81 D0000000 04 - test byte ptr [rcx+000000D0],04
14C35D205 - F6 81 D0000000 08 - test byte ptr [rcx+000000D0],08 <--
14C364B3C - F6 81 D0000000 10 - test byte ptr [rcx+000000D0],10
14C3644DD - F6 83 D0000000 40 - test byte ptr [rbx+000000D0],40
1407E15EF - 8B 83 D0000000 - mov eax,[rbx+000000D0]
14C30441F - F7 83 D0000000 00000200 - test [rbx+000000D0],20000
14C326DD7 - F6 83 D0000000 10 - test byte ptr [rbx+000000D0],10
- if you remember, I said OR-ing 0xD0 with 0x8 will unlock the Monk/Soul Vault
So now I wanted to understand what's the actual condition, because when you do have Erma's Amultet or check a regular Koin Chest, you will see that the byte there is always 0x?2. That never changes. So, tracing out of the TEST [],8 function lands us here:
Code: Select all
MK11.exe+7E1231 - E8 2AC10100 - call MK11.exe+7FD360 // TEST [],9 func
MK11.exe+7E1236 - 48 8B CB - mov rcx,rbx
MK11.exe+7E1239 - 85 C0 - test eax,eax
MK11.exe+7E123B - 74 31 - je MK11.exe+7E126E // if this jumps, we still see "Locked"
MK11.exe+7E123D - E8 EEBA0100 - call MK11.exe+7FCD30
MK11.exe+7E1242 - 85 C0 - test eax,eax
MK11.exe+7E1244 - 0F85 BD040000 - jne MK11.exe+7E1707
MK11.exe+7E124A - 48 8B CB - mov rcx,rbx
MK11.exe+7E124D - E8 4EBB0100 - call MK11.exe+7FCDA0
MK11.exe+7E1252 - 85 C0 - test eax,eax
MK11.exe+7E1254 - 0F85 AD040000 - jne MK11.exe+7E1707
MK11.exe+7E125A - 48 85 FF - test rdi,rdi
MK11.exe+7E125D - 0F84 FD010000 - je MK11.exe+7E1460
MK11.exe+7E1263 - 39 86 64060000 - cmp [rsi+00000664],eax
MK11.exe+7E1269 - E9 EC010000 - jmp MK11.exe+7E145A
MK11.exe+7E126E - E8 1DC90100 - call MK11.exe+7FDB90
MK11.exe+7E1273 - 85 C0 - test eax,eax
MK11.exe+7E1275 - 0F85 8C040000 - jne MK11.exe+7E1707
MK11.exe+7E127B - 48 8B CB - mov rcx,rbx
MK11.exe+7E127E - E8 5DBE0100 - call MK11.exe+7FD0E0
MK11.exe+7E1283 - 85 C0 - test eax,eax
MK11.exe+7E1285 - 74 12 - je MK11.exe+7E1299
MK11.exe+7E1287 - 80 BE 59060000 00 - cmp byte ptr [rsi+00000659],00 { 0 }
MK11.exe+7E128E - 0F84 73040000 - je MK11.exe+7E1707
MK11.exe+7E1294 - E9 C7010000 - jmp MK11.exe+7E1460
MK11.exe+7E1299 - 48 8B 83 A8000000 - mov rax,[rbx+000000A8] // reads a pointer from 0xA8 in the structure
MK11.exe+7E12A0 - 48 85 C0 - test rax,rax
MK11.exe+7E12A3 - 74 7C - je MK11.exe+7E1321
MK11.exe+7E12A5 - 80 B8 B8000000 0D - cmp byte ptr [rax+000000B8],0D { 13 } // checks if BYTE is 0xD
MK11.exe+7E12AC - 75 73 - jne MK11.exe+7E1321
MK11.exe+7E12AE - 80 BE 20070000 00 - cmp byte ptr [rsi+00000720],00 { 0 }
MK11.exe+7E12B5 - 41 0F94 C6 - sete r14l
MK11.exe+7E12B9 - 48 8B 83 C8010000 - mov rax,[rbx+000001C8]
So.. using the hook you have.. read-up 0xA8 offset and check if 0xB8 byte is 0xD in value. If not, the Monk/Soul Vault is locked
EDIT #1: Setting the value from 0x6 to 0xD does unlock it, but will also teleport you to the object when you press E
Not cool, cuz you will then have to exit and re-enter the Krypt. You get the loot upon re-entry (don't worry, you don't lose it). So.. there's another check..
EDIT #2: Correction. That BYTE has to be set to 0x0 so the Monk becomes unlocked
At least normal Koin Chests turn Locked when I flip byte from 0x0 to 0x6.