diff --git a/src/game/Player.cpp b/src/game/Player.cpp index 975574b5a..16243e56f 100644 --- a/src/game/Player.cpp +++ b/src/game/Player.cpp @@ -1962,8 +1962,8 @@ Player::GetNPCIfCanInteractWith(uint64 guid, uint32 npcflagmask) if(!IsInWorld()) return NULL; - // exist - Creature *unit = GetMap()->GetCreature(guid); + // exist (we need look pets also for some interaction (quest/etc) + Creature *unit = ObjectAccessor::GetCreatureOrPetOrVehicle(*this,guid); if (!unit) return NULL; @@ -1979,8 +1979,8 @@ Player::GetNPCIfCanInteractWith(uint64 guid, uint32 npcflagmask) if(!unit->isAlive() && (!unit->isSpiritService() || isAlive() )) return NULL; - // not allow interaction under control - if(unit->GetCharmerOrOwnerGUID()) + // not allow interaction under control, but allow with own pets + if(unit->GetCharmerGUID()) return NULL; // not enemy @@ -11817,7 +11817,9 @@ void Player::PrepareQuestMenu( uint64 guid ) Object *pObject; QuestRelations* pObjectQR; QuestRelations* pObjectQIR; - Creature *pCreature = GetMap()->GetCreature(guid); + + // pets also can have quests + Creature *pCreature = ObjectAccessor::GetCreatureOrPetOrVehicle(*this,guid); if( pCreature ) { pObject = (Object*)pCreature; @@ -11903,7 +11905,9 @@ void Player::SendPreparedQuest( uint64 guid ) qe._Delay = 0; qe._Emote = 0; std::string title = ""; - Creature *pCreature = GetMap()->GetCreature(guid); + + // need pet case for some quests + Creature *pCreature = ObjectAccessor::GetCreatureOrPetOrVehicle(*this,guid); if( pCreature ) { uint32 textid = pCreature->GetNpcTextId(); @@ -11967,7 +11971,7 @@ Quest const * Player::GetNextQuest( uint64 guid, Quest const *pQuest ) QuestRelations* pObjectQR; QuestRelations* pObjectQIR; - Creature *pCreature = GetMap()->GetCreature(guid); + Creature *pCreature = ObjectAccessor::GetCreatureOrPetOrVehicle(*this,guid); if( pCreature ) { pObject = (Object*)pCreature; diff --git a/src/game/QuestHandler.cpp b/src/game/QuestHandler.cpp index 346d2576a..7e8e1a5a9 100644 --- a/src/game/QuestHandler.cpp +++ b/src/game/QuestHandler.cpp @@ -611,7 +611,8 @@ void WorldSession::HandleQuestgiverStatusQueryMultipleOpcode(WorldPacket& /*recv if(IS_CREATURE_GUID(*itr)) { - Creature *questgiver = GetPlayer()->GetMap()->GetCreature(*itr); + // need also pet quests case support + Creature *questgiver = ObjectAccessor::GetCreatureOrPetOrVehicle(*GetPlayer(),*itr); if(!questgiver || questgiver->IsHostileTo(_player)) continue; if(!questgiver->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER)) diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 994d21183..1b73d9acf 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "7754" + #define REVISION_NR "7755" #endif // __REVISION_NR_H__