X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=worlds%2Fbricabrac.scm;h=d675a711e554d81901dc7f4511ee813fd5072aa0;hb=79eceeee56e472f9055ca63c12ae2227bd848a2f;hp=ba6f3e9959ae4450f261c5f0d65860181672425c;hpb=669edc75ebfbb547053f4aa0a67be6c3754ccb65;p=mudsync.git diff --git a/worlds/bricabrac.scm b/worlds/bricabrac.scm index ba6f3e9..d675a71 100644 --- a/worlds/bricabrac.scm +++ b/worlds/bricabrac.scm @@ -1,5 +1,5 @@ ;;; Mudsync --- Live hackable MUD -;;; Copyright © 2016, 2017 Christopher Allan Webber +;;; Copyright © 2016, 2017 Christine Lemmer-Webber ;;; ;;; This file is part of Mudsync. ;;; @@ -256,18 +256,17 @@ character.\n"))) ;; NPC: hotel owner ('lobby:hotel-owner '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 @@ -425,7 +424,17 @@ this general shape in the 1990s." #: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 + '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")))) @@ -488,6 +497,13 @@ labeled \"RL02.5\".") (define lobby-map-text "\ + + .----+++++----. + | : : | + + : north : + + | : hall : | + + : : + + |_ : _____ : _| | : : | .----------.----------. : & : .----------.----------. | computer | |& :YOU ARE: &| smoking | *UNDER* | @@ -500,6 +516,7 @@ labeled \"RL02.5\".") '---------'") (define grand-hallway + (lol ('grand-hallway #f @@ -514,6 +531,9 @@ that's all about?") room\", while a door to the west is labeled \"playroom\".")) #:exits (list (make + #:name "north" + #:to 'north-hall) + (make #:name "south" #:to 'lobby) (make @@ -551,7 +571,7 @@ but there's no indication of who they are." 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. @@ -760,10 +780,22 @@ platter! It has \"RL02.5\" written on it. It looks kind of loose." (set! (.filled rgb-item) #f)) (apply rgb-item-reset rgb-item message rest-args)) +(define-actor () + ((cmd-wear tinfoil-hat-wear)) + (contained-commands + #:allocation #:each-subclass + #:init-thunk (build-commands + ("wear" ((direct-command cmd-wear)))))) + +(define (tinfoil-hat-wear tinfoil-hat message . _) + (<- (message-from message) 'tell + #:text '("You put on the tinfoil hat, and, to be perfectly honest with you " + "it's a lot harder to take you seriously."))) + + (define-actor () ((cmd-drink hot-tea-cmd-drink) - (cmd-sip hot-tea-cmd-sip) - (cmd-gotta-hold hot-tea-cmd-gotta-hold)) + (cmd-sip hot-tea-cmd-sip)) (contained-commands #:allocation #:each-subclass #:init-thunk (build-commands @@ -809,6 +841,19 @@ platter! It has \"RL02.5\" written on it. It looks kind of loose." #:exclude player) (gameobj-self-destruct hot-tea))) +(define-actor () + ((cmd-take-from-while-wearing cmd-take-from) + (cmd-put-in-while-wearing cmd-put-in)) + (contained-commands + #:allocation #:each-subclass + #:init-thunk + (build-commands + (("l" "look") ((direct-command cmd-look-at))) + ("take" ((prep-indir-command cmd-take-from-while-wearing + '("from" "out of")))) + ("put" ((prep-indir-command cmd-put-in-while-wearing + '("in" "inside" "into" "on"))))))) + (define playroom (lol ('playroom @@ -862,6 +907,38 @@ if this room is intended for children or child-like adults.") #:take-me? #t #:desc "It's a yellow rubber duck with a bright orange beak.") + ('playroom:toy-chest:tinfoil-hat + 'playroom:toy-chest + #:name "a tinfoil hat" + #:goes-by '("tinfoil hat" "hat") + #:take-me? #t + #:desc "You'd have to be a crazy person to wear this thing!") + + ('playroom:toy-chest:fanny-pack + 'playroom:toy-chest + #:name "a fanny pack" + #:goes-by '("fanny pack" "pack") + #:take-me? #t + #:desc + (lambda (toy-chest whos-looking) + (let ((contents (gameobj-occupants toy-chest))) + `((p "It's a leather fanny pack, so it's both tacky and kinda cool.") + (p "Inside you see:" + ,(if (eq? contents '()) + " nothing! It's empty!" + `(ul ,(map (lambda (occupant) + `(li ,(mbody-val + (<-wait occupant 'get-name)))) + (gameobj-occupants toy-chest))))))))) + + ;; Things inside the toy chest + ('playroom:toy-chest:fanny-pack:plastic-elephant + 'playroom:toy-chest:fanny-pack + #:name "a plastic elephant" + #:goes-by '("plastic elephant" "elephant") + #:take-me? #t + #:desc "It's a tiny little plastic elephant. Small, but heartwarming.") + ('playroom:rgb-machine 'playroom #:name "a Rube Goldberg machine" @@ -905,7 +982,7 @@ What could happen if you started 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!" @@ -1026,7 +1103,7 @@ a nondescript steel door to the south, leading apparently outside.")) '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") @@ -1678,8 +1755,22 @@ is a map detailing the layout of the underground structure.")) #:to 'hive-entrance) (make #:name "east" - #:to 'federation-station))) - + #:to 'federation-station) + (make + #:name "south" + #:traverse-check + (lambda (exit room whos-exiting) + (values #f '("Ooh, if only you could go south and check this out! " + "Unfortunately this whole area is sealed off... the proprietor " + "probably never got around to fixing it. " + "Too bad, it would have had monsters to fight and everything!")))) + (make + #:name "southwest" + #:traverse-check + (lambda (exit room whos-exiting) + (values #f '("Hm, it's one of those revolving doors that only revolves in " + "one direction, and it isn't this one. You guess that while " + "this doesn't appear to be an entrance, it probably is an exit.")))))) ;; map ('underground-lab:map 'underground-lab @@ -1692,7 +1783,7 @@ is a map detailing the layout of the underground structure.")) ('underground-lab:8sync-sign 'underground-lab #:name "a sign labeled \"8sync design goals\"" - #:goes-by '("sign" "8sync design goals sign" "8sync sign") + #:goes-by '("sign" "8sync design goals sign" "8sync goals" "8sync design" "8sync sign") #:read-text 8sync-design-goals #:desc `((p "The sign says:") ,8sync-design-goals)))) @@ -1767,8 +1858,8 @@ as well as an exit leading to the south.")) "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 " @@ -1872,11 +1963,20 @@ as well as an exit leading to the south.")) ('gift-shop #f #:name "Museum Gift Shop" - #:desc "foo" + #:desc '("There are all sorts of scrolls and knicknacks laying around here, " + "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. " + "It looks like there's an exit to the northeast, should you choose that you " + "want to get out of here.") #:exits (list (make #:name "northeast" - #:to 'underground-lab) + #:to 'underground-lab + #:traverse-check + (lambda (exit room whos-exiting) + (values #t '("The revolving door spins as you walk through it. Whee!")))) (make #:name "north" #:to 'async-museum))))) @@ -2097,7 +2197,7 @@ comments, and so on flowing from node to node." "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 " @@ -2170,6 +2270,140 @@ comments, and so on flowing from node to node." )) + + +;;; North hall +;;; ========== +(define north-hall + (lol + ('north-hall + #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 + #:name "north" + #:to 'courtyard) + (make + #:name "south" + #:to 'grand-hallway))) + ('north-hall:sign + '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 + '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 + '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 + '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 + (lol + ;; Courtyard + ;; --------- + ('courtyard + #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 + #:name "south" + #:to 'north-hall) + (make + #:name "north" + #:to 'forest-clearing))) + ('forest-clearing + #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 + #:name "north" + #:to 'vaulted-tunnel) + (make + #:name "south" + #:to 'courtyard))) + ('vaulted-tunnel + #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 + #:name "north" + #:to 'wedding-entrance) + (make + #:name "south" + #:to 'forest-clearing))) + ('wedding-entrance + #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 + #:name "south" + #:to 'vaulted-tunnel))))) + + ;;; Game ;;; ---- @@ -2178,7 +2412,8 @@ comments, and so on flowing from node to node." (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)