8 5 init (method () (begin (set contents '()) (set home #17) (set name (+ "guest_" (tostr this))) (go-home))) / name "generic guest" / core-nicks '("$system" "$root" "$located" "$exit" "$thing" "$container" "$area" "$room" "$connected" "$guest" "$player" "$builder" "$coder" "$admin" "$utils" "$recycler" "$editor") / destroy (method () (if (write-ok? caller) (begin (if (has-parent? $guest) (#0:remove-guest)) (pass)) (raise E_PERM "cannot destroy this object"))) / announce (method (instring) (tell instring)) / get-home (method () home) / get-description (method () (if contents (var desc (set desc (+ (pass) "\nCarrying:") (foreach (con contents) (set desc (+ desc "\n" (con:get-name)))))) (pass))) / look-at (method () (player:tell-line (get-description))) / say-method (method (inline) (if (write-ok? player) (location:announce (+ name " says, \"" (index 2 inline) "\"\n")))) / pose-method (method (inline) (if (write-ok? player) (location:announce (+ name " " (index 2 inline) "\n")))) / welcome (method () (if (write-ok? caller) (begin (tell (+ "Welcome to Interlude.\n" "Connecting you to " name ".\n" "Have an interesting time.\n\n")) (location:announce-but (+ name " has connected\n") this) (tell (+ (location:get-name) "\n" (location:get-internal-description) "\n" (location:get-contents-string) "\n"))))) / parse (method (instring) (if (write-ok? player) (if (search $editor (parents)) (edit-parse instring) (if (not (or (not instring) (foreach (i (matchcmd instring)) (if ((car i) (index 2 i)) (return 1))) (foreach (i contents) (if (i:try-command instring) (return 1))) (location:try-command-in instring) (var pair (and (set pair (reg-split "#[0-9]+" instring) (call (compile (index 2 pair)) try-command instring)))))) (echo "I don't understand that\n"))))) / quit (method () (if (write-ok? player) (begin (#0:remove-guest) (disconnect) (#0:remove-connection) (location:announce (+ name " has disconnected.\n")) (destroy)))) / quit-command (method (unused) (if (write-ok? player) (quit))) / inventory-command (method (unused) (if (read-ok? caller) (tell (if contents (var cntstring (set cntstring "You are carrying:\n" (foreach (cnt contents) (set cntstring (+ cntstring (cnt:get-name) "\n"))))) "You are not carrying anything\n")))) / look-cmd (method (inline) (if (= player this) (if (index 4 inline) ;; empty string "" is logically false (var match (if (set match (std-match (index 4 inline))) (match:look-at) (tell "I don't see that here\n"))) (location:look-at)))) / help-command (method (inline) (if (index 2 inline) (ignore E_BAD_FILE (tell (or (filetext (+ "help/" (index 2 inline))) "There is no help available on that topic.\n"))) (tell (filetext "help/help")))) / who-command (method (ignored) (if (write-ok? player) (foreach (c (#0:list-connected)) (tell (+ (c:get-name) " " (call (c:get-location) get-name) " " (c:get-address) "\n"))))) / home-command (method (unused) (if (or (search player (location:list-owners)) (write-ok? player)) (begin (go-home) (location:look-at)))) / editor-alias "$$" / send-whisper-method (method (sym) (if (write-ok? caller) (whisper-to whispering-to (eval sym)))) / whisper-method (method (to msg) (if (write-ok? player) (if (= msg editor-alias) (begin (tell-line ">> Editing the text of the message to whisper...") (set whispering-to to) (enter-edit 'whisper-txt 'send-whisper-method '())) (whisper-to to msg)))) / whisper-to (method (to msg) (if (write-ok? player) (if (search "\n" msg) (begin (tell-line (+ "You whisper your message to " (to:get-name))) (if (to:tell-line (+ name " whispers to you:")) (tell-line (+ " " (implode "\n " (explode "\n" msg)))) (tell-line (+ (to:get-name) " isn't awake, though.")))) (begin (tell-line (+ "You whisper, \"" msg "\" to " (to:get-name))) (if (to:tell-line (+ name " whispers, \"" msg "\" to you.")) name (tell-line (+ (to:get-name) " isn't awake, though."))))))) / whisper-to-command (method (inline) (if (write-ok? player) (var w-to (if (= (index 4 inline) "to") ;; then it's Moo syntax (if (set w-to (std-match (index 5 inline))) (whisper-method w-to (index 3 inline)) (tell (+ "I don't see " (index 5 inline) " here\n"))) (if (set w-to (std-match (index 3 inline))) (whisper-method w-to (index 5 inline)) (tell (+ "I don't see " (index 3 inline) " here\n"))))))) / whisper-syntax (method (unused) (if (write-ok? player) (tell "Syntax: whisper <msg> to <player>\n"))) / connect-syntax (method (unused) (if (write-ok? player) (tell "Syntax: connect <player name> <password>\n"))) / connect-command (method (inline) (if (write-ok? player) (var play-to (if (search " " (index 4 inline)) (connect-syntax inline) (if (set play-to (#0:find-player (index 3 inline))) (if (#0:connect-me-to play-to (index 4 inline)) (quit) 1) (tell "Can't locate that player\n")))))) / move-to (method (dest) (if (or (write-ok? caller) (caller:descends-from? $exit) (= player this)) (pass dest))) / get-cmd (method (inline) (if (= player this) (var match (if (set match (location:match-non-exit (index 2 inline))) (if (match:move-to this) (begin (location:announce-but (+ name " gets " (match:get-name) "\n") this) (tell (+ "You get " (match:get-name) "\n"))) (tell "You can't get that!\n")) (get-syntax))))) / get-syntax (method (unused) (if (= this player) (tell "I don't see that here\n"))) / drop-syntax (method (unused) (if (= player this) (tell "You are not carrying that.\n"))) / drop-cmd (method (inline) (if (= player this) (var match (if (set match (match-content (index 2 inline))) (if (match:move-to location) (begin (location:announce-but (+ name " drops " (match:get-name) "\n") this) (tell (+ "You drop " (match:get-name) "\n"))) (tell "You can't drop that here!\n")) (drop-syntax inline))))) / create-syntax (method (unused) (if (write-ok? player) (tell "Syntax: create <player name> <password>\n"))) / create-command (method (inline) (if (write-ok? player) (if (search " " (index 3 inline)) (create-syntax inline) (#0:guest-to-player (index 2 inline) (index 3 inline))))) / enter-edit (method (prop after-call starting-list) (begin (tell ">> type '.help' to get help on the editor\n") (#0:addparent $editor) (set editing-list starting-list) (set edit-insert-at 1) (set edit-save-prop prop) (set edit-after-call after-call))) / leave-edit (method () (#0:rmparent $editor)) / quit-save (method (saved-to) (tell (+ ">> quitting editor, saving to property " (tostr saved-to) "\n"))) / / '("say" REST) say-method '("\"" REST) say-method '("pose" REST) pose-method '(":" REST) pose-method '("quit") quit-command '("@quit") quit-command '("QUIT") quit-command '("l" (or "ook" "") (or " at " "") REST) look-cmd '("help" REST) help-command '("who" REST) who-command '("@who" REST) who-command '("WHO" REST) who-command '("home" REST) home-command '("HOME" REST) home-command '("wh" (or "isper" " ") (or (before "=") (before " to ") WORD) (or "=" "to" "") REST) whisper-to-command '("wh" (or "isper" "")) whisper-syntax '("con" (or "nect" " ") WORD REST) connect-command '("con" (or "nect" "")) connect-syntax '("create" WORD REST) create-command '("create") create-syntax '("i" (or "nventory" "")) inventory-command '("get" REST) get-cmd '("drop") drop-syntax '("drop" REST) drop-cmd /+++++++++ end of object #9 ... no lines after this ++++++++++