Cragne Manor room M1F1: Foyer (Greg Frost)

This file is part of the Cragne Manor source code collection. Posted with the author's permission. All rights reserved.


"M1F1" by Greg Frost
 
Chapter 1 - Do Not Change Any Of This
 
Include Cragne Suite by Ryan Veeder.
 
[Don't mess with other people's rooms!]
 
M1F is a region.
 
M1F1 is a room in M1F.
 
[The following code is commented out and replaced with the new door code per Ryan's instructions:
 
The front door is a closed locked scenery door. The front door is inside from MGR1 and outside from M1F1. The manor key unlocks the front door. [you can also map going south to going through the door.]
 
New door code below:]
 
Door4 is a closed locked scenery door. Door4 is inside from MGR1a and outside from M1F1. [changed from MGR1 to subroom MGR1a per discussion with Matt W.] [It also makes sense to think of the door as being north of MGR1a and south of M1F1.] Key4 unlocks Door4.
 
[need to add a map connection from M1F1 to Door4 to south somehow so that when the player types "S" and the door is open, it will work properly. Currently the only way to enter the door is to type "out" which is not intuitive.]
 
[Terminated door between M1F1 and M1F2 per direction from Ryan Veeder.]
M1F2 is a room in M1F. M1F2 is west from M1F1.
 
[M1Fdoor12 is a closed locked scenery door. M1Fdoor12 is west from M1F1 and east from M1F2. The M1Fchapelkey unlocks M1Fdoor12.]
 
M1F3 is a room in M1F. M1F3 is east from M1F1.
 
[Added to this section per discussion with Ryan Veeder 7/11/2018 - north connection]
M1F6 is a room in M1F. M1F6 is north of M1F1.
 
Part 1 - Commentary
 
[commentary text]
Commentary of M1F1 is "I signed on to the Anchorhead tribute for two reasons: first, because Anchorhead is a great game, and second, because I figured that contributing to the project would be a good way to get familiar with Inform 7. Third and bonus, it seemed like a way to have fun with cool people like Ryan, Jenni, et al.[paragraph break]One of the things that impressed me the most about Anchorhead was the simultaneous richness and efficiency of the description. Lovecraftian horror is difficult to do without the prose becoming a little overcooked. The style of golden age text adventures, on the other hand, tends toward the spare or even terse. Anchorhead seems to marry both of these techniques without difficulty, creating evocative scenes with a few well-described locations and objects. Making a tribute has been a gratifying and also humbling experience. I've learned some things about what makes the original so good, while also despairing of being able to do it justice.[paragraph break]This is the first project I have completed in Inform. Somewhat optimistically, I figured that I could complete my room while moving from California to Washington, starting a new job, wrangling a baby, learning Inform 7, and developing techniques for descriptive writing. In retrospect probably any two of those would have been feasible at maximum. I wrote this room in short sprints in between the above. A lot of credit for getting it finished at all goes to my wife, Kristin, who put up with me taking on this bizarre project at a totally inopportune time. She did the heavy lifting with the baby and also alpha tested the room. Dan Ravipinto and Andrew Schultz provided beta testing and valuable feedback to make the room playable.[paragraph break]The Foyer is loosely based on both the Foyer from Anchorhead and the John Strong Mansion in Addison, Vermont. The original idea for the room was to be a place that felt relatively innocuous, with details that changed subtly over time to become more unsettling. The changes would take place as the player revisited the room several times on the way to other horrors elsewhere. I figured it was something I could put together in a few hours.[paragraph break]Four weeks later, after writing descriptions and responses for every conceivable scenery object (e.g. 'lick floor') in an empty junction, I realized I had underestimated somewhat. It didn't help that I learned how to work with tables solely to put together a way-too-complicated system for changing the time of day in the room, which didn't actually do as much for the mood as I had thought it would. I think what I've learned here is that getting caught up in tiny implementation details can distract from work that serves the purpose of the story. That said, I'm happy to have been able to contribute to this project and look forward to playing the final result."
 
Part 2 - The Room Description
 
The printed name of M1F1 is "Foyer (by Greg Frost)".
 
[Prompt description: Your room is M1F1. This is the first room players will see inside Cragne Manor (after running around the town and manor grounds for a little while). The way outside is south. Halls lead north and east. A door to the west is locked.] [The locked door to the west has since been removed.]
 
[Background description: It is the nineties. The PC is Naomi Cragne. Her husband Peter Cragne went up to his family’s mansion in Backwater, Vermont a while back, and she hasn’t heard from him since. Naomi arrives in Backwater and pokes around, uncovering secrets, unlocking doors with keys, until she figures out where Peter is. Cragne Manor oozes with the history of the Cragne family, which is full of weirdos, sorcerers, and monstrosities—and associations with an otherworldy entity named “Vaadignephod.”]
 
