mirror of
https://github.com/EQEmu/Server.git
synced 2026-06-01 18:30:39 +00:00
Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| f0278d9591 | |||
| 8a1f4545a4 | |||
| 8419e284d4 | |||
| 72646cab35 | |||
| 96e1e76306 | |||
| 7c242723f4 | |||
| 2162c00edd |
@@ -302,7 +302,9 @@ std::string DBcore::Escape(const std::string& s)
|
||||
|
||||
void DBcore::SetMutex(Mutex *mutex)
|
||||
{
|
||||
if (m_mutex && m_mutex != mutex) {
|
||||
safe_delete(m_mutex);
|
||||
}
|
||||
|
||||
DBcore::m_mutex = mutex;
|
||||
}
|
||||
|
||||
+2
-1
@@ -894,7 +894,8 @@ void ZSList::SendServerReload(ServerReload::Type type, uchar *packet)
|
||||
ServerReload::Type::Commands,
|
||||
ServerReload::Type::PerlExportSettings,
|
||||
ServerReload::Type::DataBucketsCache,
|
||||
ServerReload::Type::WorldRepop
|
||||
ServerReload::Type::WorldRepop,
|
||||
ServerReload::Type::WorldWithRespawn
|
||||
};
|
||||
|
||||
// Set requires_zone_booted flag before executing reload logic
|
||||
|
||||
@@ -708,6 +708,9 @@ Client::Client(EQStreamInterface *ieqs) : Mob(
|
||||
}
|
||||
|
||||
Client::~Client() {
|
||||
entity_list.RemoveMobFromCloseLists(this);
|
||||
m_close_mobs.clear();
|
||||
|
||||
if (ClientVersion() == EQ::versions::ClientVersion::RoF2 && RuleB (Parcel, EnableParcelMerchants)) {
|
||||
DoParcelCancel();
|
||||
}
|
||||
|
||||
+1
-1
@@ -2933,7 +2933,7 @@ void EntityList::ScanCloseMobs(Mob *scanning_mob)
|
||||
for (auto &e : mob_list) {
|
||||
auto mob = e.second;
|
||||
|
||||
if (mob->GetID() <= 0) {
|
||||
if (mob && mob->GetID() <= 0) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
+8
-1
@@ -375,6 +375,10 @@ void NPC::AddLootDrop(
|
||||
if (item2->Slots & slots) {
|
||||
if (equipment[i]) {
|
||||
compitem = database.GetItem(equipment[i]);
|
||||
if (!compitem) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (item2->AC > compitem->AC || (item2->AC == compitem->AC && item2->HP > compitem->HP)) {
|
||||
// item would be an upgrade
|
||||
// check if we're multi-slot, if yes then we have to keep
|
||||
@@ -385,6 +389,9 @@ void NPC::AddLootDrop(
|
||||
else {
|
||||
// Unequip old item
|
||||
auto *old_item = GetItem(i);
|
||||
if (!old_item) {
|
||||
continue;
|
||||
}
|
||||
|
||||
old_item->equip_slot = EQ::invslot::SLOT_INVALID;
|
||||
|
||||
@@ -677,7 +684,7 @@ LootItem *NPC::GetItem(int slot_id)
|
||||
end = m_loot_items.end();
|
||||
for (; cur != end; ++cur) {
|
||||
LootItem *item = *cur;
|
||||
if (item->equip_slot == slot_id) {
|
||||
if (item && item->equip_slot == slot_id) {
|
||||
return item;
|
||||
}
|
||||
}
|
||||
|
||||
+3
-3
@@ -531,6 +531,9 @@ Mob::Mob(
|
||||
|
||||
Mob::~Mob()
|
||||
{
|
||||
entity_list.RemoveMobFromCloseLists(this);
|
||||
m_close_mobs.clear();
|
||||
|
||||
quest_manager.stopalltimers(this);
|
||||
|
||||
mMovementManager->RemoveMob(this);
|
||||
@@ -570,11 +573,8 @@ Mob::~Mob()
|
||||
entity_list.UnMarkNPC(GetID());
|
||||
UninitializeBuffSlots();
|
||||
|
||||
entity_list.RemoveMobFromCloseLists(this);
|
||||
entity_list.RemoveAuraFromMobs(this);
|
||||
|
||||
m_close_mobs.clear();
|
||||
|
||||
ClearDataBucketCache();
|
||||
|
||||
LeaveHealRotationTargetPool();
|
||||
|
||||
@@ -4663,14 +4663,19 @@ void WorldServer::ProcessReload(const ServerReload::Request& request)
|
||||
case ServerReload::Type::WorldRepop:
|
||||
entity_list.ClearAreas();
|
||||
parse->ReloadQuests();
|
||||
if (zone && zone->IsLoaded()) {
|
||||
zone->Repop();
|
||||
}
|
||||
break;
|
||||
|
||||
case ServerReload::Type::WorldWithRespawn:
|
||||
entity_list.ClearAreas();
|
||||
parse->ReloadQuests();
|
||||
if (zone && zone->IsLoaded()) {
|
||||
entity_list.ClearAreas();
|
||||
zone->Repop();
|
||||
zone->ClearSpawnTimers();
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case ServerReload::Type::ZonePoints:
|
||||
|
||||
Reference in New Issue
Block a user