# RuneScape Dragonwilds: Together settings. Restart the game after editing.
# Keys and display options can also be changed in game, no restart needed: Esc > TOGETHER SETTINGS (or SettingsKey).
# Those are saved in data/settings.txt, which overrides this file (delete it to go back to the values here).

# Key that opens the trade menu (F1-F12, a letter, ...). Empty = pause menu only.
OpenKey = F7

# Add a TRADE entry to the pause menu (Esc).
ShowInPauseMenu = true
MenuLabel = TRADE

# How close (in metres) players must be to trade. 0 = anywhere in the world.
MaxDistance = 15

# Seconds a trade request stays open.
RequestSeconds = 30

# Seconds to wait for the host to carry out a confirmed trade.
HostAnswerSeconds = 12

# Seconds on-screen notices stay up.
MessageSeconds = 4
# Seconds a world chat line stays in the chat feed (bottom left; 10-60).
ChatFeedSeconds = 20

# --- Protection ---------------------------------------------------------------
# These run on whoever hosts the world (a player host, or a dedicated server with UE4SS).

# Only the player who dropped an item can pick it up.
OwnerOnlyPickup = true
# Only the player who died can open or take from their gravestone
OwnerOnlyGravestones = true

# Items dropped by players disappear after this many hours. 0 = never.
# (Counted on the world clock, so it pauses while the world is not running.)
DroppedItemHours = 24

# Totems and chests belong to whoever placed them. Owners choose who may build in their
# totem's area and who may open their chests with the Access window (this key, next to the
# chest or inside the totem's area).
# Permanent, World-bound land. F8/F10 list zones and your totems; expand the selected area.
# Retires template packing, duplication and cross-World building migration.
FixedPlots = true
ReplaceTotemBlock = true
AccessKey = F8

# Every player can place Build Protection Totems (normally only the host can), up to
# TotemsPerRegion per map region each (0 = no limit). MaxTotems is the limit for the whole
# world (the game's own is 8).
AnyoneCanPlaceTotem = true
TotemsPerRegion = 1
MaxTotems = 200

# Totem area radius in metres (the game's own is 21). On the Together Worlds the hub's tier table
# decides (its tier 0 is 21 m); this is the radius on worlds without the hub.
TotemRadius = 21

# Together Worlds: a totem's owner can buy a bigger area (F8 at the totem, UPGRADE AREA) with GP
# and vault cores. Tiers: radius/height above/height below (metres, 0 = no limit)/GP/vault cores,
# tier 0 first. The hub's table (rsdw-hub admin tiers) wins; this one is used until it arrives.
TotemUpgrades = true
TotemTiers = 21/0/0/0/0;28/0/0/25000/2;35/0/0/100000/4;42/0/0/300000/8
# The item an upgrade takes (its short name) and places an upgraded area may not reach
# ("x,y,radius m;..."; Lodestones and dungeon entrances are always kept clear).
TotemCoreItem = Resources_VaultCore

# Recall to an owned, standing physical totem on this World from the Builds screen.
# One Vault Core from your bag; interrupted by movement, observed damage or actions.
# Save preparation can take longer than the cast. Refunds go to your personal bank.
Recall = true
RecallSeconds = 3
RecallMoveCm = 75
RecallPaceSeconds = 2

# Live ops: the hub's typed admin channel into a running World (docs/RCON.md). Dedicated, hub-connected
# Worlds only; a client build does not load the module at all. Not a console: the only operations are
# `admin tp` and `admin grave` from the hub's admin CLI, and every one is audited on the hub.
AdminOps = true
AdminOpMaxMove = 20000
AdminOpGraveRegistry = false
# A gravestone the engine spawned inside the ground (its "SpawnActor failed to find teleport spot"
# warning) is moved to the nearest spot a player can stand in, so its owner can always reach it.
# OFF by default: it acts on its own, and it has not yet been watched moving a real gravestone.
# The operator's `admin grave` does the same move by hand, with the result read back.
GraveRescue = false
GraveRescueMax = 16

TotemBlockedSpots =

# Players without this mod can join but only walk around: no chests, pickups, stations or
# building until they install it and rejoin. They get a message saying so.
RequireMod = true

