条件要求(法术)

来自Noita Wiki
跳到导航 跳到搜索


条件法术(编程法术)为法杖中部分法术是否应该被加入到手牌设置了条件,这取决于条件法术的类型。它们的主要使用目的是在法杖中控制某一法术是否应该释放出来,尽管这样会占用魔杖中大量的空间。

在这些条件法术中,“要求 - 否则”和“要求 - 终点”起到辅助其他条件法术,控制它们的作用域的效果。而其他的条件法术则直接对条件做出要求。


使用技巧

  • 完整的一套条件法术形成的是典型的“if-else”语句块结构,事实上,将条件法术图标中中出现的符号翻译为英文会分别得到“if”、“else”和“end”。
  • 条件每隔使用的是全局变量,即无论是什么情况下施放一次都会反转一次效果。
  • 该系列法术配合魔杖刷新可以重复利用魔杖的其中一部分,这在进阶配杖中十分常见。

解锁方式

重铸翡翠石板扔进湖泊东侧的炼金术士小屋会打开一扇传送门,通往湖面下位于小屋正下方的一个封闭金属舱体。其中包含一把实验性魔杖,一整套条件法术,以及一些家具。首次进入时允许在其中编辑法杖。

行为

基础

如果你有任何编程经验,简要地说,这些就像if/else语句一样

条件逻辑最基本的就是根据世界的状态来决定做一件事或另一件事。如果你想灵活地自动改变一个过程的结果(魔杖施放),而不是必须决定运行一个或另一个过程(在魔杖之间交换),这就很有用。

这些法术让你根据一些基本的陈述来施放一个或另一个法术。如果语句为真,你就得到一套法术,如果为假,你就得到另一套。在编程中,这通常表示为 "if...else (如果...否则)" 的语句(条件需求法术上的字形确实转化为 "if"、"else "和 "end"),但术语并不重要--它们要么做一件事,要么根据它们被施放时的游戏状态做另一件事。

它们可以被归为三种类型:

  • 如果: 敌人、投射物数量、生命值低下、每隔
  • 否则: 否则
  • 终点: 终点

这些东西的使用顺序很重要--你可以有一个单独的 "如果"(在这种情况下,它只跳过或施放紧随其后的一个法术),一个 "如果 "后面有一个 "终点"(它跳过或施放两者中间的所有法术),或者一个 "如果"、"否则 "和 "终点",它施放第一或第二组封闭的法术,而跳过另一组。

跳过法术的条件如下。

生命值

  • 如果剩余的生命值超过25%,则跳过

这可能是最直接有用的要求。用它来触发一个治疗法术(例如活力之环),使其只在失去大量生命值时自动施放。另一个用途是与缓慢但坚定结合使用,作为危险的、持续施放的魔杖的 "杀戮开关"--如果你的生命值突然下降,条件就会启动并增加1.5s的延迟。

投射物

  • 如果附近的投射物少于20个就跳过

可以用来触发使用炸药引爆器, 酸液置换术黑洞置换术, 保护之环等作为保护,或者在法术变力量魔杖构建中,在产生投射物和消耗投射物之间切换。

敌人

  • 如果附近的敌人少于15个就跳过

非常有场景性,例如自动触发有范围限制的法术,或者在紧张的情况下自动触发昂贵的/有限使用的法术。这也可以用于只在附近有大量敌人时启用精华变力量修正,以保证法力消耗不会过多。

每隔

  • 跳过这个要求的第二次施放

"每隔 "有些特殊,因为它的条件取决于它之前被施放了多少次。 由于它可以在一根魔杖内被施放一次以上,因此可以实现一些更高级的行为。

高级

奇特的效果可能由于以下原因而发生

  • 条件要求法术抽出下一张牌,这会触发魔杖的回绕。
  • 多个 "如果 "和 "否则 "法术相互干扰,与编程的预期不一致。

