  | 
                   
                  
                    
                      
                        
                          
                            
                              
                                
                                  
                                  
                                  
                                    
                                      
                                      超级随机金怪属性奖励程序 | 
                                     
           
            |  
             | 
           
           
              | 
           
                                    
                                       | 
                                     
                                    
                                      
				
					|   ..::| 暗黑破坏神2资料站 · 收藏本文 · 【字体:小 大】 |::..  |  
				 
                                       | 
                                     
                                    
                                       | 
                                     
                                    
                                      
前言: 我想大家都看过ghost9988(2years)在v1.10初期的大作1.10 怪物元素抵抗及免疫的总结分析,从中应该受益良多。 近日,Nefarius公布了对超级和随机金怪防御和抗性相关Mod奖励的解析结果This function handles boss AC and all boss resistance boni,从中我们可以看到一些新的东西。 由于Nefarius基本是直接给出的v1.10各程序段的结论,所以我找到了v1.11b的相关程序,并对每个程序段重新作了较为详细的注释(基本是逐句注释,考虑到其中涉及的基本都是固定的代码及其名称,所以全部用英文注释)。 鉴于我极其有限的汇编水平,如有错误纰漏的地方,勿怪。
  *由于从v1.11开始,Blizzard把许多Functions拆开放到不同的地方。对电脑来说,只不过是换了一行内存地址,但对Reader来说实在是增加了许多麻烦。 v1.11b,Blizzard又让其变了一次。 所以,许多Reader都宁可解析v1.10,况且,v1.11/v1.11b各程序只是有些小改动(如某些函数语句的改变),其功能基本都没有改变。 *v1.10的Function由Nefarius解析。 *当然,我会尽量找到并解析最新版本的程序。
  ≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈清新脱俗的分割线≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈
  程序起始及几个退出设定
  CF D2Game.6FD08B10  
CODE: 
6FD08B10 /$ 83EC 0C     SUB ESP,0C 6FD08B13 |. 56         PUSH ESI 6FD08B14 |. 8BF1       MOV ESI,ECX 6FD08B16 |. 85F6       TEST ESI,ESI 6FD08B18 |. 895424 0C     MOV DWORD PTR SS:[ESP+C],EDX 6FD08B1C |. 0F84 82020000 JE D2GAME.6FD08DA4 6FD08B22 |. 8B06       MOV EAX,DWORD PTR DS:[ESI] 6FD08B24 |. 83F8 01     CMP EAX,1 6FD08B27 |. 0F85 77020000 JNZ D2GAME.6FD08DA4 6FD08B2D |. 8B4424 14     MOV EAX,DWORD PTR SS:[ESP+14] 6FD08B31 |. 85C0       TEST EAX,EAX 6FD08B33 |. 0F84 6B020000 JE D2GAME.6FD08DA4 
[Copy to clipboard] 
  ##################################################################
  Stone Skin AC Function
  CF D2Game.6FD08B39 
CODE: 
6FD08B39 |. 83FA 1C     CMP EDX,1C               ; uniquemod 28 (Stone Skin) 6FD08B3C |. 75 17       JNZ SHORT D2GAME.6FD08B55     ; not Stone Skin, jump the Get Monster Quondam Resistances Function 6FD08B3E |. 6A 00       PUSH 0                                    6FD08B40 |. 6A 1F       PUSH 1F                 ; StatID 31 (armorclass) 6FD08B42 |. 56         PUSH ESI 6FD08B43 |. E8 A818F2FF   CALL     ; get inherent armorclass 6FD08B48 |. 6A 00       PUSH 0 6FD08B4A |. D1E0       SHL EAX,1                 ; EAX ← armorclass*2 6FD08B4C |. 50         PUSH EAX                  6FD08B4D |. 6A 1F       PUSH 1F                    6FD08B4F |. 56         PUSH ESI                  6FD08B50 |. E8 E918F2FF   CALL     ; armorclass = armorclass*2 
[Copy to clipboard]  如果没检测到Stone Skin,则跳到Get Monster Quondam Resistances Function
  如果有Stone Skin,则怪物防御=基础防御×2 依序执行D2Game.6FD08B55地址的指令
  *Stone Skin仅仅使怪物防御×2,而非AS所言的×3 *CALL 是得到当前属性原有数值的Function *CALL 是得到当前属性经过增加后的数值的Function *SHL EAX,1 二进制逻辑左移一位即十进制×2 *16进制1Ch = 十进制28d,1Fh = 31d
  ##################################################################
  Get Monster Quondam Resistances Function
  CF D2Game.6FD08B55 
