13号避难所

标题: 用sfall腳本給武器加上AC修正值 [打印本页]

作者: novarain    时间: 2015-11-18 22:45
标题: 用sfall腳本給武器加上AC修正值
原本遊戲內只有子彈才有AC修正值(AC mod),武器本身最多就那幾個加命中率的perk而已。
前幾天有人在NMA問有沒有辦法做到給武器加上AC修正值,所以今晚沒打算玩FO4就試著寫腳本看看了,結果意外地簡單:
  1. // hs_tohit.ssl
  2. procedure start;
  3. #include ".\HEADERS\DEFINE.H"
  4. #include ".\HEADERS\sfall.h"

  5. #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)

  6. procedure start begin
  7.     variable tohit;
  8.     variable attacker;
  9.     variable target;
  10.     if not init_hook then begin
  11.         tohit := get_sfall_arg;
  12.         attacker := get_sfall_arg;
  13.         target := get_sfall_arg;

  14.         if (usewpn(PID_10MM_PISTOL) or usewpn(PID_DESERT_EAGLE)) then begin
  15.             if (get_critter_stat(target, STAT_ac) < 5) then begin
  16.                 tohit := tohit + get_critter_stat(target, STAT_ac);
  17.             end else begin
  18.                 tohit := tohit + 5;
  19.             end
  20.         end

  21.         if (tohit > 95) then begin
  22.             set_sfall_return(95);
  23.         end else begin
  24.             set_sfall_return(tohit);
  25.         end
  26.     end
  27. 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%。




欢迎光临 13号避难所 (https://bn13.net/) Powered by Discuz! X3.2