I've been trying to find out the Local Player Corpse location but I run into something that I can't figure out.
From this post http://www.mmowned.com/forums/wow-me...er-corpse.html I understood that the player corpse is not stored with all the other objects in the heap but it's part of a class (probably CPlayer?) and that it's declared as a static variable.
Now I supposed that at some point some of the functions would go and read/write there.
I first thought about RepopMe() but after setting a breakpoint there I discovered that it actually gets called when you release and that apparently all the nice stuff has already been done as you can already see where the spirit healer is and thus I guess it has already checked for my corpse location, stored it and compared that position with all the graveyards in the zone to pick the closest.
I then thought that I'd go with AcceptRessurect hoping that it was the same function called when you actually accept to resurrect at your corpse.. but it looks like it's only called when another player resurrects you.
So I moved on to the RetrieveCorpse() function just to find out that I can't exactly understand what that function is doing.
It actually looks like:
Code:
.text:006E6C10 ; =============== S U B R O U T I N E =======================================
.text:006E6C10
.text:006E6C10 ; Attributes: bp-based frame
.text:006E6C10
.text:006E6C10 sub_6E6C10 proc near ; DATA XREF: .data:00A3DF1Co
.text:006E6C10
.text:006E6C10 var_18 = dword ptr -18h
.text:006E6C10 var_14 = dword ptr -14h
.text:006E6C10 var_10 = dword ptr -10h
.text:006E6C10 var_C = dword ptr -0Ch
.text:006E6C10 var_8 = dword ptr -8
.text:006E6C10 var_4 = dword ptr -4
.text:006E6C10
.text:006E6C10 push ebp
.text:006E6C11 mov ebp, esp
.text:006E6C13 sub esp, 18h
.text:006E6C16 push esi
.text:006E6C17 call sub_7BC8D0
.text:006E6C1C push 0A1h
.text:006E6C21 push offset aCBuildserve_14 ; "c:\\BuildServer\\bs1\\work\\WoW-code\\branch"...
.text:006E6C26 push 10h
.text:006E6C28 push edx
.text:006E6C29 push eax
.text:006E6C2A call sub_7BE110
.text:006E6C2F xor esi, esi
.text:006E6C31 add esp, 14h
.text:006E6C34 cmp eax, esi
.text:006E6C36 jz short loc_6E6C40
.text:006E6C38 push esi
.text:006E6C39 mov ecx, eax
.text:006E6C3B call sub_559CB0
.text:006E6C40
.text:006E6C40 loc_6E6C40: ; CODE XREF: sub_6E6C10+26j
.text:006E6C40 push 1D2h
.text:006E6C45 lea ecx, [ebp+var_18]
.text:006E6C48 mov [ebp+var_18], offset off_980C28
.text:006E6C4F mov [ebp+var_14], esi
.text:006E6C52
.text:006E6C52 loc_6E6C52: ; DATA XREF: .rdata:off_990050o
.text:006E6C52 mov [ebp+var_10], esi
.text:006E6C55 mov [ebp+var_C], esi
.text:006E6C58 mov [ebp+var_8], esi
.text:006E6C5B mov [ebp+var_4], 0FFFFFFFFh
.text:006E6C62 call sub_8361B0
.text:006E6C67 mov eax, dword_11D3FDC
.text:006E6C6C mov ecx, dword_11D3FD8
.text:006E6C72 push eax
.text:006E6C73 push ecx
.text:006E6C74 lea ecx, [ebp+var_18]
.text:006E6C77 call sub_836210
.text:006E6C7C lea edx, [ebp+var_18]
.text:006E6C7F push edx
.text:006E6C80 mov [ebp+var_4], esi
.text:006E6C83 call sub_5F92F0
.text:006E6C88 add esp, 4
.text:006E6C8B cmp [ebp+var_C], 0FFFFFFFFh
.text:006E6C8F mov [ebp+var_18], offset off_980C28
.text:006E6C96 pop esi
.text:006E6C97 jz short loc_6E6CAE
.text:006E6C99 lea eax, [ebp+var_C]
.text:006E6C9C push eax
.text:006E6C9D lea ecx, [ebp+var_10]
.text:006E6CA0 push ecx
.text:006E6CA1 lea edx, [ebp+var_14]
.text:006E6CA4 push edx
.text:006E6CA5 lea ecx, [ebp+var_18]
.text:006E6CA8 call ds:off_980C2C
.text:006E6CAE
.text:006E6CAE loc_6E6CAE: ; CODE XREF: sub_6E6C10+87j
.text:006E6CAE xor eax, eax
.text:006E6CB0 mov esp, ebp
.text:006E6CB2 pop ebp
.text:006E6CB3 retn
.text:006E6CB3 sub_6E6C10 endp
I see that it's calling some other functions inside this one and I hoped to find some values looking at the memory it reads that might look like floating point values but I haven't been able to find any.
Of course I must be missing something there.. any words of wisdom?