All pastes #1537368 Raw Edit

Still Alive

public text v1 · immutable
#1537368 ·published 2009-08-21 07:14 UTC
rendered paste body
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;
		
	}
}