Skip to content

Instantly share code, notes, and snippets.

@mjm mjm/gist:58316
Created Feb 4, 2009

Embed
What would you like to do?
(in-package :hax0r.fork)
(defgame fork-game
(:start-in mansion-foyer)
(:welcome "=== FORK: the cool person's game ===")
(defloc mansion-foyer "a creepy mansion foyer"
(door west other-room))
(defloc other-room "a room inside the creepy mansion"
(door east mansion-foyer))
(defitem sword "for stabbing people"
(:in-room mansion-foyer))
(defitem knife "for cutting things"
(:in-room other-room))
(defcommand (quit q exit leave) ()
(quit-playing)
"Goodbye.")
(defcommand (say speak) ()
(show "You say, \"~{~a~^ ~}.\" Nothing happens." rest))
(defcommand (inv inventory) ()
(format nil "~?"
"You are carrying ~#[nothing~;the ~a~;the ~a and ~a~:;the ~a, ~a~]~#[~:; and ~a~]."
(stringify (get-inventory game))))
(defcommand (pickup carry grab) (item)
(if (carry game item)
(show "You picked up the ~a." item)
(show "You can't carry that.")))
(defcommand (drop) (item)
(if (drop game item)
(show "You dropped the ~a." item)
(show "You aren't carrying that.")))
(defcommand (look) ()
(show "You are in ~a.
~{~&You see a ~a.~}
~{~&There is a ~{~a going ~a~} from here.~}"
(where-am-i game)
(visible-items game)
(mapcar #'(lambda (p)
(list (path-gate p)
(path-type p)))
(paths-from-here game))))
(defcommand (desc describe) (item)
(show "It's ~a." (item-desc item game)))
(defcommand (where) (am i)
(cond ((and (eql 'am am) (eql 'i i)) ; A kludge for multi-word commands
(show "You are in ~a." (where-am-i game)))
(t (command-not-found (list 'where am i)))))
(defcommand (go walk travel) (type)
(if (go-to game (destination-for-type type game))
(execute-command '(look)
game)
(show "You can't go that way."))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.