aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities
diff options
context:
space:
mode:
authorNay <dnpd.dd@gmail.com>2011-09-04 18:56:04 +0100
committerNay <dnpd.dd@gmail.com>2011-09-04 18:56:04 +0100
commitbbde479f4aab7473373471f7cb5c266e5d31d1f0 (patch)
tree92e7b9703273826bbd03c0ca89d41f15d5964d73 /src/server/game/Entities
parent3ccfb5fefb1563442942948be40f7807ae9d57de (diff)
Core/Channels: Fix the console error "opcode CMSG_MESSAGECHAT have unprocessed tail data" and some logic problems when joining/leaving some channels (like only be able to join LFG inside a city)
Diffstat (limited to 'src/server/game/Entities')
-rwxr-xr-xsrc/server/game/Entities/Player/Player.cpp20
1 files changed, 7 insertions, 13 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 8742deb2eb5..7052615e9c1 100755
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -5522,14 +5522,14 @@ void Player::RepopAtGraveyard()
bool Player::CanJoinConstantChannelInZone(ChatChannelsEntry const* channel, AreaTableEntry const* zone)
{
- if (channel->flags & CHANNEL_DBC_FLAG_ZONE_DEP)
- {
- if (zone->flags & AREA_FLAG_ARENA_INSTANCE)
- return false;
+ if (channel->flags & CHANNEL_DBC_FLAG_ZONE_DEP && zone->flags & AREA_FLAG_ARENA_INSTANCE)
+ return false;
- if ((channel->flags & CHANNEL_DBC_FLAG_CITY_ONLY) && !(zone->flags & AREA_FLAG_CAPITAL))
- return false;
- }
+ if ((channel->flags & CHANNEL_DBC_FLAG_CITY_ONLY) && (!(zone->flags & AREA_FLAG_SLAVE_CAPITAL)))
+ return false;
+
+ if ((channel->flags & CHANNEL_DBC_FLAG_GUILD_REQ) && GetGuildId())
+ return false;
return true;
}
@@ -5577,12 +5577,6 @@ void Player::UpdateLocalChannels(uint32 newZone)
{
if (ChatChannelsEntry const* channel = sChatChannelsStore.LookupEntry(i))
{
- if (!(channel->flags & CHANNEL_DBC_FLAG_ZONE_DEP))
- continue; // Not zone dependent, don't handle it here
-
- if ((channel->flags & CHANNEL_DBC_FLAG_GUILD_REQ) && GetGuildId())
- continue; // Should not join to these channels automatically
-
Channel* usedChannel = NULL;
for (JoinedChannelsList::iterator itr = m_channels.begin(); itr != m_channels.end(); ++itr)