F2: damage calculation change, a FIX v5,作者為Glovz
https://www.nma-fallout.com/threads/f2-damage-calculation-change-a-fix-v3-by-my-count.200361/Glovz從很早之前就試著修正穿甲彈的問題也做了各種嘗試,最後是到v5(第五版)。Glovz傷害計算修正最主要的更動有兩點:
- 原本彈藥傷害修正的除數與被除數是做為傷害值的比例,現在兩者變成目標裝甲DT和DR的除數,這點算是相對原版和YAAM來說比較不直覺的地方。
- 本來除法運算是捨去小數不進位,Glovz傷害計算修正用了自己帶有小數進位的除法,小數進位方式採四捨六入五成雙(Banker's Rounding)。
代數定義與原版相同:
- ND - 傷害淨值。
- RD - 擲骰得出的攻擊傷害值。
- RB - perk有選Bonus Ranged Damage又是以遠距武器攻擊時的額外傷害值,每一級+2。
- CM - 暴擊傷害乘數,沒有暴擊時為2,暴擊時依照傷害效果表內的乘數。
- armDR - 裝甲DR值,包括一些perk加上的部份。
- armDT - 裝甲DT值。
- amX - 彈藥傷害修正的被除數。
- amY - 彈藥傷害修正的除數。
- amDRM - 彈藥的DR修正值,原版公式內唯一允許為負數的數值。
- CD - 戰鬥難易度設定值,簡單75、普通100、困難125,如果攻擊者是玩家或隊友則固定為100。
※計算流程:
- 確定最初的傷害淨值,如果有Bonus Ranged Damage又是遠距攻擊就一併加上:ND = RD + RB
- 如果目標裝甲DT小於等於0,就再檢查目標裝甲DR,若仍小於等於0則直接跳到第12步進行額外傷害計算,不然接到第6步繼續。
- 限制彈藥傷害修正的除數,最小值為1。
- 如果目標裝甲DT大於0,就把裝甲DT除以彈藥傷害修正的除數:DT = armDT / amY
- 傷害淨值減去修正後的裝甲DT:ND = ND - DT,如果小於等於0就等於沒傷害然後進行下一次迴圈或離開。
- 檢查目標裝甲DR,小於等於0就跳到第13步,另外彈藥DR修正值不得為正數,如果是正數就修改為同絕對值的負數。
- 把彈藥DR修正值加上目標裝甲DR:armDR + amDRM
- 檢查戰鬥難易度設定值,若CD大於100目標裝甲DR就減20(CD' = -20),小於100則目標裝甲DR加20(CD' = 20),然後計算出目標DR總值:DR = armDR + amDRM + CD'
- 限制彈藥傷害修正的被除數,最小值為1,然後將目標DR總值除以彈藥傷害修正的被除數:DR = DR / amX
- 傷害值乘上修正後的裝甲DR,然後除以100,此即為DR減去的傷害量:temp = (ND * DR) / 100
- 傷害值減去DR抵掉的傷害量:ND = ND - temp,如果小於等於0就等於沒傷害然後進行下一次迴圈或離開。
- 只有在第2步目標裝甲DT與DR皆小於等於0(即目標無裝甲)才會進行此步驟,第11步結束不會接到這邊而是接著第13步。
(A) 如果彈藥傷害修正的被除數小於等於1,且除數大於1,就把傷害值乘以10再除以100,然後加回傷害值中:ND = ND + (ND * 10) / 100
(B) 如果彈藥傷害修正的被除數大於1,且除數小於等於1,就把傷害值乘以20再除以100,然後加回傷害值中:ND = ND+ (ND * 20) / 100
(C) 如果彈藥傷害修正的被除數與除數皆大於1,就把傷害值乘以15再除以100,然後加回傷害值中:ND = ND + (ND * 15) / 100
- 如果是暴擊(CM > 2),就把傷害值乘以暴擊傷害乘數,再除以2,這一步的小數捨去:ND = (ND * CM) / 2
- 和原本一樣把各個子彈傷害加總(如果是用連發攻擊)就是遊戲中顯示出來的傷害值了。
▲在不計較流程順序和小數捨去的情況,Glovz修正的單發傷害計算可以表達如下:
![]()
原版除了武器有貫穿屬性或暴擊擲出穿甲效果之外無法修改裝甲DT,彈藥只能影響DR,而YAAM則是先扣DT,要等DT扣完才能動到DR。Glovz修正讓彈藥可以同時減少裝甲DT與DR,也由於Glovz一開始設計時有考慮到和遊戲原始的彈藥參數相容,所以就算不修改彈藥proto檔案也能讓JHP和AP的特性發揮出來,只是一些彈藥的擊穿DR效果會變得太過有效,而能量武器的傷害則不會有變動(因為電池沒有什麼特別的彈藥屬性),雷射武器還是一樣弱。
Glovz提出的新彈藥參數如下表:
彈藥 |
AC修正值 |
DR修正值 |
彈藥X值 |
彈藥Y值 |
10mm JHP |
0 |
0 |
2 |
1 |
10mm AP |
-5 |
0 |
1 |
2 |
.44 Magnum JHP |
0 |
-10 |
2 |
1 |
.44 Magnum FMJ |
-5 |
-10 |
2 |
2 |
.223 FMJ |
-15 |
-15 |
2 |
2 |
12 ga. Shotgun Shells |
-15 |
0 |
3 |
1 |
5mm JHP |
0 |
-15 |
2 |
1 |
5mm AP |
-5 |
-15 |
1 |
2 |
14mm AP |
-5 |
-30 |
1 |
2 |
7.62mm |
-10 |
-20 |
2 |
2 |
9mm Ball |
0 |
0 |
1 |
1 |
9mm |
0 |
0 |
2 |
1 |
.45 Caliber |
0 |
-5 |
2 |
1 |
BB's |
0 |
0 |
1 |
1 |
HN Needler Cartridge |
-20 |
-5 |
1 |
1 |
HN AP Needler Cartridge |
-20 |
-5 |
1 |
2 |
4.7mm Caseless |
-5 |
-25 |
1 |
2 |
2mm EC |
-25 |
-20 |
1 |
3 |
Flamethrower Fuel |
-20 |
0 |
1 |
1 |
Flamethrower Fuel MKII |
-20 |
-15 |
1 |
1 |
Explosive Rocket |
-10 |
0 |
1 |
1 |
Rocket AP |
-10 |
0 |
1 |
2 |
Small Energy Cell |
-20 |
0 |
2 |
1 |
Micro Fusion Cell |
-20 |
0 |
2 |
1 |
Robo Rocket Ammo (此彈種實際上未使用) |
-10 |
-10 |
1 |
1 |
他也做了個HTML/JavaScript版本的傷害計算機,可以列出各彈藥對上所有裝甲的傷害值,同時列出原版數值供對照:
http://di.proximitystore.com/newCalculator.html(原網頁已死,下載的RAR檔裡面有。)
Glovz傷害計算修正整套用下來,.223與7.62mm的連發武器會比原版更強悍,特別是對上重裝甲目標。明顯例子之一就是Enclave鑽油平台最後一戰,因為Frank Horrigan是占多個六角格的人物,機槍砲塔的掃射攻擊判定不太會偏到其他目標,現在它們吃.223 FMJ的Heavy Dual Minigun對他一掃很容易就有一兩百的傷害(單發4~10),在開啟反暴亂模式下他幾乎活不過一個回合,當然要是沒開反暴動模式的話就換你痛苦了,就算全隊都穿動力裝甲也很容易被全滅。
※下載:因為原討論串內的下載連結已經失效,所以我放到自己的MediaFire空間:
https://www.mediafire.com/file/qcevmzgg7mp0ler/Glovz_Fix2.rar/file※使用方法:Glovz傷害計算修正是藉由
sfall運作,只要打開ddraw.ini確認
DamageFormula=1即可。若設定成DamageFormula=2則是使用暴擊傷害倍率有調整過的版本:暴擊傷害 = ND + (ND * 25% * CM),原本是暴擊傷害 = ND * CM / 2。
如果想套用上面新的彈藥參數,可以下載Glovz_Fix2.rar,把裡面的內容解壓縮到Fallout2主資料夾內,然後設定好DamageFormula就行了。gl_ammomod.int腳本會檢查DamageFormula的值來自動載入AmmoGlovz.ini裡面的彈藥參數。
想自己修改彈藥參數只要編輯AmmoGlovz.ini就好,可以調整的參數有AC修正值、DR修正值、彈藥X值、彈藥Y值四項,這做法省去了修改一堆proto檔案的麻煩,不想用了也只要移除AmmoGlovz.ini與gl_ammomod.int,不用再去一個一個把修改過的proto檔案刪除或改回來。如果你有興趣看腳本到底怎麼運作的話,gl_ammomod.ssl是腳本原始碼。