PRoConEvents.MULTIbalancer.IsInDispersalList C# (CSharp) Method

IsInDispersalList() private method

private IsInDispersalList ( PlayerModel player, bool ignoreWhitelist ) : bool
player PlayerModel
ignoreWhitelist bool
return bool
        private bool IsInDispersalList(PlayerModel player, bool ignoreWhitelist)
        {
            if (player == null) return false;
            if (player.Role != ROLE_PLAYER) return false;
            player.DispersalGroup = 0;
            PerModeSettings perMode = GetPerModeSettings();
            if (!perMode.EnableDisperseEvenlyList) return false;
            bool isDispersalByList = false;
            String extractedTag = ExtractTag(player);
            if (String.IsNullOrEmpty(extractedTag)) {
            extractedTag = INVALID_NAME_TAG_GUID;
            }
            String guid = (String.IsNullOrEmpty(player.EAGUID)) ? INVALID_NAME_TAG_GUID : player.EAGUID;
            if (fSettingDisperseEvenlyList.Count > 0) {
            if (fSettingDisperseEvenlyList.Contains(player.Name)
            || fSettingDisperseEvenlyList.Contains(guid)
            || fSettingDisperseEvenlyList.Contains(extractedTag)) {
            // Special case for whitelist options: clan tag on dispersal list, but Whitelist option enabled
            if (fSettingDisperseEvenlyList.Contains(extractedTag)
                && !fSettingDisperseEvenlyList.Contains(player.Name)
                && !fSettingDisperseEvenlyList.Contains(guid)
                && OnWhitelist
                && !ignoreWhitelist
                && CheckWhitelist(player, WL_DISPERSE)) {
                isDispersalByList = false;
            } else {
                isDispersalByList = true;
            }
            }
            }
            for (int i = 1; i <= 4; ++i) { // Up to 4 groups
            if (!isDispersalByList && fDispersalGroups[i].Count > 0) {
            fDispersalGroups[i] = new List<String>(fDispersalGroups[i]);
            if (fDispersalGroups[i].Contains(player.Name)
            || fDispersalGroups[i].Contains(guid)
            || fDispersalGroups[i].Contains(extractedTag)) {
                // Special case for whitelist options: clan tag on dispersal list, but Whitelist option enabled
                if (fDispersalGroups[i].Contains(extractedTag)
                    && !fDispersalGroups[i].Contains(player.Name)
                    && !fDispersalGroups[i].Contains(guid)
                    && OnWhitelist
                    && !ignoreWhitelist
                    && CheckWhitelist(player, WL_DISPERSE)) {
                    isDispersalByList = false;
                } else {
                    isDispersalByList = true;
                    player.DispersalGroup = i;
                }
                break;
            }
            }
            }
            return (isDispersalByList);
        }
MULTIbalancer