aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/Entities/Creature/GossipDef.h1
-rw-r--r--src/server/game/Entities/Player/Player.cpp4
-rw-r--r--src/server/game/Handlers/TransmogrificationHandler.cpp5
-rw-r--r--src/server/game/Server/Packets/TransmogrificationPackets.cpp7
-rw-r--r--src/server/game/Server/Packets/TransmogrificationPackets.h10
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp2
-rw-r--r--src/server/game/Server/WorldSession.h1
7 files changed, 29 insertions, 1 deletions
diff --git a/src/server/game/Entities/Creature/GossipDef.h b/src/server/game/Entities/Creature/GossipDef.h
index aa0eb3f0d4e..ea718b21863 100644
--- a/src/server/game/Entities/Creature/GossipDef.h
+++ b/src/server/game/Entities/Creature/GossipDef.h
@@ -52,6 +52,7 @@ enum Gossip_Option
GOSSIP_OPTION_UNLEARNPETTALENTS_OLD = 17, // deprecated
GOSSIP_OPTION_LEARNDUALSPEC = 18, //UNIT_NPC_FLAG_TRAINER (16) (bonus option for GOSSIP_OPTION_TRAINER)
GOSSIP_OPTION_OUTDOORPVP = 19, //added by code (option for outdoor pvp creatures)
+ GOSSIP_OPTION_TRANSMOGRIFIER = 20, //UNIT_NPC_FLAG_TRANSMOGRIFIER
GOSSIP_OPTION_MAX
};
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 1354ddb17d5..ae12ddc303d 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -14322,6 +14322,7 @@ void Player::PrepareGossipMenu(WorldObject* source, uint32 menuId /*= 0*/, bool
case GOSSIP_OPTION_PETITIONER:
case GOSSIP_OPTION_TABARDDESIGNER:
case GOSSIP_OPTION_AUCTIONEER:
+ case GOSSIP_OPTION_TRANSMOGRIFIER:
break; // no checks
case GOSSIP_OPTION_OUTDOORPVP:
if (!sOutdoorPvPMgr->CanTalkTo(this, creature, itr->second))
@@ -14530,6 +14531,9 @@ void Player::OnGossipSelect(WorldObject* source, uint32 optionIndex, uint32 menu
sBattlegroundMgr->SendBattlegroundList(this, guid, bgTypeId);
break;
}
+ case GOSSIP_OPTION_TRANSMOGRIFIER:
+ GetSession()->SendOpenTransmogrifier(guid);
+ break;
}
ModifyMoney(-cost);
diff --git a/src/server/game/Handlers/TransmogrificationHandler.cpp b/src/server/game/Handlers/TransmogrificationHandler.cpp
index 743378d0f7c..7678c941e7f 100644
--- a/src/server/game/Handlers/TransmogrificationHandler.cpp
+++ b/src/server/game/Handlers/TransmogrificationHandler.cpp
@@ -284,3 +284,8 @@ void WorldSession::HandleTransmogrifyItems(WorldPackets::Transmogrification::Tra
}
}
}
+
+void WorldSession::SendOpenTransmogrifier(ObjectGuid const& guid)
+{
+ SendPacket(WorldPackets::Transmogrification::OpenTransmogrifier(guid).Write());
+}
diff --git a/src/server/game/Server/Packets/TransmogrificationPackets.cpp b/src/server/game/Server/Packets/TransmogrificationPackets.cpp
index 5c6fc81a6c4..7d50891bc3e 100644
--- a/src/server/game/Server/Packets/TransmogrificationPackets.cpp
+++ b/src/server/game/Server/Packets/TransmogrificationPackets.cpp
@@ -46,3 +46,10 @@ WorldPacket const* WorldPackets::Transmogrification::TransmogCollectionUpdate::W
return &_worldPacket;
}
+
+WorldPacket const* WorldPackets::Transmogrification::OpenTransmogrifier::Write()
+{
+ _worldPacket << Guid;
+
+ return &_worldPacket;
+}
diff --git a/src/server/game/Server/Packets/TransmogrificationPackets.h b/src/server/game/Server/Packets/TransmogrificationPackets.h
index 9796d670d6a..3c53af68c93 100644
--- a/src/server/game/Server/Packets/TransmogrificationPackets.h
+++ b/src/server/game/Server/Packets/TransmogrificationPackets.h
@@ -61,6 +61,16 @@ namespace WorldPackets
bool IsSetFavorite = false;
std::vector<uint32> FavoriteAppearances;
};
+
+ class OpenTransmogrifier final : public ServerPacket
+ {
+ public:
+ OpenTransmogrifier(ObjectGuid const& guid) : ServerPacket(SMSG_OPEN_TRANSMOGRIFIER, 16), Guid(guid) { }
+
+ WorldPacket const* Write() override;
+
+ ObjectGuid Guid;
+ };
}
}
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index 19b24370285..7d893b33f7d 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -1485,7 +1485,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_OPEN_LFG_DUNGEON_FINDER, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_OPEN_SHIPMENT_NPC_FROM_GOSSIP, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_OPEN_SHIPMENT_NPC_RESULT, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_OPEN_TRANSMOGRIFIER, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_OPEN_TRANSMOGRIFIER, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_OVERRIDE_LIGHT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PAGE_TEXT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PARTY_COMMAND_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM);
diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h
index 7346b14d312..4d21373730c 100644
--- a/src/server/game/Server/WorldSession.h
+++ b/src/server/game/Server/WorldSession.h
@@ -982,6 +982,7 @@ class TC_GAME_API WorldSession
void SendTabardVendorActivate(ObjectGuid guid);
void SendSpiritResurrect();
void SendBindPoint(Creature* npc);
+ void SendOpenTransmogrifier(ObjectGuid const& guid);
void SendAttackStop(Unit const* enemy);