CODE: 
6FD08B55 |> 53         PUSH EBX 6FD08B56 |. 55         PUSH EBP 6FD08B57 |. 57         PUSH EDI 6FD08B58 |. 6A 00       PUSH 0 6FD08B5A |. 6A 27       PUSH 27                   ; StatID 39 (fireresist) 6FD08B5C |. 56         PUSH ESI 6FD08B5D |. C74424 2C 0000>MOV DWORD PTR SS:[ESP+2C],0 6FD08B65 |. E8 8618F2FF   CALL     ; get fireresist 6FD08B6A |. 6A 00       PUSH 0 6FD08B6C |. 6A 29       PUSH 29                   ; StatID 41 (lightresist) 6FD08B6E |. 56         PUSH ESI 6FD08B6F |. 8BF8       MOV EDI,EAX                 ; EDI ← fireresist 6FD08B71 |. E8 7A18F2FF   CALL     ; get lightresist 6FD08B76 |. 6A 00       PUSH 0 6FD08B78 |. 6A 2B       PUSH 2B                   ; StatID 43 (coldresist) 6FD08B7A |. 56         PUSH ESI 6FD08B7B |. 894424 1C     MOV DWORD PTR SS:[ESP+1C],EAX     ; ESP+1Ch ← lightresist    6FD08B7F |. E8 6C18F2FF   CALL     ; get coldresist 6FD08B84 |. 6A 00       PUSH 0 6FD08B86 |. 6A 2D       PUSH 2D                   ; StatID 45 (poisonresist) 6FD08B88 |. 56         PUSH ESI 6FD08B89 |. 8BD8       MOV EBX,EAX                 ; EBX ← coldresist  6FD08B8B |. E8 6018F2FF   CALL     ; get poisonresist 6FD08B90 |. 6A 00       PUSH 0 6FD08B92 |. 6A 24       PUSH 24                   ; StatID 36 (damageresist) 6FD08B94 |. 56         PUSH ESI 6FD08B95 |. 8BE8       MOV EBP,EAX                 ; EBP ← poisonresist 6FD08B97 |. E8 5418F2FF   CALL     ; get damageresist 6FD08B9C |. 6A 00       PUSH 0 6FD08B9E |. 6A 25       PUSH 25                   ; StatID 37 (magicresist) 6FD08BA0 |. 56         PUSH ESI 6FD08BA1 |. 894424 20     MOV DWORD PTR SS:[ESP+20],EAX     ; ESP+20h ← damageresist 6FD08BA5 |. E8 4618F2FF   CALL     ; get magicresist 
[Copy to clipboard]  得到当前怪物的原有抗性 各抗性存放的寄存器 EDI = fireresist ESP+1Ch = lightresist EBX = coldresist EBP = poisonresist ESP+20h = damageresist EAX = magicresist 依序执行D2Game.6FD08BAA地址的指令
  *27h = 39d, 29h = 41d, 2Bh = 43d, 2Dh = 45d, 24h = 36d, 25h = 37d 
  ##################################################################
  Check Immunities Function
  CF D2Game.6FD08BAA 
CODE: 
6FD08BAA |. 83FF 64     CMP EDI,64 6FD08BAD |. 7C 08       JL SHORT D2GAME.6FD08BB7     ; fireresist < 100, jump D2GAME.6FD08BB7 6FD08BAF |. C74424 20 0100>MOV DWORD PTR SS:[ESP+20],1   ; immunities = 1 6FD08BB7 |> 837C24 10 64   CMP DWORD PTR SS:[ESP+10],64 6FD08BBC |. 7C 04       JL SHORT D2GAME.6FD08BC2     ; lightresist < 100, jump D2GAME.6FD08BC2 6FD08BBE |. FF4424 20     INC DWORD PTR SS:[ESP+20]     ; immunities+1 6FD08BC2 |> 83FB 64     CMP EBX,64 6FD08BC5 |. 7C 04       JL SHORT D2GAME.6FD08BCB     ; coldresist < 100, jump D2GAME.6FD08BCB 6FD08BC7 |. FF4424 20     INC DWORD PTR SS:[ESP+20]     ; immunities+1 6FD08BCB |> 83FD 64     CMP EBP,64 6FD08BCE |. 7C 04       JL SHORT D2GAME.6FD08BD4     ; poisonresist < 100, jump D2GAME.6FD08BD4 6FD08BD0 |. FF4424 20     INC DWORD PTR SS:[ESP+20]     ; immunities+1 6FD08BD4 |> 8B5424 14     MOV EDX,DWORD PTR SS:[ESP+14] 6FD08BD8 |. 83FA 64     CMP EDX,64 6FD08BDB |. 7C 04       JL SHORT D2GAME.6FD08BE1     ; damageresist < 100, jump D2GAME.6FD08BE1 6FD08BDD |. FF4424 20     INC DWORD PTR SS:[ESP+20]     ; immunities+1 6FD08BE1 |> 83F8 64     CMP EAX,64 6FD08BE4 |. 7C 04       JL SHORT D2GAME.6FD08BEA     ; magicresist < 100, jump 6FD08BE6 |. FF4424 20     INC DWORD PTR SS:[ESP+20]     ; immunities+1 6FD08BEA |> 837C24 20 02   CMP DWORD PTR SS:[ESP+20],2 6FD08BEF |. 0F8D AC010000 JGE D2GAME.6FD08DA1         ; immunities >= 2, jump the Exit Function  
[Copy to clipboard]  检测当前怪物是否有免疫 检测顺序为fireresist, lightresist, coldresist, poisonresist, damageresist, magicresist  ≥ 100 即标记为免疫 统计其有几系免疫 若免疫数 ≥ 2,则跳到Exit Function 若免疫数〈 2,依序执行D2Game.6FD08BF5地址的指令
  *64h = 100d
  ##################################################################
  Magic Resistant Function
  CF D2Game.6FD08BF5 
