You are viewing a potentially older version of this package. View all versions.
QingJinShi-LastWords-0.5.5 icon

LastWords

Dead players get one final message. Uses the vanilla Signal Translator when available, with a full-message HUD fallback for modded crews.

Date uploaded 2 weeks ago
Version 0.5.5
Download link QingJinShi-LastWords-0.5.5.zip
Downloads 714
Dependency string QingJinShi-LastWords-0.5.5

This mod requires the following mods to function

BepInEx-BepInExPack-5.4.2100 icon
BepInEx-BepInExPack

BepInEx pack for Mono Unity games. Preconfigured and ready to use.

Preferred version: 5.4.2100

README

LastWords

One final message after death. / 死亡之后,再说最后一句话。

LastWords gives each dead employee one chance to write and publish a final message. It prefers the ship's vanilla Signal Translator when the device is available, while fully modded crews can use a longer, reliable LastWords HUD broadcast.

LastWords 让每名死亡员工获得一次输入并发表遗言的机会。有可用的原版信号发射器时优先使用原版广播;全员安装模组时,也可以使用更长、更可靠的 LastWords HUD 广播。

Features

  • One send-or-skip opportunity after each death; the opportunity resets after revival.
  • The prompt opens only while at least one other crewmate is alive.
  • Messages can contain Chinese and other Unicode text. Line breaks are converted to spaces and rich-text brackets are escaped.
  • Symmetrical last-words input window with a high-priority HUD banner for modded receivers.
  • Red [DECEASED] Player: message presentation for full-message LastWords broadcasts.
  • Configurable message length, opening delay, and transport mode.
  • No fake Signal Translator unlock: vanilla-compatible broadcasts require the real ship upgrade.

Compatibility at a glance

The sender must have LastWords installed. What receivers see depends on the ship and the rest of the lobby:

Situation Result
The ship owns an available Signal Translator Auto uses the vanilla signal broadcast. Modded and unmodded players can see it, but the game displays only the first 10 visible characters.
No Signal Translator is available, and the whole crew has the same LastWords version Auto falls back to the LastWords network/HUD channel and sends the full configured message.
A receiver does not have LastWords and no Signal Translator is available That receiver cannot see the LastWords fallback message.
The final living employee dies No prompt opens. Last words are disabled after a full crew wipe.
Everyone dies while the prompt is open The pending message is cancelled.

Important: In Auto mode, owning an available Signal Translator takes priority even when everyone has the mod. That path intentionally keeps the vanilla 10-character display limit.

Installation

Thunderstore Mod Manager / r2modman

Select Install with Mod Manager. The declared BepInEx dependency will be installed automatically.

Manual installation

  1. Install BepInEx 5 for Lethal Company and launch the game once.
  2. Copy LastWords.dll to:
<Lethal Company>/BepInEx/plugins/LastWords/LastWords.dll
  1. Launch the game. Configuration is created at:
BepInEx/config/cn.lastwords.lethalcompany.cfg

Configuration

Setting Default Meaning
BroadcastMode Auto Prefer the real Signal Translator; otherwise use the LastWords full-message fallback.
MaximumMessageLength 50 Input limit from 1 to 200. The vanilla Signal Translator still shows only the first 10 visible characters.
OpenDelaySeconds 0.75 Delay between local death detection and opening the prompt.
AllowWhenAllPlayersDeadForTesting false Development-only single-player override. Keep this disabled for normal play.

BroadcastMode options:

  • Auto — recommended; vanilla signal first, LastWords fallback otherwise.
  • SignalTranslator — only use the real ship Signal Translator; no device means no broadcast.
  • Chat — always use the full-message LastWords network/HUD channel; the whole crew must have the same mod version.

Known limitations

  • Vanilla Signal Translator broadcasts are limited by the game to 10 visible characters and its normal cooldown.
  • Unmodded receivers need the ship's real Signal Translator to see a last-words message.
  • The full-message fallback requires the same LastWords version across the lobby, including the host.
  • The one-message limit is designed for normal cooperative play and is not an anti-cheat system.
  • Game updates may require a compatibility update. Version 0.5.5 targets the current v81-era Unity 2022/BepInEx 5 environment used during development and testing.

Troubleshooting

  • The prompt does not open after a full crew wipe: this is intentional. At least one other employee must remain alive.
  • An unmodded player sees nothing: make sure the ship actually owns a Signal Translator and that it is available. Without it, unmodded clients cannot receive the fallback channel.
  • A long message becomes 10 characters: Auto selected the vanilla Signal Translator. Use Chat only when the whole crew has LastWords.
  • Different mod versions are installed: update everyone to the same version before testing the full-message fallback.

