public float GetGroupWeight(CellGroup group)
    {
        if (group == _clan.CoreGroup)
        {
            return(0);
        }

        PolityProminence pi = group.GetPolityProminence(_clan.Polity);

        if (group.HighestPolityProminence != pi)
        {
            return(0);
        }

        if (!Clan.CanBeClanCore(group))
        {
            return(0);
        }

        if (group.Population < Clan.MinCorePopulation)
        {
            return(0);
        }

        float coreDistance = pi.FactionCoreDistance - MinCoreDistance;

        if (coreDistance <= 0)
        {
            return(0);
        }

        float coreDistanceFactor = MinCoreDistance / (MinCoreDistance + coreDistance);

        float minCoreProminenceValue = Mathf.Max(coreDistanceFactor, Clan.MinCorePolityProminence);

        return(pi.Value - minCoreProminenceValue);
    }