public static void Think(this Forest forest) { forest.LifeCount = 0; foreach (Doable d in forest.Doables.Values) { d.Unlocked = false; } forest.Modifiers.Clear(); forest.Values.Clear(); forest.ChangeValue(E.SV_THINKS, 1); foreach (string skill in Statics.skills) { forest.Xp[skill] = 100; forest.TalentPoints[skill] = 0; } foreach (Entity e in forest.Entities.Values) { forest.SoftValues[E.SV_COUNT + e.Name] = e.Amount; if (!forest.SoftValues.ContainsKey(E.SV_MAX_COUNT + e.Name)) { //forest.Values[E.SV_MAX_COUNT + e.Name] = 0; } if (e.Amount > forest.SoftValues[E.SV_MAX_COUNT + e.Name]) { forest.SoftValues[E.SV_MAX_COUNT + e.Name] = e.Amount; } } foreach (Entity g in forest.Entities.Values) { g.OnReset(1); } Initializer.Init(forest); forest.Trigger(E.TRG_THINK_COMPLETED); foreach (Trophy g in forest.GetEntities(E.GRP_TROPHIES)) { g.OnAdd(1); } if (!forest.Running) { forest.Running = true; forest.StartCalculation(); } }