explorable

prop
SYNOPSIS
    mixed P_EXPLORABLE  "Explorable"

    mixed Set(P_EXPLORABLE, mixed value)
    mixed Query(P_EXPLORABLE)
      or
    mixed SetExplorable(mixed value)
    mixed QueryExplorable()
    mixed AddExplorable (mixed new)

      Evaluated by:
    int DoExplore (mixed arg)

DESCRIPTION
    This property determines if this room itself is explorable (the mere act
    of entering counts) or if the scrutinization of a detail is needed.

    The default value is 0, i.e. nothing in the room is explorable.
    If the value is 1, the room itself is explorable. If the value is a string,
    it is the name of the detail which scrutinization counts. The detail
    name may be prepended by "look:", "listen:", "smell:" or "read:" if
    just the specified action on the detail counts as exploration.

    The properties value may also be an array of the aforementioned values
    to combine the several possibilities. AddExplorable() helps in building
    this array.

    The value is analyzed using the lfun DoExplore(). This lfun is passed
    as argument what is explored, checks if the given thing is explorable at
    all and on success calls this_player()->SetExplored(). Result is 0 on
    failure and non-zero on success.

    IMPORTANT: Explorable rooms must be checked in with the /obj/explorer
      controlling object - any archwizard can do this.

    OSB needs more explorable rooms and details, so don't hesitate!

EXAMPLE
    // Entering the room counts as exploration, also listening to the clock.
    // Variant A)
    SetExplorable( ({ 1, "listen:clock" }) );
    // Variant B)
    AddExplorable(1);
    AddExplorable("listen:clock");

AVAILABILITY
    Include: <properties.h>

    Availability: /std/room/(description) and descendants.

SEE ALSO
    room(S), details(P), noises(P), readmsgs(P), smells(P)