BadSyntax.txt
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//Syntaxheader 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"blocksadmin,Admin123, andsuperadmin - Case-sensitive.
"Admin"does not blockadmin. 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)
- Character rename (new name)
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 strings - The filter does not normalize leet-speak, accents, or homoglyphs.
"admin"does not blockadm1n - Token storage is 32 bytes total, so the maximum usable token length is 31 bytes
Examples#
//Syntax
end
No names are filtered.
//Syntax
"admin"
"Admin"
"ADMIN"
"gm"
"GM"
"moderator"
"root"
end
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,0x27unconditionally - Edits not taking effect - file was changed but DataServer was not restarted