mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-12 13:41:31 +00:00
[Feature] Add optional is_forced parameter to Zone::Repop (#4046)
* [Feature] Add optional `is_force` parameter to Zone::Repop # Perl - Add `quest::repopzone(is_force)`. # Lua - Add `eq.repop_zone(is_force)`. # Commands - Cleanup `#repop` to use new parameter in `Zone::Repop`. # Notes - Allows operators to forcefully repop a zone without using a second method to clear the respawn timers. * is_forced * Update repop.cpp * Update repop.cpp
This commit is contained in:
parent
c654c1d674
commit
b6b779723e
@ -1042,6 +1042,11 @@ void Perl__repopzone()
|
|||||||
quest_manager.repopzone();
|
quest_manager.repopzone();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Perl__repopzone(bool is_forced)
|
||||||
|
{
|
||||||
|
quest_manager.repopzone(is_forced);
|
||||||
|
}
|
||||||
|
|
||||||
void Perl__processmobswhilezoneempty(bool on)
|
void Perl__processmobswhilezoneempty(bool on)
|
||||||
{
|
{
|
||||||
quest_manager.processmobswhilezoneempty(on);
|
quest_manager.processmobswhilezoneempty(on);
|
||||||
@ -6547,7 +6552,8 @@ void perl_register_quest()
|
|||||||
package.add("removeldonwin", &Perl__removeldonwin);
|
package.add("removeldonwin", &Perl__removeldonwin);
|
||||||
package.add("removetitle", &Perl__removetitle);
|
package.add("removetitle", &Perl__removetitle);
|
||||||
package.add("rename", &Perl__rename);
|
package.add("rename", &Perl__rename);
|
||||||
package.add("repopzone", &Perl__repopzone);
|
package.add("repopzone", (void(*)(void))&Perl__repopzone);
|
||||||
|
package.add("repopzone", (void(*)(bool))&Perl__repopzone);
|
||||||
package.add("resettaskactivity", &Perl__resettaskactivity);
|
package.add("resettaskactivity", &Perl__resettaskactivity);
|
||||||
package.add("respawn", &Perl__respawn);
|
package.add("respawn", &Perl__respawn);
|
||||||
package.add("resume", &Perl__resume);
|
package.add("resume", &Perl__resume);
|
||||||
|
|||||||
@ -2,23 +2,17 @@
|
|||||||
|
|
||||||
void command_repop(Client *c, const Seperator *sep)
|
void command_repop(Client *c, const Seperator *sep)
|
||||||
{
|
{
|
||||||
int arguments = sep->argnum;
|
const bool is_forced = sep->argnum > 0 ? !strcasecmp(sep->arg[1], "force") : false;
|
||||||
if (!arguments) {
|
|
||||||
|
c->Message(
|
||||||
|
Chat::White,
|
||||||
|
fmt::format(
|
||||||
|
"Zone depopped, {}repopping now.",
|
||||||
|
is_forced ? "forcefully " : ""
|
||||||
|
).c_str()
|
||||||
|
);
|
||||||
|
|
||||||
entity_list.ClearAreas();
|
entity_list.ClearAreas();
|
||||||
c->Message(Chat::White, "Zone depopped, repopping now.");
|
zone->Repop(is_forced);
|
||||||
zone->Repop();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool is_force = !strcasecmp(sep->arg[1], "force");
|
|
||||||
|
|
||||||
if (is_force) {
|
|
||||||
zone->ClearSpawnTimers();
|
|
||||||
c->Message(Chat::White, "Zone depopped, forcefully repopping now.");
|
|
||||||
} else {
|
|
||||||
c->Message(Chat::White, "Zone depopped, repopping now.");
|
|
||||||
}
|
|
||||||
|
|
||||||
zone->Repop();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -403,6 +403,10 @@ void lua_repop_zone() {
|
|||||||
quest_manager.repopzone();
|
quest_manager.repopzone();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void lua_repop_zone(bool is_forced) {
|
||||||
|
quest_manager.repopzone(is_forced);
|
||||||
|
}
|
||||||
|
|
||||||
void lua_process_mobs_while_zone_empty(bool on) {
|
void lua_process_mobs_while_zone_empty(bool on) {
|
||||||
quest_manager.processmobswhilezoneempty(on);
|
quest_manager.processmobswhilezoneempty(on);
|
||||||
}
|
}
|
||||||
@ -5634,7 +5638,8 @@ luabind::scope lua_register_general() {
|
|||||||
luabind::def("depop_all", (void(*)(void))&lua_depop_all),
|
luabind::def("depop_all", (void(*)(void))&lua_depop_all),
|
||||||
luabind::def("depop_all", (void(*)(int))&lua_depop_all),
|
luabind::def("depop_all", (void(*)(int))&lua_depop_all),
|
||||||
luabind::def("depop_zone", &lua_depop_zone),
|
luabind::def("depop_zone", &lua_depop_zone),
|
||||||
luabind::def("repop_zone", &lua_repop_zone),
|
luabind::def("repop_zone", (void(*)(void))&lua_repop_zone),
|
||||||
|
luabind::def("repop_zone", (void(*)(bool))&lua_repop_zone),
|
||||||
luabind::def("process_mobs_while_zone_empty", &lua_process_mobs_while_zone_empty),
|
luabind::def("process_mobs_while_zone_empty", &lua_process_mobs_while_zone_empty),
|
||||||
luabind::def("is_disc_tome", &lua_is_disc_tome),
|
luabind::def("is_disc_tome", &lua_is_disc_tome),
|
||||||
luabind::def("get_race_name", (std::string(*)(uint16))&lua_get_race_name),
|
luabind::def("get_race_name", (std::string(*)(uint16))&lua_get_race_name),
|
||||||
|
|||||||
@ -926,11 +926,11 @@ void QuestManager::depopzone(bool StartSpawnTimer) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void QuestManager::repopzone() {
|
void QuestManager::repopzone(bool is_forced)
|
||||||
if(zone) {
|
{
|
||||||
zone->Repop();
|
if (zone) {
|
||||||
}
|
zone->Repop(is_forced);
|
||||||
else {
|
} else {
|
||||||
LogQuests("QuestManager::repopzone called with nullptr zone. Probably syntax error in quest file");
|
LogQuests("QuestManager::repopzone called with nullptr zone. Probably syntax error in quest file");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -105,7 +105,7 @@ public:
|
|||||||
void depop_withtimer(int npc_type = 0); // depop NPC and start spawn timer
|
void depop_withtimer(int npc_type = 0); // depop NPC and start spawn timer
|
||||||
void depopall(int npc_type = 0);
|
void depopall(int npc_type = 0);
|
||||||
void depopzone(bool StartSpawnTimer = true);
|
void depopzone(bool StartSpawnTimer = true);
|
||||||
void repopzone();
|
void repopzone(bool is_forced = false);
|
||||||
void processmobswhilezoneempty(bool quest_override_on);
|
void processmobswhilezoneempty(bool quest_override_on);
|
||||||
void settarget(const char *type, int target_id);
|
void settarget(const char *type, int target_id);
|
||||||
void follow(int entity_id, int distance);
|
void follow(int entity_id, int distance);
|
||||||
|
|||||||
@ -1888,7 +1888,7 @@ void Zone::ClearNPCTypeCache(int id) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Zone::Repop()
|
void Zone::Repop(bool is_forced)
|
||||||
{
|
{
|
||||||
if (!Depop()) {
|
if (!Depop()) {
|
||||||
return;
|
return;
|
||||||
@ -1901,6 +1901,10 @@ void Zone::Repop()
|
|||||||
iterator.RemoveCurrent();
|
iterator.RemoveCurrent();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (is_forced) {
|
||||||
|
ClearSpawnTimers();
|
||||||
|
}
|
||||||
|
|
||||||
npc_scale_manager->LoadScaleData();
|
npc_scale_manager->LoadScaleData();
|
||||||
|
|
||||||
entity_list.ClearTrapPointers();
|
entity_list.ClearTrapPointers();
|
||||||
|
|||||||
@ -307,7 +307,7 @@ public:
|
|||||||
void ReloadWorld(uint8 global_repop);
|
void ReloadWorld(uint8 global_repop);
|
||||||
void RemoveAuth(const char *iCharName, const char *iLSKey);
|
void RemoveAuth(const char *iCharName, const char *iLSKey);
|
||||||
void RemoveAuth(uint32 lsid);
|
void RemoveAuth(uint32 lsid);
|
||||||
void Repop();
|
void Repop(bool is_forced = false);
|
||||||
void RequestUCSServerStatus();
|
void RequestUCSServerStatus();
|
||||||
void ResetAuth();
|
void ResetAuth();
|
||||||
void SetDate(uint16 year, uint8 month, uint8 day, uint8 hour, uint8 minute);
|
void SetDate(uint16 year, uint8 month, uint8 day, uint8 hour, uint8 minute);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user