欢迎光临散文网 会员登陆 & 注册

【Terraria机制】有效房屋是如何判定的

2019-03-04 20:19 作者:putianyi888  | 我要投稿

有效房屋是Terraria中一个极有特色的机制,也是被提问最频繁的话题之一。这个专栏将详细解释有效房屋的判定细节。专栏内容由我自己实验测试与下面的参考链接得到:

https://terraria.gamepedia.com/House

https://forums.terraria.org/index.php?threads/how-npc-housing-at-npc-rest-position-validation-does-work-an-unrevealed-game-change-in-1-3-5.75980

https://forums.terraria.org/index.php?threads/how-to-make-npc-stay-at-the-top-of-the-house.75978/

范围及大小

一个有效房屋必须是由实体块、平台、门(或机关门/高门)围成的连续封闭区域,并且这些实体块/平台/门共同组成这个区域的边界。组成边界的方块不能全部是实体块。区域的内部和边界占用的总格数最小60格,最大750格。以简单的矩形区域为例,最小的一些例子有5*12(内部3*10),6*10(内部4*8),7*9(内部5*7),8*8(内部6*6)。

这里有两个重要的概念。第一个概念是“连续”的封闭区域。对角的两格也算连续。下图所示的房屋是一整个连续封闭区域。第二个概念是边界。把连续的封闭区域增大一圈,增大的这一圈就是这个区域的边界。下图所示的房屋中,除了上下左右的平台和方块,中间的三格方块也算作边界,因为把内部区域增大一圈,不光会覆盖外边界,也会覆盖中间三格。

必备家具

一个有效房屋必须包含至少一个有效光源、至少一个用于休息的家具、至少一个用于娱乐的家具。

有效光源包括所有火把、所有灯(大小1*3)、所有灯笼(大小1*2)、所有蜡烛、所有烛台(大小2*2)、所有吊灯(大小3*3)、中式灯笼、圣诞灯、壁炉。需要注意的是灯柱、篝火、迪斯科灯不是有效光源。

用于休息的家具包括所有椅子、王座、所有长椅、所有床、所有马桶(???)、所有沙发。

用于娱乐的家具包括所有桌子、所有梳妆台、所有工作台、所有浴缸、所有书架、所有钢琴、炼药桌、召唤桌、战争桌。

背景墙

一个有效房屋必须要有可以阻止刷怪的人工背景墙,不能阻止刷怪的自然背景墙的位置视为没有墙。需要注意的是船帆属于自然背景墙,而金字塔的沙岩砖墙、遗迹小屋的主题墙属于人工背景墙。

人工背景墙不必铺满,但是要保证不会出现横向或纵向的连续四格空洞。类似于四子棋,只要有四格空洞横向或纵向连续排列,房屋无效。

腐化度

一个房屋的腐化度可能会影响该房屋的有效性,其具体影响机制见后续小节,这小节中仅讲腐化度计算。

只有房屋附近的一个矩形区域才参与腐化度计算。这个矩形区域内每格腐/血方块提供1点腐化度,每格神圣方块提供-1点腐化度,每格向日葵提供-5点腐化度。注意是每格不是每个,如果一个向日葵整体都在该矩形区域内,因为向日葵总共有8格,这个向日葵将提供-40点腐化度!

矩形区域的右边界距离房屋的右边界(如果房屋形状不规则,取最右边的一格边界,下同)42格,左边界距离房屋左边界42格,上边界距离房屋上边界40格,下边界距离房屋下边界43格。矩形宽度为房屋宽度+84格,矩形高度为房屋高度+83格,房屋宽度和高度包括边界。希望这个信息能帮助大家理解有歧义的矩形边界位置描述(距离是否包括端点)问题。

NPC站立点

一个有效房屋的边界中一定有一个实体块可以供NPC站立,为夜晚或下雨时NPC休息的位置。这个实体块的正上方一格是房屋内部(即要在地板上)。其次它附近的物块摆放必须满足一定条件。

如上图,以唯一一个地板实体块为例,红色区域的下三格不允许有实体块或平台,绿色区域的下三格不允许有实体块。其他部分无所谓。

除此以外,这个实体块的得分还必须大于0。得分的算法:

  1. 得分初始值为50。

  2. 在绿色和蓝色区域中的每有一格(注意是格不是个)门,得分-20;每有一格实体块或平台,得分-5;每有一格除宝箱以外的非实体块,得分+5。

  3. 如果得分<=0,这个实体块无效,算法结束。如果得分<50并且房屋的腐化度>=50,实体块无效,算法结束。如果得分>=50并且房屋的腐化度>=得分,实体块无效,算法结束。

  4. 在绿色和蓝色区域中每有一格宝箱,得分-30,得分最低只能减到1。

  5. 在红色区域中每有一格东西(啥都行,只要不是只有背景墙),得分-15。

  6. 如果得分>0,这个实体块有效。

我们以上图旭式监狱为例。初始值50;蓝色区域中共有8格平台,绿色区域中共有3格工作台和椅子,50-40+15=25;红色区域有一格工作台,25-15=10。所以这个实体块有效。

如果火把放在红色区域,那么得分会额外减15,变成-5,这个实体块无效。

如果在绿色区域再加两个火把,得分会加10,变成5,实体块又会有效。已经测试过只加一个火把,得分为0时实体块无效。

一个房屋中可能有多个地板实体块,如果所有的地板实体块都无效,那么房屋无效,否则这个房屋的位置定为所有地板实体块中分数最高的那块,NPC入住的徽标就会显示在那一块上方。另外需要注意的一点是,红色、绿色、蓝色区域不仅可能包括房屋边界,也可以包括房屋以外的格子。下图的房屋是有效的,只有绿色区域中的8格平台,得分为50-40=10。

但是往房屋外边增加两个平台后,如果这两个平台在蓝色区域内,得分会变为50-50=0,方块无效。

在外面的蓝色区域再插了一个火把后,得分为50-50+5=5,方块有效。

再看到我们一开始的这张图,蓝色区域和绿色区域有8格实体块、两格平台、两格火把和两格椅子,红色区域有1格实体块,得分为50-40-10+10+10-15=5,有效。如果火把少一个,得分变为0;椅子放在下面,得分变为-5;工作台放在上面,得分变为-5(有一格工作台会进入红色区域),均无效。所以多的一个火把不是拿来装饰的,椅子和工作台摆放也是有讲究的。


【Terraria机制】有效房屋是如何判定的的评论 (共 条)

分享到微博请遵守国家法律