Chat Mod .cfg Configuration Reference
Every setting the chat mod's .cfg file supports, reverse-engineered directly from the mod itself. Use this as a reference while hand-editing your .cfg - a visual editor is planned.
How configuration loads
The game reads your mod's .cfg file as plain text, one key=value pair per line. Any key you don't include simply keeps its default value shown below.
Values are always plain text; booleans are almost always 1/0 (a couple use true/false, noted where relevant).
General
| Key | Default | Type | Description |
|---|---|---|---|
| lm | 1 | bool | "Log messages" - when 1, config changes applied via chat commands are echoed back into the chat log (e.g. "set ts to 0"). Purely a feedback toggle, no functional effect. |
| debug | 0 | bool | Enables verbose debug output. |
Chat Window Behavior
| Key | Default | Type | Description |
|---|---|---|---|
| hmin | 250 | int (px) | Minimum height of the chat window. |
| hmax | 400 | int (px) | Maximum height of the chat window. |
| ft | 60000 | int (ms) | Fade-out timeout - how long the chat window stays visible/opaque after the last message before fading, in milliseconds. |
| bgs | 1 | number (0-1) | Dark background shader alpha, used directly as the background's opacity. 0 disables the dark background entirely; otherwise the value is applied as alpha (typically 0-1). |
| bgs_color | 0x000000 | color | Background color used when bgs darkening is active. Accepts 0xRRGGBB, #RRGGBB, or a plain decimal color value. |
| ass | 0 | bool/int | "Always show scroll" - forces the scrollbar to always be visible instead of only on hover/overflow. |
| row_bg | 1 | bool | Alternating row background ("zebra striping") on chat log rows for readability. |
| tt | 1 | bool | Enables message tooltips (hover a message to see extra info). |
| mmc | 400 | int | "Max message count" - once the chat log holds more than this many messages, the oldest ones are trimmed. |
| background_opacity | 100 | int (%) | Chat window background opacity, 0-100. Not read anywhere in the SWF's own code (likely applied by the game client itself, similar to remembered window position) - confirm in-game before relying on it. |
Message Formatting
Format strings support placeholders: {TIMESTAMP}, {CHANNEL}, {CHANNEL_CODE}, {CHANNEL_NAME}, {PLAYER}, {MESSAGE}.
| Key | Default | Description |
|---|---|---|
| f_n | [{TIMESTAMP}] [{CHANNEL}][{PLAYER}]: {MESSAGE} | Normal/default channel message format. |
| f_w | [{TIMESTAMP}] [{PLAYER}]: {MESSAGE} | Whisper (private message) format. |
| f_l | [{TIMESTAMP}] [{CHANNEL}] {PLAYER} {MESSAGE} | Loot broadcast message format (lockbox drops etc.). |
| f_s | [{TIMESTAMP}] {MESSAGE} | System message format (no author/channel). |
| f_m | [{TIMESTAMP}] [{CHANNEL}] {MESSAGE} | “TCM” mod message format (used for the mod's own status messages). |
| f_me | [{TIMESTAMP}] [{CHANNEL}] {PLAYER} {MESSAGE} | /me emote message format. |
| f_say | [{TIMESTAMP}] {MESSAGE} | "Says," proximity chat message format. |
| ts | 1 | bool - include seconds in the {TIMESTAMP} (HH:MM:SS vs HH:MM). The timestamp itself is always shown; this only toggles the seconds. |
| tsf | 0 | bool - timestamp format: 0 = 24-hour, 1 = 12-hour. |
| ccf | 0 | Club-channel display format: 0 = full (c1. clubname), 1 = strip prefix (just clubname), 2 = generic label (club1), 3 = short code (c1). |
Channel Colors
Several channels each have a message color key (<code>_m) and an author color key (<code>_a) - both are real, functional keys for every channel listed (the author color override applies to any channel, not just Whisper). 0 means "use game default." Color values accept either plain decimal (16766720) or 0x-prefixed hexadecimal (0x35FFC0) - this applies to every color key on this page, not just bgs_color (which additionally accepts a #RRGGBB form). Only channels that actually expose a customizable color key are listed - e.g. Say (proximity chat) has no color key at all, so it's omitted.
| Channel | Code | Message color key | Author color key | Default msg color | Default author color |
|---|---|---|---|---|---|
| Whisper | c_w | c_w_m | c_w_a | 16766720 (0xFFD700) | 15094472 (0xE652C8) |
| Global | c_g | c_g_m | c_g_a | 0 | 0 |
| World | c_world | c_world_m | c_world_a | 0 | 0 |
| Channel 3-10 | c_c3...c_c10 | c_c3_m...c_c10_m | c_c3_a...c_c10_a | 0 | 0 |
| Club 1-5 | c_club1...c_club5 | c_club1_m...c_club5_m | c_club1_a...c_club5_a | 0 | 0 |
| Mod Message | c_mod | c_mod_m | c_mod_a | 65535 (0x00FFFF) | 65535 (0x00FFFF) |
| System Message | c_system | c_system_m | c_system_a | 16776960 (0xFFFF00) | 16776960 (0xFFFF00) |
Additional per-channel colors used specifically in trade/looking-for-group text:
| Key | Default | Description |
|---|---|---|
| c_wtb_m | 6459611 (0x6290DB) | Color highlight for "WTB" (want to buy) keyword in trade messages. |
| c_wts_m | 10206191 (0x9BBBEF) | Color highlight for "WTS" (want to sell). |
| c_wtt_m | 16575895 (0xFCED97) | Color highlight for "WTT" (want to trade). |
| c_lf_m | 10831551 (0xA546BF) | Color highlight for "LF"/invite/looking-for-group keywords. |
| c_lfm_m | 14833336 (0xE256B8) | Color highlight for "LFM" (looking for more). |
Default-game-color overrides (replace Trove's built-in author name colors when they match a known default exactly):
| Key | Triggers on original color | Description |
|---|---|---|
| c_gold | 16507170 (0xFBE122) | Override color for Top 2000 Trove Mastery authors. |
| c_red | 14698581 (0xE04855) | Override color for Heart-a-Phone authors. |
| c_orange | 16753664 (0xFFA400) | Override color for Top 2000 Total Mastery authors. |
| c_blue | 5634279 (0x55F8E7) | Override color for Top 2000 Geode Mastery authors. |
| c_purple | 10040319 (0x9933FF) / 11041279 (0xA879FF) | Override color for Top 100 Deepest Delve authors. |
Emojis
| Key | Default | Description |
|---|---|---|
| e_meme | 1 | Enable "meme" (custom/community) emojis. |
| e_basic | 1 | Enable basic/standard emoji set. |
| e_trade | 1 | Enable item-icon emojis auto-inserted for recognized item names, only active in channels with "trade" in the name. |
| e_st | 1 | Enable the Shadow Tower / Ultra channel-specific emote set (active only in Shadow Tower-related channels). |
| e_club | 1 | Enable club-tag/emblem rendering in messages. |
| e_ty | 1 | Show the small Twitch/YouTube badge icon next to the username of authors with a linked channel. |
| e_cap_f | 0 | Max number of emoji images rendered per single message; 0 = unlimited. |
| tcm:emote_size | 24 | Pixel size (width & height) used for all rendered emoji/emote images. |
| el_mepp | 250 | Max emojis shown per page in the emoji picker list (controls its pagination). |
Author Badges / Colors
| Key | Default | Description |
|---|---|---|
| enablemodauthorcolors | true | Enables the mod's custom per-author username color system. Defaults to true via a static field (not the generic default table) - if this key is never set in your .cfg, author colors stay on. Set to "false" or "0" to disable. |
| b_cab | 1 | Show a small alliance badge icon next to club names that belong to a recognized club alliance. |
| b_rb | 0 | Adds a small tier/rank badge icon in front of messages, based on the author's name color: Hart-a-phone, Trove Mastery, Geode Mastery, Deepest Delves, or Total Mastery (one icon per matching tier color). |
Sounds
| Key | Default | Description |
|---|---|---|
| ws | Play_ui_forge_use | Sound event name played on whisper received, and (if it also matches c_mn) on mention. Empty string disables sound. |
| c_mn | (empty) | "Mention name" - if a message contains @<this name>, plays the ws sound. |
| tts | Play_ui_gem_fail | Sound played by the reminder/cooldown timer when it completes. |
| tgs | Play_pvp_ui_match_start | Sound played by the reminder/cooldown "go" timer. |
Reminder Timer
| Key | Default | Description |
|---|---|---|
| timer_d | 0 | Disables the timer when non-zero (checked as == "0" to allow it to run). |
| timer_tm | 20 | Maximum number of seconds allowed for the /timer countdown command. If a player runs timer/30 while timer_tm is 20, the countdown silently refuses to start (temp <= timer_tm check). Also reused as the cooldown duration (in seconds) before the timer can be restarted after being cancelled with timer/0. |
Tabs
| Key | Default | Description |
|---|---|---|
| t_w | 1 | Route whisper messages to a dedicated per-author tab, hiding it from general chat. 1 (default) hides whispers from the general/main log entirely - they only appear in their own tab. 0 shows whispers in the general log as normal (no dedicated tab is auto-created). |
| t_hide | 0 | Hide messages from channels that have their own custom tab out of the main/default log view. |
| t_disable | 0 | Disables the custom tab system. 0/3 = enabled, other values disable it. |
| t_wot | 1 | "Whisper opens tab" - whether receiving a whisper opens/focuses its tab automatically. |
| custom_channels | (empty) | Adds a clickable channel-select dropdown (click the channel label next to the chat input, e.g. "2. World"). Format: Label:channelName|Label2:channelName2. e.g. Trade:trade|Ship:ship|5*:fivefarm. Channels added this way always appear at the bottom of the dropdown, near the label. Clicking an added channel you haven't joined automatically joins it; clicking one you're already in just switches your active channel. The dropdown also always auto-lists channels you've already joined this session. Credits to: DireStraits for the original idea. |
Party / Looking-for-Group Helper
| Key | Default | Description |
|---|---|---|
| p_ikw | (empty) | "Invite keyword" - setting this to any non-empty value enables auto-adding the sender of any whisper you receive to the in-mod party/LFG list. Despite the name, the current code only checks that this is non-empty - it does not actually match the whisper's text against the keyword. |
| p_list | (empty) | Comma-separated list of names to pre-populate the party/LFG list with on load. |
Message Filtering / Moderation
| Key | Default | Description |
|---|---|---|
| c_gpro | 0 | "Color protect" - when 1, prevents special author name colors (Trove Mastery, Heart-a-Phone, Top 100 Deepest Delve, Total Mastery, Geode Mastery, Hart-a-phone, etc.) from being overridden by the per-channel author color settings in the Channel Colors section. |
| c_spam_f | 0 | Anti-spam: minimum minutes between identical repeated messages from the same author in a "trade" channel before the repeat is blocked. 0 disables. |
| c_bhap | 0 | Block Heart-a-Phone system messages: matches a message whose color equals Chat.HapColor (14698581, the same color as the Heart-a-Phone tier - c_red) with an empty channel and empty author. Does not match Hart-a-phone (15088810). |
| c_bgeode | 1 | Block Geode-related NPC system messages (Boulder/Sunseeker/Amberine). |
| c_brare | 0 | Block "looted a rare .../looted an amazingly rare..." loot-broadcast messages. |
| tcm:word_blacklist | (empty) | Comma-separated list of words/phrases to strip out of incoming messages. |
| tcm:word_blacklist_remove_message_completely | false | If "true", a message containing any blacklisted word is dropped entirely instead of just having the word removed. |
| tcm:channel_mask | (empty) | Comma-separated pairs (find1,replace1,find2,replace2,...) used to rewrite channel-join/leave/world-broadcast text. |
| tcmplayer_nickname | (empty) | Comma-separated pairs (realName1,nickname1,...) to display a custom nickname instead of a player's real name. Note: unlike the other tcm:-prefixed keys, this one has no colon - that's how it's actually spelled in the mod's own code, not a typo in this doc. |
| tcm:time_offset | 0 | Hour offset applied to displayed message timestamps. |
| tcm:player_emote | (empty) | Comma-separated triples (player1,emoji1,size1,player2,emoji2,size2,...) that show a custom emoji next to a player's name. Use the same name you'd type in chat to trigger that emoji (e.g. rooBlank, Kappa, thinking - with or without the surrounding colons). Example: tcm:player_emote=Wolfie,rooBlank,20 |
| tcm:player_color | (empty) | Comma-separated pairs (player1,color1,player2,color2,...) mapping a player name to a custom message color. Accepts decimal or 0x-prefixed hex, same as the other color keys in this reference. Example: tcm:player_color=Wolfie,0xFF5733 |
| tcm:block_prime_levelup_message | (off) | Blocks "has reached prime Paragon level" system messages. |
| tcm:block_max_level_message | (off) | Blocks "has reached max level as a..." system messages. |
Custom Commands
| Key | Default | Description |
|---|---|---|
| custom_cmds | (empty) | User-defined shortcut aliases. Format: key1:value1|key2:value2|... (only the first : in each pair is treated as the separator, so value may itself contain colons). The key can be written with or without a leading / (test: and /test: both work). Typing /key sends value literally: if value starts with /, it's executed as a command (you must include that leading / yourself); otherwise it's sent as a plain chat message. Example: custom_cmds = /mcr:Hello world|/levi:/join levi |