CODE: 
6FD08BF5 |. 8B4C24 18     MOV ECX,DWORD PTR SS:[ESP+18] 6FD08BF9 |. 83F9 08     CMP ECX,8                 ; uniquemod 8 (Magic Resistant) 6FD08BFC |. 0F85 81000000 JNZ D2GAME.6FD08C83           ; not Magic Resistant, jump the Fire Enchanted Function 6FD08C02 |. 83FB 64     CMP EBX,64 6FD08C05 |. 7D 17       JGE SHORT D2GAME.6FD08C1E       ; EBX >= 100, jump D2GAME.6FD08C1E 6FD08C07 |. 6A 00       PUSH 0 6FD08C09 |. 83C3 28     ADD EBX,28                 ; EBX ← EBX+40 6FD08C0C |. 53         PUSH EBX 6FD08C0D |. 6A 2B       PUSH 2B                   ; StatID 43 (coldresist) 6FD08C0F |. 56         PUSH ESI 6FD08C10 |. E8 2918F2FF   CALL     ; coldresist = coldresist+40 6FD08C15 |. 83FB 64     CMP EBX,64 6FD08C18 |. 7C 04       JL SHORT D2GAME.6FD08C1E       ; EBX < 100, jump D2GAME.6FD08C1E 6FD08C1A |. FF4424 20     INC DWORD PTR SS:[ESP+20]       ; immunities+1 6FD08C1E |> 837C24 20 02   CMP DWORD PTR SS:[ESP+20],2 6FD08C23 |. 0F8D 78010000 JGE D2GAME.6FD08DA1           ; immunities >= 2, jump the Exit Function 6FD08C29 |. 83FF 64     CMP EDI,64 6FD08C2C |. 7D 17       JGE SHORT D2GAME.6FD08C45       ; EDI >= 100, jump D2GAME.6FD08C45 6FD08C2E |. 6A 00       PUSH 0                    6FD08C30 |. 83C7 28     ADD EDI,28                 ; EDI ← EDI+40 6FD08C33 |. 57         PUSH EDI 6FD08C34 |. 6A 27       PUSH 27                   ; StatID 39 (fireresist) 6FD08C36 |. 56         PUSH ESI 6FD08C37 |. E8 0218F2FF   CALL     ; fireresist = fireresist+40 6FD08C3C |. 83FF 64     CMP EDI,64 6FD08C3F |. 7C 04       JL SHORT D2GAME.6FD08C45       ; EDI < 100, jump D2GAME.6FD08C45 6FD08C41 |. FF4424 20     INC DWORD PTR SS:[ESP+20]       ; immunities+1 6FD08C45 |> 837C24 20 02   CMP DWORD PTR SS:[ESP+20],2      6FD08C4A |. 0F8D 51010000 JGE D2GAME.6FD08DA1           ; immunities >= 2, jump the Exit Function 6FD08C50 |. 8B7C24 10     MOV EDI,DWORD PTR SS:[ESP+10]      6FD08C54 |. 83FF 64     CMP EDI,64                  6FD08C57 |. 0F8D 44010000 JGE D2GAME.6FD08DA1           ; lightresist >= 100, jump the Exit Function 6FD08C5D |. 6A 00       PUSH 0 6FD08C5F |. 83C7 28     ADD EDI,28                 ; EDI ← EDI+40 6FD08C62 |. 57         PUSH EDI 6FD08C63 |. 6A 29       PUSH 29                   ; StatID 41 (lightresist)  6FD08C65 |. 56         PUSH ESI 6FD08C66 |. E8 D317F2FF   CALL     ; lightresist = lightresist+40 6FD08C6B |. 83FF 64     CMP EDI,64 6FD08C6E |. 0F8C 2D010000 JL D2GAME.6FD08DA1           ; lightresist < 100, jump the Exit Function 6FD08C74 |. 8B4424 20     MOV EAX,DWORD PTR SS:[ESP+20]   ; EAX ← immunities 6FD08C78 |. 5F         POP EDI 6FD08C79 |. 5D         POP EBP 6FD08C7A |. 5B         POP EBX 6FD08C7B |. 40         INC EAX                   ; immunities+1 6FD08C7C |. 5E         POP ESI 6FD08C7D |. 83C4 0C     ADD ESP,0C                  6FD08C80 |. C2 0400     RETN 4                   ; Exit 
[Copy to clipboard]  如果没有检测到Magic Resistant,则跳到Fire Enchanted Function
  如有Magic Resistant,若resist < 100,则resist+40 检测顺序coldresist, fireresist, lightresist coldresist, fireresist步骤若免疫数 ≥ 2,则跳到Exit Function 若免疫数〈 2,依序执行下一地址的指令,在执行到最后的lightresist后,若lightresist < 100,则直接跳到Exit Function,若lightresist >= 100,则在依序执行完免疫数量+1后退出程序
  *Magic Resistant依次增加冰冷、火焰、闪电各40%抗性,但前提是怪物当前其抗性 < 100%且免疫数量小于2 *64h = 100d, 28h = 40d, 2Bh = 43d, 27h = 39d, 29h = 41d
 
  ##################################################################
  Fire Enchanted Function
  CF D2Game.6FD08C83 
