请选择 进入手机版 | 继续访问电脑版

13号避难所

 找回密码
 立即注册
搜索
查看: 6377|回复: 9

FO1&2的命中率計算

[复制链接]
发表于 2012-11-10 22:15:31 | 显示全部楼层 |阅读模式
前言:
  • 資料出自FOnline開發者對FO2逆向工程得到的虛擬碼(pseudocode),因為講解其中某段的運作方式沒啥意義,而且我也不知道他們當初的設計邏輯,所以我直接把所有可能性組合全拆成條列式了,至少簡單明瞭一些。
  • pseudocode是FO2的,不過在讀code與驗證過程中,我順便拿FO1驗證了一下自己的假設,所以這份資料也包括了FO1的計算情況。
  • 這份資料我只有貼在巴哈姆特、BN13、TROW,要轉載到其他地方請先和我聯絡並取得我的同意,謝謝。
 
命中率計算:
  • 首先看是用什麼戰鬥技能,計算出命中率(ToHit)的技能基值:

    ★徒手(Unarmed)/近戰(Melee):很簡單,ToHit = Skill

    ★遠距離武器,這部份就複雜了:

    PE:角色現在的感知數值,會受到藥物或傷殘影響,眼盲效果是PE -5。
    Range:距離,是到目標腳下而不是到“旁邊”的格子數,最低為1。

    ※攻擊者為FO2玩家,狀態正常:
    (1) 武器perk不是Long Range或Scope Range:
    ToHit = Skill + (PE-2)*8 - Range*4 (公式1)

    (2) 武器perk為Long Range:
    .
    • 距離小於(PE*2)-8(只在PE >= 5成立):
      ToHit = Skill + PE*8 (等於在這段距離內,命中率都是定值)
      .
    • 距離在(PE*2)-8以上:照公式1計算,另外再加上(PE-2)*8的加成。
      ToHit = Skill + (PE-2)*16 - Range*4
    .
    (3) 武器perk為Scope Range:
    .
    • 距離在7格以內:
      ToHit = Skill - (Range+8)*4 (距離7格時命中最低)
      .
    • 距離大於8但小於(PE*3)-10(只在PE >= 6成立):
      ToHit = Skill + PE*8
      .
    • 距離大於8與(PE*3)-10兩者:照公式1計算,另外再加上(PE-2)*12的加成。
      ToHit = Skill + (PE-2)*20 - Range*4

    ** 以上所有計算,如果perk有選Sharpshooter,原版時每一級+8,如果有用sfall 3.6以前的Sharpshooter fix則是+16,sfall 3.7之後則是上面所有計算中的PE都以PE+2代換。

    ※攻擊者為NPC或是FO1玩家,狀態正常:
    (1) 武器perk不是Long Range或Scope Range:
    ToHit = Skill + PE*8 - Range*4 (公式2)

    (2) 武器perk為Long Range:
    .
    • 距離小於PE*2:
      ToHit = Skill + PE*8
      .
    • 距離在PE*2以上:照公式2計算,另外再加上PE*8的加成。
      ToHit = Skill + PE*16 - Range*4
    .
    (3) 武器perk為Scope Range:
    .
    • 距離在7格以內:
      ToHit = Skill - (Range+8)*4
      .
    • 距離大於8但小於PE*3(只在PE >= 3成立):
      ToHit = Skill + PE*8
      .
    • 距離大於8與PE*3兩者:照公式2計算,另外再加上PE*12的加成。
      ToHit = Skill + PE*20 - Range*4
    .
    ** 以上所有計算,如果perk有選Sharpshooter,原版時每一級+8,如果有用sfall 3.6以前的Sharpshooter fix則是+16,sfall 3.7之後則是上面所有計算中的PE都以PE+2代換。

    ※攻擊者為FO2玩家,眼盲:
    (1) 武器perk不是Long Range或Scope Range:
    .
    • 距離小於(PE*2)-4(只在PE >= 3成立):仍照公式1計算。
      ToHit = Skill + (PE-2)*8 - Range*4

      ** 原版Sharpshooter每一級在計算綠色距離條件時+2(有sfall 3.6以前+4)、ToHit +8(有sfall 3.6以前+16),sfall 3.7之後則是上面所有計算中的PE都以PE+2代換。
      .
    • 距離在(PE*2)-4以上:
      ToHit = Skill + (PE-2)*24 - Range*12 (公式3)

      ** 原版Sharpshooter每一級在計算綠色距離條件時+2(有sfall 3.6以前+4)、ToHit +24(有sfall 3.6以前+48),sfall 3.7之後則是上面所有計算中的PE都以PE+2代換。
      .
    (2) 武器perk為Long Range:
    .
    • 距離小於(PE*2)-8:
      ToHit = Skill + PE*8

      ** 原版Sharpshooter每一級+8(有sfall 3.6以前+16),sfall 3.7之後則是上面所有計算中的PE都以PE+2代換。
      .
    • 距離大於(PE*2)-8但小於(PE*4)-8(只在PE >= 3成立):照正常2-B計算。
      ToHit = Skill + (PE-2)*16 - Range*4
       
      ** 原版Sharpshooter每一級在計算綠色距離條件時+2(有sfall 3.6以前+4)、ToHit +8(有sfall 3.6以前+16),sfall 3.7之後則是上面所有計算中的PE都以PE+2代換。
      .
    • 距離在(PE*4)-8以上:照公式3計算,另外再加上(PE-2)*24的加成。
      ToHit = Skill + (PE-2)*48 - Range*12
       
      ** 原版Sharpshooter每一級在計算綠色距離條件時+2(有sfall 3.6以前+4)、ToHit +24(有sfall 3.6以前+48),sfall 3.7之後則是上面所有計算中的PE都以PE+2代換。
    .
    (3) 武器perk為Scope Range:
    .
    • 距離在7格以內:
      ToHit = Skill - (Range+8)*12

      ** 原版Sharpshooter每一級-24(有sfall 3.6以前-48),sfall 3.7之後則是上面所有計算中的PE都以PE+2代換。
      .
    • 距離大於8但小於(PE*3)-10(只在PE >= 6成立):
      ToHit = Skill + PE*8

      ** 原版Sharpshooter每一級+8(有sfall 3.6以前+16),sfall 3.7之後則是上面所有計算中的PE都以PE+2代換。
      .
    • 距離大於8或(PE*3)-10(取較大者),但小於(PE*5)-10(只在PE >= 4成立),照正常3-C計算。
      ToHit = Skill + (PE-2)*20 - Range*4

      ** 原版Sharpshooter每一級在計算綠色距離條件時+2(有sfall 3.6以前+4)、ToHit +8(有sfall 3.6以前+16),sfall 3.7之後則是上面所有計算中的PE都以PE+2代換。
      .
    • 距離大於8與(PE*5)-10兩者:照公式3計算,另外再加上(PE-2)*36的加成。
      ToHit = Skill + (PE-2)*60 - Range*12

      ** 原版Sharpshooter每一級在計算綠色距離條件時+2(有sfall 3.6以前+4)、ToHit +24(有sfall 3.6以前+48),sfall 3.7之後則是上面所有計算中的PE都以PE+2代換。

    ※攻擊者為NPC或是FO1玩家,眼盲:
    (1) 武器perk不是Long Range或Scope Range:
    .
    • 距離小於PE*2,則仍照公式2計算。
      ToHit = Skill + PE*8 - Range*4

      ** 原版Sharpshooter每一級在計算綠色距離條件時+2(有sfall 3.6以前+4)、ToHit +8(有sfall 3.6以前+16),sfall 3.7之後則是上面所有計算中的PE都以PE+2代換。
      .
    • 距離在PE*2以上:
      ToHit = Skill + PE*24 - Range*12 (公式4)

      ** 原版Sharpshooter每一級在計算綠色距離條件時+2(有sfall 3.6以前+4)、ToHit +24(有sfall 3.6以前+48),sfall 3.7之後則是上面所有計算中的PE都以PE+2代換。
    .
    (2) 武器perk為Long Range:
    .
    • 距離小於PE*2:
      ToHit = Skill + PE*8

      ** 原版Sharpshooter每一級+8(有sfall 3.6以前+16),sfall 3.7之後則是上面所有計算中的PE都以PE+2代換。
      .
    • 距離大於PE*2但小於PE*4,照正常2-B計算。
      ToHit = Skill + PE*16 - Range*4

      ** 原版Sharpshooter每一級在計算綠色距離條件時+2(有sfall 3.6以前+4)、ToHit +8(有sfall 3.6以前+16),sfall 3.7之後則是上面所有計算中的PE都以PE+2代換。
      .
    • 距離在PE*4以上:照公式4計算,另外再加上PE*24的加成。
      ToHit = Skill + PE*48 - Range*12

      ** 原版Sharpshooter每一級在計算綠色距離條件時+2(有sfall 3.6以前+4)、ToHit +24(有sfall 3.6以前+48),sfall 3.7之後則是上面所有計算中的PE都以PE+2代換。
    .
    (3) 武器perk為Scope Range:
    .
    • 距離在7格以內:
      ToHit = Skill - (Range+8)*12

      ** 原版Sharpshooter每一級-24(有sfall 3.6以前-48),sfall 3.7之後則是上面所有計算中的PE都以PE+2代換。
      .
    • 距離大於8但小於PE*3(只在PE >= 3成立):
      ToHit = Skill + PE*8

      ** 原版Sharpshooter每一級+8(有sfall 3.6以前+16),sfall 3.7之後則是上面所有計算中的PE都以PE+2代換。
      .
    • 距離大於8或PE*3(取較大者),但小於PE*5(只在PE >= 2成立),照正常3-C計算。
      ToHit = Skill + PE*20 - Range*4

      ** 原版Sharpshooter每一級在計算綠色距離條件時+2(有sfall 3.6以前+4)、ToHit +8(有sfall 3.6以前+16),sfall 3.7之後則是上面所有計算中的PE都以PE+2代換。
      .
    • 距離大於8與PE*5兩者:照公式4計算,另外再加上PE*36的加成。
      ToHit = Skill + PE*60 - Range*12

      ** 原版Sharpshooter每一級在計算綠色距離條件時+2(有sfall 3.6以前+4)、ToHit +24(有sfall 3.6以前+48),sfall 3.7之後則是上面所有計算中的PE都以PE+2代換。
      .
  • 如果力量低於武器需求,每少1點命中率-20。
    玩家perk有選Weapon Handling的話,在這邊計算時力量+3。
    .
  • 如果玩家trait有選One Hander而且是用單手武器,命中率+20,雙手武器則-40。
    武器是單手或雙手取決於武器proto內的設定,不是看角色持用外觀。
    .
  • 如果武器perk為Accurate,命中率+20。
    .
  • 減去目標AC,在FO2會受到彈藥參數內的AC mod影響。
    FO1有彈藥參數的設定值,但完全沒用在遊戲內。
    .
  • 瞄準攻擊則計算瞄準部位的命中減免,如果是徒手/近戰攻擊,命中減免減半。
    瞄準部位軀幹雙腿雙臂胯下頭部眼睛
    命中減免0-20 -30-30-40-60
    .
  • 如果目標是占多個六角格的,例如死爪(deathclaw)或是多腳獸(centaur)之類,命中率+15。
    .
  • 如果攻擊者是玩家,則檢查目標的光照度(看目標周圍)決定命中減免,從稍暗到完全黑暗分三階段而有-10、-25、-40。
    若武器perk為Night Sight,則目標光照度設為最亮(無減免)。
    另外NPC命中率不受黑暗影響,所以別以為你在躲在暗處,敵人就比較打不到你XD
    .
  • 攻擊者如果眼盲,命中率-25。
    .
  • 目標若是倒在地上,命中率+40。
    .
  • 攻擊者如果不是玩家或隊友,再看遊戲設定的戰鬥難易度,簡單(Wimpy)命中率+20,困難(Rough)則-20。
    .
  • 最後計算與顯示出來的命中率上限是95%。
