Permission to Visit by Ron Newcomb begins here. "Implements 'GO TO'-style verbs VISIT, ATTEND, FIND, GO, TRAVEL TO, and RETURN with character-based permission-and-invitation serving as lock-and-key." Section - Some Basic Definitions [Don't capitalize] nowhere specific is a region. The map region of a room is usually nowhere specific. [ We will use "object" instead of "person" for authorial flexibility -- see the keycard example. ] A region has an object called the gatekeeper. The gatekeeper of a region is usually nothing. [ To use the following, you must have a gatekeeper defined for every region, and a map region defined for every room, in the entire game. Else, "decide which" will complain it cannot decide on "nothing". ] To decide which object is keeper of (place - a room): decide on the gatekeeper of the map region of the place. A room can be public. A room is usually not public. Definition: a room is nearby if the map region of it is the map region of the location. Definition: a region is player-owned: if the player is the gatekeeper of it, decide yes; decide no. Definition: a region is other-owned: if the gatekeeper of it is not nothing, decide yes; decide no. To decide whether (character 1 - a thing) has/have/-- the/-- permission of/from/-- (character 2 - a thing) to access (destination - a region): repeat through the table of Open Invitations begin; if character 2 is the invitor entry and character 1 is the invitee entry begin; if not there is a place entry, decide yes; if the place entry is the destination, decide yes; end if; end repeat; repeat through the table of Temporary Invitations begin; if character 2 is the invitor entry and character 1 is the invitee entry begin; if not there is a place entry, decide yes; if the place entry is the destination, decide yes; end if; end repeat; if character 1 carries character 2, decide yes; decide no. To decide whether (character 1 - a thing) does/has/do/have/-- doesn't/not/hasn't/haven't/no /has/have/-- the/-- permission of/from/-- (character 2 - a thing) to access (destination - a region): if character 1 has permission from character 2 to access destination, decide no; decide yes. Section - Movement Verbs Understand the command "goto" as something new. [ I specifically "break out" the below Understand statments to further enforce each verb's noun-type preference VISIT, V : person takes precedence, then room. Thing only if nothing else is available. FIND, F : thing takes precedence, then person. Room only if nothing else is available. TRAVEL, ATTEND, GO, RETURN, G : room takes precedence, then person. Thing only if nothing else available. ] Travelling to is an action applying to one visible thing. Finding is an action applying to one visible thing. Carry out an actor finding (this is the Find Uses Travel-To rule): if the noun is a room, try actor travelling to the noun; otherwise try actor travelling to the location of the noun. Visiting is an action applying to one visible thing. Carry out an actor visiting (this is the Visit Uses Travel-To rule): if the noun is a room, try actor travelling to the noun; otherwise try actor travelling to the location of the noun. [ Had a runtime error on " try Bob visiting the library"; these if statements fix that] Understand "find [any thing]" or "f [any thing]" as finding. Understand "visit [any person]" or "v [any person]" as visiting. Understand "go to/toward/at/into [any room]" or "goto [any room]" or "go [any room]" or "go back to/toward/at/into [any room]" or "return to/toward/at/into [any room]" or "visit [any room]" or "v [any room]" or "travel to/toward/at/into [any room]" or "attend [any room]" or "attend to [any room]" or "atend [any room]" or "atend to [any room]" or "return [any room]" or "return to [any room]" as travelling to. Understand "go to/toward/at/into [any person]" or "go [any person]" or "goto [any person]" or "go back to/toward/at/into [any person]" or "return to/toward/at/into [any person]" or "travel to/toward/at/into [any person]" or "attend [any person]" or "attend to [any person]" or "atend [any person]" or "atend to [any person]" or "return [any person]" or "return to [any person]" as visiting. Understand "go to/toward/at/into [any thing]" or "go [any thing]" or "goto [any thing]" or "go back to/toward/at/into [any thing]" or "return to/toward/at/into [any thing]" or "visit [any thing]" or "travel to/toward/at/into [any thing]" or "attend [any thing]" or "attend to [any thing]" or "atend [any thing]" or "atend to [any thing]" or "return [any thing]" or "return to [any thing]" or "v [any thing]" as finding. Understand "find [any person]" or "f [any person]" as visiting. Understand "find [any room]" or "f [any room]" as travelling to. [ These rules exist so "go to the kitchen" always chooses the kitchen in the same house you are in, assuming each house is a region. Likewise for nearby people or things. ] Does the player mean visiting when the noun is nearby: it is likely. Does the player mean travelling to when the noun is nearby: it is likely. Does the player mean finding when the noun is nearby: it is likely. Does the player mean travelling to when the noun is public: it is likely. Does the player mean visiting a person: it is likely. Does the player mean visiting a room: it is possible. Does the player mean visiting a thing: it is unlikely. Does the player mean travelling to a room: it is likely. Does the player mean travelling to a person: it is possible. Does the player mean travelling to a thing: it is unlikely. Does the player mean finding a thing: it is likely. Does the player mean finding a person: it is possible. Does the player mean finding a room: it is unlikely. [ All the movement verbs in this extension call Travelling To. Visit and Find merely do a quick translation before calling Travelling To.] The source region and the destination region are regions that vary. The travelling to action has a room called the source. The travelling to action has a room called the destination. Setting action variables for travelling to: now the source is the location of the actor; now the destination is the noun; now the source region is the map region of the source; now the destination region is the map region of the destination. Check an actor travelling to (this is the Already Here check rule): if the destination is the source, say the message corresponding to an emitter of the Already Here check rule in table P2VM instead. Check an actor travelling to (this is the Permission To Visit check rule): if the destination is not public and the destination region is not nothing and the destination region is not nowhere specific begin; if the gatekeeper of the destination region is not nothing begin; let the decision-maker be the gatekeeper of the destination region; if the actor does not have permission from the decision-maker to access destination region and the decision-maker is not the actor begin; say the message corresponding to an emitter of the Permission To Visit check rule in table P2VM instead; end if; end if; end if. The last check an actor travelling to (this is the End Invitation rule): if the destination region is not the source region begin; repeat through the Table of Temporary Invitations begin; if the invitee entry is the actor and the invitor entry is the gatekeeper of the source region begin; if the player is the actor begin; abide by the confirm before leaving rulebook; end if; blank out the whole row; end if; end repeat; end if. Carry out [the player] travelling to (this is the Scene Break rule): if the destination region is not the source region, say the message corresponding to an emitter of the Scene Break rule in table P2VM. Carry out an actor travelling to (this is the Issue Move Command rule): move the actor to the destination. The Scene Break rule is listed before the Issue Move Command rule in the carry out travelling to rules. [ the Issue Move Command also issues a Look command, and the * * * must appear beforehand] Section - Updating Cardinal Movement Setting action variables for going: now the source region is the map region of the room gone from; if the room gone to is not nothing, now the destination region is the map region of the room gone to. Check an actor going (this is the Permission To Go check rule): if the room gone to is not public and the destination region is not nothing and the destination region is not nowhere specific begin; if the gatekeeper of the destination region is not nothing begin; let the decision-maker be the gatekeeper of the destination region; if the actor does not have permission from the decision-maker to access the destination region and the decision-maker is not the actor begin; say the message corresponding to the emitter of the Permission To Go check rule in table P2VM instead; end if; end if; end if. The last check an actor going (this is the Possibly End Invitation rule): if the destination region is not the source region begin; repeat through the Table of Temporary Invitations begin; if the invitee entry is the actor and the invitor entry is the gatekeeper of the source region begin; if the player is the actor begin; abide by the confirm before leaving rulebook; end if; blank out the whole row; end if; end repeat; end if. Section - Confirm Before Leaving Places Which Make Invitations Expire Leave confirmation is a truth state that varies. Leave confirmation is usually false. Confirm before leaving is a rulebook. A confirm before leaving rule when leave confirmation is true (this is the Invite Will Expire rule): say the message corresponding to an emitter of the Invite Will Expire rule in table P2VM; if the player consents, continue the action; otherwise rule fails. Section - Changing Regional Permissions with Invite, Permit, and Forbid [ INVITE is a temporary PERMIT ] Understand "invite [any person]" as inviting. Inviting is an action applying to one visible thing. Check an actor inviting (this is the Lacks Authority To Invite check rule): repeat with r running through regions begin; if the actor is the gatekeeper of r, continue the action; end repeat; say the message corresponding to an emitter of the Lacks Authority To Invite check rule in table P2VM instead. Carry out an actor inviting: repeat through the Table of Temporary Invitations begin; if the invitor entry is the actor and the invitee entry is the noun, rule succeeds; [ no duplicates ] end repeat; choose a blank row in the Table of Temporary Invitations; change the invitor entry to the actor; change the invitee entry to the noun. Understand "permit [any person]" as permitting. Permitting is an action applying to one visible thing. Check an actor permitting (this is the Lacks Authority To Permit check rule): repeat with r running through regions begin; if the actor is the gatekeeper of r, continue the action; end repeat; say the message corresponding to an emitter of the Lacks Authority To Permit check rule in table P2VM instead. Carry out an actor permitting: [ permanent access everywhere, so free up table rows holding individual permits and invitations ] repeat through the Table of Open Invitations begin; if the invitor entry is the actor and the invitee entry is the noun, blank out the whole row; end repeat; repeat through the Table of Temporary Invitations begin; if the invitor entry is the actor and the invitee entry is the noun, blank out the whole row; end repeat; choose a blank row in the Table of Open Invitations; change the invitor entry to the actor; change the invitee entry to the noun. Understand "forbid [any person]" as forbidding. Forbidding is an action applying to one visible thing. Check an actor forbidding (this is the Lacks Authority To Forbid check rule): repeat with r running through regions begin; if the actor is the gatekeeper of r, continue the action; end repeat; say the message corresponding to an emitter of the Lacks Authority To Forbid check rule in table P2VM instead. Carry out an actor forbidding: repeat through the Table of Open Invitations begin; if the invitor entry is the actor and the invitee entry is the noun, blank out the whole row; end repeat; repeat through the Table of Temporary Invitations begin; if the invitor entry is the actor and the invitee entry is the noun, blank out the whole row; end repeat. Understand "invite [any person] to [any region]" as inviting it to. Inviting it to is an action applying to two visible things. Understand "invite [any person] to [any room]" as inviting it to. First check an actor inviting someone to a room: change the second noun to the map region of the second noun. Check an actor inviting someone to a region (this is the Lacks Authority To Invite To check rule): if the actor is not the gatekeeper of the second noun, say the message corresponding to an emitter of the Lacks Authority To Invite To check rule in table P2VM instead. Carry out an actor inviting someone to a region: choose a blank row in the Table of Temporary Invitations; change the invitor entry to the actor; change the invitee entry to the noun; change the place entry to the second noun. Understand "permit [any person] access to [any region]" as permitting it access to. Permitting it access to is an action applying to two visible things. Understand "permit [any person] access to [any room]" as permitting it access to. Check an actor permitting someone access to a room: change the second noun to the map region of the second noun. Check an actor permitting someone access to a region (this is the Lacks Authority To Permit To check rule): if the actor is not the gatekeeper of the second noun, say the message corresponding to an emitter of the Lacks Authority To Permit To check rule in table P2VM instead. Carry out an actor permitting someone access to a region: choose a blank row in the Table of Open Invitations; change the invitor entry to the actor; change the invitee entry to the noun; change the place entry to the second noun. Understand "forbid [any person] access to [any region]" as forbidding it access to. Forbidding it access to is an action applying to two visible things. Understand "forbid [any person] access to [any room]" as forbidding it access to. Check an actor forbidding someone access to a room: change the second noun to the map region of the second noun. Check an actor forbidding someone access to a region (this is the Lacks Authority To Forbid To check rule): if the actor is not the gatekeeper of the second noun, say the message corresponding to an emitter of the Lacks Authority To Forbid To check rule in table P2VM instead. Carry out an actor forbidding someone access to a region: repeat through the Table of Open Invitations begin; if the invitor entry is the actor and the invitee entry is the noun and the place entry is the second noun, blank out the whole row; end repeat; repeat through the Table of Temporary Invitations begin; if the invitor entry is the actor and the invitee entry is the noun and the place entry is the second noun, blank out the whole row; end repeat. Inviting is changing regional permissions. Permitting is changing regional permissions. Forbidding is changing regional permissions. Inviting to is changing regional permissions. Permitting access to is changing regional permissions. Forbidding access to is changing regional permissions. Section - (for use with Conversation Framework by Eric Eve) Does the player mean inviting the current interlocutor: it is very likely. Does the player mean permitting the current interlocutor: it is very likely. Does the player mean forbidding the current interlocutor: it is very likely. Section - Tables that Memorize [ Though relations would be much simpler to use, this extension would require 2 various-to-various relations, which tend to eat memory. That would be wasteful in this case because we likely have very few invitations open at any one time. Comp Sci term: sparse array. ] Table of Temporary Invitations invitor invitee place thing thing region with 50 blank rows. Table of Open Invitations invitor invitee place thing thing region with 50 blank rows. Table P2VM - Permission To Visit Messages emitter message the Already Here check rule "Already here.[line break]" the Permission To Visit check rule "[The person asked] require[if the person asked is not the player]s[end if] [the gatekeeper of the destination region][if the gatekeeper of the destination region is a person]'s permission[end if] to enter [the destination region].[line break]" the Permission To Go check rule "[The person asked] require[if the person asked is not the player]s[end if] [the gatekeeper of the destination region][if the gatekeeper of the destination region is a person]'s permission[end if] to enter [the destination region].[line break]" the Lacks Authority To Invite check rule "[The person asked] lack[if the person asked is not the player]s[end if] the authority.[line break]" the Lacks Authority To Permit check rule "[The person asked] lack[if the person asked is not the player]s[end if] the authority.[line break]" the Lacks Authority To Forbid check rule "[The person asked] lack[if the person asked is not the player]s[end if] the authority.[line break]" the Lacks Authority To Invite To check rule "[The person asked] lack[if the person asked is not the player]s[end if] authority over [the second noun].[line break]" the Lacks Authority To Permit To check rule "[The person asked] lack[if the person asked is not the player]s[end if] authority over [the second noun].[line break]" the Lacks Authority To Forbid To check rule "[The person asked] lack[if the person asked is not the player]s[end if] authority over [the second noun].[line break]" the Invite Will Expire rule "Leaving will cause your invitation to expire. Are you sure? " the Scene Break rule "[line break] * * *[line break]" Section - Debugging - Not for Release Understand "list invitations" as listing invitations. Listing invitations is an action out of world. Carry out listing invitations: repeat through the Table of Open Invitations begin; say "[The invitor entry] permits [invitee entry][if there is a place entry] access to [place entry][otherwise] anywhere[end if]."; end repeat; repeat through the Table of Temporary Invitations begin; say "[The invitor entry] invites [invitee entry][if there is a place entry] to [place entry][otherwise] anywhere[end if]."; end repeat. Permission to Visit ends here. ---- DOCUMENTATION ---- A smarter version of "GO TO ", this command suite works across unconnected locations, both allowing the reader to skip uninteresting journeys and freeing the author from map-centric design. Movement is blocked at the Region level by that region's Gatekeeper, a character who grants or denies another character permission to enter the region. A region may have some Public rooms, which a character may always visit, and into which he will find himself upon attempting to Visit a forbidden area. For example, outside the entrance to a secure building would typically be public. (A character isn't moved to a public room in the case when cardinal movement attempts to carry him into a forbidden area. He is merely stopped.) Gatekeepers can PERMIT a character free access to their region(s) at all times. Gatekeepers may also INVITE characters, which is a one-use invitation. It expires when the invited character leaves the region. Or, when FORBID cancels all invitations, open or temporary. now the gatekeeper of Dune is Leto Atreides; try Leto forbidding the Harkonnens access to Dune; try Leto permitting Paul Atreides access to Dune; try the Fremen inviting Duncan Idaho to the desert; These Actions work equally well with PCs and NPCs. PCs can themselves become -- and cease to be -- gatekeepers. The commands "Invite person" and "Invite person To place" can be used any time the gatekeeping player wishes. Visit, Attend, Find, Go, Travel To, and Return are all functionally synonymous with one another: each command moves the character to the location of the desired person, place, thing, or event, provided the gatekeeper allows it of course. The verbs can be used interchangably with all noun types as an allowance to the player, but in the case of disambiguations, each has specific preferences, in order: Visit prefers persons, then rooms, and finally things; Find prefers things, then persons, then rooms; and Travel, Attend, Go & Return prefer rooms, then people, and finally things. This is an important point because any rules the author's game affects will affect all of these verbs equally. Such consistancy is usually a good thing, if at first unexpected. A debugging command "list invitations" is provided. Each say statement in this extension is alone in a named rule for easy replacement or extension. Further, text-that-varies "error message prefix" and "error message suffix" exist to be set if your game's prose has typographical conventions for error messages, such as italics or brackets. -- Knowledge for the Practical Author -- As is, a successful invite, etc., produces no output. You'll almost definately want to create some Report rules in which characters invite (or fight) each other in actual dialogue: *: After someone inviting to: say "'Would you like to visit me this week in [the second noun]? Just let the receptionist know who you are and she'll see you in,' says [the actor]." After an actor changing regional permissions: say "[The actor] seem[if actor is not player]s[end if] very [the action-name part of the current action] at the moment." Also, auto-looking after travelling is probably desireable, unless you have a particular segue in mind. (Remember that Travelling To and ordinary Going are different actions, and must be described individually.) *: Report travelling to: try looking. Report travelling to R&D: say "Later that week, clicks and humming introduce a bank of machines as you enter the R&D department. The receptionist, apparently delighted to meet someone other than an engineer, chats with you amiably as she leads you deep into the labyrinth." If you'd like to allow players to claim regions as their own: *: America is a region. Florida is a room in America. Bermuda is a region. Cuba is a room in Bermuda. Understand "claim [any region]" as claiming. Claiming is an action applying to one object. Carry out claiming: now the gatekeeper of the noun is yourself. Report claiming: say "You claim [the noun] for Spain!". If you'd like to list owned regions in your player's inventory: *: Carry out taking inventory when the number of player-owned regions is 0: say "You don't own any real estate. Even your apartment is rented.". Carry out taking inventory when the number of player-owned regions is not 0: say "You own [list of player-owned regions].". If you'd like to list invitations and permissions in your player's inventory, try a variation of the following: *: The Listing Invites rule is listed first in the carry out taking inventory rules. This is the Listing Invites rule: repeat through the Table of Open Invitations begin; say "[The invitor entry] permits [invitee entry][if there is a place entry] access to [place entry][otherwise] anywhere[end if]."; end repeat; repeat through the Table of Temporary Invitations begin; say "[The invitor entry] invites [invitee entry][if there is a place entry] to [place entry][otherwise] anywhere[end if]."; end repeat. If you'd like NPCs to react to other, authoritarian characters hindering them: *: Unsuccessful attempt by actor travelling to: if the reason the action failed is the Permission To Visit rule, say "[The actor] mumbles something derogatory about [the gatekeeper of the destination region].". If you'd like to offer your players a "Go Home" or "Return Home" command: *: Understand "home" as your apartment. If you're writing an exploratory game and do not wish the player to skip rooms: *: Check travelling to (this is the Don't Jump To Unvisited Places check rule): if the destination is unvisited, say "You don't know where [noun] is." instead. If you'd like to hide unknown people and items, using extension Epistemology by Eric Eve: *: Check visiting (this is the Don't Jump To Unknown People check rule): if the noun is unknown, say "You don't know where [noun] is." instead. Check finding (this is the Don't Jump To Unknown Items check rule): if the noun is unknown, say "You don't know where [the noun] is." instead. If you'd like to introduce concepts of last known locations, hard to find people, and things misplaced by other characters, here's a start: *: A thing has a room called last known location. The last known location is usually Florida. This is the Last Known Location rule: try actor travelling to the last known location of the noun. The Last Known Location rule is listed instead of the Visit Uses Travel-To rule in the carry out visiting rules. The Last Known Location rule is listed instead of the Find Uses Travel-To rule in the carry out finding rules. Example: ** Testing Area - Tests some ill-defined rooms, regions, and a raygun. *: "Testing Area" by Ron Newcomb. Include Permission to Visit by Ron Newcomb. Use no scoring. Section 1 - Defining places and who owns them [ default region: "nowhere specific" ] Area 51 is a region. Roswell is a region. HQ is a region. The RV is a region. Silo 1 and a shady spot are rooms. [ in "nowhere specific" ] Silo 5 is a room in Area 51. The general store is a room in Roswell. The office full of answers is a room in HQ. "Ah! Yes! It's all here! Aliens are involved!". your RV is a room in the RV. "Looking out the window of your RV, you can see the town of Roswell and, in the distance, a couple of grain silos. [if office is visited]'Oh bother, where's that keycard? I need it as proof!'[otherwise]'How odd, to have grain silos in a desert,' you ponder.[end if]". Understand "home" as your RV. [Nowhere specific does not have a gatekeeper.] [Area 51 does not (yet) have a gatekeeper.] Mayor 'Shorty' Grein Mannie is a man in shady spot. The gatekeeper of Roswell is Mayor Mannie. the keycard is a thing in the store. The gatekeeper of HQ is the keycard. The player is in your RV. The gatekeeper of the RV is yourself. [ Intentionally creating "spot" as an animal, a room, and a thing.] A dog named Spot is an animal in silo 1. A targeting spot missile is a thing in silo 5. It is not portable. The printed name of shady spot is "shady spot behind silo 1". Shady spot is north of Silo 1. The general store is north of shady spot. Section 2 - A likely ordering of events Carry out taking inventory when the number of player-owned regions is 0: say "You own the RV.". Carry out taking inventory when the number of player-owned regions is not 0: say "You own [the list of player-owned regions].". When play begins: change the left hand status line to "[map region of the location of the player]"; say "You arrive in Roswell NV just as your TV blares the news, 'Roswell is now under martial law, as declared by its brand-new ruler, Mayor 'Shorty' Grein Mannie. Checkpoints are setup around the town's entry points, and no one without explicit permission is allowed in.'[line break][line break]You're sure its just a suggestion, though.[line break][line break]You must get into the main offices of Area 51 to find out what's really going on.". Definition: a thing is inanimate if it is not a person. The agenda is a thing in your RV. The description of it is "People to visit: [a list of people which is not the player].[line break]Things to find: [a list of every inanimate thing which is not carried by the player].[line break]Places to travel: [a list of every unvisited room].[line break]Regions to explore: [a list of every region which is not nowhere specific]." The ray gun is a thing in Silo 1. The description of ray gun is "There's a disclaimer sticker on it that reads, 'Warning: do not [bold type]use[roman type] Mind-Controlling Raygun on yourself.'". Understand "raygun" as the ray gun. Understand "use [thing]" as a mistake ("Use it on who?"). Understand "use [thing] on [person]" as using it on. Using it on is an action applying to two things. Check using it on: if the noun is not the ray gun, say "Not much to it." instead. Carry out using it on: say "[The second noun] goes kinda glassy-eyed[if second noun is the mayor] and says, 'Yes, my leader. You may now [bold type]take[roman type] Roswell, or any other region you desire'[end if].". [Persuasion rule: if the player has used the ray gun on the noun, persuasion succeeds.] Understand "take [any region]" as taking ownership when the player carries the ray gun. Taking ownership is an action applying to one visible thing. Check taking ownership: if the noun is HQ, say "Hm. A keycard-locked door keeps you out, and the Mind-Controlling Raygun doesn't seem to be much help with inanimate objects." instead. Check taking ownership: if the noun is player-owned, say "You already own that." instead. Carry out taking ownership: change the gatekeeper of the noun to the player; say "You now own [the noun].". Carry out travelling to when the location is the office: say "In your haste to leave, you accidentally drop the keycard!"; try silently dropping keycard. Instead of travelling to the office when the keycard is in the office: say "Curses! It's in the office! You've locked yourself out! What an unwinnable state of affairs!" Instead of using the ray gun on yourself: end the game saying "You go kinda glassy-eyed until a unnerved cop, three days later, orders you to release the trigger and hand over the weapon." Test all with "test spot/go home/test me". Test spot with "visit spot/l/go to spot/l/find spot/l". [broken: FIND doesn't go to Target Spot Missile] Test me with "take agenda/x agenda/go office/go store/visit silo 1/x gun/take gun/use gun on dog/n/use gun on mayor/take roswell/i/x agenda/take area 51/go to office/take hq/find keycard/take keycard/go to office/i/find RV/find keycard/x agenda/use gun on me". Example: ** Office Politics - Testing invites and the inventory command. *: "Office Politics" Include Permission to Visit by Ron Newcomb. Section 1 - people and places HR, sales, purchasing, R&D, and the basement are regions. After printing the name of a room, say ", a part of [the map region of the location]". H wing is a room in HR. R wing is a room in R&D. The gatekeeper of R&D is Charlie. P wing is a room in Purchasing. The gatekeeper of Purchasing is Bob. S wing is a room in Sales. The gatekeeper of Sales is Bob. The stairwell is a room in the basement. The gatekeeper of the basement is the wrench. The break room is a room. "North is HR in H wing, managed by no one. [line break]East is R&D in R wing, managed by Charlie. [line break]South is Sales in S wing, managed by Bob. [line break]West is Purchasing in P wing, managed by Bob. [line break]Southwest is the stairwell with the broken door." H wing is north of break room. "The break room is south of here.". R wing is east of break room. "The break room is west of here.". P wing is west of break room. "The break room is east of here.". S wing is south of break room. "The break room is north of here.". The stairwell is southwest of break room. "The breakroom is northeast.". The player is in H wing. Bob, Charlie, and Stan are men in H wing. The wrench is in H wing. Section 2 - expand our notions of Inventory The Listing Invites rule is listed first in the carry out taking inventory rules. This is the Listing Invites rule: repeat through the Table of Open Invitations begin; say "[The invitor entry] has granted [invitee entry] permission to visit [if there is a place entry][place entry][otherwise][regions owned by invitor entry]and anywhere else he holds authority[end if]."; end repeat; repeat through the Table of Temporary Invitations begin; say "[The invitor entry] has invited [invitee entry] to [if there is a place entry][place entry][otherwise][regions owned by invitor entry]anywhere you'd like to see[end if]."; end repeat. Section 3 - a game setting like NOTIFY Understand "leave confirmation" as a mistake ("[toggle LC]Leave confirmation is now [leave confirmation]."). To say toggle LC: if leave confirmation is true, now leave confirmation is false; otherwise now leave confirmation is true. Section 4 - handy stuff Persuasion rule: persuasion succeeds. Unsuccessful attempt by someone doing something: do nothing. The scene break rule is not listed in any rulebook. After an actor changing regional permissions: say "[The actor] does so." To say regions owned by (character - a person): repeat with R running through regions begin; if the gatekeeper of R is the character, say "[R], "; end repeat. Test me with "TEST denied/TEST expired-invite/TEST permit/TEST forbid/TEST fixit/TEST confirm-leave". Test denied with "stan, invite me / stan, invite me to sales". Test expired-invite with "i/bob, invite me to sales/visit p/i/visit s/i/visit h/i". Test permit with "i/bob, permit me/i/visit p/visit s/i/visit r". Test forbid with "i/visit bob/bob, forbid me/i/visit p/visit s/i". Test fixit with "go to break room/sw/find wrench/take wrench/go to break room/sw". Test confirm-leave with "leave confirmation/find charlie/visit R/visit charlie/charlie, invite me/s/e/ say no/west/no/look/ say yes/west/yes/look ".