柠檬尖塔2 - 聊天。发送。沟通。同步。

柠檬尖塔2 - 聊天。发送。沟通。同步。

一个受Mint Spire启发的mod,主要为《杀戮尖塔2》(尤其是多人模式)提供一些生活质量与功能改进,包括颜色、聊天、增益、物品悬停提示以及完整的国际化支持!

杂项

[size=4][b]Nexus 可能不会及时更新,请查看 GitHub 发布版本。[url=https://github.com/freude916/lemonSpire2]freude916/lemonSpire2[/url][/b][/size]

[size=5][b]Lemon Spire 2[/b][/size]

一款受 Minty Spire 启发的模组,主要致力于为《杀戮尖塔 2》提供生活质量(QoL)功能,尤其是在多人游戏模式下。

软依赖 [url=https://www.nexusmods.com/slaythespire2/mods/137]RitsuLib[/url] 以提供配置开关。

[b]功能[/b]

[b]颜色 / 绘画相关[/b]

更改你的颜色。

这会影响光标颜色、地图绘制颜色、左侧信息面板中的玩家名字颜色,以及聊天消息中的名字颜色。

(待办)目前这感觉有点过于显眼,影响了可读性。我可能需要一种方法来更改内部颜色而不影响外部描边。

[b]简单队友协同指示器[/b]

直观地显示你的队友是否抽到了“多人专属卡牌”,或者持有能够为团队提供增益的卡牌。

[list] []常规增益直接显示为对应的增益图标。目前支持:易伤、虚弱、窒息、友方力量、友方格挡、友方能量和友方抽牌。[/] []多人专属卡牌显示为通用的“握手”图标。[/] []我希望以后能改进可扩展性。目前,专用图标不能直接覆盖通用握手图标。如果你想让某个特定的多人卡牌抑制握手图标,你必须修改握手图标本身的逻辑,这很不方便。[/] [/list]点击你自己的小图标,使其在整个团队中显示为暗淡状态,这表示“我无法参与其中”,并可用于向队友发出信号。这种交互方式并不理想,但我还没有想到更好的办法。

参见 [font=Courier New]lemonSpire2.SynergyIndicator.Models.IIndicatorProvider[/font]。

[b]完整的多人聊天[/b]

按 [b]Tab[/b] 键展开或折叠聊天框。支持鼠标拖动标题栏。有安全的 BBCode 支持,因此你可以使用 [lb]b[rb] 或 [lb]color=red[rb] 等标签来设置文本样式。未闭合的标签会在末尾自动闭合。闭合逻辑位于 [font=Courier New]lemonSpire2.util.BBCodeUtils[/font] 中。

请注意,我并未区分哪些标签是自闭合的,因此可能仍有边缘情况。我懒得去彻底修复。

在底层,有一个相当可用的分段消息系统。自定义消息样式应该是可行的,尽管我目前还没有在其上构建太多功能。

如果你想添加新的消息段类型或调整现有消息段的渲染,请参见 [font=Courier New]lemonSpire2.Chat[/font]。

你也可以尝试向 [font=Courier New]ChatStore[/font] 注册新的意图(intents)以实现额外的聊天行为。或者帮我把 [font=Courier New]TextSubmit[/font] 意图拆分成更小的部分。

[b]发送任何内容 - 鼠标[/b]

使用 [b]Alt + 左键单击[/b] 将遗物、卡牌和增益发送到多人聊天中,生成你的队友可以查看的悬停提示。

此功能的部分代码灵感来自 [url=https://github.com/Shiroim/sts2_typing]Shiroim 的 sts2_typing[/url](MIT 许可证)。

使用 [b]Alt + 右键单击[/b] 发送当前物品及其所有关联的悬停提示。这对于分享事件即将强加给你的卡牌或遗物,或者你手牌中卡牌上的增益非常有用。

[list] []右键路径在读取事件卡牌、遗物等数据时非常准确,但游戏似乎有一些静态的悬停提示没有物品来源,所以我保留了一些回退逻辑:[/] []如果无法找到悬停提示背后的物品,模组会回退到直接读取悬停提示文本并发送,这意味着在那种情况下 i18n 将无法工作。[/] [/list][b]发送任何内容 - 键盘[/b]

还有一个简写输入语法。

目前支持:

[list] [][font=Courier New]@playerName[/font] 创建提及。[/] [][font=Courier New]<card:cardId>[/font] 创建卡牌链接。[/] [][font=Courier New]<relic:relicId>[/font] 创建遗物链接。[/] [][font=Courier New]<potion:potionId>[/font] 创建药水链接。[/] [/list]还有一个使用 [font=Courier New]/[/font] 的斜杠命令系统,但由于此模组旨在保持生活质量的范畴,因此没有太多不影响游戏玩法的内置好命令。

目前内置命令:

[list] [][font=Courier New]/help[/font] 从注册表中读取所有命令的帮助信息并显示。[/] [][font=Courier New]/about[/font] 显示有关此模组的信息。[/] [][font=Courier New]/ping[/font] 从游戏的 [font=Courier New]NetService[/font] 读取当前延迟并显示。[/] [][font=Courier New]/w @playerName text[/font] 发送私信。[/] [/list]关于简写输入的内部机制,如果你想添加新的输入类型或命令,请参见 [font=Courier New]lemonSpire2.Chat.Input[/font]。

要快速注册新的简写输入,请参阅 [font=Courier New]lemonSpire2.ChatServices[/font] 并复制现有的注册代码。目前它有些耦合。

要注册新的斜杠命令,请参见 [font=Courier New]lemonSpire2.ChatServices.Command[/font]。

[b]简单贡献统计[/b]

在多人游戏模式下,将鼠标悬停在左侧的角色状态上会显示一个悬停提示,其中包含玩家的伤害贡献、增益贡献和“额外伤害”贡献(来自易伤和虚弱等效果造成的伤害,因为准确追踪原始增益来源很麻烦)。

[list] []追踪增益来源本身并不难。真正的问题是,当相同的增益叠加时,游戏逻辑不会更新“增益来源”属性。这意味着后来施加相同增益的玩家不会获得贡献积分,这显然不公平,所以我放弃了。[/] []你不能真的指望我仅仅为此构建一个单独的记录系统。[/] [/list]这种悬停提示机制也是开放的,可以进行扩展。如果你想添加新的悬停统计信息,请参见 [font=Courier New]PlayerStateEx.PanelProvider.ITooltipProvider[/font]。

现有的贡献统计代码位于 [font=Courier New]StatsTracker[/font] 命名空间下。

[b]战斗内状态悬停面板[/b]

在原版游戏中,点击左侧的角色状态会打开一个全屏面板,显示完整的卡组和遗物列表。这在单场战斗中并不是特别有用,而且打开和关闭该面板有点烦人。

因此,我将“点击角色状态”改为一个小型悬停面板,直接显示你的队友当前回合的手牌和他们可用的药水。

原始的全屏面板现在可以通过 [b]双击[/b] 或 [b]右键单击[/b] 打开。

它还可以显示你的队友当前正在面对卡牌奖励。这包括战斗后奖励、来自诸如“星象仪”等遗物的奖励,甚至是特殊奖励,如“营火钥匙”或拿回被偷走的卡牌。

在商店中,悬停面板会显示你队友的金币和他们正在查看的商店物品。只有与其他允许玩家赠送卡牌或物品的模组结合使用时,这才真正有用。我们只提供显示面板。

此功能也是可扩展的。请参阅 [font=Courier New]PlayerStateEx.PanelProvider[/font] 了解如何向面板插入新信息。

顺便说一句,此悬停面板中当前显示的项目也支持 [b]Alt + 点击[/b] 发送。

[b]指指点点[/b]

现在,单击左键可以让你的队友的手牌、药水或商店物品闪烁绿色,提示他们打出或购买那个东西。

我保留了右键点击详情页的行为。

最高强度的“指导”能量,完全释放!

这部分还没有经过充分测试。如果你能帮忙修复,那就太好了!参见 [font=Courier New]PlayerStateEx.RemoteFlash[/font]。

[b]待办事项[/b]

[b]UI[/b]

[list] []目前的 UI 很丑。我真的没什么审美观,所以如果你想帮忙重新设计边框、颜色、布局或其他任何东西,那就太好了。[/] []目前大部分 UI 基本上是用 AI 堆砌的代码。你觉得那样能好看吗?[/] [/list][b]更多命令[/b]

[list] []老实说,我觉得原版游戏中还有一些隐藏信息可以显示,但我现在想不起来,所以欢迎提出建议![/] []但请注意,任何直接影响游戏玩法的命令都不太适合这个模组。将来可能会有单独的辅助模组,利用这里的钩子实现更多多人命令。[/] [/list]