巨型作物内部

巨型作物内部

为巨型作物添加门和内部空间。

地点

[youtube]DTDft5p3xsg[/youtube]

概述

此模组将巨型南瓜和巨型甜瓜变成带有门和室内空间的建筑。

室内空间可以使用墙纸和地板进行装饰。

默认情况下,巨型作物内部放置物品时无法被摧毁。

摧毁巨型作物将移除其室内空间。

自定义室内空间

您可以通过定位 "Maps/GiantCrop" 来编辑室内位置地图。

您可以通过定位以下路径来编辑门的精灵图:

"aedenthorn.GiantCropInteriors/Pumpkin" "aedenthorn.GiantCropInteriors/Melon"

您可以使用 Content Patcher 将其他巨型作物指定为具有室内空间,例如:

[code]{ "Format": "2.7.0", "Changes": [ { "Action": "EditData", "Target": "aedenthorn.GiantCropInteriors/dict", "Entries": { "Cauliflower": { "Texture": "path/to/texture", "Name": "My Building", "Description": "This is my building.", "IndoorMap": "GiantCrop", "IndoorMapType": "StardewValley.Locations.DecoratableLocation" } } } ] }[/code]

模组会为每个字典条目添加新的建筑类型。IndoorMap 必须位于 Maps 文件夹中,因此从模组文件加载时,请在其前添加 "Maps/" 前缀,但在上述字典条目中省略 "Maps"。

注意事项

这是一个可能产生不良后果的模组;它会在每个作物位置创建一个隐形建筑。移除模组并不会移除这些建筑。

要正确移除模组,请在配置中禁用 "ModEnabled",然后在模组禁用状态下保存游戏。之后便可以删除模组或保持其禁用状态。

请注意,这意味着禁用模组会移除作物室内所有放置的物品。

注意事项

此模组还修复了一个长期存在的 bug,该 bug 导致墙纸无法在三格高的墙上显示,除非第三格上方有可贴墙纸的建筑瓷砖。理论上,即使第三格上方没有可贴墙纸的建筑瓷砖,也应该能够拥有三格高的可贴墙纸墙壁,但游戏通过检查第三格下方是否为实际地板瓷砖来阻止这一点,这在理论上是有道理的。问题在于游戏实际上并不检查第三格是否为地板瓷砖,它只是声明所有墙纸和地板瓷砖(除了婴儿床后面)都是可放置地板的。此模组使其进行实际检查,允许在第三格不是地板瓷砖时贴上墙纸。如果你想在你的模组中实现此修复,修复代码如下:

[code][HarmonyPatch(typeof(DecoratableLocation), "IsFloorableTile")] public class DecoratableLocation_IsFloorableTile_Patch { public static void Postfix(DecoratableLocation __instance, int x, int y, ref bool __result) { if (!__result) return;

    string floor_id = __instance.GetFloorID(x, y);
    __result = floor_id != null;
}

}[/code]

技术细节

需要 SMAPI。

实现了 通用模组配置菜单 界面,以便在游戏中更改配置设置。

代码位于 https://github.com/aedenthorn/StardewValleyMods。

我所有星露谷物语模组的列表可在 https://www.nexusmods.com/stardewvalley/articles/895 找到。