X-Git-Url: https://jxself.org/git/?p=mudsync.git;a=blobdiff_plain;f=worlds%2Fbricabrac.scm;h=04d9240d0fe2433f6ad15d5bf26ef2a93dcdcb25;hp=8f3e580974cccf1d2fb34e08f0625fe702aa5e30;hb=f50ae8cc329553073d791470c885ffabb5c35cff;hpb=8df43947a29393266da4df9e43f7656e56558fd6 diff --git a/worlds/bricabrac.scm b/worlds/bricabrac.scm index 8f3e580..04d9240 100644 --- a/worlds/bricabrac.scm +++ b/worlds/bricabrac.scm @@ -46,19 +46,13 @@ ;;; Some simple object types. ;;; ========================= -(define readable-commands - (list - (direct-command "read" 'cmd-read))) - -(define readable-commands* - (append readable-commands - thing-commands)) - -(define-class () +(define-class () (read-text #:init-value "All it says is: \"Blah blah blah.\"" #:init-keyword #:read-text) (commands - #:init-value readable-commands*) + #:allocation #:each-subclass + #:init-thunk (build-commands + ("read" ((direct-command cmd-read))))) (actions #:allocation #:each-subclass #:init-thunk (build-actions (cmd-read readable-cmd-read)))) @@ -80,11 +74,6 @@ (<- (message-from message) 'tell #:text text-to-send)) -(define chat-commands - (list - (direct-command "chat" 'cmd-chat) - (direct-command "talk" 'cmd-chat))) - (define hotel-owner-grumps '("Eight sinks! Eight sinks! And I couldn't unwind them..." "Don't mind the mess. I built this place on a dare, you @@ -105,7 +94,9 @@ or 'skribe'? Now *that's* composition!")) (catchphrases #:init-value '("Blarga blarga blarga!") #:init-keyword #:catchphrases) (commands - #:init-value chat-commands) + #:allocation #:each-subclass + #:init-thunk (build-commands + (("chat" "talk") ((direct-command cmd-chat))))) (actions #:allocation #:each-subclass #:init-thunk (build-actions @@ -113,10 +104,9 @@ or 'skribe'? Now *that's* composition!")) (define-class () (commands - #:init-value - (list - (prep-direct-command "sign" 'cmd-sign-form - '("as")))) + #:allocation #:each-subclass + #:init-thunk (build-commands + ("sign" ((prep-direct-command cmd-sign-form '("as")))))) (actions #:allocation #:each-subclass #:init-thunk (build-actions (cmd-sign-form sign-cmd-sign-in)))) @@ -150,18 +140,13 @@ Alphanumerics, _ and - only, 2-15 characters, starts with an alphabetic character.\n"))) -(define summoning-bell-commands - (list - (direct-command "ring" 'cmd-ring))) -(define summoning-bell-commands* - (append summoning-bell-commands - thing-commands*)) - -(define-class () +(define-class () (summons #:init-keyword #:summons) (commands - #:init-value summoning-bell-commands*) + #:allocation #:each-subclass + #:init-thunk (build-commands + ("ring" ((direct-command cmd-ring))))) (actions #:allocation #:each-subclass #:init-thunk (build-actions (cmd-ring summoning-bell-cmd-ring)))) @@ -290,31 +275,31 @@ Ooh, ~a!" (random-choice #:desc "It looks like you could sign this form and set your name.") ('thing:lobby:porcelain-doll - 'room:lobby - #:generally-visible #f + 'room:lobby + #:invisible? #t #:name "a creepy porcelain doll" #:desc "It strikes you that while the doll is technically well crafted, it's also the stuff of nightmares." #:goes-by '("porcelain doll" "doll")) ('thing:lobby:1950s-robots - 'room:lobby - #:generally-visible #f + 'room:lobby + #:invisible? #t #:name "a set of 1950s robots" #:desc "There's a whole set of these 1950s style robots. They seem to be stamped out of tin, and have various decorations of levers and buttons and springs. Some of them have wind-up knobs on them." #:goes-by '("robot" "robots" "1950s robot" "1950s robots")) ('thing:lobby:tea-set - 'room:lobby - #:generally-visible #f + 'room:lobby + #:invisible? #t #:name "a tea set" #:desc "A complete tea set. Some of the cups are chipped. You can imagine yourself joining a tea party using this set, around a nice table with some doilies, drinking some Earl Grey tea, hot. Mmmm." #:goes-by '("tea set" "tea")) ('thing:lobby:mustard-pot - 'room:lobby - #:generally-visible #f + 'room:lobby + #:invisible? #t #:name "a mustard pot" #:desc '((p "It's a mustard pot. I mean, it's kind of cool, it has a nice design, and it's an antique, but you can't imagine putting something @@ -322,8 +307,8 @@ like this in a museum.") (p "Ha... imagine that... a mustard museum.")) #:goes-by '("mustard pot" "antique mustard pot" "mustard")) ('thing:lobby:head-of-elvis - 'room:lobby - #:generally-visible #f + 'room:lobby + #:invisible? #t #:name "the pickled head of Elvis" #:desc '((p "It's a jar full of some briny-looking liquid and... a free floating head. The head looks an awful lot like Elvis, and @@ -336,8 +321,8 @@ everything you read.")) #:goes-by '("pickled head of elvis" "pickled head of Elvis" "elvis" "Elvis" "head" "pickled head")) ('thing:lobby:circuitboard-of-evlis - 'room:lobby - #:generally-visible #f + 'room:lobby + #:invisible? #t #:name "the pickled circuitboard of Evlis" #:desc '((p "It's a circuitboard from a Lisp Machine called EVLIS. This is quite the find, and you bet just about anyone interested in @@ -350,8 +335,8 @@ Too bad...")) "pickled circuitboard of EVLIS" "evlis" "Evlis" "EVLIS" "circuitboard" "pickled circuitboard")) ('thing:lobby:teletype-scroll - 'room:lobby - #:generally-visible #f + 'room:lobby + #:invisible? #t #:name "a scroll of teletype" #:desc '((p "This is a scroll of teletype paper. It's a bit old and yellowed but the type is very legible. It says:") @@ -371,8 +356,8 @@ English language surrounding the word 'free' have lead to a lot of terminology d "scroll of teletype paper holding the software Four Freedoms" "scroll of teletype paper holding the software four freedoms")) ('thing:lobby:orange-cat-phone - 'room:lobby - #:generally-visible #f + 'room:lobby + #:invisible? #t #:name "a telephone shaped like an orange cartoon cat" #:desc "It's made out of a cheap plastic, and it's very orange. It resembles a striped tabby, and it's eyes hold the emotion of @@ -394,13 +379,14 @@ this general shape in the 1990s." ('room:grand-hallway #f #:name "Grand Hallway" - #:desc " A majestic red carpet runs down the center of the room. + #:desc '((p " A majestic red carpet runs down the center of the room. Busts of serious looking people line the walls, but there's no -clear indication that they have any logical relation to this place. - In the center is a large statue of a bearded man. You wonder what -that's all about? - To the south is the lobby. A door to the east is labeled \"smoking -room\", while a door to the west is labeled \"playroom\"." +clear indication that they have any logical relation to this place.") + (p "In the center is a large statue of a woman in a warrior's +pose, but something is strange about her weapon and shield. You wonder what +that's all about?") + (p "To the south is the lobby. A door to the east is labeled \"smoking +room\", while a door to the west is labeled \"playroom\".")) #:exits (list (make #:name "south" @@ -411,13 +397,19 @@ room\", while a door to the west is labeled \"playroom\"." (make #:name "east" #:to 'room:smoking-parlor))) - ('thing:ignucius-statue + ('thing:hackthena-statue 'room:grand-hallway #:name "a statue" - #:desc " The statue is of a serious-looking bearded man with long, flowing hair. - It has a large physical halo. Removing it is tempting, but it looks pretty -well fastened." - #:goes-by '("statue" "st ignucius" "st. ignucius")))) + #:desc '((p "The base of the statue says \"Hackthena, guardian of the hacker +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 +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. +You'd better take a closer look to be sure.")) + #:goes-by '("hackthena statue" "hackthena" "statue")))) ;;; Playroom @@ -435,16 +427,42 @@ if this room is intended for children or child-like adults." #:name "east" #:to 'room:grand-hallway))) ('thing:playroom:cubey - 'room:playroom + 'room:playroom #:name "cubey" - #:takeable #t + #:take-me? #t #:desc " It's a little foam cube with googly eyes on it. So cute!") - ('thing:cuddles-plushie - 'room:playroom + ('thing:playroom:cuddles-plushie + 'room:playroom #:name "a cuddles plushie" #:goes-by '("plushie" "cuddles plushie" "cuddles") - #:takeable #t - #:desc " A warm and fuzzy cuddles plushie! It's a cuddlefish!"))) + #:take-me? #t + #:desc " A warm and fuzzy cuddles plushie! It's a cuddlefish!") + + ('thing:playroom:toy-chest + 'room:playroom + #:name "a toy chest" + #:goes-by '("toy chest" "chest") + #:desc (lambda (toy-chest whos-looking) + (let ((contents (gameobj-occupants toy-chest))) + `((p "A brightly painted wooden chest. The word \"TOYS\" is " + "engraved on it.") + (p "Inside you see:" + ,(if (eq? (pk 'contents contents) '()) + " nothing! It's empty!" + `(ul ,(map (lambda (occupant) + `(li ,(mbody-val + (<-wait occupant 'get-name)))) + (gameobj-occupants toy-chest)))))))) + #:take-from-me? #t + #:put-in-me? #t) + + ;; Things inside the toy chest + ('thing:playroom:toy-chest:rubber-duck + 'thing:playroom:toy-chest + #:name "a rubber duck" + #:goes-by '("rubber duck" "duck") + #:take-me? #t + #:desc "It's a yellow rubber duck with a bright orange beak."))) @@ -467,9 +485,9 @@ if this room is intended for children or child-like adults." (sit-name #:init-keyword #:sit-name) (commands - #:init-value - (list - (direct-command "sit" 'cmd-sit-furniture))) + #:allocation #:each-subclass + #:init-thunk (build-commands + ("sit" ((direct-command cmd-sit-furniture))))) (actions #:allocation #:each-subclass #:init-thunk (build-actions (cmd-sit-furniture furniture-cmd-sit)))) @@ -542,8 +560,8 @@ seat in the room, though." #:catchphrases prefect-quotes) ('thing:smoking-parlor:no-smoking-sign - 'room:smoking-parlor - #:generally-visible #f + 'room:smoking-parlor + #:invisible? #t #:name "No Smoking Sign" #:desc "This sign says \"No Smoking\" in big, red letters. It has some bits of bubble gum stuck to it... yuck." @@ -557,24 +575,20 @@ It has some bits of bubble gum stuck to it... yuck." ;;; Breakroom ;;; --------- -(define clerk-commands - (list - (direct-command "talk" 'cmd-chat) - (direct-command "chat" 'cmd-chat) - (direct-command "ask" 'cmd-ask-incomplete) - (prep-direct-command "ask" 'cmd-ask-about) - (direct-command "dismiss" 'cmd-dismiss))) -(define clerk-commands* - (append clerk-commands thing-commands*)) - -(define-class () +(define-class () ;; The desk clerk has three states: ;; - on-duty: Arrived, and waiting for instructions (and losing patience ;; gradually) ;; - slacking: In the break room, probably smoking a cigarette ;; or checking text messages (state #:init-value 'slacking) - (commands #:init-value clerk-commands*) + (commands #:allocation #:each-subclass + #:init-thunk + (build-commands + (("talk" "chat") ((direct-command cmd-chat))) + ("ask" ((direct-command cmd-ask-incomplete) + (prep-direct-command cmd-ask-about))) + ("dismiss" ((direct-command cmd-dismiss))))) (patience #:init-value 0) (actions #:allocation #:each-subclass #:init-thunk (build-actions @@ -799,14 +813,23 @@ the scenery tapers off nothingness. But that can't be right, can it?" 'room:break-room #:name "the hotel desk clerk" #:desc " The hotel clerk is wearing a neatly pressed uniform bearing the -hotel insignia. She looks like she'd much rather be somewhere else." +hotel insignia. She appears to be rather exhausted." #:goes-by '("hotel desk clerk" "clerk" "desk clerk")) ('thing:break-room:void - 'room:break-room - #:generally-visible #f + 'room:break-room + #:invisible? #t #:name "The Void" #:desc "As you stare into the void, the void stares back into you." - #:goes-by '("void" "abyss" "nothingness")))) + #:goes-by '("void" "abyss" "nothingness" "scenery")) + ('thing:break-room:fence + 'room:break-room + #:invisible? #t + #:name "break room cage" + #:desc "It's a mostly-cubical wire mesh surrounding the break area. +You can see through the gaps, but they're too small to put more than a +couple of fingers through. There appears to be some wear and tear to +the paint, but the wires themselves seem to be unusually sturdy." + #:goes-by '("fence" "cage" "wire cage"))))