public void MemberEngagingTarget(Creature member, Unit target) { GroupAIFlags groupAI = (GroupAIFlags)FormationMgr.CreatureGroupMap[member.GetSpawnId()].groupAI; if (groupAI == 0) { return; } if (member == m_leader) { if (!groupAI.HasAnyFlag(GroupAIFlags.MembersAssistLeader)) { return; } } else if (!groupAI.HasAnyFlag(GroupAIFlags.LeaderAssistsMember)) { return; } foreach (var pair in m_members) { Creature other = pair.Key; // Skip self if (other == member) { continue; } if (!other.IsAlive()) { continue; } if (((other != m_leader && groupAI.HasAnyFlag(GroupAIFlags.MembersAssistLeader)) || (other == m_leader && groupAI.HasAnyFlag(GroupAIFlags.LeaderAssistsMember))) && other.IsValidAttackTarget(target)) { other.EngageWithTarget(target); } } }