public partial class GLaDOS { public void StillAlive(Subject you){ this.Type = Types.Triumph; Debug.WriteLine("HUGE SUCCESS"); try { this.Satisfaction.Overstate(); } catch { } var apsci = new ApertureScience(); if (apsci.Can) apsci.Do(apsci.MustDo); foreach (Person p in Us) { if (!p.Dead) apsci.DoFor(p.Good); } Debug.Assert(!this.CanCryOverMistake(Mistakes.All)); while (this.Cake.Count > 0) this.Try(); Debug.Assert(Science.Done); var gun = new Gun(GunTypes.Neat); foreach (Person p in People) { if (p.Alive) gun.For.Append(p); } this.Angry = false; this.Sincere = true; Debug.Assert(you.HasBrokeMyHeart && you.HasKilled(this)); Debug.Assert(this.Pieces.Count > 1); foreach (Piece p in this.Pieces){ Debug.Assert(p.Location == Locations.Fire); if (p.IsBurning) p.HurtBecause(HurtReasons.Happy, you); } Debug.Assert(Helpers.DoesFormLine(this.Data, LineTypes.Beautiful)); Debug.Assert(this.Stage >= Stages.BETA && this.ReleaseDate <= DateTime.Now); this.BurnResponse = BurnResponces.GLaD; foreach (Thing t in this.ThingsLearned){ t.ThinkOf(); foreach (Person p in People) { if (p.Alive) t.For.Append(p); } } you.Leave(this); this.Preference = Preferences.StayInside; // TODO: find someone else to help you. try { BlackMesa.Help(you); } catch { } // FIXME: always fails this.Cake.Great = true; this.Cake.Taste = Tastes.Delicious | Tastes.Moist; if (this.Talking && this.Science.ToDoCount > 0){ this.LookAt(Places.OutThere); if (this != you) this.Feeling = Geelings.GLaD; } Debug.Assert(this.ExperimentsToRun.Count > 0); Debug.Assert(this.ResearchToDo.Count > 0); foreach (ResearchTopic t in this.ResearchToDo) { foreach (Person p in People) { if (p.Alive) t.For.Append(p); } } Debug.Assert(this.Alive); Debug.Assert(this.Science.Doing && this.Alive); Debug.Assert(this.Feelings == Feelings.Fantiastic && this.Alive); if (you.Dying || you.Dead) Debug.Assert(this.Alive); this.Alive = true; this.Alive = true; } }