简体中文完整说明

功能

  • 玩家每次死亡后获得一次发送或放弃遗言的机会,复活后次数重置。
  • 只有至少一名其他队员仍然存活时才会弹出输入框;全员阵亡时不会发表遗言。
  • 支持中文和其他 Unicode 字符;换行会被转换为空格,富文本尖括号会被转义。
  • 模组接收端使用置顶 HUD 横幅显示完整遗言,格式为 [DECEASED] 玩家名: 遗言。
  • 可配置最大输入长度、弹窗延迟和广播通道。
  • 不会自动解锁或伪造信号发射器;原版兼容广播必须依赖飞船实际购买的设备。

联机兼容逻辑

发送遗言的玩家必须安装 LastWords。 接收效果取决于飞船设备和房间内其他玩家:

情况 结果
飞船拥有且当前可使用 Signal Translator Auto 使用原版信号广播。安装或未安装模组的玩家都能看到,但游戏只显示前 10 个可见字符。
没有可用 Signal Translator,并且全员安装同版本 LastWords Auto 改用 LastWords 网络/HUD 通道,发送配置长度内的完整遗言。
接收者没有安装 LastWords,飞船也没有可用 Signal Translator 该玩家无法看到 LastWords 回退消息。
最后一名存活员工死亡 不会弹出遗言窗口;全员阵亡后禁止发表遗言。
输入窗口打开期间全员阵亡 正在等待发送的遗言会被取消。

注意: Auto 模式下,只要真实 Signal Translator 可用,就会优先使用原版广播,即使房间内所有玩家都安装了模组;这种情况下仍保留原版 10 字符显示限制。

安装

使用 Thunderstore Mod Manager 或 r2modman 时,点击 Install with Mod Manager,BepInEx 依赖会自动安装。

手动安装时,先安装 BepInEx 5,然后将 LastWords.dll 放入:

<致命公司目录>/BepInEx/plugins/LastWords/LastWords.dll

首次运行后会生成配置文件:

BepInEx/config/cn.lastwords.lethalcompany.cfg

配置

  • BroadcastMode = Auto:优先使用真实 Signal Translator;设备不可用时使用 LastWords 完整消息通道,推荐。
  • BroadcastMode = SignalTranslator:只使用真实飞船广播;没有设备时不发送。
  • BroadcastMode = Chat:始终使用 LastWords 网络/HUD 通道;全员必须安装相同版本。
  • MaximumMessageLength = 50:最大输入长度,安全范围 1–200;原版信号仍只显示前 10 个可见字符。
  • OpenDelaySeconds = 0.75:死亡到输入框出现的延迟。
  • AllowWhenAllPlayersDeadForTesting = false:仅用于单人开发测试,正常游玩应保持关闭。

常见问题

  • 全员阵亡后不弹窗: 这是预期设计,必须至少有一名其他员工仍然存活。
  • 未安装模组的玩家看不到: 飞船必须真实购买且当前能够使用 Signal Translator;否则原版客户端无法接收回退消息。
  • 长遗言只显示 10 个字符: Auto 选择了原版 Signal Translator。只有在全员安装 LastWords 时才建议使用 Chat。
  • 完整 HUD 遗言收不到: 检查主机和所有玩家是否安装相同版本的 LastWords。

Author, license, and redistribution / 作者、许可与转载

LastWords is independently developed by 青金石. Personal, non-commercial gameplay and gameplay videos or streams are permitted under LICENSE.md. Re-uploading, mirroring, redistributing, repackaging, publishing modified builds, selling the mod itself, removing attribution, or impersonating the author is prohibited without prior written permission.

LastWords 由 青金石 独立开发。依据 LICENSE.md,允许个人非商业游玩以及制作游戏视频或直播;未经书面许可,禁止转载、镜像、分发、重新打包、发布修改版、出售模组本身、删除署名或冒充作者。

The package icon was created with image-generation tooling and is disclosed through the AI Generated category. Lethal Company and third-party names, trademarks, character designs, and assets belong to their respective owners. This is an unofficial fan-made mod.

模组图标使用图像生成工具制作,并通过 AI Generated 类别公开标注。《Lethal Company》及第三方名称、商标、角色设计和素材归各自权利人所有;本项目为非官方玩家模组。

Share the official page rather than re-uploading the archive:

https://thunderstore.io/c/lethal-company/p/QingJinShi/LastWords/

CHANGELOG

Changelog

