模组:地点数据

目录

此页面解释如何创建和编辑游戏内的地点。

术语

某些术语可能含义相同,也可能在不同语境下含义不同。在星露谷物语的语境下:

  • 地点是指游戏代码和存档数据的一部分。它管理游戏中的区域及其内容物(包括诸如玩家的非地图实体)。地点可以被存档文件读写,并且仅在加载存档文件时被加载。
  • 地图是一种素材文件,它描述游戏内区域的地块布局、地块表和地图/地块属性。每次加载存档时或每次模组改变地图时地图会被重新加载。
  • 世界地图是游戏内菜单中显示的地图图像。

换而言之,地点(游戏代码的一部分)是指地图(从Content加载的数据):

┌──────────────────┐
│   - 地点                           │
│   - 物体                           │
│   - 家具                           │
│   - 作物                           │
│   - 灌木和树                       │
│   - 村民和玩家                     │
│   - 其他                           │
│                                    │
│   ┌─────────────┐   │
│   │ 地图素材                 │   │
│   │   - 地块布局             │   │
│   │   - 地图或地块属性       │   │
│   │   - 地块表               │   │
│   └─────────────┘   │
└──────────────────┘

数据格式

可以通过编辑Data/Locations素材以添加或编辑地点。

此素材为一个“字符串 → 数据模型”查询,其中:

  • 键为地点的唯一字符串ID(即“内部名称”)。该键名也会被用作地点的Name字段(而非DisplayName)。(农场则会使用Farm_<type key>代表原版农场类型,或Farm_<type ID>代表自定义农场类型,或Farm_Standard代表没有特别指定类型。)
  • 值为包含如下字段的数据模型:

基本信息

字段 效果
DisplayName (可选,但强烈建议) 用于显示翻译后地点名的模板字符串。此字段用在原版或模组需要显示地点名称的场合。
DefaultArrivalTile (可选,但强烈建议) 玩家通过未指定地块位置的传送到达该地点后,默认到达的地块位置。默认为none,也就是通常会把玩家放在(0, 0)。
CreateOnLoad (可选) 若设置,则加载存档使用此数据文件时会自动创建地点。

此字段为包含如下字段的数据模型:

字段 效果
MapPath 该地点使用的地图素材名称。
AlwaysActive (可选) 该地点是否在多人游戏中向农场帮手保持同步,无论他们是否在此地点。任何允许建造联机小屋的地点必须开启此字段以防崩溃。
Type (可选) 待创建的C#地点类的全名。必须为原版类型的名称以防存档时崩溃。由于类名过多,不在此一一列出,但最常用的类型为StardewValley.GameLocation (默认值)和StardewValley.Locations.DecoratableLocation
CanPlantHere (可选) 作物和树木在默认情形下是否能够种植和生长于此。除非相应的种植规则字段重写此字段,否则默认使用此字段。农场默认为true,其他位置默认为false。
ExcludeFromNpcPathfinding (可选) 村民在不同地点间寻路时是否忽略此地点。默认为false。

内容

字段 效果
ArtifactSpots (可选) 可以在此地点通过挖掘远古斑点找到的物品。

在生成古物时,首先会将此字段的物品与Default条目的物品混合,按照Precedence值排序,然后选取字段匹配成功的第一个物品。 (远古斑点掉落物也可由Data/ObjectsMiscellaneous字段给出;其会被应用于DefaultArtifactSpots中的RANDOM_ARTIFACT_FOR_DIG_SPOT条目。)

此字段为一个由下列字段组成的模型的列表:

字段 效果
公共字段 参见物品生成字段以获取远古斑点掉落物支持的通用物品字段。

若设为返回多个物品的模组:物品查询,则于其中随机择一。