# Inside a totem's area, crafting and processing stations (fires, furnaces, workbenches...) and
# farm plots can only be used by the area's owner and the players on its building or chest list,
# so nobody else can take what's in them or what they make.
ProtectStations = true

# Inside a totem's area, the game's item magnet never flies an item (station output, loot, drops)
# to a player who may not pick it up: its magnet is switched off while such a player is within
# MagnetGuardCm (and their own magnet while they are near the area). They get "This belongs to
# <owner>'s base." if they press E.
MagnetGuard = true
MagnetGuardCm = 2500

# What world-grown trees (not planted ones), their logs and rocks drop stays first come, first served
# inside totem areas too: the server marks the items created right after such a source breaks (station
# output, crops, refunds and loot stay the area's). NaturalDropCm: how far such an item may lie from the
# spot where its source broke.
NaturalResourcesPublic = true
NaturalDropCm = 800

# Farm plots (every tier) must lie wholly inside an area their placer may build in and stay out of other
# players' areas: a circle of PlotFootprintCm around the plot. PlotMatchCm: how far a placed plot
# may settle from its placement request and still be checked as that request's plot.
PlotFootprintCm = 170
PlotMatchCm = 300

# --- Together (the official Worlds only) ----------------------------------------
# Players from the other Worlds, world chat, GP and the auction house.
# Show players from other Worlds around you.
ShowOthers = true
# Draw players from other Worlds as full game characters (animations, held items, armour).
# false: lighter stand-ins (use on slow PCs).
RealCharacterGhosts = true
# Name plates: only the nearest NamePlates players within NamePlateRange metres show their
# name (a crowd of 50 is otherwise a wall of names). NamePlates = 0 shows all.
NamePlates = 12
NamePlateRange = 25
# Name plates are drawn in the world at this size (the game's own 1.0 is taller than a character a few metres away)
NamePlateScale = 0.4
# Opens the auction house (also /ah in chat).
AuctionKey = F9
# Players can't build new Lodestones: the Together Worlds already have them placed. The server
# removes (and refunds) any that get built anyway; the build menu hides them.
NoNewLodestones = true
# Players per World on the Together Worlds (the game's own cap is 6, with 8 player colours).
# Raises the session cap and adds player colours. Also set MaxPlayers in the server's
# Saved/Config/WindowsServer/Game.ini (see server/Game.ini). 0 = leave the game's limits.
MaxPlayers = 50
# Player character network updates per second on the Together Worlds (the game's own is 100,
# limited to 30 by the server tick). 15 roughly halves the bandwidth of a crowd; the game
# smooths movement between updates. 0 = the game's own.
PlayerNetRate = 15
# Chat commands: /w message (world), /l message (local), /mute name, /unmute name,
# /report name - reason, /hide or /show (whether other Worlds see you), /anon or /named, /gp, /ah
# Legacy engine kept for saved operation recovery. FixedPlots retires new portable builds.
# Your Land opens with BaseKey (or /land and /base in chat).
PortableBases = true
BaseKey = F10
# Building pieces packed or rebuilt per server tick (10 ticks a second). Lower = smoother, slower.
BasePiecesPerTick = 6
# While a pack or build runs, the World also works on it about every server frame: pieces and ms per step.
BaseBurstPieces = 20
BaseBurstMs = 16
# ... and ms of ground traces per step while a build or its ground check runs.
FitBurstMs = 8
# A rebuilt piece counts as built once it stood this long (s) after its build's last piece went up (the game
# drops an unsupported piece within ~0.17 s of a change). A higher layer goes up once the lower one is in the
# world plus BaseLayerGapSeconds (2.5 = the old layer-by-layer pace).
BaseSettleSeconds = 0.35
BaseLayerGapSeconds = 0
# PACK UP requests per player at most this often (s).
BasePackRequestSeconds = 1
# A build waits this many seconds at most for players to step out of where its pieces go, then it isn't started
# (it stays packed). PICK UP TOTEM cancels the wait.
BaseWaitSeconds = 300
# Parties: find players in every Together World by name, invite them, party chat (/p message) and a party HUD.
# Accepting an invite to a party on another World takes you there (your build can come along when its plot is
# free there). The party window opens with this key or /party in chat; /inv name invites.
Parties = true
PartyKey = F6
# How joining another World travels: menu = leave to the main menu, then join (the game's own path; reliable),
# open = join straight from the world (faster; hung some clients in tests).
PartyTravel = menu
# The party HUD: your party members and the dungeon run timer. false hides it.
PartyHud = true
# The party HUD's size in percent (70-150) and where it sits: moved right/down by PartyHudX/PartyHudY design pixels
# (negative = left/up).
PartyHudScale = 100
PartyHudX = 0
PartyHudY = 0
# Dungeons are held for the first party (or solo player) inside: others are kept out until it's free again.
# Each Together World has its own copy of every dungeon; the party window lists which copies are free.
DungeonLocks = true
# A dungeon nobody is in resets when the next party enters, if it has been empty this many minutes (the same party coming
# back sooner finds it as they left it): levers and doors, emptied chests (fresh loot), killed monsters and the miniboss.
DungeonReset = true
DungeonResetMinutes = 5
# Each character loots a dungeon's chests once per lockout window (set on the hub: serve -lootlockout, default 24h),
# in every Together World; inside the window that dungeon's chests and monster drops stay closed to them.
LootLockout = true
# A party's dungeon run is timed from taking the hold to the final chest (or the boss): HUD line + record on the hub.
DungeonRuns = true
# A dungeon run has a hard time limit (minutes; 0 = none). Party members inside see "elapsed / limit" and get warnings
# at 5 and 1 minute(s) left; at the limit everyone of the party still inside is moved to the entrance and the dungeon is
# free for other parties at once (recorded on the hub as "timed out"). Leaving and coming back doesn't restart the
# clock (only the dungeon's reset when empty does). After a timeout that party can't take the same dungeon on this
# World again for DungeonReentryMinutes (other Worlds' copies are fine).
DungeonTimeLimitMinutes = 20
DungeonReentryMinutes = 5
# DEV/TEST ONLY: lets the server console put simulated players (tests/sim.lua) into a real player's party (the hub
# must run with -devbots too). Keep false on real servers.
DevBots = false
# The bank: one bank per character, the same in every Together World. Mark one of your chests as a bank chest of a
# category (stand at it and press BankKey, or type /bank): opening it then shows that part of your bank, only for you.
# A bank chest holds nothing itself. Packing a base puts its chests' contents into your bank.
Bank = true
# Next to one of your chests: make it a bank chest of a category. Anywhere else: everything in your bank (read-only).
BankKey = F4
# Server: bank chest owners may share a chest (F8 or SHARING at the chest) with players they trust: DEPOSIT (they put
# their own items into the owner's bank there) or FULL (they may also take out there). The hub keeps and enforces the
# lists (serve -banktrust sets which levels exist). false hides it on this server.
BankTrust = true
# Server: bank changes count once the player's character save (on their PC) is confirmed: character. "world" commits
# on world saves instead (weaker: a client crash can roll an inventory back after the bank counted it).
BankCommit = character
# Server: the Result of the game's character save that means "saved" (measured live: 1).
BankSaveOk = 1
# Server: a stamp in the character file. off (this game build has no way for the server to write one): the bank uses
# the item ids saved in the character instead (see docs/BANK.md). json is for a future build that allows it.
BankStamp = off
# Server: items with gameplay tags (upgrades) stay out of the bank until they are proven to restore exactly.
BankTaggedItems = false
# Server: tools, weapons and armour in the bank. The item held in hand when a character file was saved gets a new id
# when it loads, so a restored older file can bring a banked one back without being caught; false closes that.
BankGearItems = true
# Bank presets (docs/PRESETS.md): up to 20 saved loadouts per character (bag, hotbar, equipment), on every Together
# World. Save, edit and share them anywhere; they load only at a personal chest, with the bank's own rules.
Presets = true
# Craft from the bank (docs/CRAFT-FROM-BANK.md): crafting at a crafting station takes the ingredients you are missing
# from your own bank, through your bank chest of each item's category (or a personal chest) near the station. Never at
# processing stations (furnace, campfire, loom, tannery...).
CraftFromBank = true
# Client: click a recipe you're short of twice (a double-click, or a second click within 4 s) to take one craft's worth
# from your bank; after a craft the bank supplied, the next craft's worth follows by itself. (The game greys CRAFT out
# while ingredients are missing, so the recipe click is the moment; one click only arms it, so browsing takes nothing.)
CraftPullOnSelect = true
# Client: once the ingredients are in your bag, craft again by itself.
CraftPullAuto = true
# Server: how far (cm) from the station a bank chest may stand; 0 = the game's linked-storage radius (else 3000).
CraftBankRadius = 0
# Server: read that radius from the game (UInventorySettings.LinkedStorageRadius, once after the World starts); false = 3000.
CraftBankReadRadius = false
# Client: 1-9 load presets 1-9 while the bank window is open at a personal chest (the game keeps the keys otherwise).
PresetHotkeys = true
# Client: the quick-load bar under the bank window at a personal chest.
PresetQuickBar = true
# Server: after a load, equip each item from the server (server, verified live) or leave it in the bag (bag).
PresetEquip = server
# Server: after a load, put hotbar items in their hotbar slots (server) or leave them in the bag (bag).
PresetHotbar = server
# Client: sound asset paths for a load starting / finished / a card picked (empty = no sound).
PresetSoundLoad =
PresetSoundDone =
PresetSoundPick =
# The Together menu: one dock at the bottom of the screen with every feature (trade, party, Worlds, bank, auction
# house, bases, access, Codex, settings); each opens in a window you can move, resize and pin. Pick another key if
# another mod already uses F1. TogetherMenu = false keeps the classic single window (the keys below still work).
# Together dock, windows and pinned views: 70–125 percent. Change with the slider in Settings > HUD.
TogetherUiScale = 85
DockKey = F1
TogetherMenu = true
# The Together Codex: every feature, its keys, commands and limits (also in the Together menu, /help or /codex in chat
# on the Together Worlds). Empty = no key of its own. An older config with CodexKey = F1 keeps it: F1 opens the menu
# while DockKey is F1, and the Codex key acts again if you give the menu another key.
CodexKey = 
# The Together settings window: keys and display options, saved per PC (also Esc > TOGETHER SETTINGS and the Codex).
SettingsKey = F3
# Add the TOGETHER SETTINGS entry to the pause menu (Esc).
SettingsInPauseMenu = true
# The welcome pages on a character's first join of a Together World, and its first-steps checklist (stored on this
# PC in the mod's data folder). The Codex reopens them (WELCOME TOUR).
Welcome = true
# The realm is open: "Join Together MMO" on the main menu joins it, and the Codex shows its public join address
# (PLAY > ONLINE > DIRECT, 185.28.22.59 = play.rsence.com). closed = both say "opening soon".
RealmJoin = open
# "Join Together MMO" in the game's main menu, under PLAY: pick a character, choose a World, and you are in the realm.
# The installed Together version stands under it, with "update available" once a World told you of a newer one.
# false = no entry.
JoinButton = true
# Where it goes: menu (an entry under PLAY) or card (a card beside the menu; used anyway if the entry can't be added).
JoinButtonPlace = menu
# The World picker's rows until this PC has been on a Together World (then the list the Worlds send is used, with
# their players and capacity). Title=address pairs; only the realm gateway's addresses (play.rsence.com /
# 185.28.22.59, ports 7777-7799) are joined.
RealmWorlds = World 1=185.28.22.59:7781;World 2=185.28.22.59:7782

