Adjustable Chat

v0.0.1·Updated 2026-03-26

Resize and reposition your chat panel — it finally obeys you!

About this mod Author’s original text

Outward Adjustable Chat

Resize and reposition your chat panel — it finally obeys you!

Overview

Outward Adjustable Chat gives you complete control over your in-game

chat panel. Stuck in the corner with no way to move it? Forced to use

a tiny chat window that ruins your immersion? Those days are over —

now you can drag your chat anywhere on screen, resize it to fit your

needs, and your settings travel with your character across saves.

Features

  • Drag to Reposition — Click and drag anywhere on non-interactive areas of the chat panel to move it wherever you want
  • Resize with Style — Pull the golden handle in the bottom-right corner to resize the panel freely
  • Persistent Settings — Your position and size are saved automatically with each character save
  • Smart Sprite Handling — Uses Sliced image type so the panel background stays crisp and unstretched when resized

Technical Details

XML Data Storage

Chat panel settings are stored per-character in XML format. Each character maintains their own panel configuration that follows them across save/load cycles.

File Location: BepInEx/config/gymmed.Mods_Communicator/Adjust_Chat/{characterUID}/ChatPanelState.xml

Data Structure:

  • DisplaySize — The size of the "Display" child element (x, y)
  • PositionOffset — The screen position of the "Chat - Panel" parent element (x, y)
  • BackgroundSize — The size of the background element (x, y)

Load Flow:

  • Harmony patch intercepts CharacterSaveInstanceHolder.ApplyLoadedSaveToChar()
  • XML file is loaded and stored as pending state
  • When ChatPanel.StartInit() completes, the component's Start() method applies the saved values
  • Position is applied to the parent "Chat - Panel" RectTransform, size to the child "Display" RectTransform

Save Flow:

  • Harmony patch intercepts SaveInstance.Save()
  • Current position is read from the "Chat - Panel" parent RectTransform
  • Current size is read from the "Display" child RectTransform
  • Data is serialized to XML using System.Xml.Serialization

Sprite Styling

The mod enhances the chat panel's visual quality using Unity's built-in image handling:

  • Trigger: SideLoader's SL.OnSceneLoaded event calls ChatPanelStyler.ApplyToAllCharacters() for each active character
  • Problem: The original sprite (tex_men_backgroundChat) stretches when the panel is resized, causing blurry/pixelated edges
  • Solution: Uses UnityEngine.Sprite.Create() with custom border parameters (14px for sides, 58px for bottom) to create a styled sprite
  • Result: Sets UnityEngine.UI.Image.type = Image.Type.Sliced so the corners remain sharp and borders intact during resize
  • Optimization: The styled sprite is created once and cached for reuse across all characters

Drag & Resize Implementation

  • Dragging: Uses Unity's native EventTrigger system (PointerDown, Drag, PointerUp events) rather than polling in Update()
  • Resizing: Creates a 10x10 golden-colored handle at the bottom-right corner of the "Display" element
  • Position Tracking: Position is saved from the "Chat - Panel" parent (not the child "Display") to ensure absolute screen positioning

How to set up

To manually set up, do the following

  • Create the directory: Outward\BepInEx\plugins\OutwardAdjustableChat\.
  • Extract the archive into any directory(recommend empty).
  • Move the contents of the plugins\ directory from the archive into the BepInEx\plugins\OutwardAdjustableChat\ directory you created.
  • It should look like Outward\BepInEx\plugins\OutwardAdjustableChat\OutwardAdjustableChat.dll

Launch the game.

If you liked the mod leave a star on GitHub it's free

Install & use Install: BepInEx plugin

  1. The archive from playbuff is the mod itself — usually a BepInEx plugin (a .dll or a plugin folder once unzipped).
  2. Recommended: use a community mod manager (such as r2modman) — pick this game, import the mod, and the manager sets up BepInEx and its dependencies for you.
  3. Manual route: install the BepInEx loader in the game folder, then drop the unzipped .dll or plugin folder into BepInEx/plugins/.
  4. Launch the game — the BepInEx console logs every plugin it loads; seeing this mod in the log means it is installed.

Mods with listed dependencies need those installed too, or they will not load. Options are usually changed in-game or in the plugin's config file.

Dependencies

Install these first, or the mod will not work:

sinai-dev-SideLoaderBepInEx-BepInExPack_Outward

File & checksum

Filename
Adjustable_Chat-0.0.1.zip
File size
148.9 KiB