Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
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
BepInEx pack for Mono Unity games. Preconfigured and ready to use.
Preferred version: 5.4.2100README
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 广播。
- Version:
0.5.5 - Author / 公开署名:
青金石 - Thunderstore Team:
QingJinShi - Official page: https://thunderstore.io/c/lethal-company/p/QingJinShi/LastWords/
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: messagepresentation 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
Automode, 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
- Install BepInEx 5 for Lethal Company and launch the game once.
- Copy
LastWords.dllto:
<Lethal Company>/BepInEx/plugins/LastWords/LastWords.dll
- 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.5targets 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:
Autoselected the vanilla Signal Translator. UseChatonly 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
QingJinShias 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
SignalTranslatormode. - Makes
Autoprefer 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
Autocannot find an available real Signal Translator; vanilla clients still require the purchased device.
0.5.2
- Restores BepInEx's safe default
Application/.cctorentrypoint so plugins that load Unity textures duringAwake, including LC Chinese Project 3.2.9, no longer crash insideUnityEngine.ImageConversion.LoadImage. - Drives LastWords from narrowly scoped Harmony postfixes on
PreInitSceneScript.Start,MenuManager.Update, andHUDManager.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: messageand shows received text in red beneath aMESSAGE FROM THE DEADheading. - 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
AllowWhenAllPlayersDeadForTestingconfiguration 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
Awaketo the first real UnityUpdateframe. - Fixes a native UnityPlayer crash caused by calling
Font.CreateDynamicFontFromOSFontwhile Chainloader is still executing insideMonoBehaviour..cctor.
0.4.0
- Returns to a normal
BaseUnityPlugin.Updatepolling loop after identifying the actual BepInEx bootstrap issue. - Documents and applies the
MonoBehaviour/.cctorBepInEx entrypoint workaround required whenApplication/.cctorloads 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 verifiedMenuManager.UpdateandHUDManager.Updatemethods inAssembly-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.ExecuteTasksbeforeUnityEngine.CoreModuleis 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.Updatephase, 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.RuntimeDetourhooks 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.Updateloop instead of a coroutine on a dynamically-added component. - Registers Unity's native
Application.onBeforeRendercallback 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
InvokeRepeatingwith aWaitForSecondsRealtimecoroutine 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
LastWordsRuntimepublic so Unity reliably dispatches callbacks to the dynamically-added component. - Starts state polling explicitly through Unity's native
InvokeRepeatingscheduler instead of waiting forUpdatediscovery. - 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
LastWordsRuntimecomponent forUpdateandOnGUI. - Replaces Harmony assembly scanning with an explicit
KillPlayerpatch and verifies that the postfix is installed. - Adds startup logs for the runtime driver's first
UpdateandOnGUIcallbacks.
0.1.1
- Fixes missed death detection during the single-player all-dead/automatic-return flow.
- Hooks
PlayerControllerB.KillPlayerdirectly 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.