aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authormegamage <none@none>2009-05-04 17:26:24 -0500
committermegamage <none@none>2009-05-04 17:26:24 -0500
commitc401cb49a48a4f83d6f68d74ca9bac1dd8f8873a (patch)
treee0bd3823659beb59304b44bbf2e60c33b2113753 /src
parente478030b06802c531936fb9b2379defeb98f682f (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.cpp16
-rw-r--r--src/game/QuestHandler.cpp3
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))