diff --git a/zone/client_packet.cpp b/zone/client_packet.cpp index bfb9fd90c..316c08cd9 100644 --- a/zone/client_packet.cpp +++ b/zone/client_packet.cpp @@ -1632,9 +1632,12 @@ void Client::Handle_Connect_OP_ZoneEntry(const EQApplicationPacket *app) pet->CalcBonuses(); pet->SetHP(m_petinfo.HP); pet->SetMana(m_petinfo.Mana); - // 1st login, client takes care of this from button status - if (!firstlogon) { - pet->SetTaunting(m_petinfo.taunting); + + // Taunt persists when zoning on newer clients, overwrite default. + if (m_ClientVersionBit & EQ::versions::maskUFAndLater) { + if (!firstlogon) { + pet->SetTaunting(m_petinfo.taunting); + } } } m_petinfo.SpellID = 0; diff --git a/zone/pets.cpp b/zone/pets.cpp index dd66fccad..a8b69f77f 100644 --- a/zone/pets.cpp +++ b/zone/pets.cpp @@ -433,7 +433,18 @@ Pet::Pet(NPCType *type_data, Mob *owner, PetType type, uint16 spell_id, int16 po petpower = power; SetOwnerID(owner->GetID()); SetPetSpellID(spell_id); - taunting = false; + + bool non_persistant_pet_states_client = false; + + // Deault to on in older clients, off in new clients that control state. + if (owner && owner->IsClient()) { + if (!(owner->CastToClient()->ClientVersionBit() & EQ::versions::maskUFAndLater)) { + LogError("Titanium"); + non_persistant_pet_states_client = true; + } + + taunting = non_persistant_pet_states_client; + } // Class should use npc constructor to set light properties }