.
附註:
  • 徒手/近戰的情況單純就戰鬥面來看,你甚至可以建個PE 1的大近視也不影響任何戰鬥表現,當然實際上還是建議再怎麼低也別低於5,至少perk可以選Awareness。
  • Sharpshooter的實際作用和說明不符,因為它的+2並不是真的加在PE上。sfall 3.6以前的修正方式是把+2變成+4,所以相關加減全加倍了,到sfall 3.7之後才把+2真的加到PE上。
  • FO2玩家有一開始計算就先PE -2的nerf,所以NPC在其他條件相同的情況下,命中率會比你高。
  • FO1沒有Scoped Range這項武器perk,所以遠距攻擊最後那段我只有導出數學模型但無法驗證,不過應該不會差到哪去。
  • FOnline命中率計算基本上也是照FO2的方式運作。
发表于 2012-11-11 13:32:05 | 显示全部楼层



想进一步请教下,徒手/近戰技能高的情况下,PE1的人物显示命中率95%,与PE10的人物相比,是不是有什么潜在损害呢?如果PE1的玩家与PE10的玩家PK,是不是PE10的玩家更容易打残对方或造成更大伤害?

另外,版主这类技术文章能不能整成系列,“……伤害值计算”、“……即死率计算”,更有范啊
 楼主| 发表于 2012-11-11 13:45:50 | 显示全部楼层
