13号避难所

 找回密码
 立即注册
搜索
查看: 5630|回复: 0
打印 上一主题 下一主题

[辐射2 MOD] 修改選perk的頻率

[复制链接]
跳转到指定楼层
楼主
发表于 2018-3-30 11:42:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
原本是每三級可以選一次perk,有專家(Skiiled)特徵則是四級選一次,不過總是有人希望可以像三四代那樣每升一級就選一次,或是像NV每兩級選一次。
sfall在3.0時加上set_perk_freq函式可以修改這部份,最簡單的作法是在global script寫一行set_perk_freq(1);,不過那會讓角色在第2級就有選perk的窗口跳出來,但內容是空的(因為perk最低等級需求是3),如果你想試著去點空白列表的第一行,遊戲就會出錯跳掉。

所以得多加個檢查角色等級的判斷,變成這樣:
  1. procedure start;

  2. #include ".\HEADERS\DEFINE.H"
  3. #include ".\HEADERS\COMMAND.H"

  4. procedure start begin
  5.    if (game_loaded) then begin
  6.       set_global_script_repeat(60);
  7.    end else begin
  8.       if (dude_level > 2) then begin
  9.          set_perk_freq(1);
  10.          set_global_script_repeat(0);
  11.       end
  12.    end
  13. end
复制代码

腳本邏輯是:初始化先設定腳本每60幀重覆檢查一次,角色等級如果沒超過2,就先不調整perk頻率;如果角色等級超過2,就設定perk頻率為每一級選一次,然後把此global script停止重覆執行(沒必要浪費資源,perk頻率在離開當前遊戲之前不會還原)
不過那腳本會讓選了專家特徵的角色也同樣每一級就可以選一次perk(從4級開始),等於把專家特徵變成幾乎無副作用(只有晚一般角色一級才能選perk,然後每次升級多5點技能點數),這樣就不太平衡了。

於是再加個檢查角色是否有專家特徵的判斷:
  1. procedure start;

  2. #include ".\HEADERS\DEFINE.H"
  3. #include ".\HEADERS\COMMAND.H"

  4. procedure start begin
  5.    if (game_loaded) then begin
  6.       set_global_script_repeat(60);
  7.    end else begin
  8.       if (dude_level > 2) then begin
  9.          if not(has_trait(TRAIT_TRAIT, dude_obj, TRAIT_skilled)) then begin
  10.             set_perk_freq(1);
  11.          end else begin
  12.             set_perk_freq(2);
  13.          end
  14.          set_global_script_repeat(0);
  15.       end
  16.    end
  17. end
复制代码

這樣一般角色是每一級選一次,有專家特徵是每兩級選一次。

如果想改成一般角色是每兩級選一次,有專家特徵是每三級選一次,直接拿上面腳本修改set_perk_freq數值會冒出另一個小問題:有專家特徵的角色變成要到6級才能選第一個perk,為什麼?
因為遊戲引擎原本的判斷方式是,升級當下如果等級數字能被3(專家特徵是4)整除,就讓角色可以選perk,而上面腳本是在升到3級之後才把頻率從4變成3,這樣升到3級時自然不能選perk(當下會認為要到4級才能選),得等到下一個可以被3整除的6級。

好吧,所以就再調整一下腳本變得比較囉嗦一點:
  1. procedure start;

  2. #include ".\HEADERS\DEFINE.H"
  3. #include ".\HEADERS\COMMAND.H"

  4. procedure start begin
  5.    if (game_loaded) then begin
  6.       set_global_script_repeat(60);
  7.    end else begin
  8.       if not(has_trait(TRAIT_TRAIT, dude_obj, TRAIT_skilled)) and (dude_level > 2) then begin
  9.          set_perk_freq(2);
  10.          set_global_script_repeat(0);
  11.       end else if (dude_level > 3) then begin
  12.          set_perk_freq(3);
  13.          set_global_script_repeat(0);
  14.       end
  15.    end
  16. end
复制代码

判斷邏輯變成如果沒有專家特徵且角色等級超過2,就設定perk頻率為2,不然就是角色超過3級時設定perk頻率為3。沒專家特徵的一定比較早滿足前面條件並停止global script執行,後面就不用再多檢查特徵。
這樣一來,可以選perk的等級為:
一般角色 - 3, 4, 6, 8, 10, 12 ...
專家角色 - 4, 6, 9, 12 ...

另外比較不重要的資訊:遊戲原本在角色擁有的perk項目數量(perk等級數不列入)超過37個(一代是7個)之後就不會再跳出選perk窗口,大概是認為了不起99級也只能選到33個,不過sfall把這部份限制拿掉了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-4-30 11:39 , Processed in 0.056563 second(s), 14 queries .

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