Update to Trinity 863.

--HG--
branch : trunk
This commit is contained in:
megamage
2009-01-16 14:32:47 -06:00
36 changed files with 781 additions and 95 deletions

View File

@@ -295,12 +295,14 @@ bool Group::AddMember(const uint64 &guid, const char* name)
uint32 Group::RemoveMember(const uint64 &guid, const uint8 &method)
{
BroadcastGroupUpdate();
// remove member and change leader (if need) only if strong more 2 members _before_ member remove
if(GetMembersCount() > (isBGGroup() ? 1 : 2)) // in BG group case allow 1 members group
{
bool leaderChanged = _removeMember(guid);
Player *player = objmgr.GetPlayer( guid );
Player *player = objmgr.GetPlayer( guid ); // FG: TODO: could be removed, its just here for consistency
if (player)
{
WorldPacket data;
@@ -1521,3 +1523,20 @@ void Group::_homebindIfInstance(Player *player)
player->m_InstanceValid = false;
}
}
void Group::BroadcastGroupUpdate(void)
{
// FG: HACK: force flags update on group leave - for values update hack
// -- not very efficient but safe
for(member_citerator citr = m_memberSlots.begin(); citr != m_memberSlots.end(); ++citr)
{
Player *pp = objmgr.GetPlayer(citr->guid);
if(pp && pp->IsInWorld())
{
pp->ForceValuesUpdateAtIndex(UNIT_FIELD_BYTES_2);
pp->ForceValuesUpdateAtIndex(UNIT_FIELD_FACTIONTEMPLATE);
DEBUG_LOG("-- Forced group value update for '%s'", pp->GetName());
}
}
}