CODE: 
6FD08C83 |> 83F9 09     CMP ECX,9               ; uniquemod 9 (Fire Enchanted) 6FD08C86 |. 75 18       JNZ SHORT D2GAME.6FD08CA0     ; not Fire Enchanted, jump the Cold Enchanted Function 6FD08C88 |. 6A 00       PUSH 0 6FD08C8A |. 83C7 4B     ADD EDI,4B               ; fireresist ← fireresist+75 6FD08C8D |. 57         PUSH EDI                  6FD08C8E |. 6A 27       PUSH 27                 ; StatID 39 (fireresist) 6FD08C90 |. 56         PUSH ESI 6FD08C91 |. E8 A817F2FF   CALL   ; fireresist = fireresist+75 6FD08C96 |. 5F         POP EDI 6FD08C97 |. 5D         POP EBP 6FD08C98 |. 5B         POP EBX 6FD08C99 |. 5E         POP ESI 6FD08C9A |. 83C4 0C     ADD ESP,0C 6FD08C9D |. C2 0400     RETN 4                 ; Exit 
[Copy to clipboard]  如果没有检测到Fire Enchanted,则跳到Cold Enchanted Function
  如有Fire Enchanted,则火焰抗性增加75% 退出程序
  *4Bh = 75d, 27h = 39d
  ##################################################################
  Cold Enchanted Function
  CF D2Game.6FD08CA0 
CODE: 
6FD08CA0 |> 83F9 12     CMP ECX,12               ; uniquemod 18 (Cold Enchanted)          6FD08CA3 |. 75 18       JNZ SHORT D2GAME.6FD08CBD     ; not Cold Enchanted, jump the Lightning Enchanted Function  6FD08CA5 |. 6A 00       PUSH 0 6FD08CA7 |. 83C3 4B     ADD EBX,4B               ; coldresist ← coldresist+75 6FD08CAA |. 53         PUSH EBX 6FD08CAB |. 6A 2B       PUSH 2B                 ; StatID 43 (coldresist) 6FD08CAD |. 56         PUSH ESI 6FD08CAE |. E8 8B17F2FF   CALL   ; coldresist = coldresist+75 6FD08CB3 |. 5F         POP EDI 6FD08CB4 |. 5D         POP EBP 6FD08CB5 |. 5B         POP EBX 6FD08CB6 |. 5E         POP ESI 6FD08CB7 |. 83C4 0C     ADD ESP,0C 6FD08CBA |. C2 0400     RETN 4                 ; Exit 
[Copy to clipboard]  如果没有检测到Cold Enchanted,则跳到Lightning Enchanted Function
  如有Cold Enchanted,则冰冷抗性增加75% 退出程序
  *12h = 18d, 4Bh = 75d, 2Bh = 43d
  ##################################################################
  Lightning Enchanted Function
  CF D2Game.6FD08CBD 
CODE: 
6FD08CBD |> 83F9 11     CMP ECX,11               ; uniquemod 17 (Lightning Enchanted)  6FD08CC0 |. 75 1C       JNZ SHORT D2GAME.6FD08CDE     ; not Lightning Enchanted, jump the Poison Hit Function 6FD08CC2 |. 8B4424 10     MOV EAX,DWORD PTR SS:[ESP+10]   ; EAX ← lightresist 6FD08CC6 |. 6A 00       PUSH 0 6FD08CC8 |. 83C0 4B     ADD EAX,4B               ; lightresist ← lightresist+75 6FD08CCB |. 50         PUSH EAX 6FD08CCC |. 6A 29       PUSH 29                 ; StatID 41 (lightresist) 6FD08CCE |. 56         PUSH ESI 6FD08CCF |. E8 6A17F2FF   CALL   ; lightresist = lightresist+75      6FD08CD4 |. 5F         POP EDI 6FD08CD5 |. 5D         POP EBP 6FD08CD6 |. 5B         POP EBX 6FD08CD7 |. 5E         POP ESI 6FD08CD8 |. 83C4 0C     ADD ESP,0C 6FD08CDB |. C2 0400     RETN 4                 ; Exit 
[Copy to clipboard]  如果没有检测到Lightning Enchanted,则跳到Poison Hit Function
  如有Lightning Enchanted,则闪电抗性增加75% 退出程序
  *11h = 17d, 4Bh = 75d, 29h = 41d
  ##################################################################
  Poison Hit Function
  CF D2Game.6FD08CDE 
