此站点为镜像站,如有编辑wiki的意愿请前往主站进行编辑。
加入Noita中文维基群获取更多wiki编辑上的帮助。
→加入游戏社区|Noita魔法群|
|Noita交流群|Noita贴吧|
与更多玩家一起游玩Noita。

全站通知:

专家攻略:抽取

阅读

    

2024-10-29更新

    

最新编辑:幽狐HOFOX

阅读:

  

更新日期:2024-10-29

  

最新编辑:幽狐HOFOX

来自NoitaWIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索
页面贡献者 :
幽狐HOFOX

在Noita中的法杖系统核心是一个卡牌游戏。这也许挺惊奇的,本攻略将解释抽取的机制 - 字面意思的牌库、手牌和弃牌区工作与基础机制,以及简单的法术互动。在本文中,我们将其描述成了一个常见的牌库说模型。(译注:专家攻略系列配合spell lab模组的施法序列功能以及游戏解包文件内的gun_actions.lua等文件食用更佳)


基础:牌库、手牌、弃牌堆

首先需要了解Noita怎么处理法术。当你用法杖施法,其中的法术会在这三个区域之间移动:

手牌:即施法队列,承载了你开火时所施放的全部法术。这个区域防止法术被重复施放两次。

牌库:即法术池,承载了所有你法杖中所有未施放过的法术。在你开火前所拥有的法术,并在非乱序法杖中按顺序排列。

弃牌堆:存放了所有施放过的法术(或者被某些机制丢弃的法术)。当一次施法完成后,手牌中的所有法术将丢弃至弃牌堆。所以,在未开火时,法杖中的法术要么在弃牌堆,要么在牌库。


在正常施法时,法术会自行在这三个区域内移动,我们将介绍这是如何发生的,但是有些法术能够通过以下两种情况对其操控:

抽取(draw):将法术从牌库(法术池)移动至手牌(施法队列)的动作。大多数投射物法术不具有抽取(draw)效果,大多数修正的抽取数为1,而N重施法的抽取数为N。

我们通过一个简单的例子来了解什么是抽取: 模板:Wand

法杖的施法数为1,此时我们的抽取数为1,抽取到第一个法术,二重施法,抽取数+2,此时的抽取数为1-1+2=2个,第二第三个格子是空的,我们跳过,一直抽取到第一个火花弹,由于火花弹本身不带抽取(draw)属性,也就是抽取数不会+1,此时的抽取数为2-1=1,接下来继续抽取到第二个火花弹,此时的抽取数为1-1=0,抽取数归零。此时我们已经无法再接着抽取法术了,此时本轮开火。

丢弃(discard):一种将牌库(法术池)中的法术直接置入弃牌堆的动作。只有高级法术拥有这种效果,如一分为N系列等,本篇不会介绍这些法术。

在这个攻略中,我们将着重于普通的在牌库、手牌和弃牌堆之间的法术移动。理解这些有利于我们理解高级法术,也能理解法杖的运转机制。让我们通过一些例子来学习这些。


法术预载

牌库是所有法术初始位置。在一个没被使用过的非乱序法杖中,牌库承载了法杖中的所有法术。

简单来说,预载就是把法术从牌库转移到手牌中。在一根施法数1的法杖中,当你单击鼠标按钮发射法杖时,法杖会从牌库中抽取第一个法术,并将其预载置入手牌。然后,预载在手牌中的所有法术被施放,随后在游戏世界中生成手牌中法术的效果,最后将手牌中的所有法术丢弃。

这意味着每次施法只有一个法术被预载进入手牌中,显然与事实不符。事实上许多修正法术和多重施法在预载的过程中会抽取更多的法术并将其置入手牌。例如:一个法术修正使抽取数+1,并再抽取另一个法术;一个双重施法不产生效果,然后抽取两个法术。下面例子演示了法术如何抽取其它的法术:

模板:Wand

该法杖的预载队列树看起来像是这样:

文件:抽取 img01.png

应这样解释:

  1. 法杖最开始从牌库抽取伤害增强(拳头)。伤害增强被预载置入手牌中。
  2. 伤害增强作为一个修正,使抽取数+1,,接着抽取了二重法术,并将其预载。
  3. 二重法术使抽取数+2。接着抽取到三重法术,并将其预载。
  4. 三重法术使抽取数+3,此时的抽取数为4。接着抽取到第一个火花弹。火花弹作为一个正常投射物,不具备抽取属性。
  5. 三重法术接着抽取两次,都是火花弹,同上。
  6. 三重法术抽取完了所有三张法术并预载,此时抽取数还剩1。
  7. 回到二重法术,它的第一次抽取的三重法术已预载完成,接下来抽取第二张牌。加速被抽取。
  8. 加速作为一个修正,抽取数+1,还能抽取到最后一个火花弹,而火花弹不具备抽取属性,抽取数归零,所有抽取全部完毕。此时加速完成了抽取,预载。火花弹同理,预载。
  9. 二重法术完成了抽取的两张牌,二重法术预载,进入手牌。
  10. 回到法杖施法,因为为施法数1法杖仅会在施法时抽取一张牌。在伤害增强预载完成后,没有更多手牌需要预载,预载结束后所有法术生效。


