//================================================================================================================================================================================================================================================================================================ 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); }