CODE: 
6FD08CDE |> 83F9 17     CMP ECX,17               ; uniquemod 23 (Poison Hit)        6FD08CE1 |. 75 18       JNZ SHORT D2GAME.6FD08CFB     ; not Poison Hit, jump the Mana Burn Function 6FD08CE3 |. 6A 00       PUSH 0              6FD08CE5 |. 83C5 4B     ADD EBP,4B               ; poisonresist ← poisonresist+75 6FD08CE8 |. 55         PUSH EBP 6FD08CE9 |. 6A 2D       PUSH 2D                 ; StatID 45 (poisonresist) 6FD08CEB |. 56         PUSH ESI 6FD08CEC |. E8 4D17F2FF   CALL   ; poisonresist = poisonresist+75 6FD08CF1 |. 5F         POP EDI 6FD08CF2 |. 5D         POP EBP 6FD08CF3 |. 5B         POP EBX 6FD08CF4 |. 5E         POP ESI 6FD08CF5 |. 83C4 0C     ADD ESP,0C 6FD08CF8 |. C2 0400     RETN 4                 ; Exit 
[Copy to clipboard]  如果没有检测到Poison Hit,则跳到Mana Burn Function
  如有Poison Hit,则毒素抗性增加75% 退出程序
  *17h = 23d, 4Bh = 75d, 2Dh = 45d
  ##################################################################
  Mana Burn Function
  CF D2Game.6FD08CFB 
CODE: 
6FD08CFB |> 83F9 19     CMP ECX,19               ; uniquemod 25(Mana Burn) 6FD08CFE |. 75 18       JNZ SHORT D2GAME.6FD08D18     ; not Mana Burn, jump the Spectral Hit Function 6FD08D00 |. 6A 00       PUSH 0                  6FD08D02 |. 83C0 14     ADD EAX,14               ; magicresist ← magicresist+20 6FD08D05 |. 50         PUSH EAX 6FD08D06 |. 6A 25       PUSH 25                 ; StatID 37 (magicresist) 6FD08D08 |. 56         PUSH ESI 6FD08D09 |. E8 3017F2FF   CALL   ; magicresist = magicresist+20 6FD08D0E |. 5F         POP EDI 6FD08D0F |. 5D         POP EBP 6FD08D10 |. 5B         POP EBX 6FD08D11 |. 5E         POP ESI 6FD08D12 |. 83C4 0C     ADD ESP,0C 6FD08D15 |. C2 0400     RETN 4                 ; Exit 
[Copy to clipboard]  如果没有检测到Mana Burn,则跳到Spectral Hit Function
  如有Mana Burn,则魔法抗性增加20% 退出程序
  *19h = 25d, 14h = 20d, 25h = 37d
  ##################################################################
  Spectral Hit Function
  CF D2Game.6FD08D18 
CODE: 
6FD08D18 |> 83F9 1B     CMP ECX,1B                 ; uniquemod 27 (Spectral Hit) 6FD08D1B |. 75 71       JNZ SHORT D2GAME.6FD08D8E       ; not Spectral Hit, jump the Stone Skin Function 6FD08D1D |. 83FB 4B     CMP EBX,4B 6FD08D20 |. 7D 17       JGE SHORT D2GAME.6FD08D39       ; coldresist >= 75, jump D2GAME.6FD08D39  6FD08D22 |. 6A 00       PUSH 0 6FD08D24 |. 83C3 14     ADD EBX,14                 ; coldresist ← coldresist+20 6FD08D27 |. 53         PUSH EBX 6FD08D28 |. 6A 2B       PUSH 2B                   ; StatID 43 (coldresist) 6FD08D2A |. 56         PUSH ESI 6FD08D2B |. E8 0E17F2FF   CALL     ; coldresist = coldresist+20 6FD08D30 |. 83FB 64     CMP EBX,64 6FD08D33 |. 7C 04       JL SHORT D2GAME.6FD08D39       ; coldresist < 100, jump D2GAME.6FD08D39 6FD08D35 |. FF4424 20     INC DWORD PTR SS:[ESP+20]       ; immunities+1 6FD08D39 |> 837C24 20 02   CMP DWORD PTR SS:[ESP+20],2      6FD08D3E |. 7D 61       JGE SHORT D2GAME.6FD08DA1       ; immunities >= 2, jump the Exit Function 6FD08D40 |. 83FF 4B     CMP EDI,4B 6FD08D43 |. 7D 17       JGE SHORT D2GAME.6FD08D5C       ; fireresist >= 75, jump D2GAME.6FD08D5C 6FD08D45 |. 6A 00       PUSH 0 6FD08D47 |. 83C7 14     ADD EDI,14                 ; fireresist ← fireresist+20      6FD08D4A |. 57         PUSH EDI 6FD08D4B |. 6A 27       PUSH 27                   ; StatID 39 (fireresist) 6FD08D4D |. 56         PUSH ESI 6FD08D4E |. E8 EB16F2FF   CALL     ; fireresist = fireresist+20 6FD08D53 |. 83FF 64     CMP EDI,64 6FD08D56 |. 7C 04       JL SHORT D2GAME.6FD08D5C       ; fireresist < 100, jump D2GAME.6FD08D5C 6FD08D58 |. FF4424 20     INC DWORD PTR SS:[ESP+20]       ; immunities+1 6FD08D5C |> 837C24 20 02   CMP DWORD PTR SS:[ESP+20],2 6FD08D61 |. 7D 3E       JGE SHORT D2GAME.6FD08DA1       ; immunities >= 2 , jump the Exit Function 6FD08D63 |. 8B7C24 10     MOV EDI,DWORD PTR SS:[ESP+10]   ; EDI ← lightresist 6FD08D67 |. 83FF 4B     CMP EDI,4B 6FD08D6A |. 7D 35       JGE SHORT D2GAME.6FD08DA1       ; lightresist >= 75, jump the Exit Function 6FD08D6C |. 6A 00       PUSH 0 6FD08D6E |. 83C7 14     ADD EDI,14                 ; lightresist ← lightresist+20 6FD08D71 |. 57         PUSH EDI 6FD08D72 |. 6A 29       PUSH 29                   ; StatID 41 (lightresist) 6FD08D74 |. 56         PUSH ESI 6FD08D75 |. E8 C416F2FF   CALL     ; lightresist = lightresist+20 6FD08D7A |. 83FF 64     CMP EDI,64 6FD08D7D |. 7C 22       JL SHORT D2GAME.6FD08DA1       ; lightresist < 100, jump the Exit Function 6FD08D7F |. 8B4424 20     MOV EAX,DWORD PTR SS:[ESP+20]   ; EAX ← immunities 6FD08D83 |. 5F         POP EDI                    6FD08D84 |. 5D         POP EBP                    6FD08D85 |. 5B         POP EBX                    6FD08D86 |. 40         INC EAX                   ; immunities+1 6FD08D87 |. 5E         POP ESI 6FD08D88 |. 83C4 0C     ADD ESP,0C 6FD08D8B |. C2 0400     RETN 4                   ; Exit 
[Copy to clipboard]  如果没有检测到Spectral Hit,则跳到Stone Skin Res Function
  如有Spectral Hit,若resist < 75,则resist+20 检测顺序coldresist, fireresist, lightresist coldresist, fireresist步骤若免疫数 ≥ 2,则跳到Exit Function 若免疫数〈 2,依序执行下一地址的指令,在执行到最后的lightresist后,若lightresist < 100,则直接跳到Exit Function,若lightresist >= 100,则在依序执行完免疫数量+1后退出程序
  *Spectral Hit增加冰冷、火焰、闪电各20%抗性,但前提是怪物当前抗性 < 75。这也是为什么大部分情况下Spectral Hit不能增加抗性的原因。 *1Bh = 27d, 4Bh = 75d, 14h = 20d, 2Bh = 43d, 64h = 100d, 27h = 39d, 29h = 41d
  ##################################################################
  Stone Skin Res Function
  CF D2Game.6FD08D8E 
