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.txtLoaded once at startup. Changes require a DataServer restart.
Format
//Syntax
"badword"
"reserved"
"admin"
endFirst line: optional comment. Any line beginning with
//is skipped by the parser, so the//Syntaxheader is a comment, not a required section markerMiddle 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"blocksadmin,Admin123, andsuperadminCase-sensitive.
"Admin"does not blockadmin. Add both variants to cover casesMatching 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:
0x20space0x22double quote"0x27apostrophe'
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"blocksshadow,paladin, and hundreds of legitimate names. Prefer specific stringsThe filter does not normalize leet-speak, accents, or homoglyphs.
"admin"does not blockadm1nToken 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,0x27unconditionallyEdits not taking effect - file was changed but DataServer was not restarted
Last updated