I try to change the damage formula so the damage range will be more acceptable, the bonus range attack now works as a percentage damage bonus, and I also make the hth evade perk works on both melee and unarmed attack.
The new damage formula is:
(base_dmg - dmg_tresh)*(100-dmg res)%*(dmg_multi/dmg_div)*(dmg_bonus+cmb_diff)%
and the code is
The code for hth evade is
The new damage formula is:
(base_dmg - dmg_tresh)*(100-dmg res)%*(dmg_multi/dmg_div)*(dmg_bonus+cmb_diff)%
and the code is
Code:
004249EC 8B5C24 24 MOV EBX,DWORD PTR SS:[ESP+24] ;load dmg_multi
004249F0 8B56 04 MOV EDX,DWORD PTR DS:[ESI+4] ;index of slot
004249F3 8B06 MOV EAX,DWORD PTR DS:[ESI] ;char ptr
004249F5 E8 4E3A0500 CALL fallout2.00478448 ;get base dmg
004249FA 2B4424 28 SUB EAX,DWORD PTR SS:[ESP+28] ;base dmg - dmg tresh
004249FE 7E 3B JLE SHORT fallout2.00424A3B ;branch if <= 0
00424A00 BA 64000000 MOV EDX,64
00424A05 2B5424 2C SUB EDX,DWORD PTR SS:[ESP+2C] ;100 - dmg res
00424A09 F7E2 MUL EDX ;dmg*=(100-dmg res)
00424A0B F7E3 MUL EBX ;dmg*=dmg_multi
00424A0D D1E8 SHR EAX,1 ;dmg/2
00424A0F 33D2 XOR EDX,EDX
00424A11 F7F5 DIV EBP ;dmg/dmg_div
00424A13 8B5C24 18 MOV EBX,DWORD PTR SS:[ESP+18] ;load bonus range dmg
00424A17 C1E3 03 SHL EBX,3 ;bonus * 8
00424A1A 035C24 20 ADD EBX,DWORD PTR SS:[ESP+20] ;bonus + cmbt_multi
00424A1E F7E3 MUL EBX ;dmg*=(bonus+comb_multi)
00424A20 BB 10270000 MOV EBX,2710
00424A25 33D2 XOR EDX,EDX
00424A27 F7F3 DIV EBX ;dmg/10000
00424A29 0107 ADD DWORD PTR DS:[EDI],EAX ;total dmg += dmg
00424A2B B8 02000000 MOV EAX,2 ;min_dmg_multi = 2
00424A30 8B5424 24 MOV EDX,DWORD PTR SS:[ESP+24] ;max_dmg_multi = dmg_multi
00424A34 E8 87E6FEFF CALL fallout2.004A30C0 ;get a random number [min_dmg_multi, max_dmg_multi]
00424A39 8BD8 MOV EBX,EAX ;ebx = new dmg_multi
00424A3B 8B4424 1C MOV EAX,DWORD PTR SS:[ESP+1C] ;load # of att
00424A3F 90 NOP
| | |
| | |
| | |
00424A5D 90 NOP
00424A5E 41 INC ECX
00424A5F 3BC8 CMP ECX,EAX
00424A61 7C 8D JL SHORT fallout2.004249F0 ;branch if more than one attack
The code for hth evade is
Code:
004AF007 BA 5D000000 MOV EDX,5D ;h2h evade
004AF00C E8 677BFEFF CALL fallout2.00496B78
004AF011 85C0 TEST EAX,EAX
004AF013 0F84 83000000 JE fallout2.004AF09C
004AF019 A1 B8106600 MOV EAX,DWORD PTR DS:[6610B8]
004AF01E E8 4D2BFCFF CALL fallout2.00471B70 ;get item ptr on right slot
004AF023 89C2 MOV EDX,EAX
004AF025 85C0 TEST EAX,EAX
004AF027 74 16 JE SHORT fallout2.004AF03F
004AF029 E8 CE8AFCFF CALL fallout2.00477AFC ;get item type
004AF02E 83F8 03 CMP EAX,3
004AF031 75 0C JNZ SHORT fallout2.004AF03F
004AF033 8BC2 MOV EAX,EDX
004AF035 E8 6E9DFCFF CALL fallout2.00478DA8 ;get weapon type
004AF03A 83F8 04 CMP EAX,4
004AF03D 7F 5D JG SHORT fallout2.004AF09C ;branch if gun type
004AF03F A1 B8106600 MOV EAX,DWORD PTR DS:[6610B8]
004AF044 E8 732BFCFF CALL fallout2.00471BBC ;get item ptr on left slot
004AF049 8BD0 MOV EDX,EAX
004AF04B 85C0 TEST EAX,EAX
004AF04D 74 16 JE SHORT fallout2.004AF065
004AF04F E8 A88AFCFF CALL fallout2.00477AFC ;get item type
004AF054 83F8 03 CMP EAX,3
004AF057 75 0C JNZ SHORT fallout2.004AF065
004AF059 8BC2 MOV EAX,EDX
004AF05B E8 489DFCFF CALL fallout2.00478DA8 ;get weapon type
004AF060 83F8 04 CMP EAX,4
004AF063 7F 37 JG SHORT fallout2.004AF09C ;branch if gun type
004AF065 8B5424 04 MOV EDX,DWORD PTR SS:[ESP+4]
004AF069 03D2 ADD EDX,EDX
004AF06B A1 B8106600 MOV EAX,DWORD PTR DS:[6610B8]
004AF070 895424 04 MOV DWORD PTR SS:[ESP+4],EDX
004AF074 BA 03000000 MOV EDX,3 ;unarmed
004AF079 E8 DAB4FFFF CALL fallout2.004AA558 ;get skill level
004AF07E 8BF8 MOV EDI,EAX
004AF080 A1 B8106600 MOV EAX,DWORD PTR DS:[6610B8]
004AF085 BA 04000000 MOV EDX,4 ;melee
004AF08A E8 C9B4FFFF CALL fallout2.004AA558 ;get skill level
004AF08F 03C7 ADD EAX,EDI ;unarmed + melee
004AF091 C1F8 04 SAR EAX,4 ;skill / 16
004AF094 90 NOP
004AF095 90 NOP
004AF096 90 NOP
004AF097 90 NOP
004AF098 90 NOP
004AF099 90 NOP
004AF09A 89C5 MOV EBP,EAX