CODE: 
6FD08D8E |> 83F9 1C     CMP ECX,1C               ; uniquemod 28 (Stone Skin) 6FD08D91 |. 75 0E       JNZ SHORT D2GAME.6FD08DA1     ; not Stone Skin , jump the Exit Function 6FD08D93 |. 6A 00       PUSH 0 6FD08D95 |. 83C2 32     ADD EDX,32               ; damageresist ← damageresist+50 6FD08D98 |. 52         PUSH EDX 6FD08D99 |. 6A 24       PUSH 24                 ; StatID 36 (damageresist) 6FD08D9B |. 56         PUSH ESI 6FD08D9C |. E8 9D16F2FF   CALL   ; damageresist = damageresist+50 
[Copy to clipboard]  如果没有检测到Stone Skin,则跳到Exit Function
  如有Stone Skin,则物理抗性增加50% 依序执行下一地址D2Game.6FD08DA1的指令
  *1Ch = 28d, 32h = 50d, 24h = 36d
  ##################################################################
  Exit Function
  CF D2Game.6FD08DA1 
CODE: 
6FD08DA1 |> 5F         POP EDI 6FD08DA2 |. 5D         POP EBP 6FD08DA3 |. 5B         POP EBX 6FD08DA4 |> 5E         POP ESI 6FD08DA5 |. 83C4 0C     ADD ESP,0C 6FD08DA8 \\\\. C2 0400     RETN 4 
[Copy to clipboard]  退出程序段 *这里的POP/ADD和程序最初的PUSH/SUB相对应
  由以上的解析我们可以看到,对金怪的Mod奖励检测是周而复始的,也就是说每检测到一个Mod奖励,执行后退出程序 → 然后检测到下一个Mod奖励,再执行再退出程序 → 再检测到下一个Mod奖励,再执行再退出程序………… 
  皮肤硬化(Stone Skin)增加怪物1倍的防御值,即防御值 = 原基础防御值×2 魔法抵抗(Magic Resistant)当前相关抗性小于100%,则依次增加怪物 40% 冰抗、火抗、电抗 火焰强化(Fire Enchanted)增加怪物 75% 火抗 冰冷强化(Cold Enchanted)增加怪物 75% 冰抗 闪电强化(Lightning Enchanted)增加怪物 75% 电抗 毒素一击(PoisonHit) 增加怪物 75% 毒抗,这个Mod名称不显示在怪物名字下方 燃烧法力(Mana Burn)增加怪物 20% 魔抗 幽灵一击(Special Hit)当前相关抗性小于75%,则依次增加怪物 20% 冰抗、火抗、电抗  皮肤硬化(Stone Skin)增加怪物 50% 物抗
  以上只要即时检测到免疫数≥2即退出程序
  ≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈清新脱俗的分割线≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈
  我们来举些例子 ①Hell难度的Pindleskin  基础抗性 火抗 0% , 电抗 33% ,冰抗 50% ,毒抗 100%,物抗 50%,魔抗 50% 固定奖励技能是Fire Enchanted  随机奖励依次为Spectral Hit、Cold Enchanted Fire Enchanted作用:冰抗 50% ,火抗 0%+75% = 75% ,电抗 33% ,毒抗 100%,物抗 50%,魔抗 50% Spectral Hit作用:冰抗 50%+20% = 70% ,火抗 ≥ 75% 不加,电抗 33%+20% = 53%,毒抗 100%,物抗 50%,魔抗 50% Cold Enchanted作用:冰抗 70%+75% = 145% ,火抗 75% ,电抗 53%,毒抗 100%,物抗 50%,魔抗 50% 最终抗性为 冰抗 145% ,火抗 75% ,电抗 53%,毒抗 100%,物抗 50%,魔抗 50%,冰毒两系免疫
  ②还是Hell难度的Pindleskin 基础抗性 火抗 0% , 电抗 33% ,冰抗 50% ,毒抗 100%,物抗 50%,魔抗 50% 固定奖励技能是Fire Enchanted  随机奖励依次为Cold Enchanted、Spectral Hit Fire Enchanted作用:冰抗 50% ,火抗 0%+75% = 75% ,电抗 33% ,毒抗 100%,物抗 50%,魔抗 50% Cold Enchanted作用:冰抗 50%+75% = 125% ,火抗 75% ,电抗 33%,毒抗 100%,物抗 50%,魔抗 50% 检测到免疫 ≥ 2 不进行Spectral Hit的抗性奖励 最终抗性为 冰抗 125% ,火抗 75% ,电抗 33%,毒抗 100%,物抗 50%,魔抗 50%,冰毒两系免疫
  ③假设Hell难度的某随机金怪 基础抗性 火抗 60% ,电抗 60% ,冰抗 60% ,毒抗 50%,物抗 50%,魔抗 50% 奖励依次为Cold Enchanted、Magic Resistant、Special Hit Cold Enchanted作用:冰抗 60%+75% = 135% ,火抗 60% ,电抗 60%,毒抗 50%,物抗 50%,魔抗 50% Magic Resistant作用: 冰抗 ≥ 100% 不加,火抗 60%+40% = 100% 检测到免疫 ≥ 2 不进行Magic Resistant对电抗的奖励 不进行Spectral Hit的抗性奖励 最终抗性为 冰抗 135% ,火抗 100% ,电抗 60%,毒抗 50%,物抗 50%,魔抗 50%,冰火两系免疫
  ≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈清新脱俗的分割线≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈
  附1: StatID List CF ItemStatCost.txt 
