From de92c277e0715ecee54bb3c2f04ec9c72684ae41 Mon Sep 17 00:00:00 2001 From: Akkadius Date: Thu, 1 Dec 2016 19:41:12 -0600 Subject: [PATCH] Update eqemu_server.pl to use new AppVeyor build link Adjust pet zoning to occur before zone spawns are sent in bulk --- zone/client.cpp | 1 + zone/client_packet.cpp | 39 ++++++++++++++++++--------------------- 2 files changed, 19 insertions(+), 21 deletions(-) diff --git a/zone/client.cpp b/zone/client.cpp index 891591780..ddf10d9d5 100644 --- a/zone/client.cpp +++ b/zone/client.cpp @@ -424,6 +424,7 @@ Client::~Client() { void Client::SendZoneInPackets() { + ////////////////////////////////////////////////////// // Spawn Appearance Packet auto outapp = new EQApplicationPacket(OP_SpawnAppearance, sizeof(SpawnAppearance_Struct)); diff --git a/zone/client_packet.cpp b/zone/client_packet.cpp index e05cc4f8c..7a2715197 100644 --- a/zone/client_packet.cpp +++ b/zone/client_packet.cpp @@ -493,6 +493,7 @@ int Client::HandlePacket(const EQApplicationPacket *app) // Finish client connecting state void Client::CompleteConnect() { + UpdateWho(); client_state = CLIENT_CONNECTED; SendAllPackets(); @@ -502,27 +503,6 @@ void Client::CompleteConnect() SetDuelTarget(0); SetDueling(false); - database.LoadPetInfo(this); - /* - This was moved before the spawn packets are sent - in hopes that it adds more consistency... - Remake pet - */ - if (m_petinfo.SpellID > 1 && !GetPet() && m_petinfo.SpellID <= SPDAT_RECORDS) { - MakePoweredPet(m_petinfo.SpellID, spells[m_petinfo.SpellID].teleport_zone, m_petinfo.petpower, m_petinfo.Name, m_petinfo.size); - if (GetPet() && GetPet()->IsNPC()) { - NPC *pet = GetPet()->CastToNPC(); - pet->SetPetState(m_petinfo.Buffs, m_petinfo.Items); - pet->CalcBonuses(); - pet->SetHP(m_petinfo.HP); - pet->SetMana(m_petinfo.Mana); - } - m_petinfo.SpellID = 0; - } - /* Moved here so it's after where we load the pet data. */ - if (!GetAA(aaPersistentMinion)) - memset(&m_suspendedminion, 0, sizeof(PetInfo)); - EnteringMessages(this); LoadZoneFlags(); @@ -1649,6 +1629,23 @@ void Client::Handle_Connect_OP_ZoneEntry(const EQApplicationPacket *app) if (m_pp.RestTimer) rest_timer.Start(m_pp.RestTimer * 1000); + /* Load Pet */ + database.LoadPetInfo(this); + if (m_petinfo.SpellID > 1 && !GetPet() && m_petinfo.SpellID <= SPDAT_RECORDS) { + MakePoweredPet(m_petinfo.SpellID, spells[m_petinfo.SpellID].teleport_zone, m_petinfo.petpower, m_petinfo.Name, m_petinfo.size); + if (GetPet() && GetPet()->IsNPC()) { + NPC *pet = GetPet()->CastToNPC(); + pet->SetPetState(m_petinfo.Buffs, m_petinfo.Items); + pet->CalcBonuses(); + pet->SetHP(m_petinfo.HP); + pet->SetMana(m_petinfo.Mana); + } + m_petinfo.SpellID = 0; + } + /* Moved here so it's after where we load the pet data. */ + if (!GetAA(aaPersistentMinion)) + memset(&m_suspendedminion, 0, sizeof(PetInfo)); + /* Server Zone Entry Packet */ outapp = new EQApplicationPacket(OP_ZoneEntry, sizeof(ServerZoneEntry_Struct)); ServerZoneEntry_Struct* sze = (ServerZoneEntry_Struct*)outapp->pBuffer;