Chat Configs
Bind chat messages to game events. When an event fires, the bound message will be sent to chat.
| Last updated | 3 weeks ago |
| Total downloads | 45 |
| Total rating | 0 |
| Categories | Utility Misc |
| Dependency string | GymMed-Chat_Configs-0.0.1 |
| Dependants | 0 other packages depend on this package |
This mod requires the following mods to function
GymMed-Chat_Commands_Manager
CLI library for Outward chat. Eliminates the need to build a separate UI to execute mod functions by providing an in-chat console.
Preferred version: 0.1.0GymMed-Mods_Communicator
Outward Mods Communicator enables seamless communication between mods through shared events and configuration syncing. It also lets users override any changes made by other mods, giving them full control over their settings.
Preferred version: 1.2.0README
Outward Chat Commands Configs
Dependencies
This mod requires the following mods to function:
- Chat Commands Manager - Provides chat command functionality
- Mods Communicator - Enables communication between mods
- SideLoader - Required for SL events (optional)
Chat Configs is designed for players who want to automate chat commands without C# programming. Similar to console commands in older games, it lets you store command sequences and execute them automatically when game events occur. Perfect for modders who prefer chat-based configuration over C# development.
Chat Config
Chat Config allows you to bind chat messages to game events. When an event fires, all bound messages will be automatically sent to chat.
Commands
/bind
Binds a chat message to an event. When the event fires, the message will be sent to chat.
Parameters:
--mod(required) - Mod namespace (e.g., "MyMod", "SL", "gymmed")--event(required) - Event name (e.g., "OnSceneLoaded", "OnFirstGameReady")--message(required) - Chat message to send when event fires
Usage:
/bind --mod="SL" --event="OnSceneLoaded" --message="/say Hello from scene loaded!"
/bind --mod="gymmed" --event="OnFirstGameReady" --message="/command --param='value'"
/bind --mod="MyMod" --event="OnPlayerLogin" --message="/tell {player} Welcome!"
/unbind
Removes a bound message from an event.
Parameters:
--mod(required) - Mod namespace--event(required) - Event name--index(required) - Message index to remove (use/listbindsto see indices)
Usage:
/unbind --mod="SL" --event="OnSceneLoaded" --index=0
/unbind --mod="gymmed" --event="OnFirstGameReady" --index=1
/listbinds
Shows all bound messages, optionally filtered by mod namespace.
Parameters:
--mod(optional) - Filter by mod namespace
Usage:
/listbinds
/listbinds --mod="SL"
Practical Examples
This section shows how Chat Configs can automate other mods using /bind + /publish.
Important: When to Use Which Event
| Event | Use Case |
|---|---|
SL.OnSceneLoaded |
Testing/debugging only (rules reapplied each scene) |
gymmed.OnFirstGameReady |
Production use - rules applied once per session |
Warning: Never use
SL.OnSceneLoadedfor Loot Manager or Enemies Balancer rules - they persist and will duplicate on every scene load!
Prerequisites
These examples require:
- Loot Manager - For loot modifications
- Enemies Balancer - For enemy stat modifications
- Mods Communicator Chat Control - For /publish command
Loot Manager Examples
All examples use gymmed.OnFirstGameReady to apply rules once when game starts.
Add Loot to Bandit Faction
Adds Dreamer's Root (4000360) to all Bandit enemies when game starts.
/bind --mod="gymmed" --event="OnFirstGameReady" --message="/publish gymmed.loot_manager_* AddLoot --itemId=4000360 --faction=Bandits"
Parameters: minDropCount, maxDropCount control drop quantity.
Add Loot to Specific Area
Adds loot to all enemies in the Abrassar region.
/bind --mod="gymmed" --event="OnFirstGameReady" --message="/publish gymmed.loot_manager_* AddLoot --itemId=4000360 --area=Abrassar"
Make All Bosses Lootable
Makes all bosses drop a specific item.
/bind --mod="gymmed" --event="OnFirstGameReady" --message="/publish gymmed.loot_manager_* AddLootForUniques --itemId=4300040 --isForBosses=true"
Enemies Balancer Examples
All examples use gymmed.OnFirstGameReady to apply rules once when game starts.
Buff Hyena Health
Doubles Hyena health when game starts.
/bind --mod="gymmed" --event="OnFirstGameReady" --message="/publish gymmed.enemies_balancer_* AddBalanceRuleByEnemyName --enemyName=Hyena --statType=MaxHealth --value=2.0 --modifierType=Scale"
modifierType=Scale multiplies stat (2.0 = 200% = double).
Buff All Bosses
Increases all boss health and health regen when game starts.
/bind --mod="gymmed" --event="OnFirstGameReady" --message="/publish gymmed.enemies_balancer_* ModifyVitalStats --maxHealth=1.5 --healthRegen=1.2 --isForBosses=true --modifierType=Scale"
Make Bandits Friendly
Makes all Bandit enemies friendly (non-hostile) to players.
/bind --mod="gymmed" --event="OnFirstGameReady" --message="/publish gymmed.enemies_balancer_* AddFactionRule --faction=Bandits --newFaction=Player"
Available factions: NONE, Player, Bandits, Mercs, Tuanosaurs, Deer, Hounds, Merchants, Golden, CorruptionSpirit
Make All Bosses Friendly
Makes all bosses non-hostile.
/bind --mod="gymmed" --event="OnFirstGameReady" --message="/publish gymmed.enemies_balancer_* AddFactionRule --isForBosses=true --newFaction=Player"
Increase Enemy Damage
Adds +20 impact and +10% movement speed to all enemies.
/bind --mod="gymmed" --event="OnFirstGameReady" --message="/publish gymmed.enemies_balancer_* ModifyCombatStats --impact=20 --movementSpeed=1.1 --modifierType=Add"
Combined Examples
Full Setup: Loot + Buffs on Game Start
Apply multiple rules by creating separate binds:
Bind 1 - Add Loot:
/bind --mod="gymmed" --event="OnFirstGameReady" --message="/publish gymmed.loot_manager_* AddLoot --itemId=4000360 --faction=Bandits"
Bind 2 - Buff Enemies:
/bind --mod="gymmed" --event="OnFirstGameReady" --message="/publish gymmed.enemies_balancer_* AddBalanceRuleForArea --area=Abrassar --statType=MaxHealth --value=1.2 --modifierType=Scale"
This adds Dreamer's Root to Bandits AND increases enemy health by 20% in Abrassar region.
Using Complex Parameters (ICollection/Arrays)
For parameters that accept multiple values like listExceptNames, use single quotes inside double quotes:
/bind --mod="gymmed" --event="OnFirstGameReady" --message="/publish gymmed.loot_manager_* AddLoot --itemId=4000360 --faction=Bandits --listExceptNames='Hyena Wendigo'"
This adds loot to all Bandits except Hyena and Wendigo.
Tips
- Always use
gymmed.OnFirstGameReadyfor Loot Manager and Enemies Balancer rules - Use
SL.OnSceneLoadedonly for testing (rules reapplied each scene = duplicates) - Rules persist until game restarts - use
/unbindto remove them - Check
/eventsto see all available events from installed mods - Use
/listbindsto view current bindings - Use
/unbind --mod=X --event=Y --index=Zto remove bindings
Events
Events are triggers that cause bound messages to be executed. There are built-in events and dynamic events from other mods.
Built-in Events
| Event | Fires When | Repeats |
|---|---|---|
| SL.OnSceneLoaded | Every scene change (travel, fast travel, loading) | Yes |
| SL.BeforePacksLoaded | Game startup, before content loads | Yes |
| SL.OnPacksLoaded | Game startup, after content loads | Yes |
| SL.OnGameplayResumedAfterLoading | Gameplay actually starts | Yes |
| gymmed.OnFirstGameReady | First scene load after game starts | Once per session |
Note:
SL.OnSceneLoadedis the most commonly used event - it fires every time you travel, fast travel, or load into a new area.
Dynamic Events
Other mods can register custom events using Mods Communicator. When a mod registers an event, it becomes available for binding. Check /configEvents to see all available events from your installed mods.
Profiles
Profiles allow you to save and share your chat configurations. They are useful for transferring settings between characters or sharing your configuration with others.
All profiles and chat configs are stored in: Outward\BepInEx\config\gymmed.Mods_Communicator\Chat_Configs\
Commands
/chatProfileCreate
Creates a new profile with your current scheduled messages.
Parameters:
--name(required) - Profile name
Usage:
/chatProfileCreate --name=myProfile
Note: If a profile with the same name exists, use /chatProfileStore to overwrite it instead.
/chatProfileStore
Stores your current scheduled messages to an existing profile.
Parameters:
--name(required) - Profile name
Usage:
/chatProfileStore --name=myProfile
Note: The profile must already exist. Use /chatProfileCreate to create a new one.
/chatProfilesList
Lists all available profiles.
Usage:
/chatProfilesList
/chatProfilesRemove
Removes a profile.
Parameters:
--name(required) - Profile name to remove
Usage:
/chatProfilesRemove --name=myProfile
/chatProfilesUse
Loads a profile, replacing your current scheduled messages. Your current configuration will be discarded.
Parameters:
--name(required) - Profile name to load
Usage:
/chatProfilesUse --name=myProfile
Sharing Profiles
You can share your chat config profiles through Thunderstore or other distribution methods. Other users can then load your pre-configured bindings without needing to set them up manually.
For Mod Pack Creators
To include a chat config profile in your Thunderstore modpack:
-
Create the profile in-game using your desired bindings:
/bind --mod="gymmed" --event="OnFirstGameReady" --message="/publish gymmed.loot_manager_* AddLoot --itemId=4000360 --faction=Bandits" -
Export the profile to a file:
/chatProfileCreate --name=myAwesomeConfig -
Find the profile XML at:
Outward\BepInEx\config\gymmed.Mods_Communicator\Chat_Configs\Profiles\myAwesomeConfig.xml -
Include in your Thunderstore zip with this directory structure:
BepInEx/ └── config/ └── gymmed.Mods_Communicator/ └── Chat_Configs/ └── Profiles/ └── myAwesomeConfig.xml
Note: Users must have Chat Configs mod installed for the profile to work.
For End Users
To use a shared profile from a modpack:
-
Install the modpack that includes the chat config profile
-
Load the profile in-game:
/chatProfilesUse --name=myAwesomeConfig -
Verify bindings loaded correctly:
/listbinds -
Restart the game to trigger the bindings on next load
The profile will persist across game sessions until removed or replaced.
Profile Location
All profiles are stored in:
Outward\BepInEx\config\gymmed.Mods_Communicator\Chat_Configs\Profiles\
Publish/Subscribe
This mod uses Mods Communicator for event-driven communication between mods.
Publish
Other mods can publish events to this mod to register custom event triggers. When an event fires, any bound chat messages will be automatically sent to chat.
Code Example - Register Event
using OutwardModsCommunicator.EventBus;
// Somewhere in your mod's initialization
var payload = new EventPayload
{
["namespace"] = "MyMod",
["eventName"] = "OnPlayerLogin",
["action"] = new Action(() => {
EventBus.Publish("gymmed.chat_configs_*", "ScheduledEvents@TriggerEvent", new EventPayload
{
["namespace"] = "MyMod",
["eventName"] = "OnPlayerLogin"
});
}),
["displayName"] = "Player Login Event"
};
EventBus.Publish("gymmed.chat_configs_*", "ScheduledEvents@RegisterEvent", payload);
Subscribe
When your custom event needs to fire, publish to gymmed.chat_configs_* with the event ScheduledEvents@TriggerEvent to trigger all bound chat messages.
Code Example - Trigger Event
// When your event fires (e.g., player logs in)
EventBus.Publish("gymmed.chat_configs_*", "ScheduledEvents@TriggerEvent", new EventPayload
{
["namespace"] = "MyMod",
["eventName"] = "OnPlayerLogin"
});
How to Set Up
To manually set up:
- Create the directory:
Outward\BepInEx\plugins\OutwardChatConfigs\ - Extract the archive into any directory (recommend empty)
- Move the contents of the plugins\ directory into the
BepInEx\plugins\OutwardChatConfigs\directory - Launch the game