diff options
Diffstat (limited to 'src/server/game')
| -rw-r--r-- | src/server/game/Entities/Creature/Creature.cpp | 13 | ||||
| -rw-r--r-- | src/server/game/Entities/Creature/Creature.h | 4 | ||||
| -rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 2 | ||||
| -rw-r--r-- | src/server/game/Handlers/NPCHandler.cpp | 2 | ||||
| -rw-r--r-- | src/server/game/Handlers/QuestHandler.cpp | 2 |
5 files changed, 20 insertions, 3 deletions
diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index 2dc66300cef..3314996c539 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -3523,6 +3523,19 @@ void Creature::ExitVehicle(Position const* /*exitPosition*/) SetHomePosition(GetPosition()); } +uint32 Creature::GetGossipMenuId() const +{ + if (_gossipMenuId) + return *_gossipMenuId; + + return GetCreatureTemplate()->GossipMenuId; +} + +void Creature::SetGossipMenuId(Optional<uint32> gossipMenuId) +{ + _gossipMenuId = gossipMenuId; +} + uint32 Creature::GetTrainerId() const { if (_trainerId) diff --git a/src/server/game/Entities/Creature/Creature.h b/src/server/game/Entities/Creature/Creature.h index f88b61b5ba6..ed1657c9b21 100644 --- a/src/server/game/Entities/Creature/Creature.h +++ b/src/server/game/Entities/Creature/Creature.h @@ -401,6 +401,9 @@ class TC_GAME_API Creature : public Unit, public GridObject<Creature>, public Ma bool HasFlag(CreatureStaticFlags7 flag) const { return _staticFlags.HasFlag(flag); } bool HasFlag(CreatureStaticFlags8 flag) const { return _staticFlags.HasFlag(flag); } + uint32 GetGossipMenuId() const; + void SetGossipMenuId(Optional<uint32> gossipMenuId); + uint32 GetTrainerId() const; void SetTrainerId(Optional<uint32> trainerId); @@ -491,6 +494,7 @@ class TC_GAME_API Creature : public Unit, public GridObject<Creature>, public Ma bool _isMissingCanSwimFlagOutOfCombat; + Optional<uint32> _gossipMenuId; Optional<uint32> _trainerId; }; diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 4de8a0dd2c5..d760b938264 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -14249,7 +14249,7 @@ uint32 Player::GetDefaultGossipMenuForSource(WorldObject* source) switch (source->GetTypeId()) { case TYPEID_UNIT: - return source->ToCreature()->GetCreatureTemplate()->GossipMenuId; + return source->ToCreature()->GetGossipMenuId(); case TYPEID_GAMEOBJECT: return source->ToGameObject()->GetGOInfo()->GetGossipMenuId(); default: diff --git a/src/server/game/Handlers/NPCHandler.cpp b/src/server/game/Handlers/NPCHandler.cpp index 50fc643e7b6..a2274a3b6e0 100644 --- a/src/server/game/Handlers/NPCHandler.cpp +++ b/src/server/game/Handlers/NPCHandler.cpp @@ -183,7 +183,7 @@ void WorldSession::HandleGossipHelloOpcode(WorldPackets::NPC::Hello& packet) if (!unit->AI()->OnGossipHello(_player)) { // _player->TalkedToCreature(unit->GetEntry(), unit->GetGUID()); - _player->PrepareGossipMenu(unit, unit->GetCreatureTemplate()->GossipMenuId, true); + _player->PrepareGossipMenu(unit, unit->GetGossipMenuId(), true); _player->SendPreparedGossip(unit); } } diff --git a/src/server/game/Handlers/QuestHandler.cpp b/src/server/game/Handlers/QuestHandler.cpp index 220eaba8985..18eb7daa947 100644 --- a/src/server/game/Handlers/QuestHandler.cpp +++ b/src/server/game/Handlers/QuestHandler.cpp @@ -98,7 +98,7 @@ void WorldSession::HandleQuestgiverHelloOpcode(WorldPackets::Quest::QuestGiverHe if (creature->AI()->OnGossipHello(_player)) return; - _player->PrepareGossipMenu(creature, creature->GetCreatureTemplate()->GossipMenuId, true); + _player->PrepareGossipMenu(creature, creature->GetGossipMenuId(), true); _player->SendPreparedGossip(creature); } |