因此,发射四个都具有伤害增强和加速效果的火花弹(这部分需要Noita法术编程指南里面的知识)。此时除了核弹所有的法术都在手牌中被施放,随后被置入弃牌堆,下一次施法前就进入施法延迟。


下一次施法会发生什么?这很简单:

除了核弹外所有法术都在弃牌堆中,所有法杖抽取牌库中剩下的最后一张核弹。核弹移动至手牌预载,最后施放。核弹移动至弃牌堆,然后一个重要机制在此时起效。

当一次施法结束时,游戏会检查牌库中是否有剩余的法术,如果没有,则触发法杖充能。这是法杖充能的二种情况之一。充能时将所有法术从弃牌堆移回牌库,进入充能冷却,充能冷却结束时再重复上述的过程。


施法状态

在上一节,我们忽略了修正和投射物的效果是如何出现在游戏世界中的,最初的想法是它可能与手牌有关——可能在预载的最后,某个机制读取了手牌中的全部法术并做了些什么?这是一个想当然的假设,而它是错误的。手牌与这无关,手牌只是记录那些牌已经被预载了,被预载的牌不会再次被抽取。最明显的例子就是回绕可以重新抽取弃牌堆的牌,但不能抽取手牌中的牌。

施法状态是一个比较抽象的概念,我们举个例子来更好的了解它:在我们施放大量的高级法术(大量字符法术或者一分为N)时,会变得异常卡顿,往往要在数秒乃至数分钟的卡顿后才能开火,这个时候就是施法状态了。在施放小型法术时,施法状态往往是瞬间完成的。施法状态存储着目前为止已预载的所有修正和投射物,例如我们预载了一个拳头(伤害增强),那么投射物的伤害就会+10,如果再预载一个拳头,就会变成+20。

当投射物被施放时,会经过以下几个步骤:首先,投射物本身被添加到“施法状态”所存储的“投射物列表”中。然后,附加到投射物的任何修正都会修改“施法状态”中的“修正列表”。投射物的施放延迟散射被添加到投射状态的施放延迟和散射列表中。法术修正被施放时也一样,不过比上面少个投射物列表,并且在预载时抽取数+1,再抽取一张牌。


当一个施法预载完成时(没有抽取数,或者牌库中没有法术可抽取时),所有存储在施法状态的投射物都会被射出,每个投射物都会附带它们应该有的修正效果。这就是为什么一个伤害增强修正法术会应用于施法块的每一个投射物。

注意,没有提到牌组、手牌或弃牌中的任何法术--只有施放状态在法术实际发射时被使用。这一点很重要,因为有些法术,比如魔杖刷新,会从手牌中移除法术,而让施放状态不被触发。


最后,关于法杖充能的注意事项:如果修正或投射物法术有充能时间,它将被添加到一个单独的值。在法杖充能之前,可能会发生多个施法状态的多个施法,因此充能时间值与每个单独的施法状态是分开的。也就是说,它被法术改变的方式和施法状态完全一样。

回绕

你以前可能听说过法术回绕。我们如何用这个新框架来解释呢?答案很简单:当一个法术试图抽牌但牌库中没有任何法术时,弃牌堆中的每个法术都会被移动到牌库中重新排列。然后抽牌进行 - 这就是法术回绕。有一个额外的细节:当回绕发生时,游戏中会设置一个标记,使其在法杖当前的施法结束后立即充能。这就是为什么法杖又会回到最初开始,即使是回绕施放了前几个法术后。

以下为例。施法数1: 模板:Wand


  1. 法杖抽取双重法术
  2. 二重法术抽取两个火花弹
  3. 无抽牌预载结束,发射两个火花弹
  4. 双重法术和火花弹弃置
  5. 应用施法延迟
  6. 下一次施法开始,火花弹被抽取施放弃置,应用延迟
  7. 下一次施法开始,抽取光
  8. 光试图抽牌,但无牌可抽。回绕触发,弃牌堆的其它法术返回牌库,并添加标记。
  9. 光抽取二重法术
  10. 二重法术抽取两个火花弹
  11. 无更多抽牌,发射所有法术并弃牌。
  12. 此时光、二重法术和两个火花弹在弃牌堆中,手牌空,并在牌库中有一个火花弹
  13. 此时法杖不会再试图抽牌以抽到火花弹,相反,因为光造成了回绕设置的标记,法杖会立即进入充能