Chance (可选) 若其他字段匹配成功,该物品掉落的概率。为 0(从不)到 1(必然)之间的小数值。默认为1。
ApplyGenerousEnchantment (可选) 是否使用“丰富”附魔,此附魔能提高50%掉落双倍物品的概率。若使用此附魔,则此物品的字段会重新进行随机判定以判定第二个掉落物(例如,重新选取介于MinStackMaxStack之间的随机值)。默认为true。
OneDebrisPerDrop (可选) 是否将掉落的一组物品切分成每组堆叠数量为1的物品。例如,若掉落物堆叠数量为3,则会产生3组独立的单个物品。默认为true。
ContinueOnDrop (可选) 当此物品掉落后,是否继续检查更多物品。默认为false。
Precedence (可选) 检查此条目的顺序,其中较小的值会先被检查。可以取负值。具有同一优先级的远古斑点会按照列表中的顺序依次检查。默认为0。

为保持一致,原版古物掉落物主要使用如下数值:

  • -1000:优先级应当覆盖全局优先物品的那些物品(例如姜岛上的化石);
  • -100: 全局有限物品(例如齐豆);
  • 0: 正常物品;
  • 100: 全局后备物品(例如粘土)。

例如,如下字段所在的地点会在夏日以50%的概率掉落2-4条河豚:

"ArtifactSpots": [
     {
          "Condition": "LOCATION_SEASON Here summer",
          "ItemId": "(O)128",
          "MinStack": 2,
          "MaxStack": 4
     }
]
FishAreas (可选) 此地点的不同钓鱼区域。鱼类可以通过FishAreaId字段引用此数据。此字段可以指示蟹笼所收集的鱼类。

此字段为一个“字符串 → 数据模型”查询,其中键为钓鱼区域的ID,值为包含如下字段的数据模型所组成的列表:

字段 效果
Position (可选) 此钓鱼区域覆盖的地块位置和尺寸,应当为一个包含 XYWidthHeight 字段的对象。此区域会作用于其中的浮标和蟹笼。默认为 null(任何位置)。

具有Position值的区域优先于没有此值的区域。

CrabPotFishTypes (可选) 此区域能用蟹笼捕到的鱼类种类列表。应当与Data/Fish的字段4(用于设置蟹笼鱼类)相匹配。原版类型为 freshwaterocean。若忽略,默认为freshwater
CrabPotJunkChance (可选) 此地点的蟹笼每次产出垃圾而非鱼类的概率。 若玩家具有水手职业则被忽略。默认0.2(20%)。
Fish (可选) 此地点能抓住的鱼。

在选择鱼类时,此字段会与Default的对应字段混合,然后按照Precedence值排序(并随机打乱有相同优先级的条目),最后选择第一个字段匹配的条目。

注意:产出物品的ID会被自动保存,以便稍后重新创建鱼类。任何与此ID无关的物品信息将被自动忽略(例如堆叠数量、品质、例如蓝莓果酒-果酒的风味变种和is-recipe标识)。


此字段为包含如下字段的模型所组成的列表:

字段 效果
公共字段 参见物品生成字段以获得采集品支持的通用物品字段。

必须返回Object类型(或其子类型)的物品。若设为返回多个物品的物品查询,则随机择其一。