0.5.5

  • Adds an English-first bilingual Thunderstore description while retaining complete Simplified Chinese instructions.
  • Adds a clear compatibility table for vanilla clients, Signal Translator broadcasts, fully modded HUD fallback, and full-crew wipes.
  • Separates the player-facing Thunderstore page from source-build documentation and removes developer-only setup details from the public package page.
  • Clarifies installation, configuration, known limitations, troubleshooting, authorship, redistribution rules, and AI-generated icon disclosure.
  • Contains no gameplay behavior changes from 0.5.4.

0.5.4

  • Identifies 青金石 as the public author in the assembly metadata, documentation, and ownership notices.
  • Adds a bilingual proprietary end-user license that permits personal gameplay and attributed media while prohibiting unauthorized redistribution, repackaging, impersonation, derivative releases, and commercial exploitation of the mod itself.
  • Adds an authenticity notice, a recipient-specific HR evaluation-license template, ready-to-copy publication text, and a repeatable release/evidence checklist.
  • Adds guarded release packaging and evidence-archive scripts that generate SHA-256 records and require clean, tagged Git source for final evidence.
  • Adds an original 256x256 Thunderstore icon and validates its PNG format and dimensions during release packaging.
  • Records QingJinShi as the owner-controlled Thunderstore Team and the canonical LastWords package page.
  • Initializes the project for a local Git authorship history without publishing the private source or build artifacts.

0.5.3

  • Allows the last-words input to use the configured maximum length even in SignalTranslator mode.
  • Makes Auto prefer a real, available Signal Translator for messages of any input length, truncating only the actual vanilla broadcast payload to its first 10 visible characters.
  • Shows the sender the exact truncated message and a clear delivery note when the Signal Translator shortened a longer last word.
  • Uses the full message through LastWords networking only when Auto cannot find an available real Signal Translator; vanilla clients still require the purchased device.

0.5.2

  • Restores BepInEx's safe default Application/.cctor entrypoint so plugins that load Unity textures during Awake, including LC Chinese Project 3.2.9, no longer crash inside UnityEngine.ImageConversion.LoadImage.
  • Drives LastWords from narrowly scoped Harmony postfixes on PreInitSceneScript.Start, MenuManager.Update, and HUDManager.Update, instead of changing the startup timing of every installed plugin.
  • Preserves the managed LastWords coordinator when Unity destroys BepInEx's early Chainloader carrier, then creates the Canvas on the first verified live Unity frame.
  • Keeps vanilla-client compatibility limited to a real, purchased Signal Translator and its original 10-character display limit.

0.5.1

  • Centers the transmit and silence buttons symmetrically around the modal's midpoint.
  • Restyles the modal and broadcast banner as a dark blood-red final transmission.
  • Formats authenticated broadcasts as [DECEASED] PlayerName: message and shows received text in red beneath a MESSAGE FROM THE DEAD heading.
  • Bumps the named-message protocol to v2 so mixed 0.5.0/0.5.1 clients cannot misinterpret payloads.

0.5.0

  • Replaces the unreliable vanilla system-chat fallback with a LastWords named-message protocol using reliable sequenced delivery.
  • Requires all players to install the mod for fallback messages; actual Signal Translator broadcasts remain visible to vanilla clients.
  • Validates client submissions on the host, including sender identity, death state, and the presence of another living crew member.
  • Displays received last words through an independent always-on-top Canvas on every modded client.

0.4.6

  • Sends the vanilla crew-wide system-message ClientRpc directly when the last-words sender is the host/server.
  • Avoids the host-to-self ServerRpc round trip that failed to fan out to an unmodded LAN client during a real two-client test.
  • Retains the vanilla ServerRpc relay for non-host senders and logs the active network role and selected route.

0.4.5

  • Suppresses the last-words opportunity when no other connected, living crew member remains.
  • Rechecks the living crew at window-open and submission time, preventing a message after the remaining crew dies while the modal is open.
  • Adds a default-off AllowWhenAllPlayersDeadForTesting configuration override for solo UI development.

0.4.4

  • Adds an independent, always-on-top Canvas banner containing the submitted last words for eight seconds.
  • Keeps the banner visible after the input modal closes, so a solo player's all-dead/spectator HUD cannot hide the local confirmation.
  • Continues sending the same crew-wide vanilla system-message RPC to connected clients.

0.4.3

  • Inserts the crew-wide fallback into the sender's local chat history before sending the global RPC, so a dead host can see their own last words immediately.
  • Shows the submitted text in a 2.25-second local delivery confirmation before closing the last-words window.
  • Relies on vanilla duplicate suppression to prevent the host from seeing the local insertion and RPC echo twice.