CODE: 
Stat       ID armorclass   31 damageresist   36 magicresist   37 fireresist   39 lightresist   41 coldresist   43 poisonresist   45 
[Copy to clipboard] 
  附2: UniquemodID List CF MonUMod.txt 
CODE: 
uniquemod   id resist       8 fire       9 lightning   17 cold       18  poisonhit   23  manahit     25  spectralhit   27  stoneskin   28 
[Copy to clipboard] 
  附3: D2Common.#10590 Function CF D2Common.6FD5CDA0 
CODE: 
6FD5CDA0 >/$ 8B4424 0C     MOV EAX,DWORD PTR SS:[ESP+C] 6FD5CDA4 |. 53         PUSH EBX 6FD5CDA5 |. 8B5C24 0C     MOV EBX,DWORD PTR SS:[ESP+C] 6FD5CDA9 |. 56         PUSH ESI 6FD5CDAA |. 8B7424 0C     MOV ESI,DWORD PTR SS:[ESP+C] 6FD5CDAE |. 8B4E 5C     MOV ECX,DWORD PTR DS:[ESI+5C] 6FD5CDB1 |. 57         PUSH EDI 6FD5CDB2 |. 8B7C24 1C     MOV EDI,DWORD PTR SS:[ESP+1C] 6FD5CDB6 |. 57         PUSH EDI 6FD5CDB7 |. 50         PUSH EAX 6FD5CDB8 |. 53         PUSH EBX 6FD5CDB9 |. 51         PUSH ECX 6FD5CDBA |. E8 21FBFFFF   CALL D2COMMON.#10564 6FD5CDBF |. 85C0       TEST EAX,EAX 6FD5CDC1 |. 74 17       JE SHORT D2COMMON.6FD5CDDA 6FD5CDC3 |. 833E 00     CMP DWORD PTR DS:[ESI],0 6FD5CDC6 |. 75 12       JNZ SHORT D2COMMON.6FD5CDDA 6FD5CDC8 |. 8BC3       MOV EAX,EBX 6FD5CDCA |. 8B5E 5C     MOV EBX,DWORD PTR DS:[ESI+5C] 6FD5CDCD |. 0FB7D7       MOVZX EDX,DI 6FD5CDD0 |. C1E0 10     SHL EAX,10 6FD5CDD3 |. 03C2       ADD EAX,EDX 6FD5CDD5 |. E8 A6DEFFFF   CALL D2COMMON.6FD5AC80 6FD5CDDA |> 5F         POP EDI 6FD5CDDB |. 5E         POP ESI 6FD5CDDC |. 5B         POP EBX 6FD5CDDD \\\\. C2 1000     RETN 10 
[Copy to clipboard] 
  附4: D2Common.#10061 Function CF D2Common.6FD5B2A0 
