For the complete documentation index, see llms.txt. This page is also available as Markdown.

BadSyntax.txt

Forbidden substrings that block character name creation, name check, and rename

DataServer rejects any character name whose text contains one of the listed tokens as a substring. Used to filter profanity and reserved names. The list is loaded alongside AllowableIpList.txt at startup; see README.md for the full startup sequence and DataServer.ini for database and port settings.

File Location

DataServer/BadSyntax.txt

Loaded once at startup. Changes require a DataServer restart.

Format

//Syntax
"badword"
"reserved"
"admin"
end
  • First line: optional comment. Any line beginning with // is skipped by the parser, so the //Syntax header is a comment, not a required section marker

  • Middle lines: one quoted token per line. Each token is at most 31 characters (buffer is 32 bytes including null terminator); longer tokens are truncated on load

  • Last line: the literal token end

Rules:

  • Substring match, not whole-word. "admin" blocks admin, Admin123, and superadmin

  • Case-sensitive. "Admin" does not block admin. Add both variants to cover cases

  • Matching is done with a plain substring scan; no regex, no wildcards

  • Whitespace and blank lines between entries are ignored

  • Duplicates are kept; the list is a plain vector, not a set. Duplicates only cost a redundant comparison, they do not change behavior

Applied To

BadSyntax is evaluated for:

  • Character creation

  • Character name availability check (used by the rename flow when DATASERVER_UPDATE >= 401)

  • Character rename (new name), when DATASERVER_UPDATE >= 401

Not applied to:

  • Guild creation or guild rename - these only run the space-and-quote check below, not the BadSyntax list

  • Existing names on login - the filter is never retroactive

Baseline Character Filter

Before BadSyntax runs, DataServer applies a hard-coded character filter to the submitted name. The name is rejected if any byte in the fixed-size name buffer is:

  • 0x20 space

  • 0x22 double quote "

  • 0x27 apostrophe '

This check runs regardless of BadSyntax.txt contents and cannot be disabled. Guild names go through the same filter, which is why quotes and spaces never reach the SQL layer.

Important Behavior

  • Empty or missing file results in no BadSyntax filtering; the baseline character filter still runs

  • The list is additive only; there is no allow-override. Remove the entry and restart to unban a token

  • Short tokens are dangerous. "ad" blocks shadow, paladin, and hundreds of legitimate names. Prefer specific strings

  • The filter does not normalize leet-speak, accents, or homoglyphs. "admin" does not block adm1n

  • Token storage is 32 bytes total, so the maximum usable token length is 31 bytes

Examples

No names are filtered.

Common Issues

  • Valid name rejected - a short token matches as substring somewhere inside it. Check the list for two- or three-letter entries

  • Banned word still accepted - case mismatch, or player used a leet-speak variant. Add each casing explicitly

  • Guild name with a bad word accepted - expected; guild creation does not consult BadSyntax. Filter guild names at the GameServer or add a command-level check

  • Name with a space or apostrophe rejected even on an empty list - the baseline character filter rejects 0x20, 0x22, 0x27 unconditionally

  • Edits not taking effect - file was changed but DataServer was not restarted

Last updated