# --- Template fit (Together) ---------------------------------------------------------
# A Build Protection Totem placed where its region's template should be built checks that the template fits the
# ground there: its preview turns red (with the reason on the HUD line) when it doesn't, the server refuses such a
# totem, and when it builds, foundations, farm plots and pieces outside the building are set to the ground.
# Advanced: these are tuned from live measurements (docs/BASES.md "Live tuning"). Heights in cm.
# a region template must fit the ground at the totem (foundations, farm plots, props); false = only "no other totem, no buildings in the way".
FitCheck = true
# while placing a totem that builds a template: draw the whole template around it (client)
GhostPreview = true
# a farm plot / prop outside the building on ground too uneven for it stays packed (named, counted) instead of refusing the
# whole build; more than half of the build staying packed is still refused
FitLeaveLoosePacked = true
# terrain adaptation when one shift of the whole building can't fit (verified live 2026-10-17): a level of the building may
# sit on its own ground, buried bottom layers of foundation stacks stay packed with the template (named, counted)
FitAdapt = true
# with FitAdapt: how far the building may move up/down (cm), and support foundations under one foundation at most
FitAdaptMaxShiftCm = 450
FitSupportMaxLayers = 0
# with FitAdapt: a level of the building set on its own ground may move up/down this far (cm)
FitSectionMaxShiftCm = 800
# forced builds: when a template doesn't fit the ground, its owner may build it anyway, by choice (templates menu):
# snap = every foundation set on its own ground (what stands on it moves with it), exact = exactly as the template is
# (in the ground / floating allowed). Only the ground rules are set aside: area, claims, pieces in the way, farm plot
# permissions and everything else still apply. Offered only while this World runs without building stability.
FitForceSnap = true
FitForceExact = true
# the ground may stand this many cm above a foundation's top (negative: the top must clear the highest ground by that
# much). Live 2026-10-10: the server drops a foundation whose top is below the ground at its centre (-5 cm refused), so
# the model keeps every top 5 cm over the highest of its 9 samples.
FitFoundationAboveTopCm = -5
# a foundation's depth under its top when the game's own bounds aren't loaded.
FitFoundationDepthCm = 300
# a foundation's bottom must reach this many cm into the lowest ground under it.
# (live: a large foundation stood with its top up to 290 cm over the ground, not 310: its bottom must reach the ground)
FitFoundationMinEmbedCm = 15
# the whole building may be raised or lowered this many cm (one offset; walls stay on their foundations).
FitMaxShiftCm = 150
# a farm plot or ground prop may end up at most this many cm from its template height (plus the building's shift).
FitPieceMaxShiftCm = 150
# a farm plot is refused when the ground under it varies more than this (cm).
FarmPlotMaxSlopeCm = 16
# how far a farm plot may float above / sink below any point of the ground under it (cm).
# (live: the server takes a farm plot whose top is 0..95 cm over the ground at its centre; it rests 35 cm up)
FarmPlotMaxOffsetCm = 33
# a farm plot's origin above the ground (cm); the game's own PlacementZOffset wins when loaded.
FarmPlotZOffsetCm = 35
# the same for chests, stations and other pieces standing on the ground outside the building (cm).
# (live: a chest is dropped when its base floats over the ground at its centre; on a slope the band's middle can, so
# keep chests to nearly level ground)
FitPropMaxSlopeCm = 8
# ... how far they may float / sink (cm).
FitPropMaxOffsetCm = 40
# ... their origin above the ground (cm).
FitPropZOffsetCm = 0
# ground samples this far inside a footprint's edge (cm).
FitSampleInsetCm = 15
# traces per footprint: 5 (centre + corners) or 9 (+ edge midpoints).
FitSamples = 9
# height changes smaller than this count as "fits as it is" (cm).
FitSnapEpsCm = 2
# use the game's own piece sizes and placement offsets when loaded (exact sizes; depth and surface limits only tighten the ones above).
FitLiveBounds = true
# pieces whose names contain one of these are foundations.
FitFoundationNames = Foundation
# ... farm plots.
FitFarmPlotNames = FarmPlot
# ... structure riding on the foundations (never checked against the ground).
FitStructureNames = Wall,Floor,Roof,Stair,Door,Window,Pillar,Beam,Ceiling,Frame,Ladder,Railing,Column,Arch
# footprint sizes by name (part=WIDTHxLENGTH[xDEPTH][t] cm, first match wins; t = triangle).
FitShapes = Foundation_Large_Triangle=300x300x300t,Foundation_Medium_Triangle=150x150x150t,Foundation_Large=300x300x300,Foundation_Medium=150x150x150,Foundation=300x300x300,Floor_Large=300x300,Floor_Medium=150x150,Floor=300x300,Stair=300x300,Wall=300x40,Roof=300x300,FarmPlot=240x240,Chest=120x80,*=100x100
# a build whose ground isn't loaded yet waits this long for it, then is refused (nothing built).
FitUnknownWaitSeconds = 60
# a build that doesn't fit any more is checked again this many times (2 s apart) before it is refused.
FitBeginRetries = 2
# line traces per server tick while a build checks its ground.
FitServerTracesPerTick = 150
# at most this many ms of fit traces per server tick (all checks and builds together).
FitServerMsPerTick = 3
# BUILD IT / MOVE / footprint requests from one player at most this often; one fit check at a time per player.
FitRequestCooldownSeconds = 2
# fit checks per second while you place a totem.
FitPreviewHz = 4
# ms of ground sampling one check may take on the client (a big template is checked over several).
FitClientMs = 1.5
# line traces per check at most (the rest on the next check).
FitClientTraces = 48
# how the game's own totem preview turns red when the template doesn't fit: map, mpc or off.
FitPreviewLever = map
# the placement state whose red the preview borrows (9 = inside a protected area).
FitPreviewRedState = 9
# while placing a totem, draw its area ring and the template's footprint (green/red) on the ground (/base survey toggles).
FitOverlay = true
# posts around the area ring.
FitOverlayPosts = 36
# markers on screen at most.
FitOverlayMaxMarkers = 96
# the overlay hides in input modes containing one of these.
FitOverlayHideModes = Menu,FullScreen,Inventory,Map
# Realm characters (docs/CHARACTERS.md): on the Together Worlds every joining character is checked against the hub's
# record of it (what our Worlds last saw); items it brought from elsewhere are removed, items it lost are given back.
# Public skill/quest records on official Worlds. /hide or /anon also hides your website profile.
PublicHiscores = true
Characters = true
# Server: until the check is done the player can't touch any inventory (no moving, dropping, trading, using).
CharsGate = true
# Server: when the hub can't be reached at a join: wait (the player stays gated) or allow (plays unchecked).
CharsHubDown = wait
# Server: seconds between routine checkpoints of each player's character; a checkpoint this many seconds after a change.
CharsScanEvery = 30
CharsActivityScan = 1
# Server: character scans per 100 ms tick, at most.
CharsScansPerTick = 2
# Server: seconds a pickup, chest, craft or other source explains an item a player got (the provenance log).
CharsContextWindow = 8
# Server: set skill XP back to the realm record (live 2026-10-10, probe P5: a server XP write reaches the saved file
# and survives a rejoin).
CharsXPRestore = true
# Server: a last checkpoint when a player exits cleanly.
CharsLeaveScan = true
# Server: a refused character is sent back to the menu (menu), disconnected (disconnect) or just stays gated (none).
# (live, probe P2: "menu" drops the player to the title screen with no text; "disconnect" shows "Failed to login, since
# you were kicked.") 2.1.0: the reason first stands on screen in the world (CharsRefuseShowSeconds), then the menu.
NativeChatMode = self
NativeClientMessage = true
MinClientVersion = 2.9.0
CharsKick = menu
CharsRefuseShowSeconds = 12
CharsRefuseShowLegacySeconds = 35
CharsRefuseWaitSeconds = 60
# Server: limits on numbers a client sends: bonus items per craft (-1 = as many as it crafts), farm yield multiplier.
CharsMaxCraftBonus = -1
CharsMaxYield = 3
# Server: where the platform account of a joining player is read from (who owns a realm character): displayname (no
# account id: the display name and the items decide), log (the server's own log: Login request / Join succeeded),
# netid (the engine's connection id). Live 2026-10-10 (probe P9): netid = "RedpointEOS:<EOS product user id>", the same
# id as the log's Login request userId and DedicatedServer.ini's KnownPlayerList, per platform account.
CharsAccount = netid
# Server: the server log for CharsAccount = log (empty = Saved/Logs/RSDragonwilds.log of this server).
CharsServerLog =

