public static void RefreshOrgans(this BasicChar bc)
    {
        Organs        so      = bc.SexualOrgans;
        List <Dick>   dicks   = so.Dicks;
        List <Balls>  balls   = so.Balls;
        List <V****a> vaginas = so.Vaginas;
        List <Boobs>  boobs   = so.Boobs;

        dicks.RemoveAll(d => d.Size <= 0);
        balls.RemoveAll(b => b.Size <= 0);
        vaginas.RemoveAll(v => v.Size <= 0);
        boobs.RemoveAll(b => b.Size <= 0);
        float ballsRatio  = balls.Total() * 2f + 1f;
        float vaginaRatio = vaginas.Total() * 1.5f + 1f;

        if (so.GenderPrefActive)
        {
            if (so.GenderPref == Genders.Cuntboy)
            {
                vaginaRatio -= 100;
            }
            else if (so.GenderPref == Genders.Dickgirl)
            {
                vaginaRatio += 100;
            }
        }
        Essence masc         = bc.Essence.Masc;
        float   StableAmount = bc.TotalStableEssence();

        if (masc.Amount > StableAmount)
        {
            if (dicks.Total() <= ballsRatio)
            {
                if (dicks.Exists(d => masc.Amount >= d.Cost))
                {
                    foreach (Dick d in dicks)
                    {
                        if (masc.Amount >= d.Cost)
                        {
                            masc.Lose(d.Grow());
                            break;
                        }
                    }
                }
                else if (masc.Amount >= dicks.Cost())
                {
                    masc.Lose(dicks.Cost());
                    dicks.AddDick();
                }
            }
            else
            {
                if (balls.Exists(b => masc.Amount >= b.Cost))
                {
                    foreach (Balls b in balls)
                    {
                        if (masc.Amount >= b.Cost)
                        {
                            masc.Lose(b.Grow());
                            break;
                        }
                    }
                }
                else if (masc.Amount >= balls.Cost())
                {
                    masc.Lose(balls.Cost());
                    balls.AddBalls();
                }
            }
        }
        Essence femi = bc.Essence.Femi;

        if (femi.Amount > StableAmount)
        {
            if (boobs.Total() <= vaginaRatio)
            {
                if (boobs.Exists(b => femi.Amount >= b.Cost))
                {
                    foreach (Boobs b in boobs)
                    {
                        if (femi.Amount >= b.Cost)
                        {
                            femi.Lose(b.Grow());
                            break;
                        }
                    }
                }
                else if (femi.Amount >= boobs.Cost())
                {
                    femi.Lose(boobs.Cost());
                    boobs.AddBoobs();
                }
            }
            else
            {
                if (vaginas.Exists(v => femi.Amount >= v.Cost))
                {
                    foreach (V****a v in vaginas)
                    {
                        if (femi.Amount >= v.Cost)
                        {
                            femi.Lose(v.Grow());
                            break;
                        }
                    }
                }
                else if (femi.Amount >= vaginas.Cost())
                {
                    femi.Lose(vaginas.Cost());
                    vaginas.AddVag();
                }
            }
        }
    }