Croaker's TinyMUSH Manual
Last update: December 8, 2004
Author: Croaker
Editor: Josh Juran <wanderer@metamage.com>
URL: <http://www.metamage.com/mush/croaker/>
4. Puppets
The use of puppets is the easiest of the advanced features to use in MUSH, and also one of the most amusing. Two simple capabilities constitute the puppet: the @force command, and the puppet flag.
4.1. The @force command and objects
In TinyMUD, only a wizard could use force, and then it could only be used on other players. The @force command forces an object or player to perform a command exactly as if they had typed it in. You can make objects walk, talk, @create objects and even @force other objects you own.
The usual syntax of the @force command is:
@force object = command
object can be a name of an object you own, as long as you are in the same rooms as it is. Otherwise, you must use the object number to control it. Since it is used so often in MUSH, the @force command now has a shorthand syntax:
object-number command
The object in this form has the same restriction as the above form of the command.
Example: forcing an object
@create test puppet Created. drop test Dropped. look test test puppet(#4306) You see nothing special. @force test = :jumps up and down and waves. test puppet jumps up and down and waves. @force test = @create sub-puppet look puppet test puppet(#4306) You see nothing special. Carrying: sub-puppet(#4307)
You can have puppets move about, as well, as long as you remember that you have to reference them by object number after they have left the room you are it.
Example: making a puppet move
@force test = north test puppet has left. @force test = south I don't see that here. Sorry. You can only force players and things.This is MUSH's way of telling you it cannot find what you want to force
look Croaker's Robot Lab(#3061R) The robot testing grounds. Contents: Obvious exits: west east north ausremember, test is to the north of us
@force #4306 = south look Croaker's Robot Lab(#3061R) The robot testing grounds. Contents: test puppet(#4306) Obvious exits: west east north ausand test is back.
Note that TinyMUSH does not announce the arrival of the test object. This is because the object cannot hear anything; that is, it cannot relay information or react to anything it hears. Only objects that can hear things (like private conversations) will be announced when they arrive. There are two classes of objects that can overhear conversations, and we'll tackle the simplest form of these next.
4.2. The Puppet Flag and Objects
By setting the puppet flag on an object, the owner enables the object to relay all it hears back to him or her. What the puppet hears will be relayed to the owner, with a lead in to the line of text to differentiate it from the things the player might be hearing normally (or for that matter, might be hearing from another puppet.) The effects of puppets is rather surreal at times. It is not too uncommon to come across a room full of puppets talking to each other, their owners being elsewhere and doing other things while still joining in on the conversation.
Example: puppet output
@create Croaker's test puppet Created. @lock Croaker's=me Locked.always a good idea.
@set croaker's=puppet Croaker's test puppet grows ears and can now hear.you will always see this command when the puppet bit is set
Flag set. drop croaker's Croaker's test puppet> Dropped.There is the first output we see from the puppet
Croaker's test puppet has arrived. Dropped. look croaker's Croaker's test puppet(#5086p) You see nothing special.remember the puppet's number...
#5086 ssend it to the town square
Croaker's test puppet> You go to the town Rhombus. Croaker's test puppet goes south to the town Rhombus. Croaker's test puppet has left. Croaker's test puppet> The Town Rhombus Croaker's test puppet> You are in a pleasant town square, which is shaded by many old red oaks. Pebbled paths lead off in all directions, and the grass is healthy and well cared for. Set between the trees are various old . . . Croaker's test puppet> Contents: Croaker's test puppet> Martha Croaker's test puppet> Gonzo Croaker's test puppet> Gus Croaker's test puppet> Desdi Croaker's test puppet> Tweeni Croaker's test puppet> White Rabbit Croaker's test puppet> Alice Croaker's test puppet> Onex Croaker's test puppet> Lucas Croaker's test puppet> Obvious exits: Croaker's test puppet> Southwest Bulletin Southeast South West East North Croaker's test puppet> Gonzo gives desdi a spare hand so she will have 2 hands again Croaker's test puppet> Desdi giggles. Croaker's test puppet> Onex snorts "Docs, we don't need no stinking docs!" Croaker's test puppet> Tweeni goes home. Croaker's test puppet> Tweeni has left. Croaker's test puppet> Gonzo looks at onex...you perhaps, but gonzo hasnt seen this before Croaker's test puppet> Desdi waves byebye. Croaker's test puppet> Desdi goes home. Croaker's test puppet> Desdi has left. Croaker's test puppet> Gonzo Waves bye to desdi Croaker's test puppet> Onex croaks "Solong!" Croaker's test puppet> Gonzo says "this is a very ribbeting subjet, onex" #5086 "Be nice, you're being recorded for the documentation... Croaker's test puppet> You say "Be nice, you're being recorded for the documentation..." Croaker's test puppet> Gonzo says "smile, youre on candid camera!" #5086="candid puppet... Croaker's test puppet> Huh? (Type "help" for help.)you even get error messages relayed to you
Croaker's test puppet> White Rabbit twitches his nose. #5086 "candid puppet Croaker's test puppet> You say "candid puppet" Croaker's test puppet> White Rabbit twitches his nose. Croaker's test puppet> Gonzo considers hacking /filedump into his tinytalk for benefit of all puppets present #5086 n Croaker's test puppet> You walk toward government center Croaker's test puppet has arrived. Croaker's test puppet> Government center
MUSH also prevents objects from impersonating players...
Example: no impersonating allowed
@create Wizard Created. drop Wizard Dropped. look Wizard Wizard(#5139) You see nothing special. @force Wizard="The Wizard sucks Dodo eggs You are under arrest for impersonating a player! @force Wizard=:tap dances You are under arrest for impersonating a player!
4.3. New command: @sweep
Since objects can now hear things, private conversation on MUSH becomes a little more difficult. Fortunately there is a command to help out. The @sweep command will tell you all of the possible objects which can overhear your conversation, such as players (whether logged in or not), puppets, and some machines (which, as usual, will be covered in another section.)
After you sweep an area and find it empty (except for those in on the conversation) will can be sure you are secure. Even dark people and object will show up on it. Should any object enter the room that can hear, or if one of the objects in a room already is set up to hear, you will see a message tipping you off. Only objects that can hear (including players) are announced by MUSH as they enter a room, and if the owner of an object enables it to hear, you will get a message to the effect that the object has grown ears and can hear.
Example of the @sweep command
Most of the listening objects in the above were players who were not logged in. Even so, you can see that the objects SuperBear and Katie (whatever they might be) are listening.look Government center The Government center, to the east is the Temple of Chaos, to the north is the temple, to the west is the Presidential Palace. This doesn't seem like your typical goverment center, infact you don't see any government here at all. Contents: SuperBear Katie NOTE TO AUSTRALIAN MUSHERS Sign pointing South west to the science museum Post office is south east Sign pointing North east to the Puzzle Paradise. Obvious exits: sw se ne west east north south @sweep Croaker is listening. VAX9000 is listening. BearMan is listening. SuperBear is listening. Katie is listening. Manticora is listening. anonymous is listening. milo is listening. nessus2 is listening. Faradon is listening. radio_man is listening. Kjarsten is listening. Microwiz is listening.
4.4. Puppets and Puzzles: The Key Flag
Puppets have the potential of allowing cheating in puzzles. There is little excitement in having a puppet (or even a machine) go through a puzzle picking up all of the keys and solving the puzzle, or allow a player to cheat by being in two places at once (effectively) and ruining the solution. The key flag can prevent this. If an object has its key flag set, a puppet cannot pick it up, while real players still can. In addition, any object with the key flag set automatically goes home should the person carrying it @teleport away. This prevents people from stealing the keys and rendering the puzzle unsolvable.
Example: key flag
@create object Created. @set object=key Flag set. drop object Dropped. @create puppet Created. @set puppet=puppet puppet grows ears and can now hear. Flag set. drop puppet puppet> Dropped. puppet has arrived. Dropped. @force puppet=get object puppet> You can't pick that up. get object Taken.