Slash commands

/modify

Show administrative modification help.

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.

Source evidence

Dispatch: COMMAND_MODIFY (handler 1000).

  • WorldServer/Commands/Commands.cpp:6325 — COMMAND_MODIFY.
  • WorldServer/Commands/Commands.cpp:8355 — Command_Modify.

Reviewed local revision: 9efddf962ffee075d0db2059d3914c36b0acbdf3; working-tree file checksums identify the exact reviewed bytes. Reviewed dispatch/helper evidence · Reconciliation report.

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.

Source evidence

Dispatch: COMMAND_ALIGNMENT (handler 1013).

  • WorldServer/Commands/Commands.cpp:6330 — COMMAND_ALIGNMENT.
  • WorldServer/Commands/Commands.cpp:8797 — Command_Alignment.
  • WorldServer/Commands/Commands.cpp:8630 — GMPlayerArg.
  • WorldServer/Commands/Commands.cpp:8634 — ParseGMPlayerInteger.
  • WorldServer/Commands/Commands.cpp:8655 — ResolveGMPlayer.
  • WorldServer/Commands/Commands.cpp:8793 — GMAlignmentName.

Reviewed local revision: 9efddf962ffee075d0db2059d3914c36b0acbdf3; working-tree file checksums identify the exact reviewed bytes. Reviewed dispatch/helper evidence · Reconciliation report.

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.

Source evidence

Dispatch: COMMAND_MODIFY_CHARACTER (handler 1001).

  • WorldServer/Commands/Commands.cpp:6326 — COMMAND_MODIFY_CHARACTER.
  • WorldServer/Commands/Commands.cpp:8418 — Command_ModifyCharacter.

Reviewed local revision: 9efddf962ffee075d0db2059d3914c36b0acbdf3; working-tree file checksums identify the exact reviewed bytes. Reviewed dispatch/helper evidence · Reconciliation report.

No upstream Markdown file exists for this registration in the retrieved revision.

/modify faction

Search factions and inspect or persist player faction standing.

Implementation: Implemented.

Syntax

/modify faction search <text> [page]
/modify faction search <name|type|description|id> <value> [page]
/modify faction search all [page]
/modify faction <get|reset> <id> [self|target|player]
/modify faction <set|add|remove> <id> <amount> [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 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.

Source evidence

Dispatch: COMMAND_MODIFY_FACTION (handler 1002).

  • WorldServer/Commands/Commands.cpp:6329 — COMMAND_MODIFY_FACTION.
  • WorldServer/Commands/Commands.cpp:8688 — Command_ModifyFaction.
  • WorldServer/Commands/Commands.cpp:8630 — GMPlayerArg.
  • WorldServer/Commands/Commands.cpp:8634 — ParseGMPlayerInteger.
  • WorldServer/Commands/Commands.cpp:8680 — SendFactionCommandHelp.
  • WorldServer/Commands/Commands.cpp:8655 — ResolveGMPlayer.

Reviewed local revision: 9efddf962ffee075d0db2059d3914c36b0acbdf3; working-tree file checksums identify the exact reviewed bytes. Reviewed dispatch/helper evidence · Reconciliation report.

No upstream Markdown file exists for this registration in the retrieved revision.

/modify quest

Inspect or change quests on a selected player.

Implementation: Implemented.

Syntax

/modify quest <list|completed>
/modify quest remove <quest_id>
/modify quest advance <quest_id> <step>

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 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.

Source evidence

Dispatch: COMMAND_MODIFY_QUEST (handler 1005).

  • WorldServer/Commands/Commands.cpp:6327 — COMMAND_MODIFY_QUEST.
  • WorldServer/Commands/Commands.cpp:8874 — Command_ModifyQuest.
  • WorldServer/Commands/Commands.cpp:8355 — Command_Modify.

Reviewed local revision: 9efddf962ffee075d0db2059d3914c36b0acbdf3; working-tree file checksums identify the exact reviewed bytes. Reviewed dispatch/helper evidence · Reconciliation report.

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.

Source evidence

Dispatch: COMMAND_MODIFY_SKILL (handler 1006).

  • WorldServer/Commands/Commands.cpp:6333 — COMMAND_MODIFY_SKILL.
  • WorldServer/Commands/Commands.cpp:9030 — Command_ModifySkill.

Reviewed local revision: 9efddf962ffee075d0db2059d3914c36b0acbdf3; working-tree file checksums identify the exact reviewed bytes. Reviewed dispatch/helper evidence · Reconciliation report.

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.

Source evidence

Dispatch: COMMAND_MODIFY_SPAWN (handler 1007).

  • WorldServer/Commands/Commands.cpp:6334 — COMMAND_MODIFY_SPAWN.
  • WorldServer/Commands/Commands.cpp:8379 — Command_ModifySpawn.
  • WorldServer/Commands/Commands.cpp:8355 — Command_Modify.

Reviewed local revision: 9efddf962ffee075d0db2059d3914c36b0acbdf3; working-tree file checksums identify the exact reviewed bytes. Reviewed dispatch/helper evidence · Reconciliation report.

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.