Slash commands

/spawn

Spawn a database-defined spawn at your position or supplied coordinates.

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
/spawn 1 200 Implemented
/spawn add 43 100 Implemented
/spawn combine 80 100 Implemented
/spawn create 44 100 Implemented
/spawn details 52 200 Implemented
/spawn equipment 51 100 Implemented
/spawn group 169 100 Implemented
/spawn list 47 200 Implemented
/spawn move 40 100 Implemented
/spawn remove 46 100 Implemented
/spawn set 45 100 Implemented
/spawn target 50 100 Implemented
/spawn template 143 100 Implemented

Spawn a database-defined spawn at your position or supplied coordinates.

Implementation: Implemented.

Syntax

/spawn <spawn_id> [x] [y] [z] [heading] [location]

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 spawn_id integer Database spawn ID.
1 x number Optional X.
2 y number Optional Y.
3 z number Optional Z.
4 heading number Optional heading.
5 location integer Optional location/grid value.

Behavior and restrictions

  • Defaults to your current coordinates and heading. Runs pre-spawn/spawn scripts and adds NPC loot when applicable.

Current argument/client/target checks (exact source excerpts; branch-dependent):

if(sep && sep->arg[0] && sep->IsNumber(0)){
if(spawn->IsNPC() && spawn->GetTotalHP() == 0){
if(spawn->IsNPC())

Handler failure/help feedback (sent to the player or logged; % fields are formatted at runtime):

All parameters are optional except the id.  The spawn id must be in the database.

Permissions

Local database snapshot, October 6, 2026: /spawn requires status 200 (handler 1). 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_SPAWN (handler 1).

  • WorldServer/Commands/Commands.cpp:5829 — COMMAND_SPAWN.

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.

/spawn add

Assign a selected spawn to a spawn location/group.

Implementation: Implemented.

Syntax

/spawn add <group_id|new> <location_name> [percentage]

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 spawn_group_id integer Existing spawn-group ID or the keyword new.
1 spawn_group_name text Group name.
2 percentage number Optional spawn chance.

Behavior and restrictions

  • A spawn already assigned to a group must first be removed before reassignment.

Persistence evidence in the active path: database.SaveSpawnEntry, database.SaveSpawnInfo. Each call is subject to its surrounding validation; not every branch saves.

Current argument/client/target checks (exact source excerpts; branch-dependent):

if(spawn && sep && ((sep->arg[1][0] && sep->IsNumber(0)) || (sep->arg[0][0] && strncasecmp(sep->arg[0], "new", 3) == 0))){
if (spawn->IsNPC())
if(sep->arg[2] && sep->IsNumber(2))

Permissions

Local database snapshot, October 6, 2026: /spawn add requires status 100 (handler 43). 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_SPAWN_ADD (handler 43).

  • WorldServer/Commands/Commands.cpp:5779 — COMMAND_SPAWN_ADD.

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.

/spawn combine

Build and save a combined spawn group.

Implementation: Implemented.

Syntax

/spawn combine <radius|add|remove|save> [group_name]

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 operation number or text Radius selection or add/remove/save.
1 group_name text Optional name for save.

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(spawn && !spawn->IsPlayer() && sep && sep->arg[0] && sep->arg[0][0]){
else if(sep->IsNumber(0)){

Permissions

Local database snapshot, October 6, 2026: /spawn combine requires status 100 (handler 80). 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_SPAWN_COMBINE (handler 80).

  • WorldServer/Commands/Commands.cpp:5002 — COMMAND_SPAWN_COMBINE.

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.

/spawn create

Create a new temporary spawn.

Implementation: Implemented.

Syntax

/spawn create <object|npc|sign|groundspawn> <race_type> <class_type> <level> <name> [difficulty] [size]

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 spawn_type text Supported type.
1 race_type integer Race/model type.
2 class_type integer Class ID.
3 level integer Level.
4 name text Quote a multiword name.
5 difficulty integer Optional difficulty.
6 size number Optional size.

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(sep && sep->arg[4][0] && strncasecmp(sep->arg[0], "object", 6) == 0 && sep->IsNumber(1) && sep->IsNumber(2) && sep->IsNumber(3)){
else if (sep && sep->arg[4][0] && strncasecmp(sep->arg[0], "groundspawn", 11) == 0 && sep->IsNumber(1) && sep->IsNumber(2) && sep->IsNumber(3)) {
else if (sep && sep->arg[4][0] && strncasecmp(sep->arg[0], "sign", 4) == 0 && sep->IsNumber(1) && sep->IsNumber(2) && sep->IsNumber(3)) {
else if(sep && sep->arg[4][0] && strncasecmp(sep->arg[0], "npc", 3) == 0 && sep->IsNumber(1) && sep->IsNumber(2) && sep->IsNumber(3)){
if(sep->arg[5][0] && sep->IsNumber(5))
if(sep->arg[6][0] && sep->IsNumber(6))

Handler failure/help feedback (sent to the player or logged; % fields are formatted at runtime):

All parameters are required except difficulty and size.  Valid types are Object, NPC, Sign, or GroundSpawn

Permissions

Local database snapshot, October 6, 2026: /spawn create requires status 100 (handler 44). 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_SPAWN_CREATE (handler 44).

  • WorldServer/Commands/Commands.cpp:5039 — COMMAND_SPAWN_CREATE.

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.

/spawn details

Inspect selected-spawn details, group data, aggro or NPC spells.

Implementation: Implemented.

Syntax

/spawn details [group|los|bestz|inwater|inlava|regions|behind|infront|flank|aggro|spells|angle|hated|numeric_radius]

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 section text Optional details section.

Behavior and restrictions

  • aggro and spells require an NPC target.
  • Use a numeric argument for a radius; radius is not a literal keyword in this handler.

Current argument/client/target checks (exact source excerpts; branch-dependent):

if(cmdTarget->IsNPC() && ((NPC*)cmdTarget)->Brain()) {
if (cmdTarget->IsNPC()) {
if(client->GetPlayer()->GetTarget() && client->GetPlayer()->GetTarget()->IsEntity()) {
if (sep->IsNumber(0))
if (spawn->IsEntity()) {
if (spawn->IsNPC())
if (spawn->IsNPC()){
if(spawn->IsEntity())
if (spawn->IsNPC()) {

Handler failure/help feedback (sent to the player or logged; % fields are formatted at runtime):

required_hp_ratio: 

Permissions

Local database snapshot, October 6, 2026: /spawn details requires status 200 (handler 52). 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_SPAWN_DETAILS (handler 52).

  • WorldServer/Commands/Commands.cpp:5164 — COMMAND_SPAWN_DETAILS.
  • WorldServer/Commands/Commands.cpp:187 — DescribeSpawnGroup.
  • WorldServer/Commands/Commands.cpp:177 — GetSpawnGroupSendState.
  • WorldServer/Commands/Commands.cpp:165 — FormatSpawnGroupIDs.
  • WorldServer/Commands/Commands.cpp:300 — SendNPCSpellDetails.
  • WorldServer/Commands/Commands.cpp:161 — GetBoolText.
  • WorldServer/Commands/Commands.cpp:245 — GetNPCSpellSelectionModeName.
  • WorldServer/Commands/Commands.cpp:267 — AppendNPCSpellBucketDetails.
  • WorldServer/Commands/Commands.cpp:256 — GetNPCSpellName.
  • WorldServer/Commands/Commands.cpp:234 — GetNPCSpellCastTypeName.
  • WorldServer/Commands/Commands.cpp:143 — FormatRemainingSpawnTime.

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.

/spawn equipment

Set equipment appearance on a selected spawn.

Implementation: Implemented.

Syntax

/spawn equipment <slot> <appearance_id> [red] [green] [blue] [highlight_red] [highlight_green] [highlight_blue]

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 slot integer Equipment slot/appearance or color component.
1 appearance_id integer Equipment slot/appearance or color component.
2 red integer Equipment slot/appearance or color component.
3 green integer Equipment slot/appearance or color component.
4 blue integer Equipment slot/appearance or color component.
5 highlight_red integer Equipment slot/appearance or color component.
6 highlight_green integer Equipment slot/appearance or color component.
7 highlight_blue integer Equipment slot/appearance or color component.

Behavior and restrictions

The active handler performs the operation described above after the registration permission check.

Persistence evidence in the active path: database.SaveNPCAppearanceEquipment. Each call is subject to its surrounding validation; not every branch saves.

Current argument/client/target checks (exact source excerpts; branch-dependent):

if(spawn && sep && sep->arg[1][0] && sep->IsNumber(0) && sep->IsNumber(1) && spawn->IsEntity()){

Permissions

Local database snapshot, October 6, 2026: /spawn equipment requires status 100 (handler 51). 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_SPAWN_EQUIPMENT (handler 51).

  • WorldServer/Commands/Commands.cpp:5131 — COMMAND_SPAWN_EQUIPMENT.

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.

/spawn group

Manage selected-spawn group membership, association, chance and levels.

Implementation: Implemented.

Syntax

/spawn group <create|add|remove|chance|associate|deassociate|level> [arguments]

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 Group operation.
1 value action dependent Group name, group ID, chance, on/off or minimum level.
2 maximum_level integer Used by level ranges.

Behavior and restrictions

  • level off disables the range; level on enables an existing range or accepts min/max; level min max sets the range. Requires a valid selected spawn.

Current argument/client/target checks (exact source excerpts; branch-dependent):

if(target && target->IsPlayer() == false)
if(sep->arg[1] && !sep->IsNumber(1) && strlen(sep->arg[1]) > 0)
if(sep->arg[1] && sep->IsNumber(1))
else if((sep->arg[1] && sep->IsNumber(1) && sep->arg[2] && sep->IsNumber(2)) || (sep->arg[1] && strcasecmp(sep->arg[1], "on") == 0 && sep->arg[2] && sep->arg[3] && sep->IsNumber(2) && sep->IsNumber(3)))
if(sep->arg[1] && sep->IsNumber(1) && sep->arg[2] && sep->IsNumber(2))

Handler failure/help feedback (sent to the player or logged; % fields are formatted at runtime):

You must select a valid spawn to use this command.

Permissions

Local database snapshot, October 6, 2026: /spawn group requires status 100 (handler 169). 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_SPAWN_GROUP (handler 169).

  • WorldServer/Commands/Commands.cpp:4813 — COMMAND_SPAWN_GROUP.

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.

/spawn list

Search database spawn names.

Implementation: Implemented.

Syntax

/spawn list <name>

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 name remaining text Name search pattern.

Behavior and restrictions

The active handler performs the operation described above after the registration permission check.

Permissions

Local database snapshot, October 6, 2026: /spawn list requires status 200 (handler 47). 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_SPAWN_LIST (handler 47).

  • WorldServer/Commands/Commands.cpp:5759 — COMMAND_SPAWN_LIST.

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.

/spawn move

Move the selected spawn to your placement position.

Implementation: Implemented.

Syntax

/spawn move [wall|ceiling|openheading|closeheading|myloc]

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 placement text Optional house-item placement orientation.

Behavior and restrictions

  • openheading/closeheading require a widget target; myloc moves immediately to the caller. Other forms enter object placement mode.

Persistence evidence in the active path: database.UpdateSpawnLocationSpawns. Each call is subject to its surrounding validation; not every branch saves.

Current argument/client/target checks (exact source excerpts; branch-dependent):

if (cmdTarget && cmdTarget->IsPlayer() == false) {

Permissions

Local database snapshot, October 6, 2026: /spawn move requires status 100 (handler 40). 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_SPAWN_MOVE (handler 40).

  • WorldServer/Commands/Commands.cpp:2961 — COMMAND_SPAWN_MOVE.

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.

/spawn remove

Remove the selected spawn’s location/group assignment.

Implementation: Implemented.

Syntax

/spawn remove

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.

Current argument/client/target checks (exact source excerpts; branch-dependent):

if(spawn && !spawn->IsPlayer()){

Permissions

Local database snapshot, October 6, 2026: /spawn remove requires status 100 (handler 46). 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_SPAWN_REMOVE (handler 46).

  • WorldServer/Commands/Commands.cpp:5737 — COMMAND_SPAWN_REMOVE.

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.

/spawn set

Edit selected-spawn attributes and stored spawn data.

Implementation: Implemented.

Syntax

/spawn set list
/spawn set <attribute> [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 attribute text See the attribute list generated from the current constructor mappings.
1 value text Attribute value; location uses your position without a value.
2 extra_value attribute dependent Additional level-range values for group_level forms.

Behavior and restrictions

  • group_level min max sets a group level range; group_level on enables it; group_level_off disables it.
  • Script paths should be quoted when needed. Changes to expansion/holiday flags require a spawn reload.

Persistence evidence in the active path: database.SaveBotFloats, database.SaveSpawnInfo, database.UpdateSpawnLocationSpawns, database.UpdateSpawnScriptData. Each call is subject to its surrounding validation; not every branch saves.

Current argument/client/target checks (exact source excerpts; branch-dependent):

if(((arg0_lower == "location") || (arg0_lower == "list") || (spawn && spawn->IsPlayer() == false && sep->arg[1][0])) && spawn_set_values.count(arg0_lower) == 1)
else if(sep->arg[1][0] && set_type == SPAWN_SET_GROUP_LEVEL_ON && !sep->IsNumber(1))
if(!(set_type >= SPAWN_SET_VALUE_PREFIX) && !(set_type <= SPAWN_SET_VALUE_MERCHANT_MAX_LEVEL) && set_type != SPAWN_SET_VALUE_NAME && ((set_type < SPAWN_SET_VALUE_SPAWN_SCRIPT) || (set_type > SPAWN_SET_VALUE_SUB_TITLE)) && set_type != SPAWN_SET_VALUE_LOCATION && sep->IsNumber(1) == false)
if(target->IsEntity()){
if(target->IsNPC())
if (target->IsEntity())
if (skinsep->IsNumber(0) && skinsep->IsNumber(1) && skinsep->IsNumber(2))
if(target->IsEntity() && index < 3){
if (tmpsep->IsNumber(0))
if(target->IsNPC()){
if(target->IsEntity())
if (target->IsNPC())
if(target->IsNPC()) {
else if(target->IsPlayer())

Handler failure/help feedback (sent to the player or logged; % fields are formatted at runtime):

A /reload spawns is required to properly update the spawns with the xpack/holiday flag.

Accepted attribute names in the current constructor mapping:

list, name, level, group_level, group_level_on, group_level_off, group_level_range, difficulty, model_type, class, gender, show_name, attackable, show_level, targetable, show_command_icon, display_hand_icon, hair_type, facial_hair_type, wing_type, chest_type, legs_type, soga_hair_type, soga_facial_hair_type, soga_model_type, size, hp, power, heroic, respawn, x, y, z, heading, location, command_primary, command_secondary, visual_state, action_state, mood_state, initial_state, activity_state, collision_radius, faction, spawn_script, spawnentry_script, spawnlocation_script, sub_title, expire, expire_offset, x_offset, y_offset, z_offset, device_id, pitch, roll, hide_hood, emote_state, icon, prefix, suffix, lastname, expansion_flag, holiday_flag, merchant_min_level, merchant_max_level, skin_color, aaxp_rewards, hair_color1, hair_color2, hair_type_color, hair_face_color, hair_type_highlight_color, face_hairlight_color, hair_highlight, model_color, eye_color, soga_skin_color, soga_hair_color1, soga_hair_color2, soga_hair_type_color, soga_hair_face_color, soga_hair_type_highlight_color, soga_face_hairlight_color, soga_hair_highlight, soga_model_color, soga_eye_color, cheek_type, chin_type, ear_type, eye_brow_type, eye_type, lip_type, nose_type, body_size, body_age, soga_cheek_type, soga_chin_type, soga_ear_type, soga_eye_brow_type, soga_eye_type, soga_lip_type, soga_nose_type, soga_body_size, soga_body_age, attack_type, race_type, loot_tier, loot_drop_type, scared_strong_players.

Permissions

Local database snapshot, October 6, 2026: /spawn set requires status 100 (handler 45). 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_SPAWN_SET (handler 45).

  • WorldServer/Commands/Commands.cpp:5469 — COMMAND_SPAWN_SET.
  • WorldServer/Commands/Commands.cpp:627 — SetSpawnCommand.
  • WorldServer/Commands/Commands.cpp:2027 — UpdateDatabaseAppearance.

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.

/spawn target

Select a spawn using a database spawn identifier.

Implementation: Implemented.

Syntax

/spawn target <spawn_id>
/spawn target radius <distance>

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 selector integer or text Database spawn ID or radius.
1 distance number Radius search distance; not a location ID.

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(sep && sep->arg[0][0] && sep->IsNumber(0)){
else if(sep && sep->arg[0][0] && sep->arg[1][0] && sep->IsNumber(1) && stricmp(sep->arg[0], "radius") == 0){

Permissions

Local database snapshot, October 6, 2026: /spawn target requires status 100 (handler 50). 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_SPAWN_TARGET (handler 50).

  • WorldServer/Commands/Commands.cpp:5452 — COMMAND_SPAWN_TARGET.

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.

/spawn template

List, save, remove or instantiate spawn templates.

Implementation: Implemented.

Syntax

/spawn template list [name|location_id]
/spawn template save <name>
/spawn template remove <template_id>
/spawn template spawn <template_id|name>

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/save/remove/spawn.
1 selector integer or text Template name/ID or list filter.

Behavior and restrictions

  • save requires a selected database-backed spawn and unique template name. Template operations use the database; creating from a template is restricted in personal-house instances.

Persistence evidence in the active path: database.SaveSpawnTemplate. Each call is subject to its surrounding validation; not every branch saves.

Current argument/client/target checks (exact source excerpts; branch-dependent):

if (!sep->IsSet(1))
if (sep->IsNumber(1))
if ( target && (target->IsNPC() || target->IsObject() || target->IsSign() || target->IsWidget() || target->IsGroundSpawn()) )
if (sep && sep->arg[1][0] && !sep->IsNumber(1))
if (sep && sep->arg[1][0] && sep->IsNumber(1))

Handler failure/help feedback (sent to the player or logged; % fields are formatted at runtime):

ERROR: Failed to add new template '%s' for spawn '%s' (%u).
ERROR: Failed to add new template '%s' - Already exists!
ERROR: Saving a new spawn template requires a valid template name!
ERROR: You must target the spawn you wish to save as a template!
ERROR: Failed to remove spawn template ID: %u
ERROR: Removing a spawn template requires a valid template ID!
ERROR: Failed to spawn the new spawn location from template ID: %u
ERROR: Failed to spawn the new spawn location from template: '%s'
ERROR: Spawning a new spawn location requires a valid template name or ID!
ERROR: Unknown /spawn template command.

Permissions

Local database snapshot, October 6, 2026: /spawn template requires status 100 (handler 143). 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_SPAWN_TEMPLATE (handler 143).

  • WorldServer/Commands/Commands.cpp:6321 — COMMAND_SPAWN_TEMPLATE.
  • WorldServer/Commands/Commands.cpp:9947 — Command_SpawnTemplate.

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.