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

13号避难所

 找回密码
 立即注册
搜索
查看: 193|回复: 2

關於遊戲的藥物效果

[复制链接]
发表于 2019-3-9 09:24:50 | 显示全部楼层 |阅读模式
gvx之前整理過一篇藥物效果、作用時間和perk影響的帖子,最近sfall幾項更新和藥物也有關係所以補充一些部份。

以二代來說,遊戲引擎內寫了9項“會上癮的物品”:可樂、Buffout、Mentats、Psycho、RadAway、啤酒、老酒(Booze)、Jet、悲劇卡牌。
每一項目除了物品PID之外,還有在角色畫面顯示上癮狀態的對應全域變數(GVAR)以及累積效果上限。累積效果上限除了Buffout、Mentats、Psycho、Jet這四樣為4之外,其他都是0(無限制)。

累積效果上限的運作方式以Mentats為例子:

它有兩個延遲效果(Mid-time/Long-time,以gvx的圖來說就是二次/結束效果),每使用一次藥物就會在內存佇列記錄之後該發生的延遲效果,如果發現佇列內的延遲效果總數已經等於或超過上限值,再使用該藥物就得不到任何藥效。
這就是為什麼那些藥物在連續使用只能用兩次的原因,因為用兩次之後佇列已經記錄4個延遲效果,當然再用就沒效了。
以Jet來舉另一個例子,因為它最初藥效消退很快(遊戲內5分鐘)。你用兩次之後佇列記錄了4個延遲效果,5分鐘之後2個二次效果發作,佇列只剩2個延遲效果,這時你可以再用一次Jet獲得藥效(於佇列中排入2個延遲效果),但再用就一樣無效。

至於原本存/讀檔之後可以繼續再用兩次的漏洞,是因為遊戲在存檔時沒把佇列內的相關資料結構(物品PID + 二次效果 + 結束效果)完整存入存檔,漏了物品PID,所以重新讀檔再用藥物時佇列資料找不到PID,那這些效果是哪種藥物的就不知道了,變成像重置一樣可以無限重覆。
如果用一般介入引擎代碼的方式修好這部份會有個小問題:在玩家在藥物作用下的新舊存檔會無法兼容,因為存檔內的資料結構變了。

sfall內的舊修正是加上一個額外比對延遲效果實際數值的部份,畢竟遊戲中沒有藥物的延遲效果是一樣的,所以只要有相同延遲效果在佇列內就當作你已經用了該藥物。
這方式在原版/RP內沒問題,但如果有mod試著加上另一種新藥物有同樣延遲效果(例如一個叫JetX,成癮機率較低但只加1點AP、二次效果一樣、結束效果改為AP加3),那修正就會很笨的把它和原版Jet視為同樣藥物,像你用了兩次JetX就不能用Jet。
sfall本來是打算寫個可開關的選項切換介入引擎代碼的完整修正或舊修正,不過考慮那對玩家來說可能太麻煩,所以改成把佇列資料結構中的物品PID放入存檔內的sfallgv.sav(3.8.x和4.x都有),這樣就沒有存檔兼容性的問題,就算讀在藥物作用下的舊存檔(sfallgv.sav內沒有記錄)了不起最多再讓你用兩次藥物,之後就照正常方式運作了。

至於戒癮時間就簡單許多,直接單一標準遊戲內7天後自動解除,而Jet上癮則是老樣子寫了個額外判斷以跳過自動解除的部份。

之後的sfall 4.1.6會加上能設定一個Drugs.ini來調整/設定各藥物的額外參數,對原版藥物來說至少可以修改各別的累積效果上限和戒癮時間。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
发表于 2019-3-9 10:30:56 | 显示全部楼层
能调的东西更多了。
发表于 2019-3-9 12:54:43 | 显示全部楼层
好吧···········其实我看不懂······························

游戏内除了拿PERK我也基本不吃药···············································
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Archiver|13号避难所 ( 沪ICP备05055773号 )

GMT+8, 2019-3-25 08:19 , Processed in 0.027138 second(s), 15 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表