diff options
author | Nay <dnpd.dd@gmail.com> | 2012-01-14 17:43:19 +0000 |
---|---|---|
committer | Nay <dnpd.dd@gmail.com> | 2012-01-14 17:43:19 +0000 |
commit | a369594d61c688127eff7c04e2a691400416b18d (patch) | |
tree | a838bc18f3e6afd5adc2b9bb88a0f48365eebf38 /src/server/game/Groups/Group.cpp | |
parent | 522683bfabca985034aad1dbadd0738e1cfe2cc6 (diff) |
Core/Group: Update CMSG_GROUP_RAID_CONVERT to 4.x. Based on SF sources and thanks Subv.
TODO: Test
Diffstat (limited to 'src/server/game/Groups/Group.cpp')
-rwxr-xr-x | src/server/game/Groups/Group.cpp | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/server/game/Groups/Group.cpp b/src/server/game/Groups/Group.cpp index b03f853a9e4..5f1b27a5d53 100755 --- a/src/server/game/Groups/Group.cpp +++ b/src/server/game/Groups/Group.cpp @@ -254,6 +254,37 @@ void Group::ConvertToRaid() player->UpdateForQuestWorldObjects(); } +void Group::ConvertToGroup() +{ + if (m_memberSlots.size() > 5) + return; // What message error should we send? + + m_groupType = GroupType(GROUPTYPE_NORMAL); + + if (m_subGroupsCounts) + { + delete[] m_subGroupsCounts; + m_subGroupsCounts = NULL;; + } + + if (!isBGGroup()) + { + PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_GROUP_TYPE); + + stmt->setUInt8(0, uint8(m_groupType)); + stmt->setUInt32(1, m_dbStoreId); + + CharacterDatabase.Execute(stmt); + } + + SendUpdate(); + + // update quest related GO states (quest activity dependent from raid membership) + for (member_citerator citr = m_memberSlots.begin(); citr != m_memberSlots.end(); ++citr) + if (Player* player = ObjectAccessor::FindPlayer(citr->guid)) + player->UpdateForQuestWorldObjects(); +} + bool Group::AddInvite(Player* player) { if (!player || player->GetGroupInvite()) |