Implemented (subcommands have their own status) · Source comparison: October 6, 2026.
Reviewed October 6, 2026. This page covers the root, registered subcommands and documented internal actions.
Registration permissions
Registration
Handler
Required status (local DB, Oct 6)
Implementation
/modify
1000
200
Implemented
/modify alignment
1013
200
Implemented
/modify character
1001
100
Implemented
/modify faction
1002
200
Implemented
/modify quest
1005
100
Implemented
/modify skill
1006
100
Implemented
/modify spawn
1007
100
Implemented
Show administrative modification help.
Implementation: Implemented.
Syntax
/modify
Arguments
No manual arguments are used by this operation.
Behavior and restrictions
The active handler performs the operation described above after the registration permission check.
Permissions
Local database snapshot, October 6, 2026: /modify requires status 200 (handler 1000). Other worlds may configure different values.
The dispatcher checks the resolved registration status before invoking the handler. In-handler guild, group, ownership, client-version and target checks still apply.
Examples
The syntax forms above are the source-based invocation examples. Replace identifiers with values valid for your world; client callback fields are supplied by the game client.
No upstream Markdown file exists for this registration in the retrieved revision.
/modify alignment
Inspect or persist player alignment.
Implementation: Implemented.
Syntax
/modify alignment get [self|target|player]
/modify alignment set <good|evil|-128..127> [self|target|player]
Arguments
Position is zero-based in sep, after a registered database subcommand has been removed. Internal action tokens remain at position 0. Angle brackets are required; square brackets are optional. Alternative forms may change field meanings.
Position
Argument
Accepted value / type
Meaning
0
action
text
get or set.
1
value_or_target
text or signed integer
set: good=1, evil=0, or a custom signed 8-bit value. get: optional player selector.
2
target
text
set: optional self, target or player name.
Behavior and restrictions
Defaults to the selected player, or self when there is no target. Named players must be online and ready in the current zone; selecting a non-player fails.
set marks the character sheet changed and immediately saves the recipient. Invalid values and extra arguments are rejected.
Current argument/client/target checks (exact source excerpts; branch-dependent):
if (!target || !target->IsPlayer()) {
Handler failure/help feedback (sent to the player or logged; % fields are formatted at runtime):
Defaults to selected player, or self with no target; named players must be in this zone.
Alignment must be good (1), evil (0), or an integer from -128 to 127.
The player must be online in your current zone.
Permissions
Local database snapshot, October 6, 2026: /modify alignment requires status 200 (handler 1013). Other worlds may configure different values.
The dispatcher checks the resolved registration status before invoking the handler. In-handler guild, group, ownership, client-version and target checks still apply.
Examples
/modify alignment get self
Source-checked forms; not executed against a live world.
No upstream Markdown file exists for this registration in the retrieved revision.
/modify character
Change currency, tradeskill details or gender on a selected player.
Implementation: Implemented.
Syntax
/modify character <add|remove> <copper|silver|gold|plat> <amount>
/modify character set <tslevel|tsclass|gender> <value>
Arguments
Position is zero-based in sep, after a registered database subcommand has been removed. Internal action tokens remain at position 0. Angle brackets are required; square brackets are optional. Alternative forms may change field meanings.
Position
Argument
Accepted value / type
Meaning
0
action
text
add/remove/set.
1
field
text
Coin denomination or tslevel/tsclass/gender.
2
value
integer
Amount or new value.
Behavior and restrictions
Requires a player target. The tradeskill level path enforces the source level bounds.
Current argument/client/target checks (exact source excerpts; branch-dependent):
if (player->HasTarget() && player->GetTarget()->IsPlayer()) {
Handler failure/help feedback (sent to the player or logged; % fields are formatted at runtime):
Level must be between 1 - 255
Permissions
Local database snapshot, October 6, 2026: /modify character requires status 100 (handler 1001). Other worlds may configure different values.
The dispatcher checks the resolved registration status before invoking the handler. In-handler guild, group, ownership, client-version and target checks still apply.
Examples
The syntax forms above are the source-based invocation examples. Replace identifiers with values valid for your world; client callback fields are supplied by the game client.
Position is zero-based in sep, after a registered database subcommand has been removed. Internal action tokens remain at position 0. Angle brackets are required; square brackets are optional. Alternative forms may change field meanings.
Position
Argument
Accepted value / type
Meaning
0
action
text
search/get/reset/set/add/remove.
1
selector
integer or text
Faction ID or search field/text.
2
value
integer or text
Standing amount, search value or target; form dependent.
3
target_or_page
integer or text
Optional player selector or search page.
Behavior and restrictions
Standing is limited to -50000..50000. Set accepts that range; add/remove require 1..2147483647 points. Results are clamped. Faction IDs 0..10 have fixed con and cannot be changed.
Targets default to the selected player, or self with no target. Explicit target requires a player; named recipients must be online and ready in this zone. Multiword search text must be quoted.
Search returns 10 results per page, default page 1; invalid/out-of-range pages and unknown IDs are reported. Changes send a faction update and immediately SavePlayerFactions. Extra arguments are rejected.
Persistence evidence in the active path: database.SavePlayerFactions. Each call is subject to its surrounding validation; not every branch saves.
Current argument/client/target checks (exact source excerpts; branch-dependent):
if (EQ2Packet* packet = player->GetFactions()->FactionUpdate(recipient->GetVersion()))
if (!target || !target->IsPlayer()) {
Handler failure/help feedback (sent to the player or logged; % fields are formatted at runtime):
Standing: -50000 to 50000. Add/remove: positive points. Defaults to selected player, or self with no target; named players must be in this zone.
The player must be online in your current zone.
Permissions
Local database snapshot, October 6, 2026: /modify faction requires status 200 (handler 1002). Other worlds may configure different values.
The dispatcher checks the resolved registration status before invoking the handler. In-handler guild, group, ownership, client-version and target checks still apply.
Examples
/modify faction search all
/modify faction get 11 self
Source-checked forms; not executed against a live world.
Position is zero-based in sep, after a registered database subcommand has been removed. Internal action tokens remain at position 0. Angle brackets are required; square brackets are optional. Alternative forms may change field meanings.
Position
Argument
Accepted value / type
Meaning
0
action
text
list/completed/remove/advance.
1
quest_id
integer
Required for remove/advance; must be positive.
2
step
integer
Required and positive for advance.
Behavior and restrictions
Requires a selected player and an existing active quest for advance.
Current argument/client/target checks (exact source excerpts; branch-dependent):
if (player->HasTarget() && player->GetTarget()->IsPlayer()) {
if (sep && sep->arg[1] && sep->IsNumber(1))
if (sep && sep->arg[2] && sep->IsNumber(1))
if (player && player->IsPlayer() && quest_id > 0 && step > 0 && (player->player_quests.count(quest_id) > 0))
Handler failure/help feedback (sent to the player or logged; % fields are formatted at runtime):
Quest ID and Step Number must be greater than 0!
Step Number must be a number!
Quest ID must be a number!
Permissions
Local database snapshot, October 6, 2026: /modify quest requires status 100 (handler 1005). Other worlds may configure different values.
The dispatcher checks the resolved registration status before invoking the handler. In-handler guild, group, ownership, client-version and target checks still apply.
Examples
The syntax forms above are the source-based invocation examples. Replace identifiers with values valid for your world; client callback fields are supplied by the game client.
No upstream Markdown file exists for this registration in the retrieved revision.
/modify skill
Add, remove or set a skill for a selected player or self.
Implementation: Implemented.
Syntax
/modify skill <add|remove> <skill_name>
/modify skill set <skill_name> <value>
Arguments
Position is zero-based in sep, after a registered database subcommand has been removed. Internal action tokens remain at position 0. Angle brackets are required; square brackets are optional. Alternative forms may change field meanings.
Position
Argument
Accepted value / type
Meaning
0
action
text
add/remove/set.
1
skill_name
text
Remaining text for add/remove; quote a multiword name for set.
2
value
integer
Required for set.
Behavior and restrictions
The active handler performs the operation described above after the registration permission check.
Current argument/client/target checks (exact source excerpts; branch-dependent):
if (client->GetPlayer()->GetTarget() && client->GetPlayer()->GetTarget()->IsPlayer()) {
if (!sep->IsNumber(2)) {
Handler failure/help feedback (sent to the player or logged; % fields are formatted at runtime):
The last parameter must be a number.
Permissions
Local database snapshot, October 6, 2026: /modify skill requires status 100 (handler 1006). Other worlds may configure different values.
The dispatcher checks the resolved registration status before invoking the handler. In-handler guild, group, ownership, client-version and target checks still apply.
Examples
The syntax forms above are the source-based invocation examples. Replace identifiers with values valid for your world; client callback fields are supplied by the game client.
No upstream Markdown file exists for this registration in the retrieved revision.
/modify spawn
Move a database spawn to your current coordinates.
Implementation: Implemented.
Syntax
/modify spawn zoneto <spawn_id>
Arguments
Position is zero-based in sep, after a registered database subcommand has been removed. Internal action tokens remain at position 0. Angle brackets are required; square brackets are optional. Alternative forms may change field meanings.
Position
Argument
Accepted value / type
Meaning
0
action
text
Only zoneto is handled.
1
spawn_id
integer
Database spawn ID.
Behavior and restrictions
The active handler performs the operation described above after the registration permission check.
Persistence evidence in the active path: database.SaveSignZoneToCoords. Each call is subject to its surrounding validation; not every branch saves.
Current argument/client/target checks (exact source excerpts; branch-dependent):
if( sep->IsNumber(1) )
Permissions
Local database snapshot, October 6, 2026: /modify spawn requires status 100 (handler 1007). Other worlds may configure different values.
The dispatcher checks the resolved registration status before invoking the handler. In-handler guild, group, ownership, client-version and target checks still apply.
Examples
The syntax forms above are the source-based invocation examples. Replace identifiers with values valid for your world; client callback fields are supplied by the game client.
No upstream Markdown file exists for this registration in the retrieved revision.
Permissions are from a read-only snapshot of the configured local world database on October 6, 2026; deployed worlds may differ. Argument and behavior evidence comes from the reviewed WorldServer checkout. Examples were checked against source and were not executed in a live world.