//================================================================================================================================================================================================================================================================================================

    protected bool AttemptGen(ZoneDot dot, ZoneGenerator zoneGen)
    {
        if (!(column_uses[dot.stepNum].ContainsKey(zoneGen.activationKey) && zoneGen.maxColumnActivations <= column_uses[dot.stepNum][zoneGen.activationKey]) && !(total_uses.ContainsKey(zoneGen.activationKey) && zoneGen.maxWorldActivations <= total_uses[zoneGen.activationKey]))
        {
            if (zoneGen.CanActivate(dot))
            {
                if (zoneGen is PostProcessZoneGenerator)
                {
                    var   gen  = zoneGen as PostProcessZoneGenerator;
                    float prob = probabilities.ContainsKey(gen) ? probabilities[gen] : gen.probability;
                    if (prob >= bar.runCtrl.NextWorldRand(0, 100))
                    {
                        if (!probabilities.ContainsKey(gen))
                        {
                            probabilities.Add(gen, gen.probability);
                        }
                        probabilities[gen] /= gen.probabilityReductionFactor;
                        return(true);
                    }
                    else if (gen.probabilityReductionOnFail)
                    {
                        if (!probabilities.ContainsKey(gen))
                        {
                            probabilities.Add(gen, gen.probability);
                        }
                        probabilities[gen] /= gen.probabilityReductionFactor;
                    }
                }
                else
                {
                    return(true);
                }
            }
        }
        return(false);
    }