全站通知:

模组:迁移至游戏本体1.5

来自星露谷物语维基
跳到导航 跳到搜索

模组:目录

当前页面编写的内容面向模组的开发者。模组玩家请阅读模组:模组兼容性

本页面说明了如何更新你的模组以兼容星露谷物语 1.5,并记录了一些变更和新功能。

针对 SMAPI 模组

分屏模式

星露谷物语 1.5 增加了分屏本地多人游戏。大多数模组在非分屏模式下不受影响,将和以前一样工作。

在分屏模式下……

  • 每个屏幕都在同一个游戏实例中运行。游戏会自动为当前玩家切换游戏状态,但模组的内存数据将在所有屏幕之间共享。你可以使用 SMAPI 的PerScreen<T>来包装字段,以便为每个玩家提供单独的值。
  • 每个屏幕都有自己的事件GameLoop.GameLaunched除外)。例如,在有两个活动屏幕的情况下,GameLoop.UpdateTicked事件每帧会发生两次(每秒 120 次,而不是 60 次)。如果需要检查是哪个玩家,你可以使用 Context 字段(如 IsMainPlayerIsSplitScreenIsOnHostComputerPlayerIndex)。
  • 分屏农场帮手仍然适用多人游戏限制,因为分屏本质上就是普通的多人游戏。例如,即使他们在主机上运行,分屏农场帮手也只能访问同步的位置(除非你手动访问主机的缓存状态)。唯一的例外是 SMAPI 的存档数据 API,它对主机上的农场帮手有效(但对远程农场帮手无效)。
  • 分屏多人游戏时 Context.IsMultiplayer 返回 true。如果需要,你可以使用更具体的字段,如 IsSplitScreenHasRemotePlayersIsOnHostComputer

自定义模组数据

现在,每个 CharacterGameLocationItemTerrainFeature 实例都有一个 modData 字典字段,该字段会持久化到存档文件并在多人游戏中同步。这可以用来存储任意的模组数据,包括通过 Game1.player.modData 存储在玩家自己身上的数据。

当你拆分一个物品堆叠时,新的堆叠会复制前一个堆叠的模组数据;当合并到另一个堆叠时,被合并的物品会采用目标堆叠的模组数据。除此之外,模组数据对物品的拆分/合并逻辑没有影响(例如,你仍然可以合并具有不同模组数据的物品),除非被 Harmony 补丁覆盖。

注意:为避免模组冲突,强烈建议使用你的模组 ID 作为数据字段的前缀:

item.modData[$"{this.ModManifest.UniqueID}/item-age"] = "30";

UI 缩放变更

主条目:Modding:Modder Guide/Game Fundamentals#UI scaling

星露谷物语 1.5 允许玩家独立于缩放级别更改 UI 缩放。这对模组意味着什么取决于它们的功能。

哪些模组会受影响?
这会影响在以下情况中绘制或检查位置的代码……
  • 菜单;
  • HUD 元素;
  • SMAPI 的 RenderingActiveMenuRenderedActiveMenu 事件;
  • 在某些上下文中 SMAPI 的 RenderingRendered 事件(检查 Game1.uiMode)。
会影响……
  • 地图上放置的物体、家具、作物等的 draw 方法;
  • 只使用图块坐标(而非像素坐标)的代码。
你可以通过将缩放设置为最大并将 UI 缩放设置为最小(即让它们的值不同)或反之来测试你的模组;特别要检查任何处理像素位置的逻辑,比如菜单点击。如果一切看起来正常,你可以跳过本节的其余部分。
这对受影响的模组意味着什么?
  • 这引入了两种经过 UI 调整的像素坐标系,一种用于绝对位置(相对于地图左上角),另一种用于屏幕位置(相对于屏幕左上角)。你应该小心不要将它们混用,以避免棘手的计算;例如,在一个坐标系中完成所有工作,然后一次性转换它们。
  • 游戏现在根据上下文有两种不同的绘制模式:UI 模式非 UI 模式。你可以检查 Game1.uiMode 来了解当前激活的是哪种模式。这会影响应该使用哪种坐标系来绘制到屏幕上。

    在绘制 UI 时,你可以向游戏表明你想要使用 UI 缩放。如果游戏已经在 UI 模式下,这对性能影响最小,但如果知道代码总是在非 UI 模式下运行,则应避免不必要地这样做。

    Game1.game1.InUIMode(() =>
    {
       // 你的 UI 绘制代码在这里
    });
    
我该如何更新受影响的代码?
  • 在 UI 模式下将某些东西绘制到游戏世界中(例如,图块覆盖层)会使事情变得更加困难。考虑在非 UI 模式下进行绘制,例如,从 SMAPI 的 Rendered 事件切换到 RenderedWorld
  • 要非常小心混合坐标系。例如,在绘制循环之外构建的菜单可能会在非 UI 模式下初始化坐标,然后在 UI 模式下处理点击。在这种情况下,你可能需要将值转换为非 UI 坐标来检查它们(请参阅下面的转换)。
  • 在绘制 UI 时,在大多数情况下,你应该用 Game1.uiViewport 替换 Game1.viewport。这些提供了经过 UI 调整的像素位置。不要在你会单独为 UI 缩放调整位置的情况下这样做(见下文),因为双重转换会给你错误的结果。
  • 如果你手动调整像素位置,请参阅下面的转换。
我该如何在 UI 和非 UI 坐标之间转换?
转换 代码
像素 → UI 调整后像素 Utility.ModifyCoordinatesForUIScale(position)
UI 调整后像素 → 像素 Utility.ModifyCoordinatesFromUIScale(position)
UI 调整后像素 → 图块 首先转换为未经 UI 调整的像素,然后参阅像素 → 图块转换

箱子物品栏

