aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/game/GroupHandler.cpp20
-rw-r--r--src/game/Player.cpp2
-rw-r--r--src/shared/revision_nr.h2
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__