傷害公式或暴擊機率/效果都和PE無關,所以至少帳面上沒有。
PK的部份你應該是指FOnline,不過FOnline的部份我就不太去注意了,因為我基本上不玩MMO。
发表于 2018-12-19 14:30:04 | 显示全部楼层
(2) 武器perk為Long Range:
A.距離小於(PE*2)-8(只在PE >= 5成立):
ToHit = Skill + PE*8 (等於在這段距離內,命中率都是定值)
B.距離在(PE*2)-8以上:照公式1計算,另外再加上(PE-2)*8的加成。
ToHit = Skill + (PE-2)*16 - Range*4

而在您写的另外一个武器的額外能力(perk)帖子里面却有所不同.
http://www.bn13.com/forum.php?mo ... &highlight=perk

Weapon Long Range:命中率提高(PE-2)*8%。
一代除了普通BB槍之外,所有的步槍(包括雷射和電漿步槍與其修改版)、多管機槍(包括雷射)、火箭砲都有此perk。
二代的全新武器沒有任何一個有用到這個perk,像是FAL、XL70E3、復仇者和擁護者多管機槍都沒有。


FAL、XL70E3、復仇者和擁護者多管機槍都沒有perk的武器,是下面这个公式还是PE不加命中?
(1) 武器perk不是Long Range或Scope Range:
ToHit = Skill + (PE-2)*8 - Range*4 (公式1)

 楼主| 发表于 2018-12-19 14:50:48 | 显示全部楼层
