diff options
-rw-r--r-- | src/game/GroupHandler.cpp | 20 | ||||
-rw-r--r-- | src/game/Player.cpp | 2 | ||||
-rw-r--r-- | src/shared/revision_nr.h | 2 |
3 files changed, 7 insertions, 17 deletions
diff --git a/src/game/GroupHandler.cpp b/src/game/GroupHandler.cpp index a072b92a0d4..892e8e017a5 100644 --- a/src/game/GroupHandler.cpp +++ b/src/game/GroupHandler.cpp @@ -225,26 +225,16 @@ void WorldSession::HandleGroupDeclineOpcode( WorldPacket & /*recv_data*/ ) Group *group = GetPlayer()->GetGroupInvite(); if (!group) return; + // remember leader if online Player *leader = objmgr.GetPlayer(group->GetLeaderGUID()); - /** error handling **/ + // uninvite, group can be deleted + GetPlayer()->UninviteFromGroup(); + if(!leader || !leader->GetSession()) return; - /********************/ - - // everything's fine, do it - if(!group->IsCreated()) - { - // note: this means that if you invite more than one person - // and one of them declines before the first one accepts - // all invites will be cleared - // fixme: is that ok ? - group->RemoveAllInvites(); - delete group; - } - - GetPlayer()->SetGroupInvite(NULL); + // report WorldPacket data( SMSG_GROUP_DECLINE, 10 ); // guess size data << GetPlayer()->GetName(); leader->GetSession()->SendPacket( &data ); diff --git a/src/game/Player.cpp b/src/game/Player.cpp index 1fcfab152c3..e5de0154ad4 100644 --- a/src/game/Player.cpp +++ b/src/game/Player.cpp @@ -2165,7 +2165,7 @@ void Player::UninviteFromGroup() group->RemoveInvite(this); - if(group->GetMembersCount() <= 1) // group has just 1 member => disband + if(group->GetMembersCount() <= 1) // group has just 1 member => disband { if(group->IsCreated()) { diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index c16cc5a29b1..4de2813ddd8 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "7395" + #define REVISION_NR "7396" #endif // __REVISION_NR_H__ |