Skip to content

Commit

Permalink
Fix for spell duration overflow
Browse files Browse the repository at this point in the history
  • Loading branch information
serg-bloim committed Nov 11, 2019
1 parent 9191b90 commit 91bb5e2
Show file tree
Hide file tree
Showing 3 changed files with 116 additions and 1 deletion.
5 changes: 5 additions & 0 deletions postbuild/server.mp
Original file line number Diff line number Diff line change
Expand Up @@ -175,5 +175,10 @@
0 149 53126B // imp_GMNoLevelDown
0 150 52DA11 // presumably drop all
0 151 5610B6 // quest reward scaling
0 201 53973E // fix spell duration overflow
0 206 53BF9C // fix spell duration overflow
0 203 53C0E1 // fix spell duration overflow
0 204 53C21E // fix spell duration overflow
0 205 53C52A // fix spell duration overflow
////////// 0: jmp, 1: call

104 changes: 104 additions & 0 deletions spell_duration_fix.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
#define FTOL 0x005BF1AC
void __declspec(naked) fix_spell_duration_overflow_0053973E()
{ // 0053973E
__asm
{
cmp eax, 0xFFFF
jle short ret_point1
mov eax, 0xFFFF
ret_point1:
// restore overridden code begin
mov edx, [ebp-0xC]
mov [edx+10h], ax
// restore overridden code
// jump back
mov edx, 0x00539745
jmp edx
}
}
// FUNCTIONS BELOW ARE DIFFERENT
void __declspec(naked) fix_spell_duration_overflow()
{ // 53BF9C
__asm
{
mov eax, FTOL
call eax
cmp eax, 0xFFFF
jle short ret_point
mov eax, 0xFFFF
ret_point:
ret
}
}
// FUNCTIONS BELOW ARE DIFFERENT
void __declspec(naked) fix_spell_duration_overflow_0053BFA1()
{ // 0053BFA1
__asm
{
cmp eax, 0xFFFF
jle short ret_point2
mov eax, 0xFFFF
ret_point2:
// restore overridden code begin
mov edx, [ebp-0x44]
mov [edx+0x42], ax
// restore overridden code
// jump back
mov edx, 0x0053BFA8
jmp edx
}
}

void __declspec(naked) fix_spell_duration_overflow_0053C0E1()
{ // 0053C0E1
__asm
{
cmp eax, 0xFFFF
jle short ret_point3
mov eax, 0xFFFF
ret_point3:
// restore overridden code begin
mov edx, [ebp-0x44]
mov [edx+0x42], ax
// restore overridden code
// jump back
mov edx, 0x0053C0E8
jmp edx
}
}

void __declspec(naked) fix_spell_duration_overflow_0053C21E()
{ // 0053C21E
__asm
{
cmp eax, 0xFFFF
jle short ret_point4
mov eax, 0xFFFF
ret_point4:
// restore overridden code begin
mov edx, [ebp-0x44]
mov [edx+0x42], ax
// restore overridden code
// jump back
mov edx, 0x0053C225
jmp edx
}
}

void __declspec(naked) fix_spell_duration_overflow_0053C52A()
{ // 0053C52A
__asm
{
cmp eax, 0xFFFF
jle short ret_point5
mov eax, 0xFFFF
ret_point5:
// restore overridden code begin
mov edx, [ebp-0x44]
mov [edx+0x42], ax
// restore overridden code
// jump back
mov edx, 0x0053C531
jmp edx
}
}
8 changes: 7 additions & 1 deletion srvmgr.def
Original file line number Diff line number Diff line change
Expand Up @@ -141,4 +141,10 @@ imp_GMNoLevelUp @147
imp_ExtDiplomacy @148
imp_GMNoLevelDown @149
imp_DropAll @150
imp_ScaleSoftcoreExperienceReward @151
imp_ScaleSoftcoreExperienceReward @151
fix_spell_duration_overflow_0053973E @201
fix_spell_duration_overflow_0053BFA1 @202
fix_spell_duration_overflow_0053C0E1 @203
fix_spell_duration_overflow_0053C21E @204
fix_spell_duration_overflow_0053C52A @205
fix_spell_duration_overflow @206

0 comments on commit 91bb5e2

Please sign in to comment.