無敵幀:修訂間差異

出自災厄繁中 Wiki
跳至導覽 跳至搜尋
Dazhi233​(留言 | 貢獻)
從專案原稿更新
 
Dazhi233​(留言 | 貢獻)
從專案原稿更新
第45行: 第45行:


使用這段程式的所有物品和對應的 <code>localNPCHitCooldown</code> 數值,請看官方 Wiki 的 [https://calamitymod.wiki.gg/wiki/LocalNPCImmunity_Items LocalNPCImmunity Items] 頁面(還沒翻譯)。
使用這段程式的所有物品和對應的 <code>localNPCHitCooldown</code> 數值,請看官方 Wiki 的 [https://calamitymod.wiki.gg/wiki/LocalNPCImmunity_Items LocalNPCImmunity Items] 頁面(還沒翻譯)。
* 另外,混沌河豚產生的爆炸也把 <code>usesLocalNPCImmunity</code> 設成 true,<code>localNPCHitCooldown</code> 是 1。
* 另外,[[混沌河豚]]產生的爆炸也把 <code>usesLocalNPCImmunity</code> 設成 true,<code>localNPCHitCooldown</code> 是 1。


=== <code>usesIDStaticNPCImmunity</code> ===
=== <code>usesIDStaticNPCImmunity</code> ===

2026年10月12日 (一) 16:19的版本

本頁部分內容改寫自官方災厄 Wiki 的「無敵幀」,依 CC BY-NC-SA 3.0授權使用。

無敵幀(Immunity frames,也叫 invincibility frames,常簡稱 iframes 或 i-frames)是泰拉瑞亞的核心機制:在一小段時間內,玩家或 NPC 不會受到某一種或所有來源的傷害。

原版和災厄都有很多物品跟無敵幀有特殊的互動:有的飾品讓玩家被打中時多得到一些無敵幀(例如神性護身符),有的武器能用遠超過正常的速度連續命中 NPC(例如死陽之風)。

「幀」是遊戲更新的時間單位:泰拉瑞亞每秒更新 60 幀,所以 1 幀是 1/60 秒。

玩家的無敵幀

延長玩家無敵幀的方式有好幾種。另外,在復仇模式中,玩家的無敵幀上限是 150 幀,也就是 2.5 秒。

繼承十字項鍊的效果

飾品十字項鍊會讓玩家的無敵幀加倍。這個加倍效果不能跟自己疊加,所以已經裝備十字項鍊時,再取得同樣的效果也沒有額外好處。

增加無敵幀

有幾種事件和效果不是用乘的,而是直接設定或增加玩家的 immuneTime。「增加」無敵幀的效果,可以跟十字項鍊或其他繼承它效果的飾品疊加。此外,「增加」無敵幀的效果會影響 cooldownSlot 為 0 或 1 的攻擊所給的無敵幀;直接「設定」無敵幀的效果則對這類攻擊沒有作用。

使用這段程式的所有物品和對應的 immuneTime 數值,請看官方 Wiki 的 Added Immunity Frame Items 頁面(還沒翻譯)。

cooldownSlot

這一節主要說明的是原版泰拉瑞亞的行為。

玩家受到任何傷害時,會得到三種無敵幀的其中一種,取決於傷害來源把 cooldownSlot 這個變數設成多少。所有傷害來源預設是 -1,用的是標準的 immuneTime,會受所有影響無敵幀的物品影響。但如果 cooldownSlot 是 0 或 1,玩家得到的是另一種無敵幀,只能擋住 cooldownSlot 相同的來源。舉例來說,玩家被變數為 1 的投射物打中之後,馬上還是會被預設值 -1 的另一發投射物打傷,但不會馬上再被另一發變數為 1 的投射物打傷。能影響 cooldownSlot 0 或 1 的無敵幀的,只有十字項鍊、繼承它效果的飾品,以及任何「增加」受擊無敵幀的效果;其他物品都沒有作用。

災厄裡 cooldownSlot 設成 0 或 1 的所有敵人和投射物,請看官方 Wiki 的 CooldownSlot Non-defaults 頁面(還沒翻譯)。

無視 NPC 的無敵幀

泰拉瑞亞提供三種機制,讓投射物可以無視、繞過或縮短 NPC 的無敵幀。

usesLocalNPCImmunity

這一節主要說明的是原版泰拉瑞亞的行為。

投射物把 usesLocalNPCImmunity 設成 true 之後,它跟無敵幀的互動方式會徹底改變。它打中 NPC 時不會去設定 NPC 的 npc.immune,而是在投射物自己身上啟動一個計時器,讓這一發投射物在若干幀之內不能再打中那個 NPC。計時結束後,這發投射物才能再次打中它。

計時器的長度由變數 localNPCHitCooldown 決定。泰拉瑞亞每秒 60 幀,所以 localNPCHitCooldown 設成 60 的話,這發投射物每秒只能打中一次。但計時器只對啟動它的那一發投射物有效;計時期間,其他投射物(包括穿透型的)還是打得中那個 NPC,這就是為什麼看起來像是「無視無敵幀」。

localNPCHitCooldown 還有兩個特殊值:-2 和 -1。這兩種情況都不會啟動計時器,而是被打中的 NPC 會對這一發投射物永久免疫。也就是說,不管投射物存在多久,localNPCHitCooldown 為負值的投射物只能打中同一個 NPC 一次。設成 -1 時,投射物命中時會把 npc.immune 歸零,確保一定打得中——這也是名副其實的「無視無敵幀」,因為投射物真的完全不理會被打中的 NPC 的無敵幀。

localNPCHitCooldown 各數值的行為整理如下:

  • -2:投射物不影響 NPC 的無敵幀。NPC 有無敵幀時打不中;沒有的話會打中,而且 NPC 不會得到任何無敵幀。這發投射物之後再也不會打中這個 NPC。
  • -1:投射物接觸時會直接移除 NPC 的無敵幀,所以一定打得中。這發投射物之後再也不會打中這個 NPC。例子是夜明彈。
  • 0:行為基本上跟 -2 相同,只是下一幀就能再次打中同一個 NPC。NPC 被打中不會得到無敵幀,但如果 NPC 本來就有無敵幀,投射物也不會移除它。
  • 1:跟 0 幾乎相同。差別是 NPC 的 npc.immune 會被設成 1,所以這一幀其他基本的穿透型投射物、或 localNPCHitCooldown 為 -2 的投射物都打不中它。
  • 2 以上:這發投射物每隔這麼多幀才能打中同一個 NPC 一次。每個 NPC 的冷卻各自計算。

使用這段程式的所有物品和對應的 localNPCHitCooldown 數值,請看官方 Wiki 的 LocalNPCImmunity Items 頁面(還沒翻譯)。

  • 另外,混沌河豚產生的爆炸也把 usesLocalNPCImmunity 設成 true,localNPCHitCooldown 是 1。

usesIDStaticNPCImmunity

這一節主要說明的是原版泰拉瑞亞的行為。

投射物把 usesIDStaticNPCImmunity 設成 true,並替 idStaticNPCHitCooldown 設一個值之後,它跟無敵幀的互動方式也會徹底改變。跟 usesLocalNPCImmunity 很像,打中 NPC 時會啟動計時器;但這種計時器擋的是同一位玩家所有同類型的投射物。也就是說,任何一發這類投射物打中敵人之後,在一段時間內,那個 NPC 對打中牠的那位玩家的所有同類型投射物都免疫。所有使用 usesIDStaticNPCImmunity 的投射物,都會像 localNPCHitCooldown 設成 -1 的投射物一樣,直接移除被打中 NPC 的無敵幀。

使用這段程式的所有物品和對應的 idStaticNPCHitCooldown 數值,請看官方 Wiki 的 IDStaticNPCImmunity Items 頁面(還沒翻譯)。

npc.immune

打中 NPC 時把 npc.immune 設成某個值的投射物,只是改變 NPC 得到的無敵幀數。跟一般的穿透型投射物一樣,NPC 在那麼多幀之內不會再被任何穿透型投射物打中。一般的穿透型投射物把 npc.immune 設成 10,所以會改這個行為的投射物,通常是設成比較低的值,例如 4。這種行為常被叫做「部分無視無敵幀」,因為它移除或無視了 NPC 的一部分無敵幀,但不是全部。

使用這段程式的所有物品和對應的 npc.immune 數值,請看官方 Wiki 的 Npc.immune Items 頁面(還沒翻譯)。

參見