mirror of
https://github.com/EQEmu/Server.git
synced 2026-08-28 15:57:58 +00:00
[Commands] #npcspawn Changes (#4311)
* Changes to npcspawn create command so it takes more stats from the target npc * Add see invis stats to npccreate command * WIP npcspawn command changes * Add npcspawn clone and help args, fix some broken things with npcspawn * Cleanup comments and add apostraphes to zone shortname query * Make it so npcspawn remove only removes spawn2 row and optionally removes spawngroup and spawnentry, make create and add spawn the npc at client loc * Make npcspawn create use the same syntax for spawngroup naming as npcspawn add * Revert npcspawn create and add to use npc location rather than client, other misc tweaks
This commit is contained in:
@@ -9,44 +9,46 @@ void command_npcspawn(Client *c, const Seperator *sep)
|
||||
|
||||
int arguments = sep->argnum;
|
||||
if (!arguments) {
|
||||
c->Message(Chat::White, "Command Syntax: #npcspawn [Add|Create|Delete|Remove|Update]");
|
||||
c->Message(Chat::White, "Command Syntax: #npcspawn [Add|Create|Delete|Remove|Update|Clone|Help]");
|
||||
return;
|
||||
}
|
||||
|
||||
if (!strcasecmp(sep->arg[1], "help")) {
|
||||
c->Message(Chat::White, "Command Syntax: #npcspawn [Add|Create|Delete|Remove|Update|Clone|Help] [optional 3rd parameter]");
|
||||
c->Message(Chat::White, "Usage: #npcspawn add [respawntime] - Using the same targeted NPC ID, creates new spawn2 and spawngroup entries");
|
||||
c->Message(Chat::White, "Usage: #npcspawn clone [respawntime] - Copies targeted NPC and spawngroup, creating only a spawn2 entry at the current client location");
|
||||
c->Message(Chat::White, "Usage: #npcspawn create [respawntime] - Creates new NPC type copying the data from the targeted NPC, with new spawn2 and spawngroup entries");
|
||||
c->Message(Chat::White, "Usage: #npcspawn delete - Deletes the spawn2, spawngroup, spawnentry and npc_types rows for targeted NPC");
|
||||
c->Message(Chat::White, "Usage: #npcspawn remove [remove_spawngroups] - Deletes the spawn2 row for targeted NPC, also delete spawngroup and spawnentry rows if remove_spawngroups is > 0");
|
||||
c->Message(Chat::White, "Usage: #npcspawn update - Updates NPC appearance in database");
|
||||
return;
|
||||
}
|
||||
|
||||
auto target = c->GetTarget()->CastToNPC();
|
||||
uint32 extra = 0;
|
||||
bool is_add = !strcasecmp(sep->arg[1], "add");
|
||||
bool is_clone = !strcasecmp(sep->arg[1], "clone");
|
||||
bool is_create = !strcasecmp(sep->arg[1], "create");
|
||||
bool is_delete = !strcasecmp(sep->arg[1], "delete");
|
||||
bool is_remove = !strcasecmp(sep->arg[1], "remove");
|
||||
bool is_update = !strcasecmp(sep->arg[1], "update");
|
||||
if (
|
||||
!is_add &&
|
||||
!is_clone &&
|
||||
!is_create &&
|
||||
!is_delete &&
|
||||
!is_remove &&
|
||||
!is_update
|
||||
) {
|
||||
c->Message(Chat::White, "Command Syntax: #npcspawn [Add|Create|Delete|Remove|Update]");
|
||||
c->Message(Chat::White, "Command Syntax: #npcspawn [Add|Create|Delete|Remove|Update|Clone|Help]");
|
||||
return;
|
||||
}
|
||||
|
||||
if (is_add || is_create) {
|
||||
extra = (
|
||||
sep->IsNumber(2) ?
|
||||
(
|
||||
is_add ?
|
||||
Strings::ToInt(sep->arg[2]) :
|
||||
1
|
||||
) : (
|
||||
is_add ?
|
||||
1200 :
|
||||
0
|
||||
)
|
||||
); // Default to 1200 for Add, 0 for Create if not set
|
||||
if (is_add || is_create || is_clone) {
|
||||
extra = sep->IsNumber(2) ? Strings::ToInt(sep->arg[2]) : 1200; // Extra param is only used for respawn time in Add/Create/Clone, default to 1200 if not set
|
||||
|
||||
content_db.NPCSpawnDB(
|
||||
is_add ? NPCSpawnTypes::AddNewSpawngroup : NPCSpawnTypes::CreateNewSpawn,
|
||||
is_add ? NPCSpawnTypes::AddNewSpawngroup : (is_create ? NPCSpawnTypes::CreateNewSpawn : NPCSpawnTypes::AddSpawnFromSpawngroup),
|
||||
zone->GetShortName(),
|
||||
zone->GetInstanceVersion(),
|
||||
c,
|
||||
@@ -58,7 +60,13 @@ void command_npcspawn(Client *c, const Seperator *sep)
|
||||
Chat::White,
|
||||
fmt::format(
|
||||
"Spawn {} | Name: {}",
|
||||
is_add ? "Added" : "Created",
|
||||
is_add ?
|
||||
"Added" :
|
||||
(
|
||||
is_create ?
|
||||
"Created" :
|
||||
"Cloned"
|
||||
),
|
||||
c->GetTargetDescription(target)
|
||||
).c_str()
|
||||
);
|
||||
@@ -84,12 +92,15 @@ void command_npcspawn(Client *c, const Seperator *sep)
|
||||
)
|
||||
);
|
||||
|
||||
extra = sep->IsNumber(2) ? Strings::ToInt(sep->arg[2]) : 0; // Extra param is used in Remove as a flag to optionally remove spawngroup/spawnentry if 1 (always remove spawn2 entry)
|
||||
|
||||
content_db.NPCSpawnDB(
|
||||
spawn_update_type,
|
||||
zone->GetShortName(),
|
||||
zone->GetInstanceVersion(),
|
||||
c,
|
||||
target
|
||||
target,
|
||||
extra
|
||||
);
|
||||
|
||||
c->Message(
|
||||
|
||||
Reference in New Issue
Block a user