Slash commands

/faction

Search factions and inspect or persist player faction standing.

Implemented · 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
/faction 1012 200 Implemented

Search factions and inspect or persist player faction standing.

Implementation: Implemented.

Syntax

/faction search <text> [page]
/faction search <name|type|description|id> <value> [page]
/faction search all [page]
/faction <get|reset> <id> [self|target|player]
/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: /faction requires status 200 (handler 1012). 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

/faction search all
/faction get 11 self

Source-checked forms; not executed against a live world.

Source evidence

Dispatch: COMMAND_FACTION (handler 1012).

  • WorldServer/Commands/Commands.cpp:6328 — COMMAND_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.

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.