卡图尔的地板

卡图尔的地板

地板砖算作屋顶,因此头顶上的地板可为下面的房间遮雨。火堆、壁炉和火盆可放置在地板砖上,而不仅限于裸露地面。这两项功能可分别切换。

头顶的地板能挡雨。火焰能放在你为它搭建的地板上。

原版游戏对这两件事都说了“不”,而原因归根结底只是预制体上的一个标签和两个标志位,而非游戏真正模拟出来的任何东西。

地板算作屋顶

建起第二层后,下面的房间依然会被淋湿。你的火会熄灭,墙壁受到雨水损坏,而你明明站在室内却带着潮湿减益。

这并不是屋顶检测对缝隙有什么聪明的判断。Valheim 判断“我是否在遮蔽之下”的方式是垂直向上投射射线,取第一个未标记为 leaky 的碰撞体——而木头、灰木和铁制地板部件的碰撞体上都带有这个标签。石头和灰石地板没有,这就是为什么那些一直能为你遮风挡雨,而木制的从来不能。

本模组清除了地板部件上的该标签。头顶的地板就是屋顶,和石头地板本来就已经是的一样。雨水伤害、火焰潮湿和遮蔽状态都读取同一个检测,所以三者会同时生效。

受影响的地板:wood_floor、wood_floor_1x1、ashwood_floor_1x1、ashwood_floor_2x2、ashwood_deco_floor、iron_floor_1x1、iron_floor_1x1_v2、iron_floor_2x2、iron_grate。游戏自身标记为地板部件的任何东西都会被覆盖,包括模组——没有内置的预制体名称列表。

地板上的火焰

营火、壁炉、篝火和火盆都不肯离开裸露的土地。两个预制体标志位导致了这一点:notOnWood 会拒绝光标下方的任何木制部件,groundOnly 会拒绝任何非原始地形的东西。

这两个标志位在每个壁炉部件上都被清除了,所以火焰可以放在你为它搭建的地板上。放置的其他一切都不受影响——它仍然需要支撑,仍然不能重叠,烟雾仍然必须排出去。

配置

BepInEx/config/com.jekkle.valheim.carturflooring.cfg,首次运行时写入。

  • FloorsAreRoofs(默认 true)——地板砖为下方的房间提供遮蔽。
  • FiresOnFloors(默认 true)——壁炉部件可以放在地板上,而不仅仅是裸露的地面。

两项修改都在世界加载时对共享预制体执行一次,所以切换开关需要重启游戏后才能生效。在会话中途关闭其中一项无法把预制体还原。

值得了解

已有的建筑也会生效。 修改是在任何东西从预制体生成之前就对预制体执行的,所以你世界里已经矗立的地板会和之后放置的行为一致。无需重建。

格栅也能遮蔽。 iron_grate 按游戏自身的分类属于地板部件,所以它会和其他地板一起不再漏雨。如果你想让格栅保持对天空敞开,请关闭 FloorsAreRoofs——没有针对单个部件的开关。

烟雾仍然重要。 室内没有排烟口的火焰仍然会呛到你。这里没有任何东西触及烟雾系统。

多人游戏:每个客户端都要安装。 两项修改都是对每个客户端自己那份预制体副本进行的,所以没有安装模组的玩家仍然会看到雨水穿过他们的地板,也仍然无法把火焰放在地板上。没有任何同步,也没有任何冲突。

兼容性

没有 transpiler,也没有替换任何方法。在 ZNetScene.Awake 上有一个 postfix,只编辑一次预制体数据,然后在会话剩余时间里什么都不做——没有每帧开销,也没有可供其他模组冲突的行为。添加自己地板部件的模组,只要设置了游戏的 Floor 用途标志,就会自动被覆盖;模组化的壁炉只要使用了 Fireplace 组件,也会被覆盖。

安装

需要 BepInEx。解压到你的 Valheim 文件夹,使 DLL 落在 BepInEx/plugins 中。

更多来自 Cartur 的作品

HD Blood - 更高分辨率的地面血迹,每次命中都有真正的喷溅。 Map Pins - 探索时把世界钉到你的地图上。 Follow Command - 每只驯服的动物都会接受跟随命令。 Compass and Clock - 屏幕顶部一条《天际》风格的罗盘条。 Safe Stamina - 附近没有敌人时耐力不消耗。

免费,而且永远免费——如果它改善了你的游戏,你可以在 Patreon 上打赏我