aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Handlers/ChannelHandler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/Handlers/ChannelHandler.cpp')
-rw-r--r--src/server/game/Handlers/ChannelHandler.cpp19
1 files changed, 17 insertions, 2 deletions
diff --git a/src/server/game/Handlers/ChannelHandler.cpp b/src/server/game/Handlers/ChannelHandler.cpp
index bb6eab2565e..531642d6958 100644
--- a/src/server/game/Handlers/ChannelHandler.cpp
+++ b/src/server/game/Handlers/ChannelHandler.cpp
@@ -68,8 +68,23 @@ void WorldSession::HandleJoinChannel(WorldPacket& recvPacket)
return;
if (ChannelMgr* cMgr = ChannelMgr::forTeam(GetPlayer()->GetTeam()))
- if (Channel* channel = cMgr->GetJoinChannel(channelId, channelName, zone))
- channel->JoinChannel(GetPlayer(), password);
+ {
+ if (channelId)
+ { // system channel
+ if (Channel* channel = cMgr->GetSystemChannel(channelId, zone))
+ channel->JoinChannel(GetPlayer());
+ }
+ else
+ { // custom channel
+ if (Channel* channel = cMgr->GetCustomChannel(channelName))
+ channel->JoinChannel(GetPlayer(), password);
+ else if (Channel* channel = cMgr->CreateCustomChannel(channelName))
+ {
+ channel->SetPassword(password);
+ channel->JoinChannel(GetPlayer(), password);
+ }
+ }
+ }
}
void WorldSession::HandleLeaveChannel(WorldPacket& recvPacket)