回绕与法杖的施放数

一个重要的注意事项是,法杖本身的抽取数不能导致回绕。例如,当一个施放数3的法杖在牌库中还有一个投射物并试图第二次抽牌时,即使弃堆牌中有可用的法术,它也不会回绕。也就是说,以下法杖不会回绕:

模板:Wand

它将发射三个火花弹两次,然后是一个火花弹。即使弃牌堆中有足够的火花弹,它也不会发生回绕。不过仍可以通过法术来实现回绕,比如下面这个:

模板:Wand

它将发射三个火花弹两次,随后:

  1. 法杖抽取火花弹
  2. 法杖抽取光,该法术造成了回绕,弃牌堆回到牌库,并且抽取了火花弹
  3. 法杖在第三次抽取时抽取了火花弹
  4. 法杖充能

法杖本身的施法数的情况加上多重施法后,施法序列会变得复杂起来,所以尽量使用施法数为1的法杖,以更清晰的梳理施法序列。

触发

触发是我们需要讨论的最后一个抽取机制。你很可能已经注意到,触发里面的法术修正不会修正触发外面的法术,反之亦然。我们怎么解释?答案是触发法术实际上创造了一个全新的施法状态。旧的施法状态被保存并放在一边,新的施法状态用于预载触发法术内的所有法术。一旦触发法术内的法术预载完成,该施法状态将最终确定并附加到触发法术的投射物上,以便在触发法术触发时施放。然后回到旧的施法状态,并继续进行法术预载。

请注意,在这个过程中,手牌和牌库保持相对不变 - 使触发法术工作的主要机制是创建新的施法状态。


模板:Wand


这是其如何预载的:

  1. 法杖抽取追踪,追踪修改施法状态(追踪效果)
  2. 追踪抽取穿刺魔弹,穿刺魔弹修改施法状态(-15投射物伤害、穿刺与友方伤害)
  3. 穿刺魔弹抽取带触发的火花弹。火花弹储存旧的施法状态,并创建新的子施法状态
  4. .带触发的火花弹抽取三重法术
  5. 三重法术抽取伤害增强修正,修正新的施法状态(+10投射物伤害)
  6. 伤害增强抽取挖掘爆破,自身预载完成
  7. 三重法术抽取剩余的两个挖掘爆破,均预载完成
  8. 回到带触发的火花弹的预载,我们制造了一个新的投射物,这时一个具有我们刚刚创建的具有触发效果的存在
  9. 初始的施法状态回复,这个火花弹应用了原施法状态,完成预载
  10. 法杖施法完成,所有都被施放了
  11. 在这一点上的施法状态包括追踪和穿刺的变化,和创造的带触发的火花弹投射物。当触发时,会施放三个带伤害增强的挖掘爆破

这是一个简单的触发。分离施法状态允许一些炫酷的效果 - 例如,这个法杖发射一个启用了友方伤害的火花弹,但降低的投射物伤害使其即使它击中玩家也毫发无损。但是,它会在接触时产生高伤害的挖掘爆破 - 但是由于这些是单独的施法状态的一部分,没有启用友方伤害故也不会对玩家伤害。所以,这个魔杖即使它使用穿刺魔弹伤害敌人并多次接触,也是对玩家完全安全的。

始终施放

如果一根魔杖有始终施放,那么在每次施法进行第一次抽取前,手牌中会凭空预载一个始终施放的对应法术,如果有多个始终施放,这些法术会依次预载。如果这个法术提供一个抽取数(例如修正类法术),那么这次抽取将会被禁用。施法结束进行弃牌时,凭空出现的始终施放牌会直接被消除,并不会进入弃牌堆。

如果魔杖的始终施放法术提供不止一个抽取数,那么在预载时将不会禁用抽取,这将导致本次施法的抽取数被增加。

例外

部分法术效果晚于抽取,这会导致一些特殊的结算。


结论

希望您能很好地理解抽牌的工作原理,以及牌库、手牌和弃牌堆。本攻略中的例子非常详细地介绍了这个过程的每一步,以确保您对正在发生的事情有一个很强的把握,因为在理解诸如希腊字母、分隔符和各种其他游戏后期咒语的实际工作方式时,这种细微差别将非常有用。

视频

{{#ev:bilibili | BV1Pa411J7Ju | 800 | | || }}