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

KeyDefaultTypeDescription
lm1bool"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.
debug0boolEnables verbose debug output.

Chat Window Behavior

KeyDefaultTypeDescription
hmin250int (px)Minimum height of the chat window.
hmax400int (px)Maximum height of the chat window.
ft60000int (ms)Fade-out timeout - how long the chat window stays visible/opaque after the last message before fading, in milliseconds.
bgs1number (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_color0x000000colorBackground color used when bgs darkening is active. Accepts 0xRRGGBB, #RRGGBB, or a plain decimal color value.
ass0bool/int"Always show scroll" - forces the scrollbar to always be visible instead of only on hover/overflow.
row_bg1boolAlternating row background ("zebra striping") on chat log rows for readability.
tt1boolEnables message tooltips (hover a message to see extra info).
mmc400int"Max message count" - once the chat log holds more than this many messages, the oldest ones are trimmed.
background_opacity100int (%)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}.

KeyDefaultDescription
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.
ts1bool - include seconds in the {TIMESTAMP} (HH:MM:SS vs HH:MM). The timestamp itself is always shown; this only toggles the seconds.
tsf0bool - timestamp format: 0 = 24-hour, 1 = 12-hour.
ccf0Club-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.

ChannelCodeMessage color keyAuthor color keyDefault msg colorDefault author color
Whisperc_wc_w_mc_w_a16766720 (0xFFD700)15094472 (0xE652C8)
Globalc_gc_g_mc_g_a00
Worldc_worldc_world_mc_world_a00
Channel 3-10c_c3...c_c10c_c3_m...c_c10_mc_c3_a...c_c10_a00
Club 1-5c_club1...c_club5c_club1_m...c_club5_mc_club1_a...c_club5_a00
Mod Messagec_modc_mod_mc_mod_a65535 (0x00FFFF)65535 (0x00FFFF)
System Messagec_systemc_system_mc_system_a16776960 (0xFFFF00)16776960 (0xFFFF00)

Additional per-channel colors used specifically in trade/looking-for-group text:

KeyDefaultDescription
c_wtb_m6459611 (0x6290DB)Color highlight for "WTB" (want to buy) keyword in trade messages.
c_wts_m10206191 (0x9BBBEF)Color highlight for "WTS" (want to sell).
c_wtt_m16575895 (0xFCED97)Color highlight for "WTT" (want to trade).
c_lf_m10831551 (0xA546BF)Color highlight for "LF"/invite/looking-for-group keywords.
c_lfm_m14833336 (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):

KeyTriggers on original colorDescription
c_gold16507170 (0xFBE122)Override color for Top 2000 Trove Mastery authors.
c_red14698581 (0xE04855)Override color for Heart-a-Phone authors.
c_orange16753664 (0xFFA400)Override color for Top 2000 Total Mastery authors.
c_blue5634279 (0x55F8E7)Override color for Top 2000 Geode Mastery authors.
c_purple10040319 (0x9933FF) / 11041279 (0xA879FF)Override color for Top 100 Deepest Delve authors.

Emojis

KeyDefaultDescription
e_meme1Enable "meme" (custom/community) emojis.
e_basic1Enable basic/standard emoji set.
e_trade1Enable item-icon emojis auto-inserted for recognized item names, only active in channels with "trade" in the name.
e_st1Enable the Shadow Tower / Ultra channel-specific emote set (active only in Shadow Tower-related channels).
e_club1Enable club-tag/emblem rendering in messages.
e_ty1Show the small Twitch/YouTube badge icon next to the username of authors with a linked channel.
e_cap_f0Max number of emoji images rendered per single message; 0 = unlimited.
tcm:emote_size24Pixel size (width & height) used for all rendered emoji/emote images.
el_mepp250Max emojis shown per page in the emoji picker list (controls its pagination).

Author Badges / Colors

KeyDefaultDescription
enablemodauthorcolorstrueEnables 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_cab1Show a small alliance badge icon next to club names that belong to a recognized club alliance.
b_rb0Adds 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

KeyDefaultDescription
wsPlay_ui_forge_useSound 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.
ttsPlay_ui_gem_failSound played by the reminder/cooldown timer when it completes.
tgsPlay_pvp_ui_match_startSound played by the reminder/cooldown "go" timer.

Reminder Timer

KeyDefaultDescription
timer_d0Disables the timer when non-zero (checked as == "0" to allow it to run).
timer_tm20Maximum 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

KeyDefaultDescription
t_w1Route 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_hide0Hide messages from channels that have their own custom tab out of the main/default log view.
t_disable0Disables the custom tab system. 0/3 = enabled, other values disable it.
t_wot1"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

KeyDefaultDescription
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

KeyDefaultDescription
c_gpro0"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_f0Anti-spam: minimum minutes between identical repeated messages from the same author in a "trade" channel before the repeat is blocked. 0 disables.
c_bhap0Block 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_bgeode1Block Geode-related NPC system messages (Boulder/Sunseeker/Amberine).
c_brare0Block "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_completelyfalseIf "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_offset0Hour 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

KeyDefaultDescription
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