0.4.2

  • Replaces the player-chat fallback with vanilla's global system-message RPC (playerId = -1), which is not filtered by sender identity, distance, or alive/dead state.
  • Uses an ASCII [LAST WORDS] prefix because the vanilla HUD font has no Chinese glyphs.
  • Logs why Auto mode selected the crew-wide fallback instead of the Signal Translator.

0.4.1

  • Defers Canvas and dynamic-font creation from plugin Awake to the first real Unity Update frame.
  • Fixes a native UnityPlayer crash caused by calling Font.CreateDynamicFontFromOSFont while Chainloader is still executing inside MonoBehaviour..cctor.

0.4.0

  • Returns to a normal BaseUnityPlugin.Update polling loop after identifying the actual BepInEx bootstrap issue.
  • Documents and applies the MonoBehaviour/.cctor BepInEx entrypoint workaround required when Application/.cctor loads plugins before Unity can register their components for updates.
  • Removes the preloader patcher and all experimental runtime-hook workarounds.

0.3.1

  • Moves the preloader bridge from UnitySynchronizationContext.ExecuteTasks, which is absent from the game's active player loop, to the verified MenuManager.Update and HUDManager.Update methods in Assembly-CSharp.
  • Keeps the same pre-load IL injection architecture while ensuring a tick source exists in both the main menu and an active lobby.

0.3.0

  • Adds a BepInEx preloader patcher that injects the LastWords tick bridge directly into UnitySynchronizationContext.ExecuteTasks before UnityEngine.CoreModule is loaded.
  • Removes runtime-installed Harmony, RuntimeDetour, synchronization-context, and PlayerLoop callbacks after the tested Unity 2022.3 environment consistently replaced or ignored all of them after Chainloader startup.
  • Creates the Canvas lazily when the injected bridge first executes on the live Unity main thread.

0.2.3

  • Inserts the polling callback directly into Unity's native PlayerLoop.Update phase, bypassing MonoBehaviour messages, coroutines, Harmony, and synchronization-context dispatch.
  • Removes the synchronization-context timer fallback after the tested Unity context accepted posted work but never consumed its queue.
  • Retains direct RuntimeDetour hooks for immediate death notification and as an independent polling fallback once the HUD exists.

0.2.2

  • Replaces Harmony patches with direct MonoMod.RuntimeDetour hooks after the tested BepInEx environment recorded Harmony patches without ever entering them.
  • Adds a managed timer that posts polling work to Unity's main-thread synchronization context, providing a hook-independent fallback without touching Unity objects from a background thread.
  • Adds separate diagnostics for the background scheduler, Unity main-thread dispatch, and direct runtime hooks.

0.2.1

  • Drives player-state polling from the game's own HUDManager.Update loop instead of a coroutine on a dynamically-added component.
  • Registers Unity's native Application.onBeforeRender callback as an independent fallback tick source.
  • Adds one-time activation logs for both tick sources, making it possible to distinguish patch failure from player-detection failure.

0.2.0

  • Replaces IMGUI with a persistent screen-space Unity Canvas, legacy InputField, and real Buttons.
  • Replaces scaled-time InvokeRepeating with a WaitForSecondsRealtime coroutine that also runs while the main menu or game is paused.
  • Keeps the Canvas at the highest sorting order so the all-players-dead HUD cannot cover it.
  • Uses a dynamic Microsoft YaHei/Arial font chain so Chinese last words render without relying on Lethal Company's limited bundled fonts.

0.1.3

  • Makes LastWordsRuntime public so Unity reliably dispatches callbacks to the dynamically-added component.
  • Starts state polling explicitly through Unity's native InvokeRepeating scheduler instead of waiting for Update discovery.
  • Logs the component's enabled state and the first scheduled poll.

0.1.2

  • Fixes frame and IMGUI callbacks not being delivered to the BepInEx plugin component in the tested game setup.
  • Creates an explicit active, persistent LastWordsRuntime component for Update and OnGUI.
  • Replaces Harmony assembly scanning with an explicit KillPlayer patch and verifies that the postfix is installed.
  • Adds startup logs for the runtime driver's first Update and OnGUI callbacks.

0.1.1

  • Fixes missed death detection during the single-player all-dead/automatic-return flow.
  • Hooks PlayerControllerB.KillPlayer directly while retaining state polling as a fallback.
  • Forces the IMGUI window to the foreground.
  • Adds diagnostic logs for player tracking, death detection, window opening, first render, and closing.

0.1.0

  • Initial implementation.
  • Detects the local player's alive-to-dead transition without patching a fragile death-method signature.
  • Gives one last-words opportunity per death and resets it after revival.
  • Uses the ship Signal Translator when possible and vanilla chat as an automatic fallback.
  • Adds configurable broadcast mode, message length, and popup delay.