Chance (可选) 若选中此鱼类,生成此鱼类的概率,为 0(从不)到 1(必然)之间的小数。默认为1。
Season (可选) 若设置此字段,则其指定能抓住此鱼所需季节。使用此字段较Condition高效,但只能支持一个季节。默认为null(所有季节)。
FishAreaId (可选) 若设置此字段,则其指定能抓住此鱼的区域(为FishAreas下的区域ID)。默认为 null(所有区域)。
BobberPosition (可选) 若设置此字段,则其指定抓住此鱼所需的浮标地块区域。默认为null(所有地方)。
PlayerPosition (可选) 若设置此字段,则其指定抓住此鱼所需的玩家站立地块位置。默认为null(所有地方)。
MinFishingLevel (可选) 出现此鱼所需的最小钓鱼等级。
ApplyDailyLuck (可选) 生成概率是否受每日运气影响。此字段影响Chance字段和Data\Fish几率(若可用)。默认为false。
CuriosityLureBuff (可选) 当玩家装配珍稀诱钩,对生成率的增量。为0或以上的值。此字段影响Chance自动断和Data\Fish几率(若可用)。默认为-1,代表保持默认行为(即,不影响Cahnce字段,且为对Data\Fish概率先加后乘)。
SpecificBaitBuff (可选) 玩家装备针对性鱼饵时,直接在生成概率上增加的数值。默认为0。
SpecificBaitMultiplier (可选) 玩家装备针对性鱼饵时,生成概率乘以的倍数。默认为1.66。
CatchLimit (可选) 每个玩家可以抓到此鱼的最大数量。此数量上限是永久性的,也就是只要抓到了指定数量的此种鱼类就永远不能再抓到这种鱼类。例如,传说之鱼只能抓到1次。默认为-1(无限)。
CanUseTrainingRod (可选) 玩家是否可以用训练用鱼竿钓上此鱼。可能的取值为true (总允许)、 false(从不允许)、null(使用默认逻辑,即只能钓上难度50以下的鱼)。默认为空。
IsBossFish (可选) 这是否为“传说鱼类”。若是,则在钓鱼小游戏中显示戴皇冠的鱼图标,并且获得五倍正常经验值,例如传说之鱼
RequireMagicBait (可选) 玩家是否需要魔法鱼饵才能生成此鱼。默认为false。
MinDistanceFromShore (可选) 能抓住此鱼的离岸最小距离(单位为地块),其中0代表紧贴岸边的水体。
MaxDistanceFromShore (可选) 能抓住此鱼的离岸最大距离(单位为地块),其中0代表紧贴岸边的水体。默认为-1(无限制)。
Precedence (可选) 检查列表条目依照的顺序。越小的值越先检查。可以取负值。具有相同优先级的鱼会随机打乱。默认为0。

为保持一致,原版中的鱼类主要使用如下取值:

  • -1100 to -1000:全局优先物品(例如齐豆);
  • -200 to -100:唯一地点物品(例如传说之鱼或秘密物品);
  • -50 to -1:正常的高优先级物品;
  • 0: 正常物品;
  • 1 to 100:正常的低优先级物品;
  • 1000+:全局备用物品(如垃圾)。
IgnoreFishDataRequirements (可选) 是否忽略Data/Fish中的生成前提(若可用)。

对于非物体((O))类型的物品或Data/Fish未列出ID的物品,无论此字段取什么值,Data/Fish的生成前提都会被忽略。

CanBeInherited (可选) 此鱼是否可以通过LOCATION_FISH物品查询在其他地点生成。默认为true。
SetFlagOnCatch (可选) 成功抓到此鱼时设置的信件标识。默认为none。The mail flag to set for the current player when this fish is successfully caught. Default none.
ChanceModifiers (可选) 待对Chance使用的修饰器。默认为none。
ChanceModifierMode (可选) 指示ChanceModifiers字段中多个数量修饰器的相互作用模式。默认为Stack
ChanceBoostPerLuckLevel (可选) 玩家幸运等级每高一级带来的Chance增量。
UseFishCaughtSeededRandom (可选) 生成随机数时是否使用基于已抓鱼数的随机数种子。
Forage (可选) 该地点可能生成的采集品

说明:

  • 不同于其他物品生成列表,此列表的条目并不是按序列顺序检查的,而是:
    1. 将此列表与Default地点条目中的采集品混合;
    2. 将所有ConditionSeason满足条件的采集品添加到生成池子;
    3. 选取介于1到4的生成几率随机数;
    4. 对每个生成几率,选取随机地块位置和待生成的物品。若无法生成(例如,地块被占用或浇水,或采集品不能通过Chance检查),则游戏会重试最多9次,每次都会重新随机选取地块和采集品。若仍然不能通过,则跳过此生成几率。
  • 物品堆叠数会被忽略。


此字段为包含如下字段的数据模型所组成的列表:

字段 效果
公共字段 参见物品生成字段以获得采集品支持的通用物品字段。

必须返回 Object(O))类型的物品。若使用了返回多个物品的物品查询,则在其中随机择一。若返回空或非Object类型的物品,则会跳过此物品生成(若物品类型无效,则会记录一个警告)。

