diff options
author | megamage <none@none> | 2009-05-04 17:26:24 -0500 |
---|---|---|
committer | megamage <none@none> | 2009-05-04 17:26:24 -0500 |
commit | c401cb49a48a4f83d6f68d74ca9bac1dd8f8873a (patch) | |
tree | e0bd3823659beb59304b44bbf2e60c33b2113753 /src | |
parent | e478030b06802c531936fb9b2379defeb98f682f (diff) |
[7755] Allow mini-pet has been questgivers or gossip holders. Author: megamage
--HG--
branch : trunk
Diffstat (limited to 'src')
-rw-r--r-- | src/game/Player.cpp | 16 | ||||
-rw-r--r-- | src/game/QuestHandler.cpp | 3 |
2 files changed, 12 insertions, 7 deletions
diff --git a/src/game/Player.cpp b/src/game/Player.cpp index e6af003e941..63def6aabd8 100644 --- a/src/game/Player.cpp +++ b/src/game/Player.cpp @@ -2026,8 +2026,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; @@ -2043,7 +2043,7 @@ Player::GetNPCIfCanInteractWith(uint64 guid, uint32 npcflagmask) if(!unit->isAlive() && (!unit->isSpiritService() || isAlive() )) return NULL; - // not allow interaction under control + // not allow interaction under control, but allow with own pets if(unit->GetCharmerGUID()) return NULL; @@ -12095,7 +12095,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; @@ -12181,7 +12183,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(); @@ -12245,7 +12249,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 7decc561779..56cb387d911 100644 --- a/src/game/QuestHandler.cpp +++ b/src/game/QuestHandler.cpp @@ -621,7 +621,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)) |