# Realm landmarks (docs/LANDMARKS.md): the base map's cells (generated from its manifest, docs/BASEWORLD.md) and protection zones
Landmarks = true               # official Worlds: the base map's cells and protection zones are kept in sync with the hub and protected here (landmarks.lua)
LandmarkPiecesPerTick = 6      # server: landmark pieces built/removed per 100 ms tick
LandmarkActorWaitSeconds = 60  # server: a map container the manager holds but whose actor hasn't loaded: waited for this long, then counted as standing (never built twice)
LandmarkBuildNearCm = 15000    # server: a landmark is built, changed and checked only while a living player who has loaded in is within this many cm of it (the game drops pieces built more than ~200 m from the player)
LandmarkSpillSettleSeconds = 1 # server: a map container an update takes away is emptied onto the ground, then taken down this many seconds later (its items are never swept up as the refund)
LandmarkAuditSeconds = 60      # server: how often a standing landmark's pieces are counted (the hub repairs missing ones)
LandmarkStrays = wait          # server: pieces with no totem inside a landmark's footprint: wait (an admin decides) or build (build anyway)
LandmarkLodestoneUnregisterFirst = false # server: LodestoneComponent:OnDestroyed() before a realm lodestone's deconstruct (probe 4: the deconstruct alone is clean)
LandmarkPlates = true          # client: a name plate over each nearby personal chest / realm landmark
LandmarkPlateRangeM = 80       # client: ... within this many metres
LandmarkBanner = true          # client: an arrival banner and toast when you reach a personal chest / realm landmark
LandmarkCompass = true         # client: a compass strip at the top with personal chests (your bank) ahead
LandmarkCompassRangeM = 2000   # client: ... within this many metres
LandmarkMapPins = false        # server: personal chests / realm landmarks as pins on each player's game map (probe 5; off until live step 10 checks a session pin + a saved pin)
LandmarkNorthYaw = -90         # client: the world direction (yaw) that is north on the game's map, for "north-east" in the nearest-bank line (live check)
BankDepositEquipment = false   # server: DEPOSIT EQUIPMENT at personal chests (worn gear; off until the loadout probe)