Chance (可选) 若选中该物品,其生成的概率,为 0(从不)到 1(必然)之间的小数。默认为1。
Season (可选) 生成此采集品的季节。此字段比Condition更高效,但此字段仅支持一个季节。默认为null(全部季节)。
MinDailyWeeds
MaxDailyWeeds
(可选) 一天中生成杂草的最低和最高值(若适用)。默认为1和5。
FirstDayWeedMultiplier (可选) 用于每年的第一天,计算生成杂草的倍数。默认为15。
MinDailyForageSpawn
MaxDailyForageSpawn
(可选) 一天中尝试生成的采集品最小和最大数量(若适用且地点当前采集品数小于MaxSpawnedForageAtOnce)。默认为1和4。
MaxSpawnedForageAtOnce (可选) 地图上允许生成的采集品最大数量。达到此数量会自动停止生成采集品。默认为6。
ChanceForClay (可选) 挖掘地块产出粘土的概率,为 0(从不)到 1(必然)之间的数值。

音乐

字段 效果
Music 可选 玩家进入此地点时播放的音乐(受制于诸如MusicContext的其他字段)。

会使用此字段中第一个匹配的列表项。若没有匹配的,则默认使用MusicDefault

此字段为由包含如下字段的数据模型所组成的列表:

字段 效果
Id 可选 指示该列表项的唯一字符串ID。默认为Track
Track 待播放的音轨ID
Condition 可选 指示此列表项是否可用的游戏状态查询。默认为true。
MusicDefault 可选Music列表中各项均不匹配时的默认音乐。若此项为空,则使用Music地图属性(若已设置)。
MusicContext 可选 此地点的音乐上下文。推荐的值为DefaultSubLocation。默认为Default

设为SubLocation会产生如下效果:

  • SubLocation优先级低于Default。在分屏模式下,若玩家A正处于一个有Default上下文的地点,玩家B同时处于一个有SubLocation上下文的地点,则会播放玩家A的音乐。
  • 当玩家离开具有SubLocation上下文的地点时,音乐会自动停止,除非新地点具有相同的音乐和音乐上下文设定。
MusicIgnoredInRain 可选 当此地点下雨时是否忽略此音乐。默认为false。
MusicIgnoredInSpring
MusicIgnoredInSummer
MusicIgnoredInFall
MusicIgnoredInWinter
可选 指定季节是否忽略地点音乐。默认为false。
MusicIgnoredInFallDebris 可选 秋季风天是否忽略地点音乐。默认为false。
MusicIsTownTheme 可选 是否与鹈鹕镇的音乐逻辑相同,也就是:在每日音乐结束之后开始播放,并且在玩家进入室内区域后继续播放,但在进入与此地点MusicMusicIsTownTheme不同的户外区域就会停止播放。默认为false。

高级

字段 效果
CustomFields 可选 此项的自定义字段
FormerLocationNames 可选 可能出现在存档文件中的地点曾用名。参见“是否可以重命名地点?”以获得更多信息。

默认条目

Data/Locations素材文件中有一个名为Default的地点。此地点的 ArtifactSpotsFishForage 字段会自动添加到其他地点的相应字段,因此可以使用此地点来配置所有地点的远古斑点/鱼类/采集品。

问答

如何在游戏中前往自定义地点?

Data/Locations添加地点仅意味着游戏中存在这个地点了,所以不要忘记添加到达此地点的方法。为此,通常可以在 Content Patcher内容包使用EditMap以添加传送点。

如需快速测试新地点,可以使用控制台命令中的debug warp <location name>来直接传送到此地点。

如何设置地点解锁条件?

有很多方式来设置解锁条件。例如,可以在使用Content Patcher内容包中使用EditMap以添加解锁条件或待清理的障碍物(例如道路滑坡)。

注意: 解锁条件仅应决定地点能否抵达,而不应决定地点存在与否。这是因为移除地点会导致其内部的所有东西永久删除。

是否可以重命名地点?

若不加以注意,重命名地点会导致玩家对旧名称对应地点的一切更改永久丢失。