[Here's what I intend to happen in the final version of this room: The room starts out relatively innocuous, with minor hints about darker, creepier stuff that may or may not be going on elsewhere in the house, depending on the other authors. There are various scenery objects that the player can examine, including windows and minor bits of decoration.
 
The player will see that there are several other rooms immediately accessible from this one and move on, probably coming back through here multiple times as they explore other parts of the house. Behind the scenes, this room contains a counter that keeps track of how many times the player has been through here, which slowly changes the the time of day and associated descriptions of the room and windows, from morning to midnight. Hopefully I can implement the counter and rules for the time of day in a way that doesn't bog down the game.
 
When it is night, the stars will come out, and at midnight Andromeda wil become visible. If the player examines Andromeda they will get a little bit of cosmic horror text about galaxies colliding. Whether Vaadignephod has a pseudopod in this business is unknown.
 
If I totally run out of time on this and don't have the skill/inclination/baby-free hours to write custom descriptions for multiple times of day, I may say "fuck it" and make the time of day midnight from the start. We'll see how it goes.]
 
The description of M1F1 is "Standing in the narrow entry hall is like being at the mouth of a cave. The only light comes in through tall windows on either side of the door and a half-round window above. All of the furniture has been removed from the foyer, leaving tracks in the heavy dust. [first time]This house must have been abandoned for years. It's empty, and silent, and cold. [paragraph break]'Peter!' you shout. There's no reply. Not even an echo comes back to you. [paragraph break]Of course he's not here. You expected that; he wouldn't have locked you out. But whatever happened to him, this house is at the dark heart of it. [only][paragraph break][if M1F1-counter is 3]That's odd. When you first entered the house it was morning, but judging by the light coming through the windows it's already [M1F1-time].[otherwise][the Fanlight Text corresponding to a Time of M1F1-time in the Table of Times of Day][end if] Hallways lead west and east into other parts of the house. A doorway leads north; the front door is to the south."
 
Part 3 - Oh Hell, Clothing in M1F1
 
[jacket, pants, shoes, sweater, hair, ring?]
 
