共享职业

共享职业

在多人游戏中分享职业技能。你可以从其他农民的职业中受益,包括离线玩家的职业。

游戏玩法机制

Shared Professions

作者:virtualbjorn

我发现每次都要登录离线农场助手才能获得他们的职业加成,这非常烦人,所以我通宵制作了这个模组。

Shared Professions 会将每个玩家的职业加成分享给农场上的所有其他人。每个农场助手仍然选择并保留他们自己的职业——该模组只是在游戏过程中赋予每个人所有加成的组合效果。共享职业会在游戏保存前移除,因此每个玩家的存档中只包含他们实际获得的职业。随时卸载模组,每个人都会保留他们原本选择的职业。


功能

  • 共享职业加成:在多人游戏中,主机和所有农场助手之间共享职业加成。
  • 实时共享:任何人在升级时选择新职业时,共享加成会立即生效,无需等到下次保存。
  • 按职业配置:通过 Generic Mod Config Menu,可以单独开启或关闭某个职业的共享。
  • SpaceCore 自定义职业:来自 SpaceCore 自定义技能的职业会像原版职业一样被共享,每个职业都有独立的开关(仅在安装 SpaceCore 和自定义技能时显示)。
  • 数据恢复:主机可选功能,用于修复职业数据混乱的存档(详见下文)。

需求

  • Stardew Valley 1.6+ 和 SMAPI 4.0.0+。
  • Generic Mod Config Menu —— 可选,用于游戏内设置界面。
  • SpaceCore —— 可选,仅用于自定义技能的职业。

安装

  1. 安装 SMAPI。
  2. 将此模组解压到 Stardew Valley/Mods 文件夹中。
  3. 运行一次游戏以生成 config.json(或通过 Generic Mod Config Menu 在游戏内进行配置)。
  4. 在多人游戏中,所有玩家都应该安装此模组;主机对共享数据拥有最终决定权。

配置

所有选项都可以通过编辑 config.json 或使用 Generic Mod Config Menu 进行调整:

  • 按职业开关 —— 每个原版职业(以及每个自定义职业)都有一个开关,控制其加成是否共享。
  • 数据恢复 → 加载时恢复原始职业 (仅限主机,默认关闭) —— 在加载农场时,将每个玩家的职业重置为模组在 <save>.json 中记录的“原始”职业集,从而修复一个玩家的职业被写入另一个玩家存档的情况。恢复过程中,它会根据每个职业的技能等级进行验证,并移除任何等级无法支持的职业,然后为那些达到 5/10 级但未选择职业的技能重新提供选择界面。存档修复完成后,请将其关闭。

工作原理 / 备注

  • 该模组将每个玩家已获得的(“原始”)职业存储在其数据文件夹中(<save>.json,以及 backup/ 下的带日期备份)。共享职业在游戏过程中实时合并,并在每次保存前被移除。
  • 职业会在记录时根据玩家实际的技能等级进行验证,因此一个技能无法支持的职业不会被保存为玩家自己的职业。每天,本地玩家存储的职业都会根据当前的技能等级进行核对(例如,如果某个技能被重置)。
  • 自定义职业与原始职业存储在同一个 Farmer.professions 集合中,因此无需额外的存档数据。

控制台命令

这些是开发/测试辅助工具,需要在 SMAPI 控制台中加载存档后运行。它们仅影响你自己的角色。

  • sp_resetskill <skill> —— 将某个原始技能的技能经验和等级重置为 0,以便你可以重新获得该技能并触发 5/10 级的职业选择界面。<skill> 可以是 farming、fishing、foraging、mining、combat、luck 中的一个。
  • sp_resetcustomskill <skillId> —— 将某个 SpaceCore 自定义技能的经验值重置为 0,移除其已选择的职业,并更新存储的数据。不传参数运行可列出可用的自定义技能 ID。需要 SpaceCore。
  • sp_resetprofession <skill> —— 清除某个技能的已选职业,不会丢失技能等级,并立即打开职业选择界面(无需睡觉);对于 10 级技能,10 级的选择界面会在 5 级的选择界面之后出现。<skill> 可以是原始技能名称(farming、fishing、foraging、mining、combat)或 SpaceCore 技能 ID。

常见问题

每个玩家都需要安装这个模组吗?
是的。在多人游戏中,主机和所有农场助手都需要安装。主机对共享职业数据拥有最终决定权。

这个模组在单人模式下有效果吗?
没有其他玩家可以共享,因此在单人农场中没有效果。该模组是为多人游戏制作的。

如果我卸载模组,会丢失我的职业吗?
不会。共享职业会在每次保存前被移除,因此你的存档只保留你实际获得的职业。随时移除模组,每个人都会保留他们自己的选择。

我选择了一个职业,但其他玩家没有获得它——为什么?
职业选择界面关闭时会同步。如果没有出现,请重新加载存档(模组会在加载时重新共享),并确保所有玩家安装了相同版本的模组。

它支持自定义技能和职业吗?
是的,通过 SpaceCore 实现。自定义技能的职业会像原版职业一样被共享,并在“自定义职业”下拥有各自的开关。如果没有 SpaceCore,则不会有任何变化。

某个自定义职业没有被共享。
请检查是否安装了 SpaceCore 和自定义技能模组,玩家是否确实达到了相应等级并选择了职业(而不仅仅是升级了技能),以及其在“自定义职业”下的开关是否已开启。

一个玩家的职业混入了另一个玩家的存档——如何修复?
开启 数据恢复 → 加载时恢复原始职业(仅限主机),加载一次存档进行修复,然后将其关闭。它会将每个玩家重置为存储在 <save>.json 中的原始职业集,并验证所有内容是否与技能等级一致。

我重置了一个技能,但职业仍然存在。
重置技能只会清除其经验值;你选择的职业会保留,直到被清理。该模组会在下一次/加载时移除技能等级不再支持的职业,因此睡觉或重新加载后,它就会被移除。

共享职业算作弊吗?
这取决于你的团队。如果你想限制一些功能,可以使用按职业开关只共享部分职业。


查看更新日志标签页了解版本历史。