房屋
房屋(或家)是生成城鎮 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%) 幾率。