eqemu-server/zone/gm_commands/killallnpcs.cpp
2022-03-06 22:03:10 -06:00

69 lines
1.2 KiB
C++
Executable File

#include "../client.h"
void command_killallnpcs(Client *c, const Seperator *sep)
{
std::string search_string;
if (sep->arg[1]) {
search_string = str_tolower(sep->arg[1]);
}
int killed_count = 0;
for (auto &e: entity_list.GetMobList()) {
auto *entity = e.second;
if (!entity || !entity->IsNPC()) {
continue;
}
std::string entity_name = str_tolower(entity->GetName());
if ((!search_string.empty() && entity_name.find(search_string) == std::string::npos) ||
!entity->IsAttackAllowed(c)) {
continue;
}
entity->Damage(
c,
entity->GetHP() + 1000,
SPELL_UNKNOWN,
EQ::skills::SkillDragonPunch
);
killed_count++;
}
if (killed_count) {
c->Message(
Chat::White,
fmt::format(
"Killed {} NPC{}{}.",
killed_count,
killed_count != 1 ? "s" : "",
(
!search_string.empty() ?
fmt::format(
" that matched '{}'",
search_string
) :
""
)
).c_str()
);
}
else {
c->Message(
Chat::White,
fmt::format(
"There were no NPCs to kill{}.",
(
!search_string.empty() ?
fmt::format(
" that matched '{}'",
search_string
) :
""
)
).c_str()
);
}
}