Mystery Mansion
A collaborative effort by Michael and Dorothy at Terrapin

This adventure game started life as a month-long Turtle Tuesday challenge. Visit that page for a step-by-step guide to coding a text adventure, including tips and bits of code. If you have never used Property Lists before, this gives you a good reason to learn more about them. They prove to be very handy in this adventure!
Type commands in the Listener panel to navigate the mansion and explore each room. Be sure to draw a map as you go so you know how to return to rooms later. Here are the initial instructions.
You are in the main entry of the Mystery Mansion.
Type NORTH, SOUTH, EAST, or WEST to go to a different room.
Draw a map of the rooms so you know how to get around easily.
Type WHERE to see your current room.
Type LOOK to see what is in the room.
Type EXPLORE to check out an item.
Type TAKE to move an item into your inventory.
Type INVENTORY to see items you have found.
Good luck!
mystery-mansion.lgo
TO SETUP_MAP
; set up the map
PPROPS "ENTRY [
NORTH HALL
EAST NOTHING
SOUTH NOTHING
WEST NOTHING
LOOK [THERE IS A COATRACK HERE.]]
PPROPS "HALL [
NORTH LIVING_ROOM
EAST NOTHING
SOUTH ENTRY
WEST NOTHING
LOOK [THERE IS NOTHING OF INTEREST HERE AT THIS TIME.]]
PPROPS "LIVING_ROOM [
NORTH GAME_ROOM
EAST LIBRARY
SOUTH HALL
WEST DINING_ROOM
LOOK [YOU SEE A BEAUTIFUL TORTOISE SCULPTURE.]]
PPROPS "LIBRARY [
NORTH MUSIC_ROOM
EAST NOTHING
SOUTH NOTHING
WEST LIVING_ROOM
LOOK [YOU JUST FOUND A TABLET WITH WRITING ON IT.]]
PPROPS "MUSIC_ROOM [
NORTH NOTHING
EAST NOTHING
SOUTH LIBRARY
WEST GAME_ROOM
LOOK [THERE IS A LOCKED SAFE.]]
PPROPS "KITCHEN [
NORTH NOTHING
EAST GAME_ROOM
SOUTH DINING_ROOM
WEST NOTHING
LOOK [A COOKIE IS ON THE COUNTER.]]
PPROPS "CONSERVATORY [
NORTH NOTHING
EAST NOTHING
SOUTH GAME_ROOM
WEST NOTHING
LOOK [A FLOWER POT IS IN THE CORNER.]]
PPROPS "GAME_ROOM [
NORTH CONSERVATORY
EAST MUSIC_ROOM
SOUTH LIVING_ROOM
WEST KITCHEN
LOOK [A DARTBOARD IS ON THE WALL.]]
PPROPS "DINING_ROOM [
NORTH KITCHEN
EAST LIVING_ROOM
SOUTH NOTHING
WEST NOTHING
LOOK [YOU SEE A DINING TABLE.]]
PPROPS "HIDDEN_ROOM [
NORTH NOTHING
EAST HALL
SOUTH NOTHING
WEST NOTHING
LOOK [YOU SEE A BEAUTIFUL GARDEN WITH A POND AND TURTLES. CONGRATULATIONS, YOU FOUND THE HIDDEN ROOM! YOU HAVE COMPLETED THE ADVENTURE!]]
END
TO SETUP_ITEMS
; set up the items, what is REQUIRED etc
PPROPS "ENTRY [
ITEM HAT ; the item that lies here
REQUIRED NOTHING ; nothing REQUIRED to TAKE that item
REMOVABLE TRUE ; you can take that item
EXPLORED FALSE ; true after EXPLORE has been called, FALSE to prevent TAKE
EXPLORE [THERE IS A HAT ON A HOOK.]
TAKE [YOU PUT THE HAT ON.]
ACTION []] ; an action that TAKE performs in the background
PPROPS "HALL [
ITEM NOTHING
REQUIRED NOTHING
REMOVABLE TRUE
EXPLORED FALSE
EXPLORE [COME BACK WHEN YOU HAVE UNLOCKED WHAT YOU NEED.]
TAKE []
ACTION []]
PPROPS "LIBRARY [
ITEM TABLET
REQUIRED NOTHING
REMOVABLE TRUE
EXPLORED FALSE
EXPLORE [YOU READ THE WRITING ON THE TABLET. IT READS: GO TO THE CONSERVATORY.]
TAKE [YOU TAKE THE TABLET.]
ACTION []]
PPROPS "CONSERVATORY [
ITEM KEY
REQUIRED NOTHING
REMOVABLE TRUE
EXPLORED FALSE
EXPLORE [THERE IS A KEY HIDDEN IN THE FLOWER POT.]
TAKE [YOU TAKE THE KEY.]
ACTION []]
PPROPS "MUSIC_ROOM [
ITEM MAP
REQUIRED KEY
REMOVABLE TRUE
EXPLORED FALSE
EXPLORE [THE SAFE HAS A KEYHOLE.]
TAKE [YOU CAN'T TAKE THE SAFE, BUT YOU CAN OPEN IT. YOU FIND A MAP TO A HIDDEN ROOM.]
ACTION [
; enable access to the hidden room
PPROP "HALL "WEST "HIDDEN_ROOM
PPROP "HALL "EXPLORE [YOU ARE VERY NEAR THE HIDDEN ROOM! WHICH DIRECTION DO YOU GO FROM HERE?]
PRINT [GO BACK TO THE HALL.]
]]
PPROPS "LIVING_ROOM [
ITEM NOTHING
REQUIRED NOTHING
REMOVABLE FALSE
EXPLORED FALSE
EXPLORE [YOU SIT DOWN IN AN UPHOLSTERED ARMCHAIR FOR A WHILE.]
TAKE []
ACTION []]
PPROPS "GAME_ROOM [
ITEM NOTHING
REQUIRED NOTHING
REMOVABLE TRUE
EXPLORED FALSE
EXPLORE [YOU TAKE A FEW MINUTES TO PLAY DARTS.]
TAKE []
ACTION []]
PPROPS "DINING_ROOM [
ITEM CANDLESTICKS
REQUIRED NOTHING
REMOVABLE FALSE
EXPLORED FALSE
EXPLORE [THERE ARE TWO CANDLESTICKS ON THE TABLE AND A SIGN THAT SAYS DO NOT TOUCH.]
TAKE [A SHIVER RUNS DOWN YOUR SPINE. DO NOT TOUCH!]
ACTION []]
PPROPS "KITCHEN [
ITEM COOKIE
REQUIRED NOTHING
REMOVABLE TRUE
EXPLORED FALSE
EXPLORE [THERE IS A COOKIE ON THE KITCHEN COUNTER.]
TAKE [YOU EAT THE COOKIE. IT IS VERY TASTY.]
ACTION []]
PPROPS "HIDDEN_ROOM [
ITEM NOTHING
REQUIRED MAP
REMOVABLE TRUE
EXPLORED FALSE
EXPLORE [YOU ENJOY THE VIEW.]
TAKE []
ACTION []]
END
TO SETUP
SETUP_MAP
SETUP_ITEMS
MAKE "ROOM "ENTRY
MAKE "INVENTORY []
TEXTSCREEN
CLEARTEXT
PRINT "|You are in the main entry of the Mystery Mansion.|
PRINT "|Type NORTH, SOUTH, EAST, or WEST to go to a different room.|
PRINT "|Draw a map of the rooms so you know how to get around easily.|
PRINT "|Type WHERE to see your current ROOM.|
PRINT "|Type LOOK to see what is in the room.|
PRINT "|Type EXPLORE to check out an item.|
PRINT "|Type TAKE to move an item into your inventory.|
PRINT "|Type INVENTORY to see items you have found.|
END
TO LOOK
PRINT GPROP :ROOM "LOOK
END
TO WHERE
PRINT :ROOM
END
TO EXPLORE
MAKE "EXPLORE GPROP :ROOM "EXPLORE
PRINT GPROP :ROOM "EXPLORE
PPROP :ROOM "EXPLORED TRUE
END
TO TAKE
; has the room been explored?
IF NOT GPROP :ROOM "EXPLORED THEN PRINT [THERE IS NOTHING TO TAKE. DID YOU EXPLORE THE ROOM?] STOP
; get any HAS_ITEM
LMAKE "ITEM GPROP :ROOM "ITEM
IF :ITEM = "NOTHING THEN PRINT [THERE IS NOTHING HERE.] STOP
; if there is a required item: is it in the inventory?
LMAKE "REQUIRED GPROP :ROOM "REQUIRED
IF AND (:REQUIRED != "NOTHING) (NOT MEMBER? :REQUIRED :INVENTORY) THEN (PRINT [YOU NEED A] :REQUIRED [TO CONTINUE.]) STOP
LMAKE "MESSAGE GPROP :ROOM "TAKE
IF :MESSAGE != [] THEN PRINT :MESSAGE
IF NOT GPROP :ROOM "REMOVABLE THEN STOP
PPROP :ROOM "ITEM "NOTHING ; remove the item from the room
MAKE "INVENTORY FPUT :ITEM :INVENTORY ; add it to the inventory
RUN GPROP :ROOM "ACTION ; and execute any action
END
TO INVENTORY
IF EMPTY? :INVENTORY THEN PRINT [YOUR INVENTORY IS EMPTY.] STOP
PRINT :INVENTORY
END
TO GO_ROOM :DIRECTION
LMAKE "DIRECTION GPROP :ROOM :DIRECTION
IF :DIRECTION = "NOTHING THEN PRINT [YOU CAN'T GO THAT WAY.] STOP
MAKE "ROOM :DIRECTION
(PRINT [YOU ARE NOW IN THE] :ROOM)
END
TO NORTH
GO_ROOM "NORTH
END
TO EAST
GO_ROOM "EAST
END
TO SOUTH
GO_ROOM "SOUTH
END
TO WEST
GO_ROOM "WEST
END
SETUP
| Procedure | SETUP |
| Description | Can you solve this text adventure game? |
| Level | Intermediate |
| Tags | Game, Property Lists |
