;;; Mudsync --- Live hackable MUD
-;;; Copyright © 2016, 2017 Christopher Allan Webber <cwebber@dustycloud.org>
+;;; Copyright © 2016, 2017 Christine Lemmer-Webber <cwebber@dustycloud.org>
;;;
;;; This file is part of Mudsync.
;;;
;; NPC: hotel owner
('lobby:hotel-owner
<chatty-npc> 'lobby
- #:name "a frumpy fellow"
+ #:name "a languid lady"
#:desc
- '((p " Whoever this is, they looks totally exhausted. They're
+ '((p " Whoever this is, she looks totally exhausted. She's
collapsed into the only comfortable looking chair in the room and you
-don't get the sense that they're likely to move any time soon.
- You notice they're wearing a sticker badly adhesed to their clothing
-which says \"Hotel Proprietor\", but they look so disorganized that you
-think that can't possibly be true... can it?
- Despite their exhaustion, you sense they'd be happy to chat with you,
+don't get the sense that she's likely to move any time soon.
+ Attached to her frumpy dress is a barely secured pin which says
+\"Hotel Proprietor\", but she looks so disorganized that you think
+that can't possibly be true... can it?
+ Despite her exhaustion, you sense she'd be happy to chat with you,
though the conversation may be a bit one sided."))
- #:goes-by '("frumpy fellow" "fellow"
- "Chris Webber" ; heh, did you rtfc? or was it so obvious?
+ #:goes-by '("languid lady" "lady"
"hotel proprietor" "proprietor")
#:catchphrases hotel-owner-grumps)
;; Object: Sign
#:goes-by '("orange cartoon cat phone" "orange cartoon cat telephone"
"orange cat phone" "orange cat telephone"
"cartoon cat phone" "cartoon cat"
- "cat phone" "cat telephone" "phone" "telephone"))))
+ "cat phone" "cat telephone" "phone" "telephone"))
+ ('lobby:monster-stuffie
+ <gameobj> 'lobby
+ #:name "an off-brand monster stuffie"
+ #:desc "It's an off brand monster stuffed animal that looks, well kinda
+like a popular character you've seen in a video game, but there's been a very
+thin attempt to make it look like something different... mostly by changing
+the shape of the ears. It's cute though!"
+ #:take-me? #t
+ #:goes-by '("monster stuffie" "monster" "stuffed animal" "stuffed monster"
+ "off-brand monster stuffie" "stuffie" "monster stuffie"))))
\f
(define lobby-map-text
"\
+
+ .----+++++----.
+ | : : |
+ + : north : +
+ | : hall : |
+ + : : +
+ |_ : _____ : _|
| : : |
.----------.----------. : & : .----------.----------.
| computer | |& :YOU ARE: &| smoking | *UNDER* |
'---------'")
(define grand-hallway
+
(lol
('grand-hallway
<room> #f
room\", while a door to the west is labeled \"playroom\"."))
#:exits
(list (make <exit>
+ #:name "north"
+ #:to 'north-hall)
+ (make <exit>
#:name "south"
#:to 'lobby)
(make <exit>
spirit\". You've heard of Hackthena... not a goddess, but spiritual protector of
all good hacks, and legendary hacker herself.")
(p "Hackthena holds the form of a human woman. She wears flowing
-robes, has a pear of curly bovine-esque horns protruding from the sides of her
+robes, has a pair of curly bovine-esque horns protruding from the sides of her
head, wears a pair of horn-rimmed glasses, and appears posed as if for battle.
But instead of a weapon, she seems to hold some sort of keyboard. And her
shield... well it's round like a shield, but something seems off about it.
#:name "a candle"
#:goes-by '("candle")
#:steps `("The candle burns..."
- (/ 2 3) ; oops!
+ .3 ; oops!
"The candle is burning away a rope!"
2
"The rope snaps!"
<furniture> 'smoking-parlor
#:name "a comfy leather chair"
#:desc " That leather chair looks really comfy!"
- #:goes-by '("leather chair" "comfy leather chair" "chair")
+ #:goes-by '("leather chair" "comfy leather chair" "chair" "comfy chair")
#:sit-phrase "sink into"
#:sit-phrase-third-person "sinks into"
#:sit-name "the comfy leather chair")
"and early 2016 about the need for an "
"\"asynchronous event loop for Guile\". The diorama "
"is a model of the Veggie Galaxy restaurant where after "
- "the FSF 30th anniversary party; Mark Weaver, Christopher "
- "Allan Webber, David Thompson, and Andrew Engelbrecht chat "
+ "the FSF 30th anniversary party; Mark Weaver, Christine "
+ "Lemmer-Webber, David Thompson, and Andrew Engelbrecht chat "
"about the need for Guile to have an answer to asynchronous "
"programming. A mailing list post " ; TODO: link it?
"summarizing the discussion is released along with various "
"but they all seem glued in place and instead of a person manning the shop "
"there's merely a cardboard cutout of a person with a \"shopkeeper\" nametag. "
"You can pretty well bet that someone wanted to finish this room but ran out of "
- "time.")
+ "time. "
+ "It looks like there's an exit to the northeast, should you choose that you "
+ "want to get out of here.")
#:exits (list
(make <exit>
#:name "northeast"
"ActivityPub")
" is a federation standard being developed under the "
(a "https://www.w3.org/wiki/Socialwg/"
- "w3C Social Working Group")
+ "W3C Social Working Group")
", and doubles as a general client-to-server API. "
"It follows a few simple core ideas:")
(ul (li "Uses "
))
+
+\f
+;;; North hall
+;;; ==========
+(define north-hall
+ (lol
+ ('north-hall
+ <room> #f
+ #:name "North Hall"
+ #:desc
+ '((p "This hallway is lined by doors to the west and the east, presumably
+to various lodgings. Something tells you you're not able to enter those right
+now, however. Lining the walls are some large mirrors surrounded by bouquets
+of flowers.")
+ (p "The red carpet continues all the way from Grand Hallway in the south
+but stops short of some large wooden doors to the north. The doors look
+formidable but unlocked. Some natural light peeking through windows to the
+north seem to hint that this may be the exit to the outdoors. There's
+also a large sign near the doors on a wooden easel."))
+ #:exits
+ (list (make <exit>
+ #:name "north"
+ #:to 'courtyard)
+ (make <exit>
+ #:name "south"
+ #:to 'grand-hallway)))
+ ('north-hall:sign
+ <readable> 'north-hall
+ #:name "an easel with a sign"
+ #:desc " The easel is finely cut wood, well polished, but plain. The sign
+is a strong contrast, with a cream colored backing and hand written letters, written
+with care and style. You could probably read it."
+ #:read-text "The sign announces a wedding taking place... why, today! And on
+the hotel grounds to the north! It sounds very exciting."
+ #:goes-by '("sign"
+ "easel with a sign"
+ "easel"))
+ ('north-hall:mirrors
+ <gameobj> 'north-hall
+ #:name "a row of mirrors"
+ #:desc "You see yourself for who you really are."
+ #:invisible? #t
+ #:goes-by '("mirror" "mirrors" "row of mirrors"))
+ ('north-hall:windows
+ <gameobj> 'north-hall
+ #:name "windows"
+ #:desc "You peer out a window, but the light appears distorted, as if you were
+really peering between two worlds hastily joined together."
+ #:invisible? #t
+ #:goes-by '("window" "windows"))
+ ('north-hall:doors
+ <gameobj> 'north-hall
+ #:name "doors"
+ #:desc '((p "Along the east and west walls are doors, but they are all shut,
+and firmly so.
+Presumably people are staying in them, but it also feels as if how residence
+would work in a building as hastily put together as this was barely conceived.")
+ (p "To the north is a large set of wooden doors, oaken and beautiful.
+Although towering, they seem passable."))
+ #:invisible? #f
+ #:goes-by '("door" "doors" "room doors" "large doors"))))
+
+
+;;; ============
+;;; WEDDING TIME
+;;; ============
+
+(define wedding-map-text
+ "\
+ Banquet
+ &Stairs
+ (========)
+ .----.\\======/=.----.
+ Fairy - : \\====/ : -
+ Go ./ : )==( : \\. Orchestra
+ Round / (&&&) : (/==\\) : & & & \\
+ / : : \\
+ .--------..--------..--------.
+ | _ _ .' '. ,,, ;
+Photo | | | |_| : Dance : .|_|. | Cake
+ | '-' : Floor : |___| |
+ ',-------.\\ ;.--------,'
+ ; .. '.......' ;
+ \\ ||)) .-=-. ^ */
+ \\.||(( ^ // \\\\^ * ^'./
+ Play '. ^ ;; ;;^ ^.,'
+ Ground +----||-----||----+ Flowers
+ | .---. |
+ | |_ _| [F] |
+ | | |
+ | Entrance |
+ '-----------------'")
+
+(define wedding
+ (lol
+ ;; Courtyard
+ ;; ---------
+ ('courtyard
+ <room> #f
+ #:name "The Courtyard"
+ #:desc
+ '((p "Standing in the courtyard you feel... different. As if the courtyard itself
+was the space between worlds, cobbled together hastily by some distant being.")
+ (p "To the south are some large doors which serve as the back entrance to
+the hotel. To the north is a forest, from which festive noises emerge."))
+ #:exits
+ (list (make <exit>
+ #:name "south"
+ #:to 'north-hall)
+ (make <exit>
+ #:name "north"
+ #:to 'forest-clearing)))
+ ('forest-clearing
+ <room> #f
+ #:name "A Clearing in the Forest"
+ #:desc
+ '((p "During an aimless ramble through the forest you became
+disoriented and lost your way. It has been some time since you’ve seen
+any of the familiar landmarks that would help you orient yourself. As
+you continue on, the feel of the forest seems to shift. As the trees
+grow thicker the light dims. Eerie laughter echoes through the boughs
+overhead and you shiver. A warm light to the north beckons you towards
+it."))
+ #:exits
+ (list (make <exit>
+ #:name "north"
+ #:to 'wedding-entrance)
+ (make <exit>
+ #:name "south"
+ #:to 'courtyard)))
+ ('wedding-entrance
+ <room> #f
+ #:name "Entrance to the Wedding"
+ #:desc
+ '((p "As you approach you realize that the light is not an exit
+from the forest or a clearing, rather thousands of minuscule lights
+twined through the boughs of the trees. What you see before you is
+some sort of living structure composed of a thicket of trees
+intertwined with bramble. Directly in front of you the limbs of two
+trees intertwine over what appears to be an entrance north.
+To the left of the entrance is a sign, to the right is a
+frog sitting atop a hostess podium."))
+ #:exits
+ (list (make <exit>
+ #:name "south"
+ #:to 'forest-clearing)
+ (make <exit>
+ #:name "north"
+ #:to 'vaulted-tunnel)))
+ ;; map
+ ('wedding-entrance:map
+ <readable> 'wedding-entrance
+ #:name "wedding map"
+ #:desc '("This appears to be a map of the wedding grounds. "
+ "You could read it if you want to.")
+ #:read-text `(pre ,wedding-map-text)
+ #:goes-by '("map" "wedding map"))
+ ('vaulted-tunnel
+ <room> #f
+ #:name "A Vaulted Tunnel of Trees"
+ #:desc
+ '((p "You step into the entrance to see two rows of trees with intersecting branches, forming a vaulted tunnel. The fairy lights cast a soft glow on the space. On each tree trunk is a portrait and the eerie laughter you heard outside echoes louder as you pass each portrait. "))
+ #:exits
+ (list (make <exit>
+ #:name "south"
+ #:to 'wedding-entrance)
+ (make <exit>
+ #:name "north"
+ #:to 'dance-floor)))
+ ('vaulted-tunnel:portrait
+ <gameobj> 'vaulted-tunnel
+ #:name "hanging portraits"
+ #:desc
+ "Each portrait shows a hazy image of a fairy in various modes of dress from Victorian to today's current fashions. The style and format of the photographs all look the same."
+ #:goes-by
+ '("hanging portrait" "hanging portraits" "portrait" "portraits"))
+ ('dance-floor
+ <room> #f
+ #:name "The Ballroom Dance Flooor"
+ #:desc
+ '((p "You emerge into a clearing with six trees encircling a magical ballroom.
+At the center is a dance floor where fairies are dancing in rows of concentric
+circles. The lights that appear in unstructured smatterings throughout the mystical
+space have formed themselves into an elaborate chandelier above the dancers."))
+ #:exits
+ (list (make <exit>
+ #:name "north"
+ #:to 'banquet)
+ (make <exit>
+ #:name "northeast"
+ #:to 'orchestra)
+ (make <exit>
+ #:name "east"
+ #:to 'cake-wing)
+ (make <exit>
+ #:name "southeast"
+ #:to 'flower-field)
+ (make <exit>
+ #:name "south"
+ #:to 'vaulted-tunnel)
+ (make <exit>
+ #:name "southwest"
+ #:to 'playground)
+ (make <exit>
+ #:name "west"
+ #:to 'photo-booth-wing)
+ (make <exit>
+ #:name "northwest"
+ #:to 'fairy-go-round)))
+ ('banquet
+ <room> #f
+ #:name "Banquet Hall"
+ #:desc
+ '((p ""))
+ #:exits
+ (list (make <exit>
+ #:name "south"
+ #:to 'dance-floor)
+ (make <exit>
+ #:name "west"
+ #:to 'fairy-go-round)
+ (make <exit>
+ #:name "east"
+ #:to 'orchestra)
+ (make <exit>
+ #:name "southeast"
+ #:to 'cake-wing)
+ (make <exit>
+ #:name "southwest"
+ #:to 'photo-booth-wing)
+ (make <exit>
+ #:name "up"
+ #:to 'the-stairs)))
+ ('orchestra
+ <room> #f
+ #:name "The Orchestra"
+ #:desc
+ '((p ""))
+ #:exits
+ (list (make <exit>
+ #:name "west"
+ #:to 'banquet)
+ (make <exit>
+ #:name "southwest"
+ #:to 'dance-floor)
+ (make <exit>
+ #:name "south"
+ #:to 'cake-wing)))
+ ('cake-wing
+ <room> #f
+ #:name "The Cake Wing"
+ #:desc
+ '((p ""))
+ #:exits
+ (list (make <exit>
+ #:name "north"
+ #:to 'orchestra)
+ (make <exit>
+ #:name "west"
+ #:to 'dance-floor)
+ (make <exit>
+ #:name "northwest"
+ #:to 'banquet)
+ (make <exit>
+ #:name "south"
+ #:to 'flower-field)))
+ ('flower-field
+ <room> #f
+ #:name "Field of Flowers"
+ #:desc
+ '((p ""))
+ #:exits
+ (list (make <exit>
+ #:name "north"
+ #:to 'cake-wing)
+ (make <exit>
+ #:name "northwest"
+ #:to 'dance-floor)))
+ ('playground
+ <room> #f
+ #:name "Playground"
+ #:desc
+ '((p ""))
+ #:exits
+ (list (make <exit>
+ #:name "north"
+ #:to 'photo-booth-wing)
+ (make <exit>
+ #:name "northeast"
+ #:to 'dance-floor)))
+ ('photo-booth-wing
+ <room> #f
+ #:name "The Photo Booth Wing"
+ #:desc
+ '((p ""))
+ #:exits
+ (list (make <exit>
+ #:name "north"
+ #:to 'fairy-go-round)
+ (make <exit>
+ #:name "northeast"
+ #:to 'banquet)
+ (make <exit>
+ #:name "east"
+ #:to 'dance-floor)
+ (make <exit>
+ #:name "south"
+ #:to 'playgroun)))
+ ('fairy-go-round
+ <room> #f
+ #:name "Fairy Go Round"
+ #:desc
+ '((p ""))
+ #:exits
+ (list (make <exit>
+ #:name "east"
+ #:to 'banquet)
+ (make <exit>
+ #:name "southeast"
+ #:to 'dance-floor)
+ (make <exit>
+ #:name "south"
+ #:to 'photo-booth-wing)))
+ ('the-stairs
+ <room> #f
+ #:name "The Stairs"
+ #:desc
+ '((p ""))
+ #:exits
+ (list (make <exit>
+ #:name "up"
+ #:to 'wedding-canopy)
+ (make <exit>
+ #:name "down"
+ #:to 'banquet)))
+ ('name
+ <room> #f
+ #:name "The Canopy"
+ #:desc
+ '((p ""))
+ #:exits
+ (list (make <exit>
+ #:name "down"
+ #:to 'the-stairs)))
+
+;; ('ballroom
+;; <room> #f
+;; #:name "The Ballroom"
+;; #:exits (list
+;; (make <exit>
+;; )
+;; [north entrance]
+;; [east entrance]
+
+;; [south vaulted-tunnel]
+;; [west entrance])
+;; #:desc ("You emerge into a clearing with six trees encircling a magical ballroom. At the center is a dance floor where " (cast dancers "fairies") " are dancing in rows of concentric circles. The lights that appear in unstructured smatterings throughout the mystical space have formed themselves into an elaborate chandelier above the dancers."))
+
+ ))
+
+
\f
;;; Game
;;; ----
(append lobby grand-hallway smoking-parlor
playroom break-room computer-room underground-lab
async-museum gift-shop hive-entrance
- hive-inside federation-station))
+ hive-inside federation-station
+ north-hall wedding))
;; TODO: Provide command line args
(define (run-game . args)