While (AwakeBeforeSun()) {
Case ListenForKids(): {
1: Hear(Giggling | WhispersInHallway): ChristmasMorning();
2: Silence : LayAwakeEyesClosed(5 minutes);
}
}
Function ChristmasMorning() {
CheckSpouseSleepStatus(); //Spouse may be simultaneously checking your sleeping status
SignalToKidsYouAreAwake(); //Note: Giggling noises likely to increase
QuicklyGetDressed("pjs", "santa hat",);
StageKidsAtTopOfStairs();
Coffee();
//Find best angle between tree and stairs
Shout("Ok, you can come down now");
EnjoyWatchingKidsFaces();
RandomlyAssignSeating();
Santa = RandomlyAssignSanta();
PlayHolidayMusic(); //Optional Real Live Fire or Netflix Yule Log
Shout("Merry Christmas!");
PresentDistribution(Santa);
// Present Distribution likely to take a while
AssessStateOfRoom();
PileReusableBoxes();
OverStuffWrappingPaperIntoRecyclableBag();
Foreach (person) {
StackGiftsUnderTree(person);
SelectSomethingToFurtherInspect(person);
}
SecondBreakfast();
OpenStockings(); //This routine could be placed before PresentDistribution in some households
Nap();
}
Function PresentDistribution(Santa) {
OwnGifts=0;
Global Timer = 0;
While (GiftsUnderTree > 0) {
GrabNearestGift();
If (GiftTag = "self", OwnGifts++, GiveGift(GiftTag)); //Be overly unselfish by delaying opening own gifts
If (OwnGifts > 3, OpenGift(Santa), OpenGift(!Santa)); // 3:1 ratio seems to work well
Timer = Timer + 3 minutes;
If (Timer > 45 minutes && Coffee==0, Coffee());
If (Timer > 90 minutes, Breakfast());
}
}