传奇任务故事讲述者

传奇任务故事讲述者

为LegendQuest角色的服务器运行实时故事。一名玩家是Storyteller——地下城主——并获得主持游戏环节的工具。

LegendQuest StoryTeller

LegendQuest StoryTeller

为一服务器的 LegendQuest 角色现场主持一段故事。 一名玩家担任 说书人——即地下城主——并获得搭建一场游戏环节的工具:隐身漂移穿过场景、 查看任意玩家、生成并装扮一组角色、附身一只生物并以它的身份说话、放置 一座建筑、进行旁白叙述,并发放奖励。

这是 LegendQuest ReForged 的扩展,而非独立模组。这里的 NPC 就是一份 LegendQuest 角色卡;一份奖励 就是 LegendQuest 经验值;一个队伍 就是一个 LegendQuest 队伍。

为 Minecraft 1.21.11、26.1.2 和 26.2 构建。每个下载文件都会标明其所 适用的版本,并且在版本错误时会拒绝加载,而不是悄悄出问题。


只有服务器需要它。你的玩家无需安装任何东西。

LegendQuest StoryTeller
服务器 必需 必需
说书人 可选 可选
其他所有人 无需安装 无需安装

这是设计上的一条硬性约束,而不是可有可无的加分项。桌上众人感知到的每一种 效果都通过原版客户端本来就理解的东西传达——真实实体、聊天、标题、动作栏、 声音。你的玩家用未安装模组的客户端就能看到整个场景。 没有人需要安装 整合包才能参与你的故事。

这也意味着说书人可以用原版客户端主持一场游戏。连按钮都能用——见下文。


成为一只生物并以它的身份说话

/st possess 会附身你视线中的生物,而 /st say <words> 会让任何距离足够近、能听见的人听到它用你的声音说话。再次输入 /st possess, 它就会恢复自身,和原来一模一样——没有任何东西被销毁,没有任何东西被重建, 被释放的哥布林依然是一只哥布林。

当你的客户端装有 StoryTeller 模组时,你就是它。 使用你自己的操控、 你自己的鼠标、你自己的跳跃:生物随你而动,从内部看是不可见的,当你从背后 看自己时,它就站在你身体原本所在的位置。房间里的其他人只会看到那只生物。 它对生成的 NPC 的作用与对野生动物一样好,包括人形身体。

在原版客户端上,那会让屏幕充满奶牛的内部,所以 /st possess 会改为 引领该生物——它随你行走,但受限于它自己的腿。系统不会询问你使用 哪种客户端;模组会自行判断并告诉你得到的是哪一种。

/st possess eyes 做的是相反的交换:摄像机绑定到该生物,你看到它所看到的, 同时它继续过着自己的一生。在原版客户端上,你无法同时拥有视野与控制—— 这是 Minecraft 的限制而非捷径,模组会直白地说明这一点,而不是假装可以。

当你披着一具身体时,你会(在安装了 Standards 的情况下)被自动隐藏, 并在你放开时被交还给世界——除非你事先隐藏了自己,那样的话你会保持隐藏, 并被告知原因。

锁定目标,然后随意看向任何地方

/st lock 会让你视线中的生物成为唯一目标,直到你再次输入该命令。 之后的附身、说话、装扮、指挥和保存都指的就是那一个,无论你恰好看向何处。

指向某物是正确的默认方式——无需名称、无需 id、无需选择器——但它要求你的 头保持不动,而带着一只被附身的奶牛穿过房间意味着要看向它该去的地方,而 那不是它本身。一个被锁定的店主甚至可以通过 /st say 进行整段对话, 完全不必被附身,这样它就能在由你代言的同时保持自己的行为。

它绝不会悄无声息地失败:如果该生物死亡、卸载或离开世界,锁定会结束并 说明原因,而不是悄悄把你下一条命令指向恰好在准星下的任何东西。

布置一场场景

  • /st cast spawn <entity> [name] — 任意生物,可命名或不命名。
  • /st cast citizen [race] [class] — 一个被赋予 LegendQuest 种族和职业的 命名村民,职业按加权频率随机决定,或固定为你想要的那些。
  • /st cast behave guard | patrol | follow <player> | flee | none — 在生物 自身本能之外附加的一种移动习性,因此一名守卫仍会反击,也仍会畏火。
  • /st cast save | use | list — 将一名演员保存为预设,随世界一同存储。
  • /st cast equip <slot> <item> · /st cast worn — 为 NPC 着装,物品的写法 与 /give 接受的完全一致,因此命名剑或药水箭也都能用。 (需要 Cast,见下文。)

布置场景

  • /st struct place <template> [rotate cw90|180|ccw90] — 任何已加载数据包 声明的任意结构:仅原版就有 1,200 多个,村庄、神庙、废墟和堡垒组件。
  • /st undo · /st scene clear — 撤回你最后放置或生成的,或本次环节的 所有内容。每一次放置都会先对地面进行快照,因此建筑可以被干净地 移除。

奖励桌上众人

  • /st reward <player> xp | levels | sp | karma | money <n> [reason]
  • /st reward <player> reputation <track> <n> [reason] — 与某派系或城镇的 声望,这与 karma 不是一回事:karma 是 LegendQuest 的道德轴,驱动你的称号, 而声望是在具名轨道上的地位,因此一个角色可能在一处受爱戴、在另一处被憎恨。
  • /st reward <player> item <item> [count] — 交出实物,来自物品注册表, 因此模组战利品和原版物品一样可用。
  • /st reward party <player> … — 一次操作给予整个队伍,因为一个一次只奖励 四个人中一个的 GM 只会奖励三个人。
  • /st effect <player> <effect> <seconds> [level] [hidden],以及队伍和 清除形式。