# The base map (docs/BASEWORLD.md): official Worlds seeded from "Together-Map". These rules apply once a World runs the
# base map (the hub pushes its cells); before that a World keeps the 2.0.3 rules.
BaseWorld = true                # server: camp pieces, the map's world items, overlap packs, /unstuck (baseworld.lua)
BuildOnlyInAreas = true         # server (official Worlds): players build only inside their own or a trusted totem area; camp pieces anywhere else
CampPieces = bedroll=2/24;campfire=2/6 # server: piece name fragment = most per player outside areas / hours it lasts (live B8: BUILDPIECE_Interior_BedRoll #650, BUILDPIECE_Campfire #26; the game has no tent)
PublicChestsOutside = true      # server: a chest outside every totem area opens for everyone, as in the game (inside areas the access lists apply)
CategoryChestsOwnAreaOnly = true # server: a category (bank) chest works only inside its owner's own totem area
BaseMapWaitMinutes = 15             # server: a World seeded from the map waits this long for the hub's cells (no local list), then allows building again (said loudly)
BaseMapFailOpen = false             # server: false (official Worlds): a seeded World without the map's cells keeps refusing every change but own-area building, for good (ALERT every 5 min); true: building opens again after BaseMapWaitMinutes, the map unprotected
BaseItemReachCm = 1000              # server: a map item that vanished with a player this close was taken (else it streamed out)
BaseItemSuspectDays = 7             # server: a review flag (within reach when a map item was taken; nothing is removed) is dropped after this many days
BaseItemRetireMax = 0.1             # server: a map update retiring more than this share of the map's items is refused as a mismatch (nothing removed)
CampMapGapCm = 500                  # server: camp pieces keep this many cm from any piece of the base map (doorways, bridges, inside its houses)
PersonalStorageButton = false       # server: PERSONAL CHEST in the bank window opens the player's own storage (off until live probe B1 confirms the server-side open)
PersonalStorageOpen = spell         # server: how PERSONAL CHEST opens the player's own 20-slot storage: spell (no chest, like the game's ability) or manual (at the chest; LIVE PROBE B1b)
NoNewPersonalChests = true      # server (official Worlds): players can't place personal chests (the base map has them; each opens the bank)
PersonalChestPieces = personalchest,personal_chest,personalstorage # name fragments of the personal chest piece/class (LIVE PROBE B1)
PersonalChestZone = 1500        # server: cm around a personal chest nobody builds in
RealmBuffer = 1000              # server: cm a player's totem area keeps from the base map's protected areas, personal chests and protection zones
BaselineAuditSeconds = 300      # server: how often the base map's cells near a player are counted (missing pieces are put back by the hub)
BaselineOverlapEvery = 120      # server: seconds between reports of one player base that reaches the base map's structures (the hub packs it)
BaseItemMissingSeconds = 30     # server: a base-map world item missing this long (with a player near) is put back
BaseItemSeenCm = 2500           # server: ... a player within this many cm of it (live B11: the map\'s items exist only while a player is near)
BaseItemPutBack = true          # server: put missing base-map world items back (never one seen taken)
BaseItemPutBacksPerDay = 2      # server: ... at most this many times a day per item (more: an admin alert, nothing created)
DisplayPieces = display,rack,mannequin,mount,plaque # server (capture): name fragments of display pieces (locked)
BaseMapName = Together-Map      # server (capture): the base map's name in the manifest
Unstuck = true                  # server: /unstuck (stand still, then to the starting area, walking only for a while)
UnstuckSpot = 4913,189059,-3497 # server: "x,y,z" /unstuck takes you to (live B9: the church spawn's PlayerStarts; its Lodestone 5065,189026,-3633)
UnstuckSeconds = 10             # server: seconds to stand still
UnstuckMoveCm = 75              # server: moving more than this cancels
UnstuckCooldownMin = 10         # server: minutes between uses (kept across restarts)
UnstuckWalkMin = 2              # server: minutes of walking only afterwards
UnstuckWalkSpeed = 300          # server: the walk speed held meanwhile (cm/s; LIVE PROBE B9)
CapturePiecesPerTick = 500      # server: PlayerTrading.baseworld.capture() writes this many pieces per tick (it runs over ticks)
CaptureItemsPerTick = 40        # server: ... and reads this many world items per tick
UnstuckFightCm = 1500           # server: /unstuck: damage counts as fighting only with a creature in combat near or another player this close (thirst/hunger don't)
NativeResetBlock = true         # server: the game's own Esc > Hold to Reset Position is undone on Worlds with /unstuck (an instant teleport would skip its 10 s, cooldown and walk-only rules)
LiveMapFeed = true              # server: write building changes to data/mapfeed.txt for the realm map's live overlay (no player data; bounded 2 x 4 MB)
Adventurers = false             # server: AI Adventurers living on this World (docs/ADVENTURERS.md); off until the owner turns them on
AdventurerCount = 4             # server: how many (0-50 per World)
AdventurerNames = Alex,Sarah,Anders,Woogie   # server: shown as "Adventurer <Name>"; more than listed come from a pool
AdventurerSpawn =               # server: x,y,z where they first appear (empty: the World's PlayerStart)
AdventurerChat = true           # server: they talk through the brain service (brain.py --forward on the World host); false: emotes only
AdventurerMap = false           # client: the World's AI Adventurers on the full-screen map (M); the map's ADVENTURERS button switches it
UnifiedChat = true              # client: one chat at the bottom of the screen: the game's chat and Together's chat in tabs; false = the game's chat box and the old feed
ChatTranslate = false           # client: opt-in automatic translation (Together Settings > More); originals remain available
ChatLanguage = en               # client: preferred reading language, selected in Together Settings > More
ChatScale = 100                 # client: the unified chat's size in % (80, 90, 100, 115, 130, 150)
ChatLines = 8                   # client: message rows the unified chat shows (6, 8, 10, 12)
ChatTimestamps = false          # client: HH:MM before each chat line
ChatFilters =                   # client: the chat tabs' On / Filtered / Off states (the chat writes this; empty = all On)
ChatMuted =                     # client: names you muted in the chat (the chat writes this)