可以通过配置Data/LocationsFormerLocationNames字段以避免上述问题。若存档数据中存在匹配FormerLocationNames的地点名称,并且该名称不能匹配已加载地点的名称,则其数据会被加载到指定FormerLocationNames字段的地点中。

例如:

"FormerLocationNames": [ "Custom_SomeOldName" ]

地点曾用名可以采用任意格式,但必须全局唯一。无论原版还是模组,一个地点的曾用名不能匹配Data/Locations中其他任何的地点的NameFormerLocationNames

地点名称

游戏中的地点是由GameLocation类(及其子类)表示的,且具有唯一名称。

如下是一些原版地点:

名称 描述
Farm StardewValley.Farm 鹈鹕镇农场的室外区域。
FarmHouse StardewValley.Locations.FarmHouse 农舍内部。
FarmCave StardewValley.Locations.FarmCave 农场的蝙蝠/蘑菇山洞
Town StardewValley.Locations.Town 鹈鹕镇的室外区域。
JoshHouse StardewValley.GameLocation 亚历克斯/乔治/艾芙琳的房子。(Josh是亚历克斯的曾用名。)
HaleyHouse StardewValley.GameLocation 海莉/艾米丽的房子。
SamHouse StardewValley.GameLocation 山姆/乔迪/肯特/文森特的房子。
Blacksmith StardewValley.GameLocation 克林特铁匠铺
ManorHouse StardewValley.Locations.ManorHouse 镇长刘易斯的房子。
SeedShop StardewValley.Locations.SeedShop 皮埃尔杂货店(同时也是卡洛琳/阿比盖尔的房子以及教堂)
Saloon StardewValley.GameLocation 星之果实餐吧(也是格斯的房子)
Trailer StardewValley.GameLocation 潘姆/潘妮拖车
Hospital StardewValley.GameLocation 哈维的诊所
HarveyRoom StardewValley.GameLocation 哈维诊所楼上的房间
Beach StardewValley.Locations.Beach 鹈鹕镇南端的沙滩
ElliottHouse StardewValley.GameLocation 沙滩上艾利欧特的小屋。
Mountain StardewValley.Locations.Mountain 深山的室外区域,也就是木匠商店、莱纳斯的帐篷以及探险家公会的所在地。
ScienceHouse StardewValley.GameLocation 木匠的商店
SebastianRoom StardewValley.GameLocation 木匠的商店地下室的塞巴斯蒂安的房间。
Tent StardewValley.GameLocation 莱纳斯帐篷
Forest StardewValley.Locations.Forest 农场南端的煤矿森林
WizardHouse StardewValley.Locations.WizardHouse 法师/拉斯莫迪斯法师塔
AnimalShop StardewValley.GameLocation 玛妮的牧场
LeahHouse StardewValley.GameLocation 莉亚的农舍
BusStop StardewValley.Locations.BusStop 农场和鹈鹕镇之间的巴士站
Mine StardewValley.Locations.Mine 矿井的第一间房,也就是矮人商店的所在地。
Sewer StardewValley.Locations.Sewer 科罗布斯商店所在的下水道
BugLand StardewValley.Locations.BugLand 下水道的突变虫穴
Desert StardewValley.Locations.Desert 卡利科沙漠,即桑迪绿洲商店以及骷髅洞穴所在地。
Club StardewValley.Locations.Club 桑迪绿洲商店的齐先生赌场
SandyHouse StardewValley.GameLocation 绿洲,也就是桑迪的商店。
ArchaeologyHouse StardewValley.Locations.LibraryMuseum 鹈鹕镇的博物馆,位于铁匠铺南端。
WizardHouseBasement StardewValley.GameLocation 法师塔的地下室。
AdventureGuild StardewValley.Locations.AdventureGuild 探险家公会,也是马龙吉尔的房子。
Woods StardewValley.Locations.Woods 煤矿森林被大圆木挡住的秘密森林
Railroad StardewValley.Locations.Railroad 深山北部的铁路,也是温泉的所在地。
WitchSwamp StardewValley.GameLocation 巫婆沼泽,女巫小屋的所在地。
WitchHut StardewValley.GameLocation 女巫小屋内部。
WitchWarpCave StardewValley.GameLocation 铁路右上可以进入的洞穴,会将玩家传送至巫婆沼泽。
Summit StardewValley.Locations.Summit 铁路北端的顶峰
FishShop StardewValley.Locations.FishShop 威利鱼店
BathHouse_Entry StardewValley.GameLocation 温泉的入口房间,通往男/女更衣室。
BathHouse_MensLocker StardewValley.GameLocation 温泉男更衣室。
BathHouse_WomensLocker StardewValley.GameLocation 温泉女更衣室。
BathHouse_Pool StardewValley.Locations.BathHousePool 温泉内部的浴池。
CommunityCenter StardewValley.Locations.CommunityCenter 社区中心内部。
JojaMart StardewValley.Locations.JojaMart Joja超市内部。
Greenhouse StardewValley.GameLocation 玩家农场的温室
SkullCave StardewValley.GameLocation 卡利科沙漠骷髅洞穴入口。
Backwoods StardewValley.GameLocation 农场北边、巴士站西边的边远森林,通往巴士隧道或深山。
Tunnel StardewValley.GameLocation 巴士站西部黑暗的隧道
Trailer_Big StardewValley.GameLocation 社区升级后潘姆/潘妮的房子内部。
Cellar StardewValley.Locations.Cellar
Cellar2 StardewValley.Locations.Cellar
Cellar3 StardewValley.Locations.Cellar
Cellar4 StardewValley.Locations.Cellar
BeachNightMarket StardewValley.Locations.BeachNightMarket 夜市期间鹈鹕镇的南部。
MermaidHouse StardewValley.Locations.MermaidHouse 夜市美人鱼船内部。
Submarine StardewValley.Locations.Submarine 夜市潜艇内部。
AbandonedJojaMart StardewValley.Locations.AbandonedJojaMart 废弃Joja超市内部,即遗失的收集包所在地。
MovieTheater StardewValley.Locations.MovieTheater 取代Joja超市的电影院的内部。
Sunroom StardewValley.GameLocation 卡洛琳位于皮埃尔杂货店内的阳光房。
BoatTunnel StardewValley.Locations.BoatTunnel 鱼店后面威利的船
IslandSouth StardewValley.Locations.IslandSouth 姜岛南部,即玩家登陆和度假村所在地。
IslandSouthEast StardewValley.Locations.IslandSouthEast 姜岛东南部,即美人鱼和海盗湾所在地。
IslandSouthEastCave StardewValley.Locations.IslandSouthEastCave 海盗湾
IslandEast StardewValley.Locations.IslandEast 姜岛东部,即雷欧小屋所在地。
IslandWest StardewValley.Locations.IslandWest 姜岛西部,即农舍和贝啼的小屋所在地。
IslandNorth StardewValley.Locations.IslandNorth 姜岛北部,即火山和蜗牛教授帐篷所在地。
IslandHut StardewValley.Locations.IslandHut 姜岛雷欧小屋的内部。
IslandWestCave1 StardewValley.Locations.IslandWestCave1 姜岛五彩水晶谜题所在洞穴。
IslandNorthCave1 StardewValley.Locations.IslandLocation 姜岛的蘑菇洞穴,即蜗牛教授受困之处。
IslandFieldOffice StardewValley.Locations.IslandFieldOffice 蜗牛教授的岛屿办事处帐篷。
IslandFarmHouse StardewValley.Locations.IslandFarmHouse 姜岛农舍内部。
CaptainRoom StardewValley.Locations.IslandLocation 姜岛西部沉船
IslandShrine StardewValley.Locations.IslandShrine 姜岛丛林东部的区域
IslandFarmCave StardewValley.Locations.IslandFarmCave 姜岛的饕餮青蛙洞穴
Caldera StardewValley.Locations.Caldera 火山地牢最后的火山口
LeoTreeHouse StardewValley.GameLocation 雷欧的树屋
QiNutRoom StardewValley.Locations.IslandLocation 齐先生的核桃房