hidden 会抑制盘旋的粒子——用于故事施加的状况,而非有人喝下的药水。

这些并非对原版 /effect 和 /xp 的重新实现。它们是通过说书人自己的 权限而非管理员身份达到的相同能力,因此一名 GM 可以施加诅咒,而不必同时 被授予 /stop、/ban 以及服务器上的每一个方块。

看见桌上众人,并向他们说话

  • /st who — 名册:种族、职业、等级、karma、生命值、法力、队伍以及每个人 所在的位置,生命值带颜色,因为那是你在场景进行中唯一必须即时反应的数字。
  • /st goto <player> · /st next — 查看某人,或循环切换桌上众人。
  • /st drift — 离开你的身体,隐身漂移穿过场景;再次输入即可回来,维度、 位置、朝向和游戏模式全部恢复。
  • /st summon [player] — 把整个队伍带到你站的地方,围成一圈, 面朝你所面对的方向。每个人都会被告知是谁带他们来的,任何离线者都会报告 给你,而不是被悄悄落下。
  • /st narrate [radius <n>| party <player>] <text> · /st title <text> · /st whisper <player> <text> — 一道神之声、一张标题卡、一个只给一个人的 预兆。

按钮,无需要求任何人安装任何东西

安装 Standards 后,说书人最常用的工具会以按钮形式出现——为运行 Standards 客户端的人显示 一条绘制的栏,并为所有没装的人显示可点击的聊天按钮。 原版说书人也能 获得可用的按钮。

它们报告状态而非仅仅可用性:Possess 在你披着某物时会亮起并说出它是什么, Lock 在持有目标时会亮起并说出它持有的目标。一个能看到“你披着一头奶牛”的 说书人会发现已经悄悄结束的附身,而不是在三条命令之后才发现。

还有按键,用于你所瞄准的工具。 在说书人自己的客户端安装 StoryTeller 后会出现五个按键绑定——possess、lock、drift、next 和 summon——这样你就可以 在仍用鼠标追踪一只生物时附身它。它们初始未绑定,游戏会提示你一次它们 已存在。


权限

通过 NeoForge 的权限 API,兼容 LuckPerms,共两个节点——与 LegendQuest 使用的方案相同,因此已经授予 legendquest.* 的服务器无需新的工具。

节点 授予
storyteller.storyteller 使用 /st 的权限
storyteller.reward 发放经验值、等级、技能点、karma、声望和金钱

两者都默认为 false,管理员也不例外。 管理员是能修服务器的人,这不等同于 一个应当在环节进行中悄悄附身玩家对手的人。拆分它们的道理相同:“能发放等级 和金钱”与“能隐身穿墙漂移”是不同程度的信任,你应当能够只授予其中一个而 不授予另一个。


必需:LegendQuest

LegendQuest ReForged 是硬性依赖,需逐一匹配 Minecraft 版本。

可选,且每一个都会添加具体的东西

模组 添加
Standards 按钮、金钱奖励、声望奖励,以及在你披着身体时隐藏你
Cast NPC 身体——人形和生物——用于附身、装扮和代言
CityWorld 其原理图库(.schematic、.schem、.litematic、.nbt)作为 /st struct 的第二个资源池

这些中的每一个都会降级为简单的“此服务器上不可用”,而不是出错。Standards 是否 已安装以及服务器是否拥有经济系统是两个分开询问的问题,因为它们是两件 不同的事。


安装

  1. 将 LegendQuest jar 和 StoryTeller jar 放入服务器的 mods/ 文件夹——两者必须适用于相同的 Minecraft 版本。
  2. 启动服务器。
  3. 将 storyteller.storyteller 授予主持故事的人。在你授予之前什么都不会 生效,这是有意为之。

选择与你的服务器匹配的下载文件:

文件 Minecraft NeoForge
storyteller-<version>+mc1.21.11.jar 1.21.11 任意 21.11 构建
storyteller-<version>+mc26.1.2.jar 26.1.2 任意 26.1 构建
storyteller-<version>+mc26.2.jar 26.2 任意 26.2 构建

该系列内的任意构建都可以——更新 NeoForge 并不意味着要等待一个除此之外别无 变更的 StoryTeller 发布。


坦诚说明它目前还做不到的事

目前还没有 Storyteller 界面——没有名册面板、生成调色板或保存的奖励预设。 你今天主持一场环节用到的就是命令、 Standards 按钮(一条绘制的栏,或在原版客户端上的可点击聊天按钮)以及按键绑定。 三者发送的都是相同的 /st 命令,因此它们谁都不能做到其他两者做不到的 事,日后构建的界面也会以相同方式工作。

StoryTeller 现场主持一段故事;它并不创作故事。 写就的任务线—— 发布者、阶段、选择、世界铭记的后果——是 Chronicler 的工作, 两者可以愉快地共存于同一服务器:在 Chronicler 中准备剧情,用 StoryTeller 围绕它即兴发挥。

在真实环节之前值得知道的两个限制,在此说明而不是在场景进行中才发现:

  • behave 在由大脑驱动的生物上可能不生效——村民、猪灵、 监守者以及其他十七种运行在另一套 AI 系统上,我们的指令是与它竞争而非 替代它。它会应用该行为并告诉你可能不生效,而不是宣称一个它尚未 赢得的成功。
  • 撤销恢复的是方块,而非容器内容。 被结构覆盖的箱子会以一个正确种类 的空箱子回来。用于装扮空地没问题;不要放置在别人的基地上并指望能撤回。

源代码、问题反馈、许可证

MIT 许可,并在 GitHub 上公开开发。欢迎在 问题追踪器 上提交错误报告和建议。