Terrapin Resources

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
Search Results for ""