diff options
author | Shauren <shauren.trinity@gmail.com> | 2011-06-15 18:53:55 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2011-06-15 18:53:55 +0200 |
commit | fb44a609ff17073a60c3784823ace60b1d14523f (patch) | |
tree | 0411bc078a7b3e1670f2b7d22de4f2c64f17f7b3 /src | |
parent | 53e45b57f880d27bf8948b58b33fe206982cbcfb (diff) |
Core/Gossip: Fixed incorrect gossip menu texts introduced after dropping `npc_gossip` table
Diffstat (limited to 'src')
-rwxr-xr-x | src/server/game/Entities/Player/Player.cpp | 28 | ||||
-rwxr-xr-x | src/server/game/Entities/Player/Player.h | 4 | ||||
-rwxr-xr-x | src/server/game/Globals/ObjectMgr.h | 13 |
3 files changed, 15 insertions, 30 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index b749126e2e2..af1ffc96188 100755 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -14277,15 +14277,12 @@ void Player::OnGossipSelect(WorldObject* source, uint32 gossipListId, uint32 men ModifyMoney(-cost); } -uint32 Player::GetGossipTextId(WorldObject *pSource) +uint32 Player::GetGossipTextId(WorldObject* source) { - if (!pSource || pSource->GetTypeId() != TYPEID_UNIT || !pSource->ToCreature()->GetDBTableGUIDLow()) + if (!source) return DEFAULT_GOSSIP_MESSAGE; - if (uint32 pos = sObjectMgr->GetNpcGossip(pSource->ToCreature()->GetDBTableGUIDLow())) - return pos; - - return DEFAULT_GOSSIP_MESSAGE; + return GetGossipTextId(GetDefaultGossipMenuForSource(source)); } uint32 Player::GetGossipTextId(uint32 menuId) @@ -14295,23 +14292,24 @@ uint32 Player::GetGossipTextId(uint32 menuId) if (!menuId) return textId; - GossipMenusMapBounds pMenuBounds = sObjectMgr->GetGossipMenusMapBounds(menuId); + GossipMenusMapBounds menuBounds = sObjectMgr->GetGossipMenusMapBounds(menuId); - for (GossipMenusMap::const_iterator itr = pMenuBounds.first; itr != pMenuBounds.second; ++itr) - { + for (GossipMenusMap::const_iterator itr = menuBounds.first; itr != menuBounds.second; ++itr) if (sConditionMgr->IsPlayerMeetToConditions(this, itr->second.conditions)) textId = itr->second.text_id; - } return textId; } -uint32 Player::GetDefaultGossipMenuForSource(WorldObject *pSource) +uint32 Player::GetDefaultGossipMenuForSource(WorldObject* source) { - if (pSource->GetTypeId() == TYPEID_UNIT) - return pSource->ToCreature()->GetCreatureInfo()->GossipMenuId; - else if (pSource->GetTypeId() == TYPEID_GAMEOBJECT) - return((GameObject*)pSource)->GetGOInfo()->GetGossipMenuId(); + switch (source->GetTypeId()) + { + case TYPEID_UNIT: + return source->ToCreature()->GetCreatureInfo()->GossipMenuId; + case TYPEID_GAMEOBJECT: + return source->ToGameObject()->GetGOInfo()->GetGossipMenuId(); + } return 0; } diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index e2367b2d864..6055b9f797d 100755 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -1339,8 +1339,8 @@ class Player : public Unit, public GridObject<Player> void OnGossipSelect(WorldObject* source, uint32 gossipListId, uint32 menuId); uint32 GetGossipTextId(uint32 menuId); - uint32 GetGossipTextId(WorldObject *pSource); - uint32 GetDefaultGossipMenuForSource(WorldObject *pSource); + uint32 GetGossipTextId(WorldObject* source); + static uint32 GetDefaultGossipMenuForSource(WorldObject* source); /*********************************************************/ /*** QUEST SYSTEM ***/ diff --git a/src/server/game/Globals/ObjectMgr.h b/src/server/game/Globals/ObjectMgr.h index c7f51c5b784..ab1c7f1cfe4 100755 --- a/src/server/game/Globals/ObjectMgr.h +++ b/src/server/game/Globals/ObjectMgr.h @@ -538,9 +538,6 @@ struct GraveYardData }; typedef std::multimap<uint32, GraveYardData> GraveYardMap; -// NPC gossip text id -typedef UNORDERED_MAP<uint32, uint32> CacheNpcTextIdMap; - typedef UNORDERED_MAP<uint32, VendorItemData> CacheVendorItemMap; typedef UNORDERED_MAP<uint32, TrainerSpellData> CacheTrainerSpellMap; @@ -1148,15 +1145,6 @@ class ObjectMgr bool AddGameTele(GameTele& data); bool DeleteGameTele(const std::string& name); - uint32 GetNpcGossip(uint32 entry) const - { - CacheNpcTextIdMap::const_iterator iter = m_mCacheNpcTextIdMap.find(entry); - if (iter == m_mCacheNpcTextIdMap.end()) - return 0; - - return iter->second; - } - TrainerSpellData const* GetNpcTrainerSpells(uint32 entry) const { CacheTrainerSpellMap::const_iterator iter = m_mCacheTrainerSpellMap.find(entry); @@ -1369,7 +1357,6 @@ class ObjectMgr RespawnTimes mGORespawnTimes; ACE_Thread_Mutex m_GORespawnTimesMtx; - CacheNpcTextIdMap m_mCacheNpcTextIdMap; CacheVendorItemMap m_mCacheVendorItemMap; CacheTrainerSpellMap m_mCacheTrainerSpellMap; |