细节: "如果 "法术将扫描魔杖的其余部分,直到到达另一个 "如果"、"终点 "或魔杖的末端(以先到者为准),同时追踪沿途最后遇到的 "否则"。

  • 如果停止点是另一个 "如果",并且没有 "否则",那么"如果 "将丢弃(a)它之后的第一个法术,或者(b)什么都没有,然后抽1。
  • 如果停止点是另一个 "如果",并且有 "否则",那么 "如果 "将丢弃(a)它之后的第一个法术直到 "否则",或者(b)"否则 "直到魔杖的末端,然后抽1。
  • 如果停止点是一个 "终点",并且有零个或一个 "否则",那么它将按预期工作,尽管如果 "终点 "是魔杖上的最后一个法术,它可能会回绕并导致非预期的效果。
  • 如果停止点是一个 "终点",并且遇到了多个 "否则",那么它将根据最后遇到的 "否则 "法术按预期工作。
  • 如果停止点是魔杖的末端,并且没有 "否则",那么 "如果 "将丢弃(a)它之后的第一个法术,或者(b)什么都没有,然后抽1。
  • 如果停止点是魔杖的末端,并且有 "否则",那么它要么(a)丢弃直到最后一个 "否则 "法术,要么(b)只丢弃最后一个 "否则 "法术(不弃掉它之后的任何法术),然后抽1。

例子:

Wand 0821.png
乱序
No
法术数/施放
1

这里,"要求--生命值低下 "会:

  • 如果玩家的生命值很低,则丢弃 "否则 "和它之后的所有法术,甚至是 "终点 "之后的第二个巨型核弹,然后抽取第一个火花弹。 请注意,如果巨型分裂弹和火花弹不在魔杖上,"否则 "和第一个死亡十字将被施放。
  • 否则,丢弃火花弹和 "否则",抽取第一个死亡十字。"要求--敌人 "将正常运作。

例子:

Wand 0821.png
乱序
No
法术数/施放
1

这里,"要求--生命值低下 "会:

  • 如果玩家的生命值很低,则不丢弃任何法术,并抽取第一个火花弹。
  • 如果玩家的生命值不低,则只丢弃第一个火花弹并抽取第二个。

"要求 - 敌人 "将正常运作。

举例说明用法

每隔: 使两个不同的有效载荷(交替地)重复利用修正/触发

这个概念最初是由Priskip设计的。它能使敌人持续生成,包括可能掉落生命值上限蠕虫。 (注意:从2021年4月起,不再可能产生怪腿宝箱怪。 从2023年3月起,如果通过杀死一个长腿宝箱怪来解锁,使其变为可能)。

Wand 0821.png
乱序
No
法术数/施放
1

Priskip和LetsSufferTogether在以下视频中解释了更多细节(关于这个魔杖概念的早期版本):

每隔: 将速射魔杖的法力消耗减半

Wand 0821.png
乱序
No
法术数/施放
13

在这个例子中,"每隔 "被用来减少法力的消耗,因为它在一半时间内不施放昂贵的法术。 这在快速发射的魔杖上效果最好,因为它也使你的有效射速减半。

储存--使用两个相互矛盾的要求来始终跳过法术

Wand 0821.png
乱序
No
法术数/施放
1

这也适用于 "要求:投射物数量 "和 "要求: 敌人"(但它们必须是相同的)。由于要求条件不能同时为真和假,里面的法术将永远不会被施放。 然而,实现上的某些特殊性意味着在第一个 "如果 "之前,或者在第一个 "如果 "和 "否则 "之间,必须有可用的法术来在回绕中施放,否则不需要的法术就会被施放。 (将法术放在 "终点 "之后并不奏效;如果条件法术得到满足,"终点 "之后的法术仍然会被丢弃,而魔杖将回绕并施放你想要存储的法术)。 这确实比使用魔杖刷新进行存储需要更多的魔杖槽,但也不需要花费法力,在你获得多份魔杖刷新之前,这可能是一个有用的选择。

储存––资源友好型, 更少施法更易于使用的设计

Wand 0821.png
乱序
No
法术数/施放
1

根据 "每隔 "开关的当前状态:

  • 状态 A: 第一个 "每隔 "将丢弃掉第二个,然后储存的法术会施放,下一个循环是状态 B。
  • 状态 B: 第一个 "每隔 "将不会丢弃任何法术,然后第二个 "每隔 "丢弃存储的法术,并且它的抽取会导致魔杖回绕到泡泡火花,下一个循环还是状态 B。

因此,在将 "每隔 "开关设置为正确状态后,这跟魔杖会持续执行存储操作 (状态 B),除非 "每隔 "是在另一根魔杖中施放过的,这需要将开关重置为正确状态。要初始化或重置开关到正确的状态,先在存储区中使用安全的法术并施放此魔杖。然而,与其他基于条件需求法术的储存设计一样,任何额外的抽取数都可能会从存储区内开始施放法术。

(此设计中泡泡火花也可以移动到末尾。)