武器額外能力那篇很舊了,是在我還沒有足夠知識去翻內部運作之前翻譯當時查得到的資料寫的。
沒有perk的槍械在你正常狀況下都是採公式1。

发表于 2018-12-19 14:57:23 | 显示全部楼层
novarain 发表于 2018-12-19 14:50
武器額外能力那篇很舊了,是在我還沒有足夠知識去翻內部運作之前翻譯當時查得到的資料寫的。
沒有perk的槍 ...

哦,是这样呀.
谢谢了.
 楼主| 发表于 2020-9-27 12:47:50 | 显示全部楼层
前些時候因為測試其他部份需要所以回頭看了一下,實際上遠程武器部份還有另一個計算是看有多少活人擋在射線上,占多個六角格的角色在計數時算2人,然後每一人命中率-10%。

但這邊其實有bug:引擎檢查角色旗標(死亡或占多個六角格)時不是看該擋路的角色,而是“攻擊目標”的旗標。
所以變成就算屍體也被採計在內(屍體本身物件類別是人物,但檢查死亡旗標是看攻擊目標,當然目標不可能死了,不然就不會有命中率計算的問題),而且如果目標是占多六角格的,命中懲罰等於直接乘2(所有擋路的都被算成2人)
於是就順便修了這個bug,現在檢查角色旗標會看擋路的人,另外除了死掉的之外,被擊倒擊暈的在算人數時也會被排除(都躺著了還怎麼擋你瞄準)
发表于 2020-9-28 06:00:48 | 显示全部楼层
novarain 发表于 2020-9-27 12:47
前些時候因為測試其他部份需要所以回頭看了一下,實際上遠程武器部份還有另一個計算是看有多少活人擋在射線 ...

是在最新的sfall里修复了这个bug吧
 楼主| 发表于 2020-9-28 07:31:52 | 显示全部楼层
Faloutfans 发表于 2020-9-28 06:00
是在最新的sfall里修复了这个bug吧

要到下一版4.2.8/3.8.28。
发表于 2020-9-29 08:30:16 | 显示全部楼层
novarain 发表于 2020-9-28 07:31
要到下一版4.2.8/3.8.28。

"我们在这15年了"
好评
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Archiver|13号避难所

GMT+8, 2024-3-29 16:07 , Processed in 0.057649 second(s), 14 queries .

快速评论 返回顶部 返回列表