|
原本遊戲內只有子彈才有AC修正值(AC mod),武器本身最多就那幾個加命中率的perk而已。
前幾天有人在NMA問有沒有辦法做到給武器加上AC修正值,所以今晚沒打算玩FO4就試著寫腳本看看了,結果意外地簡單:
- // hs_tohit.ssl
- procedure start;
- #include ".\HEADERS\DEFINE.H"
- #include ".\HEADERS\sfall.h"
- #define usewpn(PID) (obj_pid(critter_inven_obj(attacker, INVEN_TYPE_RIGHT_HAND)) == PID) or (obj_pid(critter_inven_obj(attacker, INVEN_TYPE_LEFT_HAND)) == PID)
- procedure start begin
- variable tohit;
- variable attacker;
- variable target;
- if not init_hook then begin
- tohit := get_sfall_arg;
- attacker := get_sfall_arg;
- target := get_sfall_arg;
- if (usewpn(PID_10MM_PISTOL) or usewpn(PID_DESERT_EAGLE)) then begin
- if (get_critter_stat(target, STAT_ac) < 5) then begin
- tohit := tohit + get_critter_stat(target, STAT_ac);
- end else begin
- tohit := tohit + 5;
- end
- end
- if (tohit > 95) then begin
- set_sfall_return(95);
- end else begin
- set_sfall_return(tohit);
- end
- end
- end
复制代码
藉由hs_tohit這個hook script實現,範例內是給10mm手槍和沙漠之鷹等同AC mod -5的效果。
簡單解釋是先看攻擊者用的武器是不是10mm手槍或沙漠之鷹,是的話就再檢查目標AC值,如果目標AC值小於5,那命中率就增加目標AC值(當成目標AC值已經被扣到零),如果目標AC值在5以上,命中率就加5(等同對方AC值少了5)
另外加上一個判斷把命中率最大值限制在原本的95%,不然一些情況下攻擊者的命中率可以到100%,因為hs_tohit是在遊戲本身命中率計算完(包括鎖95%上限)才會執行,如果沒額外加限制判斷就會在原本95%上限之上再加5%。 |
|