[idea: Naomi is dressed like Willow from Buffy the Vampire Slayer, in a red-brown v-neck sweater over a black tank top, with black pants, black calf-length boots, a black wool jacket, and a black ribbon choker. (God, there was so much black clothing in the late '90s.) Her hair is black, shoulder length, and straightened.]
 
The greg-jacket is scenery in M1F1. The printed name of the greg-jacket is "black wool jacket". Understand "coat" and "jacket" and "black wool jacket" and "wool coat" and "black wool coat" and "wool jacket" and "wool coat" as the greg-jacket. The description of the greg-jacket is "You've had this sturdy wool jacket for at least five years. One of the cuffs is a little frayed, but it keeps out the cold better than any of your others." Instead of touching the greg-jacket, say "The wool is tightly woven, but it's plenty broken in and moves with you. It feels a little thinner at the elbows."
 
[rules to skip standard responses about trying to take, wear, remove a scenery object]
Before doing something other than examining with the greg-jacket:
    say "Don't worry about your clothes right now. Find Peter.";
    rule fails.
 
The greg-sweater is scenery in M1F1. The printed name of the greg-sweater is "V-neck sweater". Understand "sweater" and "jumper" and "red sweater" and "brick-red" and "V-neck" and "v neck" as the greg-sweater. The description of the greg-sweater is "One of your V-neck sweaters from the Bon. You didn't really look at which one you grabbed from the closet when you packed; this is the brick-red one." Instead of touching the greg-sweater, say "It's a little scratchy, but not too bad."
 
[rules to skip standard responses about trying to take, wear, remove a scenery object]
Before doing something other than examining with the greg-sweater:
    say "Don't worry about your clothes right now. Find Peter.";
    rule fails.
 
The greg-boots are scenery in M1F1. The greg-boots are plural-named. Understand "boots" and "boot" and "shoes" and "shoe" and "feet" and "foot" as the greg-boots. The description of the greg-boots is "Your boots have gotten scuffed up and scratched from walking all over the village[if M1F1-counter is greater than 5] and the house[end if]."
 
[skip standard responses about trying to take, wear, remove a scenery object]
Before doing anything other than examining with the greg-boots:
    say "Your boots are fine.";
    rule fails.
 
Part 4 - Portable Objects in M1F1
 
[IMPORTANT NOTE: Do not use "understand X as Y when the location is Z" form for objects. Portable objects will break when moved out of the room, and for scenery the location requirement is a waste of time. Use this form only for custom actions in M1F1 - see rules section below.]
 
[Objects to include in the Foyer: hallways?, crest/arms?, planet signs on ceiling?, shoggoth, etc.]
 
[easter egg - a broken version of the amulet from Anchorhead; idea based on a suggestion by Dan Ravipinto during testing]
The greg-amulet is an object. The printed name of the greg-amulet is "broken silver amulet". Understand "broken amulet" and "silver amulet" and "broken silver amulet" and "damaged amulet" and "damaged silver amulet" and "amulet" and "silver hand" and "pendant" and "silver pendant" and "leather cord" and "leather thong" and "dented" and "groove" and "dark line" and "line" and "charm" as the greg-amulet. The description of the greg-amulet is "[if the greg-amulet is not handled]There is a small object under the dust. You lean over to look at it, trying not to sneeze. [end if]It's a tarnished silver pendant, about the size of your thumb, on a leather cord. [if the greg-amulet is not handled] It must have been dropped behind some piece of furniture and forgotten. [otherwise]The pendant is shaped like an open hand. It's been damaged - a deep groove, like a chisel mark, cuts across the palm, nearly breaking the pendant in half. [end if]".
 
After taking the greg-amulet for the first time:
    say "You take the pendant and sneeze as dust gets in your face. The charm is a silver hand, tarnished and dented. You hold the pendant at arm's length and shake the dust off.";
    now the amulet-found-flag is true.
 
Instead of tasting the greg-amulet, say "Old metal and dry leather." Instead of eating the greg-amulet, say "For a second you have a crazy impulse to put the pendant in your mouth. It passes." Instead of touching the greg-amulet, say "Except for the sharp edges of the groove, the pendant is smoothly polished. It must have been shiny when it was new." Instead of attacking the greg-amulet, say "It's broken already."
 
Part 5 - Scenery in M1F1
 
[The fanlight is located on the south wall above the front door. Its description changes with the time of day.]
The greg-fanlight is scenery in M1F1. The printed name of the greg-fanlight is "fanlight". Understand "fanlight" and "light" and "half-round" and "half-round window" and "half round" and "half round window" and "transom" and "transom window" and "glass" as the greg-fanlight [when the location is M1F1]. The description of the greg-fanlight is "The [one of]half-round window (fanlight?) [or]fanlight [stopping]above the front door has thick, wavy glass. [the Fanlight Text corresponding to a Time of M1F1-time in the Table of Times of Day]". Instead of taking or opening the greg-fanlight, say "The fanlight window doesn't look like it will move." Instead of attacking the greg-fanlight, say "Why would you want to break the window? Besides, it's too high to reach." Instead of eating the greg-fanlight, try eating the greg-sidelights.
 
[The sidelights are scenery on either side of the front door.]
The greg-sidelights are scenery in M1F1. The printed name of the greg-sidelights is "sidelight windows". The greg-sidelights are plural-named. Understand "sidelight" and "window" and "windows" and "sidelight windows" as the greg-sidelights [when the location is M1F1]. The description of the greg-sidelights is "Two tall, rectangular windows are set into the wall on either side of the front door. They look like they were added later. Maybe the new owner thought the foyer needed more light. [paragraph break][the Sidelight Text corresponding to a Time of M1F1-time in the Table of Times of Day]". Instead of taking or opening the greg-sidelights, say "The windows don't open." Instead of attacking the greg-sidelights, say "You'd tear your hands to ribbons if you broke the glass." Instead of eating the greg-sidelights, say "The windows don't look like food."
 
[grounds - quick object to describe outdoors without giving too much detail of rooms I know nothing about]
The greg-grounds are scenery in M1F1. The printed name of the greg-grounds is "manor grounds". Understand "grounds" and "park" and "yard" and "outside" and "trees" as the greg-grounds. The description of the greg-grounds is "Cragne Manor was probably once surrounded by lawns and a formal garden; now the property is overgrown and wild-looking. [the Sidelight Text corresponding to a Time of M1F1-time in the Table of Times of Day]". Instead of doing anything other than examining with the greg-grounds, say "That's not in the house."
 
[It's a floor, but you implemented it.]
The greg-floor is scenery in M1F1. The printed name of the greg-floor is "hardwood floor". Understand "floor" and "hardwood" and "hardwood floor" and "ground" and "patches" as the greg-floor [when the location is M1F1]. The description of the greg-floor is "Where the dust has been cleared, you can see that the hardwood's in pretty bad shape. There are discolored patches under the windows where the sun has bleached out the wood. There are also lots of scratches around the front door - deep ones. The owner must have had a big dog." Instead of searching the greg-floor, try searching the greg-dust. Instead of eating or tasting the greg-floor, say "What are you going to do, lick the floor?" Instead of attacking the greg-floor, say "The floor has already taken a beating."
 
[Scratches in the floor. Behind the scenes, I wanted to suggest (without knowing what anyone else was doing) some kind of sinister beast roaming around the Cragne manor, possibly kept as a pet. I liked the idea of including details that Naomi would not necessarily interpret as sinister, but that the player might have a different opinion about from being genre savvy.]
The greg-scratches are scenery in M1F1. The printed name of the greg-scratches is "scratches". Understand "scratches" and "gouges" as the greg-scratches [when the location is M1F1]. The description of the greg-scratches is "Looking closer, the scratches seem a little too far apart for a dog's nails. What kind of animal would have made these?" Instead of touching or taking the greg-scratches, say "You run your fingers over them. They feel deep." Instead of pushing or pulling the greg-scratches, try touching the noun. Instead of searching the greg-scratches, say "There doesn't seem to be much you can do with the scratched hardwood floor." Instead of eating or tasting the greg-scratches, try eating the greg-floor. Instead of attacking the greg-scratches, try attacking the greg-floor.
 
[scenery object for the walls; vaguely based on the John Strong Mansion foyer wallpaper, but abstract]
The greg-wall is scenery in M1F1. The printed name of the greg-wall is "foyer wall". Understand "wall" and "walls" and "wallpaper" as the greg-wall [when the location is M1F1]. The description of the greg-wall is "The wallpaper pattern has semi-abstract floral shapes in white on a blue background, bordered along the floor with a white moulding. None of the plants look familiar." Instead of taking or attacking the greg-wall, say "You slap the wall in frustration. 'God dammit, Peter!' you say to no one. [paragraph break]No one replies." Instead of searching the greg-wall, try searching the greg-dust.
 
The greg-moulding is scenery in M1F1. The printed name of the greg-moulding is "moulding". Understand "white moulding" and "moulding" and "baseboard" and "trim" as the greg-moulding [when the location is M1F1]. The description of the greg-moulding is "The white moulding along the bottom of the wall and over the doors has numerous scratches and dings. It looks like the furniture was moved out quickly and without much care." Instead of attacking the greg-moulding, say "It's suffered enough already." Instead of eating or tasting the greg-moulding, say "You'd have to be pretty desperate to eat wood. Besides, that's got to be lead paint on there."
 
The greg-doorway is scenery in M1F1. The printed name of the greg-doorway is "doorway". Understand "doorway" and "dent" and "dents" and "dented" as the greg-doorway. The description of the greg-doorway is "A doorway leads north. The elaborate moulding is dented in several places." Instead of attacking the greg-doorway, try attacking the greg-moulding. Instead of eating or tasting the greg-doorway, try eating the greg-moulding.
 
The greg-hallway is scenery in M1F1. The printed name of the greg-hallway is "hallway". Understand "hallway" and "hall" as the greg-hallway. The description of the greg-hallway is "The hardwood floor and wallpaper continue down a narrow hallway to the next room, which is dark. Aren't there any other windows in this house?". Instead of attacking the greg-hallway, say "Now you're thinking about attacking random things. This isn't good." Instead of eating the greg-hallway, say "I don't see how that would even work."
 
The greg-dust is scenery in M1F1. The printed name of the greg-dust is "dust". Understand "heavy layer of dust" and "heavy dust" and "layer of dust" and "dust" and "spot" and "clear spot" as the greg-dust [when the location is M1F1]. The description of the greg-dust is "Dust covers most surfaces in the foyer. Tracks on the floor show where people have been more recently; the dust is deeper along the walls[if the greg-amulet is not handled]. Near the west wall there is a dark line[otherwise]. There is a clear spot on the floor where you disturbed the dust[end if]". [change description of dust once you find the amulet]
 
Instead of examining the greg-dust:
    say "[description of the greg-dust]."; [avoid duplicating text but still have description]
    now the greg-amulet is in M1F1; [move amulet onstage]
    [now the amulet-found-flag is true;] [stop search rule from firing after seeing amulet]
    rule succeeds. [housekeeping]
 
Instead of taking the greg-dust, say "Moving the dust around at random is just going to make you sneeze like crazy[if amulet-found-flag is false]. You could try searching the dust instead, if you thought it would turn up something[end if]." Instead of pushing or pulling the greg-dust, try taking the noun. Instead of eating or tasting the greg-dust, say "No way, that's gross." Instead of attacking the greg-dust, say "It's dust, so... you win?" Instead of smelling the greg-dust, say "A nose full of dust will make you a sneezing, runny-nosed mess for hours."
 
Instead of searching the greg-dust:
    if the amulet-found-flag is false: [check that the amulet is not already found]
        Say "You crouch down to look at the area along the west wall. The dust is heavier here than in the rest of the room; your nose starts itching immediately. There is a small, dark shape under the dust. It looks like a pendant on a leather cord.";
        now the greg-amulet is in M1F1; [move amulet onstage]
        try taking the greg-amulet; [get custom taking text; don't duplicate work]
        set pronouns from the greg-amulet; [ensure "examine it" refers to amulet now]
        now the amulet-found-flag is true; [stop this rule from working again]
        rule succeeds; [not really important except for housekeeping]
    otherwise:
        say "You find nothing else in the dust."; [the amulet is already found]
        rule fails. [housekeeping]
 
[added to make dust more interactible and disambiguate between dust and tracks in the dust, per comment from Dan Ravipinto]
The greg-tracks are scenery in M1F1. The printed name of the greg-tracks is "tracks in the dust". The greg-tracks are plural-named. Understand "tracks" and "dust tracks" and "tracks in the dust" as the greg-tracks. The description of the greg-tracks is "Tracks in the dust lead to the hallways west and east; another set of tracks leads north. [one of]All of the marks are overlain with a thin layer of dust; nobody has been here for some time.[or]Your own footprints are the only new ones.[stopping]"
 
[At one point I was planning to implement a system of variable text where it would describe footprints in the dust leading to all of the rooms you have already visited. I abandoned this plan as impractical and insane.]
 
Instead of searching the greg-tracks, say "There doesn't seem to be much to tell from the tracks, they just lead to the other rooms. There is one area along the wall, though, where the dust is a little thicker." Instead of taking the greg-tracks, say "They're just marks in the dust." Instead of attacking the greg-tracks, try attacking the greg-dust. Instead of eating or tasting the greg-tracks, say "There's no there there."
 
[shadows of furniture removed from the foyer]
The greg-furniture is scenery in M1F1. The printed name of the greg-furniture is "shadows of furniture". Understand "shadows of furniture" and "furniture" and "discolored" and "discolored spaces" as the greg-furniture. The description of the greg-furniture is "It's hard to say what was in the foyer originally - a coat rack, a bench, pictures on the walls - they've all been removed, leaving discolored spaces on the walls and floor. Maybe it was all sold at auction. Maybe someone just didn't want it here." Instead of touching or taking the greg-furniture, say "It's all gone." Instead of attacking the greg-furniture, say "Even if you wanted to damage the furniture, it's long gone."
 
[catchall to intercept "x room"]
The greg-foyer-object is scenery in M1F1. The printed name of the greg-foyer-object is "foyer". Understand "foyer" and "entry hall" and "entry" and "house" as the greg-foyer-object. Instead of examining the greg-foyer-object, try looking.
 
Part 6 - Celestial Objects
 
[sun object remains in play, description changes at night time]
The greg-sun is scenery in M1F1. The printed name of the greg-sun is "sun". [The greg-sun is improper-named.] Understand "sun" and "sunlight" and "shaft" and "shafts" as the greg-sun. The description of the greg-sun is "[the Sun Text corresponding to a Time of M1F1-time in the Table of Times of Day]". Instead of attacking the greg-sun, say "The sun could probably take you in a fight." Instead of eating or tasting the greg-sun, say "It tastes kinda burnt." Instead of taking the greg-sun, say "You can't reach it, it's too heavy to lift, and it would burn you to a cinder long before you could try it."
 
[keep stars object offstage until night-time in the room per the M1F1-time]
The greg-stars are scenery [in M1F1]. [The greg-stars are improper-named.] The printed name of the greg-stars is "stars". The greg-stars are plural-named. Understand "stars" and "star" and "twinkles" and "twinkling" and "large star" and "larger star" and "constellations" and "stellae" as the greg-stars [when the location is M1F1]. The description of the greg-stars is "The stars stand out tack-sharp against the night sky. [if M1F1-time is midnight]One tiny, cloudlike blur in Andromeda twinkles.[end if]"
 
Instead of taking the greg-stars, say "You can't reach them." Instead of attacking the greg-stars, say "At the speed of light, it would be more than four years before the nearest star to the sun noticed your attempt at violence, which it won't, because you mean nothing to a ball of plasma tens of thousands of times more massive than the Earth." Instead of entering the greg-stars, say "You're already among them. You cling to the surface of a rock hurtling through the void." Instead of eating the greg-stars, say "In the void of space, the stars would devour you."
 
[keep Andromeda offstage until night-time in the room per the counter variable]
greg-andromeda is scenery [in M1F1]. The printed name is "Andromeda". greg-andromeda is proper-named.
Understand "andromeda" and "galaxy" and "andromeda galaxy" and "cloud-like blur" and "cloud" and "cloudlike" and "blur" as greg-andromeda [when the location is M1F1]. The description of greg-andromeda is "[first time]The cloud resolves itself into a disc. It is a distant spiral galaxy, the Andromeda galaxy, whirling through the void like a scythe. Andromeda is plunging irrevocably toward the Milky Way at hundreds of thousands of miles per hour. [paragraph break]Andromeda is coming. Soon, far too soon, its trillion stars will collide with the Milky Way. Both galaxies will be torn apart in the collision, and for a billion years or more chaos will reign. Some of the stars will be swallowed by the two massive black holes at the center of each galaxy; other stars will collide in titanic explosions of light and death; still others will be ejected into intergalactic space, doomed to wander alone until they burn out into blackness. The final shape of the resulting galaxy will be monstrous and unrecognizable. [paragraph break]It is cold comfort that the Earth will have been burned to a cinder by this time, destroyed by the doomed and greedy sun before another star could snatch its prize. [paragraph break]You hide your eyes from the light of that evil star. [only]You don't want Andromeda to see you."
 
Instead of taking greg-andromeda, say "It's too far away - for now." Instead of attacking greg-andromeda, say "You slam your fists against the window. Andromeda neither notices nor cares." [This doesn't work.] Instead of eating or tasting greg-andromeda, say "OK, what are you even trying to do here." Instead of burning greg-andromeda, say "It's already on fire, in a manner of speaking. Andromeda is made up of a trillion of the biggest, dirtiest nuclear bombs in the universe, all going off simultaneously, and all of them barreling toward you with absurd speed." Instead of entering greg-andromeda, say "Soon the void will enter into you."
 
Part 7 - Internal Variables in M1F1
 
[keep track of whether the amulet has been found]
The amulet-found-flag is a truth state that varies. The amulet-found-flag is false.
 
[keep track of the number of times the player has been in this room]
M1F1-counter is a number that varies. The M1F1-counter is 0.
 
[add one to the counter after leaving the room; "continue the action" ensures that LOOK and other rules aren't bypassed in the next room]
After going from M1F1:
    increment the M1F1-counter;
    continue the action.
 
[categorize the times of day as the value greg-time]
greg-time is a kind of value. morning, noon, afternoon, evening, twilight, night, and midnight are greg-times.
 
[keep track of the time of day in M1F1; start play in the morning]
M1F1-time is a greg-time that varies. M1F1-time is morning.
 
[create lookup table for times of day and descriptions]
Table of Times of Day
Time    Counter    Sidelight Text    Fanlight Text    Sun Text
morning    0    "The morning sun casts long shadows across the grounds."    "Morning light slants across the floor."    "The sun is fully up in the southeast."
noon    2    "The sun stands overhead, placing the grounds in sharp relief."    "The noon sun casts shafts of light into the center of the room."    "The sun is hanging directly overhead outside."
afternoon    3    "The afternoon sun casts long shadows across the grounds."    "Afternoon light slants across the floor."    "The sun is heading down to the west."
evening    5    "The sunset throws the grounds into impenetrable shadow."    "Outside the windows, the sunset is an ominous red."    "The sun is barely above the horizon now."
twilight    7    "The grounds are fully dark now, with purple sky above."    "The sky outside is purple, with a few stars already visible."    "The sun is below the horizon."
night    11    "The grounds are totally black. Anything could be out there."    "Countless stars are appearing in the sky outside."    "The sun is down and it's night outside."
midnight    13    "The grounds are totally black. The darkness seems almost like it is moving."    "The night sky is dark and full of stars[first time]. One larger star stands out in the center of the fanlight window[only]."    "The sun is gone."
 
Part 8 - Special Rules in M1F1
 
[Rule for determining time of day based on counter of times the player has been in this room. Each time the player enters M1F1, set the time of day if it matches one of the numbers. If the time is already midnight, do nothing.]
Before going to M1F1:
    if M1F1-time is midnight: [check first whether it's midnight; if so, skip running through the table]
        continue the action; [do nothing but actually go into the room]
    otherwise:
        repeat with N running from 1 to the number of rows in the Table of Times of Day: [go through all table rows]
            if M1F1-counter is Counter in row N of the Table of Times of Day: [check that a table entry exists]
                now M1F1-time is Time in row N of the Table of Times of Day; [change time based on counter]
                if M1F1-time is twilight:
                    now greg-stars is in M1F1; [add stars to room at twilight]
                otherwise if M1F1-time is midnight:
                    now greg-andromeda is in M1F1; [add Andromeda at midnight]
                continue the action. [actually go into the room]
 
[The above rule also moves stars, Andromeda into M1F1 at night & midnight. Need this to happen the first time it becomes night/midnight and then not fire again.]
 
[added the below rule to make front door map connections work; player will expect to be able to type "south" as well as "out" in order to leave through the front door.]
Instead of going south when the location is M1F1, try entering Door4.
 
[This if statement adds some variable text if you try to go up rather than other directions like NW or NE. The noun is the direction-object. Modified so it won't mess with trying doors - doesn't work, commented out.]
[Instead of going nowhere from M1F1:
    if the noun is south:
        continue the action;
    otherwise say "There are halls to the west and east, a doorway to the north, and a front door to the south[if the noun is up]. It feels like there should be a staircase here leading up to the second floor, but there isn't one[end if].";
    continue the action.
]
 
Rule for printing the name of Door4 when the location is M1F1:
    say "front door".
 
[additional door rules for better modeling behavior in M1F1]
Door4 is improper-named. Understand "front door" and "front" and "door" as Door4 [when the location is M1F1]. Instead of examining Door4 when the location is M1F1, say "It's a solid wooden door, painted white with black hardware. [if Door4 is open]It's currently hanging open. The outside is grimy and faded.[otherwise]It's closed." Instead of attacking Door4 when the location is M1F1, say "You kick the door. All it accomplishes is making your foot hurt." Instead of eating or tasting Door4 when the location is M1F1, say "You'd have to be pretty desperate to eat wood. Besides, that's got to be lead paint on there."
 
[Custom actions: the general form is "Understand "ACTION_NAME" as "CUSTOM_ACTION" when the location is M1F1.]
 
Part 9 - Custom Responses to Default Actions in M1F1
 
[rule superseding the player description in this room]
Instead of examining the player when the location is M1F1, say "You're bundled up in your black wool jacket[if the greg-amulet is handled], which is now a little dusty, [end if] and the brick red sweater. Your hair is tied back to keep it out of the way."
 
[directions]
Instead of examining the north when the location is M1F1, say "There's a doorway on the north wall opposite the front door."
Instead of examining the south when the location is M1F1, try examining Door4.
Instead of examining the west when the location is M1F1, say "A hallway goes west. The next room is in darkness."
Instead of examining the east when the location is M1F1, say "A hallway goes east. The next room is in darkness."
 
[smelling rule]
Instead of smelling when the location is M1F1, say "The house smells old. There's something nastier, too, like a dead rat in the basement."
 
[listening rule]
Understand "listen to M1F1" and "listen to house" and "listen to foyer" and "listen to room" and "listen to hallway" and "listen to doorway" as listening when the location is M1F1. Instead of listening when the location is M1F1, say "It's silent. You strain to pick out any sound in the stillness[first time].[paragraph break]The floor creaks too loudly as you shift your weight. For a second, it feels as though the house is rocking underneath you like the deck of a boat. You take a deep breath and blink a few times. The feeling passes[only]."
 
[jumping rule]
Instead of jumping when the location is M1F1, say "This place makes you jumpy enough already."
 
[singing rule]
[Instead of singing when the location is M1F1, say "Night, night of matter[line break]Black flowers blossom[line break]Fearless on my breath[line break]"]
 
[burning rule - make better so that it triggers only on non-flammable objects, improve text]
Instead of burning something when the location is M1F1, say "You could burn this place down. It would be easy."
 
[eating rule - inedible objects]
[Instead of eating or tasting something which is not edible when the location is M1F1, say "That's not food."]
 
[thinking rule]
Instead of thinking when the location is M1F1, say "There is something seriously wrong with this place. The sooner you can do what you need to and get out, the better."
 
[waiting rule]
After waiting when the location is M1F1, say "[one of]You breathe in and out a few times. Your breath sounds too loud in the stillness.[or]You try to stand perfectly still.[or]The house creaks.[or]You turn your head from side to side, not sure where to go next.[or]A few seconds slip away.[or]You stare at the dark hallway, trying to make out any details in the room beyond. The darkness seems to ripple. You rub your eyes. The optical illusion is gone.[cycling]".
 
[look under rule]
Instead of looking under something when the location is M1F1, say "There doesn't seem to be much point in looking under the [noun]."
 
[hair rule]
Understand "hair" and "examine hair" as a mistake ("It's tied back in a ponytail to keep it out of your face.") when the location is M1F1.
 
[follow tracks rule]
Understand "follow tracks" as a mistake ("The tracks just lead in from the other rooms and out the front door.") when the location is M1F1.
 
[Peter isn't here rule]
Understand "examine peter" as a mistake ("He isn't here. Why isn't he here? Where is he?") when the location is M1F1.
 
[licking floor rule]
Understand "lick floor" as a mistake ("That's not a verb I recognize. Also, gross.") when the location is M1F1.
 
[XYZZY rule]
Understand "xyzzy" as a mistake ("Nothing happens.") when the location is M1F1.
 
Understand "plugh" and "plover" as a mistake ("A hollow voice says, 'Yawn.'") when the location is M1F1.
 
Part 10 - Testing Objects in M1F1 - Delete this Section Prior to Release
 
[delete this section prior to release]
 
[test room to make sure door works]
MGR1a is a room. The printed name of MGR1a is "MGR1a (test version)". The description of MGR1a is "[location] is a test version of the final room written by another contributor. I have no idea what eldritch horrors will occur here.[paragraph break]The Foyer (M1F1) is [direction of Door4 from location] from here." Instead of going north when the location is MGR1a, try entering Door4.
 
[placeholder descriptions of other rooms]
M1F2 is a room in M1F. The printed name of M1F2 is "M1F2 (test version)". The description of M1F2 is "[location] is a test version of the final room written by another contributor. I have no idea what eldritch horrors will occur here.[paragraph break]The Foyer (M1F1) is east from here."
 
M1F3 is a room in M1F. The printed name of M1F3 is "M1F3 (test version)". The description of M1F3 is "[location] is a test version of the final room written by another contributor. I have no idea what eldritch horrors will occur here.[paragraph break]The Foyer (M1F1) is west from here."
 
M1F6 is a room in M1F. The printed name of M1F6 is "M1F6 (test version)". The description of M1F6 is "M1F6 is a test version of the final room written by another contributor. I have no idea what eldritch horrors will occur here.[paragraph break]The Foyer (M1F1) is south from here."
 
[test key to make sure door works]
Key4 is an object. The printed name of Key4 is "brass key". Understand "key" and "brass key" as Key4. The description is "This is a key for testing the front door. Don't lose it!"
 
[quickly view value of M1F1-counter at this point in the game; delete before release]
M1F1-enunciator is scenery in M1F1. Understand "M1F1" as the M1F1-enunciator when the location is M1F1. The description is "The number of times you have left M1F1 is [M1F1-counter]. The current time of day is [M1F1-time]."
 
[disambiguation test door]
[Door2 is a door in M1GR1a. Door2 is east of M1GR1a and west of M1F2. The description of Door2 is "TEST DOOR. You really shouldn't be seeing this text at all in a release."]
 
[need to update this with final testing]
Test me with "x me / x jacket / x sweater / x floor / x sidelight / x fanlight / x wall / x dust / x tracks / x furniture / search dust / x amulet / unlock door4 with key4 / open door / out / in / w / e / hit wall / x window / x sun / w / e / e / w / n / s / x sidelight / x fanlight / x door / close door / x door / open door / s / in / w / e / e / w / n / s / x stars / e / w / x grounds / n / s / listen / e / w / s / in / x andromeda".
 
[test code to make sure everything has a description; example 2 from 13.1 of Inform Recipe Book]
[Note that Door4 will fail this test by design; it has an instead rule rather than a description]
When play begins (this is the run property checks at the start of play rule):
    now the player has Key4;
    say "Hi! Thanks for testing my room. It's a big help.[paragraph break]For testing purposes, here are some things you'll want to know:[line break]1. In the final game the front door is locked and you need a key to get in. I'm starting you inside with the key in your inventory so you can try unlocking the door.[line break]2. The map connections to North, South, West, and East are all valid. You'll see some placeholder text for those other rooms if you go in those directions, and I hope you'll check them all out during your test. In fact, it would be really helpful if you could leave and come back to this room at least 13 times.[line break]3. To start recording a transcript of your playthrough, type TRANSCRIPT ON and a save prompt will come up. To finish recording, type TRANSCRIPT OFF.[line break]4. Try anything you can reasonably think of. If you get default responses that sound dumb or don't make any sense, or if you try to do something that I have hinted poorly or not implemented responses for, those are helpful for me to know about and I will try to fix them before the Friday 8/03 deadline.[paragraph break]";
    [check that all objects in the room have descriptions]
    repeat with item running through things:
        if description of the item is "" and the item is not Door4:
            say "[item] has no description."