模组:Content Patcher 制作指南/修改地图
← 模组:目录
带有 "Action": "EditMap" 的补丁可以更改游戏已加载的地图的一部分。多个内容包可以编辑同一素材。您可以使用补丁向下和向右延伸地图(Content Patcher 会自动扩大地图以适应新地图)。
介绍
什么是地图?
一个地图素材描述游戏内某个区域的的地形(水、悬崖、地面)、地形特征(灌木)、建筑、路径和特定区域的触发器。在您到达某个区域的边缘或进入建筑物时屏幕变黑时,意味着您正在两个地图间切换。
请参阅模组:地图以更详细的了解地图和进阶概念。
用法
概述
每一个 EditMap 补丁可以对某一地图进行三种类型的更改:地图叠加、编辑地图属性或编辑地图图块。
由于三者差异较大,因此下文将分为三个部分详细描述这三种类型的更改,但它们仍可以在同一个补丁中组合使用。在这种情况下,字段按以下顺序应用:FromFile、MapTiles、MapProperties、AddNpcWarps、AddWarps 和 TextOperations。
公共字段
一个 EditImage 补丁由 Changes(请参阅下文示例)下的一个模型组成。不论更改类型是什么,都需要使用这些字段。
- 必填字段:
 - 
字段 用途 Action要进行的更改类型。此操作类型设置为 EditMap。Target要替换的目标游戏素材名称(或多个由逗号分隔的素材名),例如 Maps/Town。该字段支持令牌,不区分大小写。 - 可选字段:
 - 
字段 用途 When(可选)仅在给定的条件匹配时应用这个内容补丁。 LogName(可选)在日志中显示的补丁名称。这有助于查找错误。如果省略,则默认为类似 EditMap Maps/Town的名字。Update(可选)补丁字段的更新频率。请参阅补丁更新频率。 LocalTokens(可选)一组仅在此补丁中生效的局部令牌。  - 
进阶字段:
字段 用途 Priority(可选)当多个补丁编辑同一数据素材时,此字段控制它们应用的顺序。可用的值有 Early(更早),Default(默认),还有Late(更晚)。默认值为Default。补丁(包括所有模组)按以下顺序生效:
- 优先级从早到晚;
 - 按照模组加载顺序(基于依赖关系等因素);
 - 按照补丁在 
content.json中列出的顺序。 
如果需要更具体的顺序,可以使用简单的偏移量,如
"Default + 2"或者"Late - 10"。默认值为 -1000(Early),0(Default)和 1000(Late)。此字段不支持令牌,不区分大小写。
警告
优先级会让您的更改难以排除故障。推荐做法:
- 如果可以的话,只使用上述无偏移的优先级(例如外观覆盖设为 
Late) - 不需要为您自己的补丁设置优先级,因为您可以自己在 content.json 排列好补丁应用的顺序。
 
TargetLocale(可选)素材名称中要匹配的地区代码,例如设置 "TargetLocale": "fr-FR"将会只编辑法语的素材(例如Data/Achievements.fr-FR)。可以为空,只有只编辑没有地域区分的基本素材。如果省略,则将应用于所有素材,不论其是否存在本地化。
 
您可以继续添加以下一个或多个部分的字段。
地图叠加
一个“地图叠加”更改能够将图块、属性、和图块集从源地图复制到目标地图。目标区域下对应的图层将被源地图完全覆盖。
此补丁的字段为:
| 
 字段  | 
 用途  | 
|---|---|
| 
 
  | 
 请参阅上文的公共字段章节。  | 
| 
 
  | 
 内容包文件夹中用于修补到目标中的文件的相对路径(例如  Content Patcher 会按以下方法处理   | 
| 
 
  | 
 (可选)源地图中需要复制到目标地图的部分,默认为整个源地图。 此字段是一个对象,含有左上角点的 X 和 Y 像素坐标以及该区域的像素宽度(Width)和高度(Height)。该对象的字段支持令牌。  | 
| 
 
  | 
 (可选)目标图片中要替换的部分。默认大小与  此字段是一个对象,含有左上角点的 X 和 Y 像素坐标以及该区域的像素宽度(Width)和高度(Height)。该对象的字段支持令牌。 如果您指定的区域超出了地图的底部或右部,Content Patcher 会自动扩大地图以适应新地图。  | 
| 
 
  | 
 (可选)如何将  例如,假设您有一个大部分为空的源地图,包含两个图层: [[File:../../screenshots/map-patch-mode-source.png]] 以下是它们在不同  
  | 
例如,使用自定义地图内的图块替换鹈鹕镇广场:
{
    "Format": "2.7.0",
    "Changes": [
        {
            "Action": "EditMap",
            "Target": "Maps/Town",
            "FromFile": "assets/town.tmx",
            "FromArea": { "X": 22, "Y": 61, "Width": 16, "Height": 13 },
            "ToArea": { "X": 22, "Y": 61, "Width": 16, "Height": 13 }
        },
    ]
}
编辑地图属性
MapProperties 字段用于新增、替换或移除地图属性。
| 
 字段  | 
 用途  | 
|---|---|
| 
 
  | 
 请参阅上文的公共字段章节。  | 
| 
 
  | 
 需新增、替换或移除的地图属性(不同于图块属性)。要添加属性,只需要指定一个不存在的键;要删除属性,可以把它的值设为  该字段的键和值都支持令牌。  | 
| 
 
  | 
 在  该字段支持令牌。  | 
| 
 
  | 
 
 
  | 
例如,此补丁更改农场洞穴的 Outdoors 地图属性,并增加一个传送点(传送格式请参阅地图说明文档)
{
    "Format": "2.7.0",
    "Changes": [
        {
            "Action": "EditMap",
            "Target": "Maps/FarmCave",
            "MapProperties": {
                "Outdoors": "T"
            },
            "AddWarps": [
                "10 10 Town 0 30"
            ]
        },
    ]
}
编辑地图图块
MapTiles 用于新增、编辑或移除图块和图块属性。
| 
 字段  | 
 用途  | 
||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 
 
  | 
 请参阅上文的公共字段章节。  | 
||||||||||||||
| 
 
  | 
 需新增、编辑或移除的图块。该字段的所有子字段都支持令牌。 此字段是一个含有多个模型的列表。每一个模型对应一个图块,并含有以下字段。 
  | 
例如,此补丁延长农场里通向出货箱的路径,新增一个图块。
{
    "Format": "2.7.0",
    "Changes": [
        {
            "Action": "EditMap",
            "Target": "Maps/Farm",
            "MapTiles": [
                {
                    "Position": { "X": 72, "Y": 15 },
                    "Layer": "Back",
                    "SetIndex": "622"
                }
            ]
        },
    ]
}
MapTiles 的所有子字段都支持令牌。例如,此补丁在出货箱前新增一个每天都会随机传送到不同位置的传送点。
{
    "Format": "2.7.0",
    "Changes": [
        {
            "Action": "EditMap",
            "Target": "Maps/Farm",
            "MapTiles": [
                {
                    "Position": { "X": 72, "Y": 15 },
                    "Layer": "Back",
                    "SetProperties": {
                        "TouchAction": "MagicWarp {{Random:BusStop, Farm, Town, Mountain}} 10 11"
                    }
                }
            ]
        },
    ]
}
已知限制
- 更改农舍的 
Back图层有可能失败或导致离奇的效果。这是游戏本身装饰地板的逻辑造成的限制,而非 Content Patcher 的限制。 
参见
- 其他操作和选项请参见模组作者指南。
 
                
                    沪公网安备 31011002002714 号