房屋
房屋(或家)是生成城镇 NPC 所必需的由玩家建造的建筑物,每个 NPC 都需要一间房屋。建筑物需要满足一些要求才能作为房屋使用(见下方)。玩家可以用房屋菜单来检查建筑物是否满足要求,或是将 NPC 分配进已有的房屋。如果被 NPC 占用的房屋受损而导致其不满足要求,NPC 将从中搬出并在附近区域内走动,直到产生合适的房屋。如果世界中有空余的房屋,NPC 可能会入住到其中的一间内。如果 NPC 被杀死且他没有家,他将在有可用的新房屋后重生。
(译注:本文中使用的两个术语:入住(move in),指新的或失去房屋的 NPC 搬进一个房屋这一事件;分配(assign),指使用房屋菜单让世界中已经存在的 NPC 住到一个房屋中的行为。)
如果城镇 NPC 和他的房屋都在屏幕外,他将会在夜晚、雨、日食、或史莱姆雨(电脑版、主机版、和移动版)期间传送回他的房屋。老人(电脑版、主机版、和移动版) / 所有 NPC(前代主机版、和3DS版)若正站在地牢砖上,就也会被传送回房屋,无论时间。老人会将地牢点(老人的生成点,即他晚上所站的两格的左边那格)视为他的家。[1][2]
向导在普通的新世界一开启时就会出现,但如果他被杀死就需要有房屋才能重生。老人、旅商(电脑版、主机版、前代主机版、和移动版)、和骷髅商人(电脑版、主机版、和移动版)不要求房屋。
类似地,向导、渔夫、哥布林工匠、酒馆老板(电脑版、主机版、和移动版)、机械师、发型师、巫师、税收官(电脑版、主机版、和移动版)、和高尔夫球手(电脑版、主机版、和移动版)各自的最初出现和是否有可用房屋无关。一旦首次发现他们后,每个人都需要有一个合适的房屋才会重生。
某些自然生成的建筑物只要玩家在其中放置光源就可以作为房屋并会在不经意间吸引 NPC。例如漂浮岛上的建筑物,和(前代主机版、和3DS版)生命树的宝藏室。可以用房屋菜单将住在其中的 NPC 移到玩家的建筑物去。
玩家选定床能作为生成点的要求与作为 NPC 房屋的要求类似,但要宽松一些。玩家无需床以外的其他家具。完整细节参见床页面。
房屋菜单
房屋菜单允许对 NPC 的位置进行管理。可以通过点击物品栏中盔甲栏上方的小房屋图标来访问。玩家可以检查一间房屋是否适合 NPC 使用,以及手动将房屋分配给特定的 NPC。
(电脑版、主机版、和移动版)要检查房屋是否适合使用,在“?”房屋查询标记上按下⚒ 使用/攻击,然后点击房屋内部的任何地方;玩家会收到一条状态讯息,表明此房屋是否适合。如果不适合,游戏会提示此房屋缺了什么。该警告会优先考虑框架和墙,然后是家具(门、光源、桌子、和椅子)。一条笼统的“这不是有效的房屋。”提示可能是由于房屋的框架没有封闭,或者 NPC 没有可用的站立点(见下方章节)。如果查询的是实心块,则会显示“这是个实心块!”。
一旦房屋确定为合适,就可以通过在其中放置相应的 NPC 旗号来为其分配 NPC。仅有已存在于世界中的那些 NPC 的旗号才会出现。例如,首次进入新世界时,只会显示向导的 NPC 旗号。其他 NPC 的 NPC 旗号只会在他们在世界中生成后才会显示。在 电脑版、 主机版、和 移动版中,NPC 旗号有两种不同的外观:纯红色和带金色边框的红色。自行入住的 NPC 是常规的红色旗号。如果是分配了房屋的,其旗号会带有金色边框。这指示着当前居住在这个家里的 NPC 死亡后,其继任的 NPC 将必定入住到此房屋中。
在 前代主机版中,房屋菜单可以通过按物品栏键并来到房屋菜单部分来打开。要检查房屋是否有效,按下快速增益键,然后所在的房屋的状态会输出到聊天中。 按物品栏键来显示/隐藏 NPC 旗号。
在任天堂版中,可以用触摸屏上的按键开启房屋菜单。仅当位于有效的房屋中时,按键才会亮起并可按下。在菜单中,玩家可以点击 NPC 的旗号来设置其房屋。按下显示/隐藏旗号(Show/Hide Flags)按键可以显示/隐藏 NPC 旗号。
当第一次满足某个 NPC 的生成条件时,会从可用的合适空房屋中随机为其分配一间。
房屋有效性评估
当 NPC 将要入住、玩家通过房屋菜单为 NPC分配房屋、或玩家对一间房屋使用房屋查询时,会对选中的房屋进行房屋有效性评估。
如果房屋有效性评估是由房屋菜单发起的,会出现特定的状态讯息来告知玩家房屋是否合适,或导致房屋无效的原因。
液体不影响房屋的有效性。
包含臭虫拦截器(电脑版、主机版、和移动版)房屋永远是无效的,且在被查询时会显示相应的状态讯息:
- 臭虫拦截器:“这个房间有臭虫出没!”
- 幽灵臭虫拦截器:“这个房间有幽灵臭虫出没!”
房屋有效性评估可分成 3 个阶段:框架、家具、和属性。
框架
在这一阶段,游戏会尝试判定出房屋的边框和内部区域,并且对其结构完成若干评估。[3] 房屋的范围包括一块“连通”的内部区域和围绕着内部区域的“边框”,其中:
- 一个图格可以在 8 个方向上“连通”,这意味着房屋内部区域中的图格需要在水平方向、竖直方向、或斜角方向上彼此相连。
- “边框”是指围绕着内部图格的那些图格。边框必须完全封闭(即内部区域和边框外的任何图格完全不连通)。边框必须由实心图格(即未被致动的实心块或平台)、机关门、门、或高门组成(仅有关门状态下所占据的那些图格才算作外框)。
房屋范围内的所有图格(包括框架和内部区域),需要满足以下条件:
- 所有图格离世界的真正边缘必须有至少 10 个图格远。[4]
- 范围内不允许存在水平或竖直方向上连续 5 格及以上图格的“洞”。“洞”指的是未被有效的实心块占据同时又没有有效的背景墙的图格。
- 房屋的大小也有约束:包括边框和内部区域,总共的图格数量至少要有 60 个,同时要少于 750 个。
- 下方为和框架检查相关的状态讯息:[5]
- 若房屋缺少太多的背景墙:“这个房间少了背景墙”
- 若房屋太小:“这个房间太小了”
- 若房屋太大:“这个房间太大了”
在决定房屋的框架后,游戏会为接下来的检查保存两个区域:[6]
- 整个房屋区域。这包括所有内部图格和框架。这被用于检查有效家具。
- 房屋内部的坐标。这包括排除所有框架图格后,最左与最右侧的图格的 X 坐标(左侧 X1,右侧 X2),和最高与最低处的图格的 Y 坐标(上方 Y1,下方 Y2)。这被用于检查邪恶分值和家图格分值。
最小的房屋尺寸
由于房屋的最小大小为 60 格(包括框架),因此,矩形的房屋尺寸必须满足以下最低要求之一:
不包括天花板、地板和墙 | 包括天花板、地板和墙 |
---|---|
3 格宽 × 10 格高 [7] | 5 格宽 × 12 格高 |
4 格宽 × 8 格高 | 6 格宽 × 10 格高 |
5 格宽 × 7 格高 | 7 格宽 × 9 格高 |
6 格宽 × 6 格高 | 8 格宽 × 8 格高 |
7 格宽 × 5 格高 | 9 格宽 × 7 格高 |
8 格宽 × 4 格高 | 10 格宽 × 6 格高 |
10 格宽 × 3 格高 | 12 格宽 × 5 格高 |
13 格宽 × 2 格高 (前代主机版、和3DS版)[8] | 15 格宽 × 4 格高 |
注意房屋并不需要是矩形的。上方的尺寸仅作示例。
家具
在这一阶段,游戏会检测完整房屋区域内是否有必要的家具。
房屋范围内必须至少有一个有效的光源、一个有效的平坦表面物品、一个有效的舒适性物品、和一个有效的入口。[9]符合条件的最小最简单的物品分别是火把、工作台、椅子、和木平台各一个。所有可用物品的列表见下方。[10]
- 并非所有提供光亮的物品都满足房屋的光源要求;具体来说,任何实心块、平台、或墙都是不合格的。
- 入口并不需要是 NPC 可使用的(例如,NPC 并不能使用机关门),也并不需要通向“室外”(例如,放置在房屋内的一个平台也是可用的)。
- 下列每个物品的任何类型都满足要求。例如,任何颜色的火把都可以,任何主题的椅子也一样。
- 如果房屋缺少任何所需的家具,它会在状态讯息中被提及。[5]
- 例如,对于没有任何家具的房屋会出现“这个房屋缺少光源、门、桌子和椅子。”
光源
任何图格 ID为 4、33、34、35、42、49、92、93、95、98、100、149、173、174、270、271、316、317、318、372、405、572、581、592、646、或 660 的物品:
平坦表面物品
任何图格 ID 为 14、18、87、88、90、101、354、355、464、469、或 487 的物品:
舒适性物品
任何图格 ID 为 15、79、89、102、487、或 497 的物品:
入口物品
任何图格 ID 为 10、11、19、386、387、388、389、427、435、436、437、438、或 439 的物品:
属性
经过以上的步骤,房屋结构上似乎已经合格了,但仍可能有三种原因导致它变得无效:它已被占用;它太靠近或在邪恶生物群系中;它其中没有可供 NPC 在夜晚站立的位置。
- 首先,检查房屋是否已被其他 NPC 入住占据。如果已有入住,则房屋无效,并显示状态讯息“此房屋已被占据。”
- 否则,就会通过判定两种房屋属性的方式来确认一个房屋是否有效:邪恶分值,和家图格分值。[11]
邪恶分值
然后,开始评估邪恶分值:
- 所检查的区域基于房屋的内部坐标,向外延伸。具体的延伸范围随游戏版本而有所不同,在 1.4.4.9(电脑版、主机版、和移动版) 中是:[12]
- 水平方向:以房屋范围内最靠左/右的图格开始,各延伸 46 格(从 X1-46 到 X2+46)。
- 竖直方向:以房屋范围内最靠上/下的图格为起点,各延伸 44 (从 Y1-44 到 Y2+44)。
- 如果以上区域四边中的任意边距离真正的世界边缘小于 5 格,则收缩到距离世界边缘 5 格处。 [13]
- 统计区域中的所有有效图格(包括被致动的)的总分值,具体见下表:[14]
图格 | 对分值的影响 |
---|---|
腐化草 | 每格 +1 分 |
黑檀石块 | |
紫冰雪块 | |
黑檀沙块 | |
黑檀沙岩块(电脑版、主机版、和移动版) | |
硬化黑檀沙块(电脑版、主机版、和移动版) | |
腐化多刺灌木 | |
腐化植物 | |
魔菇 | |
猩红草 | |
猩红石块 | |
红冰雪块 | |
猩红沙块 | |
猩红沙岩块(电脑版、主机版、和移动版) | |
硬化猩红沙块(电脑版、主机版、和移动版) | |
猩红多刺灌木(电脑版、主机版、和移动版) | |
神圣草 | 每格 -1 分 |
珍珠石块 | |
粉冰雪块 | |
珍珠沙块 | |
珍珠沙岩块(电脑版、主机版、和移动版) | |
硬化珍珠沙块(电脑版、主机版、和移动版) | |
矮神圣植物 | |
高神圣植物 (每株植物仅算作一格,虽然其外观上高两格。) | |
向日葵 | 每棵 -40 分[15] |
- 最终计算:邪恶分值 = 腐化图格分值 + 猩红图格分值 - 神圣图格分值 - 向日葵分值
如果邪恶分值至少为 50,则房屋无效,并显示“此房屋已腐化。”,若邪恶分值至少为 300 时,则改为显示“这不是有效的房屋。”当一间已被占用的房间被腐化/猩红化时,生活在其中的 NPC 可能会搬出去并在此区域走动,直到有新的房屋可用。
家图格分值
然后,开始检查房屋内是否有有效的“家图格”。家图格会在一个基于房屋的内部坐标所确定的矩形区域内选择。区域起始于最左和最右侧图格向内 1 格,最上方图格向下 2 格,最下方图格向下延伸 1 格(从 X1+1 至 X2-1,从 Y1+2 至 Y2+1)。[11]
然后,所选图格需要满足下方需求以成为有效的家图格。图中紫色图格作为待判定的家图格:
- 它不能是平台或泡泡。
- 它本身和它左侧和右侧直接相邻它的图格(蓝色图格)必需是实心的未被致动的图格。
- 它正上方高 3 格,宽 3 格的范围内(绿色方框中的图格)不能有影响通行的物体(即不允许有未致动的实心块,但可以有平台)。
- 它正上方 3 格(绿色方框中的黄色图格)必须没有实心图格,且这 3 格必须全部都在房屋范围内。
如果有符合以上条件的图格,使用正上方 5×4 范围内(红色、白色、黄色图格)的物体来计算“家图格分值”。“家图格分值”起始为 50。
- 区域内的大部分类型的实心图格(物块、家具,等等)都会影响家图格分值。以下为不被包含在内的图格的列表:[16]
- 对于第一次计算,在正中间一列的(即图格正上方 1×4 的范围;黄色图格)不被使用,它们只参与第二次计算(见下方)。
在第一次计算后,若家图格分值小于等于 0,则该图格无效。若家图格分值大于 0,则继续进行第二次计算:
- 如果正在将第二名 NPC 分配到房屋中,导致他们共享房屋(城镇 NPC 和城镇宠物(电脑版、主机版、和移动版)),且当前格与已入住的那个 NPC 的家图格水平距离小于 3,那么分值会被直接设置为 1。
- 如果正上方 5×4 范围内(红色、白色、黄色图格)有任何类型的常规宝箱(机关宝箱不算,但锁住的宝箱算),宝箱每占用一个图格 −30 分。如果计算后分值小于 1,则设置为 1。
- 如果正上方 1×4 范围内(黄色图格)有实心图格验证,每有一格就 −15 分。
- 如果最终分值小于等于 0,此格不合格。
房屋内必须至少有一格合格的家图格作为 NPC 的站立点,否则会显示“这不是有效的房屋。”。NPC 旗号会挂在 NPC 站立点上方。如果有多个有效的家图格,则会选择分数最高的图格中,最靠左上的那格。[18]
当房屋较小时,城镇宠物和城镇 NPC可以共享同一个家图格。不过,在将第二个 NPC 分配进房屋时,该图格必须再通过一次检查。[19]
松露人
松露人 NPC 对他的房屋有额外条件:其最低的图格(Y2)必须高于地表,且房屋周围范围内必须有至少 100 格的发光蘑菇生物群系物块。这一范围和用于计算邪恶分值的区域的大小相同。[20]
如果试图将松露人移动到不符合此需求的房屋,会显示状态讯息:“此房屋不符合以下人物要求:松露人。”
成就
备注
- 增加世界中空房屋内的空墙区域(即只有背景墙,没有其它实心块/背景物体的图格)的大小会使 NPC 入住更快。此外,使用沙岩砖墙会将 NPC 入住需花费的时间增加。[21]
- 这意味着没有空墙区域的房屋只能被玩家分配 NPC。
- 房屋可以连在一起并共用公共墙壁、地板、天花板、和门。对于玩家看来像一座有多个房间的房屋或者公寓的结构,在 NPC 看来是一堆互相独立的房屋。
- 几乎所有 NPC 房屋都符合玩家放置床并将其用作生成点所需的条件,只要床正上方的图格是清空的即可(完整细节,参见床页面)。床也算作舒适性物品。
- 如果已分配给 NPC 的房屋被摧毁或有任何要求变为无效状态,NPC 会在此区域走动直到重新有可用的有效房屋。如果 NPC 被杀死,他会在有效的房屋恢复了之后立刻重生。
- 当房屋处于可见屏幕内时,NPC 不会在房屋内重生,取而代之的是在屏幕外面的区域走动。在夜晚,如果玩家移动到几个屏幕之外,或使用任何魔镜或传送机,NPC 们会自动进入他们的房屋中。
- 世界的边缘不算作房屋的框架的一部分。
- 如果背景墙由于生物群系蔓延而被转化(如石墙变为珍珠石墙),房屋将会变得无效,因为被转化的墙被视为不安全的。
小贴士
- 在腐化或猩红生物群系中的房屋通常是无效的。这会让购买有生物群系需求的物品(尤其是油漆工)需要折腾一番才能满足。对于此种情况,建议使用国王雕像或女王雕像将 NPC 传送以购买物品。
- 如果没有国王雕像或女王雕像,可以在邪恶分值判定区域外且仍然处于邪恶生物群系中(邪恶生物群系的背景可见)的位置建造房屋,它将仍然是上述生物群系中的有效房屋。
- 致动器可以和蓝、棕、灰、丛林蜥蜴压力板共同使用来让玩家可以进入,同时阻止敌怪进入和 NPC 外出。但是,如果致动后的墙维持打开状态,这可能让房屋变得无效,直到再次将其变得实心为止。
- 在 前代主机版和任天堂版中,若在初始生成点建造房屋,最好不要在人物出现的地方放置任何实心物体或物块;当玩家传送回此处或重生时,任何在其出现位置的物块或家具会被破坏,这可能会让房屋变得无效。
- 如果确实绝对有必要,(例如:在任天堂版中,其中没有房屋菜单),玩家可以通过摧毁所有其余房屋的方式强制让某个 NPC 进入特定的房屋。
- 在房屋符合大小要求的同时,它可以是任何形状的,而并不仅限于长方形或正方形。(例如,圆顶房屋依然有效。)
- 明智的做法是在当前 NPC 数量之外建造一些“备用”房屋:
- 在地下建造房屋时,粘性炸弹或甲虫炸弹(电脑版、主机版、和移动版)是不错的选择,因为它们较为精准,且能够破坏背景墙以更方便地替换墙。
- 虽然将所有 NPC 塞入小房屋的做法可能很诱人,但这为装饰或装备留下的空间很少。许多制作站是 3 格宽 3 格高的,随着游戏推进,玩家还能获得最大 6 格宽 4 格高的绘画作品和动物皮,以及 3 格宽,最多 6 格高的盆栽植物。
- 房屋是玩家挥洒创意的好地方。为 NPC 提供经过装修及主题化的家可以是很有意思的,虽然空荡荡的房间也足以让他们满意。 NPC 快乐系统(电脑版、主机版、和移动版)建立在这种乐趣来源之上,通过让 NPC 对其房屋的位置和与其他 NPC 房屋的距离有所偏好来实现。虽说如此,NPC 的快乐并不受房屋的外观或装修所影响,从而让玩家在这方面能不受约束自由发挥。
花絮
- 有物块位于距离“真正”的世界边缘 5 格以内的房屋被视为无效的,并且具有状态讯息“我们需要为此提供更好的文本!!!”不过,这一条件在游戏内无法达成,因为在游戏内的可见世界边缘和“真正”的世界边缘之间有约 41 格的距离。
另见
历史
- 电脑版 1.4.0.1:Chippy的沙发现在可以在房屋中用作舒适性物品。
- 电脑版 1.3.5.3:修正了在某些语言中试图在不合适的房间上使用房间查询时出现的错误。
- 电脑版 1.3.5:对于手工分配房间的 NPC,如果之前那个被杀,其继任会尝试搬进同一间房间内。
- 电脑版 1.3.1:修正了“无限房屋”漏洞。
- 电脑版 1.3.0.5:生命树叶墙现在可以作为房屋的背景墙。
- 电脑版 1.3.0.1:来自地牢的蓝板墙现在对于房屋也算作有效。
- 电脑版 1.2.4.1:开着的门再次可能导致房间变为不合适,但仅限于向同一个房间开两扇门的情况(依赖于房间的大小)。
- 电脑版 1.2:修正了一个会导致合适的房屋变为不合适的 Bug。
参考
- ↑ 信息来自 电脑版 1.4.4.7 源代码,
Terraria.NPC.cs
中的AI_007_TownEntities()
方法。这可能已经不准确,因为 电脑版的当前版本已经是 1.4.4.9。 - ↑ 信息来自 电脑版 1.2.4.1 源代码,
Terraria.NPC.cs
中的AI()
方法。 - ↑ 信息来自 电脑版 1.4.4.9 源代码,
Terraria.WorldGen.cs
中的StartRoomCheck()
方法。 - ↑ 游戏内可见的世界边缘距离真正的世界边缘大约有 41 格远,因此这一条在正常游戏过程中应当不会触发。
- ↑ 5.0 5.1 信息来自 电脑版 1.4.4.9 源代码,
Terraria.WorldGen.cs
中的MoveTownNPC()
方法。 - ↑ 信息来自 电脑版 1.4.4.9 源代码,
Terraria.WorldGen.cs
中的CheckRoom()
方法。 - ↑ 仅当使用工作台而非桌子时才可能。
- ↑ 仅当使用平台作为天花板时才可能。在电脑版、主机版、和移动版上已不再可能。
- ↑ 信息来自 电脑版 1.4.4.9 源代码,
Terraria.WorldGen.cs
中的RoomNeeds()
方法。 - ↑ 信息来自 电脑版 1.4.4.9 源代码,
Terraria.ID.Sets.cs
中的RoomNeeds
类。 - ↑ 11.0 11.1 信息来自 电脑版 1.4.4.9 源代码,
Terraria.WorldGen.cs
中的ScoreRoom()
方法。 - ↑ 信息来自 电脑版 1.4.4.9 源代码,
Terraria.WorldGen.cs
中的Housing_GetTestedRoomBounds()
方法。 - ↑ 注意,此条在正常游戏中可能触发,因为评估区域的延伸距离长于世界可见边缘和真正边缘的距离(41 格)。
- ↑ 信息来自 电脑版 1.4.4.9 源代码,
Terraria.WorldGen.cs
中的GetTileTypeCountByCategory()
方法。 - ↑ 每格 -5 分,每棵向日葵占 8 格
- ↑ 信息来自 电脑版 1.4.4.9 源代码,
Terraria.ID.TileID.Sets.cs
中的IgnoredInHouseScore
字段。 - ↑ 信息来自 电脑版 1.4.4.9 源代码,
Terraria.WorldGen.cs
中的IsOpenDoorAnchorFrame()
方法。 - ↑ 游戏会从上到下,从左到右依次检查房屋内图格:如果比之前分数更高,则记录为候选;如果和之前分数相同或更低,则跳过。因此,当多个图格并列最高时,最靠上、靠左的图格会被选为家图格。
- ↑ 此前存在的家图格可能会因家图格分值检查中的第二次计算而变得无效,因此并非所有小房屋的布局都能住下两名 NPC。
- ↑ 信息来自 电脑版 1.4.4.9 源代码,
Terraria.WorldGen.cs
中的CheckSpecialTownNPCSpawningConditions()
方法。 - ↑ 信息来自 电脑版 1.4.4.9 源代码,
Terraria.WorldGen.cs
中的TrySpawningTownNPC()
和Terraria.WorldGen.cs
中的SpawnTownNPC()
方法。对于任何有效的房屋墙,入住几率为 1/1 (100%),而沙岩砖墙具有 1/4 (25%) 几率。