7、物理伤害公式改动
物理伤害=[(地形修正的攻方攻击力-地形修正的守方防御力)/2+攻方等级*1.5+25]*(1+兵种相克)。
在0043BD39 之前插入lea eax,[eax*2+eax](3个字节,8D0440);shr eax,1(两个字节,D1E8)
然后对后面的代码做如下修改:(//表示删去,*表示改动)
.text:0043BD39 add eax, 19h
.text:0043BD3C //mov [ebp+var_4], eax(节省3个字节)
.text:0043BD3F *mov ecx, [ebp+var_20]
.text:0043BD42 *cmp ecx, [ebp+var_10]
.text:0043BD45 jb short loc_43BD59(需修改跳转偏移)
.text:0043BD47 //mov ecx, [ebp+var_20](节省3个字节)
.text:0043BD4A sub ecx, [ebp+var_10]
.text:0043BD4D shr ecx, 1
.text:0043BD4F //mov edx, [ebp+var_4](节省3个字节)
.text:0043BD52 *add eax, ecx
.text:0043BD54 *mov [ebp+var_4], eax
.text:0043BD57 jmp short loc_43BD7E(需修改跳转偏移)
.text:0043BD59
.text:0043BD59
.text:0043BD59 loc_43BD59: ; CODE XREF: mAttHurt+FAj
.text:0043BD59 *mov ecx, [ebp+var_10]
.text:0043BD5C *sub ecx, [ebp+var_20]
.text:0043BD5F *shr ecx, 1
.text:0043BD61 *push ecx
.text:0043BD62 //mov ecx, [ebp+var_4](节省3个字节)
.text:0043BD65 *push eax
.text:0043BD66 call subwithlbound
.text:0043BD6B add esp, 8
.text:0043BD6E mov [ebp+var_4], eax
.text:0043BD71 cmp [ebp+var_4], 0
.text:0043BD75 jnz short loc_43BD7E
.text:0043BD77 mov [ebp+var_4], 1
0043BD6E开始的那些代码可以写成
test eax,eax
sete al
mov [ebp+var_4], eax
这样可以节省9字节
当然最好是重写,直接利用js来跳转,这样可以获得更多的剩余地址用于物理攻击公式的改写
|