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