使用 chest.itemsChest.capacity 访问箱子物品栏无法处理祝尼魔箱迷你出货箱等特殊情况。你应该改用 chest.GetItemsForPlayer 来获取物品列表,并用 chest.GetActualCapacity() 来获取最大容量。

建筑涂色

你现在可以通过罗宾的菜单为完全升级的建筑上色,这会将预定义的组填充上该颜色。这适用于农舍、小屋、畜棚、鸡舍、棚屋和马厩。这对大多数模组没有影响,但自定义建筑外观的模组需要更新才能支持涂色。

每个建筑有三个不同的组:屋顶、墙壁和饰边。当你为建筑的某个部分上色时,它会应用于该建筑中属于同一组的所有部分。

该功能基于两个文件:

  • Data/PaintData 列出了可以涂色的建筑、UI 中显示的组名以及亮度滑块的相对范围。来自游戏开发者的更多信息:
    “解释一下:色相和饱和度值是按原样应用的,但亮度值实际上是作为“相对”亮度来跟踪的,也就是说,滑块条中间的值实际上对应于在最低可接受亮度和最高可接受亮度之间线性插值一半的值。 这样做是为了确保单一油漆颜色在应用于多个建筑时看起来大致相同,也用于确保过亮或过暗的亮度值不可用,因为它们通常看起来很糟糕。这也用于防止产生奇怪阴影的值。”
    • 每个可涂色的建筑还有一个单独的蒙版纹理,例如马厩的 Buildings/Stable_PaintMask。蒙版使用三种预定义的颜色:绿色(屋顶)、蓝色(饰边)和红色(墙壁),与 Data/PaintData 中的顺序匹配(其他颜色被忽略)。组不需要是连续的(例如,你可以有多个独立的红色区域)。

    其他破坏性变更

    • 游戏中的 NetCollection<T> 枚举器发生了变化,SMAPI 无法轻易地重写。受影响的模组只需重新编译即可修复。
    • IsTileLocationOpenisTileLocationOpenIgnoreFrontLayers 方法现在接受图块坐标而不是像素坐标。
    • 献祭包现在可以随机化,因此你应该从 Game1.netWorldState.Value.BundleData 读取数据,而不是加载 Data\Bundles 资产。
    • 游戏现在为支持姜岛有了每个地点的季节/天气。在许多情况下,你可能需要使用 Game1.GetSeasonForLocationGame1.IsRainingHere 等方法,而不是直接访问 Game1.currentSeason 这样的值。

    其他值得注意的变更

    这些是模组作者可能感兴趣的变更,但应该不会破坏任何模组。

    • 模组愿望清单#在星露谷物语 1.5 中完成
    • 内容变更请参阅针对 Content Patcher 内容包
    • 地点变更:
      • 所有地点现在都可以有家具、资源块和 getWalls()
      • 温室现在在多人游戏中总是与农场帮手同步。
      • 一些家具现在可以放置在室外或农场外(基于 furniture.placementRestriction)。
      • 添加了 location.treatAsOutdoors 字段。
      • 添加了 LightSource.fishTankLight 光源类型,匹配 LooseSprites\Lighting\fishTankLight
    • 新的 Utility 方法:
      • ModifyTime:执行简单的时间计算,如 ModifyTime(1250, 10) == 1300
      • AOrAn
      • ConvertMinutesToTime
      • forAllLocations
      • getNumObjectsOfIndexWithinRectangle
      • fuzzyAnimalSearch
      • getRandomBasicSeasonalForageItem
      • HasAnyPlayerSeenSecretNote
      • RGBtoHSLHSLtoRGBQQHtoRGB
      • ModifyCoordinateFromUIScaleModifyCoordinatesFromUIScaleModifyCoordinateForUIScaleModifyCoordinatesForUIScale
      • IsHospitalVisitDay
    • 新的 Farm 方法:
      • doesFarmCaveNeedHarvesting
      • getTotalCrops
      • getTotalCropsReadyforHarvest
      • getTotalGreenouseCropsReadyForHarvest
      • getGreenhouseBuilding
      • getTotalOpenHoeDirt
      • getTotalForageItems
      • getNumberOfMachinesReadyForHarvest
    • 新的 Furniture.GetFurnitureInstance 方法,用于创建家具而无需硬编码电视等不同类型。
    • Farmer 变更:
      • Farmer.addItemToInventory 现在返回一个物品被添加到的玩家物品栏中的物品堆叠列表。
    • Game1 变更:
      • 添加了 Game1.setMousePosition
    • 更改了 Utility.GetPrismaticColor,使其可以接受一个可选的速度乘数。
    • 添加了 Farmer.IsBusyDoingSomething() 方法。
    • 为礼物喜好添加了一个新的 LikeLevel 枚举。
    • 对话变更:
      • 你现在可以在调用 Game1.drawDialogue 时指定一个自定义的肖像纹理。
      • 你现在可以设置 dialogue.onFinish 在对话框关闭时执行某些操作。
    • 添加了 object.isEssentialItem(),可防止物品下沉,并认为玩家始终在磁力范围内。
    • 添加了 Debris.DebrisType 字段(ARCHAEOLOGYOBJECT)。
    • 添加了 Event.eventPositionTileOffset 字段,它会按指定数量调整事件引用的任何图块位置。例如,这用于偏移农场事件以匹配农舍位置。如果事件有 ignoreEventTileOffset 命令,则此字段被忽略。(一些硬编码的精灵图位置不会被调整。)

    调试命令变更

    本节主要面向 wiki 维护者;一般文档请参阅控制台命令

    • 添加的命令:
      • boatjourney:开始 BoatJourney 小游戏。
      • bpm:显示玩家正北方建筑的建筑涂色菜单,如果找不到这样的建筑,则显示农舍的。
      • broadcastMailbox:将给定的信件 ID 发送给所有玩家,并追溯性地添加到之后加入游戏的任何玩家。
      • completespecialorders / cso:将所有开启的特殊订单的所有目标标记为完成。
      • crib:更改农舍中的婴儿床样式。
      • darts:开始飞镖小游戏。
      • forge:显示锻造菜单。
      • gem:向玩家添加指定数量的齐钻。
      • language:显示语言选择屏幕。
      • minedifficulty / mdskullcavedifficulty / scd:更改矿井或骷髅洞穴的难度等级。
      • ordersboard:显示特殊订单板。
      • pathspousetome / pstm:将玩家的配偶传送或寻路到玩家身边。
      • perfection:进行达到 100% 游戏完成度所需的更改(例如,最大化所有友谊,标记所有鱼类已捕获等)。
      • pgb:打印岛上宝石鸟神龛谜题的解决方案。
      • phone:显示电话菜单。
      • printPlayerPosition / ppp:
      • qiboard / qi:显示齐先生的特殊订单板。
      • recountnuts:根据已找到和已花费的核桃,将玩家的核桃计数重置为其预期值。很可能在发布时被移除。
      • renovate:显示房屋翻新菜单。
      • returneddonations:打开退还捐赠品 UI。
      • runtestevent / rte:从游戏文件夹中的 test_event.txt 文件中读取一个事件,并开始该事件。文件的第一行是事件发生的地点,文件的其余内容与普通事件文件相同,只是换行符将被视为“\”分隔符。
      • showplurals:打印每个物品名称和词典术语的复数形式列表。
      • shufflebundles:随机化献祭包。
      • specialorder:将具有匹配 ID 的特殊订单添加到活动特殊订单列表中。
      • split:开始分屏模式或添加玩家。
      • testnut:在 (0, 0) 生成一个金色核桃?
      • tls:在缩放和未缩放的照明之间切换。
      • townkey:给予当前玩家城镇钥匙
      • uiscale / us:设置新的 UI 缩放。
      • volcano:将玩家传送到火山地牢的指定层。
      • walnut:为玩家团队添加指定数量的金色核桃。
      • warpanimaltome / watm:找到一个命名的动物并将其传送到玩家身边。
      • warpcharactertome / wctm:找到一个命名的角色并将其传送到玩家身边。
    • 命令变更:
      • marry:修复了当 NPC 尚未见过时的问题?
      • minigame:添加了“fishing”选项。
      • invincible:添加了“gm”和“inv”别名。

    针对 Content Patcher 内容包

    可能的破坏性变更

    可能破坏 Content Patcher 内容包(和 XNB 模组)的值得注意的变更:

    房屋翻新

    星露谷物语 1.5 增加了房屋翻新。模组可以通过编辑 Data/HomeRenovations 资产来添加或更改翻新。这是一个字符串 → 模型查找,其中资产键是唯一的翻新 ID。资产值是一个包含以下字段的模型:

    字段 效果
    TextStrings 一个格式为 <asset name>:<key> 的翻译键(如 Strings\\Locations:ScienceHouse_Renovation_BuildCrib)。翻译文本应包含三个用斜杠分隔的字段:
    索引 效果
    0 在翻新菜单中显示的翻译后的显示名称。
    1 在翻新菜单中显示的翻译后的描述。
    2 询问玩家要翻新哪个区域时显示的消息。

    例如,原版的“移除婴儿床”匹配这种格式的翻译:

    "Remove Crib/Remove the crib from your home./Select a crib to remove."
    Requirements 翻新要作为选项出现必须满足的标准。这是一个模型列表,包含以下字段:
    字段 效果
    Type 需求类型。可以是 Mail(检查玩家是否拥有给定的邮件标记)或 Value(检查农舍实例上 C# NetInt 字段的值)。任何其他类型总是返回 true。
    Key
    • 对于 Mail 需求,是邮件标记。
    • 对于 Value 需求,是 C# NetInt 字段名。
    Value
    • 对于 Mail 需求,是 "0"(玩家必须没有该标记)或 "1"(玩家必须拥有它)。
    • 对于 Value 需求,是必需的字段值。值可以以 ! 为前缀,表示需要除此值外的任何值。

    例如,"Key": "renovation_bedroom_open", "Value": "1" 在玩家拥有 renovation_bedroom_open 邮件标记时匹配。

    RenovateActions 翻新应用后执行的操作。这是一个模型列表,包含以下字段:
    字段 效果
    Type 操作类型。可以是 Mail(添加或移除邮件标记)或 Value(设置农舍实例上 C# 字段的值)。任何其他类型都将被忽略。
    Key
    • 对于 Mail 需求,是要添加或移除的邮件标记。
    • 对于 Value 需求,是 C# NetInt 字段名。
    Value
    • 对于 Mail 需求,是 "0"(移除邮件标记)或 "1"(添加它)。
    • 对于 Value 需求,是要设置的整数值,或者是精确的字符串 "selected",将其设置为所应用翻新的索引。
    RectGroups 农舍内可以放置翻新的图块区域。
    AnimationType (可选)应用翻新时播放的动画。可能的值是 destroybuild。任何其他值默认为 build
    CheckForObstructions (可选)如果目标区域内有任何玩家、NPC、物品等,是否阻止玩家应用翻新。默认为 false。
    SpecialRect (可选)添加到 RectGroups 字段的动态区域。唯一支持的值是 crib,即包含婴儿床的农舍区域。

    例如,此内容包重新定义了一个原版的房屋翻新:

    {
        "Format": "2.7.0",
        "Changes": [
            {
                "Action": "EditData",
                "Target": "Data/HomeRenovations",
                "Entries": {
                    "open_bedroom": {
                        "TextStrings": "Strings\\Locations:ScienceHouse_Renovation_OpenBedroom",
                        "AnimationType": "destroy",
                        "CheckForObstructions": true,
                        "Requirements": [
                            {
                                "Type": "Mail",
                                "Key": "renovation_bedroom_open",
                                "Value": "0"
                            }
                        ],
                        "RenovateActions": [
                            {
                                "Type": "Mail",
                                "Key": "renovation_bedroom_open",
                                "Value": "1"
                            }
                        ],
                        "RectGroups": [
                            {
                                "Rects": [
                                    { "X": 21, "Y": 10, "Width": 2, "Height": 8 },
                                    { "X": 21, "Y": 19, "Width": 2, "Height": 1 }
                                ]
                            }
                        ]
                    }
            }
        ]
    }
    

    特殊订单

    1.5 增加了一个新的“特殊订单”任务系统,它更加灵活并支持自定义任务。你可以向 Data/SpecialOrders 添加特殊订单,并设置持续时间、可重复性、目标、奖励等选项。每个订单可以有任意数量的预定义类型的目标(CollectDeliverFishGiftJKScoreReachMineFloorShipSlay)和奖励(FriendshipGemsMailMoneyResetEvent)。Mail 奖励会设置一个邮件标记,可用于触发自定义事件、对话或其他更改。

    对话变更

    • 添加了与岛屿度假区相关的对话键(以 Resort 开头的键)。
    • 添加了 %year 占位符。

    事件变更

    • 农场事件中的图块位置现在会自动偏移以匹配农舍位置。如果某个事件不应基于农舍位置,请添加 ignoreEventTileOffset 命令来为该事件禁用偏移。(一些硬编码的精灵图位置不会被调整。)
    • 事件中的 NPC 和玩家现在默认会穿过障碍物,而不是卡住。
    • 新的事件命令:
      • animateHeight:与跳跃有关的东西。
      • changeName:更改角色的显示名称。
      • drawOffset:为农民或指定的 NPC 设置绘制偏移。
      • hideShadow:隐藏指定 NPC 的阴影。
      • ignoreEventTileOffset:在事件的剩余部分禁用事件图块偏移。
      • ignoreMovementAnimation。切换一个标志,允许 NPC 在移动时不播放行走动画(?)。
      • hostMail 选项:为明天添加邮件。
      • locationSpecificCommand。用于某些事件,仅用于调用某些硬编码到某些 GameLocations 中的地点特定逻辑。
      • playFramesAhead:跳过指定数量的命令。
      • showKissFrame
      • unskippable:将事件标记为不可跳过。这与 skippable 命令结合使用,用于在事件进行到某个点后不应再被跳过的情况。
    • 更改的事件命令:
      • addTemporaryActor 现在可以在第 8 个索引处设置角色的显示名称(“Character”、“Animal”或“Monster”)。
      • awardFestivalPrize:添加了 _birdiereward_ 和 _memento_ 作为选项。
      • fork:参数不知何故更改了?
    • 其他命令变更:
      • -- 开头的命令现在被跳过。这主要用于 runTestEvent 命令,作为注释。
      • 当事件解析命令失败时,现在会显示一个错误框并跳过事件的其余部分,而不是崩溃。
    • 新的前置条件:
      • N <count>:玩家至少收集了这么多金色核桃。
      • B:玩家的家有配偶床。
    • 新的事件选项(可由 SMAPI 模组编辑):
      • ignoreObjectCollisions:NPC/玩家是否应该穿过障碍物而不是卡住。默认为 true。
      • showWorldCharacters:是否绘制与事件在同一地点的 NPC,即使他们不是事件脚本的一部分。默认为 false。
    • 新的特定临时精灵图:doneWithSlideShow + getEndSlideshow, georgeLeekGift, grandpaThumbsUp, krobusraven, islandFishSplash, parrotHutSquawk, parrotPerchHut, staticSprite, WillyWad。

    节日变更

    主条目:Modding:Festival data
    • 节日现在可以有每年不同的版本。这是通过在节日数据中添加一个新的 set-up_y<year> 字段(与当前年份取模),和/或为每个 NPC 添加 <npc>_y<year> 对话键(如 Abigail_y2)来实现的。
    • 现在可以通过编辑节日数据文件将自定义 NPC 添加到节日中(而不是将他们修补到角色表中,那样容易冲突)。键是“Set-Up_additionalCharacters”(大小写完全匹配),值格式是“NpcName X Y Direction”(方向可以是 up/down/left/right 或整数代码),用“/”分隔。

      例如,这使用 Content Patcher 安全地将一个自定义 NPC 添加到星露谷展览会:

      {
          "Action": "EditData",
          "Target": "Data/Festivals/fall16",
          "TextOperations": [
              {
                  "Operation": "Append",
                  "Target": ["Entries", "Set-Up_additionalCharacters"],
                  "Value": "Jasper 43 87 down",
                  "Delimiter": "/"
              }
          ]
      }
      
    • 商店现在可以通过节日数据文件中的 shop 字段出售家具。格式与现有字段相同,但物品类型代码为 F

    日程变更

    主条目:Modding:Schedule data
    • 添加了一个 marriage_<season>_<day of month> 键,供配偶 NPC 使用以启用特定日期的日程。这比现有的婚姻键具有更高的优先级。

    新地图属性

    主条目:Modding:Maps

    星露谷物语 1.5 增加了几个地图属性。

    • 仅限农场:
      • GrandpaShrineLocationGreenhouseLocationMailboxLocationShippingBinLocationSpouseAreaLocation:默认放置目标的左上角图块。
      • BackwoodsEntryBusStopEntryFarmCaveEntryFarmHouseEntryForestEntryWarpTotemEntry:当玩家从指定地点进入农场时,将他们移动到的位置,而不是默认位置。FarmhouseEntry 地图属性还影响其他与房屋相关的逻辑,如房屋精灵图的绘制位置、农场上事件发生的位置等。
    • 仅限农舍:
      • KitchenStandingLocation:玩家的配偶在厨房中站立的位置。如果省略,配偶将站在烤箱前。
    • 仅限室内地点:
      • ForceSpawnForageables:使觅食物品在该地点生成。
      • indoorWater:在该地点启用水图块(例如,用于钓鱼)。
    • 所有地点:
      • CanCaskHere:如果设置为任何值,木桶将在此地点工作,无论它是否是地窖。
      • LocationContext:大致的世界区域(可能的值:DefaultIsland)。这会影响使用哪个区域的天气、经过时是否听到火车汽笛声等。
      • NPCWarp:相当于 Warp,但仅供 NPC 使用。
      • SeasonOverride:在该地点的许多检查中假定给定的季节(如作物生长季节、图块集外观等)。一些游戏检查在有意义的情况下仍使用全局季节。
      • skipWeedGrowth:在此地点跳过杂草的生成/蔓延。

    伴随这些功能的各种图块/属性(例如,门图块、邮箱图块操作等)仍需要添加到地图文件中。这些不会由地图属性自动添加/移动。

    温室建筑

    星露谷物语 1.5 将温室变成了一个可以移动的独立建筑,并将温室纹理从 Buildings/House 移到了一个新的 Buildings/Greenhouse 资产中。

    要更新一个旧的自定义农场地图:

    1. 确保所有自定义图块集 ID 都有一个 z_ 前缀
    2. 在任何自定义图块集之前,确保你的农场有这些图块集,ID 和顺序完全相同:
      图块集 ID Contents/Maps 中的文件
      Paths paths
      untitled tile sheet spring_outdoorsTileSheet
      untitled tile sheet2 spring_island_tilesheet_1 * 仅在 Farm_Island
    3. 移除建筑层上温室所在的所有图块。
    4. 从建筑层上温室门所在的图块移除 Action: WarpGreenhouse 属性。
    5. 添加一个 GreenhouseLocation 地图属性,值设置为你的温室位置的左上角图块(如 24 9)。
    6. 在极少数情况下,你可能需要编辑 Maps/Farm_Greenhouse_DirtMaps/Farm_Greenhouse_Dirt_FourCorners。当存档创建时,它们会修补温室最初所在的区域(即使使用新属性设置温室位置,在这种情况下,补丁也会修补相关区域)。这会影响除海滩农场外的所有原版农场地图类型。

    床的变更

    星露谷物语 1.5 将床变成了可以拾起和移动的家具。床的精灵图现在位于 Tilesheets/furniture 中。

    坐在非家具椅子上

    玩家可以坐在作为地图一部分的椅子上。这是通过检查 Buildings 层上的图块,并将其图块集和图块集索引与 Data\ChairTiles 中的数据进行比较来实现的。

    每个条目的键格式为 图块集文件名/图块 X/图块 Y

    字段 描述
    图块集文件名 图块集的文件名,不带文件扩展名。例如,对于从 assets/some-tilesheet.png 加载的图块集,这应该是 some-tilesheet
    图块 X
    图块 Y
    图块在地图图块集中的 X 和 Y 位置,从零开始。

    值为 宽度(图块)/高度(图块)/方向/类型/绘制图块 X/绘制图块 Y/是否季节性/备用图块集 格式:

    字段 描述
    宽度(图块)
    高度(图块)
    座位的大小(以图块为单位)。例如,宽度为 2 允许玩家也坐在它右边的下一个图块上。
    方向 玩家坐下时应面向的方向。可能的值是 downleftrightupopposite。任何其他值默认为 up
    类型 任意的座位代码(如 playgroundccdesk),影响游戏中特定座位的硬编码逻辑。你可以指定一个无效值如 default 来忽略此项。
    绘制图块 X
    绘制图块 Y
    玩家坐下时在 TileSheets\ChairTiles(或自定义图块集)中要绘制的 X 和 Y 位置,从 0 开始。如果宽度和/或高度大于 1,这是左上角图块的位置。
    是否季节性 坐下时是否绘制季节性变体。如果启用,<draw tile X><draw tile Y> 会为每个季节偏移一个宽度。换句话说,春/夏/秋/冬的精灵图应在绘制图块集中直接相邻,按该顺序向右移动。
    备用图块集 从中获取绘制图块的图块集,而不是 TileSheets\ChairTiles

    自定义发型

    你现在可以通过编辑 Data/HairData 资产来定义自定义发型。每行由一个唯一的数字 ID 和一个用斜杠分隔的字段序列组成:

    索引 语法 示例 描述
    0 <spritesheet> hairstyles2 包含发型精灵图的纹理文件名,位于 Characters/Farmer/ 中。
    1
    2
    <x>
    <y>
    0
    0

    顶部发型精灵图在图块集中的图块位置,从 0 开始,每个图块为 16 x 16 像素。

    例如,第二个精灵图的图块坐标为 (1, 0):横向一个图块,纵向零个图块。

    每个发型应有三到四个垂直堆叠的精灵图。从顶部精灵图开始,它们分别代表玩家面向下、右、上以及(如果 <unique left sprite> 为 true)左时的发型。

    3 <unique left sprite> true 当玩家面向左时,是否绘制第四个精灵图槽中的头发,而不是翻转右向的精灵图。
    4 <covered index> -1 当玩家戴帽子时要显示的独立发型的唯一 ID,如果此时要隐藏头发则为 -1。
    5 <is bald style> false 待补充
    6
    7
    8
    <overlay spritesheet>
    <overlay x>
    <overlay y>
    未使用,可以省略。

    其他值得注意的变更

    这些是模组作者可能感兴趣的变更,但应该不会破坏任何模组。

    • Content/MapsContent 之间的一些资产被复制了,但直接在 Content 下的资产未被游戏使用,并且在 1.5 中不再存在。
    • 农舍床的变更:
      • 农舍中不再需要 BedTouchAction Sleep 属性,因为放置的床会透明地将其添加到当前位置。仍然可以添加它们以拥有作为地图一部分的静态床。
      • Back 层上的新 DefaultBedPosition 属性可以被添加,以便在该位置生成一个床家具。
    • 邮件变更:
      • %item tools 现在也可以用于给予 furniture
    • 家具数据在索引 6 处有一个新的“放置限制”字段。这会覆盖默认限制。可能的值是 1(仅限室外)、2(作为装饰放置?)或任何其他值表示仅限农舍内部。某些家具类型默认情况下会以编程方式设置不同的默认值,但可以通过指定一个值来覆盖这些默认值。
    • 新的地图属性:见上方的_新地图属性_
    • 新的地图图块属性:
      • Back > BeachSpawn:影响海滩农场上的海滩觅食生成;
      • Back > NoPath:阻止 NPC 通过该图块寻路;
      • Buildings > NPCPassable:相当于 Passable,但仅对 NPC 有效;
      • Buildings > ProjectilePassable:允许投射物穿过通常会阻挡它们的图块(例如,允许射入熔岩池)。

    更新影响

    以下是星露谷物语 1.5 中发生变化的 XNB 文件摘要。

    注意:

    • 为简单起见,此处忽略了非英文文件中的文本更改。
    • 未列出新内容文件,因为它们不会影响现有模组。
    • XNB 模组受到的影响尤其严重,因为它们会替换整个文件。Content Patcher 内容包通常不受影响(除非它们也替换了整个文件,在这种情况下,请参考 XNB 模组列)。
    • 确定地图文件中的变化更加困难,所以如果它们发生了变化,通常只标记为“未知”。

    简称说明:

    • “已损坏”意味着移除了新内容或潜在的重要更改,或可能导致严重的显示错误。这是一个宽泛的类别——游戏可能在没有它的情况下正常运行,也可能崩溃,具体取决于它如何使用该特定内容。
    • “基本不受影响”意味着模组只会在编辑特定条目或字段时受到影响。
    • 空白表示对绝大多数模组没有预期影响。
    内容文件 变更 XNB Content Patcher
    Animals/BabyWhite Chicken 在新区域添加了新精灵图 已损坏
    Animals/Dinosaur 外观变更 ✘ 会移除变更 ✓ 基本不受影响
    Animals/Duck 在新区域添加了新精灵图 已损坏
    Buildings/houses 温室建筑 ✘ 温室编辑被静默忽略 ✘ 温室编辑被忽略并报错
    Characters/Abigail 在空白区域添加了新的坐姿精灵图 已损坏
    Characters/Caroline 在新区域添加了新的坐姿精灵图 已损坏
    Characters/Demetrius 外观调整 ✘ 会移除变更 ✘ 可能会移除变更
    Characters/Dialogue/Abigail 新内容 已损坏
    Characters/Dialogue/Alex 新内容 已损坏
    Characters/Dialogue/Caroline 新内容 已损坏
    Characters/Dialogue/Clint 新内容 已损坏
    Characters/Dialogue/Demetrius 新内容 已损坏
    Characters/Dialogue/Elliott 新内容 已损坏
    Characters/Dialogue/Emily 新内容 已损坏
    Characters/Dialogue/Evelyn 新内容 已损坏
    Characters/Dialogue/George 新内容 已损坏
    Characters/Dialogue/Gus 新内容,修复了错别字 已损坏
    Characters/Dialogue/Haley 新内容 已损坏
    Characters/Dialogue/Harvey 新内容 已损坏
    Characters/Dialogue/Jas 新内容 已损坏
    Characters/Dialogue/Jodi 新内容 已损坏
    Characters/Dialogue/Kent 新内容 已损坏
    Characters/Dialogue/Leah 新内容 已损坏
    Characters/Dialogue/Lewis 新内容 已损坏
    Characters/Dialogue/Linus 新内容 已损坏
    Characters/Dialogue/Marnie 新内容 已损坏
    Characters/Dialogue/MarriageDialogue 新内容 已损坏
    Characters/Dialogue/Maru 新内容,修复了错别字 已损坏 ✓ 基本不受影响
    Characters/Dialogue/Mister Qi 新内容 已损坏
    Characters/Dialogue/Pam 新内容 已损坏
    Characters/Dialogue/Penny 新内容,修复了错别字 已损坏
    Characters/Dialogue/Pierre 新内容 已损坏
    Characters/Dialogue/rainy 新内容 已损坏
    Characters/Dialogue/Robin 新内容,修复了错别字 已损坏 ✓ 基本不受影响
    Characters/Dialogue/Sam 新内容,修复了错别字 已损坏 ✓ 基本不受影响
    Characters/Dialogue/Sandy 新内容 已损坏
    Characters/Dialogue/Sebastian 新内容 已损坏
    Characters/Dialogue/Shane 新内容,修复了错别字 已损坏 ✓ 基本不受影响
    Characters/Dialogue/Vincent 新内容 已损坏
    Characters/Dialogue/Willy 新内容 已损坏
    Characters/Dialogue/Wizard 新内容 已损坏
    Characters/Farmer/Farmer_base
    Characters/Farmer/Farmer_base_bald
    Characters/Farmer/Farmer_girl_base
    Characters/Farmer/Farmer_girl_base_bald
    在空白区域添加了新精灵图
    (坐在朝下的椅子上和使用马笛时的手臂精灵图)
    已损坏
    Characters/Farmer/hats 在空白区域和新区域添加了新精灵图 已损坏
    Characters/Farmer/shoeColors 在空白区域添加了新精灵图 已损坏
    Characters/George 在新区域添加了新精灵图 已损坏
    Characters/Haley 在空白区域添加了新精灵图 已损坏
    Characters/Lewis 在新区域添加了新精灵图 已损坏
    Characters/Linus 在新区域添加了新精灵图 已损坏
    Characters/Marnie 在空白区域添加了新精灵图 已损坏
    Characters/Pam 在新区域添加了新精灵图 已损坏
    Characters/Robin 在空白区域添加了新精灵图 已损坏
    Characters/Willy 在新区域添加了新精灵图 已损坏
    Characters/schedules/Linus 调整了日程位置 ✘ 会移除变更 ✓ 基本不受影响
    Characters/schedules/Willy 调整了日程位置 ✘ 会移除变更 ✘ 可能会移除变更
    Data/animationDescriptions 新内容 已损坏
    Data/BigCraftablesInformation 新内容,删除了损坏的物品,调整了工作台价格 已损坏 ✓ 基本不受影响
    Data/Blueprints 替换了温室条目,调整了磨坊描述 已损坏 ✓ 基本不受影响
    Data/Boots 新内容 已损坏
    Data/ClothingInformation 修复了错别字 ✘ 会移除变更 ✓ 基本不受影响
    Data/CookingRecipes 新内容 已损坏
    Data/CraftingRecipes 新内容,更改了骷髅火盆配方 已损坏 ✓ 基本不受影响
    Data/Crops 新内容 已损坏
    Data/Events/Beach 新内容 已损坏
    Data/Events/Farm 新内容 已损坏
    Data/Events/FarmHouse 调整了前置条件 ✘ 会移除变更 ✓ 基本不受影响
    Data/Events/Forest 修复了错别字 ✘ 会移除变更 ✓ 基本不受影响
    Data/Events/HaleyHouse 新内容,调整了事件 已损坏 ✓ 基本不受影响
    Data/Events/JoshHouse 新内容 已损坏
    Data/Events/Mountain 新内容 已损坏
    Data/Events/Railroad 修复了哈维的 10 心事件 ✘ 会移除变更 ✓ 基本不受影响
    Data/Events/Saloon 新内容 已损坏
    Data/Events/ScienceHouse 新内容,修复了错别字 已损坏 ✓ 基本不受影响
    Data/Events/SeedShop 新内容 已损坏
    Data/Events/Town 新内容 已损坏
    Data/Events/Trailer 新内容 已损坏
    Data/ExtraDialogue 新内容 已损坏
    Data/FarmAnimals 新内容 已损坏
    Data/Festivals/fall16 新内容 已损坏
    Data/Festivals/fall27 新内容,向商店字段添加了新物品 已损坏
    Data/Festivals/spring13 新内容,更改了'set-up'和'mainEvent'字段以添加雷欧,向商店字段添加了新物品 已损坏 ✓ 基本不受影响
    Data/Festivals/spring24 新内容,向商店字段添加了新物品 已损坏
    Data/Festivals/summer11 新内容,添加了商店字段 已损坏
    Data/Festivals/summer28 新内容,添加了商店字段 已损坏
    Data/Festivals/winter8 新内容,向商店字段添加了新物品 已损坏
    Data/Festivals/winter25 新内容,向商店字段添加了新物品 已损坏
    Data/Fish 新内容 已损坏
    Data/FishPondData 新内容 已损坏
    Data/fruitTrees 新内容 已损坏
    Data/Furniture 新内容,调整了蝴蝶笼 已损坏 ✓ 基本不受影响
    Data/hats 新内容 已损坏
    Data/Locations 新内容 已损坏
    Data/mail 新内容,向'georgeGifts'条目添加了物品,更改了'foundLostTools'条目,修复了错别字 已损坏 ✓ 基本不受影响
    Data/Monsters 新内容;调整了木乃伊、骷髅和尖刺怪条目 已损坏 ✓ 基本不受影响
    Data/MoviesReactions 新内容 已损坏
    Data/NPCDispositions 新内容 已损坏
    Data/NPCGiftTastes 新内容,向多个条目添加了新物品,整理 已损坏 ✘ 可能会移除变更
    Data/ObjectContextTags 新内容,为戒指物品添加了标签,为狮子鱼条目添加了标签 已损坏 ✓ 基本不受影响
    Data/ObjectInformation 新内容,编辑了一些描述,更改了鸭毛价格 已损坏 ✓ 基本不受影响
    Data/SecretNotes 新内容 已损坏
    Data/TailoringRecipes 新内容 已损坏
    Data/weapons 新内容 已损坏
    LooseSprites/Cursors 在空白区域添加了新精灵图,替换了未使用的精灵图,重新定位了施肥土壤覆盖层 已损坏 ✓ 基本不受影响
    LooseSprites/Cursors2 在空白区域和新区域添加了新精灵图 已损坏
    LooseSprites/letterBG 在空白区域添加了新精灵图 已损坏
    LooseSprites/map 在新区域添加了新精灵图 已损坏
    LooseSprites/temporary_sprites_1 在空白区域添加了新精灵图 已损坏
    Maps/* 所有图块集路径现在都以 "Maps/" 为前缀。 ? ?
    Maps/ArchaeologyHouse 未知变更 ? ?
    Maps/Backwoods 未知变更 ? ?
    Maps/Backwoods-GraveSite 未知变更 ? ?
    Maps/Barn
    Maps/Barn2
    Maps/Barn3
    未知变更 ? ?
    Maps/Beach 未知变更 ? ?
    Maps/Beach-Jellies 未知变更 ? ?
    Maps/Beach-Luau 未知变更 ? ?
    Maps/Beach-NightMarket 未知变更 ? ?
    Maps/BusStop 未知变更 ? ?
    Maps/Cabin
    Maps/Cabin1
    Maps/Cabin1_marriage
    Maps/Cabin2
    Maps/Cabin2_marriage
    未知变更 ? ?
    Maps/cave 大修了图块集 已损坏 已损坏
    Maps/characterSheet 在新区域添加了新精灵图 已损坏
    Maps/Coop
    Maps/Coop2
    Maps/Coop3
    未知变更 ? ?
    Maps/desert 未知变更 ? ?
    Maps/fall_outdoorsTileSheet2
    Maps/spring_outdoorsTileSheet2
    Maps/summer_outdoorsTileSheet2
    Maps/winter_outdoorsTileSheet2
    在空白和新区域添加了新精灵图;替换了未使用的精灵图 已损坏
    Maps/fall_town
    Maps/spring_town
    Maps/summer_town
    Maps/winter_town
    在空白区域添加了新精灵图;调整了冬季喷泉精灵图 已损坏
    Maps/Farm
    Maps/Farm_Combat
    Maps/Farm_Fishing
    Maps/Farm_Foraging
    Maps/Farm_FourCorners
    Maps/Farm_Mining
    未知变更 ? ?
    Maps/farmhouse_tiles 在空白和新区域添加了新精灵图,外观调整 已损坏 ✓ 基本不受影响
    Maps/FarmHouse
    Maps/FarmHouse1
    Maps/FarmHouse1_marriage
    Maps/FarmHouse2
    Maps/FarmHouse2_marriage
    未知变更 ? ?
    Maps/Festivals 在空白区域添加了新精灵图 已损坏 ✓ 基本不受影响
    Maps/FishingGame 未知变更 ? ?
    Maps/FishShop 未知变更 ? ?
    Maps/Forest-FlowerFestival 未知变更 ? ?
    Maps/Forest-IceFestival 未知变更 ? ?
    Maps/Forest-SewerClean 未知变更 ? ?
    Maps/Greenhouse 未知变更 ? ?
    Maps/JoshHouse 未知变更 ? ?
    Maps/ManorHouse 未知变更 ? ?
    Maps/Mines/mine_lava
    mine_lava
    在新区域添加了新精灵图 已损坏
    Maps/Mountain 未知变更 ? ?
    Maps/Mountain-BridgeFixed 未知变更 ? ?
    Maps/paths 删除了未使用的区域和精灵图
    Maps/Railroad 未知变更 ? ?
    Maps/Saloon 未知变更 ? ?
    Maps/SamHouse 未知变更 ? ?
    Maps/ScienceHouse 未知变更 ? ?
    Maps/SeedShop 未知变更 ? ?
    Maps/Sewer 未知变更 ? ?
    Maps/Shed
    Maps/Shed2
    未知变更 ? ?
    Maps/SkullCave 未知变更 ? ?
    Maps/Submarine 未知变更 ? ?
    Maps/Summit 山顶在 1.5 中被添加为可访问的地点,这包括对地图进行重大更改以使其正常工作。 ? ?
    Maps/springobjects 在空白和新区域添加了新精灵图;替换了未使用的精灵图;外观变更;调整了所有戒指的位置,以便它们在组合戒指时对齐 已损坏 ✓ 基本不受影响
    Maps/Town 未知变更 ? ?
    Maps/Town-Christmas 未知变更 ? ?
    Maps/Town-DogHouse 未知变更 ? ?
    Maps/Town-EggFestival 未知变更 ? ?
    Maps/Town-Fair 未知变更 ? ?
    Maps/Town-Halloween 未知变更 ? ?
    Maps/Town-Theater 未知变更 ? ?
    Maps/Town-TheaterCC 未知变更 ? ?
    Maps/Town-TrashGone 未知变更 ? ?
    Maps/townInterior 外观变更 ✘ 会移除变更 ✓ 基本不受影响
    Maps/townInterior2 在空白区域添加了新精灵图 已损坏
    Maps/Trailer 未知变更 ? ?
    Maps/Trailer_big 未知变更 ? ?
    Maps/Woods 未知变更 ? ?
    Minigames/Clouds 在新区域添加了新精灵图 已损坏
    Portraits/Grandpa 在新区域添加了新精灵图 已损坏
    Portraits/Kent 在新区域添加了新精灵图 已损坏
    Portraits/Leah 在空白区域添加了新精灵图 已损坏
    Portraits/Linus 在新区域添加了新精灵图 已损坏
    Portraits/Robin 在新区域添加了新精灵图 已损坏
    Strings/Buildings 新内容 已损坏
    Strings/Characters 新内容 已损坏
    Strings/Lexicon 新内容 已损坏
    Strings/Locations 新内容 已损坏
    Strings/StringsFromCSFiles 新内容,修复了错别字,调整了一些条目 已损坏 ✓ 基本不受影响
    Strings/StringsFromMaps 新内容 已损坏
    Strings/UI 新内容,调整了荒漠枪手描述 已损坏
    TerrainFeatures/Flooring
    TerrainFeatures/Flooring_winter
    在空白区域添加了新精灵图 已损坏
    TerrainFeatures/grass 在新区域添加了新精灵图 已损坏
    TerrainFeatures/upperCavePlants 大修了图块集 已损坏 已损坏
    TileSheets/BuffsIcons 在新区域添加了新精灵图 已损坏
    TileSheets/bushes 在新区域添加了新精灵图 已损坏
    TileSheets/Craftables 在空白和新区域添加了新精灵图,替换了未使用的精灵图 已损坏
    TileSheets/critters 在空白和新区域添加了新精灵图 已损坏
    TileSheets/crops 在新区域添加了新精灵图 已损坏
    TileSheets/fruitTrees 在新区域添加了新精灵图 已损坏
    TileSheets/furniture 在空白和新区域添加了新精灵图;外观变更 已损坏 ✓ 基本不受影响
    TileSheets/Projectiles 在空白区域添加了新精灵图,外观变更 已损坏 ✓ 基本不受影响
    TileSheets/SecretNoteImages 在新区域添加了新精灵图 已损坏
    TileSheets/weapons 在空白和新区域添加了新精灵图 已损坏