Now we'll create a command to pickup objects in our world:
      (defun pickup-object (object)
        (cond ((is-at object location object-locations)
               (push (list object 'body) object-locations)
               `(you are now carrying the ,object))
    	   (t '(you cannot get that.))))
This function checks to see if the object is indeed on the floor of the current location- If it is, it pushes the new location (the player's body) onto the list (pushing means to add a new item to the list, in a way that the `assoc` command sees and therefore hides the previous location) and returns a sentence letting us know whether it succeeded.
Now let's cast another SPEL to make the command easier to use:
      (defspel pickup (object)
        `(pickup-object ',object))
Now let's try our newest SPEL:
      (pickup whiskey-bottle)
      ==> (you are now carrying the whiskey-bottle)
Now let's add a couple more useful commands. First, a command that lets us see our current inventory of items we're carrying:
      (defun inventory ()
        (remove-if-not (lambda (x)
    		     (is-at x 'body object-locations))
    		   objects))
Now a function that tells us if we have a certain object with us:
      (defun have (object)
        (member object (inventory)))
<< begin < previous - next > end >>