Hiding and the relevant commands needs some explaing to be understood fully. The phenomenon of hiding as such is akin to invisibility and is in fact handled much the same way by the same code in the mudlib. The controlling properties are OBJ_I_HIDE, ROOM_I_HIDE and LIVE_I_SNEAK. The skills involved are SS_HIDE, SS_SNEAK and SS_AWARENESS. Hide ---- Let's begin with hiding as such. A player may hide himself or an object in any room that allows it. A room can control this by setting the property ROOM_I_HIDE. If the property is set to -1 hiding is not allowed under any circustances. If it is positive it is used as a difficulty when computing the success of the player's attempt to hide. ROOM_I_HIDE is set to 10 by default unless that value is changed by the creator of the room. The formula is: Hidden = (SS_HIDE - ROOM_I_HIDE) / 2 + random((SS_HIDE - ROOM_I_HIDE) / 2); That value, if positive, is stored in the hidden object as the property OBJ_I_HIDE and is later used for detection purposes. As long as the property is != 0 the object stays hidden. When a player looks inside a room the player will see hidden objects if random(SS_AWARENESS) > OBJ_I_HIDE. An effect of this is that it is possible for a player with good hiding skill and bad awareness to hide an object so effectively he can't even find it himself afterwords. Too prevent this he can type "hide poorly" in which case it will be hidden poorly enough for him always too see it, using the player's awareness as the limiting parameter. * A player may not hide in a room where other living objects are present. * A player may only hide such objects that he is able to pick up and hold. They must be in his hands when he performs the hiding command. If a wizard wants to hide something for gaming purposes he needs only set the property OBJ_I_HIDE in the object for it to be hidden. * A player will become visible if he changes his light value, neither can he hide if he already emits light of a value larger than the surrounding room. * A player will become visible if performing "noisy" commands. This is a somewhat arbitrary term, but must be determined by common sense, not rules. * A player will become visible if he attacks someone or something. Likewise will he become visible if he is attacked. * A player will become visible if someone else performs a "visibility inducing" command on him, a nudge or something like that. Of course, this requires that the other player can see the hidden player. * A player that is invisible and tries to hide does so with only half his usual success value. This is due to the fact that when invisible it is hard to determine if you really have managed to hide or not. If you need to reveal a player against his will, call the function "reveal_me()" in the player object. The text "You are startled to find NNNN suddenly standing next to you!" will be displayed to everyone in the room. Do 'sman reveal_me' to find out about arguments, returns. Reveal ------ A player that sees a hidden object may reveal it, bringing it visible to all by typing "reveal ". The command "reveal me" will reveal oneself, effectivly just bringing you out of hiding. Search ------ A player may search anywhere and if he manages to find anything hidden it will become visible for all to see. If he wants to find it for himself only he must take it quickly and then hide it again. You find something when SS_AWARENESS > OBJ_I_HIDE, in other words just the same as with looking except for the random call. When you search you search with all your attentiveness focused on searching. Sneak ----- Sneaking is a somewhat more complicated operation. Sneaking can be performed from anywhere to anywhere. However, success is dependant on both skill and the ROOM_I_HIDE parameter of both rooms. If you are visible when sneaking away you will be seen leaving, if you are hidden you will leave unnoticed. Success is computed as: success = (SS_SNEAK * 2 + SS_HIDE) / 3 - ROOM_I_HIDE; The reasoning being that if you can't hide, you can't sneak either. The success value is used as a temporary OBJ_I_HIDE value for the player while he moves from one room to the other. When he has arrived he will automatically, regardless of wether he was hidden before or not, attempt to hide again. If he fails he will become visible.