CODE: 
6FD5B2A0 >/$ 8B4424 04     MOV EAX,DWORD PTR SS:[ESP+4] 6FD5B2A4 |. 85C0       TEST EAX,EAX 6FD5B2A6 |. 75 03       JNZ SHORT D2COMMON.6FD5B2AB 6FD5B2A8 |. C2 0C00     RETN 0C 6FD5B2AB |> 53         PUSH EBX 6FD5B2AC |. 8B58 5C     MOV EBX,DWORD PTR DS:[EAX+5C] 6FD5B2AF |. 85DB       TEST EBX,EBX 6FD5B2B1 |. 75 06       JNZ SHORT D2COMMON.6FD5B2B9 6FD5B2B3 |. 33C0       XOR EAX,EAX 6FD5B2B5 |. 5B         POP EBX 6FD5B2B6 |. C2 0C00     RETN 0C 6FD5B2B9 |> 57         PUSH EDI 6FD5B2BA |. 8B7C24 10     MOV EDI,DWORD PTR SS:[ESP+10] 6FD5B2BE |. 85FF       TEST EDI,EDI 6FD5B2C0 |. 7C 20       JL SHORT D2COMMON.6FD5B2E2 6FD5B2C2 |. 8B0D 8CEEDE6F MOV ECX,DWORD PTR DS:[sgptDataTables]   ; D2COMMON.6FDF0790 6FD5B2C8 |. 3BB9 D40B0000 CMP EDI,DWORD PTR DS:[ECX+BD4] 6FD5B2CE |. 7D 12       JGE SHORT D2COMMON.6FD5B2E2 6FD5B2D0 |. 8B91 CC0B0000 MOV EDX,DWORD PTR DS:[ECX+BCC] 6FD5B2D6 |. 8BC7       MOV EAX,EDI 6FD5B2D8 |. 69C0 44010000 IMUL EAX,EAX,144 6FD5B2DE |. 03C2       ADD EAX,EDX 6FD5B2E0 |. 75 07       JNZ SHORT D2COMMON.6FD5B2E9 6FD5B2E2 |> 5F         POP EDI 6FD5B2E3 |. 33C0       XOR EAX,EAX 6FD5B2E5 |. 5B         POP EBX 6FD5B2E6 |. C2 0C00     RETN 0C 6FD5B2E9 |> 50         PUSH EAX 6FD5B2EA |. 0FB74424 18   MOVZX EAX,WORD PTR SS:[ESP+18] 6FD5B2EF |. C1E7 10     SHL EDI,10 6FD5B2F2 |. 03F8       ADD EDI,EAX 6FD5B2F4 |. E8 97FDFFFF   CALL D2COMMON.6FD5B090 6FD5B2F9 |. 5F         POP EDI 6FD5B2FA |. 5B         POP EBX 6FD5B2FB \\\\. C2 0C00     RETN 0C 
[Copy to clipboard] 
  |    
 
 
                                       | 
                                     
                                    
                                      | 
                                       | 
                                     
                                    
                                      | 
  | 
                                     
                                    
                                      | 
                                       | 
                                     
                                    
                                      | ·暗黑破坏神中文网 ·点击:3159次 · Www.Diablo2.Com.Cn ·  | 
                                     
           
              | 
           
                                    
                                       | 
                                     
                                    
                                       |                                      
                                    
                                       | 
                                     
                                        
                                          | ..:: 版权声明 ::.. | 
                                         
                                        
                                          · 凡本网署名文字、图片和音视频稿件,版权均属 暗黑破坏神中文网
[Diablo2.Com.cn] 所有。  · 任何媒体、网站或个人未经本网协议授权不得转载、链接、转贴或以其他方式复制发表。 · 本网协议授权的媒体、网站,在转载使用时必
须注明“稿件来源: 暗黑破坏神中文网[Diablo2.Com.cn] ”。  · 未经本站明确许可,任何网站不得盗链及抄袭;如引用页面,请务必注明来自本站(
含域名连接),谢谢!  | 
                                                                                
                                     | 
                                   
                                  
                                    |   | 
                                   
                                 
                               | 
                             
                            
                               | 
                             
                           
                         | 
                       
                      
                        |   | 
                       
                     
                   | 
                   | 
                  
                
                  
                    
                      ..::暗黑破坏神III游戏下载::.. | 
                   
                  
                    | 
                      
                    
 
 
                
                                      
                     | 
                   
                  
                      | 
                   
                 
               |