exclude_from_all

exclude_from_all, when true, restricts an item from being included in multiple-object verbs like DoGet (>GET ALL) or DoDrop (>DROP ALL). The scenery class is defined like this:

class scenery
{
    type scenery
    exclude_from_all
    {
#ifclear NO_VERBS
        if verbroutine = &DoGet
            return true
        else
#endif
            return false
    }
    is static, hidden
}

It won’t show up for >GET ALL, but it will for other verbs that use the multi grammar token.

Printing the failure

If exclude_from_all returns true, the item is completely skipped. We can make it seem like the object was “considered”, though, by having something like this:

object jelly "jelly"
{
   noun "jelly"
   exclude_from_all
      {
      if verbroutine = &DoGet
        {
        print self.name ; ":_ ";
        "You can't get the jelly while picking up other items."
        return true
        }
      else
        return false
      }
   in sandwich_shop
}

Giving:

>get all
jelly: You can’t get the jelly while picking up other items.
book: Taken.
jar: Taken.

Parents and ‘exclude_from_all’

If an object is a parent to other objects and has a false exclude_from_all property (allowing it to be used in “all” commands), its children will be skipped. If the parent has a true exclude_from_all property, the command will get applied to its children instead (unless further rules prevent it in the ExcludeFromAll routine).