Just replace the dlls with the edited ones, which you can download here.
-----------------------------------------------------------
this is done, and allows up to 255 levels in total, the edits are simple clear but you'll still need some knowledge to apply them.
unfortunatly 1.13c' inline policly wasn't too kind, so the D2GetAct function got inlined in a few places, these places need to instead do this
Code: Select all
PUSH <nLevel>
CALL D2Common.GetAct
INC EAX
JMP <location of the JL of the origional loop>
Code: Select all
MOV EAX,DWORD PTR [ESP+4]
CMP EAX,DWORD PTR [6FDF0B34]
JNB BAD_EXIT
IMUL EAX,EAX,0x220
ADD EAX,MOV DWORD PTR [6FDF0B30]
MOVSX EAX,BYTE PTR [EAX+3]
RETN
BAD_EXIT:
XOR EAX,EAX
RETN
Code: Select all
D2Common:
//D2GetAct__inline:(best to rather make these all call D2Common.#10459)
6FD67190 |. B8 01000000 MOV EAX,1
6FD67195 |. 57 PUSH EDI
6FD67196 |> 3B0C85 6846DE6F /CMP ECX,DWORD PTR DS:[EAX*4+6FDE4668]
6FD6719D |. 7C 4B |JL SHORT D2Common.6FD671EA
6FD6719F |. 40 |INC EAX
6FD671A0 |. 83F8 05 |CMP EAX,5
6FD671A3 |.^ 7E F1 \JLE SHORT D2Common.6FD67196
6FD878D0 |> \B8 01000000 MOV EAX,1
6FD878D5 |> 3B1C85 6846DE6F /CMP EBX,DWORD PTR DS:[EAX*4+6FDE4668]
6FD878DC |. 7C 31 |JL SHORT D2Common.6FD8790F
6FD878DE |. 40 |INC EAX
6FD878DF |. 83F8 05 |CMP EAX,5
6FD878E2 |.^ 7E F1 \JLE SHORT D2Common.6FD878D5
6FD87AA0 |> \B8 01000000 MOV EAX,1
6FD87AA5 |> 3B1C85 6846DE6F /CMP EBX,DWORD PTR DS:[EAX*4+6FDE4668]
6FD87AAC |. 7C 31 |JL SHORT D2Common.6FD87ADF
6FD87AAE |. 40 |INC EAX
6FD87AAF |. 83F8 05 |CMP EAX,5
6FD87AB2 |.^ 7E F1 \JLE SHORT D2Common.6FD87AA5
6FD87B37 |> \B8 01000000 MOV EAX,1
6FD87B3C |. 8D6424 00 LEA ESP,DWORD PTR SS:[ESP]
6FD87B40 |> 3B1C85 6846DE6F /CMP EBX,DWORD PTR DS:[EAX*4+6FDE4668]
6FD87B47 |. 7C 45 |JL SHORT D2Common.6FD87B8E
6FD87B49 |. 40 |INC EAX
6FD87B4A |. 83F8 05 |CMP EAX,5
6FD87B4D |.^ 7E F1 \JLE SHORT D2Common.6FD87B40
6FD93613 |. B8 01000000 MOV EAX,1
6FD93618 |. EB 06 JMP SHORT D2Common.6FD93620
6FD9361A | 8D9B 00000000 LEA EBX,DWORD PTR DS:[EBX]
6FD93620 |> 3B0C85 6846DE6F /CMP ECX,DWORD PTR DS:[EAX*4+6FDE4668]
6FD93627 |. 7C 4D |JL SHORT D2Common.6FD93676
6FD93629 |. 40 |INC EAX
6FD9362A |. 83F8 05 |CMP EAX,5
6FD9362D |.^ 7E F1 \JLE SHORT D2Common.6FD93620
//D2GetAct:
6FD9A696 |. B8 01000000 MOV EAX,1
6FD9A69B |. EB 03 JMP SHORT D2Common.6FD9A6A0
6FD9A69D | 8D49 00 LEA ECX,DWORD PTR DS:[ECX]
6FD9A6A0 |> 3B1485 6846DE6F /CMP EDX,DWORD PTR DS:[EAX*4+6FDE4668]
6FD9A6A7 |. 7C 36 |JL SHORT D2Common.6FD9A6DF
6FD9A6A9 |. 40 |INC EAX
6FD9A6AA |. 83F8 05 |CMP EAX,5
6FD9A6AD |.^ 7E F1 \JLE SHORT D2Common.6FD9A6A0
D2Common.#10459 6FD7D2C0 /$ 8B4C24 04 MOV ECX,DWORD PTR SS:[ESP+4]
6FD7D2C4 |. B8 01000000 MOV EAX,1
6FD7D2C9 |. 8DA424 00000000 LEA ESP,DWORD PTR SS:[ESP]
6FD7D2D0 |> 3B0C85 6846DE6F /CMP ECX,DWORD PTR DS:[EAX*4+6FDE4668]
6FD7D2D7 |. 7C 0B |JL SHORT D2Common.6FD7D2E4
6FD7D2D9 |. 40 |INC EAX
6FD7D2DA |. 83F8 05 |CMP EAX,5
6FD7D2DD |.^ 7E F1 \JLE SHORT D2Common.6FD7D2D0
6FD7D2DF |. 32C0 XOR AL,AL
6FD7D2E1 |. C2 0400 RETN 4
6FD7D2E4 |> 48 DEC EAX
6FD7D2E5 \. C2 0400 RETN 4
Code: Select all
D2Client:
//automap files
6FB10516 81EC A0100000 SUB ESP,10A0
6FB10536 B9 99030000 MOV ECX,399
6FB1054B 68 00100000 PUSH 1000
6FB1055B 817C24 0C 00100000 CMP DWORD PTR SS:[ESP+C],1000
6FB10584 68 00100000 PUSH 1000
6FB10619 68 00100000 PUSH 1000
//no stack restore, as its done via a stack frame...
6FB11E76 81EC 4C100000 SUB ESP,104C
6FB11EA9 B9 99030000 MOV ECX,399
6FB11EBA 68 00100000 PUSH 1000
6FB11ECE 817C24 10 00100000 CMP DWORD PTR SS:[ESP+10],1000
6FB0F2EB 68 00100000 PUSH 1000
//the above merges about 6 edits into 1
//no stack restore, as its done via a stack frame...