RhostMUSH Help File [HTML Version]

Generated: Tue Oct 18 16:45:35 2016

Topic Index

"                         #                         #LAMBDA
$-commands                %                         %!
%#                        %%                        %+
%-                        %0                        %1
%2                        %3                        %4
%5                        %6                        %7
%8                        %9                        %:
%<                        %?                        %@
%_                        %_2                       %_vars
%a                        %b                        %c
%d                        %f                        %i
%k                        %l                        %m
%n                        %o                        %p
%q                        %r                        %s
%t                        %v                        %w
%x                        &                         +channel
+channel2                 +help                     +uptime
1.0.0p0                   1.5.0p0                   2.0.0p0
3.0.0p0                   3.2.0p0                   3.2.4p0
3.2.4p1                   3.2.4p10                  3.2.4p11
3.2.4p12                  3.2.4p13                  3.2.4p14
3.2.4p15                  3.2.4p16                  3.2.4p17
3.2.4p18                  3.2.4p2                   3.2.4p3
3.2.4p4                   3.2.4p5                   3.2.4p6
3.2.4p7                   3.2.4p8                   3.2.4p9
3.9.0p0                   3.9.0p1                   3.9.0p2
3.9.1p0                   3.9.1p1                   3.9.1p2
3.9.2p0                   3.9.2p1                   3.9.3p0
3.9.3p1                   3.9.3p2                   3.9.3p3
3.9.4p0                   3.9.4p1                   3.9.4p2
3.9.4p3                   3.9.4p4                   3.9.4p5
3.9.5p0                   3.9.5p1                   3.9.5p2
3.9.5p3                   :                         ;
>                         @@                        @@()
@aahear                   @aclone                   @aconnect
@adescribe                @adfail                   @adisconnect
@adrop                    @aefail                   @aenter
@afail                    @agfail                   @ahear
@akill                    @aleave                   @alfail
@alias                    @amhear                   @amove
@ansiname                 @apay                     @arfail
@asfail                   @assert                   @asuccess
@atfail                   @atofail                  @atport
@attach                   @aufail                   @ause
@away                     @break                    @caption
@channel                  @channel2                 @charges
@chown                    @clone                    @clone2
@cluster                  @cluster action           @cluster action func
@cluster add              @cluster clear            @cluster cut
@cluster del              @cluster edit             @cluster func
@cluster func action      @cluster grep             @cluster list
@cluster new              @cluster owner            @cluster preserve
@cluster reaction         @cluster regexp           @cluster repair
@cluster set              @cluster threshhold       @cluster trigger
@cluster wipe             @conformat                @cost
@CPATTR                   @create                   @decompile
@descformat               @describe                 @destroy
@dfail                    @dig                      @doing
@dolist                   @dolist2                  @door
@drain                    @drop                     @ealias
@edit                     @efail                    @emit
@enter                    @entrances                @eval
@exitformat               @exitto                   @extansi
@fail                     @femit                    @filter
@find                     @force                    @forwardlist
@fpose                    @fsay                     @gfail
@GREP                     @guild                    @halt
@hide                     @idesc                    @idle
@if                       @ifelse                   @include
@include2                 @infilter                 @inprefix
@invformat                @kill                     @label
@label-example            @label-example2           @label-example3
@label2                   @label3                   @label4
@Lalias                   @last                     @leave
@lemit                    @lfail                    @lfunction
@lfunction2               @link                     @link2
@list                     @list2                    @listen
@listmotd                 @lock                     @lock attribute
@lock attribute2          @lock carry               @lock compound
@lock evaluation          @lock evaluation2         @lock indirect
@lock is                  @Lock keys                @lock locks
@lock locks2              @lock locks3              @lock normal
@lock ownership           @lock type ChownLock      @lock type DarkLock
@lock type DefaultLock    @lock type DropLock       @lock type DropToLock
@lock type EnterLock      @lock type GetFromLock    @lock type GiveLock
@lock type GiveToLock     @lock type LeaveLock      @lock type LinkLock
@lock type OpenLock       @lock type PageLock       @lock type ParentLock
@lock type ReceiveLock    @lock type SpeechLock     @lock type TeloutLock
@lock type TportLock      @lock type TwinkLock      @lock type UseLock
@lock type UserLock       @lock type ZoneToLock     @lock type ZoneWizLock
@lset                     @mailsig                  @moniker
@move                     @mvattr                   @name
@nameformat               @notify                   @odescribe
@odfail                   @odrop                    @oefail
@oemit                    @oenter                   @ofail
@ogfail                   @okill                    @oleave
@olfail                   @omove                    @opay
@open                     @orfail                   @osuccess
@otfail                   @otofail                  @otport
@oufail                   @ouse                     @oxenter
@oxleave                  @oxtport                  @parent
@password                 @pay                      @pemit
@pemit2                   @pipe                     @prefix
@progprompt               @program                  @program2 
@program3                 @protect                  @ps
@quitprogram              @quota                    @quota alternate
@quota standard           @race                     @register
@reject                   @remit                    @rfail
@robot                    @runout                   @salisten
@sasmell                  @sataste                  @satouch
@saystring                @search                   @SELFBOOT
@set                      @set2                     @sex
@sfail                    @skip                     @slisten
@solisten                 @sosmell                  @sotaste
@sotouch                  @sql                      @sqlconnect
@sqldisconnect            @ssmell                   @startup
@staste                   @stats                    @stouch
@success                  @sudo                     @sweep
@switch                   @switch2                  @teleport
@teleport2                @tfail                    @titlecaption
@tofail                   @toggle                   @tport
@trigger                  @ufail                    @unlink
@unlock                   @uptime                   @use
@verb                     @verb2                    @verb3
@version                  @wait                     @wait2
@wall                     @whereall                 @whereis
@wipe                     @zone                     \*
\?                        \\                        ]
ABODE                     ABS()                     ACCENT()
ACCENT2                   ACCENT3                   ACCENT4
ACCENTS TOGGLE            ACOS()                    ADD()
AFTER()                   AIINDEX()                 AINDEX()
aliased functions         ALIGN()                   ALLOF()
ALPHAMAX()                ALPHAMIN()                ALT INVENTORIES
ALTNAMES                  ANCESTORS                 AND()
ANDCHR()                  ANDFLAG()                 ANDFLAGS()
ANSI                      ansi functions            ANSI QUIRKS
ANSI()                    ANSI2                     ANSI3
ANSI4                     ANSICOLOR                 ANSINAMES
APOSS()                   ARBITRARY COMMANDS        arbitrary2
ARCHITECT                 arithmetic functions      ARRAY()
ART()                     ASC()                     ASIN()
ATAN()                    ATAN2()                   ATTRCNT()
ATTRIB FORMATTING         ATTRIBUTE FLAG ARCHITECT  ATTRIBUTE FLAG ATRLOCK
ATTRIBUTE FLAG COUNCILOR  ATTRIBUTE FLAG DARK       ATTRIBUTE FLAG DEFAULT
ATTRIBUTE FLAG GOD        ATTRIBUTE FLAG GUILDMASTERATTRIBUTE FLAG HIDDEN
ATTRIBUTE FLAG IMMORTAL   ATTRIBUTE FLAG LOCK       ATTRIBUTE FLAG LOGGED
ATTRIBUTE FLAG MDARK      ATTRIBUTE FLAG NO_CLONE   ATTRIBUTE FLAG NO_COMMAND
ATTRIBUTE FLAG NO_INHERIT ATTRIBUTE FLAG NO_PARSE   ATTRIBUTE FLAG NOPROG
ATTRIBUTE FLAG PINVISIBLE ATTRIBUTE FLAG PRIVATE    ATTRIBUTE FLAG REGEXP
ATTRIBUTE FLAG ROYALTY    ATTRIBUTE FLAG SAFE       ATTRIBUTE FLAG SINGLETHREAD
ATTRIBUTE FLAG USELOCK    ATTRIBUTE FLAG VISUAL     ATTRIBUTE FLAG WIZARD
ATTRIBUTE FLAGS           ATTRIBUTE FLAGS2          ATTRIBUTE FORMATTING
ATTRIBUTE OWNERSHIP       attribute ownership2      attribute ownership3
ATTRIBUTE TREE LIMITATIONSATTRIBUTE TREE PERMISSION ATTRIBUTE TREE SETTING
ATTRIBUTE TREE VIEWING    ATTRIBUTE TREES           ATTRIBUTE USELOCK2
ATTRIBUTE USELOCKS        attribute-commands        attributes
AUDIBLE                   AUDITORIUM                AVG()
BANG NOTATION             BEFORE()                  BEING KILLED
BETWEEN()                 BITTYPE()                 BLIND
BOGUS COMMANDS            BOOLEAN VALUES            BOUNCE
BOUNCEFORWARD             BOUND()                   BRACKETS()
BRANDY_MAIL TOGGLE        BYEROOM                   CAND()
CAPLIST()                 CAPSTR()                  case()
caseall()                 cat()                     cdark
CEIL()                    CENTER()                  changes
channel                   channel2                  CHARIN()
CHAROUT()                 chidden                   CHILDREN()
CHKREALITY()              CHKREALITY()              CHKTRACE()
CHOMP()                   CHOWN_OK                  CHR()
CITER()                   CLOAK                     CLONE()
CLUSTER COMMANDS          cluster functions         CLUSTER_ADD()
CLUSTER_ATTRCNT()         CLUSTER_DEFAULT()         CLUSTER_EDEFAULT()
CLUSTER_FLAGS()           CLUSTER_GET()             CLUSTER_GET_EVAL()
CLUSTER_GREP()            CLUSTER_HASATTR()         CLUSTER_HASFLAG()
CLUSTER_LATTR()           CLUSTER_LATTR2            CLUSTER_REGREP()
CLUSTER_REGREPI()         CLUSTER_SET()             CLUSTER_STATS()
CLUSTER_U()               CLUSTER_U2()              CLUSTER_U2DEFAULT()
CLUSTER_U2LDEFAULT()      CLUSTER_U2LOCAL()         CLUSTER_U2LOCAL2
CLUSTER_UDEFAULT()        CLUSTER_UEVAL()           CLUSTER_ULDEFAULT()
CLUSTER_ULOCAL()          CLUSTER_ULOCAL2           CLUSTER_VATTRCNT()
CLUSTER_WIPE()            CLUSTER_XGET()            CLUSTERS
CMDS()                    CNAME()                   colors
COLORS()                  COLUMNS()                 COLUMNS2
COLUMNS3                  COMBAT                    COMMAND EVALUATION
command evaluation2       commands                  COMMANDS FLAG
commands2                 COMP()                    CON()
CONFIG()                  CONN()                    connect
CONNECTED                 CONTROL                   CONTROL_OK
controls()                CONVSECS()                CONVTIME()
COPYRIGHT                 COR()                     COS()
COSH()                    COSTS                     COUNCILOR
CPATTR2                   CPATTR3                   CPUTIME TOGGLE
CPUTIME2                  CRC32()                   create
CREATE()                  CREATETIME()              CREDITS
credits2                  credits3                  credits4
credits5                  CREPLACE()                CTU()
DARK                      database information functionsDEBUG
DEC()                     DECODE64()                DECRYPT()
default()                 DELETE()                  delextract()
descformat                DESTROY()                 DESTROY_OK
DICE()                    DIE()                     DIFFERENCES
DIFFERENCES2              DIG()                     DIGEST()
DIST2D()                  DIST3D()                  DIV()
doing                     DOOR SYNTAX               DOOR_CLOSE
DOOR_KICK                 DOOR_LIST                 DOOR_LIST2
DOOR_OPEN                 DOOR_PUSH                 DOOR_STATUS
DOOR_WRITING              DOOR_WRITING2             DOOR_WRITING3
DOORED                    drop                      DROP-TOS
E()                       edefault()                EDIT()
EDITANSI()                EE()                      ELEMENTPOS()
elements()                elementsmux()             elist()
elock()                   EMIT()                    ENACTOR
ENCODE64()                ENCRYPT()                 enter
ENTER_OK                  ENTRANCES()               eq()
ERROR()                   ESCAPE()                  ESCAPEX()
ESCLIST()                 EVAL()                    examine
examine2                  examine3                  examine4
EXIT()                    EXITS                     EXP()
EXTANSI TOGGLE            EXTRACT()                 EXTRACTWORD()
FAILURE                   FBETWEEN()                FBOUND()
FDIV()                    filter()                  findable()
FIRST()                   FIRSTOF()                 FLAG ALIASES
FLAG LIST                 FLAG LIST2                FLAGS
FLAGS()                   FLIP()                    FLOATING
FLOOR()                   FLOORDIV()                FMOD()
fold()                    folder                    folder change
folder cmdlist            folder create             folder cshare
folder current            folder delete             folder list
folder move               folder rename             folder share
FOLDERCURRENT()           FOLDERLIST()              FOREACH()
formatdesc                FREE                      FUBAR
FULLNAME()                FUNCTION ALIASES          FUNCTION CLASSES
FUNCTION CLASSES2         FUNCTION CLASSES3         FUNCTION CLASSES4
FUNCTION CLASSES5         FUNCTION CLASSES6         FUNCTION CLASSES7
FUNCTION LIST             FUNCTION LIST2            FUNCTION LIST3
FUNCTION LIST4            FUNCTION LIST5            FUNCTION TYPES
FUNCTIONS                 game information functionsGARBLE()
GENDER                    get                       GET()
get2                      GET_EVAL()                give
GLOBALROOM()              GLOBBING                  GOALS
GOING                     goto                      grab
GRAB()                    GRABALL()                 GREP()
gt()                      gte()                     GUESTS
GUILD()                   GUILDMASTER               HALTED
hasattr()                 hasattrp()                hasflag()
hasquota()                HASRXLEVEL()              HASTOGGLE()
HASTXLEVEL()              hastype()                 HAVEN
help                      HERE                      HOME()
HOMES                     IBREAK()                  IC
IDIV()                    IDLE                      IDLE()
ifelse()                  IINDEX()                  ILEV()
IMMORTAL                  INC()                     INDESTRUCTIBLE
INDEX()                   INFO                      INHERIT
INPROGRAM()               INSERT()                  INTERNAL_DOORS
INUM()                    inventory                 invformat
INZONE()                  ISALNUM()                 ISALPHA()
ISCLUSTER()               ISDBREF()                 ISDIGIT()
ISHIDDEN()                ISINT()                   ISLOWER()
ISNUM()                   ISOBJID()                 ISPUNCT()
ISSPACE()                 ISUPPER()                 ISWORD()
ISXDIGIT()                ITER()                    ITEXT()
join                      JUMP_OK                   KEEPALIVE TOGGLE
KEEPFLAGS()               KEEPTYPE()                KEY
kill                      LADD()                    LAND()
LAST()                    LASTCREATE()              LATTR()
LATTR2                    LAVG()                    LCMDS()
LCON()                    LCSTR()                   LDELETE()
LDIV()                    leave                     LEFT()
LEMIT()                   LEXITS()                  LFLAGS()
LIGHT                     LINK()                    LINK_OK
LINKING                   list functions            list functions2
list functions3           list functions4           LIST()
LIST2                     LISTCOMMANDS()            LISTDIFF()
listen                    LISTENING                 LISTFLAGS()
LISTFUNCTIONS()           LISTINTER()               LISTMATCH()
LISTNEWSGROUPS()          LISTPROTECTION()          LISTRLEVELS()
LISTS                     LISTTOGGLES()             LISTUNION()
LIT()                     LJ()                      LJC()
LJUST()                   LLOC()                    LMATH()
LMAX()                    LMIN()                    LMUL()
LN()                      LNOR()                    LNUM()
LNUM2()                   LOC()                     LOCALFUNC()
LOCALIZE()                LOCATE()                  locate2
locate3                   lock()                    lockcheck()
lockdecode()              lockencode()              LOG()
logarithmic functions     logical functions         LOGOUT
look                      LOOPING                   LOR()
lpage                     LPARENT()                 lrand()
LREPLACE()                lrooms()                  LSET()
LSUB()                    lt()                      lte()
LTOGGLES()                LWHO()                    LXNOR()
LXOR()                    LZONE()                   mail
mail alias                mail anonymous            mail autofor
mail autopurges           mail ball                 mail basics
mail basics2              mail both                 mail btutor
mail changes              mail changes2             mail check
mail cmdlist              mail cmdlist2             mail cmdlist3
mail creating             mail credits              mail delete
mail dtutor               mail dtutor notes         mail dtutor1
mail dtutor2              mail dtutor3              mail dtutor4
mail dtutor5              mail dtutor6              mail dtutor7
mail folders              mail forward              mail line
mail line examples        mail lineeditor           mail list_aliases
mail lock                 mail main                 mail mark
mail massmail             mail nall                 mail new
mail next                 mail number               mail page
mail password             mail previous             mail quick
mail quicklist            mail quota                mail read
mail recall               mail recall2              mail recall3
mail reject               mail reply                mail save
mail send                 mail send brandy          mail send examples
mail send quick           mail send2                mail setup_aliases
mail share                mail signature            mail status
mail status2              mail technical            mail topics
mail tutorial             mail uall                 mail unmark
mail unread               mail version              mail write
mail write +acc           mail write +bcc           mail write +cc
mail write +del           mail write +edit          mail write +editall
mail write +fedit         mail write +feditall      mail write +forget
mail write +forward       mail write +insert        mail write +join
mail write +justify       mail write +list          mail write +proof
mail write +reply         mail write +send          mail write +split
mail write +subject       mail write -              mail write adding
mail write autonotify     mail write cmdlist        mail write cmdlist2
mail write examples       mail write forwarding     mail write quicksending
mail writing              mail zap                  mail-admin
mail-aliases              mail-aliases2             mail-deleting
mail-examples             mail-filtering            mail-folders
mail-other                mail-reading              mail-reviewing
mail-sharing              mail-writing              MAIL_NOPARSE TOGGLE
MAIL_STRIPRETURN TOGGLE   MAILFILTER                MAILQUICK()
MAILVALIDATE TOGGLE       map()                     MARKER0
MARKER1                   MARKER2                   MARKER3
MARKER4                   MARKER5                   MARKER6
MARKER7                   MARKER8                   MARKER9
MASK()                    MATCH()                   MAX ARGS
MAX()                     ME                        member()
MERGE()                   MID()                     MIN()
miscellaneous functions   MIX()                     MOD()
MODIFYTIME()              MODULO()                  MONEY
MONEY()                   MONEYNAME()               MONITOR
MONITOR TOGGLE            MOON()                    move
MOVE()                    MOVING                    moving2
moving3                   mrpage                    MUDNAME()
MUL()                     MUNGE()                   MUNGE2
MUXPAGE TOGGLE            MWORDS()                  MYOPIC
NAME()                    NAMEQ()                   NAND()
NCOMP()                   NEARBY()                  neq()
NEW USERS                 news                      news changes
news check                news cmdlist              news default group
news description          news description2         news extend
news general              news groupinfo            news grouplist
news groupmem             news info                 news jump
news login                news mailto               news new user
news old news             news post                 news postlist
news postlock             news read                 news readall
news readlock             news repost               news status
news subscribe            news technical            news unsubscribe
news userinfo             news verbose              news yank
NEXT()                    NO_ANSI_EX TOGGLE         NO_ANSI_EXIT TOGGLE
NO_ANSI_PLAYER TOGGLE     NO_ANSI_ROOM TOGGLE       NO_ANSI_THING TOGGLE
NO_COMMAND                NO_FLASH                  NO_SPOOF
NO_TEL                    NO_UNDERLINE              NO_WALLS
NO_YELL                   NOCOMMAND                 NOFLASH
NOGLOBPARENT TOGGLE       NOISY                     NOR()
NOSPOOF                   NOSTR()                   NOT()
NOTCHR()                  NOTEL                     NOTIFY_LINK TOGGLE
NOUNDERLINE               NOWALLS                   NOYELL
NOZONEPARENT TOGGLE       NPEMIT()                  NSITER()
NULL()                    NUM()                     numerical conversion functions
NUMMATCH()                NUMMEMBER()               NUMPOS()
numwildmatch()            OBJ()                     object information functions
object information functions2OBJECT TYPES              OBJEVAL()
OBJID()                   OEMIT()                   OFPARSE()
OFPARSE2                  OPAQUE                    OPEN()
OR()                      ORCHR()                   ORFLAG()
ORFLAGS()                 OUTPUTPREFIX              OUTPUTSUFFIX
OWNER()                   PACK()                    page
page2                     PARENMATCH()              PARENSTR()
PARENT OBJECTS            PARENT()                  PARENT2 
PARENT_OK                 PARENTS()                 PARSE()
PARSESTR()                PARSESTR2                 PARSESTR3
PARSESTR4                 PEDIT()                   PEMIT()
PENN_MAIL TOGGLE          PFIND()                   PGREP()
PI()                      pickrand()                PID()
PID2                      PLAYER                    player information functions
PMATCH()                  PORT()                    POS()
pose                      POSS()                    POWER()
POWER10()                 PRINTF BORDERS            PRINTF BORDERS2
PRINTF CODELIST           PRINTF EXAMPLES           PRINTF EXAMPLES2
PRINTF EXAMPLES3          PRINTF EXAMPLES4          PRINTF EXAMPLES5
PRINTF EXAMPLES6          PRINTF PENN               PRINTF PENN2
PRINTF SYNTAX             PRINTF()                  PRIVATE
PRIVATIZE()               PROGRAMMER()              PTIMEFMT()
PTIMEFMT2                 PUPPET                    PUPPETS
PUSHREGS()                QUICKREFERENCE            QUIET
quit                      quota alternate2          quota alternate3
quota()                   R()                       RACE()
RAND()                    randextract()             randmatch()
randpos()                 read                      reality level functions
REALITY LEVELS            REBOOTSECS()              REBOOTTIME()
REGEDIT()                 REGEDITALL()              REGEDITALLI()
REGEDITALLILIT()          REGEDITALLLIT()           REGEDITI()
REGEDITILIT()             REGEDITLIT()              REGEXP CLASSES
REGEXP CLASSES2           REGEXP EXAMPLES           REGEXP SYNTAX
REGEXP SYNTAX2            REGEXP SYNTAX3            REGEXP SYNTAX4
REGEXP SYNTAX5            REGEXP SYNTAX6            REGEXP SYNTAX7
REGEXP SYNTAX8            REGEXPS                   REGEXPS2
register                  REGLMATCH()               REGLMATCHALL()
REGLMATCHALLI()           REGLMATCHI()              REGMATCH()
REGMATCHI()               REGNUMMATCH()             REGNUMMATCHI()
REGRAB()                  REGRABALL()               REGRABALLI()
REGRABI()                 REGREP()                  REGREPI()
regular expression functionsrelational functions      REMAINDER()
REMFLAGS()                REMIT()                   remove()
REMTYPE()                 REPEAT()                  REPLACE()
REQUIRE_TREES             REST()                    RESWITCH()
RESWITCHALL()             RESWITCHALLI()            RESWITCHI()
REVERSE()                 revisions                 REVWORDS()
RIGHT()                   RINDEX()                  RJ()
RJC()                     RJUST()                   RLOC()
RNUM()                    ROBBERY                   ROBOT
ROMAN()                   ROOM                      ROOM()
rotl()                    rotr()                    ROUND()
ROYALTY                   rpage                     RSET()
RULER()                   RXLEVEL()                 S()
SAFE                      SAFEBUFF()                SAFELOG TOGGLE
save                      say                       score
scramble()                search classes            SEARCH()
SEARCHNG()                SEARCHNGOBJID()           SEARCHOBJID()
SECS()                    SECURE()                  SECUREX()
sees()                    SEMAPHORES                semaphores2
SENSES                    SESSION                   SET()
SETDIFF()                 SETINTER()                SETQ()
SETQ_OLD()                SETQ_TEMPLATES            SETQMATCH()
SETR()                    SETR_OLD()                SETUNION()
SHIFT()                   shl()                     SHOWFAILCMD
shr()                     shuffle()                 side effect functions
SIDEEFFECTS               SIDEFX                    SIGN()
SIN()                     SINGLETHREADING           SINGLETIME()
SINH()                    SLAVE                     smell
SORT()                    SORTBY()                  SORTLIST()
SORTLIST2                 SOUNDEX()                 SOUNDEX2
SOUNDLIKE()               SOUNDSLIKE()              SPACE()
SPEAK()                   SPELLNUM()                SPLICE()
SPOOFING                  SQL                       SQL()
SQLESCAPE()               SQLITE_QUERY()            SQLITE_QUERY2
SQLOFF()                  SQLON()                   SQLPING()
SQRT()                    SQUISH()                  SQUISH()
STACK                     STARTSECS()               STARTTIME()
STATS()                   STEP()                    STICKY
STR()                     STRALLOF()                STRCAT()
STRDISTANCE()             STREQ()                   STREVAL()
STRFIRSTOF()              STRFUNC()                 string functions
string functions2         string functions3         STRIP()
STRIPACCENTS()            STRIPANSI()               STRLEN()
STRLENRAW()               STRLENVIS()               STRMATCH()
strmath()                 STRTRUNC()                SUB()
SUBJ()                    SUBNETMATCH()             SUBSTITUTIONS
substitutions2            SUCCESS                   SUPER-ROYALTY
SWITCH()                  SWITCHALL()               SWITCHES
T()                       take                      take2
TAN()                     TANH()                    taste
TEL()                     TELOK                     TEMPLE
TERSE                     THING                     think
throw                     time functions            TIME()
TIMEFMT ADVANCED          TIMEFMT ADVANCED EXAMPLE  TIMEFMT ADVANCED2
TIMEFMT CODELIST          TIMEFMT CODELIST2         TIMEFMT DATE
TIMEFMT ELAPSED           TIMEFMT ESCAPES           TIMEFMT EXAMPLES
TIMEFMT SYNTAX            TIMEFMT SYNTAX2           TIMEFMT TIME
TIMEFMT TIMEZONE          TIMEFMT()                 timezone list
timezone list10           timezone list11           timezone list12
timezone list2            timezone list3            timezone list4
timezone list5            timezone list6            timezone list7
timezone list8            timezone list9            TOBIN()
TODEC()                   TOGGLE LIST               toggle()
TOGGLES                   TOHEX()                   TOOCT()
topics                    TOTCMDS()                 TOTMATCH()
TOTMEMBER()               TOTPOS()                  totwildmatch()
touch                     TR()                      TRACE
TRACE()                   trace2                    TRACE_COLOR
TRACE_GREP                train                     TRANSLATE()
TRANSPARENT               trigonometry functions    TRIM()
TRUNC()                   TXLEVEL()                 type()
U()                       U2()                      u2default()
u2ldefault()              U2LOCAL()                 U2LOCAL2
UCSTR()                   udefault()                UEVAL()
uldefault()               ULOCAL()                  ULOCAL2
UNESCLIST()               UNFINDABLE                UNPACK()
use                       USEFUL                    USER ATTRIBUTES
userlocks                 V()                       VADD()
VALID()                   VANILLA_ERRORS TOGGLE     VARIABLE EXITS
VARIABLE TOGGLE           VATOVZ                    VATTRCNT()
VCROSS()                  VDIM()                    VDOT()
VERBOSE                   VERBS                     version
VERSION()                 visible()                 visiblemux()
VISUAL                    VMAG()                    VMUL()
VPAGE TOGGLE              VSUB()                    VUNIT()
wanderer                  WHERE()                   WHILE()
WHILE2                    whisper                   who
wielded                   WILDCARDS                 WILDCARDS2
wildmatch()               WIPE()                    WIZARDS
wordpos()                 WORDS()                   worn
WRAP()                    WRAP2                     WRAPCOLUMNS()
WRAPCOLUMNS2              WRAPCOLUMNS3              WRITABLE()
XCON()                    XCON2                     XDEC()
XGET()                    XINC()                    XNOR()
XOR()                     XORCHR()                  XTERMCOLOR
XTERMCOLOR LIST           XTERMCOLOR LIST2          XTERMCOLOR LIST3
XTERMCOLOR LIST4          XTERMCOLOR SYNTAX         ZATOZZ
ZEMIT()                   ZFUN()                    ZFUN2()
zfun2default()            zfun2ldefault()           ZFUN2LOCAL()
ZFUN2LOCAL2               zfundefault()             ZFUNEVAL()
zfunldefault()            ZFUNLOCAL()               ZFUNLOCAL2
zone functions            ZONE_AUTOADD TOGGLE       ZONE_AUTOADDALL TOGGLE
ZONECMD()                 ZONECMD2                  ZONECMDCHK
ZONECONTENTS              ZONEMASTER                ZONEPARENT 
zones                     zones2                    ZWHO()

"

  Command: "<message>
  Says <message> out loud to everyone in your current room.  Example:
  the command '"Where is the movie theater?' produces
  '<yourname> says "Where is the movie theater>"'.  Note that the closing
  double quote is automatically added.
  
  See Also: page, pose, say, :, ", @saystring
  
[TOP] [NEXT]

#

  Command: #<number> <command>
  Forces the object whose database number is <number> to perform <command>.
  Example: '#1033 move north' forces object #1033 to go north (assuming that
  you control it).  The same restrictions that apply to @force also apply to
  this command.
  
  See Also: @force
  
[PREV] [TOP] [NEXT]

#LAMBDA

  Object type: #lambda
  
  In any function that accepts #obj/attr pairs, you may substitute the
  object dbref# with '#lambda'.  This basically says 'take the string after
  as a literal and not an attribute'.
  
  For example:
    > @va #123=Testing
    Set.
    > say get(#123/va)
    You say "Testing"
    > say get(#lambda/va)
    You say "va"
    > say u(#lambda/Testing: %%0,Boo!)
    You say "Testing: Boo!"
    
[PREV] [TOP] [NEXT]

$-commands

  Please check help on 'ARBITRARY COMMANDS'.  
  
  However, you should be aware that RhostMUSH comes default with $commands
  *NOT* working on players.  Talk to your local administration to see if 
  this option has been enabled or disabled.
  
  See Also: ARBITRARY COMMANDS
  
[PREV] [TOP] [NEXT]

%

  Topic: SUBSTITUTIONS
 
  All messages may contain %-substitutions, which evaluate to gender-specific
  pronouns if the player's gender is set or to other useful information.
  Information returned is based on the player that caused the message to be
  displayed, not the object that stored the message or which is running the
  action list.  The substitutions available are:
 
    %s, %S  = Name, he, she, it, they.        (subjective)
    %o, %O  = Name, him, her, it, them.       (objective)
    %p, %P  = Name's, his, her, its, their.   (possessive)
    %a, %A  = Name's, his, hers, its, theirs. (absolute possessive)
    %n, %N  = the player's name.
    %k, %K  = the player's colorized/accented name.
    %w, %W  = the target dbref# of the twinklock (if applicable)
    %r      = carriage return.
    %t      = tab character.
    %b      = space character.
    %%      = literal '%' character.
    %0-%9   = Value of positional parameter/stack location 0 through 9.
    %-      = Stack 10+ that are comma delimited
    %i0-%i9 = Equivalent to itext(0) through itext(9). [%il for outer]
    %d0-%d9 = Equivalent to dtext(0) through dtext(9).  [%dl for outer]
              Only useable with /inline only.
    %q0-%q9 = Value of registers.  Basically equivalent to [r(0)] - [r(9)].
    %qa-%qz = Extended value of registers.
    %va-%vz = Contents of attribute va through vz.
  
  Note: %q<label> works for setq labels.  ie.  [setq(0,foo,bar)]%q<bar>
  
{ 'help substitutions2' for more }

[PREV] [TOP] [NEXT]

%!

    %#      = Database number of the object that caused the message to be
              displayed or the action list to be run.
    %:      = Database object-id of the object that caused the message to be
              displayed or the action list to be run.
    %l      = Database number of the location of the object that caused the
              message to be displayed or the action list to be run.
    %!      = Database number of the object holding the message or running
              the action list.
    %@      = Database number of the object immediately calling %! (Caller).
              This number starts as the same as %#, but can be affected by
              u()-type functions, zones, and @function.
    %+      = Show the total arguments a function received.
    %?      = Show current function invocation as well as current nest levels.
    %c      = ANSI substitution or Last Command Executed.
    %x      = ANSI substitution or Last Command Executed.
    %_      = The TRACE breakpoint marker.  See 'help %_' for more.
    %m      = ANSI substitution or Last Command Executed.

              The functionality of above subs depends on compile options:

            * ANSI substitution: It takes the next character as the ansi
              sequence and continues with that sequence till the next one
              or end of the line.  You may also specify 0x## (ie: 0x20)
              to use extended 256 colors.

            * Last Command Executed: The substitution contains the whole,
              unevaluated code of the last command executed.

    %f      = Specify template for accent handler for strings.  To see a list
              of templates, see help on the accent() function.
    %<      = Used for UNICODE (ASCII 160 through 255).  Syntax: %<###>
              This requires the ACCENT toggle to utilize.
  
  Note:  The functionality of '%c' and '%x' may be switched.  Check
         @list options to check.
  
  Note:  The functionality of '%f' is only useable if ZENTY_ANSI is enabled.
         The functionality of '%<' is only useable if ZENTY_ANSI is enabled.
         The functionality of '%<' requires the ACCENTS toggle.
   
  If the letter following the % is capitalized, the first letter of the
  result of the substitution is also capitalized.
   
  Note: %<whatever> is equivalent to [v(<whatever>)], but is more efficient.
        This _ONLY_ works for @va to @vz attributes currently.  Sorry.
  
  See Also: GENDER, V(), SHIFT(), ACCENT()
  
[PREV] [TOP] [NEXT]

%#

    %#      = Database number of the object that caused the message to be
              displayed or the action list to be run.
    %:      = Database object-id of the object that caused the message to be
              displayed or the action list to be run.
    %l      = Database number of the location of the object that caused the
              message to be displayed or the action list to be run.
    %!      = Database number of the object holding the message or running
              the action list.
    %@      = Database number of the object immediately calling %! (Caller).
              This number starts as the same as %#, but can be affected by
              u()-type functions, zones, and @function.
    %+      = Show the total arguments a function received.
    %?      = Show current function invocation as well as current nest levels.
    %c      = ANSI substitution or Last Command Executed.
    %x      = ANSI substitution or Last Command Executed.
    %_      = The TRACE breakpoint marker.  See 'help %_' for more.
    %m      = ANSI substitution or Last Command Executed.

              The functionality of above subs depends on compile options:

            * ANSI substitution: It takes the next character as the ansi
              sequence and continues with that sequence till the next one
              or end of the line.  You may also specify 0x## (ie: 0x20)
              to use extended 256 colors.

            * Last Command Executed: The substitution contains the whole,
              unevaluated code of the last command executed.

    %f      = Specify template for accent handler for strings.  To see a list
              of templates, see help on the accent() function.
    %<      = Used for UNICODE (ASCII 160 through 255).  Syntax: %<###>
              This requires the ACCENT toggle to utilize.
  
  Note:  The functionality of '%c' and '%x' may be switched.  Check
         @list options to check.
  
  Note:  The functionality of '%f' is only useable if ZENTY_ANSI is enabled.
         The functionality of '%<' is only useable if ZENTY_ANSI is enabled.
         The functionality of '%<' requires the ACCENTS toggle.
   
  If the letter following the % is capitalized, the first letter of the
  result of the substitution is also capitalized.
   
  Note: %<whatever> is equivalent to [v(<whatever>)], but is more efficient.
        This _ONLY_ works for @va to @vz attributes currently.  Sorry.
  
  See Also: GENDER, V(), SHIFT(), ACCENT()
  
[PREV] [TOP] [NEXT]

%%

  Topic: SUBSTITUTIONS
 
  All messages may contain %-substitutions, which evaluate to gender-specific
  pronouns if the player's gender is set or to other useful information.
  Information returned is based on the player that caused the message to be
  displayed, not the object that stored the message or which is running the
  action list.  The substitutions available are:
 
    %s, %S  = Name, he, she, it, they.        (subjective)
    %o, %O  = Name, him, her, it, them.       (objective)
    %p, %P  = Name's, his, her, its, their.   (possessive)
    %a, %A  = Name's, his, hers, its, theirs. (absolute possessive)
    %n, %N  = the player's name.
    %k, %K  = the player's colorized/accented name.
    %w, %W  = the target dbref# of the twinklock (if applicable)
    %r      = carriage return.
    %t      = tab character.
    %b      = space character.
    %%      = literal '%' character.
    %0-%9   = Value of positional parameter/stack location 0 through 9.
    %-      = Stack 10+ that are comma delimited
    %i0-%i9 = Equivalent to itext(0) through itext(9). [%il for outer]
    %d0-%d9 = Equivalent to dtext(0) through dtext(9).  [%dl for outer]
              Only useable with /inline only.
    %q0-%q9 = Value of registers.  Basically equivalent to [r(0)] - [r(9)].
    %qa-%qz = Extended value of registers.
    %va-%vz = Contents of attribute va through vz.
  
  Note: %q<label> works for setq labels.  ie.  [setq(0,foo,bar)]%q<bar>
  
{ 'help substitutions2' for more }

[PREV] [TOP] [NEXT]

%+

    %#      = Database number of the object that caused the message to be
              displayed or the action list to be run.
    %:      = Database object-id of the object that caused the message to be
              displayed or the action list to be run.
    %l      = Database number of the location of the object that caused the
              message to be displayed or the action list to be run.
    %!      = Database number of the object holding the message or running
              the action list.
    %@      = Database number of the object immediately calling %! (Caller).
              This number starts as the same as %#, but can be affected by
              u()-type functions, zones, and @function.
    %+      = Show the total arguments a function received.
    %?      = Show current function invocation as well as current nest levels.
    %c      = ANSI substitution or Last Command Executed.
    %x      = ANSI substitution or Last Command Executed.
    %_      = The TRACE breakpoint marker.  See 'help %_' for more.
    %m      = ANSI substitution or Last Command Executed.

              The functionality of above subs depends on compile options:

            * ANSI substitution: It takes the next character as the ansi
              sequence and continues with that sequence till the next one
              or end of the line.  You may also specify 0x## (ie: 0x20)
              to use extended 256 colors.

            * Last Command Executed: The substitution contains the whole,
              unevaluated code of the last command executed.

    %f      = Specify template for accent handler for strings.  To see a list
              of templates, see help on the accent() function.
    %<      = Used for UNICODE (ASCII 160 through 255).  Syntax: %<###>
              This requires the ACCENT toggle to utilize.
  
  Note:  The functionality of '%c' and '%x' may be switched.  Check
         @list options to check.
  
  Note:  The functionality of '%f' is only useable if ZENTY_ANSI is enabled.
         The functionality of '%<' is only useable if ZENTY_ANSI is enabled.
         The functionality of '%<' requires the ACCENTS toggle.
   
  If the letter following the % is capitalized, the first letter of the
  result of the substitution is also capitalized.
   
  Note: %<whatever> is equivalent to [v(<whatever>)], but is more efficient.
        This _ONLY_ works for @va to @vz attributes currently.  Sorry.
  
  See Also: GENDER, V(), SHIFT(), ACCENT()
  
[PREV] [TOP] [NEXT]

%-

  Topic: SUBSTITUTIONS
 
  All messages may contain %-substitutions, which evaluate to gender-specific
  pronouns if the player's gender is set or to other useful information.
  Information returned is based on the player that caused the message to be
  displayed, not the object that stored the message or which is running the
  action list.  The substitutions available are:
 
    %s, %S  = Name, he, she, it, they.        (subjective)
    %o, %O  = Name, him, her, it, them.       (objective)
    %p, %P  = Name's, his, her, its, their.   (possessive)
    %a, %A  = Name's, his, hers, its, theirs. (absolute possessive)
    %n, %N  = the player's name.
    %k, %K  = the player's colorized/accented name.
    %w, %W  = the target dbref# of the twinklock (if applicable)
    %r      = carriage return.
    %t      = tab character.
    %b      = space character.
    %%      = literal '%' character.
    %0-%9   = Value of positional parameter/stack location 0 through 9.
    %-      = Stack 10+ that are comma delimited
    %i0-%i9 = Equivalent to itext(0) through itext(9). [%il for outer]
    %d0-%d9 = Equivalent to dtext(0) through dtext(9).  [%dl for outer]
              Only useable with /inline only.
    %q0-%q9 = Value of registers.  Basically equivalent to [r(0)] - [r(9)].
    %qa-%qz = Extended value of registers.
    %va-%vz = Contents of attribute va through vz.
  
  Note: %q<label> works for setq labels.  ie.  [setq(0,foo,bar)]%q<bar>
  
{ 'help substitutions2' for more }

[PREV] [TOP] [NEXT]

%0

  Topic: SUBSTITUTIONS
 
  All messages may contain %-substitutions, which evaluate to gender-specific
  pronouns if the player's gender is set or to other useful information.
  Information returned is based on the player that caused the message to be
  displayed, not the object that stored the message or which is running the
  action list.  The substitutions available are:
 
    %s, %S  = Name, he, she, it, they.        (subjective)
    %o, %O  = Name, him, her, it, them.       (objective)
    %p, %P  = Name's, his, her, its, their.   (possessive)
    %a, %A  = Name's, his, hers, its, theirs. (absolute possessive)
    %n, %N  = the player's name.
    %k, %K  = the player's colorized/accented name.
    %w, %W  = the target dbref# of the twinklock (if applicable)
    %r      = carriage return.
    %t      = tab character.
    %b      = space character.
    %%      = literal '%' character.
    %0-%9   = Value of positional parameter/stack location 0 through 9.
    %-      = Stack 10+ that are comma delimited
    %i0-%i9 = Equivalent to itext(0) through itext(9). [%il for outer]
    %d0-%d9 = Equivalent to dtext(0) through dtext(9).  [%dl for outer]
              Only useable with /inline only.
    %q0-%q9 = Value of registers.  Basically equivalent to [r(0)] - [r(9)].
    %qa-%qz = Extended value of registers.
    %va-%vz = Contents of attribute va through vz.
  
  Note: %q<label> works for setq labels.  ie.  [setq(0,foo,bar)]%q<bar>
  
{ 'help substitutions2' for more }

[PREV] [TOP] [NEXT]

%1

  Topic: SUBSTITUTIONS
 
  All messages may contain %-substitutions, which evaluate to gender-specific
  pronouns if the player's gender is set or to other useful information.
  Information returned is based on the player that caused the message to be
  displayed, not the object that stored the message or which is running the
  action list.  The substitutions available are:
 
    %s, %S  = Name, he, she, it, they.        (subjective)
    %o, %O  = Name, him, her, it, them.       (objective)
    %p, %P  = Name's, his, her, its, their.   (possessive)
    %a, %A  = Name's, his, hers, its, theirs. (absolute possessive)
    %n, %N  = the player's name.
    %k, %K  = the player's colorized/accented name.
    %w, %W  = the target dbref# of the twinklock (if applicable)
    %r      = carriage return.
    %t      = tab character.
    %b      = space character.
    %%      = literal '%' character.
    %0-%9   = Value of positional parameter/stack location 0 through 9.
    %-      = Stack 10+ that are comma delimited
    %i0-%i9 = Equivalent to itext(0) through itext(9). [%il for outer]
    %d0-%d9 = Equivalent to dtext(0) through dtext(9).  [%dl for outer]
              Only useable with /inline only.
    %q0-%q9 = Value of registers.  Basically equivalent to [r(0)] - [r(9)].
    %qa-%qz = Extended value of registers.
    %va-%vz = Contents of attribute va through vz.
  
  Note: %q<label> works for setq labels.  ie.  [setq(0,foo,bar)]%q<bar>
  
{ 'help substitutions2' for more }

[PREV] [TOP] [NEXT]

%2

  Topic: SUBSTITUTIONS
 
  All messages may contain %-substitutions, which evaluate to gender-specific
  pronouns if the player's gender is set or to other useful information.
  Information returned is based on the player that caused the message to be
  displayed, not the object that stored the message or which is running the
  action list.  The substitutions available are:
 
    %s, %S  = Name, he, she, it, they.        (subjective)
    %o, %O  = Name, him, her, it, them.       (objective)
    %p, %P  = Name's, his, her, its, their.   (possessive)
    %a, %A  = Name's, his, hers, its, theirs. (absolute possessive)
    %n, %N  = the player's name.
    %k, %K  = the player's colorized/accented name.
    %w, %W  = the target dbref# of the twinklock (if applicable)
    %r      = carriage return.
    %t      = tab character.
    %b      = space character.
    %%      = literal '%' character.
    %0-%9   = Value of positional parameter/stack location 0 through 9.
    %-      = Stack 10+ that are comma delimited
    %i0-%i9 = Equivalent to itext(0) through itext(9). [%il for outer]
    %d0-%d9 = Equivalent to dtext(0) through dtext(9).  [%dl for outer]
              Only useable with /inline only.
    %q0-%q9 = Value of registers.  Basically equivalent to [r(0)] - [r(9)].
    %qa-%qz = Extended value of registers.
    %va-%vz = Contents of attribute va through vz.
  
  Note: %q<label> works for setq labels.  ie.  [setq(0,foo,bar)]%q<bar>
  
{ 'help substitutions2' for more }

[PREV] [TOP] [NEXT]

%3

  Topic: SUBSTITUTIONS
 
  All messages may contain %-substitutions, which evaluate to gender-specific
  pronouns if the player's gender is set or to other useful information.
  Information returned is based on the player that caused the message to be
  displayed, not the object that stored the message or which is running the
  action list.  The substitutions available are:
 
    %s, %S  = Name, he, she, it, they.        (subjective)
    %o, %O  = Name, him, her, it, them.       (objective)
    %p, %P  = Name's, his, her, its, their.   (possessive)
    %a, %A  = Name's, his, hers, its, theirs. (absolute possessive)
    %n, %N  = the player's name.
    %k, %K  = the player's colorized/accented name.
    %w, %W  = the target dbref# of the twinklock (if applicable)
    %r      = carriage return.
    %t      = tab character.
    %b      = space character.
    %%      = literal '%' character.
    %0-%9   = Value of positional parameter/stack location 0 through 9.
    %-      = Stack 10+ that are comma delimited
    %i0-%i9 = Equivalent to itext(0) through itext(9). [%il for outer]
    %d0-%d9 = Equivalent to dtext(0) through dtext(9).  [%dl for outer]
              Only useable with /inline only.
    %q0-%q9 = Value of registers.  Basically equivalent to [r(0)] - [r(9)].
    %qa-%qz = Extended value of registers.
    %va-%vz = Contents of attribute va through vz.
  
  Note: %q<label> works for setq labels.  ie.  [setq(0,foo,bar)]%q<bar>
  
{ 'help substitutions2' for more }

[PREV] [TOP] [NEXT]

%4

  Topic: SUBSTITUTIONS
 
  All messages may contain %-substitutions, which evaluate to gender-specific
  pronouns if the player's gender is set or to other useful information.
  Information returned is based on the player that caused the message to be
  displayed, not the object that stored the message or which is running the
  action list.  The substitutions available are:
 
    %s, %S  = Name, he, she, it, they.        (subjective)
    %o, %O  = Name, him, her, it, them.       (objective)
    %p, %P  = Name's, his, her, its, their.   (possessive)
    %a, %A  = Name's, his, hers, its, theirs. (absolute possessive)
    %n, %N  = the player's name.
    %k, %K  = the player's colorized/accented name.
    %w, %W  = the target dbref# of the twinklock (if applicable)
    %r      = carriage return.
    %t      = tab character.
    %b      = space character.
    %%      = literal '%' character.
    %0-%9   = Value of positional parameter/stack location 0 through 9.
    %-      = Stack 10+ that are comma delimited
    %i0-%i9 = Equivalent to itext(0) through itext(9). [%il for outer]
    %d0-%d9 = Equivalent to dtext(0) through dtext(9).  [%dl for outer]
              Only useable with /inline only.
    %q0-%q9 = Value of registers.  Basically equivalent to [r(0)] - [r(9)].
    %qa-%qz = Extended value of registers.
    %va-%vz = Contents of attribute va through vz.
  
  Note: %q<label> works for setq labels.  ie.  [setq(0,foo,bar)]%q<bar>
  
{ 'help substitutions2' for more }

[PREV] [TOP] [NEXT]

%5

  Topic: SUBSTITUTIONS
 
  All messages may contain %-substitutions, which evaluate to gender-specific
  pronouns if the player's gender is set or to other useful information.
  Information returned is based on the player that caused the message to be
  displayed, not the object that stored the message or which is running the
  action list.  The substitutions available are:
 
    %s, %S  = Name, he, she, it, they.        (subjective)
    %o, %O  = Name, him, her, it, them.       (objective)
    %p, %P  = Name's, his, her, its, their.   (possessive)
    %a, %A  = Name's, his, hers, its, theirs. (absolute possessive)
    %n, %N  = the player's name.
    %k, %K  = the player's colorized/accented name.
    %w, %W  = the target dbref# of the twinklock (if applicable)
    %r      = carriage return.
    %t      = tab character.
    %b      = space character.
    %%      = literal '%' character.
    %0-%9   = Value of positional parameter/stack location 0 through 9.
    %-      = Stack 10+ that are comma delimited
    %i0-%i9 = Equivalent to itext(0) through itext(9). [%il for outer]
    %d0-%d9 = Equivalent to dtext(0) through dtext(9).  [%dl for outer]
              Only useable with /inline only.
    %q0-%q9 = Value of registers.  Basically equivalent to [r(0)] - [r(9)].
    %qa-%qz = Extended value of registers.
    %va-%vz = Contents of attribute va through vz.
  
  Note: %q<label> works for setq labels.  ie.  [setq(0,foo,bar)]%q<bar>
  
{ 'help substitutions2' for more }

[PREV] [TOP] [NEXT]

%6

  Topic: SUBSTITUTIONS
 
  All messages may contain %-substitutions, which evaluate to gender-specific
  pronouns if the player's gender is set or to other useful information.
  Information returned is based on the player that caused the message to be
  displayed, not the object that stored the message or which is running the
  action list.  The substitutions available are:
 
    %s, %S  = Name, he, she, it, they.        (subjective)
    %o, %O  = Name, him, her, it, them.       (objective)
    %p, %P  = Name's, his, her, its, their.   (possessive)
    %a, %A  = Name's, his, hers, its, theirs. (absolute possessive)
    %n, %N  = the player's name.
    %k, %K  = the player's colorized/accented name.
    %w, %W  = the target dbref# of the twinklock (if applicable)
    %r      = carriage return.
    %t      = tab character.
    %b      = space character.
    %%      = literal '%' character.
    %0-%9   = Value of positional parameter/stack location 0 through 9.
    %-      = Stack 10+ that are comma delimited
    %i0-%i9 = Equivalent to itext(0) through itext(9). [%il for outer]
    %d0-%d9 = Equivalent to dtext(0) through dtext(9).  [%dl for outer]
              Only useable with /inline only.
    %q0-%q9 = Value of registers.  Basically equivalent to [r(0)] - [r(9)].
    %qa-%qz = Extended value of registers.
    %va-%vz = Contents of attribute va through vz.
  
  Note: %q<label> works for setq labels.  ie.  [setq(0,foo,bar)]%q<bar>
  
{ 'help substitutions2' for more }

[PREV] [TOP] [NEXT]

%7

  Topic: SUBSTITUTIONS
 
  All messages may contain %-substitutions, which evaluate to gender-specific
  pronouns if the player's gender is set or to other useful information.
  Information returned is based on the player that caused the message to be
  displayed, not the object that stored the message or which is running the
  action list.  The substitutions available are:
 
    %s, %S  = Name, he, she, it, they.        (subjective)
    %o, %O  = Name, him, her, it, them.       (objective)
    %p, %P  = Name's, his, her, its, their.   (possessive)
    %a, %A  = Name's, his, hers, its, theirs. (absolute possessive)
    %n, %N  = the player's name.
    %k, %K  = the player's colorized/accented name.
    %w, %W  = the target dbref# of the twinklock (if applicable)
    %r      = carriage return.
    %t      = tab character.
    %b      = space character.
    %%      = literal '%' character.
    %0-%9   = Value of positional parameter/stack location 0 through 9.
    %-      = Stack 10+ that are comma delimited
    %i0-%i9 = Equivalent to itext(0) through itext(9). [%il for outer]
    %d0-%d9 = Equivalent to dtext(0) through dtext(9).  [%dl for outer]
              Only useable with /inline only.
    %q0-%q9 = Value of registers.  Basically equivalent to [r(0)] - [r(9)].
    %qa-%qz = Extended value of registers.
    %va-%vz = Contents of attribute va through vz.
  
  Note: %q<label> works for setq labels.  ie.  [setq(0,foo,bar)]%q<bar>
  
{ 'help substitutions2' for more }

[PREV] [TOP] [NEXT]

%8

  Topic: SUBSTITUTIONS
 
  All messages may contain %-substitutions, which evaluate to gender-specific
  pronouns if the player's gender is set or to other useful information.
  Information returned is based on the player that caused the message to be
  displayed, not the object that stored the message or which is running the
  action list.  The substitutions available are:
 
    %s, %S  = Name, he, she, it, they.        (subjective)
    %o, %O  = Name, him, her, it, them.       (objective)
    %p, %P  = Name's, his, her, its, their.   (possessive)
    %a, %A  = Name's, his, hers, its, theirs. (absolute possessive)
    %n, %N  = the player's name.
    %k, %K  = the player's colorized/accented name.
    %w, %W  = the target dbref# of the twinklock (if applicable)
    %r      = carriage return.
    %t      = tab character.
    %b      = space character.
    %%      = literal '%' character.
    %0-%9   = Value of positional parameter/stack location 0 through 9.
    %-      = Stack 10+ that are comma delimited
    %i0-%i9 = Equivalent to itext(0) through itext(9). [%il for outer]
    %d0-%d9 = Equivalent to dtext(0) through dtext(9).  [%dl for outer]
              Only useable with /inline only.
    %q0-%q9 = Value of registers.  Basically equivalent to [r(0)] - [r(9)].
    %qa-%qz = Extended value of registers.
    %va-%vz = Contents of attribute va through vz.
  
  Note: %q<label> works for setq labels.  ie.  [setq(0,foo,bar)]%q<bar>
  
{ 'help substitutions2' for more }

[PREV] [TOP] [NEXT]

%9

  Topic: SUBSTITUTIONS
 
  All messages may contain %-substitutions, which evaluate to gender-specific
  pronouns if the player's gender is set or to other useful information.
  Information returned is based on the player that caused the message to be
  displayed, not the object that stored the message or which is running the
  action list.  The substitutions available are:
 
    %s, %S  = Name, he, she, it, they.        (subjective)
    %o, %O  = Name, him, her, it, them.       (objective)
    %p, %P  = Name's, his, her, its, their.   (possessive)
    %a, %A  = Name's, his, hers, its, theirs. (absolute possessive)
    %n, %N  = the player's name.
    %k, %K  = the player's colorized/accented name.
    %w, %W  = the target dbref# of the twinklock (if applicable)
    %r      = carriage return.
    %t      = tab character.
    %b      = space character.
    %%      = literal '%' character.
    %0-%9   = Value of positional parameter/stack location 0 through 9.
    %-      = Stack 10+ that are comma delimited
    %i0-%i9 = Equivalent to itext(0) through itext(9). [%il for outer]
    %d0-%d9 = Equivalent to dtext(0) through dtext(9).  [%dl for outer]
              Only useable with /inline only.
    %q0-%q9 = Value of registers.  Basically equivalent to [r(0)] - [r(9)].
    %qa-%qz = Extended value of registers.
    %va-%vz = Contents of attribute va through vz.
  
  Note: %q<label> works for setq labels.  ie.  [setq(0,foo,bar)]%q<bar>
  
{ 'help substitutions2' for more }

[PREV] [TOP] [NEXT]

%:

    %#      = Database number of the object that caused the message to be
              displayed or the action list to be run.
    %:      = Database object-id of the object that caused the message to be
              displayed or the action list to be run.
    %l      = Database number of the location of the object that caused the
              message to be displayed or the action list to be run.
    %!      = Database number of the object holding the message or running
              the action list.
    %@      = Database number of the object immediately calling %! (Caller).
              This number starts as the same as %#, but can be affected by
              u()-type functions, zones, and @function.
    %+      = Show the total arguments a function received.
    %?      = Show current function invocation as well as current nest levels.
    %c      = ANSI substitution or Last Command Executed.
    %x      = ANSI substitution or Last Command Executed.
    %_      = The TRACE breakpoint marker.  See 'help %_' for more.
    %m      = ANSI substitution or Last Command Executed.

              The functionality of above subs depends on compile options:

            * ANSI substitution: It takes the next character as the ansi
              sequence and continues with that sequence till the next one
              or end of the line.  You may also specify 0x## (ie: 0x20)
              to use extended 256 colors.

            * Last Command Executed: The substitution contains the whole,
              unevaluated code of the last command executed.

    %f      = Specify template for accent handler for strings.  To see a list
              of templates, see help on the accent() function.
    %<      = Used for UNICODE (ASCII 160 through 255).  Syntax: %<###>
              This requires the ACCENT toggle to utilize.
  
  Note:  The functionality of '%c' and '%x' may be switched.  Check
         @list options to check.
  
  Note:  The functionality of '%f' is only useable if ZENTY_ANSI is enabled.
         The functionality of '%<' is only useable if ZENTY_ANSI is enabled.
         The functionality of '%<' requires the ACCENTS toggle.
   
  If the letter following the % is capitalized, the first letter of the
  result of the substitution is also capitalized.
   
  Note: %<whatever> is equivalent to [v(<whatever>)], but is more efficient.
        This _ONLY_ works for @va to @vz attributes currently.  Sorry.
  
  See Also: GENDER, V(), SHIFT(), ACCENT()
  
[PREV] [TOP] [NEXT]

%<

    %#      = Database number of the object that caused the message to be
              displayed or the action list to be run.
    %:      = Database object-id of the object that caused the message to be
              displayed or the action list to be run.
    %l      = Database number of the location of the object that caused the
              message to be displayed or the action list to be run.
    %!      = Database number of the object holding the message or running
              the action list.
    %@      = Database number of the object immediately calling %! (Caller).
              This number starts as the same as %#, but can be affected by
              u()-type functions, zones, and @function.
    %+      = Show the total arguments a function received.
    %?      = Show current function invocation as well as current nest levels.
    %c      = ANSI substitution or Last Command Executed.
    %x      = ANSI substitution or Last Command Executed.
    %_      = The TRACE breakpoint marker.  See 'help %_' for more.
    %m      = ANSI substitution or Last Command Executed.

              The functionality of above subs depends on compile options:

            * ANSI substitution: It takes the next character as the ansi
              sequence and continues with that sequence till the next one
              or end of the line.  You may also specify 0x## (ie: 0x20)
              to use extended 256 colors.

            * Last Command Executed: The substitution contains the whole,
              unevaluated code of the last command executed.

    %f      = Specify template for accent handler for strings.  To see a list
              of templates, see help on the accent() function.
    %<      = Used for UNICODE (ASCII 160 through 255).  Syntax: %<###>
              This requires the ACCENT toggle to utilize.
  
  Note:  The functionality of '%c' and '%x' may be switched.  Check
         @list options to check.
  
  Note:  The functionality of '%f' is only useable if ZENTY_ANSI is enabled.
         The functionality of '%<' is only useable if ZENTY_ANSI is enabled.
         The functionality of '%<' requires the ACCENTS toggle.
   
  If the letter following the % is capitalized, the first letter of the
  result of the substitution is also capitalized.
   
  Note: %<whatever> is equivalent to [v(<whatever>)], but is more efficient.
        This _ONLY_ works for @va to @vz attributes currently.  Sorry.
  
  See Also: GENDER, V(), SHIFT(), ACCENT()
  
[PREV] [TOP] [NEXT]

%?

    %#      = Database number of the object that caused the message to be
              displayed or the action list to be run.
    %:      = Database object-id of the object that caused the message to be
              displayed or the action list to be run.
    %l      = Database number of the location of the object that caused the
              message to be displayed or the action list to be run.
    %!      = Database number of the object holding the message or running
              the action list.
    %@      = Database number of the object immediately calling %! (Caller).
              This number starts as the same as %#, but can be affected by
              u()-type functions, zones, and @function.
    %+      = Show the total arguments a function received.
    %?      = Show current function invocation as well as current nest levels.
    %c      = ANSI substitution or Last Command Executed.
    %x      = ANSI substitution or Last Command Executed.
    %_      = The TRACE breakpoint marker.  See 'help %_' for more.
    %m      = ANSI substitution or Last Command Executed.

              The functionality of above subs depends on compile options:

            * ANSI substitution: It takes the next character as the ansi
              sequence and continues with that sequence till the next one
              or end of the line.  You may also specify 0x## (ie: 0x20)
              to use extended 256 colors.

            * Last Command Executed: The substitution contains the whole,
              unevaluated code of the last command executed.

    %f      = Specify template for accent handler for strings.  To see a list
              of templates, see help on the accent() function.
    %<      = Used for UNICODE (ASCII 160 through 255).  Syntax: %<###>
              This requires the ACCENT toggle to utilize.
  
  Note:  The functionality of '%c' and '%x' may be switched.  Check
         @list options to check.
  
  Note:  The functionality of '%f' is only useable if ZENTY_ANSI is enabled.
         The functionality of '%<' is only useable if ZENTY_ANSI is enabled.
         The functionality of '%<' requires the ACCENTS toggle.
   
  If the letter following the % is capitalized, the first letter of the
  result of the substitution is also capitalized.
   
  Note: %<whatever> is equivalent to [v(<whatever>)], but is more efficient.
        This _ONLY_ works for @va to @vz attributes currently.  Sorry.
  
  See Also: GENDER, V(), SHIFT(), ACCENT()
  
[PREV] [TOP] [NEXT]

%@

    %#      = Database number of the object that caused the message to be
              displayed or the action list to be run.
    %:      = Database object-id of the object that caused the message to be
              displayed or the action list to be run.
    %l      = Database number of the location of the object that caused the
              message to be displayed or the action list to be run.
    %!      = Database number of the object holding the message or running
              the action list.
    %@      = Database number of the object immediately calling %! (Caller).
              This number starts as the same as %#, but can be affected by
              u()-type functions, zones, and @function.
    %+      = Show the total arguments a function received.
    %?      = Show current function invocation as well as current nest levels.
    %c      = ANSI substitution or Last Command Executed.
    %x      = ANSI substitution or Last Command Executed.
    %_      = The TRACE breakpoint marker.  See 'help %_' for more.
    %m      = ANSI substitution or Last Command Executed.

              The functionality of above subs depends on compile options:

            * ANSI substitution: It takes the next character as the ansi
              sequence and continues with that sequence till the next one
              or end of the line.  You may also specify 0x## (ie: 0x20)
              to use extended 256 colors.

            * Last Command Executed: The substitution contains the whole,
              unevaluated code of the last command executed.

    %f      = Specify template for accent handler for strings.  To see a list
              of templates, see help on the accent() function.
    %<      = Used for UNICODE (ASCII 160 through 255).  Syntax: %<###>
              This requires the ACCENT toggle to utilize.
  
  Note:  The functionality of '%c' and '%x' may be switched.  Check
         @list options to check.
  
  Note:  The functionality of '%f' is only useable if ZENTY_ANSI is enabled.
         The functionality of '%<' is only useable if ZENTY_ANSI is enabled.
         The functionality of '%<' requires the ACCENTS toggle.
   
  If the letter following the % is capitalized, the first letter of the
  result of the substitution is also capitalized.
   
  Note: %<whatever> is equivalent to [v(<whatever>)], but is more efficient.
        This _ONLY_ works for @va to @vz attributes currently.  Sorry.
  
  See Also: GENDER, V(), SHIFT(), ACCENT()
  
[PREV] [TOP] [NEXT]

%_

  Topic: SUBSTITUTIONS
  Syntax: %_<label>  -- enables debugging if <label> is in TRACE attribute.
          %_<-label> -- disables debugging for <label>
          %_<off>    -- disables all debugging
  
  You can have a total of 1000 label declarations total for processing per
  command queue.
  
  The @label command can be used to integrate labels into attributes.
  
  The %_ substitution is a special substitution as it allows you to enbed
  breakpoints into code to toggle on and off debugging on the fly dynamically.
  This is handled by the enactors 'TRACE' attribute that houses the marker
  that you specify for the substitutions.  The marker can be any string.
  
  You use - as a prefix for the label to turn off debugging for that 
  particular debug marker.  For stacked debugging this will decrement the 
  debug stack count.
   
  Using the <label> adds to the debug stack and using <-label> reduces one
  from the debug stack.  This allows you to essentially nest debugging
  breakpoints within code and only enable/disable them when you set
  the specified label in your TRACE value.  For instance, &TRACE object=123
  
  The <label> needs to be always in lower case.
  
  Note: This has absolutely no impact on the TRACE flag and uses another
  method to keep track of how it's tracing information.  You can use
  this in addition to the TRACE flag if you so wish.
  
  { see 'help %_2' to continue }

[PREV] [TOP] [NEXT]

%_2

  Topic: SUBSTITUTIONS (CONTINUED)
  Syntax: %_<label>  -- enables debugging if <label> is in TRACE attribute.
          %_<-label> -- disables debugging for <label>
          %_<off>    -- disables all debugging
  
  You may use the attribute TRACE_COLOR to set a standard color for your
  labels.   For instance, &TRACE_COLOR object=+purple.  You may specify 
  colors by label as &TRACE_COLOR_<label> object=+orange.  Like 
  &TRACE_COLOR_123.  This will fall back on 'TRACE_COLOR' if the by 
  label isn't found.
  
  You may specify a TRACE_GREP attibute on the enactor 
  (&TRACE_GREP object=<string>) if you wish to have a specific piece 
  of code in trace output which matches the trace output return in red 
  the match.  If the TRACE_GREP attribute is attribute-set REGEXP, 
  it will take the string as a regexp match.
  
  Keep in mind, the various &TRACE attributes need to be on the executor,
  not the object enacting the command.  It will behave like the TRACE flag.
  So all attributes (like &TRACE) need to be on the target that you 
  have the labels on.
   
  Examples:
    > &TRACE me=123
    > say Debugging: [add(1,1)]%_<123>[add(2,2)]%_<-123>[add(3,3)]
    YourPlayerName(#12345) [123]} 'add(2,2)' -> '4'
    You say "Debugging: 246"
    > say Debugging: [add(1,1)]%_<123>[add(2,2)]%_<off>[add(3,3)]
    YourPlayerName(#12345) [123]} 'add(2,2)' -> '4'
    You say "Debugging: 246"
    > &TRACE_COLOR me=+orange
    > say Debugging: [add(1,1)]%_<123>[add(2,2)]%_<off>[add(3,3)]
    YourPlayerName(#12345) [123]} 'add(2,2)' -> '4'
    You say "Debugging: 246"
  
  In the last exampole, the 123 inside the []'s would have been orange.
  
  See 'help %_vars' for variables used with trace label debugging.
  
  See Also: SUBSTITUTIONS, TRACE, trace(), @label, ruler()
  
[PREV] [TOP] [NEXT]

%_vars

  Topic: SUBSTITUTIONS (CONTINUED)
  Syntax: %_<label>  -- enables debugging if <label> is in TRACE attribute.
          %_<-label> -- disables debugging for <label>
          %_<off>    -- disables all debugging
  
  The following special variables are used for %_ label debugging.
  
  TRACE            -- This is the main controller for labels.  When the
                      object running code has a label matching one
                      in this attribute, it will run debugging code
                      for that label until turned off.   This should always
                      have labels in lower case.
  
  TRACE_GREP       -- * Without the REGEXP attribute flag, it will use
                        standard direct string matching and hilight red
                        any match in your trace output.  Again, this must
                        be set on the object running code.
                      * With the REGEXP attribute flag, it uses enhanced
                        regular expression matching to hilite red any
                        matching pattern.
  
  TRACE_COLOR      -- This is the global generic color code that you wish
                      any label to have.  If there's not a label specific
                      color, this is what it will choose.  If no color
                      is selected, it just hilights it.  Again, this must
                      be set on the object running code.
  
  TRACE_COLOR_<L>  -- Where '<L>' is the name of the label.  For example
                      if your label was 'bob' the attribute name would be
                      'TRACE_COLOR_BOB'.  This will set a specific color
                      for the given label to use.  This will have priority
                      over the global TRACE_COLOR definition.
  
  See Also: SUBSTITUTIONS, TRACE, trace(), @label, ruler()
  
[PREV] [TOP] [NEXT]

%a

  Topic: SUBSTITUTIONS
 
  All messages may contain %-substitutions, which evaluate to gender-specific
  pronouns if the player's gender is set or to other useful information.
  Information returned is based on the player that caused the message to be
  displayed, not the object that stored the message or which is running the
  action list.  The substitutions available are:
 
    %s, %S  = Name, he, she, it, they.        (subjective)
    %o, %O  = Name, him, her, it, them.       (objective)
    %p, %P  = Name's, his, her, its, their.   (possessive)
    %a, %A  = Name's, his, hers, its, theirs. (absolute possessive)
    %n, %N  = the player's name.
    %k, %K  = the player's colorized/accented name.
    %w, %W  = the target dbref# of the twinklock (if applicable)
    %r      = carriage return.
    %t      = tab character.
    %b      = space character.
    %%      = literal '%' character.
    %0-%9   = Value of positional parameter/stack location 0 through 9.
    %-      = Stack 10+ that are comma delimited
    %i0-%i9 = Equivalent to itext(0) through itext(9). [%il for outer]
    %d0-%d9 = Equivalent to dtext(0) through dtext(9).  [%dl for outer]
              Only useable with /inline only.
    %q0-%q9 = Value of registers.  Basically equivalent to [r(0)] - [r(9)].
    %qa-%qz = Extended value of registers.
    %va-%vz = Contents of attribute va through vz.
  
  Note: %q<label> works for setq labels.  ie.  [setq(0,foo,bar)]%q<bar>
  
{ 'help substitutions2' for more }

[PREV] [TOP] [NEXT]

%b

  Topic: SUBSTITUTIONS
 
  All messages may contain %-substitutions, which evaluate to gender-specific
  pronouns if the player's gender is set or to other useful information.
  Information returned is based on the player that caused the message to be
  displayed, not the object that stored the message or which is running the
  action list.  The substitutions available are:
 
    %s, %S  = Name, he, she, it, they.        (subjective)
    %o, %O  = Name, him, her, it, them.       (objective)
    %p, %P  = Name's, his, her, its, their.   (possessive)
    %a, %A  = Name's, his, hers, its, theirs. (absolute possessive)
    %n, %N  = the player's name.
    %k, %K  = the player's colorized/accented name.
    %w, %W  = the target dbref# of the twinklock (if applicable)
    %r      = carriage return.
    %t      = tab character.
    %b      = space character.
    %%      = literal '%' character.
    %0-%9   = Value of positional parameter/stack location 0 through 9.
    %-      = Stack 10+ that are comma delimited
    %i0-%i9 = Equivalent to itext(0) through itext(9). [%il for outer]
    %d0-%d9 = Equivalent to dtext(0) through dtext(9).  [%dl for outer]
              Only useable with /inline only.
    %q0-%q9 = Value of registers.  Basically equivalent to [r(0)] - [r(9)].
    %qa-%qz = Extended value of registers.
    %va-%vz = Contents of attribute va through vz.
  
  Note: %q<label> works for setq labels.  ie.  [setq(0,foo,bar)]%q<bar>
  
{ 'help substitutions2' for more }

[PREV] [TOP] [NEXT]

%c

    %#      = Database number of the object that caused the message to be
              displayed or the action list to be run.
    %:      = Database object-id of the object that caused the message to be
              displayed or the action list to be run.
    %l      = Database number of the location of the object that caused the
              message to be displayed or the action list to be run.
    %!      = Database number of the object holding the message or running
              the action list.
    %@      = Database number of the object immediately calling %! (Caller).
              This number starts as the same as %#, but can be affected by
              u()-type functions, zones, and @function.
    %+      = Show the total arguments a function received.
    %?      = Show current function invocation as well as current nest levels.
    %c      = ANSI substitution or Last Command Executed.
    %x      = ANSI substitution or Last Command Executed.
    %_      = The TRACE breakpoint marker.  See 'help %_' for more.
    %m      = ANSI substitution or Last Command Executed.

              The functionality of above subs depends on compile options:

            * ANSI substitution: It takes the next character as the ansi
              sequence and continues with that sequence till the next one
              or end of the line.  You may also specify 0x## (ie: 0x20)
              to use extended 256 colors.

            * Last Command Executed: The substitution contains the whole,
              unevaluated code of the last command executed.

    %f      = Specify template for accent handler for strings.  To see a list
              of templates, see help on the accent() function.
    %<      = Used for UNICODE (ASCII 160 through 255).  Syntax: %<###>
              This requires the ACCENT toggle to utilize.
  
  Note:  The functionality of '%c' and '%x' may be switched.  Check
         @list options to check.
  
  Note:  The functionality of '%f' is only useable if ZENTY_ANSI is enabled.
         The functionality of '%<' is only useable if ZENTY_ANSI is enabled.
         The functionality of '%<' requires the ACCENTS toggle.
   
  If the letter following the % is capitalized, the first letter of the
  result of the substitution is also capitalized.
   
  Note: %<whatever> is equivalent to [v(<whatever>)], but is more efficient.
        This _ONLY_ works for @va to @vz attributes currently.  Sorry.
  
  See Also: GENDER, V(), SHIFT(), ACCENT()
  
[PREV] [TOP] [NEXT]

%d

  Topic: SUBSTITUTIONS
 
  All messages may contain %-substitutions, which evaluate to gender-specific
  pronouns if the player's gender is set or to other useful information.
  Information returned is based on the player that caused the message to be
  displayed, not the object that stored the message or which is running the
  action list.  The substitutions available are:
 
    %s, %S  = Name, he, she, it, they.        (subjective)
    %o, %O  = Name, him, her, it, them.       (objective)
    %p, %P  = Name's, his, her, its, their.   (possessive)
    %a, %A  = Name's, his, hers, its, theirs. (absolute possessive)
    %n, %N  = the player's name.
    %k, %K  = the player's colorized/accented name.
    %w, %W  = the target dbref# of the twinklock (if applicable)
    %r      = carriage return.
    %t      = tab character.
    %b      = space character.
    %%      = literal '%' character.
    %0-%9   = Value of positional parameter/stack location 0 through 9.
    %-      = Stack 10+ that are comma delimited
    %i0-%i9 = Equivalent to itext(0) through itext(9). [%il for outer]
    %d0-%d9 = Equivalent to dtext(0) through dtext(9).  [%dl for outer]
              Only useable with /inline only.
    %q0-%q9 = Value of registers.  Basically equivalent to [r(0)] - [r(9)].
    %qa-%qz = Extended value of registers.
    %va-%vz = Contents of attribute va through vz.
  
  Note: %q<label> works for setq labels.  ie.  [setq(0,foo,bar)]%q<bar>
  
{ 'help substitutions2' for more }

[PREV] [TOP] [NEXT]

%f

    %#      = Database number of the object that caused the message to be
              displayed or the action list to be run.
    %:      = Database object-id of the object that caused the message to be
              displayed or the action list to be run.
    %l      = Database number of the location of the object that caused the
              message to be displayed or the action list to be run.
    %!      = Database number of the object holding the message or running
              the action list.
    %@      = Database number of the object immediately calling %! (Caller).
              This number starts as the same as %#, but can be affected by
              u()-type functions, zones, and @function.
    %+      = Show the total arguments a function received.
    %?      = Show current function invocation as well as current nest levels.
    %c      = ANSI substitution or Last Command Executed.
    %x      = ANSI substitution or Last Command Executed.
    %_      = The TRACE breakpoint marker.  See 'help %_' for more.
    %m      = ANSI substitution or Last Command Executed.

              The functionality of above subs depends on compile options:

            * ANSI substitution: It takes the next character as the ansi
              sequence and continues with that sequence till the next one
              or end of the line.  You may also specify 0x## (ie: 0x20)
              to use extended 256 colors.

            * Last Command Executed: The substitution contains the whole,
              unevaluated code of the last command executed.

    %f      = Specify template for accent handler for strings.  To see a list
              of templates, see help on the accent() function.
    %<      = Used for UNICODE (ASCII 160 through 255).  Syntax: %<###>
              This requires the ACCENT toggle to utilize.
  
  Note:  The functionality of '%c' and '%x' may be switched.  Check
         @list options to check.
  
  Note:  The functionality of '%f' is only useable if ZENTY_ANSI is enabled.
         The functionality of '%<' is only useable if ZENTY_ANSI is enabled.
         The functionality of '%<' requires the ACCENTS toggle.
   
  If the letter following the % is capitalized, the first letter of the
  result of the substitution is also capitalized.
   
  Note: %<whatever> is equivalent to [v(<whatever>)], but is more efficient.
        This _ONLY_ works for @va to @vz attributes currently.  Sorry.
  
  See Also: GENDER, V(), SHIFT(), ACCENT()
  
[PREV] [TOP] [NEXT]

%i

  Topic: SUBSTITUTIONS
 
  All messages may contain %-substitutions, which evaluate to gender-specific
  pronouns if the player's gender is set or to other useful information.
  Information returned is based on the player that caused the message to be
  displayed, not the object that stored the message or which is running the
  action list.  The substitutions available are:
 
    %s, %S  = Name, he, she, it, they.        (subjective)
    %o, %O  = Name, him, her, it, them.       (objective)
    %p, %P  = Name's, his, her, its, their.   (possessive)
    %a, %A  = Name's, his, hers, its, theirs. (absolute possessive)
    %n, %N  = the player's name.
    %k, %K  = the player's colorized/accented name.
    %w, %W  = the target dbref# of the twinklock (if applicable)
    %r      = carriage return.
    %t      = tab character.
    %b      = space character.
    %%      = literal '%' character.
    %0-%9   = Value of positional parameter/stack location 0 through 9.
    %-      = Stack 10+ that are comma delimited
    %i0-%i9 = Equivalent to itext(0) through itext(9). [%il for outer]
    %d0-%d9 = Equivalent to dtext(0) through dtext(9).  [%dl for outer]
              Only useable with /inline only.
    %q0-%q9 = Value of registers.  Basically equivalent to [r(0)] - [r(9)].
    %qa-%qz = Extended value of registers.
    %va-%vz = Contents of attribute va through vz.
  
  Note: %q<label> works for setq labels.  ie.  [setq(0,foo,bar)]%q<bar>
  
{ 'help substitutions2' for more }

[PREV] [TOP] [NEXT]

%k

  Topic: SUBSTITUTIONS
 
  All messages may contain %-substitutions, which evaluate to gender-specific
  pronouns if the player's gender is set or to other useful information.
  Information returned is based on the player that caused the message to be
  displayed, not the object that stored the message or which is running the
  action list.  The substitutions available are:
 
    %s, %S  = Name, he, she, it, they.        (subjective)
    %o, %O  = Name, him, her, it, them.       (objective)
    %p, %P  = Name's, his, her, its, their.   (possessive)
    %a, %A  = Name's, his, hers, its, theirs. (absolute possessive)
    %n, %N  = the player's name.
    %k, %K  = the player's colorized/accented name.
    %w, %W  = the target dbref# of the twinklock (if applicable)
    %r      = carriage return.
    %t      = tab character.
    %b      = space character.
    %%      = literal '%' character.
    %0-%9   = Value of positional parameter/stack location 0 through 9.
    %-      = Stack 10+ that are comma delimited
    %i0-%i9 = Equivalent to itext(0) through itext(9). [%il for outer]
    %d0-%d9 = Equivalent to dtext(0) through dtext(9).  [%dl for outer]
              Only useable with /inline only.
    %q0-%q9 = Value of registers.  Basically equivalent to [r(0)] - [r(9)].
    %qa-%qz = Extended value of registers.
    %va-%vz = Contents of attribute va through vz.
  
  Note: %q<label> works for setq labels.  ie.  [setq(0,foo,bar)]%q<bar>
  
{ 'help substitutions2' for more }

[PREV] [TOP] [NEXT]

%l

    %#      = Database number of the object that caused the message to be
              displayed or the action list to be run.
    %:      = Database object-id of the object that caused the message to be
              displayed or the action list to be run.
    %l      = Database number of the location of the object that caused the
              message to be displayed or the action list to be run.
    %!      = Database number of the object holding the message or running
              the action list.
    %@      = Database number of the object immediately calling %! (Caller).
              This number starts as the same as %#, but can be affected by
              u()-type functions, zones, and @function.
    %+      = Show the total arguments a function received.
    %?      = Show current function invocation as well as current nest levels.
    %c      = ANSI substitution or Last Command Executed.
    %x      = ANSI substitution or Last Command Executed.
    %_      = The TRACE breakpoint marker.  See 'help %_' for more.
    %m      = ANSI substitution or Last Command Executed.

              The functionality of above subs depends on compile options:

            * ANSI substitution: It takes the next character as the ansi
              sequence and continues with that sequence till the next one
              or end of the line.  You may also specify 0x## (ie: 0x20)
              to use extended 256 colors.

            * Last Command Executed: The substitution contains the whole,
              unevaluated code of the last command executed.

    %f      = Specify template for accent handler for strings.  To see a list
              of templates, see help on the accent() function.
    %<      = Used for UNICODE (ASCII 160 through 255).  Syntax: %<###>
              This requires the ACCENT toggle to utilize.
  
  Note:  The functionality of '%c' and '%x' may be switched.  Check
         @list options to check.
  
  Note:  The functionality of '%f' is only useable if ZENTY_ANSI is enabled.
         The functionality of '%<' is only useable if ZENTY_ANSI is enabled.
         The functionality of '%<' requires the ACCENTS toggle.
   
  If the letter following the % is capitalized, the first letter of the
  result of the substitution is also capitalized.
   
  Note: %<whatever> is equivalent to [v(<whatever>)], but is more efficient.
        This _ONLY_ works for @va to @vz attributes currently.  Sorry.
  
  See Also: GENDER, V(), SHIFT(), ACCENT()
  
[PREV] [TOP] [NEXT]

%m

    %#      = Database number of the object that caused the message to be
              displayed or the action list to be run.
    %:      = Database object-id of the object that caused the message to be
              displayed or the action list to be run.
    %l      = Database number of the location of the object that caused the
              message to be displayed or the action list to be run.
    %!      = Database number of the object holding the message or running
              the action list.
    %@      = Database number of the object immediately calling %! (Caller).
              This number starts as the same as %#, but can be affected by
              u()-type functions, zones, and @function.
    %+      = Show the total arguments a function received.
    %?      = Show current function invocation as well as current nest levels.
    %c      = ANSI substitution or Last Command Executed.
    %x      = ANSI substitution or Last Command Executed.
    %_      = The TRACE breakpoint marker.  See 'help %_' for more.
    %m      = ANSI substitution or Last Command Executed.

              The functionality of above subs depends on compile options:

            * ANSI substitution: It takes the next character as the ansi
              sequence and continues with that sequence till the next one
              or end of the line.  You may also specify 0x## (ie: 0x20)
              to use extended 256 colors.

            * Last Command Executed: The substitution contains the whole,
              unevaluated code of the last command executed.

    %f      = Specify template for accent handler for strings.  To see a list
              of templates, see help on the accent() function.
    %<      = Used for UNICODE (ASCII 160 through 255).  Syntax: %<###>
              This requires the ACCENT toggle to utilize.
  
  Note:  The functionality of '%c' and '%x' may be switched.  Check
         @list options to check.
  
  Note:  The functionality of '%f' is only useable if ZENTY_ANSI is enabled.
         The functionality of '%<' is only useable if ZENTY_ANSI is enabled.
         The functionality of '%<' requires the ACCENTS toggle.
   
  If the letter following the % is capitalized, the first letter of the
  result of the substitution is also capitalized.
   
  Note: %<whatever> is equivalent to [v(<whatever>)], but is more efficient.
        This _ONLY_ works for @va to @vz attributes currently.  Sorry.
  
  See Also: GENDER, V(), SHIFT(), ACCENT()
  
[PREV] [TOP] [NEXT]

%n

  Topic: SUBSTITUTIONS
 
  All messages may contain %-substitutions, which evaluate to gender-specific
  pronouns if the player's gender is set or to other useful information.
  Information returned is based on the player that caused the message to be
  displayed, not the object that stored the message or which is running the
  action list.  The substitutions available are:
 
    %s, %S  = Name, he, she, it, they.        (subjective)
    %o, %O  = Name, him, her, it, them.       (objective)
    %p, %P  = Name's, his, her, its, their.   (possessive)
    %a, %A  = Name's, his, hers, its, theirs. (absolute possessive)
    %n, %N  = the player's name.
    %k, %K  = the player's colorized/accented name.
    %w, %W  = the target dbref# of the twinklock (if applicable)
    %r      = carriage return.
    %t      = tab character.
    %b      = space character.
    %%      = literal '%' character.
    %0-%9   = Value of positional parameter/stack location 0 through 9.
    %-      = Stack 10+ that are comma delimited
    %i0-%i9 = Equivalent to itext(0) through itext(9). [%il for outer]
    %d0-%d9 = Equivalent to dtext(0) through dtext(9).  [%dl for outer]
              Only useable with /inline only.
    %q0-%q9 = Value of registers.  Basically equivalent to [r(0)] - [r(9)].
    %qa-%qz = Extended value of registers.
    %va-%vz = Contents of attribute va through vz.
  
  Note: %q<label> works for setq labels.  ie.  [setq(0,foo,bar)]%q<bar>
  
{ 'help substitutions2' for more }

[PREV] [TOP] [NEXT]

%o

  Topic: SUBSTITUTIONS
 
  All messages may contain %-substitutions, which evaluate to gender-specific
  pronouns if the player's gender is set or to other useful information.
  Information returned is based on the player that caused the message to be
  displayed, not the object that stored the message or which is running the
  action list.  The substitutions available are:
 
    %s, %S  = Name, he, she, it, they.        (subjective)
    %o, %O  = Name, him, her, it, them.       (objective)
    %p, %P  = Name's, his, her, its, their.   (possessive)
    %a, %A  = Name's, his, hers, its, theirs. (absolute possessive)
    %n, %N  = the player's name.
    %k, %K  = the player's colorized/accented name.
    %w, %W  = the target dbref# of the twinklock (if applicable)
    %r      = carriage return.
    %t      = tab character.
    %b      = space character.
    %%      = literal '%' character.
    %0-%9   = Value of positional parameter/stack location 0 through 9.
    %-      = Stack 10+ that are comma delimited
    %i0-%i9 = Equivalent to itext(0) through itext(9). [%il for outer]
    %d0-%d9 = Equivalent to dtext(0) through dtext(9).  [%dl for outer]
              Only useable with /inline only.
    %q0-%q9 = Value of registers.  Basically equivalent to [r(0)] - [r(9)].
    %qa-%qz = Extended value of registers.
    %va-%vz = Contents of attribute va through vz.
  
  Note: %q<label> works for setq labels.  ie.  [setq(0,foo,bar)]%q<bar>
  
{ 'help substitutions2' for more }

[PREV] [TOP] [NEXT]

%p

  Topic: SUBSTITUTIONS
 
  All messages may contain %-substitutions, which evaluate to gender-specific
  pronouns if the player's gender is set or to other useful information.
  Information returned is based on the player that caused the message to be
  displayed, not the object that stored the message or which is running the
  action list.  The substitutions available are:
 
    %s, %S  = Name, he, she, it, they.        (subjective)
    %o, %O  = Name, him, her, it, them.       (objective)
    %p, %P  = Name's, his, her, its, their.   (possessive)
    %a, %A  = Name's, his, hers, its, theirs. (absolute possessive)
    %n, %N  = the player's name.
    %k, %K  = the player's colorized/accented name.
    %w, %W  = the target dbref# of the twinklock (if applicable)
    %r      = carriage return.
    %t      = tab character.
    %b      = space character.
    %%      = literal '%' character.
    %0-%9   = Value of positional parameter/stack location 0 through 9.
    %-      = Stack 10+ that are comma delimited
    %i0-%i9 = Equivalent to itext(0) through itext(9). [%il for outer]
    %d0-%d9 = Equivalent to dtext(0) through dtext(9).  [%dl for outer]
              Only useable with /inline only.
    %q0-%q9 = Value of registers.  Basically equivalent to [r(0)] - [r(9)].
    %qa-%qz = Extended value of registers.
    %va-%vz = Contents of attribute va through vz.
  
  Note: %q<label> works for setq labels.  ie.  [setq(0,foo,bar)]%q<bar>
  
{ 'help substitutions2' for more }

[PREV] [TOP] [NEXT]

%q

  Topic: SUBSTITUTIONS
 
  All messages may contain %-substitutions, which evaluate to gender-specific
  pronouns if the player's gender is set or to other useful information.
  Information returned is based on the player that caused the message to be
  displayed, not the object that stored the message or which is running the
  action list.  The substitutions available are:
 
    %s, %S  = Name, he, she, it, they.        (subjective)
    %o, %O  = Name, him, her, it, them.       (objective)
    %p, %P  = Name's, his, her, its, their.   (possessive)
    %a, %A  = Name's, his, hers, its, theirs. (absolute possessive)
    %n, %N  = the player's name.
    %k, %K  = the player's colorized/accented name.
    %w, %W  = the target dbref# of the twinklock (if applicable)
    %r      = carriage return.
    %t      = tab character.
    %b      = space character.
    %%      = literal '%' character.
    %0-%9   = Value of positional parameter/stack location 0 through 9.
    %-      = Stack 10+ that are comma delimited
    %i0-%i9 = Equivalent to itext(0) through itext(9). [%il for outer]
    %d0-%d9 = Equivalent to dtext(0) through dtext(9).  [%dl for outer]
              Only useable with /inline only.
    %q0-%q9 = Value of registers.  Basically equivalent to [r(0)] - [r(9)].
    %qa-%qz = Extended value of registers.
    %va-%vz = Contents of attribute va through vz.
  
  Note: %q<label> works for setq labels.  ie.  [setq(0,foo,bar)]%q<bar>
  
{ 'help substitutions2' for more }

[PREV] [TOP] [NEXT]

%r

  Topic: SUBSTITUTIONS
 
  All messages may contain %-substitutions, which evaluate to gender-specific
  pronouns if the player's gender is set or to other useful information.
  Information returned is based on the player that caused the message to be
  displayed, not the object that stored the message or which is running the
  action list.  The substitutions available are:
 
    %s, %S  = Name, he, she, it, they.        (subjective)
    %o, %O  = Name, him, her, it, them.       (objective)
    %p, %P  = Name's, his, her, its, their.   (possessive)
    %a, %A  = Name's, his, hers, its, theirs. (absolute possessive)
    %n, %N  = the player's name.
    %k, %K  = the player's colorized/accented name.
    %w, %W  = the target dbref# of the twinklock (if applicable)
    %r      = carriage return.
    %t      = tab character.
    %b      = space character.
    %%      = literal '%' character.
    %0-%9   = Value of positional parameter/stack location 0 through 9.
    %-      = Stack 10+ that are comma delimited
    %i0-%i9 = Equivalent to itext(0) through itext(9). [%il for outer]
    %d0-%d9 = Equivalent to dtext(0) through dtext(9).  [%dl for outer]
              Only useable with /inline only.
    %q0-%q9 = Value of registers.  Basically equivalent to [r(0)] - [r(9)].
    %qa-%qz = Extended value of registers.
    %va-%vz = Contents of attribute va through vz.
  
  Note: %q<label> works for setq labels.  ie.  [setq(0,foo,bar)]%q<bar>
  
{ 'help substitutions2' for more }

[PREV] [TOP] [NEXT]

%s

  Topic: SUBSTITUTIONS
 
  All messages may contain %-substitutions, which evaluate to gender-specific
  pronouns if the player's gender is set or to other useful information.
  Information returned is based on the player that caused the message to be
  displayed, not the object that stored the message or which is running the
  action list.  The substitutions available are:
 
    %s, %S  = Name, he, she, it, they.        (subjective)
    %o, %O  = Name, him, her, it, them.       (objective)
    %p, %P  = Name's, his, her, its, their.   (possessive)
    %a, %A  = Name's, his, hers, its, theirs. (absolute possessive)
    %n, %N  = the player's name.
    %k, %K  = the player's colorized/accented name.
    %w, %W  = the target dbref# of the twinklock (if applicable)
    %r      = carriage return.
    %t      = tab character.
    %b      = space character.
    %%      = literal '%' character.
    %0-%9   = Value of positional parameter/stack location 0 through 9.
    %-      = Stack 10+ that are comma delimited
    %i0-%i9 = Equivalent to itext(0) through itext(9). [%il for outer]
    %d0-%d9 = Equivalent to dtext(0) through dtext(9).  [%dl for outer]
              Only useable with /inline only.
    %q0-%q9 = Value of registers.  Basically equivalent to [r(0)] - [r(9)].
    %qa-%qz = Extended value of registers.
    %va-%vz = Contents of attribute va through vz.
  
  Note: %q<label> works for setq labels.  ie.  [setq(0,foo,bar)]%q<bar>
  
{ 'help substitutions2' for more }

[PREV] [TOP] [NEXT]

%t

  Topic: SUBSTITUTIONS
 
  All messages may contain %-substitutions, which evaluate to gender-specific
  pronouns if the player's gender is set or to other useful information.
  Information returned is based on the player that caused the message to be
  displayed, not the object that stored the message or which is running the
  action list.  The substitutions available are:
 
    %s, %S  = Name, he, she, it, they.        (subjective)
    %o, %O  = Name, him, her, it, them.       (objective)
    %p, %P  = Name's, his, her, its, their.   (possessive)
    %a, %A  = Name's, his, hers, its, theirs. (absolute possessive)
    %n, %N  = the player's name.
    %k, %K  = the player's colorized/accented name.
    %w, %W  = the target dbref# of the twinklock (if applicable)
    %r      = carriage return.
    %t      = tab character.
    %b      = space character.
    %%      = literal '%' character.
    %0-%9   = Value of positional parameter/stack location 0 through 9.
    %-      = Stack 10+ that are comma delimited
    %i0-%i9 = Equivalent to itext(0) through itext(9). [%il for outer]
    %d0-%d9 = Equivalent to dtext(0) through dtext(9).  [%dl for outer]
              Only useable with /inline only.
    %q0-%q9 = Value of registers.  Basically equivalent to [r(0)] - [r(9)].
    %qa-%qz = Extended value of registers.
    %va-%vz = Contents of attribute va through vz.
  
  Note: %q<label> works for setq labels.  ie.  [setq(0,foo,bar)]%q<bar>
  
{ 'help substitutions2' for more }

[PREV] [TOP] [NEXT]

%v

  Topic: SUBSTITUTIONS
 
  All messages may contain %-substitutions, which evaluate to gender-specific
  pronouns if the player's gender is set or to other useful information.
  Information returned is based on the player that caused the message to be
  displayed, not the object that stored the message or which is running the
  action list.  The substitutions available are:
 
    %s, %S  = Name, he, she, it, they.        (subjective)
    %o, %O  = Name, him, her, it, them.       (objective)
    %p, %P  = Name's, his, her, its, their.   (possessive)
    %a, %A  = Name's, his, hers, its, theirs. (absolute possessive)
    %n, %N  = the player's name.
    %k, %K  = the player's colorized/accented name.
    %w, %W  = the target dbref# of the twinklock (if applicable)
    %r      = carriage return.
    %t      = tab character.
    %b      = space character.
    %%      = literal '%' character.
    %0-%9   = Value of positional parameter/stack location 0 through 9.
    %-      = Stack 10+ that are comma delimited
    %i0-%i9 = Equivalent to itext(0) through itext(9). [%il for outer]
    %d0-%d9 = Equivalent to dtext(0) through dtext(9).  [%dl for outer]
              Only useable with /inline only.
    %q0-%q9 = Value of registers.  Basically equivalent to [r(0)] - [r(9)].
    %qa-%qz = Extended value of registers.
    %va-%vz = Contents of attribute va through vz.
  
  Note: %q<label> works for setq labels.  ie.  [setq(0,foo,bar)]%q<bar>
  
{ 'help substitutions2' for more }

[PREV] [TOP] [NEXT]

%w

  Topic: SUBSTITUTIONS
 
  All messages may contain %-substitutions, which evaluate to gender-specific
  pronouns if the player's gender is set or to other useful information.
  Information returned is based on the player that caused the message to be
  displayed, not the object that stored the message or which is running the
  action list.  The substitutions available are:
 
    %s, %S  = Name, he, she, it, they.        (subjective)
    %o, %O  = Name, him, her, it, them.       (objective)
    %p, %P  = Name's, his, her, its, their.   (possessive)
    %a, %A  = Name's, his, hers, its, theirs. (absolute possessive)
    %n, %N  = the player's name.
    %k, %K  = the player's colorized/accented name.
    %w, %W  = the target dbref# of the twinklock (if applicable)
    %r      = carriage return.
    %t      = tab character.
    %b      = space character.
    %%      = literal '%' character.
    %0-%9   = Value of positional parameter/stack location 0 through 9.
    %-      = Stack 10+ that are comma delimited
    %i0-%i9 = Equivalent to itext(0) through itext(9). [%il for outer]
    %d0-%d9 = Equivalent to dtext(0) through dtext(9).  [%dl for outer]
              Only useable with /inline only.
    %q0-%q9 = Value of registers.  Basically equivalent to [r(0)] - [r(9)].
    %qa-%qz = Extended value of registers.
    %va-%vz = Contents of attribute va through vz.
  
  Note: %q<label> works for setq labels.  ie.  [setq(0,foo,bar)]%q<bar>
  
{ 'help substitutions2' for more }

[PREV] [TOP] [NEXT]

%x

    %#      = Database number of the object that caused the message to be
              displayed or the action list to be run.
    %:      = Database object-id of the object that caused the message to be
              displayed or the action list to be run.
    %l      = Database number of the location of the object that caused the
              message to be displayed or the action list to be run.
    %!      = Database number of the object holding the message or running
              the action list.
    %@      = Database number of the object immediately calling %! (Caller).
              This number starts as the same as %#, but can be affected by
              u()-type functions, zones, and @function.
    %+      = Show the total arguments a function received.
    %?      = Show current function invocation as well as current nest levels.
    %c      = ANSI substitution or Last Command Executed.
    %x      = ANSI substitution or Last Command Executed.
    %_      = The TRACE breakpoint marker.  See 'help %_' for more.
    %m      = ANSI substitution or Last Command Executed.

              The functionality of above subs depends on compile options:

            * ANSI substitution: It takes the next character as the ansi
              sequence and continues with that sequence till the next one
              or end of the line.  You may also specify 0x## (ie: 0x20)
              to use extended 256 colors.

            * Last Command Executed: The substitution contains the whole,
              unevaluated code of the last command executed.

    %f      = Specify template for accent handler for strings.  To see a list
              of templates, see help on the accent() function.
    %<      = Used for UNICODE (ASCII 160 through 255).  Syntax: %<###>
              This requires the ACCENT toggle to utilize.
  
  Note:  The functionality of '%c' and '%x' may be switched.  Check
         @list options to check.
  
  Note:  The functionality of '%f' is only useable if ZENTY_ANSI is enabled.
         The functionality of '%<' is only useable if ZENTY_ANSI is enabled.
         The functionality of '%<' requires the ACCENTS toggle.
   
  If the letter following the % is capitalized, the first letter of the
  result of the substitution is also capitalized.
   
  Note: %<whatever> is equivalent to [v(<whatever>)], but is more efficient.
        This _ONLY_ works for @va to @vz attributes currently.  Sorry.
  
  See Also: GENDER, V(), SHIFT(), ACCENT()
  
[PREV] [TOP] [NEXT]

&

  Command: &<attribute> <object>[=<value>]
           &`<tree-attribute> <object>[=<value>]
  Synonym: @set <object> = <attribute>:[<value>]
   
  Sets the attribute named <attribute> on <object> to <value>.  If
  <attribute> is not a predefined attribute (like ofail or va), then it is
  created.  Attributes so created are called user-named attributes.
  Attribute names may only contain letters, numbers, and the characters
  < -_.@#$^&*~?=+| >, and must start with a letter.  The names of user-named
  attributes may not be abbreviated (an attempt to get the value of the
  attribute will fail, and an attempt to set will create a new attribute).
  The & command may be used to set predefined attributes (in this instance,
  '&<attr> <object>=<value>' is equivalent to '@<attr> <object>=<value>').
  
  Attributes must start with an alpha character, or in special cases any
  of the following characters: ~_#.+
  
  Starting with a '`' will tell it to use the TREE method for setting 
  attributes which will attempt to set/validate all branches to the tree
  prior to setting it.
  
  Example:
    &myattr Object=This is my data on attribute 'myattr'
    Set.
   
  See Also: @set, @cluster set, VATOVZ, ZATOZZ, >, ATTRIBUTE TREES
  
[PREV] [TOP] [NEXT]

+channel

  Topic: channels/comsystem
  
  NOTE: If this has been disabled, check 'comhelp' or '+help' for the new one.
  
  The built in channel system that RhostMUSH has is a simple design
  based off standard MUSE com systems.  The format for each is
  as follows:
  
       +chan[nel] +channel-name  (add yourself to a channel)
       +chan[nel] -channel-name  (remove yourself from a channel)
       +chan[nel]                (display all your channels)
       +com channel=who          (see who is on a given channel)
       +com channel=message      ('talk' on a given channel)
  
  (help channel2 to continue)

[PREV] [TOP] [NEXT]

+channel2

  Topic: channels/comsystem
  
  NOTE: If this has been disabled, check 'comhelp' or '+help' for the new one.
  
  The channel system is case sensitive and does recognize various
  formatting by the following special cases.
  
       :     this poses a message on the channel.
       ;     this possessive poses on the channel.
       "     this speaks on the channel.
  
          Syntax:  +com channel=[format]message
          Example: +com channel=:message (poses on the channel)
  
  All channels cost money (currently 5 gold a pop) except for
  'sting' (a flame-type channel for insults) and 'public' for
  general discussions.  Please note that any insults slung on
  sting REMAIN on sting.  This will be enforced. 
  
[PREV] [TOP] [NEXT]

+help

  If enabled (please check @list options), this will work just like normal
  'help' does, but for +help.  This is intended for TINY/MUX compatibility
  and is disabled by default.
  
  The /search switch works for +help as well.
  

[PREV] [TOP] [NEXT]

+uptime

  Command: +uptime
  
  This command shows how long the mush has been up and the time since 
  the last reboot.
  
  See Also: version
  
[PREV] [TOP] [NEXT]

1.0.0p0

  Release Date: Aug 1 1989
  Status: Experimental
  Note: A lot of these changes were lost to time.
  
  New Features
  ------------
  * COUNCILOR flag for lower bitlevel inheritance [NYS]
  * ARCHITECT flag for lower bitlevel inheritance [NYS]
  * GUILDMASTER flag for lower bitlevel inheritance [NYS]
  * @trigger and new functionality importing [NYS]
  * MUSE compatible comsystem [NYS]
  * @race/@guild fields [NYS]
  * RWHO multi-mud connector [NYS]
    
  Changes
  -------
  * Permission system revamped for more than just wizard [NYS]
  * DARK granted more power to hide [NYS]
    
  Bug Fixes
  ---------
  * Memory leak in db engine [NYS]
  
[PREV] [TOP] [NEXT]

1.5.0p0

  Release Date: Mar 1 1990
  Status: Experimental
  Note: A lot of these changes were lost to time.
  
  New Features
  ------------
  * Convert game engine for MUSE compatibility [NYS]
  * Enable multi-tier power system [NYS]
  
  Changes
  -------
  * System code handles bitlevel inheritance [NYS]
  
  Bug Fixes
  ---------
  * Infinite loop in @dolist [NYS]

[PREV] [TOP] [NEXT]

2.0.0p0

  Release Date: Sep 1 1990
  Status: Pre-Release
  Note: A lot of these changes were lost to time.
  
  New Features
  ------------
  * Convert game engine for MUSH compatibility [SEA]
  * Hardcoded Mail System [SEA]
  * Better ComSystem Support [ASH]
  * Hardcoded BBS System [THO]
  * @power/@depower system to mimic MUSE inheritance [SEA]
  * @toggle system for bitwise flags [THO]
  
  Changes
  -------
  * Multi-tier subsystem incorporating MUSE engine [SEA]
  * Multi-bit system with full tier inheritance [ASH]
  * Permission system rewritten to make more sense [THO]
  
  Bug Fixes
  ---------
  * Tons of compatibility issues [THO/SEA/ASH]

[PREV] [TOP] [NEXT]

3.0.0p0

  Release Date: Mar 1 1991
  Status: Pre-Alpha
  Note: A lot of these changes were lost to time.
  
  New Features
  ------------
  * Mail system modularized to be ported to other systems [SEA]
  * Zone system - multi-tier [THO]
  * Experimental byte-compiled language (NaILS) [THO]
  
  Changes
  -------
  * GDBM limitations to avoid hard DB corruption [SEA]
  
  Bug Fixes
  ---------
  * Permission system was totally borked [SEA]

[PREV] [TOP] [NEXT]

3.2.0p0

  Release Date: Nov 1 1991
  Status: Experimental
  
  New Features
  ------------
  * Rewrite of parser to be more sane [SEA]
  * Socket protection against DoS/DDoS [THO]
  * Built-in IDENT address lookups [THO]
  * Built-in DNS address lookups [THO]
  
  Changes
  -------
  * Byte-compiler removed -- Too many bugs [THO]
  
  Bug Fixes
  ---------
  * Tons of memory leaks fixed in functions [SEA/THO/ASH]

[PREV] [TOP] [NEXT]

3.2.4p0

  Release Date: 1 Jan 1992
  Status: Beta
  
  New Features
  ------------
  * PID values to processes [SEA]
  * hardcoded mail system (Version 2) [SEA]
  
  Changes
  -------
  
  Bug Fixes
  ---------

[PREV] [TOP] [NEXT]

3.2.4p1

  Release Date: 1 Jul 1992
  Status: Beta
  
  New Features
  ------------
  * hardcoded BBS system (Version 2) [THO]
  
  Changes
  -------
  
  Bug Fixes
  ---------
  * @hook/igswitch wouldn't work with multiple switches [ASH]

[PREV] [TOP] [NEXT]

3.2.4p10

  Release Date: 1 Jan 1997
  Status: Beta
  
  New Features
  ------------
  * strfunc() for passing lists to any function [ASH]
  * max_cpu_cycles admin param (default 3) for cpu alarms [ASH]
  * cpu_secure_lvl admin param (default 0) for cpu alarms [ASH]
  
  Changes
  -------
  * lattr() optionally shows locks [ASH]
  
  Bug Fixes
  ---------
  * you could still get into a garbage object [ASH]
  * forwardlists were not cleared on @wipe [ASH]

[PREV] [TOP] [NEXT]

3.2.4p11

  Release Date: 1 Jul 1997
  Status: Beta
  
  New Features
  ------------
  * @icmd has new switches to handle location/zone overriding:
    /droom, /iroom, /croom, /lroom, /lallroom [ASH]
  * foreach() added for compatibility [ASH]
  * ilev() Returns nest level of an iter() [ASH]
  * @limit [/vmod /dmod /list /reset] limits @destroy/vattr [ASH]
  * IGNOREZONE toggle enables zone/location command disable/ignore [ASH]
  * VPAGE toggles aliases to show/not show in pages you receive [ASH]
  * PAGELOCK toggles pages to normal when wizard lock overriding [KRK]
  * MAIL_NOPARSE toggle to switch %r's and %t's in mail viewing [ASH]
  * ignore_zone globally specify zone ignoring for a command [ASH]
  * disable_zone globally specify zone disabling for a command [ASH]
  * global_ansimask globally define what ansi codes to allow/deny [ASH]
  * expand_goto force exit movement to use a 'goto' [ASH]
  * max_dest_limit specify maximum @destroys allowed per player [ASH]
  * max_vattr_limit specify maximum _NEW_ vattrs allowed per player [ASH]
  * hide_nospoof if '1' you have to control target to see NOSPOOF flag [KRK]
  
  Changes
  -------
  * lattr() optionally handles attribute locks [ASH]
  * examine/parent shows dbref#'s of parent objects [ASH]
  * elist() has 5th argument for penn compatibility [ASH]
  * /until switch to @wait for exact time [ASH]
  * strmath() has new args for better flexability [ASH]
  * mail uses ~ to evaluate attributes on player targets [ASH]
  * better context for mail autoregistration [ASH]
  * wizards now override page locks [ASH]
  * +list to mail improved for output [ASH]
  * @pemit has /silent switch for penn compat [ASH]
  
  Bug Fixes
  ---------
  * DoS protection lacking for attribute sets [ASH]
  * buffer issue with @decompile [ASH]
  * mail showed cloaked wizzes being connected [ASH]
  * moon() didn't handle full moons properly [KRK]
  * isdbref() thought '#' was a valid dbref [ASH]
  * Attribute setting issue introduced with P11 [KRK]
  * Logging options were a bit skewered with on/off settings [ASH]
  * Attempted to free mbufs in @disable login area twice [ASH]
  * Parenting fix with possible recursion [ASH]
  * @lock/chown required on CHOWN_OK object.  Shouldn't be [ASH]
  * @icmd for players broke with room/location addition [KRK]
  * Cloaked items didn't trigger @startup [ASH]

[PREV] [TOP] [NEXT]

3.2.4p12

  Release Date: 1 Jan 1998
  Status: Beta
  
  New Features
  ------------
  * REALITY LEVELS [ASH]
  * +proof for mail proofing [ASH]
  * lastip now handles lastip of the person logging in [KRK]
  * rxlevel()/txlevel() - return RX/TX reality level [ASH]
  * listrlevels() list all levels [ASH]
  * hasrxlevel()/ hastxlevel() check target RX/TX levels [ASH]
  * cansee() check if target can see source (reality level based only) [ASH]
  * @rxlevel - set/remove reality level source check [ASH]
  * @txlevel - set/remove reality level target check [ASH]
  * mrpage (mrp) respond to the player list that you received in a page [ASH]
  * NONAME if set on a target, the name is not displayed [ASH]
  * reality_level define new reality level(s).  32 max [ASH]
  * wiz_always_real a wizard is always seeing everything as 'real' [ASH]
  * def_exit_rx, def_exit_tx, def_room_rx, def_room_tx, def_player_rx,
    def_player_tx, def_thing_rx, def_thing_tx for default realities [ASH]
  * validate_host Specify invalid site-masks for autoregistration emails [ASH]
  * log_command_list Specify commands to individually log [ASH]
  * partial_conn, partial_deconn @aconnect/@adisconnects on partial [ASH]
  * secure_functions  Enable/disable security on listed functions [ASH]
  * max_logins_allowed (mudstate) absolute ceiling of connections allowed [ASH]
  * penn_switches switch() and switchall() will accept < and > [ASH]
   
  Changes
  -------
  * double eval removed to mimic penn functionality [ASH]
  * randextract() handles 5th arg for output [ASH]
  * @conncheck shows total commands [ASH]
  * @aconnect/adisconnect handle various options now [ASH]
  * @list has several new options for listing/displaying [ASH]
  * puppet output is now highlighted [ASH]
  
  Bug Fixes
  ---------
  * autoreg validation and cleanup [ASH]
  * filter() would accept '1<blah>' as well as '1' [ASH]
  * possible pointer-misalignment with internal messaging with MONITOR [ASH]
  * Rare occurance of getting inside a garbage object (non-crash-bug) [ASH]
  * @mvattr had small bug with copying over itself & keeping copy [ASH]
  * Semaphores didn't do wait time correctly [ASH]
  * Time/Create stamps visible by anyone [ASH]
  * LBUF not freed in mail/quota [ASH]
  * @dynhelp not able to parse subdirectories (using a '^') [ASH]
  * @icmd not inherited in all instances [ASH]
  * Some side effects had wrong security/permission checks [ASH]
  * Side effects did not check inheritance for permission [ASH]
  * Iter()/list() and suite did not handle ansi properly [ASH]

[PREV] [TOP] [NEXT]

3.2.4p13

  Release Date: 1 Jul 1998
  Status: Beta
  
  New Features
  ------------
  * isint() for MUX/Penn compatibility [ASH] 
  * FLAGDEF attrib flag for logging (added to @flagdef) [ASH]
  * safebuff() cuts buffer off before LBUF is reached [ASH]
  * floordiv() return the 'floor' (rounded down) of result of division [ASH]
  * last() return last word specified by delimiter [ASH]
  * singletime() return time rounded to lowest element (s, m, h, d, etc) [ASH]
  * parenmatch() ansifies bracket/paren/brace matches & RED's mismatch [ASH]
  * lrand() returns random numbers between two points [ASH]
  * keeptype() does reverse of remtype() [ASH]
  * lcmds() List all commands '$' or listens '^' on object [ASH]
  * pack() convert a number to base 2-64 [ASH]
  * unpack() convert a pack()'d number back to base 10 [ASH]
  * crc32() return a crc32 code for the specified string [ASH]
  * toggle() works like the @toggle command.  Follows SIDEFX restrictions [ASH]
  * moneyname() returns the singular/plural name based on argument [ASH]
  * config() if no argument, displays all params otherwise value of param [ASH]
  * @eval force evaluation of functionality [ASH]
  * mortal_examine if set, target always examines like a mortal [ASH]
  * mail_lockdown @toggle target is restricted in mail 'monitoring' [ASH]
  * muxpage @toggle allows 'p <blah>' to work like in MUX/TM3/PENN [ASH]
  * heavy_cpu_max param  ceilings heavilly used cpu-intensive functions [ASH]
  * lastsite_paranoia param enable auto-reg/auto-forbid of spamming site [ASH]
  * max_lastsite_cnt param specify # of connects in period of time [ASH]
  * min_con_attempt specify the wait between 'first' connect and subquent [ASH]
  * lattr_default_oldstyle (default 0) snuffs the '#-1 NO MATCH' [ASH]
  * formats_are_local localize @nameformat, @conformat, @exitformat [ASH]
  * mail_def_object default object for global aliases [ASH]
  * wizard_queue_limit distinguish between wizard and mortals for queues [ASH]
  * max_pcreate_time time range allowed before max_pcreates reached [ASH]
  * max_pcreate_lim number of pcreates allowed in given timeframe [ASH]
  * pcreate_paranoia level of action to take against infidels (0-2) [ASH]
  * global_parent_obj global parent that attributes are inherited off of [ASH]
  
  Changes
  -------
  * log god @admin param log all activity of #1
  * /quiet to @notify and @drain [ASH]
  * @cpattr assumes enactor if no source given [ASH]
  * lattr() has 3rd arg for listen/command matches [ASH]
  * /clear to @toggle to clear toggles [ASH]
  * if more than 20 zones on a target, switch to dbref# listing [ASH]
  * @admin and @site handle /## CIDR notation [ASH]
  * @edit highlights changes now [ASH]
  * remtype(), keeptype() handles multiple types [ASH]
  * internal buffering issues now lists line number and file [ASH]
  * @list options does sub-options now [ASH]
  * @name field changed from 16 to 22 characters [ASH]
  * /instant switch added for compatibility [ASH]
  * mail/recall enhancements for immortals/#1 [ASH]
  * lrooms() has a third argument to show level [ASH]
  * @dump/flat allows optional filename [ASH]
  * enhanced options to mail reading [ASH]
  * ports added to lwho(), idle(), conn(), cmds() [ASH]
  * lattr() handles optional target player [ASH]
  
  Bug Fixes
  ---------
  * conversion script for TM3 broke in some conditions [ASH]
  * @lock/getfrom didn't check enactors location [ASH]
  * convtime() used daylight savings now no longer uses [ASH]
  * IDESC wouldn't work with Reality Levels [ASH]
  * Bad memory could corrupt command parsing with sockets [ASH}
  * @list alloc would scroll values negative [ASH]
  * @teleport and movement could 'hide' from wizards in inventories [ASH]
  * home, if @icmd'd, wouldn't allow the command to be overridden [ASH]
  * The CLOAK flag would give 'has left' messages [ASH]
  * The lookup_player() code now handles '*' as well as not [ASH]
  * If recycling was not enabled, you could still @destroy [ASH]
  * Trace output was broke with how it displayed enactor/target [ASH]
  * NOSTOP flag on objects in the master room could cause infinite loop [ASH]
  * QueueMax attribute would not work unless owned by the target [ASH]
  * DNS/AUTH lookups could have unforseen behavior on non-printable chars [ASH]
  * setqmatch() does not work like the help dictated it should [ASH]
  * hastoggle() was wizard-only for no reason  [ASH]
  * atof() could have buffer issues if string greater than 100 characters [ASH]
  * Counts for input, output, and lost fields were not accurate [ASH]
  * @conncheck could have unpredicatable results with name of the door [ASH]
  * MONITOR information had some uninitialized values that could crash [ASH]
  * DARK flags with wizards so it won't show wiz as being connected [ASH]
  * mid() didn't work like it did in MUX2/PENN.  It's now an alias [ASH]
  * type() could bypass cloaked targets [ASH]
  * quick_wild() could cause some SIGSEGV's if not accurately verified [ASH]
  * inventory doesn't handle Reality Levles corrected [ASH]
  * lcon(), next(), con(), lexits(), lcon(), xcon(), and sees() with
  reguards to handling Reality Levles were broke [ASH]

[PREV] [TOP] [NEXT]

3.2.4p14

  Release Date: 1 Jan 1999
  Status: Beta
  
  New Features
  ------------
  * optional restrictions on people who CPU slam your mush [ASH]
  * Attributes can start with ~ [ASH]
  * A-Z are now available for setq registers [ASH]
  * Penn compatible SHS encryption [LNS]
  * txlevel()/rxlevel() for set/display realities [ASH]
  * rset() sideeffect for set() that sets attribute and returns value [ASH]
  * pedit() to mimic Penn's edit() functionality [ASH]
  * ptimefmt() to mimic Penn/Mux's timefmt() functionality [ASH]
  * textfile() works like dynhelp() but pushes onto buffer [ASH]
  * lattrp() lattr() for parent checks [ASH]
  * ctu() function that does deg/rad/grad conversion [ASH]
  * visiblemux() for mux's visible() compatibility [ASH]
  * @hook to show/display/change individual hooks.  
    Switches are: /permit, /ignore, /before, /after, /igswitch [ASH]
  * uselock attrib flag checks matching ~<attribute> for uselock [ASH]
  * SPAMMONITOR flag check target for spam (60 cmds/sec) [ASH]
  * ZONEINHERIT allows zonemasters to have attribs inherited to children [ASH]
  * muddb_name admin param for db names to separate from 'mud_name' [ASH]
  * global_error_obj evaluate the VA attribute on the object for huh? [ASH]
  * mail_autodeltime specifies when mail is globally purged (def 21 days) [ASH]
  * global_parent_room globally inherit attribs to room w/o @parent [ASH]
  * global_parent_thing globally inherit attribs to thing w/o @parent [ASH]
  * global_parent_player globally inherit attribs to player w/o @parent [ASH]
  * global_parent_exit globally inherit attribs to exit w/o @parent [ASH]
  * hook_obj globally define the 'hook' object [ASH]
  * hook_cmd process 'hooks' on specified commands [ASH]
  * look_moreflags will show global flags on things with examine [ASH]
  * stack_limit nest check for 'stack' to throttle back a given amount [ASH]
  
  Changes
  -------
  * round() handles negative arguments [ASH]
  * the SPOOF flag is inheritable [ASH]
  * /nosub switch to @pemit to leave ## and #@ un-evaled [ASH]
  * /preserve to @wipe and wipe() to reverse effect [ASH]
  * all @o* messages no longer display on null [ASH]
  * set(), setr(), setq(), and r() handle ansi [ASH]
  * if owner is FLOATING they won't receive float messages [ASH]
  * /basic switch to @lock for Penn compatibility [ASH]
  * @list user_attributes handle wildcard matching [ASH]
  * @list alloc shows better buffer stats [ASH]
  * better replace_token call for all ##/#@ subs [ASH]
  * citer() has optional separator [ASH]
  * lwho() has argument to list just ports [ASH]
  * modified MONITOR site monitoring to show remote port [ASH]
  * sin(), tan(), etc modified for MUX compatibility [ASH]
  
  Bug Fixes
  ---------
  * double free in elist() [ASH]
  * EXTANSI could bleed [ASH]
  * Helpfile errors fixed [ASH]
  * SESSION didn't cut the name off at 16 chars (formatting issue) [ASH]
  * mailquick()'s arg didn't totally mirror MUX's mail() [ASH]
  * if who_unfindable disabled, player_dark disabled, and allow_whodark enabled
    you'd never get the connect flag of a wizard. [ASH]
  * Linux and other weird unix systems tended to hang on AUTH lookups [THO]
  * v() wouldn't handle special chars as first char if enabled ATTR_HACK [ASH]
  * parent() when used to set a new parent did not return the dbref# [ASH]
  * Fixed legacy bug in QUEUE which effected a-z setq() regs [ASH]
  * 'home' check was broke if set disabled and ignore at the same time [ASH]
  * @thaw didn't handle semaphores properly [ASH]
  * Zone-ignores didn't work for QUIT, LOGOUT, and it's ilk [ASH]
  * Debug Monitor stack had a conditional off-by-one state on @reboots [AMB]
  * @extansi was broke when ZENTY_ANSI not defined [AMB]/[LNS]
  * wildcard matching could become problematic and loop endlessly [ASH]

[PREV] [TOP] [NEXT]

3.2.4p15

  Release Date: 1 Jul 1999
  Status: Beta
  
  New Features
  ------------
  * local.c plugin support [LNS]
  * BANG support (!, !!, etc) [KRK]
  * +bcc for blind carbon copies for mail [ASH]
  * mailstatus() function to mimic mail/status [ASH]
  * elementsmux() for MUX elements() compatibility [ASH]
  * parsestr() for help with speech formatting [ASH]
  * chomp() strip returns before, after, or both sides of string [ASH]
  * escapex() like escape() but choose what chars to _not_ escape [ASH]
  * securex() like escapex() but for secure()'s counterpart [ASH]
  * BLIND flag to make target arrival/leaving 'snuffed' [ASH]
  * DEFAULT attribute flag for handling default global attrib [ASH]
  * SINGLETHREAD attribute flag to handle single-threading $commands [ASH]
  * ATRLOCK attribute flag to handle global attribute locking [ASH]
  * MUXPAGE toggle to allow mux-like paging for compatibility [ASH]
  * NOGLOBPARENT toggle to disable inheritance of global inheret parents [ASH]
  * NODEFAULT toggle to disable global default handling [ASH]
  * mail_verbosity will add Subj: to sent mail [ASH]
  * mail_anonymous set name for anonymous mail (Default: *Anonymous*) [ASH]
  * sidefx_maxcalls (1000 default) for max sideffects allowed/command [ASH]
  * oattr_enable_altname enable/disable alt name in odrop/ofail/osucc [ASH]
  * oattr_uses_altname for alt names sent to odrop/ofail/osucc [ASH]
  * empower_fulltel - Offer two methods for FULLTEL [ASH]
  * spam_msg message sent to spammers [AMB]
  * spam_objmsg message sent to spammers of objects [AMB]
  * room_aconnect aconnects on individual rooms work (cloak checked) [LNS]
  * room_adisconnect adisconnects on individual rooms (cloak checked) [LNS]
  * player_attr_default default @<attrib> handler for did_it() attribs [ASH]
  * thing_attr_default default @<attrib> handler for did_it() attribs [ASH]
  * exit_attr_default default @<attrib> handler for did_it() attribs [ASH]
  * room_attr_default default @<attrib> handler for did_it() attribs [ASH]
  * global_clone_obj default dbref# for cloning attributes [ASH]
  * global_clone_player default debref# for cloning attributes [ASH]
  * global_clone_thing default debref# for cloning attributes [ASH]
  * global_clone_room default debref# for cloning attributes [ASH]
  * global_clone_exit default debref# for cloning attributes [ASH]
  * global_attrdefault global locker for attribute sets/clears [ASH]
  * nobroadcast_host defines what sites will be 'snuffed' from MONITOR [ASH]
  
  Changes
  -------
  * Total rewrite of all hash tables for dynamic loading [LNS]
  * alias system overhaul for better feature set [LNS]
  * /anon switch to mail systems [ASH]
  * timestamps added for forward/replied mail [ASH]
  * lit() accepts commas as part of its input string [ASH]
  * hastype() follows type() for permissions [ASH]
  * config(sideeffects_txt) return the string of sideeffects enabled [LNS]
  * /preserve to @chown and @chownall to preserve flags [LNS]
  * @list stack shows filenames properly now [LNS]
  * PID processing added to @notify, @wait for pid handling [ASH]
  * @function/delete for deleting @functions [ASH]
  * lzone() offers optional paging [ASH]
  * @doors are no longer preserved through reboots [LNS]
  * columns() optionally (13th arg) handles filler on short args [ASH]
  * inc()/dec() now take strings as a '0' value like normal [ASH]
  * @pcreate/reg for emailing register email based on @areg [ASH]
  * @pemit handles reality_levels with all arguments [ASH]
  * @admin can be used to delete aliases as well as add [LNS]
  
  Bug Fixes
  ---------
  * permission with NO_EXAMINE and attribute fetches [ASH]
  * array out of bounds with BACKSTAGE flag [ASH]
  * wildmatch() broke on some matches [ASH]
  * Bug with @mvattr and QUIET flag [ASH]
  * Objects could use the brandy toggle to send mail [ASH]
  * Security issue with autoregistration [ASH]
  * goto didn't have hooks before/after right [ASH]
  * SIGSEGV on autozone add if player didn't belong to zone [ASH]
  * Bug with teleporting and permissions [ASH]
  * NASTY bug that could corrupt registries with @freeze/@thaw/@wait [ASH]
  * Fix help entry with @convert/@quota cross-matching [ASH]
  * Fix alloc corruption with 'page' from liberal nulls [ASH]
  * Fix issue in @program string sent to global_error_obj incorrect [ASH]
  * Fix for orflags()/andflags() with flag rewrite [ASH]
  * Fix for @uptime to show time up longer than a year [ASH]
  * Fix for legacy bug in @list functions for blowing a buffer [ASH]
  * Fix for ZENTY_ANSI compiletime with a possible buffer overrun [ASH]
  * Fix for two rhosts running same debugmon debug_id [ASH]
  * Fix for mis-matched DPUSH/RETURN for DPOP in door.c [ASH]
  * Fix for pemit()/npemit() with argument evaluation [ASH]
  * Fix for legacy bug with vattr initialization [ASH]
  * Fix for library overflow issues regarding system call on ptimefmt() [ASH]
  * Fix for default() and edefault() for invalid dbref# [ASH]
  * lock(), rxlevel(), txlevel(), and parent() sidefx counter count issue [ASH]
  * Possible overrun on the stack with iter() during certain config opts [ASH]


[PREV] [TOP] [NEXT]

3.2.4p16

  Release Date: 1 Jan 2000
  Status: Beta
  
  New Features
  ------------
  * ZoneWizLock gives full wiz-like permissions of your zone [ASH]
  * aiindex() - works like iindex() except will append to a null list [ASH]
  * sortby() - Added for MUX2 compatibility [ASH]
  * wizmax_vattr_limit for wizard attrib @limits [ASH]
  * wizmax_dest_limit for wizard @destroy @limits [ASH]
  * vattr_limit_checkwiz to enable/disable @limits for wizards [ASH]
  * guild_attrname to change the Guild field in WHO/DOING [ASH]
  * exits_connect_rooms to disable floating for any linking exit [ASH] 
  * switch_substitutions allows #$ substitutions in switches  [ASH]
  * examine_restrictive [1-5 (0 disables)] to restrict examine on 'level' [ASH]
     
  Changes
  -------
  * wrap() has 7th argument for left justification [ASH]
  * +proof for mail enhanced for characters used [ASH]
  * @cpattr, @mvattr, and @edit now follows attribute content locking [ASH]
  * /noisy for @set does 'loud' setting like PennMUSH [ASH]
  * @dynhelp/dynhelp()/textfile() does partial matching [ASH]
  * @decompile has /all(default) /flags and /attribs switches [ASH]
  * - mail writing allows '=' without escaping now [ASH]
  * wizards optionally checked for @limits if configured [ASH]
  * funceval added to @list [ASH]
  * @doing, @doing/header and @poll given larger strings [ASH]
  * switch(), switchall(), and @switch now optionally take #$ [ASH]
  * lattr() takes page values [ASH]
  * room checks hardened against corrupted db's [ASH]
  
  Bug Fixes
  ---------
  * wrap() had optional run-off and didn't cut properly [ASH]
  * @door didn't handle mangled ports right [ASH]
  * caseall() double free [ASH]
  * crashbug with broadcast_host [ASH]
  * +proof for mail could cause a crash [ASH]
  * strmath() broke on ammount argument [ASH]
  * BOUNCE was not cleared on RECOVER objects [ASH]
  * debug stack (trace) had a memory leak [ASH]
  * wizard objects not inherit incorrectly triggered @limit [ASH]
  * passing only one argument to @admin params could cause a crash [AMB]
  * BLIND broke on some situations [ASH]
  * the internal hash tables had an off-by-one bug [ASH]
  * @flag/remove didn't return an error if it failed [ASH]


[PREV] [TOP] [NEXT]

3.2.4p17

  Release Date: 1 Jul 2000
  Status: Beta
  
  New Features
  ------------
  * fmod() for Penn compatibility [ASH]
  * separate .conf file for most commonly used params [AMB]
  * @admin roomlog_path to specify different path for LOGROOM [ASH]
  * new minimal_db imported [ASH]
  
  Changes
  -------
  * LOGROOM @toggle logs to roomlogs directory [ASH]
  * attrcnt() can repair objects [ASH]
  * @aflags gives detailed information on attributes [ASH]
  * @admin garbage_chunk, precmd_obj wasn't used [AMB]
  * @attribute/delete now does sanity checking [ASH]
  
  Bug Fixes
  ---------
  * moon() had a huge margin of error on waxing/waning [KRK]
  * asksource.sh fix for (l)oad issue [ASH]
  * news/verbose broke functionality [AMB]
  * bunch of help file fixes [AMB]
  * ZENTY_ANSI broke if TINY_SUB enabled [ASH]
  * function aliases could override hardcode [ASH]
  * @pcreate/reg crashed in rare circumstances [ASH]

[PREV] [TOP] [NEXT]

3.2.4p18

  Release Date: 1 Jan 2001
  Status: Beta
  
  New Features
  ------------
  * %@ support for compatibility with other codebases. [ASH]
  * queue_compatible to allow negative semaphores [ASH]
  * Allowed large WHO listing for compatibility [ASH]
  * OLD_SETQ config parameter for pre-TM2 compatibility [ASH]
  * percent subsitution ceiling per command [ASH]
  * lcon_checks_dark for dark lock checking enforcement [ASH]
  * mail/anon and 'both' options added to mail [ASH]
  * KEEPALIVE @toggle for network keepalives [ASH]
  * CHKREALITY @toggle/chkreality() for reality comparison matches [ASH]
  * reality_locks @admin param for global lock checking [ASH]
  * reality_locktype for reality lock typemethods [ASH]
  * LOGGED attribute flag to log all changes to attribute [ASH]
  * NOISY @toggle to mimic 'noisy' sets ala PennMUSH [ASH]
  
  Changes
  -------
  * @aflags/full to count atttributes in use with that name [ASH]
  * mail/recall shows more statistics [ASH]
  * FUBAR flag stops functions from executing [ASH]
  * @hook/fail for fail checks [AMB]
  * backup_flat.sh recognizes -s for single-runs for crontabs [ASH]
  * CPU protection improved, especially with TRACE output [ASH]
  
  Bug Fixes
  ---------
  * soundex buffering issue gave garbled output [KRK]
  * sideeffects could double evaluate [AMB]
  * WHO/DOING with dark broke [AMB]
  * help files broke with escapes with zenty ansi [ASH]
  * mail/recall didn't display multiple messages properly [ASH]
  * crash bug with mail dynamic $-aliases [ASH]
  * @dynhelp/parse broke parsing ansi properly [ASH]
  * mail/recall had off-by-one in month display [ASH]
  * logf() conflicted with newer compilers [ASH]
  * @hook/igswitch didn't evaluate properly [ASH]
  * tons of Solaris/SunOS compatibility [ASH]
  * player cache and reality levels could clobber match-state data [ASH]

[PREV] [TOP] [NEXT]

3.2.4p2

  Release Date: 1 Jan 1993
  Status: Beta
  
  New Features
  ------------
  * several mail enhancements for auto repair [SEA]
  * mail folders [SEA]
  * various mail config parameters for stability/config [SEA]
  * VLIMIT to control max attributes
  
  Changes
  -------
  * massive mail malloc for fast delivery [SEA]
  
  Bug Fixes
  ---------
  * unfindable didn't work right with loc() and others [ASH]
  * GDBM/NDBM fix for corruption with vlimit fix [SEA]

[PREV] [TOP] [NEXT]

3.2.4p3

  Release Date: 1 Jul 1993
  Status: Beta
  
  New Features
  ------------
  * remtype() to remove a list based on type [ASH]
  * mailquick() for quick mail review [SEA]
  * eval() for string/attribute evaluation [ASH]
  * translate() for deparsing strings [SEA]
  * valid() to validate types [ASH]
  * entrances() to return entrances to target [SEA]
  * graball() like grab() but grabs all [SEA]
  * remit() to remite to a room [ASH]
  * rnum() to parse rooms [SEA]
  * wipe() for wiping [ASH]
  * destroy() for destroying [ASH]
  * step() to step parse based on stepping [ASH]
  * localize() to localize registers from eval [ASH]
  * null() to snuff output of string [SEA]
  * ladd(), lsub(), lmul(), ldiv(), land(), lavg(), lmax(),
    lmin(), lor(), lxor(), lnor(), lxnor(), ncomp(), streq(),
    xcon(), inzone(), zemit(), zwho(), zfun(), zfun2(),
    zfunlocal(), zfun2local(), zfundefault(), zfun2default(),
    zfuneval(), zfunldefault(), zfunl2default() [SEA]
  * lastcreate(), while(), modifystamp(), createdstamp() [ASH]
  * @hide[/on/off] - For PENN compatibility [ASH]
  * @saystring define what is substituted instead of 'says' [ASH]
  * NOWHO (internal) - mark who is @hidden [ASH]
  * LOGIN bypass @disable logins [SEA]
  * ZONECONTENTS makes zonemaster behave like master room [THO]
  * BACKSTAGE check to see if auto-inherited to ownership [SEA]
  * NOBACKSTAGE marker for backstage checks [SEA]
  * ANONYMOUS return 'Someone' when cloaked when talk/say [SEA]
  * NOWHO specify who can @hide [SEA]
  * EXAMINE_FULL examine anything but #1, cloaked, and noex [SEA]
  * FULLTEL teleport anywhere but #1 and cloaked locations [SEA]
  * BRANDY_MAIL send mail with 'mail user-list=3Dsubject' methodology [ASH]
  * FORCEHALTED force someone who is halted [ASH]
  * mail_tolist enable/disable To: <players> in mail automatically [ASH]
  * mail_default change 'mail' from mail/quick to mail/status [ASH]
  
  Changes
  -------
  * name() optionally handles setting via sideeffect [ASH]
  * examine/quick aliased to /brief [ASH]
  * examine/brief modified output to mimic other codebases [ASH]
  * @function/list for penn compatibility [ASH]
  * /zone to @pemit for pemit to zones [THO]
  * @dolist/notify to trigger semaphores [SEA]
  * mail/next and mail/zap modifications [SEA]
  
  Bug Fixes
  ---------
  * %l and loc() didn't work right in trace output [ASH]
  * depower tel_anywhere didn't work [SEA]
  * look could see cloaked things if given long-finger ability [SEA]
  * recover objects could be examined to find names of them and owner [ASH]
  * grab() crashed server if given only one argument [SEA]
  * go couldn't use 'go' through parent exits before [SEA]
  * ueval() fixed missing LBUF free [ASH]
  * mail/write +list gave erraneous results [SEA]
  * lexits() won't show exits set PRIVATE at the 'home' of those exits [SEA]
  * min() value shoved a double in an int [ASH]
  * max() value shoved a double in an int [ASH]
  * wmail/size tried to free null pointer [SEA]
  * host sites over 50 characters would not null terminate [SEA]
  * @open could clobber the return exit from how tprintf() buffers [SEA]
  * andflags() and orflags() didn't escape out '2' or '1' right [SEA]

[PREV] [TOP] [NEXT]

3.2.4p4

  Release Date: 1 Jan 1994
  Status: Beta
  
  New Features
  ------------
  * localized formatting allowed with &format<blah> [ASH]
  * listmatch() for matching wildcard values [SEA]
  * setqmatch() for matching wildcard and storing in setq [SEA]
  * listnewsgroups() to list newsgroups [THO]
  * inprogram() to show if in program [ASH]
  * PROG to specify if target can issue @program [ASH]
  * NOSHPROG to specify if you can shell out of a program [ASH]
  * IMMPROG to enforce staying in a @program until completion [ASH]
  * @program to put someone into an interactive program [ASH]
  * @quitprogram to abort the program [ASH]
  * @progprompt to specify the prompt to program [ASH]
  * @extansi to specify a multi-ansified name on a target [ASH]
  * train to 'teach' someone what you type [ASH]
  * +help (hardcode) to call plushelp.txt/.indx [ASH]
  * login_to_prog to enable logging into a running @program [ASH]
  * noshell_prog to disable shelling out of a @program [ASH]
  * sidefx_returnval for sideeffects to return dbref#'s (like set) [ASH]
  * nospam_connect to snuff bot spammage on connects [ASH]
  * noregist_onwho to disable 'R' on WHO/DOING when register sites [ASH]
  * lnum_compat to enable lnum compatibility mode [ASH]
  * mailinclude_file to specify the text file included in registering [ASH]
  * must_unlquota requires unlocking quota to modify quota [SEA]
  
  Changes
  -------
  * @prog aliased to @program [ASH]
  * filter() now supports an output separator [ASH]
  * lnum() and lnum2() optionally return NULL if given a '0' [ASH]
  * mask() now takes '~' for adding 1's comp, '1' for 1's and '2' for 2's [ASH]
  * mailquick() takes 3rd argument for MUX mail() compatibility [ASH]
  * news/articlelife takes 'forever' as a valid argument [THO]
  * mail/status takes /subject, (U)nread, (N)ew, (B)oth new/unread, (S)aved,
   (M)arked, and (O)ld mail as optional search params [ASH]
  * mail/number takes same new args as mail/status [ASH]
  * news/read now marks messages as 'read' [ASH]
  * @ansiname now allows raw ansi [ASH]
  * dig(), create(), open(), clone() all optionally return dbref#'s [ASH]
  * @list options now shows more (and valuable) information [ASH]
  * @function/list now shows flags for privalaged/preserved functions [ASH]
  * mail/status and mail/read now show connected players [ASH]
  * mail/write and - now show how many characters you have written [ASH]
  * mail/forward and mail/reply now recognize the BRANDY_MAIL @toggle [ASH]
  * @function/preserve to preserve registers from being modified [ASH]
  
  Bug Fixes
  ---------
  * attribute formatting broke for what/owhat [ASH]
  * filter() did not correctly parse arguments in some instances [ASH]
  * @set thing/attr=_thing/attr would on rare occurances not work [ASH]
  * lock() would not parse the second argument in some occurances [ASH]
  * mail/reply didn't function right when BRANDY_MAIL toggled [ASH]
  * setunion() would not parse 3rd/4th args correctly on rare occurances [ASH]
  * news/articlelife wouldn't reset articlelife with '-1' [THO]


[PREV] [TOP] [NEXT]

3.2.4p5

  Release Date: 1 Jul 1994
  Status: Beta
  
  New Features
  ------------
  * noauth_site specifies site and mask that AUTH lookups are skipped [ASH]
  * nodns_site specifies site and mask that DNS lookups are skipped [ASH]

  
  Changes
  -------
  * all help entries allow /search content searching [ASH]
  * /noauth and /nodns switches for @site [THO]
  * better timeout conditions for site lookups [THO]
  * @list site_information now shows additional information [ASH]
  
  Bug Fixes
  ---------
  * AUTH hung if remote server was configured wrong. Rewrote [THO]
  * Command substitution (%c/%x) could cause a SIGSEGV at random times [ASH]


[PREV] [TOP] [NEXT]

3.2.4p6

  Release Date: 1 Jan 1995
  Status: Beta
  
  New Features
  ------------
  * forbid_host, register_host, autoreg_host, noguest_host, suspect_host site
  restrictions for DNS host matches [ASH]

  
  Changes
  -------
  * @break accepts optional arguments [ASH]
  * @list site_information now shows DNS blocking [ASH]

  
  Bug Fixes
  ---------
  * mail didn't mark folders properly for deletion [ASH]
  * ansi() didn't recognize 'u' for underline [ASH]
  * @program had small issue with prompt storage [ASH]
  * autoreg file inclusion didn't count total lines right [ASH]
  * hastoggles(), haspowers(), and hasdepowers() didn't work [ASH]

[PREV] [TOP] [NEXT]

3.2.4p7

  Release Date: 1 Jul 1995
  Status: Beta
  
  New Features
  ------------
  * ZENTY-ANSI ANSI markup handler (Thanks Zenty)
  
  Changes
  -------
  * @set handles attrib flags: GOD, IMMORTAL, WIZARD/ROYALTY, COUNCILOR, 
    ARCHITECT, GUILDMASTER, HIDDEN, DARK [ASH]

  
  Bug Fixes
  ---------
  * reality locks didn't evaluate properly [ASH]
  * @list options did not show RESTRICT_HOME config setting

[PREV] [TOP] [NEXT]

3.2.4p8

  Release Date: 1 Jan 1996
  Status: Beta
  
  New Features
  ------------
  * Attributes starting with _ allowed and wiz only [ASH]
  * mail recognizes +editall, +feditall, +fedit, +cc, and +bcc args [ASH]
  * mailalias() returns the dbref# list of players global mail alias [ASH]
  * programmer() returns the dbref# of thing that put target in @program [ASH]
  * vcross() for MUX2 compatibility [ASH]
  * switchall() like switch() but matches all [ASH]
  * brackets() return bracket matches [ASH]
  * @@() works like null() but does not evaluate [ASH]
  * @flagdef define flag permission levels (/set, /unset, /see) [ASH]
  * @dynhelp dynamically read a specified <file>.txt/.indx file [ASH]
  * COMMANDS optional flag to define what uses commands [ASH]
  * NO_CLONE attribute flag to stop attributes from copying when @cloned [ASH]
  * MARKER0 through MARKER9 marker flags [ASH]
  * BOUNCE allows players to pass what they hear to their contents [ASH]
  * MONITOR_BAD monitor failed connects/creations to non-existant players [ASH]
  * PROG_ON_CONNECT reverses the current logic of program and connecting [ASH]
  * imm_nomod specifies only immortal can set/unset the NOMODIFY flag [ASH]
  * paranoid_exit_linking when enabled, you MUST control exit to link [ASH]
  * notonerr_return when DISABLED not() returns a '0' for returning #-1 [ASH]
  * safer_passwords passwords require 5+ chars, one upper, lower, special [ASH]
  * max_sitecons specifies the maximum # of port connections [ASH]
  
  Changes
  -------
  * lnum()/lnum2() handles negative numbers [ASH]
  * NOMODIFY optionally set to immortal only [ASH]
  * all vector functions recognize output separator [ASH]
  * mail +justify, +insert, +edit, +editall handles line numbers [ASH]
  * dice has more arguments for offset values [ASH]
  * modified/created is examinable now [ASH]
  
  Bug Fixes
  ---------
  * internal vprintf allocation memory leak [ASH]
  * NOMODIFY wasn't strict enough [ASH]
  * BACKSTAGE/NOBACKSTAGE didn't handle @zones [ASH]
  * create() didn't check permissions for @dig, @open, and @pcreate [ASH]

[PREV] [TOP] [NEXT]

3.2.4p9

  Release Date: 1 Jul 1996
  Status: Beta
  
  New Features
  ------------
  * @assert for Penn compatibility [ASH]
  * @toggle ZONECMDCHECK for zones to execute commands [ASH]
  * +acc added to append the cc to mail [ASH]
  * @flagdef for flag definition [ASH]
  * caseall() works like switchall() but for case [ASH]
  * cand() works like and() but stops processing on first 'FALSE' [ASH]
  * cor() works like or() but stops processing on first 'TRUE' [ASH]
  * moon() based on the POM code from berkley [ASH]
  * isword() returns 'TRUE' if entire string is all alpha/hyphon [ASH]
  * itext() returns nth arg (text '##') of an iter() [ASH]
  * inum() returns nth arg (num '#@') of an iter() [ASH]
  * modulo() returns the modulus of the numbers [ASH]
  * NO_PARSE attribute flag that stops /evaluation of %0-%9 in $commands [ASH]
  * SAFE attribute flag that stops modification of attribute [ASH]
  * SHOWFAILCMD show any matching failed $cmd uses the @ufail suite [ASH]
  * MAIL_STRIPRETURN when combining lines uses spaces not carriage returns [ASH]
  * PENN_MAIL when sending mail, use PENN like style [ASH]
  * guest_namelist specifies a dynamic namelist for guests [ASH]
  * hackattr_nowiz defines if '_attr' is wiz only or follows normal rules [ASH]
  * hackattr_see defines if '_attr' is viewable by wizard only [ASH]
  * penn_playercmds $commands on player work only for that player/inv [ASH]
  
  Changes
  -------
  * @break is now PennMUSH compatible [ASH]
  * player argument to mail/recall for by-player recalling [ASH]
  * valid() has more cases [ASH]
  * columns() has filler argument [ASH]
  
  Bug Fixes
  ---------
  * CONNECT flag didn't show in some situations [ASH]
  * Bug with dynhelp().  Player (3rd arg) never resolved correctly [ASH]
  * Possible (and very rare) overflow with certain wiz commands [ASH]
  * SIGSEGV bug with recursive @functions [ASH]
  * When @toggled MONITOR_BAD, MONITOR_FAIL doubled up failed connections [ASH]
  * Malaligned pointer in command.c.  Non-crash issue  [ASH]
  * setq() registers wern't cleared for extreamly fast command input [ASH]
  * ex thing/*sta* returns 'no attribs found' if tstamps enabled [ASH]
  * enhanced security for .txt file reading/verification (possible DoS) [ASH]
  * attrib flag DARK couldn't be unset by non-#1.  Only #1 can set it now [ASH]
  * encrypt/decrypt really mangled with how it passed key [ASH]

[PREV] [TOP] [NEXT]

3.9.0p0

  Release Date: 1 Jan 2002
  Status: Experimental to Alpha
  
  New Features
  ------------
  * log_maximum for maximum calls of logtofile() per command [ASH]
  * power_objects if toggled on allows objects to have direct @powers [ASH]
  * rooms_can_open allows rooms to open exits inside themselves [ASH]
  * sub_override/sub_include for %-sub customization [AMB]
  * signal_object for signaling objects [ODN]
  * break_compatibility to allow double eval for compatibility [ASH]
  * signal_object_type to handle function or command execution [ASH]
  * log_network_errors enables/disables network error logging [ASH]
  * SIGNAL handling is now recognized [ASH]
  * SIGUSR1 optionally handles object evaluation [ASH]
  * ZONE_LIKE_PARENTS for @parent like handling for @zones [ASH]
  * ZONECMDCHECK @toggle for zone parent checks [ASH]
  * Added %+, and %? for compatibility [ASH]
  * Added NO_CODE flag for code restriction [AMB]
  * Added Penn's regexp package: regmatch(), regmatchi(), regedit(), 
    regediti(), regeditall(), regeditalli(), reswitch(), reswitchi(), 
    reswitchall(), reswitchalli(), regrab(), regrabi(), regraball(), 
    regraballi(), regrep(), regrepi()  [ASH]
  * bypass() for function overloading [ASH]
  * logtofile() for logging [ASH]
  * searchng() for search with nogarbage [ASH]
  * keepflags()/remflags() for flag filtering [ASH]
  * foldercurrent()/folderlist() for mail folder manipulation [ASH]
  * Added default options for MUX/Penn/TM3 buildouts [LNS]
  * Total rewrite of tprintf() buffering [LNS]
  * ] for pre-processing commands (Penn compat) [ASH]
  * Rewrite of permission handler for second word of permissions [ASH]
  * round_kludge @admin param for 'cleaner' rounding [KRK]
  * idle for non-idle time issued commands [ASH]
  * HIDEIDLE @toggle to appear idle when you're not [ASH]
  * MORTALREALITY @toggle for wizzes to handle realities like a mortal [ASH]
  * MAILVALIDATE to validate mail before sending (with brandy mailer) [ASH]
  * (d)elete option in asksource.sh [ASH]
    
  Changes
  -------
  * Makefile addition to optionally ignore signals [ASH]
  * Makefile uses date -r [ASH]
  * version() optionally handles an argument for compile date [ASH]
  * Improved bounds checking in various functions for security [ASH]
  * tel() now recognizes the QUIET switch [ASH]
  * Laxed useable characters for attributes [ASH]
  * added stepping argument to lnum()/lnum2() [ASH]
  * Relaxed permissions of reality locktype 2 & 3 [ASH]
  * Added locktype 4 & 5 for reverse of 2 & 3 [ASH]
  * @log can now write to subdirectories up to 5 deep [ASH]
  * @edit has /check for checking output w/o editing (Penn compat) [ASH]
  * @search has /nogarbage switch for ignoring going/recover [ASH]
  * moon() takes optional argument for moon phase percentage [ASH]
  * @grep takes /regexp option for regular expression matching [ASH]
  * /single switch to @edit for limiting editing to one arg [ASH]
  * edit() has 4th argument to specify single edit only [ASH]
  * WANDERER and GUEST check owner as well as target [ASH]
  * Good_chk() internal macro to handle better good object detection [ASH]
  * added eval/noval permissions for commands/functions [ASH]
  * list() given 4th argument for header [ASH]
  * Added /toreality to @pemit for reality pemitting [ASH]
  * TM3 Conversion capabilities vastly increased [ASH]
  * @hook now shows sub-overrides and sub-includes [ASH]
  * User-defined %-subs can be passed arguments [ASH]
    
  Bug Fixes
  ---------
  * sortby() mangling enactor [ASH]
  * signals were not handled properly and could cause a shutdown [ASH]
  * @idesc, @rsrvdesc2, home had issues with reality levels [ASH]
  * double-free in globals fixed [ASH]
  * asksource.sh fix for option 9 & 15 [ODN]
  * bug in mail when mail index is maxed won't send mail [ASH]
  * crash bug in @dbck [ASH]
  * read_remote_name didn't function properly [AMB]
  * /fail switch broke in @hook [ASH]
  * mail/news issue when nuking players [ASH]
  * @quota bug where buffer freed before display [AMB]
  * MUXPAGE @toggle issue with /port switch [LNS]
  * Bunch of missing help file entries fixed [AMB]
  * BSD compiling mail/cque warnings and issues [ODN]
  * examine with lock display errors in certain conditions [ASH]
  * ] was stripping {} when it shouldn't [AMB]/[ODN]
  
[PREV] [TOP] [NEXT]

3.9.0p1

  Release Date: 1 Jan 2003
  Status: Experimental to Alpha
    
  New Features
  ------------
  * labels for setq/setr/r [ASH]
  * SETQ_TEMPLATES for objects [ASH]
    
  Changes
  -------
  * extra protection to garble() [ASH] 
  * center() allows multi-character filler [ASH] 
  * lexit()/lcon() take optional output arguments [AMB] 
  * added /notify to @switch [ASH] 
  * Improved dice() with multiple arguments [ASH] 
  * v() handles arguments above 9 [ASH] 
  * strfunc() is bypass() aware [ASH]
  * mail shows 'm' for messages marked for auto-delete [ASH] 
  * map() takes arguments now [ASH] 
  * chomp() handles %r much cleaner [ASH]
    
  Bug Fixes
  ---------
  * idle timeout could be off on lagging servers (servers under load) [ASH]
  * @kick could crash the game [ASH] 
  * lloc() could crash the game [ASH]
  * command pathing with GOTO broke with ignore [ASH] 
  * 'N' command (]) showed up as 'N' and not ']' [ASH]
  * wrapcolumns() could crash [ASH] 
  * flag_name had possible issues with duplicated entries [ASH]
  * sub_include had uninitialized arguments [KRK]
  * lcon()/lexits() had a crash bug [ASH]
  * random times output was snuffed based on CPU alerm issues [ASH]
  * setq/setr didn't evaluate first argument [ASH]
  * internal tprintf off-by-one bug [ASH]
  * crash bug in ATRLOCK [ASH]
  * bug in clock skew protection for AMD processors [ASH]
    
[PREV] [TOP] [NEXT]

3.9.0p2

  Release Date: 1 Jan 2004
  Status: Experimental to Alpha
    
  New Features
  ------------
  * time skew protection for drifting time [ASH] 
  * network flood protection [ASH] 
  * MUX2 password compatibility added to Rhost [ASH] 
  * 64 char attribs, optional Mysql, and Doors added to compiletime [ASH]
  * 64 bit platforms are now auto-detected [ASH]
  * MAILFILTER attribute for mail to auto-sort incoming mail [ASH]
  * QDBM support now available [AMB]
  * nameq() to rename registers [ASH] 
  * spellnum() for Penn compatibility [ASH]
  * ibreak() for breaking out of iter() [ASH]
  * shift() to shift up/down %0-%9 parsing [ASH]
  * fbetween()/fbound() for floating points [ASH]
  * accents are now available via markup language (%f) [ASH]
  * printf() for line processing [ASH] 
  * STOP and CONT switches to @halt for queue processing [ASH]
  * %q<label> for TM3/Penn compatibility [ASH]
  * netrhost.pid now holds the process id of the running mush [ASH]
  * Action lists added to @cluster sets [ASH]
  * BOUNCEFORWARD for BOUNCE flag [ASH]
  * strdistance() for Levenshtein distance of strings [ASH]
  * tr() for find/replace for Penn compatibility [ASH]
  * digest() SSL algos [ASH]
  * roman() roman number converter [ASH]
    
  Changes
  -------
  * open() and dig() take optional argument for destionation [ASH]
  * asksource.sh improved with new args [ASH]
  * case() and caseall() support $# like switch() [KRK]
  * error() handles optional target argument [ASH]
  * %-subs take character limiter [ASH]
  * Minimal_db removed until updated [KRK]
  * timefmt(), convsecs(), convtime() and moon() now handle 64 bit time [ASH]
  * list() handles optional target player [ASH]
  * garble() optionally handles char count instead of string [ASH]
  * remit() optionally handles to-reality like @pemit [ASH]
  * /display to @function to handle function displaying [ASH]
  * /LIST to @function handles wildcarding [ASH]
  * Output to @list buffers cleaned up [ASH]
  * Allow keyword negation to @admin [LNS]
    
  Bug Fixes
  ---------
  * fixed @door code to be useable [ASH] 
  * Unitialized variables in view_attr (internal) [KRK] 
  * Mail wouldn't compile under AIX [ASH] 
  * @assert not behaving like @break [KRK]
  * sha1 compiling issues with  new compiler [ASH] 
  * null commands deidled player when it shouldn't [ASH]
  * 64 bit compiling issues on new compilers [ASH] 
  * signal handling could break alarm triggering [ASH]
  * spellnum() had an issue with 10's argument [ASH]
  * randmatch() had a crash bug [ASH]
  * caseall() had a missing LBUF [ASH]
  * QDBM corrupted the mail db in some instances [ASH]
  * default*() functions always evaluated second arg [ASH]
  * ptimefmt() had a missing structure argument [ASH]
  * hardcoded news system had a missing free [ASH]
    
[PREV] [TOP] [NEXT]

3.9.1p0

  Release Date: 1 Jan 2006
  Status: Alpha
    
  New Features
  ------------
  * accent()/stripaccents() for accent characters [ASH]
  * pid() for process ID returns [ASH]
  * pgrep() for parent grepping [ASH]
  * @clusters have been added.  Available switches are:
    /new, /add, /del, /clear, /list, /threshold, /action, /edit, /set, /repair,
    /grep, /reaction, /cut, /trigger [ASH] 
  * cluster_u(), cluster_u2(), cluster_ulocal(), cluster_u2local(), 
    cluster_uldefault(), cluster_u2ldefault(), cluster_udefault(),
    cluster_u2default(), cluster_grep(), cluster_regrep(), cluster_regrepi()
    cluster_hasattr(), cluster_lattr(), cluster_attrcnt(), cluster_vattrcnt()
    cluster_get(), cluster_xget(), cluster_set(), cluster_default(),
    cluster_edefault(), cluster_stats(), cluster_get_eval(), 
    cluster_ueval() [ASH]
    
  Changes
  -------
  * strip() takes optional 3rd arg for allowing chars and not denying [ASH]
  * filter() can now take multiple arguments [ASH] 
  * @wait/pid recoded to be nicer on the queue [ASH]
  * chr() allows handling markups [ASH]
  * LOGROOM toggle uses LOGNAME on the room as an override [ASH]
  * setr()/setq() handle ! and + argument for next available reg [ASH] 
  * SIG USR1/USR2 has better handling [ASH] 
  * /oneeval switch to @pemit to enforce single evaluation [ASH] 
  * lexits() allows page listing [ASH] 
  * @function/display shows flags now [ASH] 
  * all *lattr*() functions reworked to fall under a single evaluater [ASH] 
  * all *u*() functions reworked to fall under a single evaluater [ASH] 
  * lock() with optional 3rd argument to set/clear attribute locks [ASH]
  * @wait handles +/- values for Penn compatibility [ASH]
  * vattrcnt() has a method to fix broken attribute counts [ASH] 
  * pgrep() has option for outputting matches [ASH] 
  * @mvattr/@cpattr with cleaner display of attributes [ASH] 
  * OUTPUTPREFIX/OUTPUTSUFFIX are now stored through reboots [ASH] 
    
  Bug Fixes
  ---------
  * lrooms() had a bug with proper room listing [ASH]
  * creplace() didn't evaluate second argument right [ASH] 
  * fixed up internal buffering for better allocation [ASH]
  * mail/reply didn't work with players with spaces [ASH] 
  * translate() didn't handle %0-%9 properly [ASH]
  * citer() had a double buffer allocation [ASH] 
  * @whereis/@whereall didn't hide dark players [ASH]
  * %q<label> broke TRACE [ASH]
  * BANG support didn't work on overloaded functions [ASH]
  * possible crash bug in signal and command processing [ASH] 
  * map()/filter() didn't parse arguments properly [ASH] 
  * connecting didn't honor @hide/dark/cloak properly [ASH]
  
  
[PREV] [TOP] [NEXT]

3.9.1p1

  Release Date: 20 Jun 2008
  Status: Alpha
  
  New Features
  ------------
  * Added optional <type> argument to vattrcnt, pgrep, and cluster_grep. [ASH]
  * Added a <delim> to pgrep. [ASH]
  * Added rotational logs and supported features [ASH]
  * Added caplist() [KRK]
  * Added listdiff(), listunion(), listinter() [ASH]
  * Added iscluster() [ASH]
    
  Changes
  -------
  * Cleanup for cluster documentation [KRK]
  * Updated help for printf() [ASH]
  * Updated switch recognization for commands to be user friendly [ASH]
  * Center no longer has an 80 character limitation [ASH]
  * all *lattr() funcs take type > and < to show largest/smallest attrib [ASH]
    
  Bug Fixes
  ---------
  * Fixed a missing declaration for clusters. [KRK]
  * Fix for OSX 10.5.2 with 'broken' header includes. [ASH]
  * Ansi bleed on some conditions of wrap(). [ASH]
  * Fixed wrap() 'justification' issue if string less than wrap length [ASH]
  
[PREV] [TOP] [NEXT]

3.9.1p2

  Release Date: 12/01/10
  Status: Alpha
  
  New Features
  ------------
  * Added cluster_hasflag() [ASH]
  * Added cluster_flags() [ASH]
  * Added @snapshot [ASH]
  * Added writable() for set permission checks for attributes [ASH]
  * Admin param old_elist to toggle double eval for elist [ASH]
  * SAFELOG toggle for use with modifying say behavior [ASH]
  * @cluster/action/func for functionary triggers [ASH]
  * Added config param mux_child_compat for children() compatibility [ASH]
  * added signal_cron param for reading in a file at signal [ASH]
  * @protect for reserving player names [ASH]
  * @protect has switches /alias and /unalias for tagging names as active [ASH]
  * listprotect() to list a player's protected names [ASH]
  * @blacklist for adding blacklisted specific IP addresses (like TOR) [ASH]
  * cluster_wipe() added to mimic @cluster/wipe [ASH]
  * chktrace() to check what stage of tracing the parser is at [ASH]
  * privatize() for making local functions (ulocal/localize/etc) null [ASH]
    
  Changes
  -------
  * sees() has optional third argument to handle exits [ASH]
  * Improve buffering for @list permissions [ASH]
  * pid() handles target of process id (PID) [ASH]
  * wrap() takes 'i'gnore case for non-padding wrapped values [ASH]
  * 'f' option to escapex() handles omitting first escape [ASH]
  * mkindx now handles topic aliasing by stacking & topics [ASH]
  * elist() by default no longer double-evaluates [ASH]
  * lattr(), lattrp(), cluster_lattr(), lzone(), children() handle ~#1-#2 [ASH]
  * @list user_attrib handles AND flag and OR flag matches [ASH]
  * GUEST passwords can be 'guest' with safer_passwords enabled [ASH]
  * @idle takes %0 as argument of string you were paged with [ASH]
  * cluster functionary actions take precedence over command actions [ASH]
  * setting/clearing attributes notify you now if it's been done before [ASH]
  * Delay in cluster action/function action is now mudconf based [ASH]
  * Page now alerts you of players that you are cloaked from [ASH]
  * children() optionally behaves like mux's children() with empty returns [ASH]
  * SIGUSR1 optionally reads a file now with a kill -USR1 [ASH]
  * modified depreciated bcopy() in attribute handler to memcpy [ASH]
  * connect display in mail honors dark/unfindable/@hide [ASH]
  * Help entry for TRANSPARENT shows flag as 'T' instead of 't' [ASH]
  * Added /command switch to @trigger
  * Error entries (in error.txt) starting with '!' are evaluated [ASH]
  * map() handles multicharacter output delimiter [ASH]
  * switch_search admin param to switch search and searchng [ASH]
    
  Bug Fixes
  ---------
  * cluster_lattr() returned #-1 instead of 0 for unrecognized attribs [ASH]
  * @search/nogarbage didn't recognize the switch properly [ASH]
  * Compile issue on old compilers parsing the C99 standard of log.c [ASH]
  * #lambda inherited from parent where it shouldn't have [ASH]
  * compile warning on variable declaration in log.c [ASH]
  * writable() didn't correctly recognize non-existing attribs [ASH]
  * double entry for > cleaned up in hash table [ASH]
  * double-eval on delextract() fixed [ASH]
  * parenthesis parsing was broken in advanced regexp on $commands [ASH]
  * double-eval on interpreter for commands specified in @break/assert [ASH]
  * unitialized variables related to @open/@dig on new databases fixed [ASH]
  * cluster_set() didn't parse the second argument properly [ASH]
  * cluster_grep[i]() didn't check the target cluster object properly [ASH]
  * elist() didn't evaluate first argument properly [ASH]
  * possible missed LBUF_FREE in listmatch/setqmatch in certain conditions [ASH]
  * cleanup of missing elements in help.txt
  * possible missed LBUF_FREE in notify code on extremely rare conditions [ASH]
  * Double pass on @protect [ASH]
  
[PREV] [TOP] [NEXT]

3.9.2p0

  Release Date: 12/01/10
  Status: Alpha
    
  New Features
  ------------
  * @include for content inclusion ala PennMUSH [ASH]
  * @sudo for command processing [ASH]
  * @skip for command processing [ASH]
    
  Changes
  -------
  * printf() has : for filler character [ASH]
  * added mux_lcon_compat to enforce lcon() returns empty string [ASH]
  * setq()/setr() now understand '+' for dynamic named variables [ASH]
  * /PROTECT switch to @function for tagging of deleting regs [ASH]
  * map() delimiter is controlled by a config param map_space_delim [ASH]
  * @function now allows /min and /max for user-defined functions [ASH]
    
  Bug Fixes
  ---------
  * MySQL 3rd party patch corrupted the LBUF stack.  While we do not officially
    support the MySQL patch, it was fixed nevertheless [ASH]
  * Backing out new code could cause internal attributes to be redefined. [ASH]
  * @ps/all and pid() didn't always show the queue for non-players [ASH]
  * map() broke compatibility with output delim if not specified [ASH]
  * @skip didn't evaluate properly [ASH]

[PREV] [TOP] [NEXT]

3.9.2p1

  Release 10/30/2011
  Status: Alpha
    
  New Features
  ------------
  * checkpass() function for royalty and higher. [KRK]
  * %i substitution for itext. [KRK]
  * chkgarbage() function to check if target is GOING [ASH]
  * lookup_site() to see the real in-use SITE of a port [ASH]
  * ee() for engineering notation of floating points [ASH]
      
  Changes
  -------
  * singletime() now handles (w)eeks, (M)onths, and (y)ears like MUX [ASH]
  * timefmt() handles 'Z' (timezone), 'z' daylight savings, 'u' days in
    century, 'U' century in millenium, and 'm' total milliniums. [ASH]
  * map() can take a config option for default delimiter (default space) [ASH]
  * caplist() handles English Syntax Title formats [ASH]
  * @function takes /min and /max values for @function definitions [ASH]
  * @function/list displays MIN and MAX values (if existing) [ASH]
  * timefmt() handles timezone conversion... all timezones... [ASH]
  * timefmt() handles weeks, centuries, and milleniums [ASH]
  * ldelete() handles multiple arguments [ASH]
  * insert() handles multiple arguments [ASH]
  * replace() handles multiple arguments [ASH]
  * ifelse() handles %$ [ASH]
  * objeval() with third arg to bypass NO_CODE flag [ASH]
    
  Bug Fixes
  ---------
  * @assert/@break didn't handle {}'s for multiple args [ASH]
  * illegal buffer free and copy in command.c [ASH]
  * Fix for int handler exception in glibc [ASH]
  * @protect could walk over @alias -- minor glitch [ASH]
  * @include didn't properly evaluate arguments [ASH]
  * elapsed time in time fields in timefmt() broke with negative numbers [ASH]
  * CPUTIME didn't report CPU seconds correctly in 64 bit platforfms [ASH]
  
[PREV] [TOP] [NEXT]

3.9.3p0

  Release Date: 05/30/12
  Status: Alpha
    
  New Features
  ------------
  * Added native support for SQLITE [ASH] -- Thanks Ol'Sarge/Ternary
  * Added 256 color support to the internal markup translater [ASH]
  * colors() for color listing as well as numerical/hex display [ASH]
    
  Changes
  -------
  * BOUNCEFORWARD/BOUNCE now redirects TRACE [ASH]
  * pack()/unpack() optionally handles Penn's 64 bit compression [ASH]
  * creplace() handles optional range value [ASH]
  * ljust()/rjust() handles multi-character filler [ASH]
  * ansi() takes FG/BG arguments (1-255). e.g. ansi(100/200,string) [ASH]
  * %c/%x substitutions take 1-255 ansi subs via %c0x##%cn (ergo: hex) [ASH]
  * better sanitization for @Protect with a built-in way to fix aliases [ASH]
    
  Bug Fixes
  ---------
  * NO_CODE broke global_error_obj if enabled.  Fixed [ASH]
  * regexp issue with command  matching and parenthesis and backslashes [ASH]
  * Immortals were not able to re-@name themselves to a protected name [ASH]
  * @include didn't evaluate %0 args passed to it [ASH]
  
[PREV] [TOP] [NEXT]

3.9.3p1

  Release Date: 06/20/12
  Status: Alpha
    
  New Features
  ------------
  * added nslookup() for immortals with proper CPU/delay protection [ASH]
  * added room_toggles for default toggles for room creation [ASH]
  * added exit_toggles for default toggles for exit creation [ASH]
  * added robot_toggles for default toggles for @robot creation [ASH]
  * added player_toggles for default toggles for player creation [ASH]
  * added thing_toggles for default toggles for object creation [ASH]
  * added @list default_toggles to show the above default toggles [ASH]
    
  Changes
  -------
  * TERSE flag works on ROOMS [ASH]
  * @break and @assert have /queued and /inline switches [ASH]
  * trim() allows trimming multiple characters [ASH]
  * think, @emit, @oemit, pose, and say understand the /noansi switch [ASH]
  * page, rpage, lpage, mrpage understand the /noansi switch [ASH]
  * The basic @ansiname allows 256 colors now via 0x## or 0X## [ASH]
  * made @list default_flags no longer worthless [ASH]
  * / is superflurous with regards to FG colors in ansi() [ASH]
  * ansi() allows #FFFFFF, <#FFFFFF>, and <R G B> modes [ASH]
  * colors() has the 'x' option to display #FFFFFF format [ASH]
  * colors() has the 'r' option to display R G B format [ASH]
  * @sudo, @skip handle multiple arguments now [ASH]
  
  Bug Fixes
  ---------
  * the asksource.sh script broke on ubuntu because it didn't have slocate
  
[PREV] [TOP] [NEXT]

3.9.3p2

  Release Date: 08/10/12
  Status: Alpha
  
  New Features
  ------------
  * ansi() engine totally rewritten to better utilize and optimize [ASH]
  * NOTRACE switch to @function to disabling tracing of global functions [ASH]
  * cname() for colorized/accented names [ASH]
  * %k (works like %n but the colorized/accented name) [ASH]
    
  Changes
  -------
  * printf() handles multi-character filler and filler is ANSI-aware [ASH]
  * printf() for :: padding optionally put spaces for 'blank lines' [ASH]
  * enabled QDBM database support right out of the config script [ASH]
  * @funciton/list and /display displays functions tagged NOTRACE [ASH]
  * global errors can no longer be traced [ASH]
  * Rewrote ansi and accent parser to be faster and single-parsed [ASH]
  * added /localize and /clearregs to @include for Penn compat. [ASH]
  * added /globalize and /clearregs to @sudo. [ASH]
    
  Bug Fixes
  ---------
  * printf() had a color clobbering affect in certain circumstances [ASH]
  * printf() had an off by one alignment issue with justification [ASH]
  * fixed up some library lookup code in the asksource.sh script [ASH]
  * fixed the random dissapearing backslash issue [ASH]
  * secured @sudo for registers. [ASH]
  * % or \ at the end of an ansified string could escape out ansi [ASH]
    fix for this is allowing % and \ as special chr() input.
  * \\ for emits didn't work properly [ASH]

[PREV] [TOP] [NEXT]

3.9.3p3

  Release Date: 09/20/12
  Status: Alpha
  
  New Features
  -------
  * @titlecaption added for player prefix labels [ASH]
  * streval() [ASH]
    
  Changes
  -------
  * made ljust/rjust/center/ljc/rjc/printf natively handle chr() [ASH]
  * added '|', ', and ` format options to printf [ASH]
  * added '"' to printf to allow word-wrapping with the '|' option [ASH]
  * allowed clone() to handle PRESERVE and PARENT tags [ASH]
  * @nuke, @toad, and @turtle follow @limits now [ASH]
  * @halt/pid will report the PID that was halted [ASH]
  * increased the buffer alloc field in @list alloc [ASH]
  * Added includecnt and includenest config parameters for @include [ASH]
  * @protect for wizzes split full listing with the /all switch [ASH]
  * Made ifelse()'s $# be handled with ifelse_substitution param [ASH]
    
  Bug Fixes
  ---------
  * IDLE would uncloak/undark a wizard that was auto-dark/cloaked [ASH]
  * $Z in timefmt() would show negative values in > 32 bit math [ASH]
  * case sensitivity was reversed for reswitch/reswitchi cases [ASH]
  * backward compatibility with v(#) was broke. [ASH]
  * IDLE mis-aligned carriage return and line feeds [ASH]
  
[PREV] [TOP] [NEXT]

3.9.4p0

  Release Date: 04/08/13
  Status: Alpha
    
  New Features
  -------
  * encode64() from PennMUSH.  Requires OpenSSL. [ASH]
  * decode64() from PennMUSH.  Requires OpenSSL. [ASH]
  * @lfunction to allow players to define localized functions [ASH]
  * global parameter to specify global @lfunction limit per player [ASH]
  * global parameter to enable/disable BLIND snuffing connect/disconnect [ASH]
  * Wizard accessable mailquota() function to mimic mail/quota results [ASH]
  * %W to return target item if inside a twinklock [ASH]
  * strlenvis() to correctly count 'special' chars via chr() [ASH]
    
  Changes
  -------
  * Got the native MUX password reader working with input from Mike [ASH]
  * @caption and @titlecaption allow larger buffers for players [ASH]
  * internal sha1 code had to have variables redefined for conflict [ASH]
  * pemit() has an optional third argument for ## substitutions [ASH]
  * mask() now accepts maximum arguments [ASH]
  * Added /inline, /nobreak, /localize, /clearreg to @dolist [ASH]
  * Added /nobreak to @include [ASH]
  * @limit to allow /lfun switch for individual @lfunction overrides [ASH]
  * Added /target switch to @include [ASH]
  * BLIND (when configured to do so) snuffs connect/disconnect messages [ASH]
  * strmath() handles multi-word args in a mixed math/nonmath for delims [ASH]
  * TwinkLock when set on a player is now inheritable to all they own [ASH]
  * Laxed restrictions on sub_include for %-sub definitions [ASH]
  * elist() takes a 'munge' argument to apply to each element optionally [ASH]
  * converted tprintf buffering for better allocation in some commands [ASH]
  * enriched CPU protection for some /inline switches to be more paranoid [ASH]
    
  Bug Fixes
  ---------
  * strfunc() could call itself.  Just a cosmetic fix that made no sense [ASH]
  * strfunc() could cut off buffers on certain function calls [ASH]
  * printf() had CR/LF reversed [ASH]
  * mysql had compile issues on later compilers [ASH]
  * door code had a warning under latest compilers with realloc [ASH]
  * typos in help in various places with clustering [ASH]
  * 256 color mapping with RGB could be off by one on conditions [AMB]
  * Source had undeclared function when REALITY_LEVELS not defined [ASH]
  * printf() didn't handle accents properly in some conditions [ASH]
  * reality level lock type 3 and 5 broke with userlock checks [AMB]
  * strfunc() was case sensitive.  It shouldn't be. [ASH]
  * @break/@assert in some cases would keep stale results [ASH]
  
[PREV] [TOP] [NEXT]

3.9.4p1

  Release Date: 07/17/13
  Status: Alpha
  
  New Features
  -------
  * config parameter reality_compare for optional methods of desc display [ASH]
  * config parameter atrperms to set up attribute prefix permissions [ASH]
  * config parameter atrperms_max for ceiling on prefixes defined [ASH]
  
  Changes
  -------
  * asksource.sh (for the menu configurator) now optionally allows disabling 
    OpenSSL by force as some 3rd party openssl programs would barf on
    compatibility [ASH]
  * strmath() improved with inner delimitation (2 new arguments) [ASH]
  * a bit of cleanup with @pemit on cloaked players [ASH]
  * @aflags will now show _ prefix permissions on attribs (where exists) [ASH]
  * @switch handles /inline, /clearregs, /nobreak, and /localize options [ASH]
  * Cleaned up help.txt to no longer give line longer than X with mkindx [ASH]
  * Improved validation for @Lfunction [ASH]
  * @aflags/perm to show attribute prefix permissions in use [ASH]
  * greatly improved feature set for parsestr() for added speaking [ASH]
  
  Bug Fixes
  ---------
  * compiling issue when not using the enhanced ansi option [ASH]
  * crashbug in @blacklist/list in some conditions [ASH]
  * paging was broken in @blacklist/list, non-crash bug. [ASH]
  * possible erraneous cpu alert on new player creation on first connect [ASH]
  * @dynhelp didn't evaluate optional player target properly [ASH]
  * @lfunction was too restrictive on ownership [ASH]

[PREV] [TOP] [NEXT]

3.9.4p2

  Release Date: 10/01/13
  Status: Alpha
  
  New Features
  -------
  * safer_ufun -- enforces attributes on objects you don't control is taken at
    permission level of the object OR the player, whatever is LOWER. [ASH]
  * SNUFFDARK  -- @toggle (for wizards) to hide normal dark exit display. [ASH]
  * UNSAFE     -- attribute flag to override safer_ufun permissions [ASH]
  * @progreset -- allows you to reset the prompt of the target [ASH]
  
  Changes
  -------
  * printf() - the '/' option specifies cutoff value for '|' wrap option [ASH]
  * entering extended ASCII in input window auto-translates to markup [ASH]
  * @snapshot/list takes optional wildcard searching for files [ASH]
  * added nag notice if you use @set with a toggle or a @toggle with set [ASH]
  * verbosity now shows more information with setting/removing @toggles [ASH]
  * create() takes one argument now for Penn compatibility [ASH]
  * all *lattr() functions now handle regexp optionally [ASH]
  * @cluster/wipe and @cluster/grep now optionally handle /regexp [ASH]
  * @wipe optionally handles /regexp [ASH]
  * wipe() and cluster_wipe() optionally handle regexp [ASH]
  * added many more options to valid() [ASH]
  * all *regrep*() functions optionally handle regexp attribute matching [ASH]
  * pushregs now optionally allow you to specify registers to push/pop [ASH]
  * setdiff/setunion/setinter functions now optionally handle sorttype [ASH]
  * %d<num> for @dolist/inline [ASH]
  * itext()/inum() take optional key value (2nd arg) for @dolist/inline [ASH]
  * 'L' option added to %i and %d for Penn compatibility [ASH]
  
  Bug Fixes
  ---------
  * fixed CPU issue with bogus checks on connecting players in rare 
    conditions [ASH]
  * @function/list erraneously had a limit displayed from local functions [ASH]
  * when compiling without BANG support, there was an undeclared variable [ASH]
  * strmath() started at 0 when it should start a 1 [ASH]
  * some clients don't handle normalizing prompts properly, so we now
    fix this behavior forcefully [ASH]
  * printf() couldn't combine '/' and ':' options previously [ASH]
  * some extended ascii characters wouldn't display proplery [ASH]
  * documentation was missing for @cluster/wipe [ASH]
  * functions.c did not compile under CLANG [ASH]
  * @include didn't properly null arguments forcefully set [ASH]
  * @switch, @skip, @sudo did not evaluate in some situations [ASH]
  * no_eval works properly for @functions now by not-evaling input. [ASH]
  * pack/unpack for penn compat on radixes >=16 & <= 36 was broke [ASH]

[PREV] [TOP] [NEXT]

3.9.4p3

  Release Date: 01/01/14
  Status: Alpha
  
  New Features
  -------
  * reglmatch()/reglmatchi() -- match positions (like match()) [ASH]
  * reglmatchall()/reglmatchalli() -- all positions (like matchall()) [ASH]
  * regnummatch()/regnummatchi() -- count of matches (like nummatch()) [ASH]
  
  Changes
  -------
  * /tree added to @decompile, examine, and *lattr*() functions for 
    Penn-tree viewing [ASH]
  * /regexp added to @decompile and examine for regexp wildcard matching [ASH]
  * ^listens optionally handle parented arguments with @admin listen_parents 
    enabled [ASH]
  * /multi switch added to @oemit to optionally allow multiple targets [ASH]
  * oemit() optionally handles multiple targets [ASH]
  * lattr() and family handles TREE viewing optionally [ASH]
  * lexits() honors dark locks [ASH]
  * @aflags modified to allow online adding, modifying, deleting attrib 
    prefixes [ASH]
  * reverse(), scramble(), capstr(), lcstr(), ucstr(), and caplist() are now 
    ansi-aware [ASH]
  * columns() is now ansi aware, and it was a pain in the arse. [ASH]
  * wrapcolumns() is now ansi aware, and was a bigger pain in the arse. [ASH]
  
  Bug Fixes
  ---------
  * @function/list would not display all listings if not immortal [ASH]
  * memcpy() crash bug with GCC 4.x with aggressive compiler optimization [ASH]
  * WHO/DOING would not properly show 'year' if on over a year [ASH]
  * strfunc() wouldn't handle null arguments properly [ASH]
  * QDBM on a panic SIGTERM dump could occasinally corrupt the db 
    (but flatfile fine) [ASH]
  * @door definition change in later versions of GCC caused a conflict [ASH]

[PREV] [TOP] [NEXT]

3.9.4p4

  Release Date: 05/01/14
  Status: Alpha
  
  New Features
  -------
  * !^ and !!^ for true-boolean comparisons for functions for BANG notation.
  * lockencode(), lockdecode(), lockcheck() for variable lock checking
  
  Changes
  -------
  * mid(), before() and after() are now ansi aware [ASH]
  * citer() is now ansi aware [ASH]
  * pos(), randpos() and totpos() are ansi aware [ASH]
  * shuffle() is now ansi aware [ASH]
  * wrapcolumns() has EOL padding optionally [ASH]
  
  Bug Fixes
  ---------
  * strfunc() was broke for single argument entries [ASH]
  * bug introduced with the ansi handler to columns() in off by one bug [ASH]
  * @skip/ifelse wouldn't evaluate arguments properly [ASH]
  * @assert/inline and @break/inline wouldn't eval args properly [ASH]
  * #lambda erraneously stripped extra /'s at times [ASH]
  * art() handles non-printables [ASH]
  * possible crashbug in encode64/decode64 due to glibc memory map change [ASH]

[PREV] [TOP] [NEXT]

3.9.4p5

  Release Date: 05/24/14
  Status: Alpha
  
  New Features
  ---------
  * array() will wrap out text based on column width into setq registers [ASH]
  
  Changes
  -------
  * massive cleanup and helper tools for ansi for ease of modification [ASH]
  * better error control with failed player creation with safer_passwords [ASH]
  * Rooms set QUIET that are @toggled LOGROOM no longer notify of logging [ASH]
  * printf() is more vigerous in reusing ansi for filler [ASH]
  
  Bug Fixes
  ---------
  * columns() and wrapcolumns() had a crashbug with the handler (3.9.4p4) [ASH]
  * formatting with inverse ansi wasn't recognized properly [ASH]
  * speech.c broke when REALITY_LEVELS was no longer defined [ASH]
  * The initial db creation could bomb creating #1 with safer_passwords [ASH]
  * lwho() didn't properly check wiz when specifying optional target [ASH]
  * printf() with |" options had an alignment issue with ansi [ASH]
  * bug with 'guest' in safer_passwords [ASH]
  * memory leak in shuffle() [ASH]

[PREV] [TOP] [NEXT]

3.9.5p0

  Release Date: 09/15/14
  Status: Alpha
  
  New Features
  ---------
  * @remote -- allows to execute as if location was at remote [AMB]
  * ip_address param to specify ip addrfor mush to listen (default all) [AMB]
  * %c, %x and %m are freely configurable as ANSI or last-command sub [AMB]
  * subnetmatch() function to compare a specified IP against a subnet [AMB]
  * %2 (body) and %3 (date/time) subs for MAILFILTER [ASH]
  * sinh(), cosh(), tanh() added [AMB]
  * icmdobj @admin param to specify optional @icmd eval checks [ASH]
  * ansi_txtfiles optionally allow %c/%x/%m ansi subs in .txt files [ASH]
  * /silent switch for @reboot. Immortal-only by default [AMB]
  * parsestr() has new option '|' for @emits [ASH]
  * @list system -- Compile-time parameters [ASH]
  * mailread() function added to provide wizards individual mail 
    message segments [ASH]
  * mailsend() sideeffect function to allow wizards to send mail [ASH]
  * /STRICT options to @edit and edit() for strict-ansi alignment [ASH]
  * /RAW for @edit and edit() for raw editing ansi markup (orig behavior) [ASH]
  * list_max_chars parameter limits number of characters list can output [ASH]
  * /TF switch to @decomile for Penn compatibility.  Now people can stop 
    whining [ASH]
  * @toggledef for TOGGLES as @flagdef was for FLAGS [ASH]
  * /index feature to @flagdef and @toggledef [ASH]
  * flag_access_set, flag_access_unset, flag_access_see params 
    for @flagdef [ASH]
  * toggle_access_set, toggle_access_unset, toggle_access_see params 
    for @toggledef [ASH]
  * tor_localhost, tor_paranoid for dynamic live TOR proxy protection [ASH]
  * float_precision for floating point decimal precision (default 6) [ASH]
  * file_object parameter to specify dynamic override for connect.txt and 
    friends [ASH]
  * extractword() is a multi-char delimeter/separator/ansi-aware 
    extract/delextract [ASH]
  * mwords() is a multi-char delimiter/ansi-ignore words [ASH]
  * @dbclean to purge unused attributes from the db [ASH]
  * editansi() allows you to edit ansi encoding in a string [ASH]
  * @depower DARK that will disable all DARK capabilities of the target 
    (and belongings) [ASH]
  * @admin param ansi_default handles high-utilized functions to specify ansi 
    aware default [ASH]
  * @admin accent_extend to allow ASCII 251-255 characters.  Use at your own 
    risk :) [ASH]

  Changes
  -------
  * LBUFS are now capable of > 4K with QDBM [AMB]
  * Queue timers handle milliseconds [AMB]
  * Compile Menu allows configuring higher LBUF's [AMB]
  * Large amounts of cleanup in help files [AMB]
  * @sudo can now be nested [AMB]
  * @aflags /list aliased to /perms [ASH]
  * @aflags conditions for wanderer/guest (unregistered) for prefixes [ASH]
  * @aflags evaluation checks for prefixes [ASH]
  * Reality level names are increased to 16 characters [AMB]
  * NO_CODE made more lax on some functions/commands [AMB]
  * @icmd allows /eval and /eroom evaluation checks [ASH]
  * MAILFILTER handles arguments for body and time/date [ASH]
  * Updated TOR script with new URL, removed obsolete ones. [AMB]
  * pmatch(here) run inside a player returns the #dbref. [ASH]
  * Internal lower limit of cputimechk and cpuintervalchk lowered to '1' [AMB]
  * Added missing config options to alternate_netrhost.conf [AMB]
  * Mentioned several config optons in help of the commands they modify. [AMB]
  * Updated README.first install steps to actually include 'make links' [AMB]
  * Added checks in Startmush that look for presence of binary first. [AMB]
  * Examine/@decompile now works on attribute aliases [ASH]
  * Internal ceiling for maximum number of mails removed. Depends on LBUF [ASH]
  * @list flags differentiates better between normal and extended flags [ASH]
  * A lot of Rhost history added to helpfiles [ASH]
  * nummatch, totmatch and multi-regmatch now have strict CPU checks [ASH]
  * art() has an optional second argument for just displaying article [ASH]
  * PRIVATE flag will now snuff non-listening messages from wizards [ASH]
  * @edit and edit() now cleanly handle ANSI [ASH]
  * moved all of the ansi handler voodoo into stringutil.c [ASH]
  * printf() and the backend ansi handler natively handle ASCII-8 encoding [ASH]
  * list() is now throttled on how much output it can have [ASH]
  * page relaxes syntax slightly allowing 'p =blah' to work with MUXPAGE [ASH]
  * optionally compiles in system pcre libraries and not source derived [ASH]
  * @flagdef now will give you the flags that are assigned on set [ASH]
  * reality levels read 0x00000000 notation to mirror @list rlevel in conf 
    file for those who find the math of hexidecimal to decimal difficult [ASH]
  * uselock evaluation locks pass '0' for default, '1' for command and
    '2' for listens for @lock/use only [ASH]
  * @reboot/silent is more verbose to the player initiating it [ASH]
  * The help entry was wrong for grep() and associated functions with
    it handling non-wild args.  This is now allowed with optional arg [ASH]
  * getfrom lock now properly handles @fail/@ofail/@afail messages [ASH]
  * NO_WALLS properly muffles @dump messages [ASH]
  * clients that did not do CRLF didn't handle null entries correctly [ASH]
  * *_site admin params raised from 1000 chars to LBUF_SIZE [ASH]
  * bittype() optionally handles true staff inheritance checks [ASH]
  * strmath() now handles floating point notation [ASH]
  * localize() optionally has 2nd argument to specify specific regs to 
    localize [ASH]
  * tr() is now ANSI-aware, and optionally allows previous behavior [ASH]
  * editansi() enhanced to allow negation of special ansi encoding [ASH]
  * sqlite now recognizes foreign keys [ASH]
  * @set, &, set(), setr() are now PennMUSH style TREE aware optionally [ASH]
  * Enabled signal catch debugging information [ASH]
  * @include has /override switch that will mimic how arguments are assigned 
    like Penn [ASH]
  * ' option to printf() is now more useful with how it padds [ASH]
  * before(), after(), and mid() have a switch to disable ansi-awareness for 
    speed [ASH]
  * Stricter checking of setq/setq_old/setr/setr_old label argument and more
    clear error message in case label is invalid [AMB]
  
  Bug Fixes
  ---------
  * Some memsets didn't initialize the entire buffer [ASH]
  * wrap() had an off by one for 256 ansi color [ASH]
  * pmatch() didn't handle nonplayers right [AMB]
  * /quiet switch missing on @extansi [AMB]
  * kill -USR2 could corrupt QDBM databases on rare occasions [ASH]
  * MUX passwords broke with previous security fix to encoding [ASH]
  * ex/parent wouldn't identify desc in certain circumstances [ASH]
  * strfunc() had a memoryleak with a non-free LBUF [ASH]
  * elist() had a memoryleak with non-free LBUF [ASH]
  * Fixed missing QDBM #ifdef in redirect_ndbm.h [AMB]
  * Fixed %l being too restrictive if enforce_unfindable is enabled [AMB]
  * Fixed reverse-logic'd helpfile entry for hasattrp_compat [AMB]
  * fixed format<attr> -> <attr>format in attrib formatting help [AMB]
  * DB Converter now handles MUX 2.9+ properly again. [ASH]
  * Off-by-one fix for ansi stringlength detection. [ASH]
  * nor() would not properly work its logic past 2 arguments [AMB]
  * ANSI internals handle multiple enabled ANSI subs [AMB/ASH]
  * SHOWFAILCMD wouldn't work for parent command lookups [ASH]
  * ! syntax to printf filler was broken from ansi rewrite [ASH]
  * wrapcolumns() didn't handle CR/LF correctly for certain clients [ASH]
  * flag_name could crash the mush if fed invalid arg in the .conf file [ASH]
  * small chance of crash with player undefined for @reboot/silent [ASH]
  * crash bug in tel() due to a typo fixed [ASH]
  * mid() had an unitialized field when fetching outside of length 
    (non-crash) [ASH]
  * off by one bug for handling accented characters in ansi translator 
    backcode [ASH]
  * MONITOR_SITE was not handled by master toggle MONITOR [ASH]
  * creplace() was hardcoded with LBUF of 4000 chars [ASH]
  * some better cleanup of other functions for LBUF sizing [ASH]
  * typo with message when you re-wait a @wait by pid [ASH]
  * memory leak in @aflags without arguments [ASH]
  * bad things happened with @remote when issuer of @remote moved while in 
    @remote [ASH]
  * timers would not reset properly without a forced alarm call on signal 
    breaks [ASH]
  * regedit()'s suite of functions were erraneously locked at 4 args [ASH]
  * compile time warnings with some new additions when ZENTY_ANSI not 
    specified [ASH]
  * mail.c had in the write editor erraneous warnings hardcoded to 4K 
    buffers [ASH]
  * double eval fix in parsestr() [ASH]
  * third party mysql.c had a segsetv fix [ASH]
  * timers had a bug in mysql.c and mis-defined in timer.c [ASH]
  * memory corruption with argument passing in @include could crash [ASH]
  * wrong definition for next_timer with the milisecond timer [ASH]
  * double-alloc in destroy code (non-crash) [ASH]
  * @depowers wouldn't work properly on inheritance when power_objects was 
    enabled [ASH]
  * printf() had a one by off pad issue with extra spaces with ' option [ASH]
  * off by one buffer count for ansi_txtfile parameter caused bleeding [ASH]
  * Third optional argument of setq/setr did not evaluate [AMB]

[PREV] [TOP] [NEXT]

3.9.5p1

  Release Date: 03/27/15
  Status: Alpha
  
  New Features
  ------------
  * @pipe will allow you to pipe output to an attribute (until full) [ASH]
  * ATAN2 for MUX2/Penn/other compatibility [ASH]
  * sortlist() takes 2 or more lists and selects max/min based on sorting [ASH]
  * ch to allow you to connect @hidden (if wizard or @powered NOWHO) [ASH]
  * flag_access_type, toggle_access_type configs for TYPE restrictions [ASH]
  * /tee and /status switches for @pipe to allow more flexibility [ASH]
  * Optional compiletime to allow GLIB2's SHA512 random-seed passwords [ASH]
    Note: This does allow backward compatibility with existing DES passwords
  * forbid, register, and guest site restrictions allow optional connects [ASH]
  * @admin allows you to online load/save/list .conf file parameters [ASH]
  * NO_NAME flag on object types will evaluate @nameformat if available on all
    THING types for the purpose of inventory, contents, and looking [ASH]
  * A non-conformat switch global /syntax is available for most commands that
    will now show syntax and available switches for any command [ASH]
  
  Changes
  ------------
  * strfunc now has a ceiling of arguments to 1000 to avoid DoS issues [ASH]
  * By popular demand, 'idle' when followed by '@@' does an idle think [ASH]
  * delete() is now ansi-aware [ASH]
  * @uptime shows system uptime (when available) [ASH]
  * If a player @toggles VARIABLE on themselves, then says, poses, and @walls
    will be colorized as if cname() [ASH]
  * @flagdef and @toggledef now can restrict based on TYPE [ASH]
  * added bitlevel permission override to @flagdef/@typedef TYPE restricts [ASH]
  * editansi() now accepts multiple arguments for search/replace [ASH]
  * 'N' normalizer search for editansi() [ASH]
  * with the avent of SHA512 passwords, password length capped at 160 char [ASH]
  * on systems that do not have a SHA512 compatible glibc fall back to DES
    while encrypting passwords. [ASH]
  * Locks (normal and attribute) are 'noisy' with the NOISY @toggle [ASH]
  * expanded flag overwrite for expanded-who (PARIS) compiletime [ASH]
  * added player dbref as 4th arg (%3) to file_object parameter [ASH]
  * If the mail-db gets corruption, you can attempt a wmail/load to recover it
    if you have a valid mail flatfile. [ASH]
  * wizhelp granted to GUILDMASTER bitted players by default [ASH]
  * @selfboot has optional switches /list and /port so you can specify what 
    connection you want selfbooted.
    
  Bug Fixes
  ------------
  * mail/mark/save when no more saved quota wouldn't notify you of that [ASH]
  * ascii8 encoding could allow multi-sequences in %<###> encoding [ASH]
  * forgot to define EXTLIBS in the Makefile -- oopse [ASH]
  * missed free in the @uptime changes for buffers [ASH]
  * buffering issue with @list options [ASH]
  * old_setq didn't handle re-mapping register names with '!' option [ASH]
  * cleaned up code to compile without warnings on latest clang [ASH]
  * cleaned up code to compile without warnings on latest BSD (with clang) [ASH]
  * some unixes do not have scandir so we rolled our own in such a case [ASH]
  * possible buffer overflow missed with expanding site restrictions [ASH]
  * bug with scandir being undefined on certain unix flavors [ASH]
  * citer() and tr() didn't honor LF correctly in some situations [ASH]

[PREV] [TOP] [NEXT]

3.9.5p2

  Release Date: 07/04/15
  Status: Alpha
  
  New Features
  ------------
  * MySQL natively is now recognized within RhostMUSH's build utility [ASH]
    - Note: ./patch.sh will not patch this in as it did require a rewrite
      of the src/Makefile, bin/asksource.sh, and some additional files.
    - ./patch.sh (and patching) will not break backward compatibility.
  * enhanced_convtime toggles the processing of extra formats for the
    convtime() function [ASH]
  * ofparse() -- Handles all the various firstoff/allof/etc functions [ASH]
  * tree_character -- @admin param to define what the TREE character is
    for attribute trees.  Default of ` [ASH]
  * sqlping() to check if the database is alive and kicking or dead and
    stinky [ASH]
  * mysql_delay defaults to '0' for a paranoid hard-deny or 60-86400 for
    a delay on how long until the next attempt for a positive mysql
    connection is allowed [ASH]
  * parenstr() works like parenmatch() but takes a literal string [ASH]
  * @admin name_with_desc boolean toggle to enable showing names of
    things you look at [ASH]
  * esclist() and unesclist() to specify characters to escape [ASH]
  * added proxy_checker config param for semi-accurate proxy detect [ASH] 
  * elementpos() works like elements() but for characters [ASH]
  * anti-idling detection added via idle_stamp and idle_stamp_max [ASH]
  * @door/kick to kick a player off a connected door [ASH]
  * @door/push to push a player into a door [ASH]
  * %_<label> debug breakpoints are now available for coding [ASH]
  * TRACE, TRACE_COLOR and TRACE_COLOR_<label> for trace %_<label> [ASH]
  * TRACE_GREP will highlight red any trace output that matches [ASH]
  
  Changes
  ------------
  * pi() and e() optionally take an argument to specify the value for
    precision from 1 to float_precision (@list options system) [ASH]
  * div(), fdiv(), floordiv(), fmod(), modulo(), remainder(), and
    sub() now handle multiple arguments for Penn compatibility. [ASH]
  * For those who are used to Penn, 'DEBUG' is aliased to 'TRACE' [ASH]
  * textfile() takes optional arguments to sanitize output for use
    in various coding including an output separator [ASH]
  * hilite topic headers for help (as requested by many) [ASH]
  * mysql more vigerously tries to keep stale connections active [ASH]
  * the build script more cleanly does dynamic building of Makefile [ASH]
  * @halt has a /quiet switch now.
  * if getdate is found on the server, allow enhanced convtime [ASH]
  * enhancement to creplace() for a multi-char-position replace [ASH]
  * foreach passes the position now as '%1' [ASH]
  * zwho() by default listed type target belonging to a zone.  Now,
    it optionally lists players INSIDE any item in the zone [ASH]
  * mysql has been enhanced and security improved [ASH]
  * setq/setr with + and ! if fed a label, if label is 0-9 or a-z,
    it sets the register instead of setting a label. [ASH]
  * caplist() optionally capitalizes all parts of hyphonated words
    optionally if that word would have been capitalized [ASH]
  * pos(), totpos(), and numpos() optionally matches any of the 
    chars specified [ASH]
  * new parameter in examine_restrictive and it now restricts
    @decompile as well [ASH]
  * hardened sqlescape() to more vigerously do connect attempts [ASH]
  * @list rlevel dec for decimal display [ASH]
  * @list options value/boolean allows optional wildcard searches [ASH]
  * improved strmath() to handle a greater range of floating points [ASH]
  * optionally allow a time-delay on MySQL reconnections instead of
    a forced hard-deny via @sqlconnect to give some better control [ASH]
  * allow '.' and '+' as first characters for attribute names [ASH]
  * step() allows up to MAX_ARGS arguments now [ASH]
  * timezone option added to valid() [ASH]
  * parentable_control_lock controls if @locks are inheritable [ASH]
  * valid() types locktype and lockkey added for Penn compat [ASH]
  * total rework of the internal exec parser stack to properly handle
    some erraneous REGEXP pre-parsing syntax issues [ASH]
  * because people kept raising the VLIMIT past the recommended values
    while in GDBM mode, we have hard-locked it for 32/64 bit GDBM [ASH]
  * @reboot enforces binary's existance prior to actual rebooting [ASH]
  * remove() now allows multiple removals
  * enhanced content searches for help [ASH]
  * @grep now handles /parent switch [ASH]
  * ! shown on @function and @lfunction if a flag permission exists [ASH]
  * array() has optional output separator [ASH]
  * %q<LABEL> now also handles 0-9a-z registers [ASH]
  * first() and last() are now optionally ANSI-aware with 3rd arg [ASH]
  * @chownall now optionally allows a mix of specifying room, exit,
    thing or player.  It defaults to all types [ASH]
  * @door now allows interactive connections (ergo, it allows queueing) [ASH]
  * Broke out %m, %c, and %x from sub_override params [ASH]
  * cleanup of the sub_override parser [ASH]
    
  Bug Fixes
  ------------
  * mysql didn't update the include file for mysql correctly [ASH]
  * help entries didn't always add a CR to the LF [ASH]
  * small memory leak in door code [ASH]
  * Erraneous warnings removed when compiling with -O2 optimization [ASH]
  * ~/src/Makefile was broke on latest Debian builds because of an
    incompatibility with their /bin/sh (/bin/dash) binary [ASH]
  * argument handler issue when passing zero args to @include/override [ASH]
  * @hook did not show percent subs enabled/disabled properly on rare
    occurances [ASH]
  * @include didn't reset the state correctly in some instances [ASH]
  * @dolist/inline didn't properly parse nested args [ASH]
  * regedit*() functions could double-eval the $0-$99 subs.  This will
    break some backward compatability on anything that depended on the
    double evaluation but is a necessary evil for security plus now
    behaves like it should have to begin with (via the help) [ASH]
  * cd (connect dark) didn't follow permission restrictions right [ASH]
  * @admin function_access didn't work quite right on @lfunctions [ASH]
  * @limit with globals of unlimited for destory/vlimit was broke [ASH]
  * Further restrictions to @remote required for safe guarding [ASH]
  * small cleanup in formatting with @list funperm [ASH]
  * if a user-defined attribute was deleted the @function attached
    to it would no longer show up, now it does but gives warnings [ASH]
  * put a ceiling on function_recurse_limit to no longer bypass the
    debug STACK LIMIT (of 1000) as a worse case scenerio [ASH]
  * toggles did not showup when you @decompiled. [ASH]
  * @robot was broke with internal flag checks [ASH]
  * xinc/xdec for registers didn't understand labels [ASH]
  * EXFULLWIZATTR didn't work with @aflags wiz (and lower) [ASH]
  * array() didn't normalize %r's correctly [ASH]
  * crashbug in idle_stamp for noncommands [ASH]
  * CYGWIN should work with compiling Rhost on Windows platforms [ASH]
  * the /preserve switch to @chownall didn't work properly [ASH]
  * @chownall and @chown did not properly strip some of the staff
    flags as it should have when /preserve was not specified [ASH]
  * weird issue fixed where it thought max players reached when didn't [ASH]

[PREV] [TOP] [NEXT]

3.9.5p3

  Release Date: 12/13/15
  Status: Alpha
  
  New Features
  ------------
  * ifelse_compat option that makes if()/ifelse()/@skip/@if etc. behave
    as TRUE in case the first argument is a normal string. [AMB]
  * execscript() with matching sideeffect value and @power execscript to
    allow executing external script as a function with appropiate 
    safeguards for script name and arguments [ASH]
  * penn_setq -- Penn compatibility option for labels with setq/setr. [ASH]
  * customized connect screens so you may add custom commands that a player
    can type at the connect screen. [ASH]
  * object id's and objid()/%: for all features that'd handle %#. [ASH]
  * isobjid() added. [ASH]
  * zonecmd() added (side-effect of @zone) [ASH]
  * VISIBLE options to lcon() and xcon() to check only visible items [ASH]
  * searchobjid(), and searchngobjid() for objid results on searches [ASH]
  * examine has /cluster switch for examining clusters [ASH]
  * @zone has /replace and /list switches.  zonecmd() has similar [ASH]
  * Startmush is much more optimized for flatfile loading if required [ASH]
  * @newpassword optionally allows /des switch to enforce DES passwords [ASH]
  * @admin delim_null param allows '@@' to be seen as an empty separator
    for all arguments with an output separator [ASH]
  * REQUIRE_TREES flag when set requires the flag method to set attribs
    on the target that contain a tree character [ASH]
  * function_max to cap a ceiling on @functions allowed (1000 default) [ASH]
  * parent_follow @admin param (default to 1/yes) to allow control of target
    to see entire parent chain [ASH]
  * @list advbuffers to show filename/linenumber of the allocation [ASH]
  * Added FORMATTING @power that when set on target allows %0-%3 to be
    passed to @conformat, @exitformat, and @Nameformat [ASH]
  * Added new 'minimal-DBs' directory in order to ship multiple different
    minimal DBs. [AMB]
  * Added new Amb-MinimalRhost DB to the 'minimal-DBs' directory. [AMB]
  * Added /overwrite switch to @snapshot to overwrite existing files [ASH]
  * Added /unall to @snapshot to unload a list of targets [ASH]
  * invformat for inventory formatting [ASH]
  * @lset to set permissions for locks [ASH]
  * lset() added to mirror @lset but as a sideeffect [ASH]
  * @label added to help integrate %_ labels into code [ASH]
  * ruler() added to give a positional ruler for attribute content [ASH]
  
  Changes
  ------------
  * TRACE_GREP attribute if set REGEXP will do regular expression matching on
    the trace output for all trace output. [ASH]
  * modified system uptime to hard-query the utmp system file for
    compatibility and performance [ASH]
  * added /towner and /ttype switches to @purge to combine time and type/owner
    for enhanced purging [ASH]
  * Laxed some restrictions on @admin params [ASH]
  * optional 3rd argument to parenmatch() does pretty-print of mush code [ASH]
  * securex() and escapex() now optionally accept 'a' as argument to ignore
    ansi [ASH]
  * @dynhelp has a /nolabel switch to snarf the hilighted index values [ASH]
  * Improved compatibility with execscript [ASH]
  * NPEMIT(), like PEMIT(), now handles 3 arguments. [ASH]
  * enhanced argument range check on all regedit*() functions [ASH]
  * added '*' option to printf that allows cutting values from the right [ASH]
  * @list functions accepts sub-options 'user', 'local', and 'built-in' [ASH]
  * improved help for attrib formatting and added a plug in normal help [ASH]
  * @wipe, @cluster/wipe, wipe(), and cluster_wipe() now take optional 
    owner argument to wipe only attributes owned by owner [ASH]
  * modified elock() to specify default values for locks [ASH]
  * the listen argument to lcon()/xcon() included $commands since that
    was seen as listening in @sweeps, but we have broken this out now so
    that 'LISTEN' is truly listening and 'CMDLISTEN' is the old behavior [ASH]
  * lwho() is now objid aware optionally [ASH]
  * lexits(), lcon(), xcon(), lrooms(), lparents(), lzone(), zwho(), and 
    children() are now objid aware [ASH]
  * sortlist() now handles 'm' for merging. [ASH]
  * @quitprogram has /quiet switch [ASH]
  * programmer() optionally returns target/attrib pair of program call [ASH]
  * @name added to @lock/twink as what you can do [ASH]
  * @progreset allows you to optionally modify in-action someone's active
    @program prompt [ASH]
  * Permissions on @function laxed to allow full access to wizards [ASH]
  * added new time formats for convtime() and enhanced_convtime [ASH]
  * @progprompt hard-limited to 80 characters and now allows ANSI [ASH]
  * ltoggles()/hastoggle() laxed to mimic lflags/hasflag perms [ASH]
  * logout_cmd_access if option set 'DARK' will be ignored and bypassed [ASH]
  * newpass_god modified to reset #1's password in-game if set [ASH]
  * 'w' option for / / in printf() allows cutting on line when |" used [ASH]
  * '<' and '>' values to null current value if prevous/next value null [ASH]
  * repeat() has optional third argument for better ansi handling [ASH]
  * printf() would print a blank line if the last argument for each field
    was a carriage return.  New option '.' for each field will now
    supress the last line if all arguments are empty for that line [ASH]
  * writable() is more useful with how it works for non-existant attribs [ASH]
  * logtofile() optionally can write to the mush system log [ASH]
  * LOGGED attribute flag now logs the last command issued to change it [ASH]
  * modified chkgarbage() to handle a (b)oth option [ASH]
  * left() and right() are now optionally ansi-aware [ASH]
  * @register has /message switch to immediately message player the pass [ASH]
  * Exits that are @powered FULLTEL will allow variable exits to assume
    'linkable' to any valid destination [ASH]
  * make config/confsource now saves your last state you compiled with [ASH]
  * output_limit defaults now based on LBUF size [ASH]
  * Moved minimal_db into new 'minimal-DBs' folder [AMB]
  * added advanced buffer labeling to exec calls [ASH]
  * @snapshot/del now takes multiple arguments [ASH]
  * Added /quiet switch to @pipe [ASH]
  * Added low/high ranges to strmath() [ASH]
  * cleanup of the sideeffect handler to be more verbose [ASH]
  * PARIS mode WHO/DOING (alternate who) is notified on @list options [ASH]
  * increase %_ labels to 1000 total instead of 100 [ASH]
  * 5th arg to keeptype() and remtype() to return dbref#'s [ASH]
  * improved featureset to sortlist() for merging [ASH]
  * modified @edit so that /check or sets are higlighted if a change 
    actually occured with the first word 'Set' or 'Check' [ASH]
  * change over from strtok to strtok_r throughout source code [ASH]
  * keeptype(), remtype(), keepflags(), remflags() handle OBJID [ASH]
  * foreach() is now optionally ansi-aware [ASH]
  * added /ruler to @label to mimic ruler() functionality [ASH]
  * asc() now handles optional second argument for 3 char padding [ASH]
  * added 'fake' config params lbuf_size, mbuf_size, and sbuf_size to
    the config() function for mortals to pull values [ASH]
    
  Bug Fixes
  ------------
  * columns() did not default justification to 'L'eft if left blank with 
    4 or more arguments [ASH]
  * foreach() had a possibility of overwriting a static buffer in-use
    which could return erraneous results (non-crash-bug) [ASH]
  * Ancient systems (CentOS 4/5) didn't successfully handle MTU values [ASH]
  * enhanced_convtime didn't handle all conditions properly [ASH]
  * bug with streval which didn't process right on non-player evaluation [ASH]
  * minor glitch if an object set STOP and SHOWFAILCMD [ASH]
  * minor glitch with @snapshot/loading over a player already connected [ASH]
  * flag_access_set, flag_access_unset, flag_access_see were case sensitive
    and they shouldn't be [ASH]
  * possible crash bug in @dbclean if there's a cached attribute that
    was not in-use properly [ASH]
  * small dangling check fix for %<###> ascii encoding [ASH]
  * mailsend() was too restrictive for non-player types [ASH]
  * cleanup of the idle_checker to always make current hash last in list [ASH]
  * crash bug if error.txt file was empty [ASH]
  * possible memory leak in extractword() in certain conditions [ASH]
  * @tel/list didn't handle a comma separator properly for source [ASH]
  * permission issue with guildmaster and setting attributes [ASH]
  * memory leak on rare occurances of lookup_site [ASH]
  * internal function for player lookup was not objid aware [ASH]
  * parents() was too restrictive for thing getting own parent tree [ASH]
  * Long standing issue with left()/right() with arg of '0' cut string [ASH]
  * missing free when name_with_desc enabled [ASH]
  * @sudo didn't handle @power/@depower like @fo [ASH]
  * Inventory was not fully Reality Level aware nor color aware [ASH]
  * invalid null termination in mix(), ltoggles(), and squish() [ASH]
  * rand() didn't handle floating point quite right and cleaned up code [ASH]
  * FreeBSD compatibility change for make/gmake in master Makefile [ASH]
  * issue with left() and buffering [ASH]
  * convert strtok to strtok_r in conf.c to avoid static buffer clobbers [ASH]
  * dark exits didn't work properly with sees() [ASH]
  * fixed ruler() and introduced internal function for notify quiet to
    handle ansi [ASH]
  * enforce @label to use lowercase for all labels [ASH]
  * objid took localtime instead of GMtime [ASH]
    - NOTE:  For compatibility to existing behavior, set: objid_localtime 1
  * safer_ufun didn't take some conditions into consideration [ASH]
  * erraneous ansi-normal on cname() if the name was not ansified [ASH]
[PREV] [TOP] [NEXT]

:

  Command: :<message>
  Displays <message> to everyone in your current room, preceded by your name
  and a space.  Example: the command ':jumps for joy' produces
  '<yourname> jumps for joy'.
  
  If you have a space after the ':' it will use the ';' format instead.
  
  See Also: page, pose, say, whisper, ;, "
  
[PREV] [TOP] [NEXT]

;

  Command: ;<message>
  This command is much like the ':' command, except that no space is inserted
  between your name and the action.  Example: the command ';'s watch beeps.'
  produces '<yourname>'s watch beeps.'.
 
  Warning: This command does not work in command lists run from an attribute
  because the ';' is treated as the command separator.  Use pose/nospace
  instead.
  
  If you have a space after the ';' it will use the ':' format instead.
 
  See Also: page, pose, say, whisper, :, "
  
[PREV] [TOP] [NEXT]

>

  Command: ><attribute> <object in cluster>[=<value>]
  Synonym: @cluster/set <object> = <attribute>:[<value>]
   
  Sets the attribute named <attribute> on <object> to <value>.  If
  <attribute> is not a predefined attribute (like ofail or va), then it is
  created.  Attributes so created are called user-named attributes.
  Attribute names may only contain letters, numbers, and the characters
  < -_.@#$^&*~?=+| >, and must start with a letter.  The names of user-named
  attributes may not be abbreviated (an attempt to get the value of the
  attribute will fail, and an attempt to set will create a new attribute).
  
  The object that is chosen will be either the object in the cluster that
  already contains the attribute, or the object in the cluster with the
  least number of attributes currently on it.
  
  Specifying an object not in the cluster will return an error.
  
  Attributes must start with an alpha character, or in special cases any
  of the following characters: ~_#.+
  
  Example:
    >myattr ClusterObj=This is my data on attribute 'myattr'
    Set.
   
  See Also: @set, @cluster set, VATOVZ, ZATOZZ, &

[PREV] [TOP] [NEXT]

@@

  Command: @@ <args>
 
  This command does nothing, therefore it is useful for putting comments into
  a MUSH program.  Be careful that ()'s and {}'s in the (otherwise ignored)
  arguments are nested correctly, lest your command-ending ; be trapped
  inside.
 
  Example:
     @va me=$foobar *:@fo #1234=%0;@@ This controls my foobar puppet.
  
  See Also: @break, @assert, idle
  
[PREV] [TOP] [NEXT]

@@()

  Function: @@(<string>)
  
  This function will eat all output from <string>.  This is handy if you want
  to place comments within functions.  Anything within @@() is NOT evaluated.
  
  Example:
    > say [@@(this is a test[setq(0,test)])]- [r(0)]
    You say "- "
  
  See Also: localize(), eval(), null(), privatize()
  
[PREV] [TOP] [NEXT]

@aahear

  Command: @aahear[/<switch>] <object> = <command-list>
  Attribute: Aahear
 
  An Aahear on an object is activated whenever the listen pattern
  matches anything done/said by anything else in the room, including
  itself.  (The Ahear ignores itself, helpful for keeping machines from 
  triggering itself).  
  
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @aahear listener = "I heard someone (maybe me?) say the word!
   
  See Also: @ahear, @amhear, @listen
  
[PREV] [TOP] [NEXT]

@aclone

  Command: @aclone[/<switch>] <object> = <command-list>
  Attribute: Aclone
 
  Sets the actions to be taken by a new object that has just been created
  as the result of a @clone command.  The contents of the Aclone attribute
  are run by the new object and not by the old object.
 
  This attribute is only meaningful for things, and will never be
  automatically triggered on other object types.
  
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @aclone Time bomb = @wait 600=@trig me/va;@wait 10=@trig me/vb
           @va time bomb = :EXPLODES with a thundering roar;@destroy me
           @vb time bomb = :ticks.; @wait 10=@trig me/vb
  
  See Also: @clone
  
[PREV] [TOP] [NEXT]

@aconnect

  Command: @aconnect[/<switch>] <object> = <command-list>
  Attribute: Aconnect
 
  Sets the actions to be taken by a player right after connecting to the
  game.  This attribute is only meaningful for players, and will never be
  automatically triggered on other object types.
  
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
  
  '1' is passed as %0 if you are already connected when you connect, and
  '0' is passed as %0 if it's your only connection.
   
  Example: @aconnect me = check.my.mailbox
  
  See Also: @adisconnect
  
[PREV] [TOP] [NEXT]

@adescribe

  Command: @adescribe[/<switch>] <object> = <command-list>
  Attribute: Adescribe
 
  Sets the actions to be taken when <object> is looked at.
  
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @adesc kitten = :rubs against %n's legs affectionately.
  
  See Also: look, @desc, @idesc, @odesc, taste, @sataste, touch, @satouch,
            listen, @salisten, smell, @sasmell
  
[PREV] [TOP] [NEXT]

@adfail

  Command: @adfail[/<switch>] <object> = <command-list>
  Attribute: Adfail
 
  Sets the action to be taken by an object when someone tries to drop it
  but fails because they didn't pass the object's drop lock.
  
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @adfail sword = @name me=Cursed Sword;:laughs maniacally.
  
  See Also: drop, @dfail, @odfail, @lock
  
[PREV] [TOP] [NEXT]

@adisconnect

  Command: @adisconnect[/<switch>] <object> = <command-list>
  Attribute: Adisconnect
  Sets the actions to be taken by a player right after disconnecting from
  the game.
 
  This attribute is only meaningful for players, and will never be
  automatically triggered on other object types.
  
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
  
  There are three arguments passed to the @adisconnect.
      %0 is the reason for your disconnect (netdeath, quit, logout, etc)
      %1 is the total time in seconds you were connected for that instance.
      %2 is '0' if it's your only connection, '1' if you're connected more 
         than once.
   
  Example: @adisconnect me = home
  
  See Also: @aconnect
  
[PREV] [TOP] [NEXT]

@adrop

  Command: @adrop[/<switch>] <object> = <command-list>
  Attribute: Adrop
 
  Sets the action to be taken by an object when it is dropped, or by an exit
  when it is successfully used.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @adrop plastique = kill %n=100; @destroy me
  
  See Also: drop, @drop, @odrop, DROP-TO, EXITS
  
[PREV] [TOP] [NEXT]

@aefail

  Command: @aefail[/<switch>] <object> = <command-list>
  Attribute: Aefail
 
  Sets the action to be taken by an object when someone tries to enter it
  but fails because the object is not ENTER_OK or the player fails the
  object's enter lock.
 
  The enter lock only affects the 'enter' command and its aliases (set via
  the @ealias command), it does not affect exits that lead to the object or
  teleporting in.
 
  This attribute is meaningful for players and things, and will never be
  automatically triggered on rooms or exits.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @aefail car = @emit ;'s alarm starts wailing when %n tries
                         to break in.
  
  See Also: @aenter, @efail, @ealias, @enter, @oefail, @oenter, enter,
            ENTER_OK
  
[PREV] [TOP] [NEXT]

@aenter

  Command: @aenter[/<switch>] <object> = <command-list>
  Attribute: Aenter
 
  Sets the action to be taken by an object or room when someone enters it,
  whether by using an exit, the enter or leave commands, or by teleporting.
 
  This attribute is meaningful for players, things, and rooms, and will never
  be automatically triggered on exits.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @aenter car = :starts its engine, eagerly awaiting a road trip.;
                         "Beep Beep!
  
  See Also: enter, @enter, @oenter, ENTER_OK
  
[PREV] [TOP] [NEXT]

@afail

  Command: @afail[/<switch>] <object> = <command-list>
  Attribute: Afail
 
  Sets the commands to be performed by <object> when one of these events
  occurs:
 
    - For exits: Someone tries to traverse the exit but cannot because they
      fail the exit's default lock or the exit is not linked.
    - For players and things: Someone tries to pick up the object but cannot
      because they fail the object's default lock.
    - For rooms, players, and things: Someone looks around inside the room,
      player, or thing and fails the object's default lock.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example:
    > @afail vase = :falls to the floor and smashes to pieces.;@destroy me
  
  See Also: @fail, @ofail, FAILURE
  
[PREV] [TOP] [NEXT]

@agfail

  Command: @agfail[/<switch>] <object> = <command-list>
  Attribute: Agfail
 
  Sets the action to be taken by an object when someone tries to give it
  away but fails because they didn't pass the object's give lock.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @agfail sword = @name me=Cursed Sword;:laughs maniacally.
  
  See Also: give, @gfail, @ogfail, @lock
  
[PREV] [TOP] [NEXT]

@ahear

  Command: @ahear[/<switch>] <object> = <command-list>
  Attribute: Ahear
 
  Sets the actions to be taken after the object hears a string that matches
  the pattern in the Listen attribute which was not produced by the object
  itself.  Messages that are produced by the object itself are ignored.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @ahear clock = "The time is now [time()].  >> BONNNNGGGGG <<
  
  See Also: @aahear, @amhear, @listen
  
[PREV] [TOP] [NEXT]

@akill

  Command: @akill[/<switch>] <object> = <command-list>
  Attribute: Akill
 
  Sets the actions to be taken by an object after it is killed and has
  returned to its home.
 
  This attribute is only meaningful for players and things, and will never be
  automatically triggered on other object types.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @akill lion = south; :leaps onto %n, roaring loudly.;kill %n=100
  
  See Also: kill, @kill and @okill, BEING KILLED, IMMORTAL, ROYALTY
  
[PREV] [TOP] [NEXT]

@aleave

  Command: @aleave[/<switch>] <object> = <command-list>
  Attribute: Aleave
 
  Sets the action to be taken by an object or room when someone leaves it,
  whether by using an exit, the enter or leave commands, or by teleporting.
 
  This attribute is meaningful for players, things, and rooms, and will never
  be automatically triggered on exits.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @aleave car = :stops to let %n out.;:revs its engine, hoping
                         another brave soul would like a ride.
  
  See Also: leave, @leave, @oleave
  
[PREV] [TOP] [NEXT]

@alfail

  Command: @alfail[/<switch>] <object> = <command-list>
  Attribute: Alfail
 
  Sets the action to be taken by an object when someone tries to leave it
  but fails because the player fails the object's leave lock.
 
  The leave lock only affects the 'leave' command and its aliases (set via
  the @ealias command), it does not affect going home, using an exit in the
  location, or teleporting out.
 
  This attribute is meaningful for players and things, and will never be
  automatically triggered on rooms or exits.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @alfail box = :rattles around as %n tries to escape.
  
  See Also: @aleave, @lalias, @leave, @lfail, @oleave, @olfail, leave
  
[PREV] [TOP] [NEXT]

@alias

  Command: @alias[/<switch>] <player> = <name>
  Attribute: Alias
 
  Provides an alternate name by which the player is known.  The alternate
  name is only used for players when referenced as '*<name>' or by commands
  that only take player names (such as page or @stats).  You may not set
  an alias on any other object type.
 
  When setting an alias, the alias is checked to see that it is both a legal
  player name and not already in use.  Only if both checks succeed is the
  alias set.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
  
  See Also: @name, @protect, listprotection()
  
[PREV] [TOP] [NEXT]

@amhear

  Command: @amhear[/<switch>] <object> = <command-list>
  Attribute: Amhear
 
  Sets the actions to be taken after the object hears a string that matches
  the pattern in the Listen attribute which was produced by the object
  itself.
  Messages that are produced by anything other than the object itself are
  ignored.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @amhear listener = "Wait a minute.  I said the trigger word!
  
  See Also: @aahear, @ahear, @listen
  
[PREV] [TOP] [NEXT]

@amove

  Command: @amove[/<switch>] <object> = <command-list>
  Attribute: Amove
 
  Sets the action to be taken by an object whenever it moves from one 
  location to another, whether by using an exit, entering or leaving an
  object, teleporting, or going home.
 
  This attribute is meaningful for players, and things and will never be
  automatically triggered on other object types.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @amove car = @vz me=[extract(%vz,1,19)] [loc(me)]
  
  See Also: @move, @omove
  
[PREV] [TOP] [NEXT]

@ansiname

  Command: @ansiname[/<switch>] <object> = <string>
  Attribute: AnsiName
  
  This sets the ansi codes for the particular object.  As long as that object
  is allowed to have ansi codes (individually or globally) then whatever
  color codes you put in @ansiname will be the color of the name of the
  object.  
  
  This only will effect looking, inventory, and contents.  
  
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
  
  If you wish pose, say, and @wall to ansifi your name, set the VARIABLE
  @toggle on yourself.
  
  Example: 
    > @ansiname object=hr
    Set.
  
  Note:  If the object is @toggled with EXTANSI, then ansiname can hold
         literal ansicodes.  Check help on @extansi for this.  
  
  See Also: @name, @extansi, @caption, ANSINAME, ansi(), EXTANSI TOGGLE, 
            @titlecaption

[PREV] [TOP] [NEXT]

@apay

  Command: @apay[/<switch>] <object> = <command-list>
  Attribute: Apay
 
  Sets the actions to be taken after the object is given the number of coins
  specified in its Cost attribute.  If the giver tries to give more than that
  number of coins, the excess is refunded, and if less than the necessary
  amount is given then it is all given back and a snide message is sent to
  the giver.
 
  This attribute is only meaningful for players and things, and will never be
  automatically triggered on other object types.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @apay Coke machine = @clone Can of Coke; :drops a can on the
                                floor.
  
  See Also: give, @cost, @opay, @pay
  
[PREV] [TOP] [NEXT]

@arfail

  Command: @arfail[/<switch>] <object> = <command-list>
  Attribute: Arfail
 
  Sets the action to be taken by an object when someone tries to give it
  something that fails its give lock.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @arfail merchant = "I don't buy such junk.  Begone!;
                              @tel %#=cheater_exit
  
  See Also: give, @agfail, @gfail, @ogfail, @orfail, @rfail, @lock
  
[PREV] [TOP] [NEXT]

@asfail

  Command: @asfail[/<switch>] <object> = <command-list>
  Attribute: Asfail
  
  Sets the action to be taken when someone fails to pass the SpeechLock
  on a room set AUDITORIUM.
  
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @asfail here = @pemit %#=I warned you no talking!;@tel %#=home
  
  See Also: @sfail, @lock, AUDITORIUM
  
[PREV] [TOP] [NEXT]

@assert

  Command: @assert <value> [=<command(s)>]
  
  The @assert command is used to optionally break out of any processing of
  commands.  The possible values to pass to it are zero (0) or non-zero
  (which is any number but zero (0)...).  If a non-zero is passed to this 
  command, then it treats it as a NOOP and continues processing as if nothing 
  occurred.  However, if a zero number is passed to this command.  The 
  processing of the command stops there and no further processing is done.
  
  Available Switches:
    /queued -- process the <commands(s)> by queuing them (default).
    /inline -- process the <commands(s)> inline and do not queue them.
  
  This works opposite of @break.
  
  Example:
    > @create obj
    > @set obj=!halt inherit
    > @va obj=$test *:@pemit %#=Before assert;@assert %0;@pemit %#=After assert
    > test 1
      Before assert
      After assert
    > test 0
      Before assert
  
  See Also: $-COMMAND, @@, @break, @skip

[PREV] [TOP] [NEXT]

@asuccess

  Command: @asuccess[/<switch>] <object> = <command-list>
  Attribute: Asucc
 
  Sets the actions to be taken by an object when someone successfully picks
  it up (because they passed the lock), by an exit when someone passes
  through it, or when someone looks at a room and passes the room's lock.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @asucc kitten = :climbs up your sleeve and nuzzles your face.
  
  See Also: @osucc, @success, SUCCESS
  
[PREV] [TOP] [NEXT]

@atfail

  Command: @atfail[/<switch>] <object> = <command-list>
  Attribute: Atfail
 
  Sets the action to be taken by an object when someone tries to teleport
  there but fails.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @atfail here = @page [owner(me)]=%N tried to teleport here.
  
  See Also: @teleport, @tfail, @otfail, @lock
  
[PREV] [TOP] [NEXT]

@atofail

  Command: @atofail[/<switch>] <object> = <command-list>
  Attribute: Atofail
  
  Sets the action to be taken by an object when someone tries to teleport
  out from it but fails.
  
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example:   @atofail here= @page [owner(me)]=%n tried to teleport out.
  
  See Also: @teleport, @tofail, @otofail, @lock
  
[PREV] [TOP] [NEXT]

@atport

  Command: @atport[/<switch>] <object> = <command-list>
  Attribute: Atport
 
  Sets the actions to be performed by object whenever it teleports.
  The actions are performed after the object moves to its new location.
 
  This attribute is only meaningful for players and things, and will never be
  automatically triggered on other object types.
  
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @atport me = &TEL.COUNT me=add(v(TEL.COUNT),1)
 
  See Also: @otport, @oxtport, @tport, @teleport
  
[PREV] [TOP] [NEXT]

@attach

  Command: @include[/<switch>] <object>/<attr> [=<arg1>,<arg2>,...,<argN>]
           @attach[/<switch>]  <object>/<attr> [=<arg1>,<arg2>,...,<argN>]
  
  Note:  @attach is an alias to @include/override.
  
  The @include command can only be issued in a queue.  Ergo, if it is to be 
  issued at the player command line, it must be queued first (like with @wait)
  
  The @include command will insert, at the location of the @include, any 
  commands that were stored in the specified attribute on the specified 
  object.  You must have control over the object and be able to see the
  attribute to be able to fetch the information.  This passes all the standard
  arguments (%0-%9) and can be overridden by arguments you pass to it.  After
  the @included text, the %0-%9 variables will return to what it was prior
  to the @include.
  
  This behaves similar to @trigger, except it will insert the commands in
  order and not queue them up.
  
  @include honors @break/@assert.  You can have at most 10 @includes.  You
  can only nest to 3 levels deep.
  
  @admin params includecnt and includenest handle @include's flexibility.
  
  The following switches exist for @include:
    /command   - bypass the $command/^listen portion of the attribute.
    /clearregs - clear the registers prior to calling included attribute.
                 Note: this automatically sets the localize option.
    /localize  - localizes the registers for the include duration.
    /nobreak   - disregard @break/@assert inside the includes from outside.
    /target    - Use the target as executor instead of executor of @include
                 Note: You must control target to use this.
    /override  - If any arguments are passed to @include to override the
                 default, this will disable all default arguments.
    
  {see @include2 for examples}

[PREV] [TOP] [NEXT]

@aufail

  Command: @aufail[/<switch>] <object> = <command-list>
  Attribute: Aufail
 
  Sets the list of commands to be run when someone 'use's the object but
  fails the object's use lock.  Note that the other functions controlled
  by the use lock (paying, listening, and $-commands) do not trigger
  Aufail.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @aufail robot = "I _told_ you to leave me alone; kill %n=100
 
  See Also: @oufail, @ufail, @use
  
[PREV] [TOP] [NEXT]

@ause

  Command: @ause[/<switch>] <object> = <command-list>
  Attribute: Ause
 
  Sets the actions to be taken when someone uses the object with the use
  command.
 
  This attribute is only meaningful for players and things, and will never be
  automatically triggered on other object types.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @ause grenade = :EXPLODES with a thundering roar; kill %n=100;
                           @destroy me
  See Also: use, @ouse, @use
  
[PREV] [TOP] [NEXT]

@away

  Command: @away[/<switch>] <object> = <message>
  Attribute: Away
 
  This attribute is sent as a message to anyone who tries to page you when 
  you are not connected. %# is used for the person paging you and not you
  yourself.
 
  This attribute is only meaningful for players, and will never be
  automatically referenced on other object types.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @away me = Hey, I'm not even connected.  So why are you paging me?
  
  See Also: @idle, @reject, page
  
[PREV] [TOP] [NEXT]

@break

  Command: @break[/switch] <value> [=<command(s)>]
  
  The @break command is used to optionally break out of any processing of
  commands.  The possible values to pass to it are zero (0) or non-zero
  (which is any number but zero (0)...).  If a zero is passed to this command,
  then it treats it as a NOOP and continues processing as if nothing occurred.
  However, if a non-zero number is passed to this command.  The processing
  of the command stops there and no further processing is done.
  
  Available Switches:
    /queued -- process the <commands(s)> by queuing them (default).
    /inline -- process the <commands(s)> inline and do not queue them.
  
  Example:
    > @create obj
    > @set obj=!halt inherit
    > @va obj=$testme *:@pemit %#=Before break;@break %0;@pemit %#=After break
    > testme 0
      Before break
      After break
    > testme 1
      Before break
  
  See Also: $-COMMAND, @@, @assert, @skip
  
[PREV] [TOP] [NEXT]

@caption

  Command: @caption[/<switch>] <object> = <string>
  Attribute: Caption
  
  This attribute sets up a caption that is used when a player is looked at.
  This 'caption' is appended to their name.  You may set a large caption,
  but only the first 40 characters will be used.  If you do not use the
  ZENTY_ANSI compile time option then ANSI is also stripped.  Carrage 
  returns will be stripped.
  
  This is only used for players and is ignored for every other data type.
  
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
  
  Example: 
    > lo me
    Tinyplayer(#123Pc)
    You see nothing special.
    > @caption me=the silly one.
    > lo me
    Tinyplayer(#123Pc), the silly one.
    You see nothing special.
    > @set me=myopic
    > lo me
    Tinyplayer, the silly one.
    You see nothing special.
  
  See Also: @ansiname, @extansi, @name, @titlecaption

[PREV] [TOP] [NEXT]

@channel

  Topic: channels/comsystem
  
  NOTE: If this has been disabled, check 'comhelp' or '+help' for the new one.
  
  The built in channel system that RhostMUSH has is a simple design
  based off standard MUSE com systems.  The format for each is
  as follows:
  
       +chan[nel] +channel-name  (add yourself to a channel)
       +chan[nel] -channel-name  (remove yourself from a channel)
       +chan[nel]                (display all your channels)
       +com channel=who          (see who is on a given channel)
       +com channel=message      ('talk' on a given channel)
  
  (help channel2 to continue)

[PREV] [TOP] [NEXT]

@channel2

  Topic: channels/comsystem
  
  NOTE: If this has been disabled, check 'comhelp' or '+help' for the new one.
  
  The channel system is case sensitive and does recognize various
  formatting by the following special cases.
  
       :     this poses a message on the channel.
       ;     this possessive poses on the channel.
       "     this speaks on the channel.
  
          Syntax:  +com channel=[format]message
          Example: +com channel=:message (poses on the channel)
  
  All channels cost money (currently 5 gold a pop) except for
  'sting' (a flame-type channel for insults) and 'public' for
  general discussions.  Please note that any insults slung on
  sting REMAIN on sting.  This will be enforced. 
  
[PREV] [TOP] [NEXT]

@charges

  Command: @charges[/<switch>] <object> = <count>
  Attribute: Charges
 
  This attribute allows you to limit the number of times an object can be
  used.  If there is a charges attribute it is decremented each time an
  action on the object is triggered.  Once it reaches zero, normal triggering
  stops and the Runout attribute (if one is present) is run instead.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @charges Fireball wand = 5
  
  See Also: @runout
  
[PREV] [TOP] [NEXT]

@chown

  Command: @chown <object>[=<player>]
           @chown <object>/<attr>[=<player>]
  The first form changes the ownership of <object> to <player> (default is
  to yourself).  Objects may be things, rooms or exits. To chown things, you
  have to be carrying the thing. For rooms or exits, you have to be in the
  room. Objects must have the CHOWN_OK flag set before they may be @chowned.
  In a room, the command used must be @chown here = <name>, and for an object,
  you must be very specific.
 
  The second form changes the ownership of the indicated attribute on <object>
  to <player> (default is the owner of the object).  You may only @chown
  unlocked attributes.  You may @chown unlocked attributes on objects that
  you own to yourself, and you may also @chown attributes that you own on
  objects owned by others to the owner of the object.
 
  When an object is @chowned, all unlocked attributes on the object are
  automatically @chowned as well, locked attributes remain owned by their
  original owners.
 
  The HALTED flag is automatically set on the new copy of the object.
  Players can't be @chowned; they always own themselves. 
  
  See Also: @lock, @Unlock, CHOWN_OK, ATTRIBUTE OWNERSHIP
  
[PREV] [TOP] [NEXT]

@clone

  Command: @clone[/<switches>] <object>[=<newname/cost>]
 
  Creates an exact duplicate of <object> that is owned by you and (for things
  and exits) puts it in your current location.  You may have the object put
  in your inventory (or your exitlist in the case of cloning exits) by using
  the /inventory switch.
 
  You may clone your own objects, plus VISUAL objects owned by others.
  The INHERIT and ROYALTY bits of the (new) object are cleared when the object
  is cloned.  If <newname> is specified, it is used as the name instead of
  the original name.
 
  If you clone a linked exit, an attempt is made to link the clone to the
  same location.  Except when using the /inventory switch, you can only clone
  exits when you own your current location.
 
  If you clone a room with a drop-to, an attempt is made to link the drop-to
  to the same location.
 
  If the original object was owned by you, then the ACLONE attribute is run
  in the new attribute, otherwise the new object is set HALTED.  Exits and
  contents of cloned objects are not cloned.
  
{ 'help @clone2' for more }
  
[PREV] [TOP] [NEXT]

@clone2

  The following switches are available:
     /cost       - Treat the argument after the = as the cost of the new
                   object, not the name.
     /inherit    - Don't reset the INHERIT bit on the new object.
     /inventory  - Create the new object in your inventory (or your exitlist,
                   in the case of cloning exits).
     /location   - Create the new object in your location (default).
     /parent     - Set the new object's parent to be the template object and
                   don't copy the attributes.
   
  You may use the lastcreate() function to see the last room that @clone'd.
  This would be based on the type of thing you @cloned.
  
  See Also: @create, @decompile, @destroy, VISUAL, lastcreate()
  
[PREV] [TOP] [NEXT]

@cluster

  Command: @cluster[/<switch>] [[<arguments>][=<values>]]
  
  The @cluster command is used to 'cluster' or link together a set of 2 or
  more dbref#'s into a single entity to be used and accessed by a set of
  clustering commands and functions as the aforementioned single entity.
  This is used to allow more flexability of data storage, better organization
  and a way to allow better data handling of the database as a whole.
  
  For more help on what @cluster can do, please refer to the following
  switches available.  Individidual help is available with 
  'help @cluster <switch>'
  
  Switch      Description                Switch        Description
  ---------   -------------------------- -----------   -----------------------
    /new    - start new cluster          /add        - add dbref# to a cluster
    /del    - delete dbref# from cluster /clear      - purge cluster
    /list   - list cluster specifics     /threshold  - set threshold limit
    /action - set threshold action       /edit       - edit attr on cluster
    /set    - set/unset attr on cluster  /repair     - repair cluster
    /grep   - grep cluster for match     /reaction   - edit action on cluster
    /cut    - 'cut' dbref# from cluster  /trigger    - trigger attr in cluster
    /func   - Specify function action    /regexp     - use regexp pattern match
    /wipe   - Wipe attrib(s) in cluster  /owner      - Owner check for /wipe
                                         /preserve   - Preserve /wipe pattern
   
  See Also:  clusters, cluster functions, cluster commands, >

[PREV] [TOP] [NEXT]

@cluster action

  Command: @cluster/action <cluster object>=<string>
           @cluster/action/func <cluster object>=<string>
  
  The action switch sets the action that will be executed on the cluster
  once the threshhold value has been reached.  The threshhold value
  is defined as the LOWEST attribute count on any item currently in
  the cluster.  The action is only executed once every 10 seconds to
  avoid recursive based attacks.
  
  The /func switch will set the FUNCTION action instead of normal action.
  The function action has precedence over the normal action.
  
  Example:
    > @cluster/action #3683=@pemit [owner(me)]=Triggered!
    Cluster action for cluster #3683 set to: @pemit [owner(me)]=Triggered!
  
  See Also:  clusters, cluster functions, cluster commands, >

[PREV] [TOP] [NEXT]

@cluster action func

  Command: @cluster/action <cluster object>=<string>
           @cluster/action/func <cluster object>=<string>
  
  The action switch sets the action that will be executed on the cluster
  once the threshhold value has been reached.  The threshhold value
  is defined as the LOWEST attribute count on any item currently in
  the cluster.  The action is only executed once every 10 seconds to
  avoid recursive based attacks.
  
  The /func switch will set the FUNCTION action instead of normal action.
  The function action has precedence over the normal action.
  
  Example:
    > @cluster/action #3683=@pemit [owner(me)]=Triggered!
    Cluster action for cluster #3683 set to: @pemit [owner(me)]=Triggered!
  
  See Also:  clusters, cluster functions, cluster commands, >

[PREV] [TOP] [NEXT]

@cluster add

  Command: @cluster/add <cluster>=<new object>
  
  The add switch adds new objects to a pre-existing cluster.  The /add only 
  works on objects that do not currently belong to a cluster.  You can have
  upwards to 600 or more objects in a single cluster at this time.
  
  Example:
    > @cluster/add notacluster=myobject
    That object isn't a cluster.  Use @cluster/new to make one.
    > @cluster/add mycluster=myobject
    Cluster object #123 has been added to #789
   
  See Also:  clusters, cluster functions, cluster commands, >

[PREV] [TOP] [NEXT]

@cluster clear

  Command: @cluster/clear <cluster object>
  
  The clear switch removes clustering information from all objects in the
  cluster, essentially 'clearing' the cluster in its entirety.  This only 
  removes the cluster related information and does not delete any attributes
  or information on the cluster members themselves.
  
  Example:
    > @cluster/clear notacluster
    That object isn't a cluster.  Use @cluster/new to make one.
    > @cluster/clear myclusterobject
    Cluster removed with member #123.  A total of 1 objects de-clustered.
  
  Note: the total number of objects cleared in the cluster will be shown.
  
  See Also:  clusters, cluster functions, cluster commands, >

[PREV] [TOP] [NEXT]

@cluster cut

  Command: @cluster/cut <cluster object>
  
  The cut switch should only be used as an absolute last measure.  This
  effectively forces the removal of the target item from the cluster in
  its entirety.  Once you cut an object from the cluster, you should 
  always use the repair switch on the remaining items in the cluster.
  This does NOT do any sanitizing checks.
  
  Example:
    > @cluster/cut #3683 
    Dbref #3683 has been forcefully declustered.
    It is strongly recommended that you @cluster/repair the remaining items 
             in the cluster.
  
  See Also:  clusters, cluster functions, cluster commands, >

[PREV] [TOP] [NEXT]

@cluster del

  Command: @cluster/del <cluster object>
  
  The del switch removes an item from a cluster.  This only removes the 
  cluster attributes and configuration from the object, not the actual data
  on the object itself.  It may be re-added into the cluster at a later time
  and without any worry of loss of data.  If this is the only object in the
  cluster, then the cluster is identified as being removed in its entirety.
  
  Example:
    > @cluster/del notacluster
    That object isn't a cluster.  Use @cluster/new to make one.
    > @cluster/del myclusterobject
    Cluster object #123 has been deleted.
  
  See Also:  clusters, cluster functions, cluster commands, >

[PREV] [TOP] [NEXT]

@cluster edit

  Command: @cluster/edit <cluster object>/<wild-attr> = <search>,<replace>
           @cluster/edit <cluster object>/<wild-attr> = ^,<text>
           @cluster/edit <cluster object>/<wild-attr> = $,<text>
  
  This works like @edit except for the entire cluster.  It essentially edits
  all matching instances of every wild-attr on the cluster.
  
  Example:
    > @cluster/edit #3683/test36??=boo,foo
    Cluster editing: (multiple)
    ====[Edit]---> #3683
    Set - TEST3611: foo
    Set - TEST3614: foo
    ====[Edit]---> #3672
    Set - TEST3610: foo
    Set - TEST3613: foo
    Set - TEST3616: foo
    ====[Edit]---> #3667
    Set - TEST3612: foo
    Set - TEST3615: foo
    Cluster editing complete.
    
  See Also:  clusters, cluster functions, cluster commands, >

[PREV] [TOP] [NEXT]

@cluster func

  Command: @cluster/action <cluster object>=<string>
           @cluster/action/func <cluster object>=<string>
  
  The action switch sets the action that will be executed on the cluster
  once the threshhold value has been reached.  The threshhold value
  is defined as the LOWEST attribute count on any item currently in
  the cluster.  The action is only executed once every 10 seconds to
  avoid recursive based attacks.
  
  The /func switch will set the FUNCTION action instead of normal action.
  The function action has precedence over the normal action.
  
  Example:
    > @cluster/action #3683=@pemit [owner(me)]=Triggered!
    Cluster action for cluster #3683 set to: @pemit [owner(me)]=Triggered!
  
  See Also:  clusters, cluster functions, cluster commands, >

[PREV] [TOP] [NEXT]

@cluster func action

  Command: @cluster/action <cluster object>=<string>
           @cluster/action/func <cluster object>=<string>
  
  The action switch sets the action that will be executed on the cluster
  once the threshhold value has been reached.  The threshhold value
  is defined as the LOWEST attribute count on any item currently in
  the cluster.  The action is only executed once every 10 seconds to
  avoid recursive based attacks.
  
  The /func switch will set the FUNCTION action instead of normal action.
  The function action has precedence over the normal action.
  
  Example:
    > @cluster/action #3683=@pemit [owner(me)]=Triggered!
    Cluster action for cluster #3683 set to: @pemit [owner(me)]=Triggered!
  
  See Also:  clusters, cluster functions, cluster commands, >

[PREV] [TOP] [NEXT]

@cluster grep

  Command: @cluster/grep <cluster object>=<attribute(s)>,<string>
           @cluster/grep/regexp <cluster object>=<attribute(s)>,<string>
  
  This works like @grep but is intended for the entirety of the cluster.
  This essentially searches for any match (partial or wildcarded) on 
  any attribute on the cluster.
  
  You may specify the optional regexp switch to use regular expression 
  matching instead of the default matching.
  
  Example: 
    > @cluster/grep #3683=*,*foo*
    Cluster grep: (multiple)
    ====[Grep]---> #3683
    TEST3611 TEST3614
    ====[Grep]---> #3672
    TEST3610 TEST3613 TEST3616
    ====[Grep]---> #3667
    TEST3612 TEST3615
    Cluster grep completed.
  
  See Also:  clusters, cluster functions, cluster commands, >

[PREV] [TOP] [NEXT]

@cluster list

  Command: @cluster/list <cluster object>
  
  The list switch lists the various parameters for the cluster specified.
  Options shown are total members in cluster, the threshold, threshold
  action, total attributes and attribute statistics.
  
  Example:
    > @cluster/list #3683
    Showing cluster statistics for cluster with member #3683.
    3 total members: #3683 #3672 #3667
    969 total attributes  [Highest: 324,  Lowest: 322,  Average: 323].
    Threshold has not been set.
    Threshold action has not been set.
  
  See Also:  clusters, cluster functions, cluster commands, >

[PREV] [TOP] [NEXT]

@cluster new

  Command: @cluster/new <object>
  
  The new switch, takes the specified object and assigns it as a cluster 
  object.  Once defined as a cluster, new objects may be /added to the cluster
  or /deleted to the cluster.  A cluster should never become corrupted, but if
  there is some inconsistancy, you may /repair it without worry of data loss.
  
  Example:
    > @cluster/new existing-cluster
    That object is already a cluster.
    > @cluster/new myobject
    Cluster for object #123 has been created.
  
  See Also:  clusters, cluster functions, cluster commands, >

[PREV] [TOP] [NEXT]

@cluster owner

  Command: @cluster/wipe
  
  These switches are useful only for @cluster/wipe.  Please see @cluster/wipe
  for more information.
  
  See Also: @cluster wipe
   
[PREV] [TOP] [NEXT]

@cluster preserve

  Command: @cluster/wipe
  
  These switches are useful only for @cluster/wipe.  Please see @cluster/wipe
  for more information.
  
  See Also: @cluster wipe
   
[PREV] [TOP] [NEXT]

@cluster reaction

  Command: @cluster/reaction <cluster object>=<old string>,<new string>
  
  The reaction switch allows you to edit the existing action attribute.
  The action attribute for the cluster is an internal attribute and
  requires this special switch to edit it.
  
  Example:
    > @cluster/reaction #3683=Triggered,Woot
    Cluster ActionList: @pemit [owner(me)]=Woot!
  
  See Also:  clusters, cluster functions, cluster commands, >

[PREV] [TOP] [NEXT]

@cluster regexp

  Command: @cluster
  
  The regexp switch is used to give regular expression matching for the other
  switches to @cluster.  It is currently useful with the following switches:
      @cluster/wipe/regexp -- Use regexp matching to wipe attribs.
      @cluster/grep/regexp -- Use regexp matching to grep attribs.
  
  See Also: @cluster wipe, @cluster grep
   
[PREV] [TOP] [NEXT]

@cluster repair

  Command: @cluster/repair <cluster object>
  
  The repair switch will attempt to repair any damaged cluster by resetting
  the cluster specific values on the cluster.  Corruption shouldn't happen
  but outside influences (like running out of disk quota) could cause some
  unexpected situations.
  
  Example:
    > @cluster/repair #3683 
    Step #1: Walking object cluster membership.
    Step #2: Sanitizing membership lists.
    Step #3: Sanitizing thresholds and action lists.
    Cluster list is error free.  Nothing to repair.
  
  See Also:  clusters, cluster functions, cluster commands, >

[PREV] [TOP] [NEXT]

@cluster set

  Command: @cluster/set <cluster object>=[!]<flag> [[!]<flag> [!]<flag> ...]
           @cluster/set <cluster object>=<attribute>:<value>
           @cluster/set <cluster object>=<attribute>:_<fromobj>/<fromattr>
           @cluster/set <cluster object>/<attr>=[!]<attrflag>
  Synonym: ><attribute> <object in cluster>[=<value>]
  
  This works like @set except with the entire cluster.  It automatically 
  identifies what object in the cluster contains the attribute and modifies
  that attribute, otherwise, it will smartly pick an object in the cluster
  for the new attribute.  If setting flags, it applies the flags to every
  item in the cluster.
  
  Example:
    > @cluster/set #3683=inherit
    Cluster: Flags (inherit) set on cluster members #3683 #3672 #3667.
  
  See Also:  clusters, cluster functions, cluster commands, >

[PREV] [TOP] [NEXT]

@cluster threshhold

  Command: @cluster/threshhold <cluster object>=<value>
  
  The threshhold switch sets the threshhold value that will let the
  cluster know when the threshhold action is to be executed.  The
  threshhold is defined as the LOWEST attribute count on any item
  currently in the cluster.  To avoid recursion based attacks, the
  threshold is only triggered once every 10 seconds regardless of
  the threshhold being reached or not.
   
  Example:
    > @cluster/threshhold #3683=500
    Cluster threshold for cluster #3683 set to: 500 
  
  See Also:  clusters, cluster functions, cluster commands, >

[PREV] [TOP] [NEXT]

@cluster trigger

  Command: @cluster/trigger <cluster object>/<attr> [=<param> [, <param>]... ]
  
  This switch works exactly like the normal @trigger command except it scans
  the entirety of the cluster for the matching attribute.  This essentially 
  triggers actions on the matching attribute and allows passing arguments 
  (params) to the attribute as arguments %0 to %9 (just like @trigger).
  
  Example:
    > @cluster/set #3683=xxx:@emit Whee - %%0  (remember, @cluster/set  evals)
    Set.
    > @cluster/trigger #3683/xxx=abcd  
    Whee - abcd
   
  See Also:  clusters, cluster functions, cluster commands, >

[PREV] [TOP] [NEXT]

@cluster wipe

  Command: @cluster/wipe[/regexp] <object>[/<wildattr>]
           @cluster/wipe/owner[/regexp] <owner>/<object>[/<wildattr>]
  
  The wipe switch, with an optional regexp switch addon, will wipe all matching
  attributes from every item in the cluster.  This works exactly like @wipe
  except is performed on the entirity of the cluster.
  
  Following switches are optionally used with @cluster/wipe:
    /regexp   -- Convert wildcard matching to a regexp pattern.
    /owner    -- Take optional owner argument to specify attribute ownership.
    /preserve -- Preserve the wildcard pattern and wipe everything else.
  
  Example:
    > @cluster/wipe #1234/va*
    Cluster wipe: 24 total objects, 0 no-match, 0 safe, 4 attributes wiped.
    > @cluster/wipe/regexp #1234/^..$
    Cluster wipe: 24 total objects, 0 no-match, 0 safe, 22 attributes wiped.
    > @cluster/wipe/owner Corum/#1234/va*
    Cluster wipe: 24 total objects, 0 no-match, 0 safe, 4 attributes wiped.
  
  See Also: clusters, cluster functinos, cluster commands, >

[PREV] [TOP] [NEXT]

@conformat

  Command: @conformat[/<switch>] <object> = <string>
  Attribute: ConFormat
  
  This attribute allows a user to define a user-presentable way for contents.
  This replaces the normal 'Contents:' and 'Carrying:' lists.  The variable
  is evaluated as it would a description or other similiar message.
  
  If the target is @powered FORMATTING, then the dbref# list of items that
  the target sees will be passed as %0 and the | separated list of names
  will be passed as %1.
    
  Examples:
    > look
    A big Room
    You see before you a big room.
    Contents:
    The Goat
    > @conformat here=Room Contents:[iter(lcon(me),%r---> [name(##)])]
    > look
    A big Room
    You see before you a big room.
    Room Contents:
    ---> The Goat
   
  The mush has to be configured to enable this to work.  '@list options'
  
  See Also: @exitformat, @nameformat, invformat
  
[PREV] [TOP] [NEXT]

@cost

  Command: @cost[/<switch>] <object> = <amount>
  Attribute: Cost
 
  Sets the number of coins that need to be given to an object to trigger the
  Pay, Opay, and Apay attributes.  If the object is given more than this
  amount, the excess is returned to the giver, while if less than this amount
  is given the entire amount is returned, a snide message is sent to the
  giver, and the Apay, Opay, and Pay attributes are not used.
 
  This attribute is only meaningful for things, and will never be
  automatically triggered on other object types.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @cost Coke machine = 25
  
  See Also: give, @apay, @opay, @pay
  
[PREV] [TOP] [NEXT]

@CPATTR

  Command: @cpattr[/switch] <obj>/<old>=<obj>[/<new1>/<new2/...][,<obj2>...]
  
  This command copies attributes from one object to a destination object(s).
  You can only copy from objects and attributes you control and only onto
  objects and attributes you control.  You have to specify a valid attribute
  to copy as well.  There are switches available for @cpattr.  These are:
      /clear  - this erases the attribute on the originating object if
                a copy was successful.
  
  You may specify the same object if you wish to move attributes on the same
  object.  You may specify wildcards for attributes.
  
{ 'help cpattr2' for examples on all combinations and explanations }
  
[PREV] [TOP] [NEXT]

@create

  Command: @create <name> [=<cost>]
  Creates a thing with the specified name.  Creation costs either <cost>
  or 10 coins, whichever is greater. The value of a thing is proportional
  to its cost, specifically, value=(cost/5)-1.  The value may not be greater
  than 100, values that would be greater than 100 are rounded down to 100.
  
  You may use the lastcreate() function to see the last thing @create'd
  
  See Also: @destroy, TYPES OF OBJECTS, lastcreate()
  
[PREV] [TOP] [NEXT]

@decompile

  Command: @decompile[/<switch>] <thing>[/<wild-attrib>] [=<newname>]
           @decompile/tf[/<switch>] <thing>[/wild-attrib>] [=<new prefix>]
  
  Dumps the sequence of commands you would have to type to clone <thing>.
  This is handy for saving your objects in a text file in case the MUSH dies
  a horrible death, or for moving your pride-and-joy creation from one MUSH
  to another.  @decompile works on all object types.
  If you specify <newname>, then the commands emitted will set attributes,
  locks, and flags on an object named <newname> and will omit the command
  to create the object.  You may also specify an optional wild-carded
  attribute.  The following switches exist:
      /all     - Show everything (this is the default)
      /attrib  - Show just attributes
      /flags   - Show just flags
      /regexp  - use regular expression matching
      /tree    - Examine based on Penn trees using '`' as a separator.
      /tf      - allows prefix formatting for clients.
  
  Example: @decompile MyObject/attr*
           @decompile MyObject
           @decompile MyObject/attr*=NewName
           @decompile MyObject=Newname
  
  Note:  The /tf switch changes the syntax slightly.
         1. When in use, the /tf switch changes what is normally <newname> 
            after the '=' into a new prefix for formatting.
         2. When in use, the /tf switch will ALWAYS display the dbref# of the
            target object.  There is no way to override this value when using
            the /tf switch.
         3. If the TFPREFIX attribute exists on the ENACTOR of the @decompile,
            it will use that value (unevaluated) instead of the default.
         4. The default prefix for the /tf switch is: 'FugueEdit > '
  
  See Also: examine, look, lattr(), cluster_lattr()
  
[PREV] [TOP] [NEXT]

@descformat

  All NON-ACTION attributes allowed formatting are in: help attributes
  
  Attribute formatting can be accomplished multiple ways.  First, there is
  a generic local 'format' for most @-attributes.  To process this format,
  you need to set an attribute of the name 'format<attr>' on the target
  (or parent, global parent, zone of the target. Use <attr>format if the
  config parameter format_compatibility is enabled). If this attribute is
  not found, it will then look at the global default parents for matching
  attribute inheritance.  Any attribute that you wish to inherit default
  pattern formatting must be set DEFAULT (attribute flag).  The desc is
  passed into the formatting as '%0'.  Local formatting has priority
  over global formatting.
  
  Note: Most RhostMUSHes will be configured to use &FORMAT<attr>.
        See '@list options system' to discover which method is in use.
  
  Examples:
    > @desc me=This is a test
    > @admin player_attr_default=123
    > @desc #123=-< %0 >-
    > lo me
      -< This is a test >-
    > &formatdesc me===<%0>==
    > lo me
      ===<This is a test>===

  See Also: ATTRIBUTES, ATTRIBUTE FLAG DEFAULT, @conformat, 
            @exitformat, @nameformat, invformat

[PREV] [TOP] [NEXT]

@describe

  Command: @describe[/<switch>] <object> = <description>
  Attribute: Desc
 
  Sets the description for <object>, which others see when they look at the
  object.  Giving all your objects, rooms, and exits good descriptions is
  considered to be good building practice.
 
  Function references and %-substitutions are allowed in descriptions, and
  are evaluated when someone looks at the object.  In function references,
  'me' refers to the object being looked at, while %-substitutions that refer
  to the enactor (such as %n, %#, %p, etc) refer to the looker.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Examples:
    <object> @desc vase = You see a delicate Ming vase.
    <exit>   @desc elevator = There is an elevator to the east.
  
  See Also: look, @adescribe, @odescribe, listen, @slisten, touch, @stouch, 
            taste, @staste, smell, @ssmell
  
[PREV] [TOP] [NEXT]

@destroy

  Command: @destroy[/<switches>] <object>
  This command destroys <object> and refunds its cost of creation to its
  owner.  You must own <object> in order to @destroy it, unless its
  DESTROY_OK flag is set, in which case anyone holding it may @destroy it.
  Rooms, exits, and objects may be destroyed, although the actual
  destruction of rooms is delayed for up to ten minutes and the BYEROOM flag
  is set on the victim room.  Clearing the BYEROOM flag on the room spares it
  from destruction.
 
  The @destroy command will not destroy objects with the SAFE flag set unless
  the /override switch is specified.  The DESTROY_OK flag overrides the
  protection given by the SAFE flag.
 
  The following switches are available:
    /override  - Negate protection offered by the SAFE flag.
    /instant   - For compatibility only.  This switch does nothing else.
  
  Do note, you can NOT destroy anything set INDESTRUCTIBLE.
  
  See Also: DESTROY_OK, SAFE, BYEROOM
  
[PREV] [TOP] [NEXT]

@dfail

  Command: @dfail[/<switch>] <object> = <message>
  Attribute: Dfail
 
  Sets the message that a player sees when he tries to drop the object but
  fails because he didn't pass the object's drop lock.
 
  Function references and %-substitutions are allowed in drop failure
  messages, and are evaluated when someone drops the object.  In function
  references, 'me' refers to the object being dropped, while %-substitutions
  that refer to the enactor (such as %n, %#, %p, etc) refer to the dropper.
 
  This attribute is only meaningful for players and things, and will never be
  automatically triggered on other object types.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @dfail sword = The sword has welded itself to your hand.
  
  See Also: drop, @adfail, @odfail, @lock
  
[PREV] [TOP] [NEXT]

@dig

  Command: @dig[/<switches>] <name> [= <exitlist> [, <exitlist>] ]
  
  Creates a new room with the specified name and displays its number. This 
  command costs 10 coins. If the [= <exitlist>] option is used, an exit will
  be opened from the current room to the new room automatically.  If the
  second <exitlist> option (after the comma) is specified, an exit from the
  new room back to the current room with the specified [Exits] name is
  opened.  Either exit creation may fail if you do not have sufficient
  rights to the current room to open or link the new exit.
  Example: The command
 
     @dig Kitchen = Kitchen;k;north;n,south;s
 
  will dig a room called Kitchen, and open an exit called 'Kitchen' in your
  current room.  The ; symbol means that you may enter the exit by typing
  'k', 'north' or 'n' also.  This command also opens the exit 'south;s' from
  'Kitchen' back to where you are.  Only the first Exit name is displayed in
  the Obvious exits list.
 
  If you specify the /teleport switch, then you are @teleported to the
  room after it is created and any exits are opened.
 
  You may use the lastcreate() function to see the last room that @dig'd.
  
  See Also: @destroy, @link, @open, LINKING, TYPES OF OBJECTS,
            lastcreate()
  
[PREV] [TOP] [NEXT]

@doing

  Command: @doing[/<switches>] [<message>]
  Sets your doing message, which appears after your name in the WHO report.
  The following switches are available:
     /message - Sets your Doing string in the WHO report. (default)
     /poll    - Displays the current Doing poll from the WHO report.
     /unique  - Sets your doing in your ACTIVE window only.
  
  See Also: WHO, DOING
  
[PREV] [TOP] [NEXT]

@dolist

  Command: @dolist[/<switch>] [<delimiter>|<pid>] <list>=<action>
  
  <list> is a list of strings, which can be object numbers, attributes, or
  arbitrary words.  <action> is a command to perform once for each item in
  <list>, replacing the special symbol ## with the corresponding item from
  <list>. By default, @dolist considers each item in <list> to be separated
  with spaces. If you specify the /delimit switch, then each item is
  considered to be separated by <delimiter>. <delimiter> must be a single
  character.  The special symbol '#@' can be used to return the positional
  match of the argument currently being processed.  The /notify switch is
  used to automatically notify the object after the last item in the @dolist
  is processed.  Great for timed events.
  
  The /inline switch may use %d0 to %d9 for ## substitution.  %dL for outer.   
  
  Without /inline, it will not handle %d0-%d9.  The reason is the overhead
  that this would cause would be insufficient for the rewards.  This will
  hold true to anything that queues with @dolist/inline.  So @switch, @wait,
  or similar will not be able to process the %d0-%d9.  Sorry for the 
  limitation.
  
  If present, <switch> can be any of:
    /space     - (Default) List elements are separated by spaces.
    /delimit   - List elements are separated by <delimiter>.
    /notify    - Issues a @notify me after the end of the @dolist
    /pid       - Issues a @notify/pid me=<pid> after the end of the @dolist.
    /inline    - Execute @dolist 'in-line' and do not queue.
    /clearregs - Clear the registers before going inside @dolist.  This 
                 assumes local registers. (/inline required)
    /localize  - Make any changes to registers local (/inline required)
    /nobreak   - All @break/@assert in @dolist ignored in outside processing.
                 (/inline required)
  
{ help @dolist2 for examples}
  
[PREV] [TOP] [NEXT]

@dolist2

  Command: @dolist[/<switch>] [<delimiter>] <list>=<action>  
  
  This command is particularly handy with lcon() and lexits(). A few examples:
 
    @dolist [lcon(here)] = "[name(##)](##)
    @dolist [lcon(here)] = @switch [get(##/last)]=*1990*,"[name(##)]
    @va me = va vb vc
    @dolist [get(me/va)] = @emit [get(me/##)]
    @dolist [get(me/va)] = @emit Argument ## is position #@
    @dolist Frodo Bilbo Gandalf = page ## = HELP!!!!  I've fallen into a pit.
    @dolist/delimit , {Frodo, Bilbo Baggins, Gandalf} = page ## = HELP!!!!
    @wait me=@emit Zapping Finished;@dolist/notify bob joe=@emit Zapped ##
  
  See Also: iter(), parse(), list()
  
[PREV] [TOP] [NEXT]

@door

  Command: @door 
  Switches: STATUS, OPEN, CLOSED, LIST, PUSH, KICK
  
  @door provides control over arbitraty TCP connections that are opened from
  inside the mush to some external program or service.
  
  In order for a door to be available a C-code module must first be loaded by
  an Admin(*), or compiled statically into the mush server.
  
  To see what doors exist on your system, type: @door
  
  (*) Not available in RhostMUSH 3.2.4p15 and earlier.
  
  See 'DOOR SYNTAX' on a quick listing of commands and what they do.
  
  See Also: DOOR_OPEN, DOOR_PUSH, DOOR_CLOSE, DOOR_LIST, DOOR_STATUS, 
            DOOR_KICK, DOOR_WRITING, INTERNAL_DOORS, DOORED, DOOR SYNTAX
  
[PREV] [TOP] [NEXT]

@drain

  Command: @drain[</switch>] <object>
  Discards all commands waiting on the semaphore <object> and resets the
  semaphore to its initial state.  Note, you can also use @halt/pid with
  the PID process of the given semaphore.  
  
  Possible switches are:
     /quiet   - omit message notification of any @draining
  
  See Also: @notify, @ps, SEMAPHORES
  
[PREV] [TOP] [NEXT]

@drop

  Command: @drop[/<switch>] <object> = <message>
  Attribute: Drop
 
  Sets the message that a player sees when he drops the object, or after he
  goes through the exit.
 
  Function references and %-substitutions are allowed in drop messages, and
  are evaluated when someone drops the object.  In function references,
  'me' refers to the object being dropped, while %-substitutions that refer
  to the enactor (such as %n, %#, %p, etc) refer to the dropper.
 
  This attribute is only meaningful for players and things, and will never be
  automatically triggered on other object types.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Examples: <object> @drop vase = You gently put down the delicate vase.
            <exit>   @drop elevator = The elevator doors close behind you.
  
  See Also: drop, @adrop, @odrop, DROP-TO, EXITS
  
[PREV] [TOP] [NEXT]

@ealias

  Command: @ealias[/<switch>] <object> = <entrance-list>
  Attribute: Ealias
 
  Sets up a set of alternate commands that may be used as synonyms for the
  command 'enter <object>' when you are in the same location as the object.
  The alternate commands are separated by semicolons just like in exit names.
 
  Entry aliases are checked for after exitnames, built-in MUSH commands, and
  leave aliases for the current location, but before $-commands.  If more than
  one object has an entry alias that matches a player's command, the one on
  the object that occurs first in the location contents list is used.
 
  This attribute is meaningful for players and things, and will never be
  automatically looked at on rooms or exits.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @ealias car = get in car; car; climb in; go for a ride
  
  See Also: @lalias, enter, leave
  
[PREV] [TOP] [NEXT]

@edit

  Command: @edit[<switch>] <object>/<wild-attr> = <search>,<replace>
           @edit[<switch>] <object>/<wild-attr> = ^,<text>
           @edit[<switch>] <object>/<wild-attr> = $,<text>
  This command edits the contents of one or more attributes of an object,
  eliminating the need to retype a long attribute in order to make a simple
  change.  In the first form, all occurrences of <search> in the specified
  attribute of the named object are replaced with <replace>.  Use curly
  braces ({ and }) around <search> or <replace> if they contain commas.
  The second and third form prepend and append <text> to the selected
  attributes, respectively.  Changes will be highlighted.  If you do not
  wish the changes to be highlighted, please @toggle yourself with the
  'NO_ANSI_EX' toggle. (syntax: @toggle me=no_ansi_ex).  
  
  The following switches exist for @edit:
        /check     - perform 'check' of what @edit will do w/o editing.
        /single    - perform edit on first match, but not rest.
        /strict    - enforces ansi alignment for each char in original
                     string and leaves unansified anything outside that.
        /raw       - raw mode of the string.  Allows to edit ansi markup.
   
  If <wild-attr> contains wildcard characters, then all attributes that
  match are edited.
  
  Example:
    > @va me=This are a test.
      Set.
    > @edit me/va=are,is
      Set - VA: This is a test
  
  See Also: edit(), editansi(), @mvattr, @cpattr
  
[PREV] [TOP] [NEXT]

@efail

  Command: @efail[/<switch>] <object> = <command-list>
  Attribute: Efail
 
  Sets the message that a player sees when he tries to enter the object but
  fails because the object is not ENTER_OK or the player fails the
  object's enter lock.
 
  Function references and %-substitutions are allowed in efail messages, and
  are evaluated when someone fails to enter the object.  In function
  references, 'me' refers to the object that the enactor tried to enter, while
  %-substitutions that refer to the enactor (such as %n, %#, %p, etc) refer to
  the player who tried (and failed) to enter.
 
  The enter lock only affects the 'enter' command and its aliases (set via
  the @ealias command), it does not affect exits that lead to the object or
  teleporting in.
 
  This attribute is meaningful for players and things, and will never be
  automatically triggered on rooms or exits.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @efail car = The car's door is locked.
  
  See Also: @aefail, @aenter, @ealias, @enter, @oefail, @oenter, enter,
            ENTER_OK
  
[PREV] [TOP] [NEXT]

@emit

  Command: @emit[/<switches>] <message>
  Sends <message> to everyone in your current location without prefixing it by
  your character name.  You can also send the message to everyone in the room
  that contains the object you are inside with the /room switch.
 
  The following switches are available:
     /here   - Sends the message to everyone in the same location as you.
     /room   - Sends the message to everyone in the room that contains the
               object you are in.  Starting from your location, this switch
               'leaves' objects until it reaches a room, and @emits the message
               there.
     /sub    - Substitute '##' in the string for the target's dbref#.  Note,
               that iter(), parse() or any function that also handles ## will
               handle it prior to @emit.
     /noansi - Show the string literally and don't process ansi.  Only
               useful with ZENTY_ANSI enabled (at compiletime).
  
  If both /here and /room switches are specified, the message is sent to both 
  places.  If neither is specified, /here is assumed.
 
  Some MUSHes may restrict the use of this command.
  
  See Also: @femit, @oemit, @pemit, SPOOFING
  
[PREV] [TOP] [NEXT]

@enter

  Command: @enter[/<switch>] <object> = <message>
  Attribute: Enter
 
  Sets the message that a player sees when entering an object or room,
  whether by using an exit, the enter or leave commands, or by teleporting.
 
  Function references and %-substitutions are allowed in enter messages, and
  are evaluated when someone enters the object.  In function references,
  'me' refers to the object being entered, while %-substitutions that refer
  to the enactor (such as %n, %#, %p, etc) refer to the player entering the
  object.
 
  This attribute is meaningful for players, things, and rooms, and will never
  be automatically triggered on exits.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @enter car = You climb into the car and buckle your seatbelt.
  
  See Also: enter, @aenter, @oenter, ENTER_OK
  
[PREV] [TOP] [NEXT]

@entrances

  Command: @entrances [[<object>][,<low>[,<high>]]]
 
  Lists links from elsewhere to the specified object (default: your current
  room).  For rooms, exits and drop-to's, leading to the room and players
  and objects whose home is in the room are listed.  For players and objects,
  lists exits leading to them.  Because this command is computationally
  expensive, it costs 200 coins.  <low> and <high> can be used to indicate
  where to start and stop the search, respectively.
 
  Examples:
    > @entrances             <- all links to here
    > @entrances object      <- all links to object
    > @entrances ,100,200    <- all links to here from #100 to #200
    > @entrances me,1000     <- all links to me from #1000 and above.
  
  See Also: @link, @unlink
  
[PREV] [TOP] [NEXT]

@eval

  Command: @eval <string>
  
  This function forces the <string> into evaluation.  @eval, by itself,
  does not return anything.  This is useful if you wish to use functions
  (like sideeffects) to set up values and results but not have to use
  a 'normal' command to issue it.
  
  Example:
    > @eval [pemit(me,test)]
    test
  
  See Also: think, @emit, @pemit, pemit()
  
[PREV] [TOP] [NEXT]

@exitformat

  Command: @exitformat[/<switch>] <object> = <string>
  Attribute: ExitFormat
  
  This attribute allows a user to define a user-presentable way for exits.
  This replaces the normal 'Obvious exits:'  listing.  The variable is
  evaluated as it would a description or other similiar message.
  
  If the target is @powered FORMATTING, then the dbref# list of items that
  the target sees will be passed as %0 and the | separated list of names
  will be passed as %1.  Any dark exits that the target sees will be passed
  as dbref#'s into %2, and their respective names | separated as %3.
    
  Examples:
    > look
    A big Room
    You see before you a big room.
    Obvious exits:
    Out <O>  Bedroom <B>
    > @exitformat here=Room Exits:[iter(lexits(me),%r#@. [name(##)])]
    > look
    A big Room
    You see before you a big room.
    Room Exits:
    1. Out <O>
    2. Bedroom <B>
  
  The mush has to be configured to enable this to work.  '@list options'
  
  See Also: @conformat, @nameformat, invformat
  
[PREV] [TOP] [NEXT]

@exitto

  Command: @exitto[/<switch>] <exit> = <string>
  Attribute: ExitTo
  
  This attribute allows an exit to handle 'Variable Exits'.  In essence,
  this attribute is parsed then is checked for a valid linkable destination
  to send the target who enters the exit to.  All exit messages are 
  evaluated and sent as well.
  
  If the exit is @powered FULLTEL then the exit will be assumed to have 
  full 'link' permission to any valid destination that exits would normally
  be able to link to.  @power requires wizard access to set.
     
  Example:
    > @toggle MyExit=variable
    Set.
    > @exitto MyExit=[switch(obj(%#),he,#123,she,#234,#567)]
    Set.
  
  The above example sends all people of a male sex to room #123, female to 
  #234, and anyone who doesn't match either to #567.
  
  See Also: variable exits, variable toggle
  
[PREV] [TOP] [NEXT]

@extansi

  Command: @extansi[/<switch>] <object> = <string>
  
  The @extansi command allows you to set multi-color names for an item.  This
  only effects contents, inventories, and the normal 'look'.  It will not
  effect anything else.  In addition, the name in @extansi MUST match the
  name returned by name() (minus ansi codes).  
  i.e.  stripansi(get(object/ansiname)) = name(object)
  
  @extansi is stored in the @ansiname attribute.  This will, naturally, 
  overwrite the previous @ansiname ansi color you may have used.
  
  Note:  Target must be @toggled EXTANSI to use this command.
  
  The optional switch /quiet suppresses output unless an error is thrown.
  
  If you wish pose, say, and @wall to ansifi your name, set the VARIABLE
  @toggle on yourself.
  
  Examlple:  @name object=99 Red Balloons
             > Name set.
             @extansi object=99 [ansi(hr,Red)] Baboons
             > String entered must match name of target, 99 Red Balloons.
             @extansi object=99 [ansi(hr,Red)] Balloons
             > Ansi string entered for 99 Red Balloons of '99 Red Balloons'.
  
  See Also: @ansiname, @name, ansi(), EXTANSI TOGGLE
  
[PREV] [TOP] [NEXT]

@fail

  Command: @fail[/<switch>] <object> = <message>
  Attribute: Fail
 
  Sets the failure message for <object>.  This message is seen by the actor
  when one of these events occurs:
 
    - For exits: Someone tries to traverse the exit but cannot because they
      fail the exit's default lock or the exit is not linked.
    - For players and things: Someone tries to pick up the object but cannot
      because they fail the object's default lock.
    - For rooms, players, and things: Someone looks around inside the room,
      player, or thing and fails the object's default lock.
 
  Substitution and evaluation is performed on the message before it is shown.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example:
    > @fail table = It's too heavy to lift!                            <thing>
    > @fail doorway = The doorknob does not turn.                       <exit>
  
  See Also: get, @afail, @ofail, FAILURE
  
[PREV] [TOP] [NEXT]

@femit

  Command: @femit[/<switches>] <object>=<message>
  Forces <object> to emit <message>.  This command is similar to the command
  '@force <object> = @emit <message>', except that it will work so long as
  you own the object, whereas @force may fail if the object has its INHERIT
  flag set and the object performing the @force does not.
 
  The following switches are available:
     /here   - Sends the message to everyone in the same location as <object>.
     /room   - Sends the message to everyone in the room that contains the
               object that <object> is in.  Starting from your location, this
               switch 'leaves' objects until it reaches a room, and @emits the
               message there.
     /noansi - Show the string literally and don't process ansi.  Only
               useful with ZENTY_ANSI enabled (at compiletime).
    
  If both /here and /room switches are specified, the message is sent to both 
  places.  If neither is specified, /here is assumed.
   
  Some MUSHes may restrict the use of this command.
    
  See Also: @emit, @fpose, @fsay, INHERIT, SPOOFING
  
[PREV] [TOP] [NEXT]

@filter

  Command: @filter[/<switch>] <object> = <pattern>[, <pattern>...]
  Attribute: Filter
 
  This attribute specifies a series of patterns to be used to suppress
  text normally forwarded by the AUDIBLE flag.  If the desired pattern
  contains a comma, the pattern may be enclosed in curly braces {}.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example:
    > @fo test=out
    > @set #378=puppet
    test> test grows ears and can now hear.
    > @filter out = {* has arrived.},{* has left.}
    Set.
    > :has not arrived.
    Wizard has not arrived.
    test> From a distance, Wizard has not arrived.
    > :has arrived.
    Wizard has arrived.
  
  See Also:  AUDIBLE, @forwardlist, @infilter, @inprefix, @prefix
  
[PREV] [TOP] [NEXT]

@find

  Command: @find <name>[,<low>[,<high>]]
 
  Displays the name and number of every room, thing, or player that you
  control whose name matches <name>. Because the command is computationally
  expensive, it costs 200 coins.
 
  <low> and <high> may be used to restrict the range of objects that are
  searched, if they are given then the search starts at object #<low> and ends
  at object #<high>.
 
  Examples:
    > @find Lost Room
    > @find Secret Device,12000,14000
  
  See Also: @search
  
[PREV] [TOP] [NEXT]

@force

  Command: @force <player/object>=<command>
  Forces the game to act as though <player/object> had entered <command>.
  You may only force objects that you control.  Objects may not force players
  unless either the object or the player has their INHERIT flag set, and
  objects that do not have their INHERIT flag set may not force objects that
  do.  If the victim is specified by number, you may use an alternate form
  of the command, '#<number> <command>'.
  
  See Also: puppets, #, @trigger, @include
  
[PREV] [TOP] [NEXT]

@forwardlist

  Command: @forwardlist[/<switch>] <object> = <dbref-list>
  Attribute: Forwardlist
 
  Specifies a list of locations (specified by their db numbers) that are to
  receive messages heard by <object> (filtered by the @filter attribute and
  prefixed by the @prefix attribute).  The messages are only forwarded if
  <object> has its AUDIBLE flag set.
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
   
  See Also: @filter, @prefix, AUDIBLE
  
[PREV] [TOP] [NEXT]

@fpose

  Command: @fpose[/<switches>] <object>=<message>
  Forces <object> to pose <message>.  This command is similar to the command
  '@force <object> = :<message>', except that it will work so long as you
  own the object, whereas @force may fail if the object has its INHERIT flag
  set and the object performing the @force does not.
 
  The following switches are available:
     /default - (default) Put a space between the name of the object and
                the message (ie, send '<name> <message>').
     /nospace - Don't put a space between the name of the object and the
                message (ie, send '<name><message>').
  
  See Also: @femit, @fsay, pose, :, ;, INHERIT
  
[PREV] [TOP] [NEXT]

@fsay

  Command: @fsay <object> = <message>
  Forces <object> (which may be a player) to say <message>.  Can only
  be executed if the enactor controls the object.
  
  See Also: say, @femit, pose
  
[PREV] [TOP] [NEXT]

@gfail

  Command: @gfail[/<switch>] <object> = <message>
  Attribute: Gfail
 
  Sets the message that a player sees when he tries to give away the object
  but fails because he didn't pass the object's give lock.
 
  Function references and %-substitutions are allowed in give failure
  messages, and are evaluated when someone tries to give away the object.
  In function references, 'me' refers to the object being given away, while
  %-substitutions that refer to the enactor (such as %n, %#, %p, etc) refer
  to the (attempted) giver.
 
  This attribute is only meaningful for players and things, and will never be
  automatically triggered on other object types.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @gfail sword = You can't give away a cursed sword!
  
  See Also: give, @agfail, @ogfail, @lock
  
[PREV] [TOP] [NEXT]

@GREP

  Command: @grep[/<switch>] <object>=<attribute(s)>,<string>
  
  This command will return a list of attributes matching <attribute(s)> that
  contain the string <string>.  You may specify wildcards (* or ?) in the
  attributes or the string to match for.  If no list is found, it returns
  nothing.
  
  The following switches exist for @grep:
    /quiet  - filters out the output of the 'Grep: Done.' message
    /regexp - apply regular expression matching for 'string'.
    /parent - search down parent trees as well (showing parents separately).
  
  Example: 
  > @grep me=*,*al*
    Sex
    Grep: Done. 
   
  See Also: @search, examine, get(), match(), grep()
  
[PREV] [TOP] [NEXT]

@guild

  Command: @guild[/<switch>] <player>=<string>
  
  This command sets the GUILD attribute on the specified player.  Only
  staff can use this command.  Optional switches are:
    /quiet - sets the attribute w/o returning a 'Set.' message.
    /noisy - this verbosely sets the attribute.  Compatibility with PENN
  
  See Also: @race, guild(), race(), @set, &
  
[PREV] [TOP] [NEXT]

@halt

  Command: @halt[/<switch>] [<object>]
  Halts all commands being run by <object>, or by the object running the
  command if no <object> is given.  If the object to be halted is a player,
  then all commands being run by objects owned by that player are halted.
  Use this command to stop runaway objects and infinite loops.
  The process of halting an object involves removing all commands waiting
  to be run by the object from the queue and refunding the queue deposit.
  Halting an object does not affect commands waiting on it as a semaphore.
  
  Switches available are:
    /PID   - This will halt (kill) the PID reference to the job in the @ps.
             This, unlike @halt alone, *WILL* affect jobs waiting as
             semaphores.
    /STOP  - (used with /PID) - Sets the queue entry into a SLEEP state
    /CONT  - (used with /PID) - Resets the queue entry into a RUN state
    /QUIET - Will quiet the output when you have halted something.
             Note: warnings/errors will still show through this.
  
  See Also: @drain, @notify, @ps, kill, HALTED, SEMAPHORES, pid()
  
[PREV] [TOP] [NEXT]

@hide

  Command: @hide[/<switch>]
  
  This command will hide (or unhide) you from the WHO/DOING.  If you
  specify the '/off' switch, it will unhide you to appear back on the
  WHO/DOING.  This also effects lwho(), conn() and idle().  Only full
  wizards (and you yourself) can see you on the WHO when you @hide.
  The current switches exist:
     /on  - this hides you from the WHO (default).
     /off - this unhides you from the WHO. 
  
  See Also: WHO, DOING, DARK, UNFINDABLE  
  
[PREV] [TOP] [NEXT]

@idesc

  Command: @idesc[/<switch>] <object> = <message>
  Attribute: Idesc
 
  Sets the internal description for <object>.  The internal description of an
  object will be shown to any player entering it.  If not set, the regular
  description in the Desc attribute is shown instead.
 
  Function references and %-substitutions are allowed in inside descriptions,
  and are evaluated when someone fails to get or look at the object.  In
  function references, 'me' refers to the object being looked at, while
  %-substitutions that refer to the enactor (such as %n, %#, %p, etc)
  refer to the player doing the looking.
 
  This attribute is only meaningful for players and things, and will never be
  automatically triggered on other object types.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @idesc car = You are sitting in the driver's seat of a Volkswagen
                        Beetle.
  
  See Also: enter, @describe, ENTER_OK
  
[PREV] [TOP] [NEXT]

@idle

  Command: @idle[/<switch>] <object> = <message>
  Attribute: Idle
 
  This attribute is sent as a message to anyone who successfully pages you.
  It can be used to tell someone who pages you when you will return
  (if you are going to be away for a while).  %# is used for the person
  who pages you and not you yourself.
 
  This attribute is only meaningful for players, and will never be
  automatically referenced on other object types.
  
  The attribute will not be displayed if it returns an empty string.
  Idea borrowed from PENN.
   
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @idle me = At dinner.  Back about 7PM.
           @idle me = [ifelse(gt(idle(me),600),Away from computer.  Idle)]
  
  The second example will only display an idle message if you've been idle over
  10 minutes.
  
  See Also: @away, @reject, page
  
[PREV] [TOP] [NEXT]

@if

  Command: @skip <boolean expression>=<command>
           @skip/ifelse <boolean expression>=<true command>[,<false command>]
  
  The @skip command 'skips' the command from being executed if the boolean 
  logic presented to @skip is true.  The command will be processed in the
  normal queue and not executed out of order.  Any value other than '0'
  is considered 'true' and not a true boolean.  This only processes a single
  command.  If multiple commands are required, please use @include.
  
  Notice if you specify the /ifelse switch the condition is reversed to match
  how a normal if-else statement would work.  @skip/ifelse is aliased to
  @if and @ifelse.
  
  Examples:
    > @wait 0={think 1;think 2;@skip 0=think 3;think 4}
    1
    2
    3
    4
    > @wait 0={think 1;think 2;@skip 1=think 3;think 4}
    1
    2
    4
  
  See Also: @include, @force, @trigger, @skip, @break, @assert, @switch

[PREV] [TOP] [NEXT]

@ifelse

  Command: @skip <boolean expression>=<command>
           @skip/ifelse <boolean expression>=<true command>[,<false command>]
  
  The @skip command 'skips' the command from being executed if the boolean 
  logic presented to @skip is true.  The command will be processed in the
  normal queue and not executed out of order.  Any value other than '0'
  is considered 'true' and not a true boolean.  This only processes a single
  command.  If multiple commands are required, please use @include.
  
  Notice if you specify the /ifelse switch the condition is reversed to match
  how a normal if-else statement would work.  @skip/ifelse is aliased to
  @if and @ifelse.
  
  Examples:
    > @wait 0={think 1;think 2;@skip 0=think 3;think 4}
    1
    2
    3
    4
    > @wait 0={think 1;think 2;@skip 1=think 3;think 4}
    1
    2
    4
  
  See Also: @include, @force, @trigger, @skip, @break, @assert, @switch

[PREV] [TOP] [NEXT]

@include

  Command: @include[/<switch>] <object>/<attr> [=<arg1>,<arg2>,...,<argN>]
           @attach[/<switch>]  <object>/<attr> [=<arg1>,<arg2>,...,<argN>]
  
  Note:  @attach is an alias to @include/override.
  
  The @include command can only be issued in a queue.  Ergo, if it is to be 
  issued at the player command line, it must be queued first (like with @wait)
  
  The @include command will insert, at the location of the @include, any 
  commands that were stored in the specified attribute on the specified 
  object.  You must have control over the object and be able to see the
  attribute to be able to fetch the information.  This passes all the standard
  arguments (%0-%9) and can be overridden by arguments you pass to it.  After
  the @included text, the %0-%9 variables will return to what it was prior
  to the @include.
  
  This behaves similar to @trigger, except it will insert the commands in
  order and not queue them up.
  
  @include honors @break/@assert.  You can have at most 10 @includes.  You
  can only nest to 3 levels deep.
  
  @admin params includecnt and includenest handle @include's flexibility.
  
  The following switches exist for @include:
    /command   - bypass the $command/^listen portion of the attribute.
    /clearregs - clear the registers prior to calling included attribute.
                 Note: this automatically sets the localize option.
    /localize  - localizes the registers for the include duration.
    /nobreak   - disregard @break/@assert inside the includes from outside.
    /target    - Use the target as executor instead of executor of @include
                 Note: You must control target to use this.
    /override  - If any arguments are passed to @include to override the
                 default, this will disable all default arguments.
    
  {see @include2 for examples}

[PREV] [TOP] [NEXT]

@include2

  (CONTINUED)
  Command: @include[/<switch>] <object>/<attr> [=<arg1>,<arg2>,...,<argN>]
  
  Example:
    > @va me=think inny1;think inny2: %0
    Set.
    > @vb me=$fnord *:think test1;@include me/va;think test2
    Set.
    > @vc me=$fnord2 *:think test1;@include me/va=bah!;think test2
    > fnord boo!
    test1
    inny1
    inny2: boo!
    test2
    > fnord2 boo!
    test1
    inny1
    inny2: bah!
    test2
  
  See Also: @trigger, @force, @sudo, @skip

[PREV] [TOP] [NEXT]

@infilter

  Command: @infilter[/<switch>] <object> = <pattern>[, <pattern>...]
  Attribute: Infilter
 
  This attribute specifies a series of patterns to be used to suppress
  text normally sent to the contents of <object> by @listen.  If the desired
  pattern contains a comma, the pattern may be enclosed in curly braces {}.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example:
    > @listen sports car=*
    > @fo test=enter sports car
    test has left.
    test> Sports Car(#383Q)
    > :waves.
    test> Wizard waves.
    Wizard waves.
    > @infilter sports = *waves*
    > :waves.
    Wizard waves.
    > :knocks on the window.
    test> Wizard knocks on the window.
    Wizard knocks on the window.
  
  See Also: @filter, @inprefix, @listen, @prefix
  
[PREV] [TOP] [NEXT]

@inprefix

  Command: @inprefix[/<switch>] <object> = <prefix text>
  Attribute: Inprefix
 
  This attribute, when set, will prefix all text that is sent to the contents
  of <object> by @listen.  The default is to have no prefix, the text is
  forwarded unadorned.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example:
    > @listen sports car=*
    > @fo test=enter sports car
    test has left.
    test> Sports Car(#383Q)
    > :waves.
    test> Wizard waves.
    Wizard waves.
    > @inprefix sports car = In the mundane world outside,
    test> In the mundane world outside, Wizard waves some more.
    Wizard waves some more.
  
  See Also: @filter, @infilter, @listen, @prefix
  
[PREV] [TOP] [NEXT]

@invformat

  Attribute: INVFORMAT
  
  This attribute is set via &INVFORMAT.  There is no '@invformat'.
  
  This attribute when set will format the enctor's inventory.  If the enactor
  is @powered FORMATTING (either directly or through a parent/zone chain),
  then you may also use %0-%6 for arguments.  They are:
    %0 - The space separated list of dbref#'s that would normally show 
         up in inventory.
    %1 - The '|' delimited list of names that would normally show up in
         inventory.
    %2 - The space separated list of exit dbref#'s that would normally 
         show up in inventory.
    %3 - The '|' delimited list of exit names that would normally show 
         up in inventory.
    %4 - The space separated list of dbref#'s that are toggled WIELDED
    %5 - The space separated list of dbref#'s that are toggled WORN
    %6 - The backpack name that is globally set. (@admin inventory_name)
  
  If the target is not @powered FORMATTING, then none of the % registers
  will return a result.
  
  See Also: @conformat, @exitformat, @nameformat, attribute formatting

[PREV] [TOP] [NEXT]

@kill

  Command: @kill[/<switch>] <object> = <message>
  Attribute: Kill
 
  This command sets the message that is shown to anyone who kills <object>.
 
  This attribute is only meaningful for players and things, and will never be
  automatically triggered on other object types.
 
  Function references and %-substitutions are allowed in kill messages, and
  are evaluated when someone kills the object.  In function references, 'me'
  refers to the object that was killed, while %-substitutions that refer to
  the enactor (such as %n, %#, %p, etc) refer to the player doing the killing.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @kill guard = The guard says "I'll get.. you... for... this... %n"
                         as he falls down and dies.
  
  See Also: kill, @akill, @okill, BEING KILLED, IMMORTAL, ROYALTY
  
[PREV] [TOP] [NEXT]

@label

  Command: @label/<switch> <label>=<target>:<start>,<end>
  
  The @label command is used to integrate the %_<label> system for debugging
  and tracing seamlessly into code.  This effectively allows you to add,
  remove, list and purge labels from attributes, cleanly, to allow a far
  more enjoyable debugging experience.
  
  Quick overview of switches:
    /add     - Adds the label in attribute
    /try     - Shows what adding label would look in attribute
    /delete  - Deletes label in attribute
    /purge   - Purge all labels in attributes
    /list    - Lists all specifics of attribute
    /enable  - Enables label debugging of specific label
    /disable - Disables label debugging of specific label
    /color   - Sets (or wipes) specific label
    /grep    - Sets (or wipes) grep patterning
    /ruler   - works like ruler()
  
  For further explaination of label tracing:  help %_ 
  For the complete list of variables used:    help %_var
  
  { see 'help @label2' to show syntax and detailing labels of switches }
  { see 'help @label-example' to show step by step in working debug labels }

[PREV] [TOP] [NEXT]

@label-example

  Command: @label/<switch> <label>=<target>:<start>,<end>
  
  To use debug labels, you of course need to first set up some code.
  
  First, let's create an object:
    > @create MyObject
    MyObject created as object #12345
  
  Now, let's set an attribute we want to debug on this object.
    > @set MyObject=inherit
    Set.
    > &CMD_TEST MyObject=$foo:@pemit %#=[add(1,1)][sub(2,2)][div(3,3)]
    Set.
  
  We need to see the positioning of the sub() function in our attribute.
  For this, we can use the nifty @label/ruler command (or ruler() function)
      (NOTE: think ruler(myobject/cmd_test,60) also works)
    > @label/ruler myobject/cmd_test=60    
             | ---------|10-------|20-------|30-------|40-------|50-------|60 |
             | $foo:@pemit %#=[add(1,1)][sub(2,2)][div(3,3)]                  |
      0      | 123456789012345678901234567890123456789012345678901234567890   |
             | ---------|10-------|20-------|30-------|40-------|50-------|60 |
  
  Ok, for whatever reason, we want to debug just the sub() function in
  this.  We will call our label 'watson' for giggles.  We have the start 
  position of sub as 25, and the end of it as 35.  
  It will place the labels AFTER the position specified, not before.
  Let's issue a '/try' on this to make sure we got the positions right.
    > @label/add/try watson=myobject/cmd_test:25,35
    @label: /add [/try] would have modified the attribute to look like:
    $foo:@pemit %#=[add(1,1)]%_<watson>[sub(2,2)]%_<-watson>[div(3,3)]
  
  Ok, it looks good, let's add the label.
    > @label/add watson=myobject/cmd_test:25,35
    @label: /add successfully added label 'watson' to attribute.
   
  { see 'help @label-example2' to continue with the tutorial }
 
[PREV] [TOP] [NEXT]

@label-example2

  Command: @label/<switch> <label>=<target>:<start>,<end>
  
  Now, we have injected the debug label into our code, but we still need to
  enable the label itself for debugging.  Let's select pink as the optional
  color.  If you don't specify a color, it'll just highlight it.  You may
  change or add/remove color from labels after the fact with the /color
  option.  So don't worry if you don't feel colorful right now.
    > @label/enable myobject/watson=+pink
    @label: /enable has enabled label 'watson' with color '+pink'
  
  Good show, we now have debugging enabled for the object for the sub()
  function.  Let's try it out, shall we?
    > foo
    MyObject(#12345) [watson]} 'sub(2,2)' -> '0'
    201
  
  Ok, let's see what label based debugging we have on the object itself.
    > @label/list myobject
    @label: /list -- Global values set on target
      Trace: watson
      Attrib Color: [TRACE_COLOR_WATSON] +pink
  
  And now, for the attribute we actually did debugging on.
    > @label/list myobject/cmd_test
    @label: /list of all labels for attribute
      Enable:[   1] watson
      Disable:[   1] watson
      Attrib Color: [TRACE_COLOR_WATSON] +pink
  
  { see 'help @label-example3' to finish with the tutorial }
  
[PREV] [TOP] [NEXT]

@label-example3

  Command: @label/<switch> <label>=<target>:<start>,<end>
  
  Ok, we've finished debugging.  You can do multiple things here.  Leaving the
  debugging in is fine, if it's not enabled it won't have much overhead
  overall.  The other is you can remove the label.
  --: Disabling the label which removes the label from debugging
    > @label/disable myobject/watson
    @label: /disable has disabled label 'watson'
  --: Removing the label from the attribute entirely
    > @label/delete watson=myobject/cmd_test
    @label: /del removed label 'watson'.  1 enable, 1 disable.
  --: Purging all labels entirely from the attribute
    > @label/purge myobj/cmd_test
    @label: /purge removed labels.  1 enable, 1 disable.
            Removed: watson watson  (twice as it lists enable and disable)
  
  Let's test our command to make sure debugging is disabled.
    > foo
    201
  
  As shown, this allows some great flexibility to debug code on the fly
  with pinpoint accuracy of where and how you want things to debug.
  
  There are more advanced features that are not covered in this basic
  tutorial as this is meant to just get you started.  For more help
  please check the following help entries:
  
  --: help %_      -- This will give you the total overview of how the label
                      debugging engine works and what it is doing under
                      the hood.  You do not need ot use @label at all to
                      make use of this, but @label is intended as an easy
                      front end to make it less... challanging.
  
  --: help %_var   -- These are the variables that are set when you interface
                      with the @label comamnd.  You may set these manually
                      if you so desire.
  
  --: help @label  -- The main front-end engine for the entire label debug
                      system.  While you don't have to use it, it does make
                      things a bit easier.
  
  See Also: @label, %_, %_var, TRACE, ruler()

[PREV] [TOP] [NEXT]

@label2

  Command: @label/<switch> <label>=<target>:<start>,<end>  (CONTINUED)
    
  The following switches are available:
  Syntax:  @label/add <label>=<object>/<attr>:<start>,<end>
             - Add the label at the specified positions.  It requires two
               positions since you will want a start and stop point for
               each label.  You may use the strings START and END 
               to specify the very beginning and the very end of the
               attribute when adding labels.
  
  Syntax:  @label/add/try <label>=<object>/<attr>:<start>,<end>
             - When used in junction with /add it will show you what
               the new attribute would look like if it inserted the
               labels.  It's useful to make sure you have the position
               properly set.
  
  Syntax:  @label/del <label>=<object>/<attr>
             - Remove the specified label (both start and stop points) 
               from the attribute.  This removes all occurances.
  
  Syntax:  @label/purge <object>/<attr>
             - Remove all labels (both start and stop points) from the
               specified attribute.
  
  Syntax:  @label/list <object>[/<attr>]
             - List all labels (both start and stop points) from the
               specified attribute.  This will list all other label
               dependant values of that target.  If you specify the
               object without an attribute, it just lists all global
               trace values for that object.
  
  { see 'help @label3' to continue syntax and detailing labels of switches  }
  
[PREV] [TOP] [NEXT]

@label3

  Command: @label/<switch> <label>=<target>:<start>,<end>  (CONTINUED)
    
  Syntax:  @label/enable <object>/<label> [=<color|wipe>]
             - Will enable the given label to your trace output.  This
               essentially adds it to the 'TRACE' attribute.  This can
               optionally remove label-specified colors that are in
               the form 'TRACE_COLOR_LABEL' where 'LABEL' is the label.
  
  Syntax:  @label/disable <object>/<label> [=<color|wipe>]
             - Will remove the given label from your trace output.  This
               removes the label from the 'TRACE' attribute.  This can
               optionally remove label-specified colors that are in
               the form 'TRACE_COLOR_LABEL' where 'LABEL' is the label.
  
  Syntax:  @label/color <object>/<label|general> = <color|wipe>
             - This sets either the 'general' color defined by your
               TRACE_COLOR attribute or the label specific color which
               is defined by TRACE_COLOR_LABEL.  If you specify 'wipe'
               it will delete the attribute.
  
  Syntax:  @label/grep <object>[/regexp] = <string|wipe>
             - This will set your TRACE_GREP string or if you specify
               'wipe' will remove it. If you specify the /regexp
               option it will also set the attribute REGEXP.
  
  Syntax:  @label/ruler <object>/<attribute> [=<ruler value>]
             - This will work just like ruler() does.  You may specify
               an optional <ruler value>.  The rule value must be between
               0 and 100 and must be a multiple of 10.  The default value
               is '60' which fits inside a 79 column width.
  
  { see 'help @label4' for examples }

[PREV] [TOP] [NEXT]

@label4

  Command: @label/<switch> <label>=<target>:<start>,<end> (CONTINUED)
    
  NOTE:  Any label that starts with a '-' (eg: %_<-foo>) is an end/disable
         label.  This would stop the tracing.  This is explained more in
         'help %_'
   
  Examples:
    > @vd me=[add(1,1)][sub(2,2)][div(3,3)]
    Set.
    > @label/ruler me/vd=60
           | ---------|10-------|20-------|30-------|40-------|50-------|60 |
           | [add(1,1)][sub(2,2)][div(3,3)]                                 |
    0      | 123456789012345678901234567890123456789012345678901234567890   |
           | ---------|10-------|20-------|30-------|40-------|50-------|60 |
    > @label/add/try test=me/vd:10,20
    @label: /add [/try] would have modified the attribute to look like:
    [add(1,1)]%_<test>[sub(2,2)]%_<-test>[div(3,3)]
    > @label/add test=me/vd:10,20
    @label: /add successfully added label 'test' to attribute.
    > @label/del test=me/vd
    @label: /del removed label 'test'.  1 enable, 1 disable.
    > @label/del test=me/vd
    @label: /del could not find label 'test' in attribute.
    > @label/add test=me/vd:10,20
    @label: /add successfully added label 'test' to attribute.
    > @label/list me/vd   (label starts are green, ends are red)
    @label: /list of all labels for attribute
            Enable:[   1] test
           Disable:[   1] test
    > @label/purge me/vd  (label starts are green, ends are red)
    @label: /purge removed labels.  1 enable, 1 disable.
            Removed: test test
  
  See Also: %_, SUBSTITUTIONS, TRACE, trace(), @label, ruler()

[PREV] [TOP] [NEXT]

@Lalias

  Command: @lalias[/<switch>] <object> = <entrance-list>
  Attribute: Lalias
 
  Sets up a set of alternate commands that may be used as synonyms for the
  command 'leave' when you are inside a player or a thing.  The alternate
  commands are separated by semicolons just like in exit names.
 
  Leave aliases are checked for after exitnames and built-in MUSH commands, but
  before enter aliases and $-commands.
 
  This attribute is meaningful for players and things, and will never be
  automatically looked at on rooms or exits.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @lalias car = get out;climb out;out;open door;outside
  
  See Also: @ealias, enter, leave
  
[PREV] [TOP] [NEXT]

@last

  Command: @last <player>
  This command displays a short 'connection history' for <player>, showing
  recent successful and failed connection attempts, as well as the total
  number of successful and failed connections.
  You can only display information about yourself or people you control.
  
[PREV] [TOP] [NEXT]

@leave

  Command: @leave[/<switch>] <object> = <message>
  Attribute: Leave
 
  Sets the message that a player sees when leaving an object or room, whether
  by using an exit, the enter or leave commands, or by teleporting.
 
  Function references and %-substitutions are allowed in leave messages, and
  are evaluated when someone leaves the object.  In function references,
  'me' refers to the object being left, while %-substitutions that refer
  to the enactor (such as %n, %#, %p, etc) refer to the player leaving the
  object.
 
  This attribute is meaningful for players, things, and rooms, and will never
  be automatically triggered on exits.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @leave car = You unbuckle your seatbelt and climb out of the car.
  
  See Also: leave, @aleave, @oleave
  
[PREV] [TOP] [NEXT]

@lemit

  Command: @lemit <message>
           @emit/room <message>
  
  Please see help on @emit.
  
  This is an alias for @emit/room.
  
  See Also: @emit

[PREV] [TOP] [NEXT]

@lfail

  Command: @lfail[/<switch>] <object> = <command-list>
  Attribute: Lfail
 
  Sets the message that a player sees when he tries to leave it but fails
  because the player fails the object's leave lock.
 
  The leave lock only affects the 'leave' command and its aliases (set via
  the @ealias command), it does not affect going home, using an exit in the
  location, or teleporting out.
 
  This attribute is meaningful for players and things, and will never be
  automatically triggered on rooms or exits.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @lfail plane = You don't have a parachute!
  
  See Also: @aleave, @alfail, @lalias, @leave, @oleave, @olfail, leave
  
[PREV] [TOP] [NEXT]

@lfunction

  Command: @lfunction[/<switches>] [<function>] [=<object>/<attr> | <value>]
   
  This command creates a localized function named <function>.  A localized
  function is only seen by the owner of the target and all things owned by
  that target.  Function existance is checked by the object doing the 
  execution of the code, thereby allowing owners the ability to use their
  own functions in their own code without worry of cross-funtion evaluation.

  When invoked, the arguments to the function are loaded into %0-%9, 
  the <attr> attribute from <object> is fetched, and substitution is 
  performed on the resulting text.  The result of that substitution is 
  returned as the function result.
  
  You may only have 20 localized functions defined.
  
  The following switches exist:
    /privilege  - the function is evaluated as if the evaluation were being 
                  performed by the object on which it is stored, instead of 
                  as if it were being performed by the invoker of the function.
    /list       - list all current softcoded functions (with dbref#/attr's)
    /preserve   - the function preserves setq registers (r(0)-r(9)).
    /delete     - delete the specified user-defined function.
    /display    - displays the details of the specified function.
    /protect    - all setq registers called in a localized function are nulled.
    /notrace    - the specified function when defined can't be TRACEed.
    /max        - Set the maximum number of arguments for the function.
                  The default is '-1' or unlimited.
    /min        - Set the minimum number of arguments for the function.
                  The default is '-1' or 0.
  
  {see 'help @lfunction2' to continue}

[PREV] [TOP] [NEXT]

@lfunction2

  Command: @lfunction[/<switches>] [<function>] [=<object>/<attr>]
  
  The function definitions created by @lfunction are not stored in the database
  so they need to be re-created each time the RhostMUSH is started.  It is
  recommended that the Startup attribute for the target include code to set up
  all global functions.  The privalaged and preserved, protect, and notrace 
  switches may be combined.
   
  All global functions have precedence over local functions.  All built-in
  functions have priority over all other functions (unless overridden).
  Listing local functions will only display the functions that you have
  control over, meaning wizards will see all local functions defined and
  the owners of those functions.
  
  Examples:  @lfunction myfunction=#123/myattribute
             @lfunction/priv/pres myfunction=#123/myattribute
             @lfunction/priv/pres/prot myfunction=#123/myattribute
             @lfunction/priv/pres/prot/notrace myfunction=#123/myattribute
             @lfunction/list
             @lfunction/display myfunction
             @lfunction/delete myfunction
             @lfunction/delete #12_myfunction (delete myfunction of user #12)
             @lfunction/max myfunction=5
             @lfunction/min myfunction=3
  
  Note: With the /list switch, the following letters represent the following:
             W - privalaged
             p - preserved
             + - protected
             t - notrace
             ! - flagged (a permission flag exists for that function)
  
  You will see the MAX and MIN fields only if they are outside the defaults. 
  
  Note:  You may use @lfunction/display to see the flag permissions.
  
  When deleting functions, if you wish to specify a local function that is
  by a specific user, you may use the form:
     @lfunction/del <dbref>_<function>
  
  Example:
     > @function/del #12345_myfunction
  
  See Also: u(), streval(), eval()
 
[PREV] [TOP] [NEXT]

@link

  Command: @link <object>=#<number>/here/home
  When used on a player or a thing, this command sets the object's home
  to the indicated location.  The destination must be owned by you or be an
  ABODE room, and you must pass the destination's LinkLock.
 
  When used on a room, this command sets the room's drop-to, where objects
  dropped in the room go.  The destination must be a room that is either owned
  by you or is LINK_OK, and you must pass the destination's LinkLock.
 
  For exits, this command sets the destination if the exit is currently
  unlinked, you control the destination or it is set LINK_OK, and you pass the
  destination's LinkLock.  You can @link an unlinked exit regardless of who
  owns it or the lock set on it, you are made the owner if you successfully
  link to the destination.  Linking an exit costs 1 coin, and if the exit was
  owned by someone else, you also reimburse the former owner 1 coin
  (making the total cost to you 2 coins).
  
{ 'help @link2' for more }
  
[PREV] [TOP] [NEXT]

@link2

  Note that in all the above cases that it is the player performing the @link
  command that must pass the LinkLock, not the object being linked.
  Therefore, you should use the '$' lock qualifier if you want to prevent
  specific players from linking to your LINK_OK locations, as simply locking
  against '*<playername>' does not lock out their puppets.
 
  You may also @unlink players at your location IF the following conditions
  are met:
    1) You own the location
    2) The player is at your location and that happens to be his home.
    3) there is a valid default home defined for the mush
  
  See Also: @dig, @open, @unlink, DROP-TOS, HOMES, LINKING
  
[PREV] [TOP] [NEXT]

@list

  Command: @list [<option> [<subtopic> [<pagenumber>]] 
  
  Lists information from internal databases.  Information is available
  about the following options:
    attributes      - Valid object attributes.
    commands        - Commands that you may use (excluding the 
                      attribute-setting commands as well as any exits, and
                      $-commands available).
    costs           - Lists the costs associated with many commands and
                      actions.
    default_flags   - Lists the flags that new objects receive by default
                      when created.
    flags           - Lists the name and letter of all the flags.
    functions       - Lists all the available functions.
    options         - Lists several global options and limits.
        |             You may specify subtopics: boolean, values, config, 
        |             mail, and system
        +-> boolean - Subtopic option for listing boolean values
        +-> values  - Subtopic option for listing int values
        +-> config  - Subtopic option for listing config options
        +-> mail    - Subtopic option for listing mail options
        +-> system  - Subtopic option for listing system settings
    switches        - Lists what commands support switches and the switches
                      that they do support.
    toggles         - Lists toggles supported by the mush.
  
  The information provided by the @list command is definitive, as it reads
  the internal tables to produce the information it displays.  Specifying
  @list with no argument lists the options you may use.
  
{help @list2 for a listing of subtopics}
  
[PREV] [TOP] [NEXT]

@list2

  @list2 - Continued
  
  Command: @list [<option> [<subtopic> [<pagenumber>]] 
  
  @list options has subtopics.  You can issue them by: @list options <subtopic>
  @list options subtopics have page values:  @list options <subtopic> <page>
  
  The following topics have sub-topics currently:
    OPTIONS    boolean   - show all available boolean configs you can see.
               values    - show all available values that you can see.
               config    - show all current status/config information.
               mail      - show all current hardcoded mail configuration.
  
  Examples:
    > @list options boolean     (For first page - default)
    > @list options boolean 2   (For second page) 
  
  See Also: help, news
  
[PREV] [TOP] [NEXT]

@listen

  Command: @listen[/<switch>] <object> = <string>
  Attribute: Listen
 
  This attribute contains a wildcard pattern that the object listens for.
  Anything spoken, posed, emitted, or whispered in the room that <object> is
  in, as well as messages resulting from using objects (such as Opay and Succ
  messages) are checked against the Listen attribute.  When the object hears 
  something that matches the pattern, it triggers the Ahear attribute, as
  well as either the Amhear or Aahear attributes, as appropriate,
  substituting %0 the string that matched the first wildcard character in the
  Listen, %1 for the second. etc.  If the pattern in the Listen attribute is
  matched, objects in <object>'s inventory will also hear the message and
  have a chance to match it.  Objects whose Listen attribute is set to
  anything will be listed when a @sweep command is run by someone in the
  same room.
 
  If the @listen pattern is matched, then the object's contents will
  hear the message also, prefixed by the text in @inprefix if it is set.  Any
  text that matches any pattern specified in @infilter will not be sent to
  the contents.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @listen camera = * has arrived.
           @ahear camera = @va me = %va %0
  
  See Also: @aahear, @ahear, @amhear, @sweep, @inprefix, @infilter
  
[PREV] [TOP] [NEXT]

@listmotd

  Command: @listmotd
  Displays the current message-of-the-day.  Note that it is displayed when
  you connect to your character.
  
[PREV] [TOP] [NEXT]

@lock

  Command: @lock[/<whichlock>] <object>=<key>
           @lock <object>/<attrib>
   
  The first form locks <object> to a specific key(s).  Type 'help @lock keys'
  for a list of the keys you may use.
   
  <whichlock> indicates which lock you want to set on the object.  If you
  don't specify one, you set the Default lock. Type 'help @lock locks' for
  a list of the locks you may set and what they are used for.
   
  The second form locks the indicated attribute of the named object, so that
  when the object is @chowned, the attribute will remain owned by you.
  It may also be used when you own an attribute on an object that you do not
  own, in this case it prevents the object's owner from @chowning the
  attribute to himself, and prevents anyone from modifying or removing the
  attribute.  The following sub-topics exist:
   
         help mail lock   - help on how to set a mail lock.
         help @lock keys  - list of valid keys you can use in @locking.
         help @lock locks - list of available locks you can @lock.
         help @lock type <lock> - give detailed help on the specific lock.
         help userlocks   - a special way to define user-defined locking.
  
  See Also: @unlock, @lset, @chown, lock(), elock()
  
[PREV] [TOP] [NEXT]

@lock attribute

  ATTRIBUTE LOCKS:
 
  Key: <attribute>:<pattern>
       +<attribute>:<wildcard-pattern>
       =<attribute>:<wildcard-pattern>
 
  You may lock on whether a specific attribute on the player attempting to
  pass the lock matches a pattern.  Example: '@lock thing=sex:m*' will lock
  thing to anyone whose sex starts with an M. Wild cards, greater than and
  less than may be used, for example: '@lock a-f=name:<g' will lock the exit
  a-f against any one whose name is higher than f.
 
  Both the player testing the lock and every object in his inventory is
  checked, the player passes the lock if any of those objects passes the lock.
  If the attribute name is prefixed by a = then only the player is checked.
  Similarly, if the attribute name is prefixed by a + then only objects in
  the player's inventory are tested.
   
{ 'help @lock attribute2' for more }
  
[PREV] [TOP] [NEXT]

@lock attribute2

  Note: you may lock against any attribute, but the locked object must be
  able to read the attribute from the player attempting to pass the lock or
  the lock will fail.
 
  Examples:
    > @lock men's room=sex:m*
    > @lock a-f=name:<g
    > @lock post office=email:*@*
  
  See Also: ATTRIBUTE OWNERSHIP, @lock evaluation
  
[PREV] [TOP] [NEXT]

@lock carry

  CARRY LOCKS:
 
  Key: +<object>
 
  You pass a carry lock if you are carrying the named object.
 
  Example:
    > @lock secret passage = +magic bus
    You can only traverse the secret passage if you are carrying the
    magic bus.  The bus cannot enter the passage on its own (perhaps
    when you are driving it).
  
  See Also: @lock is, @lock normal
  
[PREV] [TOP] [NEXT]

@lock compound

  COMPOUND LOCKS:
 
  Key: <key> & <key>
       <key> | <key>
       !<key>
       ( <key> )
 
  You can make complex locks by combining keys with the logical AND and OR
  operators (& and ! respectively), or by using the NOT operator.  You
  may also group complex locks with parentheses.
 
  Examples:
    > @lock exit = me & !me
    An impossible lock, nothing can be both you and not you.
 
    > @lock message = me | *recipient
    Both you and the player recipient may get the message.
  
[PREV] [TOP] [NEXT]

@lock evaluation

  EVALUATION LOCKS:
 
  Key: <attribute>/<value>
 
  Evaluation locks let you evaluate one of your attributes and compare the 
  result against a value stored in the lock.  The result must be an exact
  match (no wildcarding allowed, but uppercase and lowercase are considered
  to be the same).  When evaluating the attribute the enactor substitutions
  (%#/%n/etc) are replaced with information about the player trying to pass
  the lock, and 'me' and %! refer to the locked object or exit.
 
  If you call an indirect lock and the indirect lock is an evaluation lock
  (or is a compound lock that includes an evaluation lock), then the original
  lock object is checked for the attribute first, followed by the object that
  has the actual evaluation lock.  If there are multiple levels of indirection
  the intermediate locks are not checked.
   
{ 'help @lock evaluation2' for more }
  
[PREV] [TOP] [NEXT]

@lock evaluation2

  Examples:
    > @lock bank=checkmoney/1
    > &checkmoney bank=[gt(money(%#),5000)]
    Only people and objects with more than 5000 pennies may pass.
    Note: this lock requires wizard privileges to read the worth of other
    players.
 
    > @lock divisible_by_five_club = checkdiv/0
    > &checkdiv divisible_by_five_club = [mod(mid(%#,2,20),5)]
    Only objects whose db-number is divisible by 5 may pass.
  
  See Also: @lock attributes
  
[PREV] [TOP] [NEXT]

@lock indirect

  INDIRECT LOCKS:
 
  Key: @<object>
 
  You may reference the lock on another object and use the result of
  evaluating that other object's lock.    You pass an indirect lock if you
  pass the default lock on <object>.  This is especially useful if you
  have a large number of objects or exits that want to have the same lock,
  and you want to be able to update one object and have all the other
  locks change at the same time.
 
  <object> is searched for when you enter the @lock command and its
  database number is stored in the lock, so something like
  '@Lock north=@master.lock' is safe even if you are going to move master.lock
  to another location.
 
  Examples:
    > @lock master.lock = me
    > @lock north = @master.lock
    > @lock south = @master.lock
    North and south all reference the lock on master.lock, so you may change
    the lock on all three exits by changing master.lock.
  
  See Also: @lock normal
  
[PREV] [TOP] [NEXT]

@lock is

  IS LOCKS:
 
  Key: =<object>
 
  You pass an is lock only if you are the named object.
 
  Example:
    > @lock mystical highway = =magic bus
    Only the magic bus may travel down the mystical highway.  You cannot
    travel the highway if you are carrying the bus.
  
  See Also: @lock carry, @lock normal
  
[PREV] [TOP] [NEXT]

@Lock keys

 
  You may use the following keys when setting locks.  For information about
  a particular type of key, type:
  
                          'help @lock <Key Type>'.
 
  Key Type    Form in @Lock Command
  ----------  ------------------------------
  Normal      <object>
  Is          =<object>
  Carry       +<object>
  Ownership   $<object>
  Indirect    @<object>
  Attribute   <attribute>:<wildcard-pattern>
              +<attribute>:<wildcard-pattern>
              =<attribute>:<wildcard-pattern>
  Evaluation  <attribute>/<value>
  Compound    <key> & <key>
              <key> | <key>
              !<key>
              ( <key> )
  
  Note: Evaluation locks pass '%0' for uselocks.  
        0 -- default (like when using 'use')
        1 -- $command is checked
        2 -- ^listen is checked
   
[PREV] [TOP] [NEXT]

@lock locks

  You can set the following locks:
 
     DefaultLock:  Exits:          controls who may traverse the exit to
                                   its destination.
                   Rooms:          controls whether the player sees the SUCC
                                   or FAIL message for the room following the
                                   room description when looking at the room.
                   Players/Things: controls who may GET the object.
     Basic:        All:            This is an alias for 'DefaultLock' above.
     EnterLock:    Players/Things: controls who may ENTER the object if the
                                   object is ENTER_OK.
                   Rooms:          controls who may enter the room by leaving
                                   an object inside that room.
     GiveLock:     Players/Things: controls who may give the object.
     LeaveLock:    Players/Things: controls who may LEAVE the object.
     LinkLock:     All but Exits:  controls who may link to the location if 
                                   the location is LINK_OK (for linking exits
                                   or setting drop-tos) or ABODE (for setting
                                   homes)
     PageLock:     Players:        controls who may page the player.
     ParentLock:   All:            controls who may make @parent links to the
                                   object.
     ReceiveLock:  Players/Things: controls who may give things to the object.
  
{ 'help @lock locks2' for more  or 'help @lock type <type>' for locktype help}
  
[PREV] [TOP] [NEXT]

@lock locks2

     DropLock:     All:            controls who may drop the object.
     SpeechLock:   All but Exits:  controls who may talk in target location.
     TeloutLock:   All but Exits:  controls who may teleport out of the
                                   location.
     TportLock:    Rooms/Things:   controls who may teleport there if the
                                   location is JUMP_OK.
     UseLock:      All but Exits:  controls who may USE the object, GIVE the
                                   object money and have the PAY attributes
                                   run, have their messages heard and possibly
                                   acted on by LISTEN and AxHEAR, and invoke
                                   $-commands stored on the object.
     UserLock:     All:            Not used by MUSH, is intended to be used
                                   in MUSH programming where a user-defined
                                   lock is needed.  This can also be used as
                                   a REALITY_LEVEL Lock if enabled to do so.
     TwinkLock:    All:            Allows people to alter your object.  If
                                   set on a player, all they own is affected.
     ZoneWizLock:  ZoneMaster:     Allows people control and modify
                                   ability in a zone. *CAREFUL*  See type
                                    help for details.
     ZoneToLock:   ZoneMaster:     Allows people to add objects to your
                                   zone.
  
{ 'help @lock locks3' for more  or 'help @lock type <type>' for locktype help}
  
[PREV] [TOP] [NEXT]

@lock locks3

     DarkLock:     All:            Specifies who can see dark things/rooms/etc 
     OpenLock:     Rooms/Things:   Specifies who can open an exit at that
                                   given location.
     DropToLock:   Rooms/Things:   Specifies who can drop objects at that
                                   given location. 
     GiveToLock:   All but Exits:  Specifies who can give things while at that
                                   given location.
     GetFromLock:  All but Exits:  Specifies who can get things while at that
                                   given location.  This takes into account
                                   the lock at the enactor location and target
                                   location.
     ChownLock:    All:            Specifies who may chown an item if set
                                   CHOWN_OK.  No lock means anyone can.
  
     For mail locking, read the help on HELP MAIL LOCK
     For help on the types of locks, type 'help @lock type <type>'
  
  See Also: mail lock
  
[PREV] [TOP] [NEXT]

@lock normal

  NORMAL LOCKS:
 
  Key: <object>
 
  You pass a normal lock if you either are the named object or if you carry
  the named object.  <object> may be the name or #number of a thing,  a
  playername prefixed by an asterisk (*<playername>), 'me', or 'here'.
 
  Examples:
    > @lock treasure room = secret key
    > @lock private area = me
  
  See Also: @lock is, @lock carry
  
[PREV] [TOP] [NEXT]

@lock ownership

  OWNERSHIP LOCKS:
 
  Key: $<object>
 
  You pass an ownership lock if you have the same owner as <object>.
 
  Examples:
    > @lock mystuff=$me
    Only objects you own may use the mystuff exit.
 
    > @lock/page me = !$*TinyJerk
    Neither TinyJerk nor any of his objects may page you.
  
  See Also: @lock normal
  
[PREV] [TOP] [NEXT]

@lock type ChownLock

  Lock Type: ChownLock
  Syntax   : @lock/chown <target>=<key>
  
  Rooms, Objects, Exits:
    This controls who may @chown an item if it was previously set with
    the CHOWN_OK flag.  If this lock does not exist, then anyone may
    chown an item set CHOWN_OK.  This lock works on all types except
    players who always own themselves.
  
  Players:
    This lock is meaningless for players, as is the CHOWN_OK flag.
  
[PREV] [TOP] [NEXT]

@lock type DarkLock

  Lock Type: DarkLock
  Syntax   : @lock/dark <target>=<key>
  
  Objects, Players, Exits:
     This controls who may see the item if it is DARK at the location they
     look at.  If they already had control of the object, this lock is
     meaningless.  If the lock does not exist, DARK items are treated
     normally.
  
  Rooms:
     This controls the darkness level of the room to the player.  If the
     player passes the lock, that room will be considered NOT DARK for that
     player.  If the lock does not exist, the dark room will be treated
     normally.  Please note that all items inside that room that are dark
     are treated on a separate basis for the DarkLocks.
  
[PREV] [TOP] [NEXT]

@lock type DefaultLock

  Lock Type: Defaultlock 
  Syntax   : @lock <target>=<key>
             @lock/default <target>=<key>
  
  Objects, Players:
     This lock specifies who is able to pick up (GET/TAKE) the target.  If
     you do not pass the lock, you will not be able to pick up the target.
     If this lock is not set, then anyone will be able to pick it up.
  
  Rooms:
     Controls if the player is able to see the SUCC (@succ) or FAIL (@fail)
     messages of the room when they look at the room.
  
  Exits:
     Controls who may pass through the exit to it's destination.  If you
     do not pass the lock, you will not be able to go through that exit.
     An exit with no lock is freely accessable.
  
[PREV] [TOP] [NEXT]

@lock type DropLock

  Lock Type: DropLock
  Syntax   : @lock/drop <target>=<key>
  
  Rooms, Exits, Players, Objects:
     This controls who may drop the target item.  If you do not pass the 
     lock you will be unable to drop the item.  If no lock exists, you will
     be able to drop the target freely.
  
  
[PREV] [TOP] [NEXT]

@lock type DropToLock

  Lock Type: DropToLock
  Syntax   : @lock/dropto <target>=<key>
  
  Objects, Rooms:
     This controls who may drop items AT the location.  If the player
     passes the lock, they will be permitted to drop items at that location.
     If they do not pass the lock, they will be forbidden to drop anything
     at that location.  If the lock does not exist, dropping items will
     behave normally (based on permissions and any DropLocks).
  
  Exits, Players:
     This lock is meaningless on players and exits.
  
[PREV] [TOP] [NEXT]

@lock type EnterLock

  Lock Type: EnterLock
  Syntax   : @lock/enter <target>=<key>
  
  Objects, Players:
     This lock specifies who will be able to enter the target when the 
     ENTER_OK flag is set on it.  If you do not pass the lock, you will be
     unable to enter the target.  If the lock does not exist and the 
     ENTER_OK flag is set, then anyone will be able to enter it.
  
  Rooms:
     This lock specifies who may enter the room from an object (or container)
     inside that room.  If they do not pass the room's EnterLock, then they
     will be unable to leave that object.
  
  Exits:
     This lock is meaningless for exits.
  
[PREV] [TOP] [NEXT]

@lock type GetFromLock

  Lock Type: GetFromLock
  Syntax   : @lock/getfrom <target>=<key>
  
  Objects, Players, Rooms:
     This controls who may get things AT the location.  If the target passes
     the lock, it will be able to get items while at that location.  If they
     do not pass the lock, they will be forbidden to get anything while at
     that location.  If the lock does not exist, getting items in that 
     location behaves normally (based on permissions and locks on items).
     This checks first the lock at the enactor's location, THEN it checks
     the lock at the target location.  If either of those locks are not passed
     then the target may not be gotten by the enactor.
  
  Exits:
     This lock is meaningless on exits.
  
[PREV] [TOP] [NEXT]

@lock type GiveLock

  Lock Type: GiveLock
  Syntax   : @lock/give <target>=<key>
  
  Objects, Players:
     This lock specifies who may give away the target.  If you do not pass
     the lock, you will be unable to give the object to anything or anyone.
     If the lock does not exist, then it can be given away freely.
  
  Exits, Rooms:
     This lock is meaningless on rooms and exits.
  
[PREV] [TOP] [NEXT]

@lock type GiveToLock

  Lock Type: GiveToLock
  Syntax   : @lock/giveto <target>=<key>
  
  Objects, Players, Rooms:
     This controls who may give things AT the location.  If the target passes
     the lock, it will be able to give items while at that location.  If they
     do not pass the lock, they will be forbidden to give anything (except 
     money) at that location.  If the lock does not exist, giving items in 
     that location behaves normally (based on permissions and any GiveLocks).
  
  Exits:
     This lock is meaningless on exits.
  
[PREV] [TOP] [NEXT]

@lock type LeaveLock

  Lock Type: LeaveLock
  Syntax   : @lock/leave <target>=<key>
  
  Objects, Players:
     This lock specifies who may leave the target.  If you do not pass the
     lock, you will be unable to leave the object (via the LEAVE command).
     If the lock does not exist, then it can be left freely.
  
  Exits, Rooms:
     This lock is meaningless on rooms and exits.
  
[PREV] [TOP] [NEXT]

@lock type LinkLock

  Lock Type: LinkLock
  Syntax   : @lock/link <target>=<key>
  
  Objects, Players, Rooms:
     This lock specifies who may link soemthing TO the location if that
     location is set LINK_OK.  If that location is set ABODE, then that
     target may also be set as a HOME.  If there is no lock, it will be
     able to be linked to freely.
  
  Exits:
     This lock is meaningless on exits.
  
[PREV] [TOP] [NEXT]

@lock type OpenLock

  Lock Type: OpenLock
  Syntax   : @lock/open <target>=<key>
  
  Objects, Rooms:
     This controls who may open exits AT the location.  If the player
     passes the lock, they will be allowed to open an exit out from that
     room.  If the lock does not exist, permission to open exits at
     that location will behave normally.
  
  Players, Exits:
     This lock is meaningless on players and exits.
  
[PREV] [TOP] [NEXT]

@lock type PageLock

  Lock Type: PageLock
  Syntax   : @lock/page <target>=<key>
  
  Players:
     This lock determins who is allowed to page you.  If they do not pass the
     lock, they will be unable to page you and receive your REJECT message
     (see help on @reject).  If there is no lock, then people can page you
     freely.
  
  Rooms, Exits, Objects:
     This lock is meaningless on rooms, exits, and objects.
  
[PREV] [TOP] [NEXT]

@lock type ParentLock

  Lock Type: ParentLock
  Syntax   : @lock/parent <target>=<key>
  
  Players, Rooms, Exits, Objects:
     This lock determins who may parent (@parent) an item to the target.  If
     you do not pass the lock, you will be unable to parent something to it.
  
[PREV] [TOP] [NEXT]

@lock type ReceiveLock

  Lock Type: ReceiveLock
  Syntax   : @lock/receive <target>=<key>
  
  Players, Objects:
     This determins who may give things to the target.  If you do not pass
     the lock, you will be unable to give anything to the target.  If the
     lock does not exist, you may give things to it freely.  Players need
     to be ENTER_OK to be given things.
  
  Rooms, Exits:
     This lock is meaningless on exits and rooms.
  
[PREV] [TOP] [NEXT]

@lock type SpeechLock

  Lock Type: SpeechLock
  Syntax   : @lock/speech <target>=<key>
  
  Rooms, Players, Objects:
     This defines who may talk at the target location.  If you do not pass
     the lock, you will be unable to use any type of communication at that
     location.  This includes, say, pose, @emit, @oemit, and the like.
     Admin level 4 and higher override this lock automatically.  If the lock
     does not exist, you will be able to speak freely.
  
  Exits:
     This lock is meaningless on exits.
  
[PREV] [TOP] [NEXT]

@lock type TeloutLock

  Lock Type: TeloutLock
  Syntax   : @lock/telout <target>=<key>
  
  Rooms, Players, Objects:
     This defines who is allowed to teleport OUT of the target location.  If
     you are unable to pass the lock, you will be unable to @teleport out. 
     Keep in mind that 'home' overrides this lock.  If the lock does not
     exist, you may @teleport out freely.  If a room has a TeloutLock, you
     will be unable to teleport out of objects inside it unless you pass it.
  
  Exits:
     This lock is meaningless on exits.
  
[PREV] [TOP] [NEXT]

@lock type TportLock

  Lock Type: TportLock
  Syntax   : @lock/tport <target>=<key>
  
  Rooms, Objects:
     This controls who may teleport INTO the target location ONLY if the
     JUMP_OK flag is set on the room.  If you do not pass the lock, you will
     be unable to @teleport into the room.  If the room is JUMP_OK and there
     is no lock, you may @teleport there freely.
  
  Players, Exits:
     This lock is meaningless on players and exits.
  
[PREV] [TOP] [NEXT]

@lock type TwinkLock

  Lock Type: TwinkLock
  Syntax   : @lock/twink <target>=<key>
  Special  : %w -- The target that is being checked in a @lock/twink
  
  Rooms, Objects, Exits:
     The twinklock is a unique lock in that it will allow anyone who passes
     the lock control over that object.  THIS CAN BE A SECURITY RISK SO BE
     CAREFUL!  The user who passes the lock will ONLY be able to modify/set
     attributes.  They will be unable to set, modify, or remove flags, locks,
     or anything else on the object.  It is generally wise to have objects
     twinklocked be !INHERIT so that abuse will be limited.  If the lock
     does not exist, then NO ONE other than the owner will be able to modify
     that target.  TwinkLock allows you to control @toggles, @name, @alias
     and attribute control (@mvattr/@cpattr/@set (attributes)/&/etc).  It 
     does NOT however allow you to set/remove locks or flags.
  
  Players:
     Players are special in that just like Rooms, Objects, and Exits, it
     allows direct modification of them as a player, but also in the case
     of player, the TwinkLock is special in that it's an inheritable lock.
     This means if you pass the twinklock of a player, you automatically
     pass that lock on everything that player owns.
  
     Example Lock to block player editing but allows all other owned:
     > say num(player)
     You say "#123"
     > &CANUSE Player=[and(match(v(list),%#),!match(%w,#123))]
     > &LIST Player=#5 #7 #9 #11         (list of target dbref#'s allowed)
     > @lock/twink player=CANUSE/1
  
  Special note:  You can set the item NOMODIFY if you want it to just have
                 examine privalages and not modify privalages.  You may
                 also customize your @lock/twink to check %w against the
                 target player dbref# with a complex lock.
  
[PREV] [TOP] [NEXT]

@lock type UseLock

  Lock Type: UseLock
  Syntax   : @lock/use <target>=<key>
  
  Rooms, Objects, Exits, Players:
     This specifies who may use the object.  Using the object includes giving
     the object money to trigger PAY/COST (@pay/@cost) attributes, being able 
     to USE (@use) the object, triggering any type of listen command or being
     able to use any type of macros (or $-command) commands.  If you do not
     pass the lock, you will be unable to use that object.  If the lock does
     not exist, then anyone will be able to use that object.
  
  Special:  %0 is passed into evaluation locks for uselocks.  The values exist:
     0 -- Default.  Neither a $command or a ^listen (like when you do 'use')
     1 -- $command was triggered
     2 -- ^listen was triggered
    
  See Also: SHOWFAILCMD
 
[PREV] [TOP] [NEXT]

@lock type UserLock

  Lock Type: UserLock
  Syntax   : @lock/user <target>=<key>
  
  Rooms, Objects, Exits, Players:
     This is a dummy lock that has no special purpose inside the MUSH.  This
     is meant entirilly for a user-preference.  This is to be used if you 
     have need to set up a lock-mechanism without having to 'block' locks
     on that particular target.
  
  Special Enhancement:  If enabled, this lock also serves as a reality level
     lock.  This in effect allows special 'tweeking' of reality levels so
     that you may specify additional passes through the reality  The target
     must be set CHKREALITY for this lock to work.  The CHKREALITY toggle is
     only settable by WIZARD and higher.  Depending on the current 
     configuration of the locktype (@list options to see) the lock will check 
     if enactor passes lock on target, or if target passes lock on enactor.  It
     will also check if the values are anded or or'd.  The following options 
     exist:
               0 - Reality level or'd with lock pass based on target
               1 - Reailty level or'd with lock pass based on enactor
               2 - Reality level and'd with lock fail based on target
               3 - Reality level and'd with lock fail based on enactor
     
     In condition 2 and 3, if the lock doesn't exist, it assumes pass 
     automatically.
  
[PREV] [TOP] [NEXT]

@lock type ZoneToLock

  Lock Type: ZoneToLock
  Syntax   : @lock/zoneto <target>=<key>
  
  Rooms, Objects, Exits, Players:
     This allows people who pass the lock to be able to @zone items to your
     zone.  This works similiar to the ParentLock with regards to @parents.
     If the lock does not exist, only those who control the item may @zone it.
  
[PREV] [TOP] [NEXT]

@lock type ZoneWizLock

  Lock Type: ZoneWizLock
  Syntax   : @lock/zonewiz <target>=<key>
  
  Rooms, Objects, Exits, Players:
     This allows people the ability to control and modify anything within that
     zone's realm.  If you pass the lock you will have control, otherwise 
     it will be off limits to you.  If the lock does not exist, only those
     who have power over the target may be able to control and modify it.
     The ZoneWizLock allows the target to modify/examine anything that is
     in that zone as long as it is not WIZARD (bitlevel 5) or higher owned.
     If it is WIZARD or higher owned, then it follows normal permissions on
     that target to what they can do with it.
  
[PREV] [TOP] [NEXT]

@lset

  Command: @lset[/<switches>] <object>[/<lock>] [=<permission>]
  
  The default <lock> if not specified will be the DefaultLock.  An alias
  for DefaultLock is BasicLock.
  
  This function will display or set/unset a <permission> on a lock.  The
  following permissions are available (depending on your permission to set):
    god         -- Only #1 is allowed to set/unset this lock
    immortal    -- Only immortal or higher is allowed ot set/unset this lock
    wizard      -- Only wizard or higher is allowed to set/unset this lock
    councilor   -- Only councilor or higher is allowed to set/unset this lock
    architect   -- Only architect or higher is allowed to set/unset this lock
    guildmaster -- Only guildmaster or higher is allowed to set/unset this lock
    hidden      -- This lock is hidden based on above permission levels
    no_inherit  -- if the @admin config parameter parentable_control_lock is 
                   enabled, stops the lock from being inherited to its children
    visual      -- Makes the lock globally visible
    pinvisible  -- Hides the lock but makes it fetchable/checkable
    no_clone    -- Lock is not copied with a @clone
    
  The following <switches> are available:
    /list       -- List the special permissions on the specified target lock.
  
  Examples:
    > @lset/list *Tester/default
    @lset: [DefaultLock] on Tester(#123): No additional flags set.
    > @lset *Tester/default=no_inherit
    @lset: [DefaultLock] set NO_INHERIT on Tester(#123)
    > @lset/list *Tester/default
    @lset: [DefaultLock] on Tester(#123): no_inherit
    
  See Also: @lock, @unlock, @set, lock(), elock(), lset(), set()
 
[PREV] [TOP] [NEXT]

@mailsig

  Command: @mailsig <targetplayer>=<string>
  
  mail signatures are done by storing a user-def attribute on your character.
  the attribute is called 'MAILSIG'.  To set this attribute, you would do:
  
  Examples:
    @mailsig me=This is my signature.
    &mailsig me=This is my signature.
    @set me=mailsig:This is my signature.
  
  Please keep in mind that this attribute is *NOT* evaluated for functions and
  is taken as-is.
  
  See Also: mail, folder, MAILFILTER
  
[PREV] [TOP] [NEXT]

@moniker

  There is no @moniker.  You actually want @extansi.
  
  If you wish pose, say, and @wall to ansifi your name, set the VARIABLE
  @toggle on yourself.
  
  Please see help on @extansi on how to utilize this.
  
  See Also: @ansiname, @titlecaption, ANSINAME, ansi(), EXTANSI TOGGLE,
            @extansi, @caption  
  
[PREV] [TOP] [NEXT]

@move

  Command: @move[/<switch>] <object> = <command-list>
  Attribute: Move
 
  Sets the message that an object sees after it moves from one location to
  another, whether by using an exit, entering or leaving an object,
  teleporting, or going home.
 
  This attribute is meaningful for players, and things and will never be
  automatically triggered on other object types.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @move bopper = OK.  You're there now.
  
  See Also: @amove, @omove
  
[PREV] [TOP] [NEXT]

@mvattr

  Command: @mvattr <object>=<old>,<new>[,<copy1>]...
  This command moves attributes around on an object.  The attribute <old> is
  renamed <new> (and is copied to <copy1>, <copy2> and so on if specified).
  If you cannot modify the <old> attribute (for instance if you are trying to
  move the Last attribute, or if it were owned by another player), then a new
  copy is made and the original is not removed.  If you are trying to move
  the attribute into an attribute that you have no permission over, then
  the original attribute is not deleted.
  
  See Also: @set, @cpattr
  
[PREV] [TOP] [NEXT]

@name

  Command: @name <object> = <new name>
  
  Changes the name of <object>.  <object> can be a thing, player, exit, or
  room, specified as <name> or #<dbref> or 'me' or 'here'.
 
  See '@list options' as to whether or not a player name may contain 
  spaces.  The default for RhostMUSH is to disallow spaces in player names.
  
  See Also: name(), @protect, @list options, @alias, @ansiname, @extansi, 
            @caption, @titlecaption
  
[PREV] [TOP] [NEXT]

@nameformat

  Command: @nameformat[/<switch>] <object> = <string>
  Attribute: NameFormat
  
  This attribute allows a user to define a user-presentable way for names.
  This replaces the normal name of the target when viewed from the INSIDE.
  Thus, this only has effects for rooms, and for objects only when you are
  inside them.  This is meaningless for exits and players.
  
  Examples:
    > look
    A big Room
    You see before you a big room.
    Contents:
    The Goat
    > @nameformat here=[name(me)] (I think?)
    > look
    A big Room (I think?)
    You see before you a big room.
    Contents:
    The Goat
   
  The mush has to be configured to enable this to work.  '@list options'
  
  See Also: @exitformat, @conformat, invformat
  
[PREV] [TOP] [NEXT]

@notify

  Command: @notify[/<switches>] <object>[=<count|pid>]
  Notifies the semaphore <object>, running the first command that waited on
  <object> using the '@wait <object>=<command>' or '
  @wait <object>/<time>=<command>' forms of the @wait command.  If <count> is
  specified, it indicates the number of times the semaphore is notified.
  If there are no commands (or less than <count> commands) pending for
  <object>, then subsequent @waits will not block until the semaphore count
  reaches zero again.
 
  The following switches are available:
     /first - (default) Notify the first command waiting on the indicated
              semaphore (or the first <count> commands).
     /all   - Notify all commands waiting on the semaphore and reset the
              semaphore count to zero.  <count> is ignored.
     /pid   - Notify the command on <object> that matches the pid <pid>.
     /quiet - Issue the notify quietly.  This can be mixed with any of
              the other switches.
 
  See Also: @drain, @ps, @wait, SEMAPHORES, @halt
  
[PREV] [TOP] [NEXT]

@odescribe

  Command: @odescribe[/<switch>] <object> = <message>
  Attribute: Odesc
 
  Sets the message (prefixed by the player's name) that is shown to others in
  the room when someone looks at <object>.  If the @odesc evaluates to null,
  nothing is displayed.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @odesc vase = carefully inspects the vase.
  
  See Also: look, @adescribe, @describe, @idesc, touch, @sotouch, 
            taste, @sotaste, listen, @solisten, smell, @sosmell
  
[PREV] [TOP] [NEXT]

@odfail

  Command: @odfail[/<switch>] <object> = <message>
  Attribute: Odfail
 
  Sets the message (prefixed by the player's name) that is shown to others in
  the same room when someone tries to drop <object> but fails because they
  didn't pass the object's drop lock.  if the message evaluates to null,
  nothing is displayed.
 
  Function references and %-substitutions are allowed in drop failure
  messages, and are evaluated when someone drops the object.  In function
  references, 'me' refers to the object being dropped, while %-substitutions
  that refer to the enactor (such as %n, %#, %p, etc) refer to the dropper.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @odfail sword = tries to put down the sword but it leaps back
                                       into %p hand.
  
  See Also: drop, @adfail, @dfail, @lock
  
[PREV] [TOP] [NEXT]

@odrop

  Command: @odrop[/<switch>] <object> = <message>
  Attribute: Odrop
 
  Sets the message (prefixed by the player's name) that is shown to others in
  the room when someone drops <object>, or to others in the room that the
  player arrives in after taking an exit.  if the message evaluates to null,
  nothing is displayed.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: <object> @odrop loadstone = puts down the loadstone and then
                                       wipes sweat from %p brow.
           <exit>   @odrop elevator = enters the elevator from the lobby.
  
  See Also: drop, @adrop, @drop, DROP-TO, EXITS
  
[PREV] [TOP] [NEXT]

@oefail

  Command: @oefail[/<switch>] <object> = <command-list>
  Attribute: Oefail
 
  Sets the message (prefixed by the player's name) that is shown to others in
  the same room as the player when he tries to enter the object but fails
  because the object is not ENTER_OK or the player fails the
  object's enter lock.  if the message evaluates to null, nothing is displayed.
 
  The enter lock only affects the 'enter' command and its aliases (set via
  the @ealias command), it does not affect exits that lead to the object or
  teleporting in.
 
  This attribute is meaningful for players and things, and will never be
  automatically triggered on rooms or exits.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @oefail car = tries to open the car's door, but it is locked.
  
  See Also: @aefail, @aenter, @ealias, @efail, @enter, @oenter, enter,
            ENTER_OK
  
[PREV] [TOP] [NEXT]

@oemit

  Command: @oemit[/<switch>] <player>=<message>
  Emits <message> to everyone in your current location except for <player>.
  
  The following switches are available:
     /noansi -- Show unevaluated ansi codes.
     /multi  -- take <player> as a multi-target argument.
  
  See Also:  @emit, @pemit, SPOOFING
  
[PREV] [TOP] [NEXT]

@oenter

  Command: @oenter[/<switch>] <object> = <message>
  Attribute: Oenter
 
  Sets the message (prefixed by the player's name) that is shown to others in
  the location being entered when someone enters <object>.  Note that the
  message is shown to those inside the object, not those outside.
 
  This attribute is meaningful for players, things, and rooms, and will never
  be automatically triggered on exits.  If the message evaluates to null,
  nothing is displayed.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @oenter wormhole = enters the wormhole from normal space.
  
  See Also: enter, @aenter, @enter, @oxenter
  
[PREV] [TOP] [NEXT]

@ofail

  Command: @ofail[/<switch>] <object> = <message>
  Attribute: Ofail
 
  Sets the others failure message for <object>.  This message is seen others
  in the same location as the actor when one of these events occurs:
 
    - For exits: Someone tries to traverse the exit but cannot because they
      fail the exit's default lock or the exit is not linked.
    - For players and things: Someone tries to pick up the object but cannot
      because they fail the object's default lock.
    - For rooms, players, and things: Someone looks around inside the room,
      player, or thing and fails the object's default lock.
 
  Substitution and evaluation is performed on the message before it is shown.
  If the message evaluates to null, nothing is displayed.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Examples:
    > @ofail table = tries to pick up the table, but it is too heavy.  <thing>
    > @ofail doorway = tries the knob on the door, to no avail.         <exit>
  
  See Also: get, look, @afail, @fail, FAILURE
  
[PREV] [TOP] [NEXT]

@ogfail

  Command: @ogfail[/<switch>] <object> = <message>
  Attribute: Ogfail
 
  Sets the message (prefixed by the player's name) that is shown to others in
  the same room when someone tries to give away <object> but fails because
  they didn't pass the object's give lock.  If the message evaluates to null,
  nothing is displayed.
 
  Function references and %-substitutions are allowed in give failure
  messages, and are evaluated when someone tries to give away the object.
  In function references, 'me' refers to the object being given away, while
  %-substitutions that refer to the enactor (such as %n, %#, %p, etc) refer
  to the (attempted) giver.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @ogfail blob = tries to give away a sticky blob of goo.
  
  See Also: give, @agfail, @gfail, @lock
  
[PREV] [TOP] [NEXT]

@okill

  Command: @okill[/<switch>] <object> = <message>
  Attribute: Okill
 
  Sets the message (prefixed by the player's name) that is shown to others in
  the room when someone kills <object>.  If the message evalautes to null,
  nothing is displayed.
 
  This attribute is meaningful for players, things, and rooms, and will never
  be automatically triggered on exits.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @okill guard = bashes in the guard's skull, killing him.
  
  See Also: kill, @akill, @kill, BEING KILLED, IMMORTAL, ROYALTY
  
[PREV] [TOP] [NEXT]

@oleave

  Command: @oleave[/<switch>] <object> = <message>
  Attribute: Oleave
 
  Sets the message (prefixed by the player's name) that is shown to others in
  the location being left when someone leaves <object>.  Note that the
  message is shown to those inside the object, not those outside.
 
  This attribute is meaningful for players, things, and rooms, and will never
  be automatically triggered on exits.  If the message evaluates to null,
  nothing is displayed.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @oleave wormhole = departs the wormhole to return to normal space.
   
  See Also: leave, @aleave, @leave, @oxleave
  
[PREV] [TOP] [NEXT]

@olfail

  Command: @olfail[/<switch>] <object> = <command-list>
  Attribute: Olfail
 
  Sets the message (prefixed by the player's name) that is shown to others in
  the same room as the player when he tries to leave it but fails because the
  player fails the object's leave lock.  If the message evaluates to null,
  nothing is displayed.
 
  The leave lock only affects the 'leave' command and its aliases (set via
  the @ealias command), it does not affect going home, using an exit in the
  location, or teleporting out.
 
  This attribute is meaningful for players and things, and will never be
  automatically triggered on rooms or exits.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @olfail plane = thinks about jumping out of the plane without a
                           parachute, but wisely reconsiders.
  
  See Also: @aleave, @alfail, @lalias, @leave, @lfail, @oleave, leave
  
[PREV] [TOP] [NEXT]

@omove

  Command: @omove[/<switch>] <object> = <command-list>
  Attribute: Move
 
  Sets the message that others in the same location see after the object has
  moved to that location from somewhere else, whether by using an exit,
  entering or leaving an object, teleporting, or going home.
 
  This attribute is meaningful for players, and things and will never be
  automatically triggered on other object types.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @omove car = coasts to a stop.
  
  See Also: @amove, @move
  
[PREV] [TOP] [NEXT]

@opay

  Command: @opay[/<switch>] <object> = <message>
  Attribute: Opay
 
  Sets the message (prefixed by the player's name) that is shown to others in
  the room when someone pays <object> enough to satisfy its Cost attribute.
  If the message evaluates to null, nothing is displayed.
 
  This attribute is only meaningful for players and things, and will never be
  automatically triggered on other object types.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @opay Coke machine = slips some change into the coin slot on the
                                Coke machine.  You hear some rumbling from
                                inside the machine and a can of Coke appears
                                in the tray at the bottom of the machine.
  
  See Also: give, @cost, @apay, @pay
  
[PREV] [TOP] [NEXT]

@open

  Command: @open[/<switches>] <direction list> [=<number>[,<direction list>]]
  Creates an exit in the specified direction(s). If <number> is specified,
  it is linked to that room. Otherwise, it is created unlinked. You or anyone
  else may use the '@link' command to specify where the unlinked exit leads.
  Opening an exit costs 1 coin. If you specify <number>, linking costs 1 more
  coin.  You can specify a second direction list (after the comma), which is 
  automatically opened in the room that the new exit goes TO and which is
  linked back to where you are.  I.e.  @open north;n=#1234,south;s
  would open exit 'north;n' from here to #1234, and an exit 'south;s'
  from #1234 to here, assuming you have rights to open exits and link to
  the rooms in question.
  
  Note:  To make variable exits, you @toggle the exit VARIABLE then set
         an appropiate @exitto on it.
   
  The following switches are available:
     /location  - Create the exit in your location (default).
     /inventory - Create the exit on yourself.
  
  You may use the lastcreate() function to see the last thing @open'd
  
  See Also: @dig, @link, LINKING, lastcreate()
  
[PREV] [TOP] [NEXT]

@orfail

  Command: @orfail[/<switch>] <object> = <message>
  Attribute: Orfail
 
  Sets the message (prefixed by the player's name) that is shown to others in
  the same room when someone tries to give <object> a thing that does not
  pass <object>'s receive lock.  If the message evaluates to null, nothing
  is displayed.
 
  Function references and %-substitutions are allowed in receive failure
  messages, and are evaluated when someone tries to give away the object.
  In function references, 'me' refers to the intended recipient of the object,
  while %-substitutions that refer to the enactor (such as %n, %#, %p, etc)
  refer to the (attempted) giver.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @orfail merchant=tries to unload some worthless trash on Astinous.
  
  See Also: give, @agfail, @arfail, @gfail, @ogfail, @rfail, @lock
  
[PREV] [TOP] [NEXT]

@osuccess

  Command: @osuccess[/<switch>] <object> = <message>]
  Attribute: Osucc
 
  Sets the message (prefixed by the player's name) that is shown to others in
  the room when someone picks up the named player or thing, goes through the
  named exit, or looks at the room and passes the room's lock.  If the message
  evaluates to null, nothing is displayed.
 
  Setting Osuccess messages on all takeable objects and usable exits is
  considered good building practice.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Examples: <object> @osucc vase = carefully picks up the vase.
            <exit>   @osucc doorway = opens the door and leaves the room.
                                      The door closes behind %o with a click.
  
  See Also: get, look, @asuccess, @success, SUCCESS
  
[PREV] [TOP] [NEXT]

@otfail

  Command: @otfail[/<switch>] <object> = <message>
  Attribute: Otfail
 
  Sets the message (prefixed by the player's name) that is shown to others in
  the same room when someone tries to teleport to somewhere he does not have
  permission.  You do not see this message if they couldn't teleport out of
  their present location.  If the message evaluates to null, nothing is
  displayed.
 
  Function references and %-substitutions are allowed in teleport failure
  messages, and are evaluated when someone attempts to teleport to the
  specified destination.  In function references, 'me' refers to the teleport
  destination, while %-substitutions that refer to the enactor (such as %n,
  %#, %p, etc) refer to the player attempting the teleport.
 
  When a player teleports another object (@tel <object>=<destination>), the
  lock is checked against the player, not the object.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @otfail here = thinks about teleporting to the Magic Room, but
                          decides against it at the last moment.
  
  See Also: @teleport, @atfail, @tfail, @lock
  
[PREV] [TOP] [NEXT]

@otofail

  Command: @otofail[/<switch>] <object> = <message>
  Attribute: Otofail
  
  Sets the message (prefixed by the player's name) that is shown to others
  in the same room when someone tries to teleport out of somewhere he does
  not have permission.  You do not see this message if they couldn't 
  teleport to their destination location.  If the message evaluates to null,
  nothing is displayed.
  
  Function references and %-substitutions are allowed in teleport failure
  messages, and are evaluated when someone attempts to teleport out of the
  specified location.  In function references, 'me' refers to their current
  location, while %-substitutions that refer to the enactor (such as %n, %#,
  %p, etc) refer to the player attempting the teleport.
  
  When a player teleports another object (@tel <object>=<destination>), the
  lock is checked against the player, not the object.
  
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example:   @otofail here = tries to teleport out of the Magic Room, but
                             is unsuccessful.
  
  See Also: @teleport, @atofail, @tofail, @lock
  
[PREV] [TOP] [NEXT]

@otport

  Command: @otport[/<switch>] <object> = <message>
  Attribute: Otport
 
  Sets the message (prefixed by your name) that others in the room to which
  the object goes see when the object teleports there.  If the message 
  evaluates to null, nothing is displayed.
 
  This attribute is only meaningful for players and things, and will never be
  automatically triggered on other object types.
  
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @otport me = appears in a flash of non-wizardly brilliance.
   
  See Also: @atport, @oxtport, @tport, @teleport
  
[PREV] [TOP] [NEXT]

@oufail

  Command: @oufail[/<switch>] <object> = <message>
  Attribute: Oufail
 
  Sets the message that others in the same room see when someone tries to
  use object but fails the object's use lock.  Note that the other functions
  controlled by the use lock (paying, listening, and $-commands) do not
  trigger Oufail.  If the message evaluates to null, nothing is displayed.
 
  Example: @oufail robot = tries to activate the robot, but to no avail.
   
  See Also: @aufail, @ufail, @use
  
[PREV] [TOP] [NEXT]

@ouse

  Command: @ouse[/<switch>] <object> = <message>
  Attribute: Ouse
 
  Sets the message (prefixed by the player's name) that is shown to others in
  the room when someone uses <object>.  If the message evaluates to null,
  nothing is displayed.
 
  This attribute is only meaningful for players and things, and will never be
  automatically triggered on other object types.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @ouse camera = takes a picture with the camera.
  
  See Also: use, @ause, @use
  
[PREV] [TOP] [NEXT]

@oxenter

  Command: @oxenter[/<switch>] <object> = <message>
  Attribute: Oxenter
 
  Sets the message (prefixed by the player's name) that is shown to others in
  the location being left when someone enters <object>.  Note that the
  message is shown to those outside the object, not those inside.  If the
  message evaluates to null, nothing is displayed.
 
  This attribute is meaningful for players, things, and rooms, and will never
  be automatically triggered on exits.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @oxenter wormhole = climbs into the wormhole and vanishes.
  
  See Also: enter, @aenter, @enter, @oenter
  
[PREV] [TOP] [NEXT]

@oxleave

  Command: @oxleave[/<switch>] <object> = <message>
  Attribute: Oxleave
 
  Sets the message (prefixed by the player's name) that is shown to others in
  the location being entered when someone leaves <object>.  Note that the
  message is shown to those outside the object, not those inside.  If the
  message evaluates to null, nothing is displayed.
 
  This attribute is meaningful for players, things, and rooms, and will never
  be automatically triggered on exits.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @oxleave wormhole = steps out of a hyper spatial wormhole.
   
  See Also: leave, @aleave, @leave, @oleave
  
[PREV] [TOP] [NEXT]

@oxtport

  Command: @oxtport[/<switch>] <object> = <message>
  Attribute: Oxtport
 
  Sets the message (prefixed by your name) that others in the room from which
  the object comes see when the object teleports out.  If the message
  evaluates to null, nothing is displayed.
 
  This attribute is only meaningful for players and things, and will never be
  automatically triggered on other object types.
  
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @oxtport me = disappears in a flash of non-wizardly brilliance.
   
  See Also: @atport, @otport, @tport, @teleport
  
[PREV] [TOP] [NEXT]

@parent

  Command: @parent <object> [=<parent>]
  This command sets the parent of <object> to <parent> (or clears the parent
  if <parent> is omitted.  You must control <object>, and must own <parent>.
  
  If you are parenting rooms, and wish some of the exits of that room to
  not be inherited, set the PRIVATE flag on those exits.
  
  See Also: PARENT OBJECTS., parents(), parent(), children()
  
[PREV] [TOP] [NEXT]

@password

  Command: @password <old password>=<new password>
 
  This command changes your password.
   
  See Also: @name
  
[PREV] [TOP] [NEXT]

@pay

  Command: @pay[/<switch>] <object> = <message>
  Attribute: Pay
 
  Sets the message that is shown to the player who gives <object> enough
  money to satisfy its Cost attribute.
 
  This attribute is only meaningful for things, and will never be
  automatically triggered on other object types.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @pay Coke machine = You slip some change into the slot.
  
  See Also: give, @apay, @cost, @opay
  
[PREV] [TOP] [NEXT]

@pemit

  Command: @pemit[/switches] <what>=<message>
           @pemit/toreality/contents[/list] <realities>/<what>=<message>
  
  Emits <message> only to <what>, or to <what>'s contents of the /contents
  switch is given.  <what> must be either in the same location as you or
  be something you own.  You can also @pemit to distant players if
  pagelocks allow you to page them, and this costs as much as a page
  <This feature is not present in all MUSHes>.  You cannot @pemit to the
  contents of something you don't own.  You may combine switches.
  
  The following switches are available:
    /contents  - Send the message to the contents of the named object.
    /object    - Send the message to the named object.
    /silent    - Same as /object, for PENN compatibility
    /noisy     - Send to the enactor of the command what was pemitted.
    /zone      - Send to the specified zone (if not a zonemaster)
                 Send to all rooms in a zone (if a zonemaster)
    /nosub     - When used in junction with /list, it will keep ## and #@
                 from evaluating.
    /noansi    - Show the string literally and don't process ansi.  Only
                 useful with ZENTY_ANSI enabled (at compiletime).
  
{ help @pemit2 to continue switches listing }
  
[PREV] [TOP] [NEXT]

@pemit2

  The following switches are available: (continued)
    /list      - Send the message to the given list of players.
                 For this, it parses '##'s just like @dolist or iter().
                 Example: @pemit/list #1 #2 #3=hello ##!
                          @pemit/list #1 #2 #3=hello ## (number #@)
                 (The first would return 'Hello #1!' to #1 and so forth)
                 (The second would return 'Hello #1 (number 1)' and so forth)
    /noeval    - Do not evaluate string.
    /reality   - Will check the reality level of the target to see if the
                 target will be able to see the message based on the
                 reality level check.  Need REALITY_LEVELS compiled in.
    /toreality - specify the realities you wish to @pemit to.  Note:  this
                 is only useful for the /content switch.
    /oneeval   - By default @pemit evaluates for every person in /list.
                 This forces a single evaluation.  It assumes /nosub by 
                 default.  This can only be used with the /list switch.

    Note: /toreality has unique syntaxing.  Examples follow:
  
    Syntax:  @pemit/toreality/contents <reality1 ... realityX>/<target>=<msg> 
             @pemit/toreality/list/con <reality1 ... realityX>/<targets>=<msg>
    
    Example: @pemit/toreality/con Invis Umbra/here=Only Umbra and Invis sees.
                
  See Also: page, @emit, @oemit, SPOOFING
  
[PREV] [TOP] [NEXT]

@pipe

  Command: @pipe[/<switch>] [<attribute>]
 
  This command will allow you to pipe output that you would normally see on
  your screen into a specified attribute.  You must have permission to write
  to the attribute, the attribute must be a valid attribute name, and the
  attribute can not be full (or it'll auto-disable upon attempt).  The 
  attribute is also always on the enactor.  You can't specify another object.
  The following switches are used:
    /on     -- Turn on piping to the specified attribute.  
    /off    -- Turn off piping to the attribute.
    /tee    -- This turns on piping but also allows viewing output normally.
    /status -- This gives the current status of your piping.
    /quiet  -- snuff the messages of using the /on and /off switches
  
  Please note, you obviously can not pipe to multiple attributes at once,
  and once the attribute is filled to capacity, piping to that attribute
  will be automatically disabled and output will return to your screen
  as normal.  If you specify /tee output will occur normally to your screen
  but you will still be notified if the attrib is filled or an error
  occured while writing output to it.
  
  If you @toggle yourself NOISY, then every output segment that would show
  up on your screen will notify you that it was piped to the file.  This
  can be spammy, but it is useful if you want some notification and you
  have not used /tee.
  
  If you are still piping to an attribute, it will notify you of this upon
  connection, regardless of the NOISY @toggle. 
  
  You can not use this feature if you are set NO_CODE, GUEST, or WANDERER. 
  
  Example:
    > @pipe/on BOO;WHO;@pipe/off 
    Piping to attribute has been enabled.
    Piping to attribute has been disabled.
    > think v(boo)
    Player Name          On For Idle  Guild       Doing
    Tester                00:01   0s  Citizen
    1 Player logged in. (Bummer.)
  
  See Also: @toggle, NOISY, @set, &

[PREV] [TOP] [NEXT]

@prefix

  Command: @prefix[/<switch>] <object> = <prefix text>
  Attribute: Prefix
 
  This attribute, when set, will be used as a prefix for all text forwarded
  by the 'audible' flag on an object or exit.  The default if this attribute
  is not set is 'From <object name>,' for objects, and 'From a distance,'
  for exits.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example:
    > @fo test=out
    > @set #378=puppet
    test> test grows ears and can now hear.
    > :does something silly.
    Wizard does something silly.
    test> From a distance, Wizard does something silly.
    > @prefix out=From some strange place
    Set.
    > :does something even sillier.
    Wizard does something even sillier.
    test> From some strange place Wizard does something even sillier.
  
  See Also: AUDIBLE, @filter, @forwardlist, @infilter, @inprefix
  
[PREV] [TOP] [NEXT]

@progprompt

  Attribute: @progprompt <player>=<string>
  
  This specifies a string (from 1 to 40 characters) that you may specify 
  for a player going through a program instead of the base '-'.  If you 
  specify a 'NULL' as the string, there will be no prompt.    
  
  The @progprompt does not end the string with a >.  If you wish to have
  one, you'll have to add it to the end of the defined prompt.
  
  This is limited to 80 characters total.  You may have an ansified string.  
  
  Example:
    > @progprompt me=Prompt>
    Set.
    > @wait 0=@progprompt me=[ansi(hr,Red>)]   (need the @wait to evaluate it) 
    Set.
  
  See Also: @program, @quitprogram
  
[PREV] [TOP] [NEXT]

@program

  Command: @program <player>=<obj/attr>[:<prefix>]
  
  Note:  The PROG @toggle is required for anything that will use @program.
  
  This command allows for small 'programs' within RhostMUSH. To understand this
  command, you must first understand the fact that it completely bypasses any
  commands, built-in or otherwise, and allows you to send user-input directly
  into your code.
   
  A simple example:
   
  @va me=$start:@prog %#=me/vb:Please enter a word:
  @vb me=@emit You entered %0!;@prog %#=me/vc:Please enter another word:
  @vc me=@emit This time, you entered %0. You're done!
   
  > start
  Please enter a word:
  > foobar       (Note that @program literally gives you a '>' prompt.)
  You entered foobar!
  Please enter another word:
  > hoopla
  This time you entered hoopla. You're done!
{ 'help @program2' for more }
 
[PREV] [TOP] [NEXT]

@program2

  As you can see, this command basically takes what a user types at the
  prompt, stuffs it into %0 in the code in <obj/attr>, and then triggers
  that attribute. Note that when @program triggers an attribute, the enactor
  of that triggered attribute is <player>, and is inserted into %#.
  r-registers are NOT preserved when @program triggers an attribute.  This
  is an unfortunate side-effect from allowing @program to be done across
  reboots and shutdowns.  Keep in mind that this will work differently 
  than MUX's @program by splitting up arguments that were separated by 
  commas into %0 - %9.  Any argument after the 10th is ignored.  
  Check @list options to see if it is using this method, or the MUX method 
  where it's only %0.
   
  An optional message, <prefix>, may be specified and will be output before
  the @program prompt. This is useful for telling the user what information
  they need to supply.
 
  A player caught in @program may send a command through to the normal
  command processor at the @program prompt by prefixing it with the '|'
  character, for example, '|WHO'.  This may be disabled for that particular
  player with the @toggle NOSHPROG or if globally set this way.  Check
  @list options if shelling commands from within a program is allowed.
 
{ 'help @program3' for more }
  
[PREV] [TOP] [NEXT]

@program3

  There are extra things you may do with @program that is not avalable
  anywhere else.  
  
  First, @program can be done across @reboots, @shutdowns, QUIT, LOGOUT,
  or (heaven forbid) server crashes.  It remembers where the program was
  last left off at when the player is next on.
  
  Secondly, there are @toggles in junction with @program.
    1.  NOSHPROG -- specifies the target can not use | to access commands
                    outside the program.
    2.  PROG     -- specifies the target can use a @program on someone else
    3   IMMPROG  -- specifies only an immortal can @quitprogram that player.
  
  Third, you can use pre-defined prompts instead of the default '> ' for
  players.  This is done via the @progprompt command.  
    i.e.  @progprompt *player=This is your prompt>
  
  Note that you need to specify the > at the end if you want it.
  
  See @list options to see what config parameters are enabled for @program
  on the RhostMUSH you're at.
  
  Help files borrowed from TinyMUX 2.0 with permission.
  
  See Also: @toggle, @progprompt, @quitprogram
 
[PREV] [TOP] [NEXT]

@protect

  Command: @protect[/<switch>] [<player-name>]
  
  This command 'protects' your current user name from being used by anyone
  else.  Essentially this 'locks in' your name so that if you ever switch
  your name to something else, no one else will be able to use the name
  that you have marked for protection.  You have full access to any name
  you protect.  You can only protect your currently active name.  You may
  delete any name you, yourself, have protected.  Wizards may remove any
  protected name.  Immortals bypass protected names.
  
  Switches available:
    /list    - (default) - list the names you current have protected.  This
               does not take any arguments.
    /add     - Add your current name to your protected name list.  This does
               not take any arguments.
    /del     - Remove the specified name from your protected name list.  This
               requires an argument.
    /alias   - Adds the protected name as an alias.  This will work like 
               @alias with regards to player lookups.
    /unalias - This removes the protected name as an alias.  You can not
               remove the active playername as an alias.
  
  Examples:
    > say name(me)
    You say "Bob"
    > @protect/add
    Your current name has been added to your protect list.
    > @protect/del Bob
    You have successfully deleted 'Bob' from your protect list.
  
  See Also: @name, @alias, listprotection()
  
[PREV] [TOP] [NEXT]

@ps

  Command: @ps[/<switches>] [<object>]
  
  Lists information about the commands you have on each of the queues.
  Unless the /summary switch is used, this command lists all the commands you
  have on the queues, optionally along with their enactor and arguments.
  Commands scheduled to be executed at a later time (by the @wait command)
  also show the number of seconds until they will be executed and/or the
  semaphore on which they are waiting.  If <object> is specified, only
  commands run by <object> are listed, otherwise all commands run by any of
  your objects is listed.  A summary of the number of commands listed and the
  total number of commands in the queues is also displayed.  This command is
  useful for identifying infinite loops in programs.  You will find PID
  processes by each job in the queue.  These can be killed by PID by using
  the @halt/pid if you have control to kill that job.
 
  The following switches are available:
     /brief   - (default) Display a brief summary that shows the semaphore
                number, time-to-wait, object running the command, and the
                command to be run.
     /long    - In addition to the information in the /brief report, display
                the name and number of the object that caused the command
                to be run (the enactor) and the arguments to the command.
     /summary - Display just the queue counts.
     /all     - this displays all the processes that you have control over.
   
  See Also: @notify, @wait, @drain, @halt, pid()
  
[PREV] [TOP] [NEXT]

@quitprogram

  Command: @quitprogram[/<switch>] <player>
  
  Terminates the @program for player. If <player> is not specified, then it
  works upon the enactor (a player may quit a program while they are in it
  by piping out @quitprogram, see 'help @program').
  
  Available switches:
    /quiet - do not notify the target (or yourself) of quitprogramming.
             Note: errors are still displayed.
  
  Example:
    > @quitprogram *TinyPlayer
    @program cleared.
    > @quitprogram/quiet *TinyPlayer  (notice no output)
   
  See also: @program, @progprompt.
 
[PREV] [TOP] [NEXT]

@quota

  Command: @quota
  Two forms:
 
  There are two forms of the @quota command.
    ALTERNATE :  Alternate quota gives a more enhanced view and tighter player
                 control over the use of their quota.  The draw back to this
                 is it can be somewhat confusing and overpowering for new
                 users.  This quota shows specific quota left and used for
                 all areas of building (rooms, objects, exits, players) and
                 allows the user to move around quota in various areas.
  
    STANDARD  :  Standard quota (the default) is the simple quota system 
                 that shows total quota, used quota,  and quota left.  This 
                 will not give you a breakdown of what quota is used where, 
                 but you can do this with the @stat command (help @stat) for 
                 a simplified showing.
 
  For help on each of the quota systems, type in 'help @quota alternate' for
  the alternate quota system or 'help @quota standard' for the standard
  (and default) quota system.
  
  See Also: @quota standard, @quota alternate
                
[PREV] [TOP] [NEXT]

@quota alternate

  Command: @quota[[/<switches>] [<arguments>]] [<player>] [=<value>]
  
  @quota for RhostMUSH has been seriously revamped.  There exists a lot of 
  options not previously available.  For one, @quota now gives detailed areas 
  that quota is currently divided.  Secondly, it allows the user to move quota 
  into various areas or set up automatic transfer as they wish.  It gives the 
  players a better control of their quota use.  The following switches and 
  options are available:
  
  /take me=<order> - this allows the user to specify the order in which quota 
                     will be transferred when a given area runs out.  Note.
                     Quota is automatically taken from your general pool, 
                     first.  Valid arguments are R, E, T, P for ROOM, EXIT, 
                     THING, PLAYER (robots).
  /xfer me=#,x,y   - This allows you to manually transfer free quota from one 
                     area to another. The '#' is the amount of quota to move,
                     'x' is the area to move from, and 'y' is the area to move
                     to.  Valid arguments are R, E, T, P, G for 'x' and 'y'.
                     They stand for [R]oom, [E]xit, [T]hing, [P]layer, and
                     [G]eneral. 
  
{ For more, type: help quota alternate2 }
  
[PREV] [TOP] [NEXT]

@quota standard

  Command: @quota [<player>] [=<value>]
 
  @quota in the standard system will show you either quota that you have or
  quota that a given player has (if you have power over that player).
 
  Typing either '@quota' (with no arguments) or '@quota me' 
  (or @quota <yourname>) will give you your own personal quota information.
  
  Staff who are able (or those empowered to do so) may at anytime change
  the quota of a player by typing a numeric value after an equals.
  IE:  @quota <targetplayer>=<value>
  
  See Also: @quota alternate, @quota
  
[PREV] [TOP] [NEXT]

@race

  Command: @race[/<switch>] <player>=<string>
  
  This sets the RACE attribute on the targeted player.  Only staff can set
  this attribute.  The following switches are available:
    /quiet - This suppresses the 'Set.' message when you set the attribute.
    /noisy - This verbosely prints the setting message.
  
  See Also: @guild, race(), guild(), @set, &
  
[PREV] [TOP] [NEXT]

@register

  Command: @register[/<switch>] <player>=<email>

  Note:  <player> should not contain " even if the player name is multi-word
         as this command will auto recognize a multi-word player name.
  
  This registers a player on-line and mails the specified <email> the 
  password for the player you created.  This can only be done by GUEST and
  only if the autoregistration is enabled.  Depending on configurations, you
  may be able to do this at the connect screen as well, except it's just
  'register'.
  
  The online @register also supports the following switches:
    /message - in addition to emailing the user the password, message the
               user online what their password is.  This switch may be
               disabled on the RhostMUSH you connect to.
  
  The switches will only affect the online @register command and will not
  impact the offline method at all.
  
  Examples:
    > @register player=my@email
    Autoregistration completed.   
    > @register A Player With Spaces=my@email
    Autoregistration completed.   
    > @register/message player=my@email
    Autoregistration completed.   
    Your password for account 'player' is: MTIvYrPT
  
  See Also: connect, cdark, chidden, create, register, @hide
  
[PREV] [TOP] [NEXT]

@reject

  Command: @reject[/<switch>] <object> = <message>
  Attribute: Reject
 
  This attribute is sent as a message to anyone who tries to page you but
  you have prevented them from paging you via your page lock (@lock/page).
  %# is used for the person paging you and does not represent you yourself.
 
  This attribute is only meaningful for players, and will never be
  automatically referenced on other object types.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @reject me = I _told_ you not to page me anymore...
  
  See Also: @away, @idle, page
  
[PREV] [TOP] [NEXT]

@remit

  Command: @remit <location>=<message>
           @pemit/contents <location>=<message>
 
  Please see help on @pemit.
  
  This is an alias for @pemit/contents
  
  This function relies on the config parameter 'pemit_any_object' to
  be enabled to allow remitting to any room, otherwise, it will only
  work on rooms you control.
  
  See Also: @pemit
 
[PREV] [TOP] [NEXT]

@rfail

  Command: @rfail[/<switch>] <object> = <message>
  Attribute: Rfail
 
  Sets the message that a player sees when he tries to give an object to
  someone else, but the receiver refuses to accept the object because
  the object didn't pass its receive lock.
 
  Function references and %-substitutions are allowed in receive failure
  messages, and are evaluated when someone tries to give away the object.
  In function references, 'me' refers to the intended recipient of the object,
  while %-substitutions that refer to the enactor (such as %n, %#, %p, etc)
  refer to the (attempted) giver.
 
  This attribute is only meaningful for players and things, and will never be
  automatically triggered on other object types.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @gfail merchant = The merchant doesn't want your worthless trash.
  
  See Also: give, @agfail, @arfail, @gfail, @ogfail, @orfail, @lock
  
[PREV] [TOP] [NEXT]

@robot

  Command: @robot <name>=<password>
  
  Creates a robot player owned by you.  The robot has its ROBOT flag set, so
  it may use the OUTPUTPREFIX and OUTPUTSUFFIX commands that most publicly
  available robot programs require.  This command costs 1000 coins.
  Note that some sites do not restrict OUTPUTSUFFIX and OUTPUTPREFIX to
  robots.
  
  See Also: OUTPUTPREFIX, OUTPUTSUFFIX, ROBOT, TYPES OF OBJECTS
  
[PREV] [TOP] [NEXT]

@runout

  Command: @runout[/<switch>] <object> = <command list>
  Attribute: Runout
 
  Sets the actions to be taken by <object> when another of its attributes is
  triggered (either automatically or via the @trigger command) and its
  Charges attribute is zero.  When this occurs, the Runout attribute is run
  INSTEAD OF the attribute that would have run normally.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @runout magic wand = :fizzles and turns to dust.; @destroy me
  
  See Also: @charges
  
[PREV] [TOP] [NEXT]

@salisten

  Command: @salisten[/<switch>] <object> = <command-list>
  Attribute: SAListen
   
  Sets the actions to be taken when <object> is listened to.
  
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
   
  Example: @salisten kitten = :purrs lovingly.
  
  See Also: listen, @slisten, @solisten, look, @adesc, touch, @satouch,
            taste, @sataste, smell, @sasmell
  
[PREV] [TOP] [NEXT]

@sasmell

  Command: @sasmell[/<switch>] <object> = <command-list>
  Attribute: SASmell
   
  Sets the actions to be taken when <object> is smelled.
  
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
   
  Example: @sasmell kitten = :meows questionably as you sniff them.
  
  See Also: smell, @ssmell, @sosmell, look, @adesc, touch, @satouch,
            taste, @sataste, listen, @salisten
  
[PREV] [TOP] [NEXT]

@sataste

  Command: @sataste[/<switch>] <object> = <command-list>
  Attribute: SATaste
   
  Sets the actions to be taken when <object> is tasted.
  
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
   
  Example: @sataste kitten = :licks you back.
  
  See Also: taste, @staste, @sotaste, look, @adesc, touch, @satouch,
            listen, @salisten, smell, @sasmell
  
[PREV] [TOP] [NEXT]

@satouch

  Command: @satouch[/<switch>] <object> = <command-list>
  Attribute: SATouch
   
  Sets the actions to be taken when <object> is touched.
  
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
   
  Example: @satouch kitten = :meows with the attention.
  
  See Also: touch, @stouch, @sotouch, look, @adesc, listen, @salisten,
            taste, @sataste, smell, @sasmell
  
[PREV] [TOP] [NEXT]

@saystring

  Command: @saystring[/<switch>] <object> = <string>
  
  Sets the substitute string that is used instead of the default 'says' when
  you talk in a location.  
  
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
  
  The SAFELOG @toggle when set convers what you see from 'You say...' to
  'yourname says' or whatever @saystring is set to.
   
  IN the example, when you talk, it would show:  Player barks "Hello"
  
  Example: 
  > @saystring me=barks
  Set.
  > "hello
  You say "hello"
  > @toggle me=SAFELOG
  Set.
  > "hello
  Player barks "hello"
  
  See Also: say, ", safelog toggle
  
[PREV] [TOP] [NEXT]

@search

  Command: @search[/<switch> [<player>] [<class>=<restrict>[,<low>[,<high>]]]
 
  Displays information about objects that meet the search criteria.
  Because this command is computationally expensive, it costs 200 coins.
  <player> restricts the search to the named player, while <class>
  and <restrict> control the objects listed.  Type 'help search classes'
  for a list of the classes you may use.
  
  Except when getting lists of players ('@search type=player' or
  '@search flags=P'), you may only search for objects that you own.
  You may limit the range of the search with <low> and <high>, which specify
  the objects to start and stop the search at, respectively.  The default for
  <low> is #0 and the default for <high> is the last object in the database.
  
  The following switches exist for @search:
      /nogarbage     - (immortal only) search without garbage/recover checks.
  
  Examples:
    @search flags=PWc              <-- search for connected wizards.
    @search type=room              <-- list all rooms owned by me.
    @search eval=gt(money(##),10)  <-- search for things worth more than 10.
    @search type=room,100,300      <-- Rooms between #100 and #300, inclusive
    @search object=Test,5000       <-- Things starting with Test from object
                                       #5000 to the end of the database.
  
  See Also: @find, search(), searchng(), searchobjid(), searchngobjid(), 
            SEARCH CLASSES
  
[PREV] [TOP] [NEXT]

@SELFBOOT

  Command: @selfboot[/<switch>] [<port>]
 
  This command will disconnect all ports except the port that you
  initiate the command from. (IE: it will disconnect your hung logins)
  
  You may specify the following optional switches:
     /list -- Will list what ports you're currently connected on.
     /port -- When specified with the <port> will boot the specific
              connection.
  
  If you have a single connection, it will not boot it.
  
  Note: @selfboot by itself will boot every connection that has a greater
        idle time than the other connection.  Which, if you have two ACTIVE
        connections may not be the result you want :)
   
  See Also: port()
 
[PREV] [TOP] [NEXT]

@set

  Command: @set[/<switches>] <object>=[!]<flag> [[!]<flag> [!]<flag> ...]
           @set[/<switches>] <object>=<attribute>:<value>
           @set[/<switches>] <object>=<attribute>:_<fromobj>/<fromattr>
           @set[/<switches>] <object>/<attr>=[!]<attrflag>
  Synonym: &<attribute> <object>[=<value>]
           &`<tree`attribute> <object>[=<value>] (for setting a tree variable)
 
  The available switches are:
        /QUIET - sets/removes the target without the 'Set.' or 'Cleared.' 
        /NOISY - sets/removes the target with a verbose SET message.
        /TREE  - sets a TREE (with branches) of a given attribute.
   
  The first form sets (or clears) the indicated flag(s) on <object>, It 
  accepts multiple flags for arguments if so desired. the second form sets 
  the <attribute> attribute on <object> to <value>, creating a new user-named 
  attribute if there is no attribute named <attribute>.  The third form 
  copies an attribute from another object, and the fourth form sets 
  (or clears) an attribute flag on the <attr> attribute of <object>.
   
  When setting attributes on an object, you may also use the command
  '@<attribute> <object> = <value>' if the attribute is a predefined
  attribute.  You may also use the command '&<attribute> <object> = <value>'
  to set either predefined attributes or user-named attributes.  Either of
  these is equivalent to the second form of the @set command.
  
  Attributes must start with an alpha character, or in special cases any
  of the following characters: ~_#.+
  
  The /tree switch is ignored on anything not regarding setting or clearing
  attributes.  If any branch in the specified defined tree-attribute is 
  not allowed to be set, the entire attribute itself will not be set either. 
  
{ 'help @set2' for more }
[PREV] [TOP] [NEXT]

@set2

  The following flags may be set using the fourth form of the @set command:
     no_command  ($) - Prevent $-commands and ^-patterns defined in the 
                       attribute from being performed.
     no_inherit  (I) - Prevents children of the object from obtaining the 
                       attribute.  From their perspective the attribute does
                       not exist.  This works on ZMO's as well.
     visual      (V) - Anyone may see the attribute when they examine you, and
                       may get the attribute with get().
     no_clone    (N) - The attribute will not be copied to the @cloned object.
     no_parse    (n) - The attribute will not parse %%0 to %%9 with $commands
     hidden      (M) - The attribute is visual only to wizards.
     god         (G) - Only #1 can modify the attribute.
     dark        (D) - Only #1 can see the attribute.
     pinvisible  (p) - Only wizard can see the attr, but anyone can modify it.
     immortal    (i) - Only immortal and higher can modify the attribute.
     royalty     (W) - Only wizard and higher can modify the attribute.
     wizard          - This is an alias for 'royalty'
     councilor   (a) - Only councilor and higher can modify the attribute.
     architect   (B) - Only architect and higher can modify the attribute.
     guildmaster (g) - Only guildmaster and higher can modify the attribute.
     locked      (+) - This happens if you @lock thing/attr the attribute.
     safe        (s) - The attribute can not be modified.
                  
  Please note, you can not set multiple attributes or flags at once this way.
  Reference: ATTRIBUTE FLAGS
  
  See Also: @lset, @lock, examine, FLAGS, &, @guild, @race, ATTRIBUTE FLAGS,
            ATTRIBUTE TREES
  
[PREV] [TOP] [NEXT]

@sex

  Command: @sex[/<switch>] <object> = <gender>
  Attribute: Sex
 
  Sets the gender for <object>, which is used to determine which pronouns to
  use when replacing %p, %o, %s, and %a parameters in messages that apply to
  <object>.  Genders that start with M or m are considered male, those
  starting with F, f, W, or w are considered female, those starting with
  P or p are considered plural, and anything else is considered neuter.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @sex me = female
           @sex me = No thank you (Silly, but possible.  Treated as neuter)
  
  See Also: GENDER
  
[PREV] [TOP] [NEXT]

@sfail

  Command: @sfail[/<switch>] <object> = <message>
  Attribute: Sfail
  
  Sets the message that is shown to someone who fails to pass a SpeechLock
  on a room that is also set AUDITORIUM.
  
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @sfail here = Don't talk.  There is a performance in progress.
  
  
  See Also: AUDITORIUM, @lock, @asfail
  
[PREV] [TOP] [NEXT]

@skip

  Command: @skip <boolean expression>=<command>
           @skip/ifelse <boolean expression>=<true command>[,<false command>]
  
  The @skip command 'skips' the command from being executed if the boolean 
  logic presented to @skip is true.  The command will be processed in the
  normal queue and not executed out of order.  Any value other than '0'
  is considered 'true' and not a true boolean.  This only processes a single
  command.  If multiple commands are required, please use @include.
  
  Notice if you specify the /ifelse switch the condition is reversed to match
  how a normal if-else statement would work.  @skip/ifelse is aliased to
  @if and @ifelse.
  
  Examples:
    > @wait 0={think 1;think 2;@skip 0=think 3;think 4}
    1
    2
    3
    4
    > @wait 0={think 1;think 2;@skip 1=think 3;think 4}
    1
    2
    4
  
  See Also: @include, @force, @trigger, @skip, @break, @assert, @switch

[PREV] [TOP] [NEXT]

@slisten

  Command: @slisten[/<switch>] <object> = <description>
  Attribute: SListen
   
  Sets the listen message for <object>, which others see when they listen to
  the object.  Giving all your objects, rooms, and exits good listens is
  a great addition to good building practice.
   
  Function references and %-substitutions are allowed in these listens, and
  are evaluated when someone listens to the object.  In function references,
  'me' refers to the object being listened to, while %-substitutions that refer
  to the enactor (such as %n, %#, %p, etc) refer to the listener.
   
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
   
  Examples:
    <object> @slisten vase = You hear the flowers gently move in the breeze.
    <exit>   @slisten elevator = You hear a ring as the elevator opens.
  
  See Also: listen, @salisten, @solisten, look, @desc, touch, @stouch,
            taste, @staste, smell, @ssmell
  
[PREV] [TOP] [NEXT]

@solisten

  Command: @solisten[/<switch>] <object> = <message>
  Attribute: SOListen
   
  Sets the message (prefixed by the player's name) that is shown to others in
  the room when someone listens to <object>.
   
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
   
  Example: @solisten vase = carefully listens to the vase.
  
  See Also: listen, @slisten, @salisten, look, @odesc, touch, @sotouch,
            taste, @sotaste, smell, @sosmell
  
[PREV] [TOP] [NEXT]

@sosmell

  Command: @sosmell[/<switch>] <object> = <message>
  Attribute: SOSmell
   
  Sets the message (prefixed by the player's name) that is shown to others in
  the room when someone smells the <object>.
   
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
   
  Example: @sosmell vase = breathes in the fragrant flowers.
  
  See Also: smell, @ssmell, @sasmell, look, @odesc, touch, @sotouch,
            taste, @sotaste, listen, @solisten
  
[PREV] [TOP] [NEXT]

@sotaste

  Command: @sotaste[/<switch>] <object> = <message>
  Attribute: SOTaste
   
  Sets the message (prefixed by the player's name) that is shown to others in
  the room when someone tastes the <object>.
   
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
   
  Example: @sotaste vase = licks the vase... why... you don't know.
  
  See Also: taste, @staste, @sataste, look, @odesc, touch, @sotouch,
            listen, @solisten, smell, @sosmell
  
[PREV] [TOP] [NEXT]

@sotouch

  Command: @sotouch[/<switch>] <object> = <message>
  Attribute: SOTouch
   
  Sets the message (prefixed by the player's name) that is shown to others in
  the room when someone touches an <object>.
   
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
   
  Example: @sotouch vase = carefully runs their fingers over the vase.
  
  See Also: touch, @stouch, @satouch, look, @odesc, listen, @solisten,
            taste, @sotaste, smell, @sosmell
  
[PREV] [TOP] [NEXT]

@sql

  Command: @sql <query>
   
  This command issues an SQL query if the MUSH supports SQL and can connect 
  to an SQL server. You must be wizard/immortal to use @sql.
   
  Generally, the sql() function is more useful for coding, as it delimits its
  return values, but @sql is handy for INSERT-type queries and quick checks. 
  If you pass arbitrary data to @sql, be sure you call sqlescape() on it; 
  see the example in help sql().
   
  Example:
    > @sql SHOW TABLES
   
  See also: sql(), @sqlconnect, @sqldisconnect, sqlon(), sqloff(),
            sqlescape(), sqlping(), esclist(), unesclist()


[PREV] [TOP] [NEXT]

@sqlconnect

  Command: @sqlconnect
  
  This attempts to establish an SQL connection to the remote MySQL database.
  Only wizards+ can use this feature.
  
  Example:
    > @sqlconnect
  
  See Also: sqlon(), @sqldisconnect, sqloff(), @sql, sql(), sqlescape(),
            sqlping(), esclist(), unesclist()
  
[PREV] [TOP] [NEXT]

@sqldisconnect

  Command: @sqldisconnect
  
  This attempts to close an SQL connection to the remote MySQL database.
  Only wizards+ can use this feature.
  
  Example:
    > @sqldisconnect
  
  See Also: sqloff(), @sqlconnect, sqlon(), @sql, sql(), sqlescape()
            sqlping(), esclist(), unesclist()

[PREV] [TOP] [NEXT]

@ssmell

  Command: @ssmell[/<switch>] <object> = <description>
  Attribute: SSmell
   
  Sets the smell message for <object>, which others see when they smell 
  the object.  Giving all your objects, rooms, and exits good smells (or
  bad smells for that matter) is a great addition to good building practice.
   
  Function references and %-substitutions are allowed in these smells, and
  are evaluated when someone smelling the object.  In function references,
  'me' refers to the object being smelled, while %-substitutions that refer
  to the enactor (such as %n, %#, %p, etc) refer to the smeller.
   
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
   
  Examples:
    <object> @ssmell vase = The flowers give off a wonderful aroma.
    <exit>   @ssmell elevator = The elevator smells like cigar smoke.
  
  See Also: smell, @sasmell, @sosmell, look, @desc, touch, @stouch,
            taste, @staste, listen, @slisten
  
[PREV] [TOP] [NEXT]

@startup

  Command: @startup[/<switch>] <object> = <command list>
  Attribute: Startup
 
  Sets a list of commands to be performed by <object> when the game is
  started up.  Typical actions include going home, cleaning visitors out of
  a room, resetting a puzzle or complex object to its initial state, or
  starting up an object that wants to run continuously.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @startup me = @vz me=MUSH was last restarted at [time()].
           @startup me = home
  
[PREV] [TOP] [NEXT]

@staste

  Command: @staste[/<switch>] <object> = <description>
  Attribute: STaste
   
  Sets the taste message for <object>, which others see when they taste 
  the object.  Giving all your objects, rooms, and exits good tastes is
  a great addition to good building practice.
   
  Function references and %-substitutions are allowed in these tastes, and
  are evaluated when someone tastes the object.  In function references,
  'me' refers to the object being tasted, while %-substitutions that refer
  to the enactor (such as %n, %#, %p, etc) refer to the taster.
   
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
   
  Examples:
    <object> @staste vase = The flowers don't taste very good.  You feel sick.
    <exit>   @staste elevator = Lick an elevator? You pull back in disgust.
  
  See Also: taste, @sataste, @sotaste, look, @desc, touch, @stouch,
            listen, @slisten, smell, @ssmell
  
[PREV] [TOP] [NEXT]

@stats

  Command: @stats[/all] [<player>]
  Display the number of objects in the game.  @stats/all gives a
  breakdown by object types.  If <player> is specified, the breakdown
  for the named player is given.  You may only list individual counts
  for yourself.  If invoked with no arguments or switches this command is
  free, but if you specify either /all or <player>, then this  command costs
  200 coins to run, because it is computationally expensive.
  
  See Also: stats(), @search
  
[PREV] [TOP] [NEXT]

@stouch

  Command: @stouch[/<switch>] <object> = <description>
  Attribute: STouch
   
  Sets the touch message for <object>, which others see when they touch 
  the object.  Giving all your objects, rooms, and exits good touch messages
  is a great addition to good building practice.
   
  Function references and %-substitutions are allowed in these touches, and
  are evaluated when someone touches the object.  In function references,
  'me' refers to the object being touched, while %-substitutions that refer
  to the enactor (such as %n, %#, %p, etc) refer to the toucher.
   
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
   
  Examples:
    <object> @stouch vase = You feel the careful craftmanship.
    <exit>   @stouch elevator = You push the button and the elevator moves.
  
  See Also: touch, @satouch, @sotouch, look, @desc, listen, @slisten,
            taste, @staste, smell, @ssmell
  
[PREV] [TOP] [NEXT]

@success

  Command: @success[/<switch>] <object> = <message>
  Attribute: Succ
 
  Sets the message that is shown to the player who successfully picks up the
  named player or thing, goes through the named exit, or looks at the room
  and passes the room's lock.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: <object> @succ vase = You carefully pick up the delicate vase.
           <exit>   @succ doorway = You open the door and walk through the
                                    doorway.
  
  See Also: get, look, @asuccess, @osuccess, SUCCESS
  
[PREV] [TOP] [NEXT]

@sudo

  Command: @sudo[</switch>] <target>=<command>
  
  The @sudo allows you to execute a command through the target. This is
  done through the normal command processor and while similiar permissions
  to @force, does not suffer from the queue delay.  You can not @sudo to
  something you have no control over.  @sudo performs the action according
  to the target's viewpoint, including location. @sudo only works on a single
  command.  If you wish to @sudo multiple commands, use in junction with
  @include.  By default, all registers altered during the @sudo are considered
  local.
  
  Available switches:
    /globalize -- treat registers to target as non-localized.  Dangerous.
    /clearregs -- clear the registers of the default localized registers.
  
  Examples:
    > @sudo *player=say boo
    Player says "boo"
    > @va *player=say boo;say baa
    > @sudo *player=@include me/va  (notice it triggers @va based on target)
    Player says "boo"
    Player says "baa"
  
  See Also: @include, @force, @trigger, @skip 
  
[PREV] [TOP] [NEXT]

@sweep

  Command: @sweep[/<switches>]
  This command tells you all of the objects, players, and exits that are
  listening in the room you are currently in, as well as the objects you are
  carrying.  Most objects only listen for a particular string or phrase, so
  they normally do not pose a problem if you need privacy.  You will have to 
  be careful of players, puppets, and audible exits since they will hear
  everything you say and do.  There are several switches that may be used to
  limit the type of listeners that are checked for.  They are:
     /here      - Check the room I am in.
     /inventory - Check my inventory.
     /exits     - Check exits in the room.
     /commands  - Check for objects that have $-commands set on them.
     /connected - Check for connected players and their puppets.
     /listeners - Check for objects with @listen set to something.
     /players   - Check for players and their puppets, whether or not they
                  are connected.
 
  The default is to search for everything.  If you specify one or more
  switches from either category (either location or listener type then only
  that location or listener type is checked.
  
  See Also: @listen, AUDIBLE, PUPPETS
  
[PREV] [TOP] [NEXT]

@switch

  Command: @switch[/<switches>] <string>=<t1>,<c1> [,<tN>,<cN>]... [,<cD>]
  Compares <string> against the targets <t1>, <t2>, etc, until a match is
  found, at which time the corresponding list of commands is performed.
  Wildcards, and the < and > operators are allowed in the targets.  By
  default, any list whose target matches the string is executed (the targets
  are not mutually exclusive). If no target matches, the default list
  <cD> is executed.
   
  The following switches are available:
     /all      - (default) Perform the actionlists associated with all targets
                 that match <string>.
     /first    - Perform only the actionlist associated with the first target
                 that matches <string>.
     /case     - Allow case sensitivity in matches.  Only for /first and /all.
     /regall   - Same as /all but use regular expression matching. 
     /regfirst - Same as /first but use regular expression matching.
     /notify   - This issues a @notify on the object after @switch executes.
     /inline   - process command 'inline' and don't queue it.
     /clearreg - if inline, clear registers for each arguement
     /localize - if inline, localize registers for each argument
     /nobreak  - if inline, keep breaks localized per argument
  
  If configured, you may use #$ as a substition.   #$ is substituted with 
  the value of <string>. In this way, the commands in <c1>..<cN>..<cD> 
  have a short-hand way of getting at the matched value.  Case does not do
  wildcard matches.
  
  Please check @list options if this has been enabled. 
  
{ help @switch2 for examples }

[PREV] [TOP] [NEXT]

@switch2

  Command: @switch[/<switches>] <string>=<t1>,<c1> [,<tN>,<cN>]... [,<cD>]
  CONTINUED:
  
  Example:
    > @switch 1=1,say yes
    You say "yes"
    > @switch/first [add(1,1)]=2,say yes,2,say maybe,say no
    You say "yes"
    > @switch/all [add(1,1)]=2,say yes,2,say maybe,say no
    You say "yes"
    You say "maybe"
    > @switch/all [add(1,1)]=3,say yes,3,say maybe,say no
    You say "no"
    > @switch/first FooFoo=*boo*,say yes,*oo*,say maybe,say no
    You say "maybe"
  
  See Also: switch(), case(), ifelse()
  
[PREV] [TOP] [NEXT]

@teleport

  Simple:  @teleport [<object>=] <location>
  Complex: @teleport[/switch] [<obj1,obj2,...>=[dest1, dest2,...]] <room/thing>
           @teleport[/switch] [<obj1,obj2,...>=[dest1, dest2,...]] <exit>
           @teleport[/switch] [<obj1,obj2,...>=[dest1, dest2,...]] home
   
  Complex teleports accept the source list with spaces or commas.  If it
  detects a comma, it will ignore spaces as the separator.  This is to allow
  teleporting things with multi-word names.
  
  The destination list (if more than one) must have commas.
  
  The first form of the complex command moves <object> (or you), and/or the 
  list of space or comma delimited objects to the named room or thing.  
  
  The second form sends <object> (or you), and/or the list of space or comma
  delimited objects to the destination of the named exit. 
  
  The third form sends <object> (or you), and/or the list of space or comma
  delimited objects home.
  
  If the destination room has a drop-to, the object will go to the drop-to
  instead of the named location.
  
  For the first form of the @teleport command, the object being teleported 
  must pass its location's TeloutLock; and you must control the destination,
  or it must be JUMP_OK and you must pass the destination's TportLock.
 
  The second and third forms let you remove any object from locations you
  control by sending them through an exit or to their home.
  
  The following switches exist for @teleport:
     /list  - specify a list of things to teleport
     /quiet - teleports the target quietly bypassing all messages on them.
              (This is only available to councilor and higher)
  
{ help @teleport2 for help on using /list with @teleport - including examples }
  
[PREV] [TOP] [NEXT]

@teleport2

  Simple:  @teleport [<object>=] <location>
  Complex: @teleport[/switch] [<obj1,obj2,...>=[dest1, dest2,...]] <room/thing>
           @teleport[/switch] [<obj1,obj2,...>=[dest1, dest2,...]] <exit>
           @teleport[/switch] [<obj1,obj2,...>=[dest1, dest2,...]] home
  
  With the use of the /list, you are able to specify multiple objects.
  You can either specify a single destination for all of them, or
  separate destinations for each one.  If you have more objects than
  destinations (minus the fact of having one single destination), than
  the excess objects are ignored.  Likewise, if you have more destinations
  than objects, the excess destinations are ignored.  The destination list
  must be separated by commas as shown if more than one destination is
  given.
 
  Examples:
    @tel/list #45 #54 #46=home    - teleport #45 #54 #46 all home
    @tel/list #45 #54=#0,#584     - teleport #45 to #0 and #54 to #584
    @tel #45=home                 - teleport #45 home
    @tel home                     - teleport the enactor home
    @tel/list/quiet #45 #56=#59   - teleport #45 and #56 to #59 quietly
    @tel/list a space, bar=home   - teleport 'a space' and 'bar' home
    @tel/quiet #45=home           - teleport #45 home quietly
  
  See Also: JUMP_OK, @lock (tport and telout), @tfail, @otfail, @atfail
  
[PREV] [TOP] [NEXT]

@tfail

  Command: @tfail[/<switch>] <object> = <message>
  Attribute: Tfail
 
  Sets the message that a player sees when he tries to teleport to somewhere
  he does not have permission.  You do not see this message if you couldn't
  teleport out of your present location.
 
  Function references and %-substitutions are allowed in teleport failure
  messages, and are evaluated when someone attempts to teleport to the
  specified destination.  In function references, 'me' refers to the teleport
  destination, while %-substitutions that refer to the enactor (such as %n,
  %#, %p, etc) refer to the player attempting the teleport.
 
  When a player teleports another object (@tel <object>=<destination>), the
  lock is checked against the player, not the object.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @tfail here=A psychic barrier prevents you from teleporting there.
  
  See Also: @teleport, @atfail, @otfail, @lock
 
[PREV] [TOP] [NEXT]

@titlecaption

  Command: @titlecaption[/<switch>] <object> = <string>
  Attribute: Title_Name
  
  This attribute sets up a title (prefix) for the target player when
  they are looked at or looked at in a given location.  You may set
  a large title, but only the first 40 characters will be displayed.
  If ZENTY_ANSI compiletime is not used, ansi is stripped.
   
  No carriage returns are allowed in this string and it is only useful
  for players.
  
  Example:
    > lo me
    Tinyplayer(#123Pc)
    You see nothing special.
    > @titlecaption me=Doctor
    > lo me
    Doctor Tinyplayer(#123Pc)
    You see nothing special.
  
  See Also: @ansiname, @extansi, @name, @caption

[PREV] [TOP] [NEXT]

@tofail

  Command: @tofail[/<switch>] <object> = <message>
  Attribute: Tofail
  
  Sets the message that a player sees when he tries to teleport out of
  somewhere he does not have permission.  You do not see this message if you
  couldn't teleport to your destination location.
  
  Function references and %-substitutions are allowed in teleport failure
  messages, and are evaluated when someone attempts to teleport to the
  specified destination.  In function references, 'me' refers to the
  current location, while %-substitutions that refer to the enactor (such
  as %n, %#, %p, etc) refer to the player attempting the teleport.
  
  When a player teleports another object (@tel <object>=<destination>), the
  lock is checked against the player, not the object.
  
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example:    @tofail here = A psychic barrier keeps you from teleporting out.
  
  See Also: @teleport, @atofail, @otofail, @lock
 
[PREV] [TOP] [NEXT]

@toggle

  Command: @toggle[/switches] <object> = <toggle(s)>
 
  Turns toggles on and off on an object. To turn a toggle on you specify
  it's name, to turn it off you specify it's name prefixed with a '!'.
 
  The following switches exist for @toggle:
      /check <me>     : checks your toggle list
      /clear          : clears the toggle list
 
  Examples:
    @toggle me=monitor            <Would turn on monitor for you>
    @toggle me=!monitor           <Would turn monitor off for you>
   
  See Also: toggle list, toggles
 
[PREV] [TOP] [NEXT]

@tport

  Command: @tport[/<switch>] <object> = <message>
  Attribute: Tport
 
  Sets the message that an object sees whenever it teleports.
  The message is displayed after the object moves to its new location.
 
  This attribute is only meaningful for players and things, and will never be
  automatically triggered on other object types.
  
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @tport me = Hey! I teleported. Wow!
   
  See Also: @atport, @otport, @oxtport, @teleport
  
[PREV] [TOP] [NEXT]

@trigger

  Command: @trigger <object>/<attr> [=<param> [, <param>]... ]
  Invokes an action list stored in an attribute on an object.  The triggering
  object becomes the enactor and the positional parameters %0 through %9
  are set to the supplied parameters.  If a @charges attribute exists on 
  the object being triggered, that attribute is reduced by one and when
  it reaches 0, can no longer be triggered.  You may specify the /command
  switch to trigger attributes that start with $command sequences.  This
  switch is ignored on attributes without $command sequences.
  
  The following switches exist for @trigger:
      /quiet   - Don't report the 'trigger' message when triggering.  
      /command - Trigger attributes that are $command/^listen attributes.
  
  Examples:
    > @va me=$foo:@emit whee
      Set
    > @tr/quiet/command me/va
      whee
  
  See Also: LOOPING, u(), @include
  
[PREV] [TOP] [NEXT]

@ufail

  Command: @ufail[/<switch>] <object> = <message>
  Attribute: Ufail
 
  Sets the message that someone sees when they try to use object but fail
  the object's use lock.  Note that the other functions controlled by the use
  lock (paying, listening, and $-commands) do not trigger Oufail.  This
  behavior is overridden with the SHOWFAILCMD flag.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @ufail robot = The robot pointedly ignores you.
   
  See Also: @aufail, @oufail, @use
  
[PREV] [TOP] [NEXT]

@unlink

  Command: @unlink <room/exit>
  This command removes drop-tos on rooms and clears the destination on exits.
  Once unlinked, an exit may be taken over by anyone with the @link command.
  
  See Also: @link, LINKING, @destroy
  
[PREV] [TOP] [NEXT]

@unlock

  Command: @unlock[/<whichlock>] <object>
           @unlock <object>/<attrib>
  
  The first form removes the lock on <object>, so that anyone may pass
  through (if an exit) or pick it up (if a player or an object).
  
  The second form clears the locked flag on the indicated attribute of the
  named object.  This allows the attribute to change ownership to the new
  owner automatically when the object is @chowned, and allows the owner
  of the object to @chown the attribute to itself or to overwrite it.
  You must own the attribute to be unlocked, but you do not need to own the
  object.  For a listing of locks to use in <whitchlock> please see:
  
         help mail lock   - help on how to remove a mail lock.
         help @lock locks - list of available locks you can @unlock.
  
  See Also: @lock, @lset, @chown, lock(), elock(), ATTRIBUTE OWNERSHIP
  
[PREV] [TOP] [NEXT]

@uptime

  This is an alias for the +uptime command.
  
[PREV] [TOP] [NEXT]

@use

  Command: @use[/<switch>] <object> = <message>
  Attribute: Use
 
  Sets the message that is shown to the player who uses <object>.
 
  This attribute is only meaningful for players and things, and will never
  be automatically triggered on other object types.
 
  Optional switches are /quiet to suppress output or /noisy to give 
  verbose output.
 
  Example: @use camera = You take a picture with the camera.  Click.
  
  See Also: use, @ause, @ouse
  
[PREV] [TOP] [NEXT]

@verb

  Command: @verb <victim>=<actor>,<what>,<def>,<owhat>,<odef>,<awhat>,<args>
 
  This command provides a way to do user-defined verbs with associated
  @attr/@oattr/@aattr groups. Invoking it does the following:
  
  <actor> sees the contents of <victim>'s <what> attribute. The <def> string
  argument is currently ignored.  It served a purpose in a past version
  of @verb, and has been left in to minimize problems with old objects.
  
  Everyone in the same room as <actor> sees the contents of
    <victim>'s <owhat> attribute, with <actor>'s name prepended.
  
  <victim> then executes the contents of his <awhat>
    attribute.
  
  By supplying up to nine <args>, you may pass those values on
  the stack (i.e. %0, %1, %2, etc. up through %9).
 
  You must control the victim, but need not control the actor.
 
{ 'help @verb2' for more }
[PREV] [TOP] [NEXT]

@verb2

  Here is a description of the arguments to @verb:
    victim - The object that is searched for attributes, and which runs the
             <awhat> attribute if it is found.
    actor  - The object that 'did' the verb, this is the value for %#/%n/etc
             in substitutions, and this object's name is included in the
             message to others in the same location.
    what   - The name of the attribute containing the message to be delivered
             to the actor.
    whatd  - No purpose now. Left in for compatibility.
    owhat  - The name of the attribute containing the message (prefixed by the
             actor's name) that is sent to everyone in the room with actor.
    owhatd - No purpose now. Left in for compatibility.
    awhat  - The name of the attribute that is to be executed by the victim.
    args   - The comma-separated arguments to be passed for substitution
             (%0-%9).  If there is more than one argument, enclose all the
             arguments within curly braces.  Any argument that contains an
             embedded comma needs to be enclosed in curly braces as well.
 
{ 'help @verb3' for more }
[PREV] [TOP] [NEXT]

@verb3

  Examples:
    > &xtest test1=You just tested test1.
    > &oxtest test1=just xtested test1.
    > &axtest test1="I was xtested.  Yikes.  Arg1=%0, Arg2=%1, Arg3=%2.
    > @verb test1=me,xtest,XTEST DFLT,oxtest,OXTEST DFLT,axtest,{a,b c,de}
    You just xtested test1.
    test1 says "I was xtested. Yikes. Arg1=a, Arg2=b c, Arg3=de."
    > &xtest test1
    > &test test1=$test:@verb test1=%n,xtest,nil,oxtest,nil,axtest,{a,b c,de}
    TEST
    You just tested test1.
    test1 says "I was xtested. Yikes. Arg1=a, Arg2=b c, Arg3=de."
  
[PREV] [TOP] [NEXT]

@version

  This is an alias for the version command.
  
[PREV] [TOP] [NEXT]

@wait

  Command: @wait <seconds>=<command>
           @wait <object>[/<seconds>]=<command>
           @wait/pid <PID>=[+|-]<new seconds>
           @wait/until <real time>=<command>
           @wait <object>[/<real time>]=<command>
           @wait/pid/until <PID>=<real time>
           @wait/recpid <REG> <time>=<command>
           @wait/recpid/until <REG> <real time>=<command>
           @wait/recpid <REG> <object>[/<seconds>]=<command>
  
  The first form of @wait executes <command> after <seconds> seconds.  
  
  The second form increments the semaphore count for <object> and executes
  <command> after <object> is notified with the @notify command.  If the
  semaphore count for <object> is negative (because it has been notified more
  times than it has been waited on), then <command> is run immediately.
  If <seconds> is specified in the second form, the command is automatically
  run after <seconds> seconds even if the semaphore isn't notified.  This
  command charges a deposit of 10 coins, which is refunded when <command>
  is executed.
  
  You may specify miliseconds instead of whole numbers.
  
{ see 'help @wait2' to continue }
  
[PREV] [TOP] [NEXT]

@wait2

  Command: -- CONTINUED
           @wait <seconds>=<command>
           @wait <object>[/<seconds>]=<command>
           @wait/pid <PID>=[+|-]<new seconds>
           @wait/until <real time>=<command>
           @wait <object>[/<real time>]=<command>
           @wait/pid/until <PID>=<real time>
           @wait/recpid <REG> <time>=<command>
           @wait/recpid/until <REG> <real time>=<command>
           @wait/recpid <REG> <object>[/<seconds>]=<command>
  
  The third form of @wait will re-specify the seconds of a waited or semaphored
  queue entry.  It does this by referencing the PID of the process that is 
  returned when you do a '@ps'.  You may specify a + or - to increment or 
  decrement the existing time of the wait state.  The total time can't exceed
  the maximum time event (maximum time possible) or be less than 10 seconds
  from the current system clock time.
  
  The /until switch will specify that you want to use a real-time (futurebased)
  instead of a time offset.  This time would be in seconds.
  
  The /recpid switch allows you to specify a register that the PID of the 
  process is stored into.  With this PID, you may then optionally use @notify, 
  @halt, or any other command that recognizes PIDS to handle the queued job.  
  The register can be any of the SETQ registers (0-9 default) that you wish to
  use.
  
  See Also: @drain, @notify, @ps, SEMAPHORES, setq(), setr(), r(), nameq(), 
            pid()
  
[PREV] [TOP] [NEXT]

@wall

  Command: @wall <message>
  This command allows even mortals (if set at RhostMUSH default) to
  @wall to everyone on the mush.  Keep in mind this is expensive.
  (default of 500 gold - @list costs shows how much it is currently worth)
  And also keep in mind to not abuse it, else the wizards may show their
  wrath.
  
  See Also: NO_YELL, NO_WALLS, COSTS
  
[PREV] [TOP] [NEXT]

@whereall

  Command: @whereall
  
  This command, like @whereis, will show the locations of all connected 
  players not set UNFINDABLE.  Anyone set UNFINDABLE will show that they
  wish to have privacy and their location will not be shown.
  
  See Also: @whereis, loc()
  
[PREV] [TOP] [NEXT]

@whereis

  Command: @whereis <player>
  
  This command will relate to the player the location of the specified player.
  Any player hidden will show to the user that he/she wishes to have privacy
  and their location will not be given.
  
  See Also: @whereall, loc()
  
[PREV] [TOP] [NEXT]

@wipe

  Command: @wipe[/<switch(es)>] <object>[/<wild-attr>]
           @wipe/owner[/<switch(es)>] <owner>/<object>[/<wild-attr>]
 
  This command erases attributes from an object.  All attributes that match
  <wild-attr> (or all attributes, if <wild-attr> is not specified) are removed
  from <object>.  Attributes that you do not have permission to modify (such
  as read-only or locked attributes) are not removed.

  This only works on objects set SAFE if the config options safe_wipe is set
  to 0.
  
  Notice that <owner> needs to be specified if you use the /owner switch.
   
  The following switches exist:
    /preserve    - wipe everything EXCEPT the wild-attr matches.  This in 
                   effect does the reverse of normal @wipe.
    /regexp      - use regular expression instead of standard glob-matching
    /owner       - use an owner argument to wipe only attribs that is owned
                   by the specified player.  You can use wild-attrs with
                   this options.
                   
  
  Example:
    > @wipe me/va*
    Wiped - 1 attributes.
    > @wipe/reg me/^.a$
    Wiped - 4 attributes.
    > @wipe/owner Corum/me/za*  (wipe all attribs matching za* owned by Corum)
    Wiped - 1 attributes.
  
  See Also: wipe(), @edit, @grep, @cluster, cluster_wipe()

[PREV] [TOP] [NEXT]

@zone

  Command: @zone[/<switch>] <target> [=<zone string>]
  
  Usage:
    1) @zone[/list] <object or zonemaster>
    3) @zone/add <object>=<zonemaster>
    4) @zone/del <object or zonemaster>=<zonemaster or object>
    5) @zone/purge <object or zonemaster>
    6) @zone/replace <object>=<old zonemaster>/<new zonemaster>
  
  The @zone command adds and removes zone master entries from objects.
  An object may be a member of multiple zones.
   
    * Usage 1 will list the zones an object belongs to, or the objects that
      belong to a zonemaster.
    * Usage 2 will add a zone to an object.
    * Usage 3 will delete an object from a zone, or zone from an object. These
      are essentially the same, but from different directions.
    * Usage 4 will remove all references to zones from an object or
      zone master.  
    * Usage 5 will replace the old zonemaster with the new zonemaster on the
      target object.
  
  The config param 'zones_like_parents' can also be enabled to allow @zones
  to function $commands to its members as if it was a @parent.
   
  Example:
    > @set #2=zonemaster
    Set.
    > @set #2=zonecontents (for when we want a zone to have zonemastery fun)
    Set.
    > @zone/add #1=#2 
    Zone Master added to object.
  
  See Also: @lock, ZONES, zonecmd(), lzone(), ZONEMASTER, ZONECONTENTS
  
[PREV] [TOP] [NEXT]

\*

  Topic:  WILDCARDS [* and ?]
  
  Wildcards are the standard globbing mechanism for the mush engine.  With the
  wildcards, the '*' character is considered 0 or more characters and the '?'
  character is considered a single character.  These are used primarilly in
  commands and functions that allow mulit-matching based on wild card support.
  
  Example:
    > say match(this is a test,?es*)
    You say "4"
  
  Wildcards, however, are most useful for $command substitution matching.
  When you create your own softcoded command, any argument you want
  substituted you would place a '*' or a '?' for that argument.  Each argument
  is then matched up with a numerical argument for each wildcard used.  The
  first argument being %0, second being %1, and so forth.
  
  Example:
    > &TEST1 me=$test1*:@emit Your First Test:%0
    > &TEST2 me=$test2?:@emit Your Second Test:%0
    > &TEST3 me=$test3 *:@emit Your Third Test:%0
    > test1
    Your First Test:
    > test1 abc
    Your First Test: abc  [notice the space between ':' and 'a']
    > test2
    Huh? (Type 'help' for help)  [Because ? requires 1 character exactly]
    > test2X
    Your Second Test:X
    > test2abc
    Huh? (Type 'help' for help)  [Because ? required 1 character exactly]
    > test3
    Huh? (Type 'help' for help)  [because you have a space in the command]
    > test3 abc
    Your Third Test:abc  [notice no space between ':' and 'a']
    
  { See 'help wildcards2' for clarification and extended explainations }
 
[PREV] [TOP] [NEXT]

\?

  Topic:  WILDCARDS [* and ?]
  
  Wildcards are the standard globbing mechanism for the mush engine.  With the
  wildcards, the '*' character is considered 0 or more characters and the '?'
  character is considered a single character.  These are used primarilly in
  commands and functions that allow mulit-matching based on wild card support.
  
  Example:
    > say match(this is a test,?es*)
    You say "4"
  
  Wildcards, however, are most useful for $command substitution matching.
  When you create your own softcoded command, any argument you want
  substituted you would place a '*' or a '?' for that argument.  Each argument
  is then matched up with a numerical argument for each wildcard used.  The
  first argument being %0, second being %1, and so forth.
  
  Example:
    > &TEST1 me=$test1*:@emit Your First Test:%0
    > &TEST2 me=$test2?:@emit Your Second Test:%0
    > &TEST3 me=$test3 *:@emit Your Third Test:%0
    > test1
    Your First Test:
    > test1 abc
    Your First Test: abc  [notice the space between ':' and 'a']
    > test2
    Huh? (Type 'help' for help)  [Because ? requires 1 character exactly]
    > test2X
    Your Second Test:X
    > test2abc
    Huh? (Type 'help' for help)  [Because ? required 1 character exactly]
    > test3
    Huh? (Type 'help' for help)  [because you have a space in the command]
    > test3 abc
    Your Third Test:abc  [notice no space between ':' and 'a']
    
  { See 'help wildcards2' for clarification and extended explainations }
 
[PREV] [TOP] [NEXT]

\\

  Command: \\<message>
  Outputs <message> to everyone in your current room without embellishment.
  Example: the command '\\A chill falls over the room.' produces
  'A chill falls over the room.'
  
  See Also: @emit, @oemit, NOSPOOF
  
[PREV] [TOP] [NEXT]

]

  Command: ]<command>
  
  This tells the parser that the command following it is to not be parsed.
  
  See Also: train

[PREV] [TOP] [NEXT]

ABODE

  ABODE(A)  If a room is set ABODE, players can set their homes there, 
  and can set the homes of objects there.  It does not mean that a 
  player can open an exit to that room, only that they can set their 
  home there.
  
  See Also: LINK_OK
  
[PREV] [TOP] [NEXT]

ABS()

  Function: abs(<number>)
 
  Returns the absolute value of its argument.
  <number> may be a floating point number, and a floating point result
  is returned.
 
  Examples:
    > say abs(4)
    You say "4"
    > say abs(-4)
    You say "4"
    > say abs(0)
    You say "0"
   
  See Also: sign()
 
[PREV] [TOP] [NEXT]

ACCENT()

  Function: accent(<string>,<template>)
  
  The accent() function will return <string>, with characters in it
  possibly changed to accented ones according to <template>. Both
  arguments must be the same number of characters.
  
  Whether or not the resulting string is actually displayed correctly
  is client-dependent. Some OSes uses different character sets than
  the one assumed (ISO 8859-1), and some clients strip these 8-bit
  characters.
  
  You may also use the markup character %f to specify accents.
  To do that you would specify the <template> character after %f
  and then a 'n' to normalize it.
   
  You must be @toggled ACCENTS to be able to use accents. 
  
  ZENTY_ANSI must be compiled in to be able to use accents.
  
{ "help accent2" for more }
  
[PREV] [TOP] [NEXT]

ACCENT2

  CONTINUE
  Function: accent(<string>,<templatet>)
  
  For each character in <string>, the corresponding character of
  <template> is checked according to the table below, and a replacement
  done. If either the current <string> or <template> characters aren't
  in the table, the <string> character is passed through unchanged.
  
  Accent                         Template   String
  Name       Description         Character  Character
  -----------------------------------------------------------------
  grave      Backward slant      `          A,E,I,O,U,a,e,i,o,u
             above letter
  acute      Forward slant       '          A,E,I,O,U,Y,a,e,i,o,u,y
             above letter
  tilde      Wavy line above     ~          A,N,O,a,n,o
             letter
  circumflex carat above         ^          A,E,I,O,U,a,e,i,o,u
             letter
  umlaut     Two dots above      :          A,E,I,O,U,a,e,i,o,u
  diaeresis  letter
  ring       Small circle above  o          A,a
             letter
  cedilla    Small tail below    ,          C,c
             letter
  
{ "help accent3" for more }

[PREV] [TOP] [NEXT]

ACCENT3

  CONTINUED
  Function: accent(<string>,<template>)
  
  These are non-accent special characters, mostly punctuation and
  non-roman letters.
  
                      Template   String
  Description         Character  Character
  --------------------------------------------------------------
  Upside-down ?       u          ?
  Upside-down !       u          !
  << quote mark       "          <
  >> quote mark       "          >
  German sharp s      B          s
  Capital thorn       |          P
  Lower-case thorn    |          p
  Capital eth         -          D
  Lower-case eth      &          o
   
{ "help accent4" for examples }
[PREV] [TOP] [NEXT]

ACCENT4

  CONTINUED
  Function: accent(<string>,<template>)
  
  Examples:
    > say accent(Aule, ---:)
    You say "Aul(e-with-diaeresis)"
    > say accent(The Nina was a ship, The Ni~a was a ship)
    You say "The Ni(n-with-~)a was a ship"
    > say accent(Khazad ai-menu!, Khaz^d ai-m^nu!)
    You say "Khaz(a-with-^)d ai-m(e-with-^)nu!"
    > say %f^Khazad ai-menu!%fn
    You say "Kh(a-with-^)z(a-with-^)d (ai-with-^)-m(e-with-^)n(u-with-^)!"
  
  See Also: ACCENTS, chr(), asc(), tr(), stripaccents(), substitutions.

[PREV] [TOP] [NEXT]

ACCENTS TOGGLE

  Toggle: ACCENTS
  
  When set on a player, and as long as ZENTY_ANSI has been compiled
  into the RhostMUSH in question, this allows the player to see
  accented strings (umlauts, ticks, tildas, etc).
  
  Accents are displayed by using the accent() function or the %f
  substitution.

[PREV] [TOP] [NEXT]

ACOS()

  Function: acos(<number> [,<units>])
   
  Returns the arc-cosine of <number>, expressed in radians.
   
  You may specify <units> which are either (r)adians,
  (g)radians, or (d)egrees.  (r)adians are the default.
   
  Examples:
    > say acos(0)
    You say "1.570796"
    > say acos(1)
    You say "0"
    > say acos(0.707101)
    You say "0.785406"
    > say acos(0.866025)
    You say "0.5236"
  
  See Also: asin(), atan(), atan2(), cos(), pi(), sin(), tan(), ctu(), 
            cosh(), sinh(), tanh()
  
[PREV] [TOP] [NEXT]

ADD()

  Function: add(<number1>,<number2>[,<numberN>]...)
   
  Returns the result of adding its arguments together.
  You may add up to 30 numbers in one add() call.
  
  Numbers may be floating point numbers, and a floating point result
  is returned.
   
  Example:
    > say add(2,4)
    You say "6"
    > say add(5,3,7,-4)
    You say "11"
  
  See Also: div(), mod(), mul(), sub()
  
[PREV] [TOP] [NEXT]

AFTER()

  Function: after(<string1>, <string2> [,<key>])
 
  Returns the portion of <string1> that occurs after <string2>.  If <string2>
  does not occur in <string1>, a null string is returned.
  If you want to return the portion of the string after the first space,
  use the rest() function instead.  This function is case sensitive.
  
  You may specify a <key> of 1 to disable ansi handling which will speed
  this function up.  The default is '0' which allows ansi handling.
  
  Note: the config param 'ansi_default' handles if the ansi handling is 
        configured default or not.  In which case the 'key' is reversed.
   
  Examples:
    > say after(This is a test,a)
    You say " test"
    > say after(This is a test,is)
    You say " is a test"
    > say after(This is a test, nope)
    You say ""
  
  See Also: before(), first(), rest()
  
[PREV] [TOP] [NEXT]

AIINDEX()

  Function: aiindex(<list>, <string>, <position>, <delimiter>)
  
  This function is similar to index(), except that it inserts the <string>
  at the <position> in the given <list>.  You must specify a delimiter.
  For a space, use a '%b' as a delimiter.  This works exactly like iindex()
  except it allows you to 'add insert' to an empty list.
  
  Example:
    > say aiindex(this is a test,another cat and,3,%b)
    You say "this is another cat and a test"
    > say aiindex(,another test,1,|)
    You say "another test"
    > say aiindex(another test,a test,1,|)
    You say "a test|another test"
  
  See Also: index(), rindex(), aindex()
  
[PREV] [TOP] [NEXT]

AINDEX()

  Function: aindex(<list>, <string>, <position>, <delimiter>)
  
  This function is similar to index(), except that it appends the <string>
  after the <position> in the given <list>.  You must specify a delimiter.
  For a space, use a '%b' as a delimiter.
  
  Example:
    > say aindex(this is a test,was and,1,%b)
    You say "this was and is a test"
  
  See Also: index(), rindex, iindex()
  
[PREV] [TOP] [NEXT]

aliased functions

  Function Lists: Aliased Functions.
     
  flip()        - An alias of revwords()
  items()       - <<Change: Not in help.>>
  matchall()    - <<Not in help.>>
  squish()      - An alias of strip()
  lparent()     - Returns all the parents of an object.
  die()         - Rolls a set of dice for random number generation.

[PREV] [TOP] [NEXT]

ALIGN()

  RhostMUSH has no built in align(). 
  
  See 'help printf()'

[PREV] [TOP] [NEXT]

ALLOF()

  Function: ofparse(<type>, [<eval1> [,<eval2> ... <evalN or delim>]])

  Type 1&3: ofparse(<type>,[<eval1> ,<eval2> ... <evalN>], <default>)
  Type 2&4: ofparse(<type>,[<eval1> ,<eval2> ... <evalN>], <output separator>)
  Type 5&7: ofparse(<type>,[<eval1> ,<eval2> ... <evalN>], <default>)
  Type 6&8: ofparse(<type>,[<eval1> ,<eval2> ... <evalN>], <output separator>)
  
  This function will take each <eval> and returns it based on the <type>.
  
  The following types exist:
    1  -- Issue a firstof().  Essentially return the first <eval> that is
          a true boolean.  This stops evaluation on first true <eval>.
          The <default> is returned if no evals are met.  The <default>
          is the assumed argument if only passed a single argument.
    2  -- Issue an allof().  Essentially returning every <eval> that is
          a true boolean.  This evaluates every argument.
    3  -- This is the reverse of '1'.  It returns the first <eval> that
          is a false boolean.  IT stops evaluation on first false <eval>.
          This again assumes <default> if no other arguments.
    4  -- This is the reverse of '2'.  It returns every false <eval>
          boolean. This evaluates every argument.
    5  -- Issue a strfirstof().  Essentially returns the first <eval> that
          is a non-null string.  This stops evaluation on first non-null
          <eval>.
    6  -- Issues a strallof().  Essentially returns every <eval> that is
          a non-null string.  This evaluates everyu argument.
    7  -- This is the reverse of '5'.  It essentially will either return
          a null or the default value.
    8  -- This is the reverse of '6'.  It essentially will return
          a list of nulls if you have such in your list.  This evaluates
          every argument.
  
  For PennMUSH function lineup:
      firstof(x,y)    == ofparse(1,x,y)
      allof(x,y,z)    == ofparse(2,x,y,z)
      strfirstof(x,y) == ofparse(5,x,y)
      strallof(x,y,z) == ofparse(6,x,y,z)
  
{ see 'help ofparse2' for examples }

[PREV] [TOP] [NEXT]

ALPHAMAX()

  Function: alphamax(<word1>, <word2>, <word3>, ...)
  Takes up to ten word arguments, and returns the word which is
  lexicographically biggest.
  
  Example:
    > say alphamax(this,thix,thiz)
    You say "thiz"
  
  See Also: alphamin(), min(), max()
  
  
[PREV] [TOP] [NEXT]

ALPHAMIN()

  Function: alphamin(<word1>, <word2>, <word3>, ...)
  Takes up to ten word arguments, and returns the word which is
  lexicographically smallest.
  
  Example:
    > say alphamin(this,those,these)
    You say "this"
  
  See Also: alphamax(), min(), max()
  
[PREV] [TOP] [NEXT]

ALT INVENTORIES

  RhostMUSH has the option of allowing alternate inventories.  Alternate
  inventories are seen by the 'worn' and 'wielded' commands.  There are
  various ways to configure this that wizards have to do but to see what
  is currently allowed on the mush, type '@list options' and it'll be
  listed in that information.  Items that are wielded will have to be
  toggled WIELDED (by a wizard) and items that are worn will have to
  be toggled WORN (by a wizard).  Sorry, there are no 'wield' or 'wear'
  commands to wield weapons or wear equipment.  It was felt this would
  be too limiting for various enviornments so look to see if there
  exists a specialized +wear or +wield on the mush you are on or talk
  to a local staff about this feature.
  
[PREV] [TOP] [NEXT]

ALTNAMES

  RhostMUSH allows alternate names of items.  This is done through the
  '@altname' attribute.  If you pass the lock for altnames (@lock/altname)
  then you will see the true name of the object followed by the altname
  in {}'s.  An example would be:  Book(#123) {Tome}
  
  Both @altname and @lock/altname are wizard only.
  
  This will only effect look.  If you try to reference the altname of 
  the item with any other command, it will not recognize it as a valid
  name.  This is meant to avoid abusiveness.
  
  See Also: look
  
[PREV] [TOP] [NEXT]

ANCESTORS

  Topic: PARENT OBJECTS (continued)
 
  A parent object may itself have a parent, up to a configurable limit
  (usually 10 levels).  The parent need not be the same type as its children,
  and flags are not inherited from parent objects.  However, a UseLock
  is inherited.  IE: if the parent is uselocked against you, you can not
  use it's functionality.  You may not create parent loops.
 
  The parent system inheritance in RhostMUSH is rather robust.  When 
  attributes are looked up it follows a chain of inheritance rules.
  Lookups are in the following order for attribute lookups:
  
    1.  Does attribute exist on object?
    2.  Does attribute exist in physical parent?
        A.  If attribute is set NOINHERIT this is ignored.
        B.  See: help @parent
    3.  Does attribute exist in any of the zones it belongs to?
        A.  If attribute is set NOINHERIT this is ignored.
        B.  The zonemaster must be set ZONEPARENT for inheritance.
        C.  If object is toggled NOZONEPARENT this is ignored.
        D.  See: help zones and help zoneparent
    4.  Does attribute exist on any by-type global parents (virtual).
        A.  If attribute is set NOINHERIT this is ignored.
        B.  If object is toggled NOGLOBPARENT this is ignored.
        C.  See: wizhelp global_parent_<type> (room|thing|player|exit).
    5.  Does attribute exist on the generic global parent (virtual).
        A.  If attribute is set NOINHERIT this is ignored.
        B.  If object is toggled NOGLOBPARENT this is ignored.
        C.  See: wizhelp global_parent_obj
  
  All attribute fetches take normal rules regarding normal attribute
  permissions in addition to the rules previously mentioned.
  
  See Also: @parent, parent(). parents(), children()
  
[PREV] [TOP] [NEXT]

AND()

  Function: and(<boolean1>,<boolean2>[,<booleanN>]...)
   
  Takes two or more booleans, and returns 1 if they are all each equivalent
  to true(1).
  
  Example:
    > say [and(1,0)] @ [and(0,0)] @ [and(0,1)] @ [and(1,1)]
    You say "0 @ 0 @ 0 @ 1"
  
  See Also: BOOLEAN VALUES, or(), not(), xor(), nand(), nor(), xnor()
  
[PREV] [TOP] [NEXT]

ANDCHR()

  Function: andchr(<string>,<listofcharacters>)
  
  This function returns true(1) if the specified <string> contains
  at least one of every character in <listofcharacters>.  If one
  of the characters does not exist, it'll return false(0).
  
  Examples:
    > say andchr(wizards,zdi)
    You say "1"
    > say andchr(wizards,zdx)
    You say "0"
  
  See Also: orchr(), xorchr(), notchr()
  
[PREV] [TOP] [NEXT]

ANDFLAG()

  Function: andflag(<target>,<flag1>[,<flag2>,...,<flagN>])
  
  This function checks if the target has ALL the specified flags.  You
  may also specify !FLAG to check if it does not have that specified flag.
  
  Examples:
    > say lflags(me)
    You say "PLAYER OPAQUE ANSI ANSICOLOR ALTQUOTA TERSE"
    > say andflag(me,ansi,ansicolor,!inherit)
    You say "1"
    > say andflag(me,ansi,terse,going)
    You say "0"
  
  See Also: orflag(), hasflag(), lflags(), flags()
  
[PREV] [TOP] [NEXT]

ANDFLAGS()

  Function: andflags(<target>,<flag-list>)
  
  This function checks if the target has ALL the specified flags.  You
  may also specify !<letter> to check if it does not have the specified
  flag.  Since the GUEST flag is the '!' character as well, if you wish
  to match against the guest flag, you just escape it out like '\\!'.
  
  RhostMUSH also has a high-order of flags.  These show up between []'s
  when you do a flags().  To check against these flags, you must proceed
  it with a '2'.  To return back to the normal-order of flags, proceed
  it with a '1' (default).  You must escape out the '1' and the '2' if
  you wish to specify the MARKER flags (1 and 2).  Ie: '\\1', '\\2'.
  
  Examples:
    > say flags(me)
    You say "PDcW[I]"
    > say andflags(me,PD!o)]
    You say "1"
    > say andflags(me,PI)]
    You say "0"
    > say andflags(me,P2I)]
    You say "1"
    > say andflags(me,P2I1c)]
    You say "1"
  
  See Also: andflag(), orflag(), orflags(), hasflag(), flags(), lflags()
  
[PREV] [TOP] [NEXT]

ANSI

  Flag: ANSI(<)
  
  This flag is only meaningful for players.  When set, it allows ansi
  control codes to be sent to the player's terminal.  This does not in
  itself enable ansi color codes, but must be set in addition to the
  ANSICOLOR flag.  Without this flag, all ansi codes are stripped before
  you see them.
  
  You need both the ANSI and ANSICOLOR flags to see ansi color.
  
  See Also: ANSICOLOR, XTERMCOLOR, SUBSTITUTIONS, ANSI(), NOFLASH, COLORS()
  
[PREV] [TOP] [NEXT]

ansi functions

  Function Lists: Ansi Functions
      
  ansi()        - ANSI formats a string.
  colors()      - List colors or optionally display value of color.
  editansi()    - Edit the ANSI of a string.
  stripansi()   - Strips ANSI characters from a string.

[PREV] [TOP] [NEXT]

ANSI QUIRKS

  Function: ansi(<codes>,<string>)   -- CONTINUED
            ansi(<FG>/<BG>,<string>) -- CONTINUED
  
  Ansi, since all special characters (including those accented!) are passed 
  around the parser as % codes (%c/%x/%f), and the parser USES %'s and \'s 
  as escape codes, this means that when you try to ansi backslashes (\) or 
  percents (%) the parser and ansi-translater could misinterprete your 
  intention as escaping out that ansi and not actually mean colorize my 
  escape character. 
  
  Don't worry!  Not all is lost!  You may specify the percent(%) character 
  as chr(37) and the backslash(\) as chr(92) and these will be passed 
  through the parser as 'special' substitutions, meaning once it hits the 
  ansi-translater, you get to see your percent and/or backslash in the nice 
  pretty color you wanted.  The percent and backslash issue usually only 
  happens when it's at the very end of the string you are trying to colorize 
  or accent.  
  
  Also, any use of chr() will padd out any alignment by 5 characters.  So any
  that you use, make sure to keep this in mind.  All the formatting functions
  take this into account automatically so should be invisible to you, but
  the overhead does exist.
  
  Examples:
    > say ansi(hr,\\)
    You say "\%cn"                             (the \%cn is highlight red)
    > say ansi(hr,chr(92))
    You say "\"                                (the \ is highlight red)
    > say ansi(hr,%%)
    You say "%cn"                              (the %cn is highlight red)
    > say ansi(hr,chr(37))                     
    You say "%"                                (the % is highlight red)
    
  See Also: ansi(), stripansi(), ANSI, ANSICOLOR, XTERMCOLOR, NO_FLASH, 
            SUBSTITUTIONS, XTERMCOLOR LIST, COLORS()

[PREV] [TOP] [NEXT]

ANSI()

  Function: ansi(<codes>,<string>[,<codes>,<string>,...,<codes>,<string>])
            ansi(FG/BG,<string>[,<codes>,string>,...,FG/BG,<string>])
   
  *NOTE* : You MUST have both the ANSI and ANSICOLOR flags set to see color!
           ANSI-NORMAL (n) has priority in any ansi string!
  
  This allows you to highlight a string using ANSI terminal effects. The
  string is terminated with a "return to normal" code, and the codes are
  utilized in the order they are specified. You may specify multiple
  arguments as shown to ansi().  The 16 color codes are:
   
    f - flash                           i - inverse
    h - hilite                          n - normal
    u - underscore
   
    x - black foreground                X - black background
    r - red foreground                  R - red background
    g - green foreground                G - green background
    y - yellow foreground               Y - yellow background
    b - blue foreground                 B - blue background
    m - magenta foreground              M - magenta background
    c - cyan foreground                 C - cyan background
    w - white foreground                W - white background
  
  For example, "ansi(fc, Test)" would hilight "Test" in flashing cyan.
  
  See: 'XTERMCOLOR LIST' for the 256 color list.
  
{ 'help ansi2' for more -- The 256 Color Support}
{ 'help ansi quirks' for work arounds on weird ansi problems}

[PREV] [TOP] [NEXT]

ANSI2

  Function: ansi(<codes>,<string>)   -- CONTINUED
            ansi(<FG>/<BG>,<string>) -- CONTINUED
  
  For 256 color support, we offer multiple methods to handle it.  This needs
  the XTERMCOLOR flag to be set in addition to the normal ANSI and ANSICOLOR.
  
  First, you may specify the color with the + prefix.  This does not require 
  the '/' in the second option unless you intend to use background  colors.
  
  For 256 Color support we offer for the <FG> and <BG> options:
    0x<hex>     -- example: ansi(0xC4/,string) for 256 color foreground support
                            ansi(/0xC4,string) for 256 color background support
                            ansi(0xC4/0xC1,string) for FG and BG support
                   This does NOT require / for FG colors, but does for BG.
    0-255       -- example: ansi(196/,string) instead of '0xC4' for decimal.
                   This does NOT require / for FG colors, but does for BG.
    +color      -- example: ansi(+pink,string) for the 256 foreground 'pink'.
                   This does NOT require / for FG colors, but does for BG.
    #FFFFFF     -- example: ansi(#FF0000,string) to specify the RGB values.
                   This does NOT require / for FG colors, but does for BG.
    <#FFFFFF>   -- example: ansi(<#FF0000>,string) to specify the RGB values.
                   This does NOT require / for FG colors, but does for BG.
    <R G B>     -- example: ansi(<255 0 0>,string) to specify the RGB values.
                   This does NOT require / for FG colors, but does for BG.
    /           -- foreground/background indicator -- required where mentioned.
   
  You may mix and match the methods of the 256 color support.  As ansi() 
  supports multiple arguments, you may also use multiple types in different
  arguments.
  
  You may also use the %c/%x substitution (depending what is configured) to
  display 256 colors by using the '0x##' for foreground and '0X##' for 
  background.  Example: %c0xc4%c0X20whee%cn.  This allows you to even mix
  and match different ansi types like: %c0xc4%c0X20%cuwhee%cn to underline.
  0x## is foreground, and 0X## is background when using percent substitutions.
     
{ 'help ansi3' for more -- about XTERMCOLOR and ANSI examples }
{ 'help ansi quirks' for work arounds on weird ansi problems}
  
[PREV] [TOP] [NEXT]

ANSI3

  Function: ansi(<codes>,<string>)   -- CONTINUED
            ansi(<FG>/<BG>,<string>) -- CONTINUED
  
  You may also use the XTERM color support if your client supports it.
  You must set the XTERMCOLOR flag to see the extended color set.
  
  See XTERMCOLOR LIST for the extended color list and codes used for it.
  
  hex like ansi(0xca/0xab,string).  ansi(+colorname/+colorname) is allowed 
  for foreground and background.  Hex is case-insensitive.
  
  There is also a substitution for colors.  This is '%c' and works just
  as '%n' would for your name.  %crred%cn is red, %c0x01red%cn is also red.
  If you use %c substitutions, the 'x' after the '0' IS CASE SENSITIVE.  
  0x01 would be foreground, 0X01 would be background.
  
  Examples: 
    > say I like %cbblue %cnrocks and %crred %cnballs
    You say "I like <blue> rocks and <red> balls"
    > say I like [ansi(b,blue)] rocks and [ansi(r,red)] balls
    You say "I like <blue> rocks and <red> balls"
    > say I like [ansi(38/,skyblue)] rocks and [ansi(203/,indianred)] balls
    You say "I like <skyblue> rocks and <indianred> balls"
    > say I like [ansi(0x26/,skyblue)] [ansi(0xcB/,indianred)] ballons
    You say "I like <skyblue> <indianred> balls"
    > say I like [ansi(+skyblue,skyblue)] [ansi(+indianred,indianred)] balls
    You say "I like <skyblue> <indianred> balls" (note / not needed for +FG)
    > say I like [ansi(+skyblue/,skyblue)] [ansi(+indianred/,indianred)] balls
    You say "I like <skyblue> <indianred> balls"
  
  The words 'blue' and 'red' being their respected colors.  Any ansi
  sequence can be substituted using percent substitutions, and will
  continue till either the end of the line or until a normalization ansi 
  code is entered (the %cn).
   
{ 'help ansi4' for more -- Flags required and information }
{ 'help ansi quirks' for work arounds on weird ansi problems}

[PREV] [TOP] [NEXT]

ANSI4

  Function: ansi(<codes>,<string>)   -- CONTINUED
            ansi(<FG>/<BG>,<string>) -- CONTINUED
  
  NOTE:  The ANSI flag is used to see base ansi sequences (flash,highlight,etc)
         The ANSICOLOR flag is used _with_ ANSI to see color.
         The XTERMCOLOR flag is used _with_ ANSICOLOR to see extended colors.
         You must have both of the first flags set to see ansi color.
         You must have all three flags to see extended colors.
         
  Keep in mind that the functionality of %c and %x may be reversed.  
  Check '@list options' on the server you are on to see if this has
  been reversed or not.
  
  See Also: ansi(), stripansi(), ANSI, ANSICOLOR, XTERMCOLOR, NO_FLASH, 
            SUBSTITUTIONS, XTERMCOLOR LIST, COLORS()

{ 'help ansi quirks' for work arounds on weird ansi problems}
  
[PREV] [TOP] [NEXT]

ANSICOLOR

  Flag: ANSICOLOR(>)
  
  This flag is only meaningful for players.  When set in conjunction with
  the ANSI flag, this will allow ansi color codes to be sent to the 
  player's terminal.
  
  You need both the ANSI and ANSICOLOR flags to see ansi color.
  
  See Also: ANSI, XTERMCOLOR, SUBSTITUTIONS, ANSI(), NOFLASH, COLORS()
  
[PREV] [TOP] [NEXT]

ANSINAMES

  An addition to the code allows you to have ansi colors on ALL data types.
  This includes THINGs, EXITs, ROOMs, and yes, even PLAYERs.  This is done
  by setting ansi letter codes in the @ansiname attribute.  As long as
  the wizards haven't disabled you in particular or the mush as a whole
  from using ansi codes in that data type, it will now be colorized.
  
  See Also: @ansiname
  
[PREV] [TOP] [NEXT]

APOSS()

  Function: aposs(<object>)
 
  Returns the proper absolute possessive pronoun (his, hers, its, theirs) for
  referring to <object>, based on the object's Sex attribute.  You must either
  control or be near <object>.
  
  Example:
    > @sex me=male
    Set.
    > say aposs(me)
    You say "his"
   
  See Also: SUBSTITUTIONS, obj(), subj(), poss()
  
[PREV] [TOP] [NEXT]

ARBITRARY COMMANDS

  Topic: ARBITRARY COMMANDS
 
  You may define commands that are triggered whenever someone enters a command
  that matches the command template (wildcarding allowed).  These commands
  are called arbitrary commands, user-defined commands, or $-commands (for how
  they are defined), and they are checked for only after the check for
  single-character commands, exits, and internal commands have been performed
  and have failed (so an arbitrary command that matches 'page *' will never
  be performed).
 
  You define an arbitrary command by storing a string of the form
  '$<template>:<commandlist>' in an attribute of an object, then the command
  will be available to anyone who carries the object, is in the same room as
  the object, or is inside the object.  Only use user-named attributes and
  VA-VZ for arbitrary commands, as many of the predefined attributes are not
  for arbitrary commands.  <template> is the pattern to check for (it may
  contain wildcards), and <commandlist> is a semicolon-separated list of
  commands to perform.  The text that the wildcard characters matched are
  available in the variables %0 through %9.
  
{ 'help arbitrary2' for more }
  
[PREV] [TOP] [NEXT]

arbitrary2

  Example:
    > @va testobj = $foobar *:"I was foobar'ed with %0.
    Set.
    > foobar xyzzy
    testobj says "I was foobar'ed with xyzzy"
 
  You can prevent individual attributes from being checked for $-commands
  with the command '@set <obj>/<attr> = no_command'.  Attributes so set
  are reported with ($) following the attribute name when examined.
  The command '@set <obj>/<attr> = !no_command' clears the flag.
 
  The following attributes are never checked for $-commands: ALIAS CHARGES
  DESC DROP FAIL IDESC ODESC ODROP OFAIL OSUCC SEX SUCC.
  
  All $commands and ^listen pairs may be parsed using regular expressions.   
  
  See Also: @set, &, VATOVZ, ZATOZZ, $-COMMANDS, REGEXPS
  
[PREV] [TOP] [NEXT]

ARCHITECT

  Flag: ARCHITECT(B)  
  
  If a player is ARCHITECT, they have various wizard powers
  available to them and fewer restrictions to do things.  They can
  do anything equal to or less than their power using #<number> or
  *<player>.  Only ROYALTY, SUPER-ROYALTY, or #1 can set this flag
  on players.
  
  See Also: GUILDMASTER, COUNCILOR, ROYALTY, IMMORTAL
  
[PREV] [TOP] [NEXT]

arithmetic functions

  Function lists: Arithmetic Functions
  
  abs()       - Returns absolute value of its argument.
  add()       - Adds two values together.
  avg()       - Returns the average of a set of numbers.
  between()   - Returns true if a value is between two others.
  bound()     - Bounds a number between a min and max value.
  dec()       - Decreases a value held in a register by 1.
  dice()      - Simulates a roll of dice to generate a random number.
  div()       - Divides an integer value with another.
  ee()        - Engineering notation of a number.
  fbetween()  - Returns true if a floating point value is between two others.
  fbound()    - Returns a floating point between a min and max value.
  fdiv()      - Division with floating point support.
  floordiv()  - Returns the integer quotient from dividing two values.
  inc()       - Increases a value held in a register by 1.
  mod()       - Returns the integer remainder from dividing two values.
  modulo()    - Returns the modulo of two values
  mul()       - Multiplies two values.
  ncomp()     - Compares integer values.
  rand()      - Returns a random number.
  remainder() - Returns the remainder of a division.
  sign()      - Returns the sign of an integer value.
  strmath()   - Applies math to a string.
  sub()       - Subtracts two values from eachother.
  xdec()      - Decreases the value passed by 1.
  xinc()      - Increases the value passed by 1.

[PREV] [TOP] [NEXT]

ARRAY()

  Function: array(<string>, <reg count>, <width> [[,<delim> [,<type> [,<sep>]])
  
  This function will take an input string and split it out, based on width,
  rounding to the first viable word (if possible) and spit it out into setq
  registers based on the number of registers you wish to split it in based
  on <reg count>.  Registers start from 0-9 then go to a-z.  Registers
  are cleared automatically before being utilized.
  
  You may specify an optional delimiter.  By default, it takes any white
  space.  You may optionally specify the type.  A type of '1' will take
  the virtual register count down then over.  The default '0' does it
  in a normal sequential order.
  
  If you specify width of '0' and specify a delimeter, then it will ignore
  width of the values and split the array based on the delimiter only.
  
  If you wish to store the setq registers prior to this function, please
  utilize the pushregs() function to back-up your registers.
  
  The default separator is '%r' (carriage return + line feed).  If you do
  not wish this to be the case, you may specify your own separator <sep>
  which can be one or more characters.
  
  This function is ansi aware. 
  
  Examples:
    > think array(abcdefghij,2,2)%q0
    ab
    ef
    ij
    
    > think array(abcdefghij,2,2,,,%b)%q0
    ab ef ij

    > think array(abcdefgh,2,2)%q1
    cd
    eh

    > think array(abcdefghij,2,2,,1)%q0
    ab
    cd
    ef

    > think array(abcdefghij,2,2,,1)%q1
    gh
    ij
  
  See Also: printf(), setq(), setr(), r(), substitutions

[PREV] [TOP] [NEXT]

ART()

  Function: art(<string> [,<key>])
  This returns the string prefixed with an 'a' or an 'an' article depending
  if the first letter in the string is a consonant or a vowel.
  
  If you specify a <key> of '1', then only the article will be displayed. 
  
  Examples:
    > say art(apple)
    You say "an apple"
    > say art(bear)
    You say "a bear"
    > say art(bear,1)
    You say "a"
 
  See Also: poss(), subj(), obj()
  
[PREV] [TOP] [NEXT]

ASC()

  Function: asc(<character> [,<key>])
  
  This function returns the ASCII numerical value of the given character.
  
  If you specify a key of '1', then it will padd zeros (0) to a three
  character number.  The default is zero '0'.
   
  Examples:
  > say asc(a)
  You say "97"
  > say asc(a,1)
  You say "097"
  
  See Also: CHR()
  
[PREV] [TOP] [NEXT]

ASIN()

  Function: asin(<number> [,<units>])
   
  Returns the arcsine of <number>, expressed in radians.
  
  You may specify <units> which are either (r)adians,
  (g)radians, or (d)egrees.  (r)adians are the default.
   
  Examples:
    > say asin(0)
    You say "0"
    > say asin(1)
    You say "1.570796"
    > say asin(0.707101)
    You say "0.78539"
    > say asin(0.5)
    You say "0.523599"
  
  See Also: acos(), atan(), atan2(), cos(), pi(), sin(), tan(), ctu(), 
            cosh(), sinh(), tanh()
  
[PREV] [TOP] [NEXT]

ATAN()

  Function: atan(<number> [,<units>])
            atan2(<number1>, <number2> [,<units>]
  
  ATAN Returns the arctangent of <number>, expressed in radians.
  
  ATAN2 Returns the arctangent of <number1> divided by <number2> in radians.
  This is equivelant to atan(fdiv(<number1>,<number2>)[,<units>]) but allows
  a '0' divider without a divide by zero error.
   
  You may specify <units> which are either (r)adians,
  (g)radians, or (d)egrees.  (r)adians are the default.
  
  Examples:
    > say atan(0)
    You say "0"
    > say atan(1)
    You say "0.785398"
    > say atan2(90,90)
    You say "0.785398"
    > say atan(1.557408)
    You say "1"
    > say atan2(90,25)
    You say "1.299849"
  
  See Also: acos(), asin(), cos(), pi(), sin(), tan(), ctu(), cosh(), sinh(),
            tanh(), atan2()
  
[PREV] [TOP] [NEXT]

ATAN2()

  Function: atan(<number> [,<units>])
            atan2(<number1>, <number2> [,<units>]
  
  ATAN Returns the arctangent of <number>, expressed in radians.
  
  ATAN2 Returns the arctangent of <number1> divided by <number2> in radians.
  This is equivelant to atan(fdiv(<number1>,<number2>)[,<units>]) but allows
  a '0' divider without a divide by zero error.
   
  You may specify <units> which are either (r)adians,
  (g)radians, or (d)egrees.  (r)adians are the default.
  
  Examples:
    > say atan(0)
    You say "0"
    > say atan(1)
    You say "0.785398"
    > say atan2(90,90)
    You say "0.785398"
    > say atan(1.557408)
    You say "1"
    > say atan2(90,25)
    You say "1.299849"
  
  See Also: acos(), asin(), cos(), pi(), sin(), tan(), ctu(), cosh(), sinh(),
            tanh(), atan2()
  
[PREV] [TOP] [NEXT]

ATTRCNT()

  Function: attrcnt(<object> [,<key>])
  This returns the total number of attributes that the target object has.
  This gets around some limitations of words(lattr(<object>)) due to the
  parser limitation.  This attribute has the sideeffect of repairing
  attribute corruption on the target.
  
  The following keys exist:
      0 - (default) - list attributes and delete corrupted attributes.
      1 - list attributes and attempt to repair corrupted attributes.
      2 - list attributes but do not touch corrupted attributes.
      3 - remove any IS_LOCK on any attribute that is user-defined.
  
  If there is attribute corruption, the value returned will be '-1'.
  
  Examples:
    > say attrcnt(me)
    You say "20"
    > say words(lattr(me))
    You say "20"
  
  See Also: words(), lattr(), vattrcnt()
  
[PREV] [TOP] [NEXT]

ATTRIB FORMATTING

  All NON-ACTION attributes allowed formatting are in: help attributes
  
  Attribute formatting can be accomplished multiple ways.  First, there is
  a generic local 'format' for most @-attributes.  To process this format,
  you need to set an attribute of the name 'format<attr>' on the target
  (or parent, global parent, zone of the target. Use <attr>format if the
  config parameter format_compatibility is enabled). If this attribute is
  not found, it will then look at the global default parents for matching
  attribute inheritance.  Any attribute that you wish to inherit default
  pattern formatting must be set DEFAULT (attribute flag).  The desc is
  passed into the formatting as '%0'.  Local formatting has priority
  over global formatting.
  
  Note: Most RhostMUSHes will be configured to use &FORMAT<attr>.
        See '@list options system' to discover which method is in use.
  
  Examples:
    > @desc me=This is a test
    > @admin player_attr_default=123
    > @desc #123=-< %0 >-
    > lo me
      -< This is a test >-
    > &formatdesc me===<%0>==
    > lo me
      ===<This is a test>===

  See Also: ATTRIBUTES, ATTRIBUTE FLAG DEFAULT, @conformat, 
            @exitformat, @nameformat, invformat

[PREV] [TOP] [NEXT]

ATTRIBUTE FLAG ARCHITECT

  Attribute Flag: ARCHITECT(A)
  Set by: @set #obj/attr=architect (only by architect+)
  
  Only architect or higher may modify the attribute.

[PREV] [TOP] [NEXT]

ATTRIBUTE FLAG ATRLOCK

  Attribute Flag: ATRLOCK(l)
  Set by: @set #obj/attr=atrlock
  
  This specifies that the attribute has a content lock.  Content locks mean
  that you must match specific patterns to set or clear that attribute.
  See wizhelp on ATTRIB CONTLOCKS for more information.

[PREV] [TOP] [NEXT]

ATTRIBUTE FLAG COUNCILOR

  Attribute Flag: COUNCILOR(C)
  Set by: @set #obj/attr=councilor (only by councilor+)
  
  Only councilor or higher may modify the attribute.

[PREV] [TOP] [NEXT]

ATTRIBUTE FLAG DARK

  Attribute Flag: DARK(D)
  Set by: @set #obj/attr=dark (only by #1)
  
  The attribute is system-hidden.  This is intended as an internal flag only.

[PREV] [TOP] [NEXT]

ATTRIBUTE FLAG DEFAULT

  Attribute Flag: DEFAULT(F)
  Set by: @set #obj/attr=default
  
  The attribute will inherit formatting from the global format parents.
  See wizhelp on ATTRIB FORMATTING for more information.

[PREV] [TOP] [NEXT]

ATTRIBUTE FLAG GOD

  Attribute Flag: GOD(G)
  Set by: @set #obj/attr=god (only by #1)
  
  Only #1 may modify the attribute.

[PREV] [TOP] [NEXT]

ATTRIBUTE FLAG GUILDMASTER

  Attribute Flag: GUILDMASTER(g)
  Set by: @set #obj/attr=guildmaster (only by guildmaster+)
  
  Only guildmaster or higher may modify the attribute.

[PREV] [TOP] [NEXT]

ATTRIBUTE FLAG HIDDEN

  Attribute Flag: MDARK(M)       [HIDDEN]
  Set by: @set #obj/attr=hidden

  This attribute will be hidden.  If used in junction with the bitlevel flags,
  then it will be hidden to anyone below that bitlevel.

[PREV] [TOP] [NEXT]

ATTRIBUTE FLAG IMMORTAL

  Attribute Flag: IMMORTAL(i)
  Set by: @set #obj/attr=immortal (only by immortal+)

  Only immortal or #1 may modify the attribute.

[PREV] [TOP] [NEXT]

ATTRIBUTE FLAG LOCK

  Attribute Flag: LOCK(+)
  Set by: @lock #obj/attr
  
  The attribute has been locked.  Locked attributes by default can not be 
  modified.
  
  Exeptions:  
  wizards/immortals by default override this limitation on anything they 
  control.

[PREV] [TOP] [NEXT]

ATTRIBUTE FLAG LOGGED

  Attribute Flag: LOGGED(m)
  Set by: @set #obj/attr=logged
  
  This attribute is logged.  Any and all changes to this attribute are system
  logged with relevant information.

[PREV] [TOP] [NEXT]

ATTRIBUTE FLAG MDARK

  Attribute Flag: MDARK(M)       [HIDDEN]
  Set by: @set #obj/attr=hidden

  This attribute will be hidden.  If used in junction with the bitlevel flags,
  then it will be hidden to anyone below that bitlevel.

[PREV] [TOP] [NEXT]

ATTRIBUTE FLAG NO_CLONE

  Attribute Flag: NO_CLONE(N)
  Set by: @set #obj/attr=no_clone
  
  The attribute is not copied over when the object is @cloned.

[PREV] [TOP] [NEXT]

ATTRIBUTE FLAG NO_COMMAND

  Attribute Flag: NOPROG($)       [NO_COMMAND]
  Set by: @set #obj/attr=no_command
  
  When set on an attribute, it will not evaluate listens or commands.
 
[PREV] [TOP] [NEXT]

ATTRIBUTE FLAG NO_INHERIT

  Attribute Flag: NO_INHERIT(I)
  Set by: @set #obj/attr=no_inherit
  
  The attribute will not inherit attributes to the children.
  
[PREV] [TOP] [NEXT]

ATTRIBUTE FLAG NO_PARSE

  Attribute Flag: NO_PARSE(n)
  Set by: @set #obj/attr=no_parse
  
  The attribute does not parse input the player types.  All %0-%9 attributes
  are taken 'as-is' from the player.  This is useful to $command and ^listen
  attributes.
  
[PREV] [TOP] [NEXT]

ATTRIBUTE FLAG NOPROG

  Attribute Flag: NOPROG($)       [NO_COMMAND]
  Set by: @set #obj/attr=no_command
  
  When set on an attribute, it will not evaluate listens or commands.
 
[PREV] [TOP] [NEXT]

ATTRIBUTE FLAG PINVISIBLE

  Attribute Flag: PINVISIBLE(p)
  Set by: @set #obj/attr=pinvisible
  
  The attribute is cloaked, meaning that it can not be seen through examine,
  lattr, or any method of listing attributes on an object, but can still
  be called directly with a get() or u() if you know the attribute name.

[PREV] [TOP] [NEXT]

ATTRIBUTE FLAG PRIVATE

  Attribute Flag: PRIVATE(null)
  This is automatically added and can not be set individually.
  
  The attribute is private and can only be seen by the owner or anyone who 
  controls that attribute and/or object.

[PREV] [TOP] [NEXT]

ATTRIBUTE FLAG REGEXP

  Attribute Flag: REGEXP(R)
  Set by: @set #obj/attr=regexp
  
  This is only useful for listens or commands.  It stipulates that wildcard
  matching is done through regular expression matching instead of the default
  of glob pattern matching.

[PREV] [TOP] [NEXT]

ATTRIBUTE FLAG ROYALTY

  Attribute Flag: ROYALTY(W)      [WIZARD]
  Set by: @set #obj/attr=royalty (or wizard) (only by wizard+)
  
  Only wizard (royalty) or higher may modify the attribute.

[PREV] [TOP] [NEXT]

ATTRIBUTE FLAG SAFE

  Attribute Flag: SAFE(s)
  Set by: @set #obj/attr=safe
  
  The attribute is set safe and by default can not be touched when @wiped or
  removed or modified in any way.

[PREV] [TOP] [NEXT]

ATTRIBUTE FLAG SINGLETHREAD

  Attribute Flag: SINGLETHREAD(S)
  Set by: @set #obj/attr=singlethread
  
  If set on an attribute with a $command or ^listen, that attribute will be
  single-thread evaluated.  Essentially, it automatically sets the attribute
  NO_COMMAND upon execution of the command/listen, and will remain set
  NO_COMMAND until you manually unset the attribute flag.

[PREV] [TOP] [NEXT]

ATTRIBUTE FLAG USELOCK

  Attribute Flag: USELOCK(u)
  Set by: @set #obj/attr=uselock
  
  The attribute will be checked against attribute uselocks.  Please see
  the section on ATTRIBUTE USELOCk for more information.

[PREV] [TOP] [NEXT]

ATTRIBUTE FLAG VISUAL

  Attribute Flag: VISUAL(V)
  Set by: @set #obj/attr=visual
  
  When set on an attribute, that attribute will be visible to anything/anyone.
  
  Exceptions:  
  Anyone depowered from examine may not be able to see this.
  

[PREV] [TOP] [NEXT]

ATTRIBUTE FLAG WIZARD

  Attribute Flag: ROYALTY(W)      [WIZARD]
  Set by: @set #obj/attr=royalty (or wizard) (only by wizard+)
  
  Only wizard (royalty) or higher may modify the attribute.

[PREV] [TOP] [NEXT]

ATTRIBUTE FLAGS

  Topic: ATTRIBUTE FLAGS
  
  Attribute flags are flags a person sees when they use lflags() or flags()
  to grab the given flag off an attribute.  They are:
  
    NOPROG($)       (this shows up when you set an attribute NO_COMMAND)
    VISUAL(V)       (this shows up when you set an attribute VISUAL)
    NO_INHERIT(I)   (this shows up when you set an attribute NO_INHERIT)
    LOCK(+)         (this shows when an attribute is @locked)
  * GUILDMASTER(g)  (this shows when an attribute is set GUILDMASTER)
  * ARCHITECT(A)    (this shows when an attribute is set ARCHITECT)
  * COUNCILOR(C)    (this shows when an attribute is set COUNCILOR)
  * ROYALTY(W)      (this shows when an attribute is set WIZARD)    
  * IMMORTAL(i)     (this shows when an attribute is set IMMORTAL)
  * GOD(G)          (this shows when an attribute is set GOD)
  * MDARK(M)        (this shows when an attribute is set HIDDEN)
    PRIVATE         (this shows when an attribute is set PRIVATE)
    NO_CLONE(N)     (this shows when an attribute is set NO_CLONE)
    NO_PARSE(n)     (this shows when an attribute is set NO_PARSE)
    SAFE(s)         (this shows when an attribute is set SAFE)
  * PINVISIBLE(p)   (this shows when an attribute is set PINVISIBLE)
  * DARK(D)         (this shows when an attribute is set DARK)
  * USELOCK(u)      (this shows when an attribute has a USELOCK)
    SINGLETHREAD(S) (this shows when an attribute is set SINGLETHREAD)
    DEFAULT(F)      (this shows when an attribute is set DEFAULT)
  * ATRLOCK(l)      (this shows when an attribute is set ATRLOCK)
  * LOGGED(m)       (this shows when an attribute is set LOGGED)
    REGEXP(R)       (this shows when REGEXP are enabled on attributes)
  * UNSAFE(U)	    (this shows when attributes bypass safer_ufun)
   
  Attribute flags marked with a '*' are restricted based on permission level.
  
{See 'help attribute flags2' for meanings of the attribute flags}
  
[PREV] [TOP] [NEXT]

ATTRIBUTE FLAGS2

  Topic: ATTRIBUTE FLAGS - DEFINITION (continued)
  
  The following attribute flags result in the following behavior.
  
    NOPROG (NO_COMMAND) - The attribute will not execute $commands/^listens
    VISUAL              - The attribute is visual to anyone.
    NO_INHERIT          - The attribute is not inherited to it's children
    LOCK                - The attribute was @locked.
  * GUILDMASTER         - The attribute is modifyable by GuildMaster or higher
  * ARCHITECT           - The attribute is modifyable by Architect or higher
  * COUNCILOR           - The attribute is modifyable by Councilor or higher
  * ROYALTY             - The attribute is modifyable by Wizard or higher
  * IMMORTAL            - The attribute is modifyable by Immortal or higher
  * GOD                 - The attribute is modifyable only by #1
  * MDARK (HIDDEN)      - The attribute is wizard-hidden.
    PRIVATE             - The attribute is private to the item.
    NO_CLONE            - The attribute is not copied on a @clone
    NO_PARSE            - The attribute does not parse %0-%9 with $commands
    SAFE                - The attribute is safe from modification.
  * PINVISIBLE          - The attribute is seeable by wizards/modifyable to any
  * DARK                - The attribute is #1 seeable only
  * USELOCK             - The attribute can have an ~attribute uselock
                          (See help on 'attribute uselock' for more info)
    SINGLETHREAD        - The attribute must wait for completion before re-ran
    DEFAULT             - The attribute 'inherits' built-in attr globals.
  * ATRLOCK             - The attribute has a format lock.
  * LOGGED              - The attribute is logged for sets/edits/clears.
    REGEXP              - The attribute $/^ command/listen use regexp parsing
  * UNSAFE              - The attribute evaluates at object's permission level.
                          (this is the default behavior w/o safer_ufun set)
   
  Attribute flags marked with a '*' are restricted based on permission level.
  
  See Also: FLAG LIST
 
[PREV] [TOP] [NEXT]

ATTRIBUTE FORMATTING

  All NON-ACTION attributes allowed formatting are in: help attributes
  
  Attribute formatting can be accomplished multiple ways.  First, there is
  a generic local 'format' for most @-attributes.  To process this format,
  you need to set an attribute of the name 'format<attr>' on the target
  (or parent, global parent, zone of the target. Use <attr>format if the
  config parameter format_compatibility is enabled). If this attribute is
  not found, it will then look at the global default parents for matching
  attribute inheritance.  Any attribute that you wish to inherit default
  pattern formatting must be set DEFAULT (attribute flag).  The desc is
  passed into the formatting as '%0'.  Local formatting has priority
  over global formatting.
  
  Note: Most RhostMUSHes will be configured to use &FORMAT<attr>.
        See '@list options system' to discover which method is in use.
  
  Examples:
    > @desc me=This is a test
    > @admin player_attr_default=123
    > @desc #123=-< %0 >-
    > lo me
      -< This is a test >-
    > &formatdesc me===<%0>==
    > lo me
      ===<This is a test>===

  See Also: ATTRIBUTES, ATTRIBUTE FLAG DEFAULT, @conformat, 
            @exitformat, @nameformat, invformat

[PREV] [TOP] [NEXT]

ATTRIBUTE OWNERSHIP

  Topic: ATTRIBUTE OWNERSHIP
  The attributes on an object may be owned independently from the object.
  Normally, the owner of the object owns all of its attributes.
  In addition to an owner, each attribute also has a locked flag,
  set or cleared with @lock <obj>/<attr> and @unlock <obj>/<attr>.
  This flag controls whether or not the owner of the object may
  @chown the attribute to himself with @chown <object>/<attrib>,
  as well as whether or not the attribute is automatically @chowned to
  the new owner when the object is @chowned.
 
  You may lock and unlock attributes that you own on any object (whether
  you own the object or not), and you may @chown an attribute that you own
  to the owner of the object if it is unlocked.  The examine command
  will show you all attributes that you own on an object, even if you
  don't own the object.
  
{ 'help attribute ownership2' for more }
  
[PREV] [TOP] [NEXT]

attribute ownership2

  Locked attributes may not be modified or removed, and do not change 
  ownership when the object containing them is @chowned.
 
  You may not modify or remove attributes that you own that are stored
  on objects that you do not own, but you may modify or remove attributes
  owned by others on your objects (if you do this, the attribute becomes owned
  by you).
 
  If an attribute is owned by someone other than the object's owner, then
  the number of the attribute's owner is shown in parentheses immediately
  after the attribute name.  If there are any flags set on the attribute,
  those flags are indicated in the parentheses too.
 
  The + flag means that the attribute is locked (so that it will not
  change ownership of the object is @chowned), the $ flag means that
  $-commands are not checked for that attribute.  The I flag indicates that
  the attribute is not inherited by children of the object, and the V flag
  shows that the attribute is publicly visible.
  
{ 'help attribute ownership3' for more }
  
[PREV] [TOP] [NEXT]

attribute ownership3

 
  When checking an attribute lock against an object, the lock will always
  fail if the locked object is not owned by the same player as the attribute
  being tested.  The comparison specified in the lock is only performed if
  the owner of the locked object also owns the attribute on the object
  being checked.
 
  See Also: @chown, @lock, @set, @unlock, examine
  
[PREV] [TOP] [NEXT]

ATTRIBUTE TREE LIMITATIONS

  Topic: Attribute Trees/limitations
  
  There are caveats of using 'attribute trees' in RhostMUSH.  The largest of
  which, is the fact, that natively RhostMUSH does not support attribute 
  trees.  This is the case because of the binary database and the absolute
  overhead we would have implimenting a fully featured attribute tree system
  that would match (or exceed) what Penn offers.  The second, and larger
  issue is for the large amount of overhead this would cause, there really
  is very little gain out of it other than attribute organization. 
  
  Every time an attribute tree would be looked up, every conceiveable branch
  would have to be checked to see if permissions were granted.  While in
  Penn this would be less costly (but likely still costly for all the
  branch checks) in Rhost it would be doubly so.  We have to consider reality
  levels, the multiple bitlevel checks, all the various locks, all the various
  @powers, all the various @depowers, all the various built-in capping and
  conditionals, and do a hash lookup of every single attribute on the object
  for every single branch of every single pattern on the object itself for 
  every single branch in every single chain for every single lookup.  
  That would be a horrible waste of resources for minimal gains.
  
  So with that in mind, these are the limitations of Rhost with Attrib Trees:
    1.  @cluster/@wipe/wipe() is not attribute tree aware.  It likely won't be.
    2.  You can orphan a branch from a trunk if a further branch is locked.
        Remember, these are not true trees, just an imitation of them.
    3.  The set()/@set/lattr/examine/decompile honors the attribute tree
        permissions but only if the tree option is specified for them.
        Otherwise, it sees it just like any other attribute.
    4.  You can orphan a tree branch by setting an empty attribute (removing)
        it as it doesn't check branches of that attribute for permissions.
        So be careful.
    5.  This is intended to emulate the most used feature sets of Penn and
        was able to be done with minimal overhead.  Again, we have no
        interests nor desire to duplicate Penn's capabilities in this
        avenue as we see it directly opposite of our own agendas and goals.

[PREV] [TOP] [NEXT]

ATTRIBUTE TREE PERMISSION

  Topic: Attribute Trees/permission
  
  The following ways allows you to set permissions on various tree branches.
  Please be aware, @clusters and @wipe ARE NOT TREE AWARE!!!
  
  Locking Attributes:
    @lock -- Yup.  You can @lock an attribute and if it won't have permission
             to the branch, you won't have permission to the entire tree.
             All it takes is one branch of the tree to block the entire thing.
           > Example: @lock MyObj/A`TREE=me
  
    @aflag-- The @aflags wiz command allows you to set up attribute prefixes
             globally, individually, per owner, per object, or per enactor.
             Trees would check for these locks as well.
           > Example: See: wizhelp @aflags
   
    VLIMIT-- If you hit the maximum number of attributes or will hit the
             maximum number by setting all the trunks before the attribute,
             it will not set the attribute.
           > Example: See: wizhelp @admin, wizhelp vlimit
  
  See Also: @set, &, set(), rset(), lattr()
{ wiz help: @aflags, @admin, vlimit, @attribute, lattrp() }

[PREV] [TOP] [NEXT]

ATTRIBUTE TREE SETTING

  Topic: Attribute Trees/setting
  
  The following ways allow you to set trees and follow branching.
  Please be aware, @clusters and @wipe ARE NOT TREE AWARE!!!
  
  If the target is set REQUIRE_TREES then set requires this method.
 
  Setting Attributes:
    @set  -- @set has a /tree switch, that when used with attribute setting,
             will set the entire branch list included in the attribute.  The
             /tree switch is ignored for anything not involving setting or
             clearing attributes.
           > Example:  @set/tree MyObj=A`TREE`ATTRIB:Boo!
  
    &     -- &, when using ` as the first char, will tell & to set the attrib
             as if it was setting the tree.  
           > Example:  &`A`TREE`ATTRIB MyObj=Boo!
  
    set() -- set() has a third optional argument to tell it it's to set a
             tree.  The rset() function has this option as well.
           > Example:  set(MyObj,A`TREE`ATTRIB:Boo!,1)
  
  See Also: @set, &, set(), rset(), lattr()
{ wiz help: @aflags, @admin, vlimit, @attribute, lattrp() }
  
[PREV] [TOP] [NEXT]

ATTRIBUTE TREE VIEWING

  Topic: Attribute Trees/viewing
  
  The following ways allow you to view/examine trees and follow branching.
  Please be aware, @clusters and @wipe ARE NOT TREE AWARE!!!
  
  Viewing Attributes:
    ex    -- The examine command has a /tree option that lets you examine just
             the specified branch level itself.  If you want the tree and all
             branches, specify ex without the /tree switch.
           > Example: ex/tree MyObj/A`TREE*
  
    @dec  -- The @decompile command has a /tree option that lets you 
             @decompile the specified branch level itself.  If you want the
             tree and all branches, specify @decomile without the /tree switch.
           > Example: @decompile/tree MyObj/A`TREE*
  
    lattr -- lattr() as well as lattrp() has a key option that lets you specify
             if it should only give you trees per wildcarding.  This works like
             ex and @dec.
           > Example: lattr(MyObj/A`TREE*,,,,,1)
  
  See Also: @set, &, set(), rset(), lattr()
{ wiz help: @aflags, @admin, vlimit, @attribute, lattrp() }

[PREV] [TOP] [NEXT]

ATTRIBUTE TREES

  Topic: Attribute trees
  
  For ease of documentation, the attribute tree character for this
  documentation will be the ` character.
  
  Attribute trees are defined by attributes that contain ` to break up each
  branch in a tree.  Example:  THIS`IS`A`TREE`ATTRIBUTE
  
  Note:  The tree character, while defaulting to ` can be defined as any
         character, and may be changed depending on the whim of the admin
         running your game.  Please check '@list options system' on what the
         current tree character is defined as.  
  
  @clusters and @wipe are not tree aware.  This is intentional, and will 
  not be worth the effort to make them so.  Please do not ask for it to happen.
   
  RhostMUSH does not, specifically, have attribute trees as you would define
  them as.  Rhost does, however, allow you to mimic the feature set with
  some relative ease to allow some compatibility to PennMUSH (and any other
  codebase that may pick up that option in the future).  It does that by
  the following ways:
  
  Please be aware while /tree will follow permissions on attribute branches,
  directly @setting it without the /tree will bypass a branch check.  This
  is, again, intentional, as this is just a method to allow trees in an
  environment that is not designed around, nor intended to, fully implement
  PennMUSH style trees.
  
  For detailed information on what support RhostMUSH has for trees:
     ATTRIBUTE TREE SETTING     -- Help on attribute tree setting. 
     ATTRIBUTE TREE VIEWING     -- Help on attribute tree viewing.
     ATTRIBUTE TREE PERMISSION  -- Help on attribute tree locking/perms.
  
  For detailed information on limitations of what RhostMUSH does not:
     ATTRIBUTE TREE LIMITATIONS -- Limitations of attribute trees.
  
  For showing what the current TREE character is:
     @list options system
  
  See Also: @set, &, set(), rset(), lattr(), REQUIRE_TREES
{ wiz help: @aflags, @admin, vlimit, @attribute, lattrp() }

[PREV] [TOP] [NEXT]

ATTRIBUTE USELOCK2

  Topic: Attribute uselocks (continued)
  
  As you could see, this can be very handy if you want multiple control
  on the same object.  The following specifies if you pass or fail an
  attribute uselock:
    For Passing:
          - If the uselock attribute does not exist.
          - If the uselock attribute returns a null (empty string).
          - If the uselock attribute returns a '1'.
  
    For failure:
          - If the uselock attributes returns anything except '1' or null.
  
  See @list options to see if USELOCKS are available for attributes.  
  Depending on the configuration of the rhostmush in question, uselocks may
          - If the uselock attributes returns anything except '1' or null.
  
  See @list options to see if USELOCKS are available for attributes.  
  Depending on the configuration of the rhostmush in question, uselocks may
  be disabled or you may need a wizard to set one up for you.
  
[PREV] [TOP] [NEXT]

ATTRIBUTE USELOCKS

  Topic: Attribute uselocks
  
  A player must be @toggled ATRUSE in order to set and unset the USELOCK
  attribute flag on an attribute.  If you need this, please ask a staff
  about providing this for you.  This can be bypassed if it's configured
  to globally allow it via the secure_atruselock config parameter.
  
  Attribute uselocks are a method where you can specify individual uselocks
  per command per object.  The path it takes to check uselocks are as 
  follows:
          No Command? -> Halted? -> Object Uselock -> Attribute Uselock
  
  To set up a uselock on a command, the attribute that houses the $command
  must first be set USELOCK.  Once the attribute is set USELOCK, you may
  then specify a lock for that attribute.  Attribute locks are created by
  setting an attribute with a '~' before the attribute name. Here's an
  example that you can look at:
    > @va me=$tryme:@pemit %#=You tried your command.
      Set.
    > @set me/va=uselock
      Set.
    > &~VA me=[match(%#,owner(me))]
      Set.
    > tryme
      You tried your command.
    > &~VA me=[match(#-1,owner(me))]
      Set.
    > tryme
      Huh?  (Type 'help' for help.)
  
{ See 'help attribute uselock2' to continue (and a description)}
  
[PREV] [TOP] [NEXT]

attribute-commands

  Help available for RhostMUSH Commands (continued):
 
  @aahear    @aclone      @aconnect    @adescribe  @adfail       @adisconnect
  @adrop     @aefail      @aenter      @afail      @agfail       @ahear
  @akill     @aleave      @alfail      @alias      @amhear       @amove
  @ansiname  @apay        @arfail      @asfail     @asuccess     @atfail    
  @atofail   @atport      @aufail      @ause       @away         @caption 
  @charges   @conformat   @cost        @cpattr     @describe     @dfail
  @door      @drop        @ealias      @efail      @enter        @exitformat
  @fail      @filter      @forwardlist @gfail      @grep         @guild 
  @idesc     @idle        @infilter    @inprefix   @kill         @lalias    
  @leave     @lfail       @listen      @move       @nameformat   @odescribe 
  @odfail    @odrop       @oefail      @oenter     @ofail        @ogfail    
  @okill     @oleave      @olfail      @omove      @opay         @orfail    
  @osuccess  @otfail      @otofail     @otport     @oufail       @ouse
  @oxenter   @oxleave     @oxtport     @pay        @prefix       @race      
  @reject    @rfail       @runout      @salisten   @sasmell      @sataste
  @satouch   @saystring   @selfboot    @sex        @sfail        @slisten     
  @solisten  @sosmell     @sotaste     @sotouch    @ssmell       @startup   
  @staste    @stouch      @success     @tfail      @titlecaption @tofail
  @toggle    @tport       @ufail       +uptime     @use          @whereall  
  @whereis   @zone        
  
  
  See Also: @list
  
[PREV] [TOP] [NEXT]

attributes

  Help available for RhostMUSH Commands (continued):
 
  @aahear    @aclone      @aconnect    @adescribe  @adfail       @adisconnect
  @adrop     @aefail      @aenter      @afail      @agfail       @ahear
  @akill     @aleave      @alfail      @alias      @amhear       @amove
  @ansiname  @apay        @arfail      @asfail     @asuccess     @atfail    
  @atofail   @atport      @aufail      @ause       @away         @caption 
  @charges   @conformat   @cost        @cpattr     @describe     @dfail
  @door      @drop        @ealias      @efail      @enter        @exitformat
  @fail      @filter      @forwardlist @gfail      @grep         @guild 
  @idesc     @idle        @infilter    @inprefix   @kill         @lalias    
  @leave     @lfail       @listen      @move       @nameformat   @odescribe 
  @odfail    @odrop       @oefail      @oenter     @ofail        @ogfail    
  @okill     @oleave      @olfail      @omove      @opay         @orfail    
  @osuccess  @otfail      @otofail     @otport     @oufail       @ouse
  @oxenter   @oxleave     @oxtport     @pay        @prefix       @race      
  @reject    @rfail       @runout      @salisten   @sasmell      @sataste
  @satouch   @saystring   @selfboot    @sex        @sfail        @slisten     
  @solisten  @sosmell     @sotaste     @sotouch    @ssmell       @startup   
  @staste    @stouch      @success     @tfail      @titlecaption @tofail
  @toggle    @tport       @ufail       +uptime     @use          @whereall  
  @whereis   @zone        
  
  
  See Also: @list
  
[PREV] [TOP] [NEXT]

AUDIBLE

  Flag: AUDIBLE(n) (all types)
 
  When set on an object, player, or room everything from a say, pose, or emit
  inside the object will be sent to every object in the location of that
  object (except for rooms which have no location) as well as to all objects
  mentioned in the object's Forwardlist attribute.  When set on an exit,
  everything from a say, pose, or emit in the room the exit is in will be
  forwarded to the room the exit points to.  In both cases the @prefix
  attribute will be inserted in front of the text, or a default prefix if no
  @prefix attribute is set.  If the @filter attribute is present, it will be
  used to suppress those messages matching any of the patterns specified.
 
  See Also: @filter, @forwardlist, @prefix, PUPPET, MONITOR
 
[PREV] [TOP] [NEXT]

AUDITORIUM

  Flag: AUDITORIUM([a])   
  
  If a room or location is set AUDITORIUM, it checks
  the location's SpeechLock to see if you have permission to talk in
  that room otherwise it will not let you.  It stops @oemits, @emits,
  says, @pemit/contents, poses, and related commands.
  
  See Also: @lock, @sfail, @asfail
  
[PREV] [TOP] [NEXT]

AVG()

  Function: avg(<value1>,<value2>[,<value3>,...])
           mean(<value1>,<value2>[,<value3>,...])  (aliased)
  
  This function takes two more more values and returns the average of
  the values.
  
  Example:
    > say avg(5,6)
    You say "5.5"
    > say avg(5,6,7)
    You say "6"
  
  See Also: round(), trunc(), floor(), ceil()
  
[PREV] [TOP] [NEXT]

BANG NOTATION

  Bang notation allows you to use '!' and '!!' in functions for 'not' and
  'not-not' functionality.  This works similiarilly to the C equivelant of
  using 'bangs'.  You may also specify '!$' and '!!$' for FALSE or TRUE
  conditions on functions that return string values.  Finally, you may
  specify '!^' and '!!^' for true-boolean FALSE or TRUE conditions on
  functions that return true-boolean based on the function t()'.
  
  
  Example:
    > say match(one two three four five,four)
    You say "4"
    > say !match(one two three four five,four)
    You say "0"
    > say !!match(one two three four five,four)
    You say "1"
    > say !!$grab(this is a test,was)
    You say "0"
    > say !!$grab(this is a test,this)
    You say "1"
    > say !!^space(1000)                  (spaces are non-boolean strings)
    You say "0"
    > say !!$space(1000)                  (spaces are not-null strings)
    You say "1" 
  
  Bang notation may or may not be enabled based on the RhostMUSH that you are
  on.  Please check @list options to see if it is currently enabled.
  
[PREV] [TOP] [NEXT]

BEFORE()

  Function: before(<string1>, <string2> [,<key>])
 
  Returns the portion of <string1> that occurs before <string2>.  If <string2>
  does not occur in <string1>, the entire string is returned.
  If you want to return the portion of the string after the first space,
  use the first() function instead.  This function is case sensitive.
  
  You may specify a <key> of 1 to disable ansi handling which will speed
  this function up.  The default is '0' which allows ansi handling.
  
  Note: the config param 'ansi_default' handles if the ansi handling is 
        configured default or not.  In which case the 'key' is reversed.
   
  Examples:
    > say before(This is a test,a)
    You say "This is "
    > say before(This is a test,is)
    You say "Th"
    > say before(This is a test, nope) 
    You say "This is a test"
  
  See Also: after(), first(), rest()
  
[PREV] [TOP] [NEXT]

BEING KILLED

  Topic: BEING KILLED  
 
  Getting killed is no big deal. If you are killed, you return to your home,
  and  all things you carry return to their homes. You also collect 50 coins
  in insurance money (unless you have >= 10000 coins or you were killed via
  the Wizard slay command).  Generally, killing is not encouraged unless 
  absolutely necessary. (Note: Killing a wizard is a quick way to discover
  the many uses of the @boot command...  and killing anyone can be very
  rude.  However, on the RhostMUSH server, wizards are usually more inventive)
  
  See Also: kill, @akill, @kill, @okill, IMMORTAL, ROYALTY
  
[PREV] [TOP] [NEXT]

BETWEEN()

  Function: between(<value1>,<value2>,<number>[,<boolean>])
  
  This function will return TRUE (1) if <number> is between
  the values <value1> and <value2>.  If you specify the 
  optional boolean '1', it will see if the <number> is 
  between OR the values <value1> and <value2>.
  
  Example:
    > say between(10,15,14)
    You say "1"
    > say between(10,15,15)
    You say "0"
    > say between(10,15,15,1)
    You say "1"
  
  See Also: fbetween(), fbound(), bound(), gt(), lt(), gte(), lte()
  
[PREV] [TOP] [NEXT]

BITTYPE()

  Function: bittype(<object> [,<type>])
 
  Returns a number from the following table based on the owner of <object>.
  You may specify a <type> of '1' to enforce wiz-inheritance checks on
  the target <object> otherwise the default of '0' is applied which just
  checks ownership.
  
  The following permission levels are shown:
    God (#1)        7
    Super-Royalty   6
    Royalty         5
    Councilor       4
    Architect       3
    Guildmaster     2
    Citizen         1
    Wanderer/Guest  0
    ERROR           #-1
 
  If a player has more than one bit flag set, their highest one takes
  precedence.
 
[PREV] [TOP] [NEXT]

BLIND

  Flag: BLIND([g])  
  
  This flag, when set on a room, will make it so arrival
  or leaving messages, on that room, are not seen.  If it is on an
  exit, then any movement through that exit will not show the arrived
  or left messages.  Again, this flag is only useful for locations
  or exits.  
  
  If the config blind_snuffs_cons is enabled, this will also snuff
  the connect and disconnect messages.
  
  Note:  If the RhostMUSH is configured to make the BLIND flag 
         always in effect, then the BLIND flag will do the reverse
         of it's normal behavior, and make exit movement visible.
         @list options to see if it's in effect or not.
  
  See Also: CLOAK, DARK, UNFINDABLE
  
[PREV] [TOP] [NEXT]

BOGUS COMMANDS

  Topic: BOGUS COMMANDS    
  
  Bogus commands can be made using exits. For example, to make a 'sit'
  command, one could "@open sit", then "@link sit=here" (because unlinked
  exits can be stolen), "@lock sit=#0" (impossible for a room to pass a lock,
  #0 is always a room, therefore the lock always fails), and "@fail sit=You
  sit on the chair."; "@ofail sit=sits on the chair.".  Since nobody can go
  through it, it always fails. The @fail message is displayed  to the player,
  and the @ofail message (preceded by the player's name) to  everyone else.  
  
  For bogus commands, you may look at $commands instead as it doesn't take up
  valuable quota. (see help for $-commands)
  
  See Also: @afail, @fail, @link, @lock, @ofail, @open, $-COMMANDS
  
[PREV] [TOP] [NEXT]

BOOLEAN VALUES

  Topic: BOOLEAN VALUES
 
  Boolean values are internally considered to be either 1, generally
  interpreted as being true, and 0, which is generally interpreted as being
  false. Now, any string is interpreted as true(1), except for the null
  string (whose length is 0), which is false(0).  A #-1 is interpreted as
  false(0), and any other #<dbref> is interpreted as true(1).  Any number
  except 0 is interpreted as true(1), except 0 which is false(0). (Yes, even
  negative numbers are true(1))
 
  Examples:
  not(foo) = 0             not(<null string>) = 1   not(-66) = 0
  not(0) = 1               not(#-1) = 1             not(#12) = 0
  And so on...
 
  Note: These rules only apply when a function expects a Boolean 
  value, not for strings that expect other values.
  
  See Also: FUNCTION CLASSES
  
[PREV] [TOP] [NEXT]

BOUNCE

  Flag: BOUNCE([o])  
  Attribute: BOUNCEFORWARD
  
  Note:  The attribute is set with @set or &.
  
  This flag redirects the output that the target receives
  and sends it to all of it's contents.  This is handy if you don't want
  to mess with @listens or @forwards.  This allows players to have 
  'listens' without having to enable 'player_listen' which can be 
  dangerous.
  
  The target set BOUNCE may have a BOUNCEFORWARD attribute that will
  redirect everything that object would have seen to the list of
  dbref#'s specified in BOUNCEFORWARD.  The list must be dref#'s
  and valid player objects.  Be aware that the source forwarding
  notifies the targets in the BOUNCEFORWARD where the text is
  originating from, so no abusing it :)
  
  Examples:
    > @set thing=bounce
    Set.
    > &bounceforward thing=#12 #34 #4567
    Set.
  
[PREV] [TOP] [NEXT]

BOUNCEFORWARD

  Flag: BOUNCE([o])  
  Attribute: BOUNCEFORWARD
  
  Note:  The attribute is set with @set or &.
  
  This flag redirects the output that the target receives
  and sends it to all of it's contents.  This is handy if you don't want
  to mess with @listens or @forwards.  This allows players to have 
  'listens' without having to enable 'player_listen' which can be 
  dangerous.
  
  The target set BOUNCE may have a BOUNCEFORWARD attribute that will
  redirect everything that object would have seen to the list of
  dbref#'s specified in BOUNCEFORWARD.  The list must be dref#'s
  and valid player objects.  Be aware that the source forwarding
  notifies the targets in the BOUNCEFORWARD where the text is
  originating from, so no abusing it :)
  
  Examples:
    > @set thing=bounce
    Set.
    > &bounceforward thing=#12 #34 #4567
    Set.
  
[PREV] [TOP] [NEXT]

BOUND()

  Function: bound(<number>,<min-value>[,<max-value>])
  
  This function will return <number> if greater than min-value, else it will 
  return min-value.  If max-value exists, and number is greater than max-value
  then max-value is used.
  
  Example:
    > say bound(8,12)
    You say "12"
    > say bound(8,12,10)
    You say "10"
  
  See Also: between(), fbetween(), fbound(), gt(), lt(), gte(), lte()

[PREV] [TOP] [NEXT]

BRACKETS()

  Function: brackets([<string>])
   
  Returns a count of the number of left and right square brackets,
  parentheses, and curly braces in the string, in that order, as a
  space-separated list of numbers. This is useful for finding missing
  or extra brackets in MUSH code.
   
  Example:
  > @desc me=This is [ansi(h,a test)] of the { brackets() function.
  Set.
  > think brackets(v(desc))
  1 1 2 2 1 0             (This is: 1-[, 1-], 2-(, 2-), 1-{, 0-})
  
  See Also: totpos(), numpos(), nummatch(), totmatch(), parenmatch(),
            parenstr()
  
[PREV] [TOP] [NEXT]

BRANDY_MAIL TOGGLE

  Toggle: BRANDY_MAIL
  
  When this toggle is set on the target, whenever that target starts
  a message with 'mail <string1>=<string2>' it will mimic the brandy
  mailer by making string2 be the SUBJECT of the message instead of
  making it the body of the message and immediately sending it 
  (which is the default).  See help on 'mail send' for more info on
  how this works.
  
  See Also: mail send, penn_mail toggle, mail_stripreturn toggle
  
[PREV] [TOP] [NEXT]

BYEROOM

  Flag: BYEROOM(=)  
  
  This flag, when set on rooms, is meant to depict that your
  room is about to be destroyed.  This is used instead of the GOING 
  flag as the server has been heavily modified and now will allow
  for one thing the recovery of destroyed players/rooms/things under
  a set period of time.  The syntax is @set #room=!BYEROOM
  
  See Also: GOING, @destroy
  
[PREV] [TOP] [NEXT]

CAND()

  Function: cand(<boolean1>,<boolean2>[,<booleanN>]...)
   
  Takes two or more booleans, and returns 1 if they are all each equivalent
  to true(1).  Unlike and(), this function stops after the FIRST false
  statement.
  
  Example: 
    > say [cand(1[setq(0,test)],0,1[setq(1,test2)] - [r(0)] / [r(1)]
    You say "1 - test / "
    > say [cand(1[setq(0,test)],1,1[setq(1,test2)] - [r(0)] / [r(1)]
    You say "1 - test / test2"
  
  See Also: BOOLEAN VALUES, or(), not(), xor(), nand(), nor(), xnor(), cor()
  
[PREV] [TOP] [NEXT]

CAPLIST()

  Function: caplist(<list>[,<delim>[,<osep>[,<key>[,<type>]]]])

  Returns <list> with the first character of each word capitalized.  You may
  specify an optional <delim> as a delimiter for the list input, otherwise the
  default of space will be used.  You may also specify an optional <osep>
  as a separator for the list that is returned.
  
  Additionally, an optional <key> may be specified which alters the behavior
  of the function slightly.  The key must be one of the following characters:
    - L:    Reduces the entire list to lower case before capitalization is
            performed.
    - N:    Performs capitalization naturally, and does not affect any other
            characters in the list (default).
    - T:    Performs a 'true' capitalization based on currently English
            definition for titles.
  
  A <type> of '1' will work with <key> values of 'L' or 'T' to optionally 
  capitalize all words contained in a hyphon, optionally.  The default
  behavior is to capitalize only the start of the word.  This <type> value
  has no influence on the 'N' <key> type.
   
  Example:
    > say caplist(the mAn in thE mOon).
    You say "The MAn In ThE MOon."

    > say caplist(the mAn in thE mOon,,|,L).
    You say "The|Man|In|The|Moon."
  
  See Also: capstr()

[PREV] [TOP] [NEXT]

CAPSTR()

  Function: capstr(<string>)
 
  Returns <string> with the first character capitalized.  If the first
  character is not a letter, this function returns the string unmodified.
 
  Example:
    > say capstr(this is a string I want capitalized)
    You say "This is a string I want capitalized"
  
  See Also: lcstr(), ucstr(), caplist()

[PREV] [TOP] [NEXT]

case()

  Function: case(<str>[,<pat1>,<res1>]...[,<dflt>])
  case() is like switch() but does not do wildcard matching (i.e., using *).
  In cases where wildcards are not needed, it performs marginally faster.
  This function is also case sensitive.
   
  Example:
    > say case(c,a,A,b,B,c,C,d,D,E)
    You say "C"
    > say case(f,a,A,b,B,c,C,d,D,E)
    You say "E"
  
  See Also: @switch, match(), ifelse(), switch()
  
[PREV] [TOP] [NEXT]

caseall()

  Function: caseall(<str>[,<pat1>,<res1>]...[,<dflt>])
  caseall() is like switchall() but does not do wildcard matching 
  (i.e., using *).  In cases where wildcards are not needed, it performs 
  marginally faster.  This function is also case sensitive.
   
  Example:
    > say caseall(c,a,A,b,B,c,C,d,D,c,X,E)
    You say "CX"
    > say caseall(f,a,A,b,B,c,C,d,D,E)
    You say "E"
  
  See Also: @switch, match(), ifelse(), switch(), switchall()
  
[PREV] [TOP] [NEXT]

cat()

  Function: cat(<string>[,<stringN>])
 
  cat returns a string made up of the contents of string1 through stringN,
  with each string separated from its neighbors by a space.
 
  Example:
    > say cat(this is, a test)
    You say "this is a test"
    > say cat(This is,another,test of the,CAT function)
    You say "This is another test of the CAT function"
  
  See Also: setunion(), setinter(), strcat()
  
[PREV] [TOP] [NEXT]

cdark

  Command: co  <name> <password>  (short for connect)
           cd  <name> <password>  (short for cdark)
           ch  <name> <password>  (short for chidden)
           cr  <name> <password>  (short for create)
           reg <name> <password>  (short for register)
  
  Note:  To create/log in a character with spaces in their name, please use
         "<name>".  Ergo, surround your name with double quotes.
         The 'register' command does not allow creation with spaces.
  
  These commands are only useful on the connect screen.  They are used to
  create/connect to your account <name> with the provided <password>.  
  These commands are not useable once you are connected to the mush.
  
  These commands are as follows:
     co  -- This option is the default and normal method to connect.
            This option has no special conditions or privilages.
            Syntax: co player password
                    co "Player With Spaces" password
  
     ch  -- Wizards and anyone with the NOWHO @power (to @hide) can use this.
            This option will auto-hide the player when connecting.
            It defaults to the 'co' option if you can't @hide.
            Syntax: ch player password
                    ch "Player With Spaces" password
  
     cd  -- Wizards and higher can use this to connect dark to the game.
            This effectively connects wiz-cloaked to the game.
            Immortals get auto-added to supercloak.
            Syntax: cd player password
                    cd "Player With Spaces" password
     
     cr  -- Allows creation of a player from the connect screen.
            Syntax: cr player password
                    cr "Player With Spaces" password
  
     reg -- If offline registration is enabled, allows the player to register
            a character with a supplied email that is then used to email them
            their password.
            Syntax: reg player email@address
                    reg "Player With Spaces" email@address
  
  See Also: @aconnect, @adisconnect, @hide, @register
            
[PREV] [TOP] [NEXT]

CEIL()

  Function: ceil(<number>)
 
  Returns the smallest integer greater than or equal to <number>.  <number>
  may be a floating point number, and an integer result is returned.
 
  Examples:
    > say ceil(5)
    You say "5"
    > say ceil(5.2)
    You say "6"
    > say ceil(5.8)
    You say "6"
    > say ceil(-5)
    You say "-5"
    > say ceil(-5.2)
    You say "-5"
  
  See Also: div(), floor(), mod(), round(), trunc()
  
[PREV] [TOP] [NEXT]

CENTER()

  Function: center(<string>,<width>[,<fill>])
 
  This function will center a string in a string <width> characters wide,
  using <fil> characters for padding on either end of the string for
  centering.  If no fill character is specified then a space is used.
  If <string> is longer than <width> characters, the string is returned
  unmodified.  The <fill> may contain more than one character.
  
  If you wish to use ansified filler, use printf() instead.
   
  Example:
    > say center(a,5,-)
    You say "--a--"
    > say center(*BAMF*,15)
    You say "    *BAMF*     "
  
  Alternate:
    > say printf($:-:^5s,a)            (the '^' specifies center justify)
    You say "--a--"
  
  See Also: ljust(), rjust(), ljc(), rjc(), printf()
  
[PREV] [TOP] [NEXT]

changes

  For a list of actual changes, see 'help revis'.
  
  RhostMUSH, first originating in 1989/1990, was founded as a TinyMUD.
  Though the current code runs a MUSH compatible kernal, we still use
  the exact same database from that period.  You will find RhostMUSH
  is nothing like a MUD, MUSH or a MUSE.  It is a hybrid of many systems.
  The coders for RhostMUSH have put a lot of effort into adding changes 
  and modifying the server.  You will find that pretty much any code 
  will work properly here on RhostMUSH.  Another major change is error 
  messages are randomized.  So if you see something strange, you're 
  not being spoofed.  Also, if you notice a strange response, don't 
  think it's a problem.  Talk to a staff person as the option you 
  may be trying may be disabled.
  
  The list of changes done to this server goes beyond any document
  can describe.  The only resemblance this has to TinyMUSH or any
  other variety of server is in its backward compatibility with
  how it parses and functionality returns.
   
  For help on these people, look at CREDITS
  
  See Also: CREDITS
  
[PREV] [TOP] [NEXT]

channel

  Topic: channels/comsystem
  
  NOTE: If this has been disabled, check 'comhelp' or '+help' for the new one.
  
  The built in channel system that RhostMUSH has is a simple design
  based off standard MUSE com systems.  The format for each is
  as follows:
  
       +chan[nel] +channel-name  (add yourself to a channel)
       +chan[nel] -channel-name  (remove yourself from a channel)
       +chan[nel]                (display all your channels)
       +com channel=who          (see who is on a given channel)
       +com channel=message      ('talk' on a given channel)
  
  (help channel2 to continue)

[PREV] [TOP] [NEXT]

channel2

  Topic: channels/comsystem
  
  NOTE: If this has been disabled, check 'comhelp' or '+help' for the new one.
  
  The channel system is case sensitive and does recognize various
  formatting by the following special cases.
  
       :     this poses a message on the channel.
       ;     this possessive poses on the channel.
       "     this speaks on the channel.
  
          Syntax:  +com channel=[format]message
          Example: +com channel=:message (poses on the channel)
  
  All channels cost money (currently 5 gold a pop) except for
  'sting' (a flame-type channel for insults) and 'public' for
  general discussions.  Please note that any insults slung on
  sting REMAIN on sting.  This will be enforced. 
  
[PREV] [TOP] [NEXT]

CHARIN()

  Function: charin(<player>[,<type>])
  
  Charin returns the total number of characters of input that player has
  received.  If the type is '1', it will return the information in the form
  of PORT:CHARIN.  
  
  Example:
    > charin(me)
    You say "4328"
 
  This is generally only accessable by wizards.
  
[PREV] [TOP] [NEXT]

CHAROUT()

  Function: charout(<player>[,<type>])
  
  Charout returns the total number of characters of output that the player
  has sent.  If the type is '1', it will return the information in the form
  of PORT:CHAROUT.
  
  Examples:
    > say charout(me)
    You say "12959"
    > say charout(me,1)
    You say "10:12000 11:959"  
   
  This is generally only accessable to wizards.
  
[PREV] [TOP] [NEXT]

chidden

  Command: co  <name> <password>  (short for connect)
           cd  <name> <password>  (short for cdark)
           ch  <name> <password>  (short for chidden)
           cr  <name> <password>  (short for create)
           reg <name> <password>  (short for register)
  
  Note:  To create/log in a character with spaces in their name, please use
         "<name>".  Ergo, surround your name with double quotes.
         The 'register' command does not allow creation with spaces.
  
  These commands are only useful on the connect screen.  They are used to
  create/connect to your account <name> with the provided <password>.  
  These commands are not useable once you are connected to the mush.
  
  These commands are as follows:
     co  -- This option is the default and normal method to connect.
            This option has no special conditions or privilages.
            Syntax: co player password
                    co "Player With Spaces" password
  
     ch  -- Wizards and anyone with the NOWHO @power (to @hide) can use this.
            This option will auto-hide the player when connecting.
            It defaults to the 'co' option if you can't @hide.
            Syntax: ch player password
                    ch "Player With Spaces" password
  
     cd  -- Wizards and higher can use this to connect dark to the game.
            This effectively connects wiz-cloaked to the game.
            Immortals get auto-added to supercloak.
            Syntax: cd player password
                    cd "Player With Spaces" password
     
     cr  -- Allows creation of a player from the connect screen.
            Syntax: cr player password
                    cr "Player With Spaces" password
  
     reg -- If offline registration is enabled, allows the player to register
            a character with a supplied email that is then used to email them
            their password.
            Syntax: reg player email@address
                    reg "Player With Spaces" email@address
  
  See Also: @aconnect, @adisconnect, @hide, @register
            
[PREV] [TOP] [NEXT]

CHILDREN()

  Function: children(<obj> [,<key>] [,<objid>])
  
  Returns all children (objects parented to <obj>) that can be found.
  As this is somewhat extensive on the CPU, it may be limited to wizards
  only in the future.
  
  If the optional <objid> is specified as '1', then it will return the
  objid's instead of dbref#'s.
  
  The following optional keys are available:
    0 - list all children of the target (default)
    n - List 'n'th 400 children of the target. 
        NOTE: 'n' will be any number from 1 to however many 'pages'
              So '1' would be first 400, '2' would be second 400, etc.
    l - List total pages and total children of target.
    ~ - [~#1-#2] list children starting at #1 until count of #2.
     
  Example:
  > @parent #10=#5
  Parent set.
  > @parent #15=#5
  Parent set.
  > say children(#5)
  You say "#10 #15"
  > say children(#5,,1)
  You say "#10:8185828282 #15:8282859018"
  
  See Also: parents(), parent()
  
[PREV] [TOP] [NEXT]

CHKREALITY()

  Function: chkreality(<victom>, <target>)
  
  This checks if <victom> is able to see <target> through the reality.
  Reality Levels must be enabled for this function to work.  This also
  takes into account the @lock/user Reality Level Lock enhancement.
  You must control both the <victom> and the <target> to be able to get
  the reality, otherwise, it will return #-1.
  
  See Also: txlevel(), rxlevel()
  
[PREV] [TOP] [NEXT]

CHKREALITY()

  Function: chkreality(<victim>,<target>)
  
  Returns '1' if <victim> can see <target> in the reality.  This takes into
  account the optional reality lock (settable by @lock/user) as well as
  any realities that the player(s) belong to.  You must control both the
  target and the victim to get the result, else it will return #-1.
  
  Reality levels must be enabled for this function to be of use.
  
  See Also: hasrxlevel(), hastxlevel(), rxlevel(), txlevel()
  
[PREV] [TOP] [NEXT]

CHKTRACE()

  Function: chktrace()
  
  This function returns '1' (true) or '0' (false) if the parser is currently
  in trace (debug) mode.  This is handy for dynamically enabling or disabling
  trace on the fly.
  
  See Also: trace(), TRACE

[PREV] [TOP] [NEXT]

CHOMP()

  Function: chomp(<string> [,<option>])
  
  The chomp() function is used to strip carriage returns from the start,
  end, or both sides of a string.
  
  The following options are available:
    l - strip carriage returns on left side of string.
    r - strip carriage returns on right side of string.
    b - strip carriage returns on both sides of string (default).
   
  Examples:
  > say chomp(%rthis is a test%r)
  You say "this is a test"
  > say chomp(%rthis is a test%r,l)
  You say "this is a test
  "
  > say chomp(%rthis is a test%r,r)
  You say "
  this is a test"
  
  See Also: strip(), edit(), editansi(), pedit(), regedit()
  
[PREV] [TOP] [NEXT]

CHOWN_OK

  Flag: CHOWN_OK(C)
  
  This flag, when set, allows you to transfer ownership to
  another player. To set it, you must be carrying the object. You 
  also have to be in the room if you want to set this flag on rooms 
  or exits.  After this flag is set, the new player may gain 
  ownership of the object by using the @chown command (See @chown).
  
  See Also: @chown
  
[PREV] [TOP] [NEXT]

CHR()

  Function: chr(<number>)
  
  This function returns the character representation of the ASCII value
  entered.  Naturally, only printable characters are allowed and will
  notify you if a number is out of range.
  
  Examples:
  > say chr(97)
  You say "a"
  
  Note:  Using chr() on 37, 92, and any character between 160 and 255
         will padd out any padding you have by an additional 5 characters
         per use.  While the padding functions take this into account
         automatically, it's something to keep in mind.
    
  See Also: ASC()
  
[PREV] [TOP] [NEXT]

CITER()

  Function: citer(<list>, <eval>[, <delim>])
  
  <list> is a list of characters that you wish to iterate.  The list can
  be any regular character (including spaces).  <eval> is a string that is
  to be evaluated once for each character in <list>.  It returns a SPACE
  (or optional delimited) separated list of these evaluations.  The effect
  is similar to that of iter(), except it takes it as a character by 
  character basis instead of a word by word basis.  The special substitution
  of '##' is used for the current item of the list.  #@ is used for the
  positional match of that item in that list.  This is similar to 
  the explode function found on other mushes or in PHP.
  
  This function does not handle itext/inum/%i.  
   
  Examples:
    > say citer(boo!,##)
    You say "b o o !"
    > say citer(boo!,##-#@)
    You say "b-1 o-2 o-3 !-4"
    > say citer(testing,strlen(##))
    You say "1 1 1 1 1 1 1"
    > say citer(bob,## WHEE ##,@)
    You say "b WHEE b@o WHEE o@b WHEE b"
  
  See Also: iter(), nsiter(), list(), @dolist, creplace(), foreach()
  
[PREV] [TOP] [NEXT]

CLOAK

  Flag: CLOAK(b)  
  
  This flag when set on a player will quiet all 'has arrived',
  'has left', 'has connected' and 'has disconnected' messages by that
  player.  Note, however, that that player still triggers action
  variables like @aenter.  This is settable by ROYALTY and SUPER-ROYALTY
  only.  You must be DARK as well to make this flag effectively work.
  
  See Also: DARK, UNFINDABLE, BLIND
  
[PREV] [TOP] [NEXT]

CLONE()

  Function: clone(<object>[[,<new name>][,<key>])
  
  The clone() function will clone <object> with the optional new name of
  <new name>.  It follows all permissions and restrictions that the @clone
  command requires.  The SIDEFX flag is required to be able to use this
  function.
  
  The following keys are available for clone():
      1 - issue a PARENT clone                (normal rules apply)
      2 - issue a PRESERVE clone              (wizard only)
      3 - issue a PARENT and PRESERVE clone   (wizard only)
  
  Type @list options to see if this side-effect function is enabled.
  
  Examples:
    > say clone(An Object)
    You say ""
  
  See Also: create(), dig(), open(), @clone, SIDEEFFECTS
  
[PREV] [TOP] [NEXT]

CLUSTER COMMANDS

  Currently the only cluster command is @cluster.  This topic is intended
  for future growth of the cluster environment.
  
  See Also: @cluster, cluster functions
  
[PREV] [TOP] [NEXT]

cluster functions

  cluster_add()        - Add new target into cluster.
  cluster_attrcnt()    - Returns attribute count of cluster
  cluster_default()    - Issues a default() on the cluster.
  cluster_edefault()   - Issues an edefault() on the cluster.
  cluster_flags()      - Return flags of cluster.
  cluster_get()        - Issues a get() attribute on the cluster.
  cluster_get_eval()   - Issues an evaluated get() attribute on the cluster.
  cluster_grep()       - Greps the attribute on the cluster.
  cluster_hasattr()    - Checks if attribute exists on the cluster.
  cluster_hasflag()    - Check flag(s) of target cluster.
  cluster_lattr()      - Lists all attributes on the cluster.
  cluster_regrep()     - Regular expression grep for the cluster (case).
  cluster_regrepi()    - Regular expression grep for the cluster (non-case).
  cluster_set()        - Sets flags/attribute(s) on the cluster.
  cluster_stats()      - Shows statistics for the cluster.
  cluster_u()          - Issues a u() on the cluster.
  cluster_u2()         - Issues a u2() on the cluster.
  cluster_u2default()  - Issues a u2default() on the cluster.
  cluster_u2ldefault() - Issues a u2ldefault() on the cluster.
  cluster_u2local()    - Issues a u2local() on the cluster.
  cluster_udefault()   - Issues a udefault() on the cluster.
  cluster_ueval()      - Issues a ueval() on the cluster.
  cluster_uldefault()  - Issues a uldefault() on the cluster.
  cluster_ulocal()     - Issues a ulocal() on the cluster.
  cluster_vattrcnt()   - Lists the count of all user-defined attrs on cluster.
  cluster_wipe()       - Wipe matching attributes from the cluster.
  cluster_xget()       - Issues an xget() attribute get on the cluster.
  iscluster()          - Returns '1' if target belongs to a cluster.

[PREV] [TOP] [NEXT]

CLUSTER_ADD()

  Function: cluster_add(<cluster>, <object>)
  
  This function adds the target object into the cluster specified.
  
  This is a sideeffect function.
  
  Example:
    > say cluster_add(#1234,#9876)
    Cluster object #9876 has been added to #1234
  
  See Also: @cluster, cluster_attrcnt(), cluster_default(), cluster_edefault(),
            cluster_get(), cluster_get_eval(), cluster_grep(), 
            cluster_hasattr(), cluster_lattr(), cluster_regrep(), 
            cluster_regrepi(), cluster_set(), cluster_stats(), cluster_u(), 
            cluster_u2(), cluster_u2default(), cluster_u2ldefault(), 
            cluster_u2local(), cluster_udefault(), cluster_ueval(), 
            cluster_uldefault(), cluster_ulocal(), cluster_vattrcnt(), 
            cluster_wipe(), cluster_xget(), iscluster(), cluster_flags(), 
            cluster_hasflag(), cluster_add()

[PREV] [TOP] [NEXT]

CLUSTER_ATTRCNT()

  Function: cluster_attrcnt(<object> [,<key>])
  
  This function returns the total attributes in the given cluster.
  
  The following keys exist:
      0 - (default) - list attributes and delete corrupted attributes.
      1 - list attributes and attempt to repair corrupted attributes.
      2 - list attributes but do not touch corrupted attributes.
      3 - remove any IS_LOCK on any attribute that is user-defined.
  
  If there is attribute corruption, the value returned will be '-1'.
  
  Examples:
    > say cluster_attrcnt(cluster#1)
    You say "20192"
    > say words(cluster_lattr(cluster#1))	(this will hit the LBUF limit)
    You say "622"
  
  See Also: @cluster, cluster_attrcnt(), cluster_default(), cluster_edefault(),
            cluster_get(), cluster_get_eval(), cluster_grep(), 
            cluster_hasattr(), cluster_lattr(), cluster_regrep(), 
            cluster_regrepi(), cluster_set(), cluster_stats(), cluster_u(), 
            cluster_u2(), cluster_u2default(), cluster_u2ldefault(), 
            cluster_u2local(), cluster_udefault(), cluster_ueval(), 
            cluster_uldefault(), cluster_ulocal(), cluster_vattrcnt(), 
            cluster_wipe(), cluster_xget(), iscluster(), cluster_flags(), 
            cluster_hasflag(), cluster_add()

[PREV] [TOP] [NEXT]

CLUSTER_DEFAULT()

  Function: cluster_default(<obj>/<attr>,<default case>)
   
  This function returns the value of <obj>/<attr>, as if retrieved via
  the cluster_get() function, if the attribute exists and is readable by you.
  This works like the normal default() function but is geared to clusters.
  
  Examples:
    > >TEST cluster#1=apple orange banana
    > say cluster_default(cluster#1/Test, No fruits!)
    You say "apple orange banana"
    > >TEST cluster#1
    > say cluster_default(cluster#1/Test, No fruits!)
    You say "No fruits!"
  
  See Also: @cluster, cluster_attrcnt(), cluster_default(), cluster_edefault(),
            cluster_get(), cluster_get_eval(), cluster_grep(), 
            cluster_hasattr(), cluster_lattr(), cluster_regrep(), 
            cluster_regrepi(), cluster_set(), cluster_stats(), cluster_u(), 
            cluster_u2(), cluster_u2default(), cluster_u2ldefault(), 
            cluster_u2local(), cluster_udefault(), cluster_ueval(), 
            cluster_uldefault(), cluster_ulocal(), cluster_vattrcnt(), 
            cluster_wipe(), cluster_xget(), iscluster(), cluster_flags(), 
            cluster_hasflag(), cluster_add()

[PREV] [TOP] [NEXT]

CLUSTER_EDEFAULT()

  Function: cluster_edefault(<obj>/<attr>,<default case>)
 
  This function returns the evaluated value of <obj>/<attr> for the cluster,
  as if retrieved via the cluster_get_eval() function, if the attribute 
  exists and is readable by you. Otherwise, it evaluates the default case, 
  and returns that. The default case is only evaluated if the attribute
  does not exist or cannot be read.
 
  Example:
    > &TEST cluster#1=You have lost [rand(10)] marbles.
    > say cluster_edefault(cluster#1/Test,You have no marbles.)
    You say "You have lost 6 marbles."
    > &TEST me
    > say cluster_edefault(cluster#1/Test,You have no marbles.)
    You say "You have no marbles."
  
  
  See Also: @cluster, cluster_attrcnt(), cluster_default(), cluster_edefault(),
            cluster_get(), cluster_get_eval(), cluster_grep(), 
            cluster_hasattr(), cluster_lattr(), cluster_regrep(), 
            cluster_regrepi(), cluster_set(), cluster_stats(), cluster_u(), 
            cluster_u2(), cluster_u2default(), cluster_u2ldefault(), 
            cluster_u2local(), cluster_udefault(), cluster_ueval(), 
            cluster_uldefault(), cluster_ulocal(), cluster_vattrcnt(), 
            cluster_wipe(), cluster_xget(), iscluster(), cluster_flags(), 
            cluster_hasflag(), cluster_add()

[PREV] [TOP] [NEXT]

CLUSTER_FLAGS()

  Function: cluster_flags(<object>[/<attribute>])
  
  This function gets the flags of the specified cluster object, or if specified
  the attribute in the cluster.
  
  Example:
    > say cluster_flags(cluster#1)
    You say "is"
    > say cluster_flags(cluster#1/myattrib)
    You say "p"
    > say cluster_flags(me/asdfadsfasdfaf)
    You say ""
  
  See Also: @cluster, cluster_attrcnt(), cluster_default(), cluster_edefault(),
            cluster_get(), cluster_get_eval(), cluster_grep(), 
            cluster_hasattr(), cluster_lattr(), cluster_regrep(), 
            cluster_regrepi(), cluster_set(), cluster_stats(), cluster_u(), 
            cluster_u2(), cluster_u2default(), cluster_u2ldefault(), 
            cluster_u2local(), cluster_udefault(), cluster_ueval(), 
            cluster_uldefault(), cluster_ulocal(), cluster_vattrcnt(), 
            cluster_wipe(), cluster_xget(), iscluster(), cluster_flags(), 
            cluster_hasflag(), cluster_add()
  
[PREV] [TOP] [NEXT]

CLUSTER_GET()

  Function: cluster_get(<object>/<attribute>)
 
  The get function fetches the specified attribute from the cluster object.
  It can be used to get attributes from objects you own, public and visual
  attributes of objects near you, and public and visual attributes other
  than the description of players wherever they may be.  If the attribute is
  not present on cluster <object>, it will continue through every object
  in the cluster.
 
  Example:
    > read me
    > say get(cluster#1/desc)
  
  
  See Also: @cluster, cluster_attrcnt(), cluster_default(), cluster_edefault(),
            cluster_get(), cluster_get_eval(), cluster_grep(), 
            cluster_hasattr(), cluster_lattr(), cluster_regrep(), 
            cluster_regrepi(), cluster_set(), cluster_stats(), cluster_u(), 
            cluster_u2(), cluster_u2default(), cluster_u2ldefault(), 
            cluster_u2local(), cluster_udefault(), cluster_ueval(), 
            cluster_uldefault(), cluster_ulocal(), cluster_vattrcnt(), 
            cluster_wipe(), cluster_xget(), iscluster(), cluster_flags(), 
            cluster_hasflag(), cluster_add()

[PREV] [TOP] [NEXT]

CLUSTER_GET_EVAL()

  Function: cluster_get_eval(<object>/<attribute>)
 
  The get_eval function returns the specified attribute from the named cluster
  (just like the get function), except that function references and
  %-substitutions have already been performed.  In function references, 
  'me' refers to the object being looked at, and %-substitutions that refer
  to the enactor (such as %n, %#, etc) refer to the object making the get_eval
  call.  If the attribute is not present on <object>, it searches all clusters
  for the attribute.
 
  Example:
    > @va cluster#1 = This is a get_eval test on %n.  The vb is [get(me/vb)]
    > @vb cluster#1 = VB from test
    > say cluster_get(cluster#1/va)
    You say "This is a get_eval test on %n. The vb is [get(me/vb)]"
    > say cluster_get_eval(cluster#1/va)
    You say "This is a get_eval test on Foobar. The vb is VB from test"
  
  
  See Also: @cluster, cluster_attrcnt(), cluster_default(), cluster_edefault(),
            cluster_get(), cluster_get_eval(), cluster_grep(), 
            cluster_hasattr(), cluster_lattr(), cluster_regrep(), 
            cluster_regrepi(), cluster_set(), cluster_stats(), cluster_u(), 
            cluster_u2(), cluster_u2default(), cluster_u2ldefault(), 
            cluster_u2local(), cluster_udefault(), cluster_ueval(), 
            cluster_uldefault(), cluster_ulocal(), cluster_vattrcnt(), 
            cluster_wipe(), cluster_xget(), iscluster(), cluster_flags(), 
            cluster_hasflag(), cluster_add()

[PREV] [TOP] [NEXT]

CLUSTER_GREP()

  Function: cluster_grep(<object>, <attribute(s)>, <pattern>[,<type> [,<key>]])
   
  This returns a list of any matching attribute in a cluster that matches the
  <attribute(s)> that contain <pattern>.  The <attribute> may be wildcarded
  with a '*' or a '?' for multiple character matches and single character
  matches respectively.  In addition, the pattern may also be wildcarded.
  The following types exist:
    0 - show attributes matching pattern (default)
    1 - show the dbref# then all matching attributes after it
    2 - show the attributes in the form dbref#/pattern
  
  You may specify 'key' to '1' to remove assumed wildcard matches and require
  literal wildcard placements.
   
  Examples:
    > @va cluster#1=This is a test
    > @vb cluster#2=This is another test.
    > @vc cluster#3=Test Test Test whisooo!
    > say cluster_grep(cluster#1,v*,is)
    You say "VA VB VC"
    > say cluster_grep(cluster#1,v*,is,,1)
    You say "VA VB"
    > say cluster_grep(cluster#2,v*,*is*)
    You say "VA VB VC"
  
  See Also: @cluster, cluster_attrcnt(), cluster_default(), cluster_edefault(),
            cluster_get(), cluster_get_eval(), cluster_grep(), 
            cluster_hasattr(), cluster_lattr(), cluster_regrep(), 
            cluster_regrepi(), cluster_set(), cluster_stats(), cluster_u(), 
            cluster_u2(), cluster_u2default(), cluster_u2ldefault(), 
            cluster_u2local(), cluster_udefault(), cluster_ueval(), 
            cluster_uldefault(), cluster_ulocal(), cluster_vattrcnt(), 
            cluster_wipe(), cluster_xget(), iscluster(), cluster_flags(), 
            cluster_hasflag(), cluster_add()

[PREV] [TOP] [NEXT]

CLUSTER_HASATTR()

  Function: cluster_hasattr(<object>/<attribute name>)
            cluster_hasattr(<object>,<attribute name>)
  
  This function checks if the cluster has the matched attribute.  It will 
  search every object in the cluster for the matching attribute returning a
  1 (true) if it exists or a 0 (false) if it does not.
  
  Examples:
    > say cluster_hasattr(cluster#1,desc)
    You say "1"
    > say cluster_hasattr(cluster#1,rubberbabybuggybumper)
    You say "0" 
   
  See Also: @cluster, cluster_attrcnt(), cluster_default(), cluster_edefault(),
            cluster_get(), cluster_get_eval(), cluster_grep(), 
            cluster_hasattr(), cluster_lattr(), cluster_regrep(), 
            cluster_regrepi(), cluster_set(), cluster_stats(), cluster_u(), 
            cluster_u2(), cluster_u2default(), cluster_u2ldefault(), 
            cluster_u2local(), cluster_udefault(), cluster_ueval(), 
            cluster_uldefault(), cluster_ulocal(), cluster_vattrcnt(), 
            cluster_wipe(), cluster_xget(), iscluster(), cluster_flags(), 
            cluster_hasflag(), cluster_add()

[PREV] [TOP] [NEXT]

CLUSTER_HASFLAG()

  Function: cluster_hasflag(<object>[/<attrib>], <flag>)
  
  This function returns a '1' if the flag exists in the cluster, a '0' if it
  does not.  You may specify an attribute for the cluster for the flag match.
  If specifying a cluster object, it chooses the cluster object you specified.
     
  Example:
    > say cluster_hasflag(cluster#1, wizard)
    You say "0"
    > say cluster_hasflag(cluster#1, safe) 
    You say "1"
    > say cluster_hasflag(cluster#1/desc, NOPROG)
    You say "1"
  
  See Also: @cluster, cluster_attrcnt(), cluster_default(), cluster_edefault(),
            cluster_get(), cluster_get_eval(), cluster_grep(), 
            cluster_hasattr(), cluster_lattr(), cluster_regrep(), 
            cluster_regrepi(), cluster_set(), cluster_stats(), cluster_u(), 
            cluster_u2(), cluster_u2default(), cluster_u2ldefault(), 
            cluster_u2local(), cluster_udefault(), cluster_ueval(), 
            cluster_uldefault(), cluster_ulocal(), cluster_vattrcnt(), 
            cluster_wipe(), cluster_xget(), iscluster(), cluster_flags(), 
            cluster_hasflag(), cluster_add()

[PREV] [TOP] [NEXT]

CLUSTER_LATTR()

  Function: cluster_lattr(<obj>[/<wild>][,<tgt>[,<tp>][,<flg>][,<rexp>][,<tr>])
 
  Returns a list of the attributes set on cluster <obj>ect.  If <wild>pattern
  is given, only attributes matching it are returned.  If you have the regexp
  toggle <rexp> as true (1), the matching <wild> is evaluated as a regular
  expression instead of the default matching algorithem.  You may specify the 
  optional target <tgt> if you wish to return attributes that only the target
  could see.  If you do not have control over target, it defaults to yours.
  This searches all objects that are contained in the cluster.
  You may specify tree <tr> viewing if you set it to '1'.
  
  You may specify a type <tp> to check against.  The following types exist:
    + - List existing lock attributes on player.
    $ - list all attributes that are $commands.
    ^ - list all attributes that are ^listens.
    & - list all attributes that contain all attribute flags <flg>.
    | - list all attributes that contain any attribute flags <flg>.
    l - list total attributes and pages of attributes.
    # - page (1, 2, etc) for attribute listing.  118 for 32byte attrs.
    > - find the alphanumerical largest attribute name.
    < - find the alphanumerical smallest attribute name.
    ~ - [~#1-#2] list attribs starting at #1 until count of #2.
  
  { see 'help cluster_lattr2' to continue }

[PREV] [TOP] [NEXT]

CLUSTER_LATTR2

  CONTINUED
  Function: cluster_lattr(<obj>[/<wild>][,<tgt>[,<tp>][,<flg>][,<rexp>][,<tr>])
  
  Example:
    > @va cluster#1=$whee:@pemit %#=you did a whee.
    > @vb cluster#1=^*wow*:@pemit %#=You're hearing a wow.
    > say cluster_lattr(cluster#1)
    You say "Desc VA VB VC VE Last VV Domain XX"
    > say cluster_lattr(cluster#1/v*)
    You say "VA VB VC VE VV"
    > say cluster_lattr(cluster#1/v*,*TinyPlayer)
    You say "VC VE VV"
    > say cluster_lattr(cluster#1/v*,,$)
    You say "VA"
    > say cluster_lattr(cluster#1/v*,,^)
    You say "VB"
    > say cluster_lattr(cluster#1/^..$,,,1)
    You say "VA VB VC VE VV XX"
  
  See Also: @cluster, cluster_attrcnt(), cluster_default(), cluster_edefault(),
            cluster_get(), cluster_get_eval(), cluster_grep(), 
            cluster_hasattr(), cluster_lattr(), cluster_regrep(), 
            cluster_regrepi(), cluster_set(), cluster_stats(), cluster_u(), 
            cluster_u2(), cluster_u2default(), cluster_u2ldefault(), 
            cluster_u2local(), cluster_udefault(), cluster_ueval(), 
            cluster_uldefault(), cluster_ulocal(), cluster_vattrcnt(), 
            cluster_wipe(), cluster_xget(), iscluster(), cluster_flags(), 
            cluster_hasflag(), cluster_add()

[PREV] [TOP] [NEXT]

CLUSTER_REGREP()

  Function: cluster_regrep(<object>, <attrs>, <regexp> [,<key>])
  
  This function returns a list of attributes on cluster <object> containing
  <pattern> (or matching <regexp>).  <attrs> is a wildcard pattern for
  attribute names to search; if you want to search all attributes, use "*".
  
  Parsing _does_ occur before this function is invoked. Therefore,
  "special" characters will need to be escaped out.   This searches all
  objects contained in the specified cluster.
  
  If <key> is specified as '1', attribute wildcards are done with
  regular expression matching.  The default is globbing (* and ?).
  
  This function is case-sensitive. 
  
  Examples:
    > @va cluster#1=This is a test
    > @vb cluster#2=This is another test.
    > @vc cluster#3=Test Test Test whisooo!
    > say cluster_regrep(cluster#1,v*,is)
    You say "VA VB"
  
  See Also: @cluster, cluster_attrcnt(), cluster_default(), cluster_edefault(),
            cluster_get(), cluster_get_eval(), cluster_grep(), 
            cluster_hasattr(), cluster_lattr(), cluster_regrep(), 
            cluster_regrepi(), cluster_set(), cluster_stats(), cluster_u(), 
            cluster_u2(), cluster_u2default(), cluster_u2ldefault(), 
            cluster_u2local(), cluster_udefault(), cluster_ueval(), 
            cluster_uldefault(), cluster_ulocal(), cluster_vattrcnt(), 
            cluster_wipe(), cluster_xget(), iscluster(), cluster_flags(), 
            cluster_hasflag(), cluster_add()

[PREV] [TOP] [NEXT]

CLUSTER_REGREPI()

  Function: cluster_regrepi(<object>, <attrs>, <regexp> [,<key>])
  
  This function returns a list of attributes on cluster <object> containing
  <pattern> (or matching <regexp>).  <attrs> is a wildcard pattern for
  attribute names to search; if you want to search all attributes, use "*".
  
  Parsing _does_ occur before this function is invoked. Therefore,
  "special" characters will need to be escaped out.  This searches all
  objects contained in the cluster.
  
  If <key> is specified as '1', attribute wildcards are done with
  regular expression matching.  The default is globbing (* and ?).
  
  This function is case-insensitive.
  
  Examples:
    > @va cluster#1=This is a test
    > @vb cluster#2=This is another test.
    > @vc cluster#3=Test Test Test whisooo!
    > say regrepi(cluster#1,v*,is)
    You say "VA VB"
  
  See Also: @cluster, cluster_attrcnt(), cluster_default(), cluster_edefault(),
            cluster_get(), cluster_get_eval(), cluster_grep(), 
            cluster_hasattr(), cluster_lattr(), cluster_regrep(), 
            cluster_regrepi(), cluster_set(), cluster_stats(), cluster_u(), 
            cluster_u2(), cluster_u2default(), cluster_u2ldefault(), 
            cluster_u2local(), cluster_udefault(), cluster_ueval(), 
            cluster_uldefault(), cluster_ulocal(), cluster_vattrcnt(), 
            cluster_wipe(), cluster_xget(), iscluster(), cluster_flags(), 
            cluster_hasflag(), cluster_add()

[PREV] [TOP] [NEXT]

CLUSTER_SET()

  Function: cluster_set(<object>,<[!]<flag> [[!]<flag> [!]<flag> ...]>)
            cluster_set(<object>,<<attribute>:<value>>)
            cluster_set(<object>,<<attribute>:_<fromobj>/<fromattr>>)
            cluster_set(<object>/<attr>,[!]<attrflag>)
  
  The cluster_set() function is a side-effect for the @cluster/set command.  
  Everything that worked with @cluster/set will work with cluster_set().  It 
  follows the same permissions and restrictions of the command.  The SIDEFX 
  flag is required to use cluster_set().  For flags, this will set the flags 
  on ALL objects in the cluster.
  
  Type @list options to see if this side-effect is enabled.
  
  Example:
  > @cluster/set cluster#1=safe
  Cluster: Flags (safe) set on cluster members #3672 #3667 #3683
  > say cluster_set(me,safe)
  You say ""
  
  See Also: @cluster, cluster_attrcnt(), cluster_default(), cluster_edefault(),
            cluster_get(), cluster_get_eval(), cluster_grep(), 
            cluster_hasattr(), cluster_lattr(), cluster_regrep(), 
            cluster_regrepi(), cluster_set(), cluster_stats(), cluster_u(), 
            cluster_u2(), cluster_u2default(), cluster_u2ldefault(), 
            cluster_u2local(), cluster_udefault(), cluster_ueval(), 
            cluster_uldefault(), cluster_ulocal(), cluster_vattrcnt(), 
            cluster_wipe(), cluster_xget(), iscluster(), cluster_flags(), 
            cluster_hasflag(), cluster_add()

[PREV] [TOP] [NEXT]

CLUSTER_STATS()

  Function: cluster_stats(<object>,<type> [,<attribute name>])
  
  This function returns various statistics for the cluster specified.  The 
  following <type> is available for the cluster:
      0 - return 1 if specified object is a cluster, 0 if not (default).
      1 - return the list of objects contained in the specified cluster.
      2 - return the action list for the specified cluster.
      3 - return the threshold value for the specified cluster.
      4 - return dbref# where the attribute name exists in the specified 
          cluster.  Third option must be used for this option.
  
  Examples:
    > &FOOBAR #234=Boo
    Set.
    > say [cluster_stats(cluster#1,0)] | [cluster_stats(cluster#1,1)]
    You say "1 | #123 #234 #345"
    > say cluster_stats(cluster#1,2)
    You say "@pemit owner(me)=Cluster exceeded!"
    > say cluster_stats(cluster#1,3)
    You say "700"
    > say cluster_stats(cluster#1,4,foobar)
    You say "#234"
  
  See Also: @cluster, cluster_attrcnt(), cluster_default(), cluster_edefault(),
            cluster_get(), cluster_get_eval(), cluster_grep(), 
            cluster_hasattr(), cluster_lattr(), cluster_regrep(), 
            cluster_regrepi(), cluster_set(), cluster_stats(), cluster_u(), 
            cluster_u2(), cluster_u2default(), cluster_u2ldefault(), 
            cluster_u2local(), cluster_udefault(), cluster_ueval(), 
            cluster_uldefault(), cluster_ulocal(), cluster_vattrcnt(), 
            cluster_wipe(), cluster_xget(), iscluster(), cluster_flags(), 
            cluster_hasflag(), cluster_add()

[PREV] [TOP] [NEXT]

CLUSTER_U()

  Function: cluster_u([<obj>/]<attr>[,<arg>]...)
   
  The cluster_u function evaluates an attribute, either from the object 
  performing the function or from another object you own, passing in arguments
  and returning the result.  It searches the entire cluster for the matching 
  attribute.
  
  See '@list options' to see if this functionality switched with u2()'.
  This will be switched if 'u() TinyMUSH compatibility' is enabled.
   
  Examples:
    > @va cluster#1=Word is [extract(cluster_get(me/vb),add(%0,1),1)], arg2:%1.
    > @vb cluster#2=This is a test of the u function.
    > say cluster_u(cluster#3/va,4,Testing 123)
    You say "Word is of, arg2:Testing 123."
  
  See Also: @cluster, cluster_attrcnt(), cluster_default(), cluster_edefault(),
            cluster_get(), cluster_get_eval(), cluster_grep(), 
            cluster_hasattr(), cluster_lattr(), cluster_regrep(), 
            cluster_regrepi(), cluster_set(), cluster_stats(), cluster_u(), 
            cluster_u2(), cluster_u2default(), cluster_u2ldefault(), 
            cluster_u2local(), cluster_udefault(), cluster_ueval(), 
            cluster_uldefault(), cluster_ulocal(), cluster_vattrcnt(), 
            cluster_wipe(), cluster_xget(), iscluster(), cluster_flags(), 
            cluster_hasflag(), cluster_add()

[PREV] [TOP] [NEXT]

CLUSTER_U2()

  Function: cluster_u2([<obj>/]<attr>[,<arg>]...)
  
  This is nearly exactly like the original cluster_u() function except it 
  parses in an object-dependant way like the old mushes.  It works by 
  evaluating the function(s) by the power of the owner of the item it's 
  on, and not by the power of the enactor.  
  
  This command is also very handy to keep security.
  
  See '@list options' to see if this functionality switched with cluster_u2()'.
  This will be switched if 'u() TinyMUSH compatibility' is enabled.
   
  For examples or more information, look at cluster_u()
  
  See Also: @cluster, cluster_attrcnt(), cluster_default(), cluster_edefault(),
            cluster_get(), cluster_get_eval(), cluster_grep(), 
            cluster_hasattr(), cluster_lattr(), cluster_regrep(), 
            cluster_regrepi(), cluster_set(), cluster_stats(), cluster_u(), 
            cluster_u2(), cluster_u2default(), cluster_u2ldefault(), 
            cluster_u2local(), cluster_udefault(), cluster_ueval(), 
            cluster_uldefault(), cluster_ulocal(), cluster_vattrcnt(), 
            cluster_wipe(), cluster_xget(), iscluster(), cluster_flags(), 
            cluster_hasflag(), cluster_add()

[PREV] [TOP] [NEXT]

CLUSTER_U2DEFAULT()

  Function:  cluster_u2default([<obj>/]<attr>,<default case>[,<arg>]...)
   
  Works like cluster_udefault() but uses the u2() function instead of u()
  
  This function returns the value of the user-defined function
  as defined by <attr> (or <obj>/<attr>), as if retrieved via
  the cluster_u2() function, with <args>, if the attribute exists and is
  readable by you.
   
  Otherwise, it evaluates the default case, and returns that. The
  default case is only evaluated if the attribute does not exist
  or cannot be read.
 
  Examples:
    > &TEST cluster#1=[center(%0,5,*)]
    > say cluster_u2default(cluster#1/Test,-- BOOM --,ACK)
    You say "*ACK*"
  
  See Also: @cluster, cluster_attrcnt(), cluster_default(), cluster_edefault(),
            cluster_get(), cluster_get_eval(), cluster_grep(), 
            cluster_hasattr(), cluster_lattr(), cluster_regrep(), 
            cluster_regrepi(), cluster_set(), cluster_stats(), cluster_u(), 
            cluster_u2(), cluster_u2default(), cluster_u2ldefault(), 
            cluster_u2local(), cluster_udefault(), cluster_ueval(), 
            cluster_uldefault(), cluster_ulocal(), cluster_vattrcnt(), 
            cluster_wipe(), cluster_xget(), iscluster(), cluster_flags(), 
            cluster_hasflag(), cluster_add()

[PREV] [TOP] [NEXT]

CLUSTER_U2LDEFAULT()

  Function:  cluster_u2ldefault([<obj>/]<attr>,<default case>[,<arg>]...)
   
  This function returns the value of the user-defined function
  as defined by <attr> (or <obj>/<attr>), as if retrieved via
  the cluster_u2local() function, with <args>, if the attribute exists and is
  readable by you.
   
  Otherwise, it evaluates the default case, and returns that. The
  default case is only evaluated if the attribute does not exist
  or cannot be read.  Unlike cluster_u2default(), it doesn't clobber
  %q0-%q9 registers.
   
  Examples:
    > &TEST cluster#1=[center(%0,5,*)]
    > say cluster_u2ldefault(cluster#1/Test,-- BOOM --,ACK)
    You say "*ACK*"
  
  See Also: @cluster, cluster_attrcnt(), cluster_default(), cluster_edefault(),
            cluster_get(), cluster_get_eval(), cluster_grep(), 
            cluster_hasattr(), cluster_lattr(), cluster_regrep(), 
            cluster_regrepi(), cluster_set(), cluster_stats(), cluster_u(), 
            cluster_u2(), cluster_u2default(), cluster_u2ldefault(), 
            cluster_u2local(), cluster_udefault(), cluster_ueval(), 
            cluster_uldefault(), cluster_ulocal(), cluster_vattrcnt(), 
            cluster_wipe(), cluster_xget(), iscluster(), cluster_flags(), 
            cluster_hasflag(), cluster_add()

[PREV] [TOP] [NEXT]

CLUSTER_U2LOCAL()

  Function:  cluster_u2local([<obj>/]<attr>[,<arg>]...)
 
  The cluster_u2local() function is almost identical to u2() in function:  it
  evaluates an attribute, either from the object performing the function,
  or another object that you control or has the same owner as you, passing
  in arguments and returning the result. When evaluating the fetched
  attribute, %# refers to the original enactor and not the 'calling' object;
  'me' refers to the object that supplied the attribute.
 
  However, unlike the u2() function, the global registers r(0) through r(9)
  (%q0 - %q9) are preserved in their initial state. This means that functions
  "below" the level of the u2() can reset global registers for temporary
  calculations, without needing to worry about "clobbering" the original
  values.
 
  This makes cluster_u2local() particularly useful for global or shared code 
  which calls arbitrary u2() functions, where global register values need to be
  preserved from accidental user clobbering.
  
  This function searches all objects in the cluster for the matching attribute.
   
{ See "help cluster_u2local2" for examples. }
 
[PREV] [TOP] [NEXT]

CLUSTER_U2LOCAL2

  Example of cluster_u2local():
    > &FRUIT cluster#1=apples bananas oranges pears
    > &SUB-FUNCTION cluster#2=[setq(0,v(FRUIT))][extract(%q0,match(%q0,%0),1)]
    > &TOP-FUNCTION cluster#3=[setq(0,are delicious!)]
                              [cluster_u2local(SUB-FUNCTION,%0)] %q0
    > say cluster_u2(cluster#1/TOP-FUNCTION,b*)
    You say "bananas are delicious!"
   
  If SUB-FUNCTION had been called with cluster_u2() and not cluster_u2local():
    > &TOP-FUNCTION me=[setq(0,are yummy!)][cluster_u2(SUB-FUNCTION,%0)] %q0
    > say cluster_u2(TOP-FUNCTION,b*)
    You say "bananas apples bananas oranges pears"
   
  In this second example, in SUB-FUNCTION, %q0 was set to "apples bananas
  oranges pears", so that when the cluster_u2() "returned" and TOP-FUNCTION 
  evaluated %q0, this is what was printed. In the first example, 
  cluster_u2local() reset the value of %q0 to its original "are delicious!"
 
  See Also: @cluster, cluster_attrcnt(), cluster_default(), cluster_edefault(),
            cluster_get(), cluster_get_eval(), cluster_grep(), 
            cluster_hasattr(), cluster_lattr(), cluster_regrep(), 
            cluster_regrepi(), cluster_set(), cluster_stats(), cluster_u(), 
            cluster_u2(), cluster_u2default(), cluster_u2ldefault(), 
            cluster_u2local(), cluster_udefault(), cluster_ueval(), 
            cluster_uldefault(), cluster_ulocal(), cluster_vattrcnt(), 
            cluster_wipe(), cluster_xget(), iscluster(), cluster_flags(), 
            cluster_hasflag(), cluster_add()

[PREV] [TOP] [NEXT]

CLUSTER_UDEFAULT()

  Function:  cluster_udefault([<obj>/]<attr>,<default case>[,<arg>]...)
 
  This function returns the value of the user-defined function
  as defined by <attr> (or <obj>/<attr>), as if retrieved via
  the cluster_u() function, with <args>, if the attribute exists and is
  readable by you.  This searches all objects in the cluster.
   
  Otherwise, it evaluates the default case, and returns that. The
  default case is only evaluated if the attribute does not exist
  or cannot be read.
   
  Examples:
    > &TEST me=[center(%0,5,*)]
    > say cluster_udefault(Test,-- BOOM --,ACK)
    You say "*ACK*"
  
  See Also: @cluster, cluster_attrcnt(), cluster_default(), cluster_edefault(),
            cluster_get(), cluster_get_eval(), cluster_grep(), 
            cluster_hasattr(), cluster_lattr(), cluster_regrep(), 
            cluster_regrepi(), cluster_set(), cluster_stats(), cluster_u(), 
            cluster_u2(), cluster_u2default(), cluster_u2ldefault(), 
            cluster_u2local(), cluster_udefault(), cluster_ueval(), 
            cluster_uldefault(), cluster_ulocal(), cluster_vattrcnt(), 
            cluster_wipe(), cluster_xget(), iscluster(), cluster_flags(), 
            cluster_hasflag(), cluster_add()

[PREV] [TOP] [NEXT]

CLUSTER_UEVAL()

  Function: cluster_ueval([<obj>/]<attr>/permission[,<arg>],...)
  
  The cluster_ueval function evaluates an attribute, either from the object 
  performing the function or from another object you own, passing in 
  arguments and returning the result.  In this way it works just like 
  'cluster_u()', except you pass in a permission to specify what permission 
  level you wish to use for evaluation.  
   
  The available permission levels are CIT[IZEN], GUILD[MASTER], ARCH[ITECT],
  COUN[CILOR], ROY[ALTY], IMM[ORTAL].  You must have the permissions of the
  given level in order to use it else it defaults to your permission level.
  The permission must be included for the function to work.
  
  Examples:
    > @set cluster#1=royalty (let's assume you're a wizard)
    > @va cluster#1=[num(*Miriar)] (the ghod player - #1)
    > say cluster_ueval(va/royalty)
    You say "#1"
  
  See Also: @cluster, cluster_attrcnt(), cluster_default(), cluster_edefault(),
            cluster_get(), cluster_get_eval(), cluster_grep(), 
            cluster_hasattr(), cluster_lattr(), cluster_regrep(), 
            cluster_regrepi(), cluster_set(), cluster_stats(), cluster_u(), 
            cluster_u2(), cluster_u2default(), cluster_u2ldefault(), 
            cluster_u2local(), cluster_udefault(), cluster_ueval(), 
            cluster_uldefault(), cluster_ulocal(), cluster_vattrcnt(), 
            cluster_wipe(), cluster_xget(), iscluster(), cluster_flags(), 
            cluster_hasflag(), cluster_add()

[PREV] [TOP] [NEXT]

CLUSTER_ULDEFAULT()

  Function:  cluster_uldefault([<obj>/]<attr>,<default case>[,<arg>]...)
   
  This function returns the value of the user-defined function
  as defined by <attr> (or <obj>/<attr>), as if retrieved via
  the cluster_u() function, with <args>, if the attribute exists and is
  readable by you.  This searches all objects in the cluster.
   
  Otherwise, it evaluates the default case, and returns that. The
  default case is only evaluated if the attribute does not exist
  or cannot be read.  %q registers are not clobbered with this function
  unlike the cluster_udefault().
   
  Examples:
    > &TEST me=[center(%0,5,*)]
    > say cluster_uldefault(Test,-- BOOM --,ACK)
    You say "*ACK*"
  
  See Also: @cluster, cluster_attrcnt(), cluster_default(), cluster_edefault(),
            cluster_get(), cluster_get_eval(), cluster_grep(), 
            cluster_hasattr(), cluster_lattr(), cluster_regrep(), 
            cluster_regrepi(), cluster_set(), cluster_stats(), cluster_u(), 
            cluster_u2(), cluster_u2default(), cluster_u2ldefault(), 
            cluster_u2local(), cluster_udefault(), cluster_ueval(), 
            cluster_uldefault(), cluster_ulocal(), cluster_vattrcnt(), 
            cluster_wipe(), cluster_xget(), iscluster(), cluster_flags(), 
            cluster_hasflag(), cluster_add()

[PREV] [TOP] [NEXT]

CLUSTER_ULOCAL()

  Function:  cluster_ulocal([<obj>/]<attr>[,<arg>]...)
   
  The cluster_ulocal() function is almost identical to u() in function:  it
  evaluates an attribute, either from the object performing the function,
  or another object that you control or has the same owner as you, passing
  in arguments and returning the result. When evaluating the fetched
  attribute, %# refers to the original enactor and not the 'calling' object;
  'me' refers to the object that supplied the attribute.
   
  However, unlike the cluster_u() function, the global registers r(0) through 
  r(9) (%q0 - %q9) are preserved in their initial state. This means that 
  functions "below" the level of the u() can reset global registers for 
  temporary calculations, without needing to worry about "clobbering" the 
  original values.
   
  This makes cluster_ulocal() particularly useful for global or shared code 
  which calls arbitrary cluster_u() functions, where global register values 
  need to be preserved from accidental user clobbering.
   
{ See "help cluster_ulocal2" for examples. }
 
[PREV] [TOP] [NEXT]

CLUSTER_ULOCAL2

  Example of cluster_ulocal():
    > &FRUIT cluster#1=apples bananas oranges pears
    > &SUB-FUNCTION cluster#2=[setq(0,v(FRUIT))][extract(%q0,match(%q0,%0),1)]
    > &TOP-FUNCTION cluster#3=[setq(0,are delicious!)]
                              [cluster_ulocal(SUB-FUNCTION,%0)] %q0
    > say cluster_u(TOP-FUNCTION,b*)
    You say "bananas are delicious!"
   
  If SUB-FUNCTION had been called with cluster_u() instead of cluster_ulocal():
    > &TOP-FUNCTION me=[setq(0,are delicious!)][cluster_u(SUB-FUNCTION,%0)] %q0
    > say cluster_u(TOP-FUNCTION,b*)
    You say "bananas apples bananas oranges pears"
   
  In this second example, in SUB-FUNCTION, %q0 was set to "apples bananas
  oranges pears", so that when the cluster_u() "returned" and TOP-FUNCTION 
  evaluated %q0, this is what was printed. In the first example, ulocal() 
  reset the value of %q0 to its original "are delicious!"
   
  See Also: @cluster, cluster_attrcnt(), cluster_default(), cluster_edefault(),
            cluster_get(), cluster_get_eval(), cluster_grep(), 
            cluster_hasattr(), cluster_lattr(), cluster_regrep(), 
            cluster_regrepi(), cluster_set(), cluster_stats(), cluster_u(), 
            cluster_u2(), cluster_u2default(), cluster_u2ldefault(), 
            cluster_u2local(), cluster_udefault(), cluster_ueval(), 
            cluster_uldefault(), cluster_ulocal(), cluster_vattrcnt(), 
            cluster_wipe(), cluster_xget(), iscluster(), cluster_flags(), 
            cluster_hasflag(), cluster_add()

[PREV] [TOP] [NEXT]

CLUSTER_VATTRCNT()

  Function: cluster_vattrcnt(<object>)
  This function counts just the user-defined attributes that exist on
  a cluster.  User defined attributes are attributes that are set
  with the &attr object=string or @set object=attr:string commands and
  have no @<attribute> ability. (like @va, @desc, etc)
  
  To set attributes on clusters, you would use >attr object=string or
  @cluster/set cluster=attr:string.
  
  Examples:
    > say vattrcnt(cluster#1)
    You say "714"
    > say cluster_vattrcnt(cluster#1)
    You say "7123"
    > say cluster_attrcnt(cluster#1)
    You say "9175
  
  See Also: @cluster, cluster_attrcnt(), cluster_default(), cluster_edefault(),
            cluster_get(), cluster_get_eval(), cluster_grep(), 
            cluster_hasattr(), cluster_lattr(), cluster_regrep(), 
            cluster_regrepi(), cluster_set(), cluster_stats(), cluster_u(), 
            cluster_u2(), cluster_u2default(), cluster_u2ldefault(), 
            cluster_u2local(), cluster_udefault(), cluster_ueval(), 
            cluster_uldefault(), cluster_ulocal(), cluster_vattrcnt(), 
            cluster_wipe(), cluster_xget(), iscluster(), cluster_flags(), 
            cluster_hasflag(), cluster_add()

[PREV] [TOP] [NEXT]

CLUSTER_WIPE()

  Function: cluster_wipe(<obj>[/wildattr] [[,<regexp>] [,<ownkey>] [,<pres>]])
            cluster_wipe(<owner>/<obj>[/wildattr], [,<regexp>], 1, [,<pres>])
  
  The cluster_wipe() function will remove all matching attributes 
  specified by a wildcard, or, if no attribute is specified, 
  remove all attributes of the specified cluster.  This function 
  works like @cluster/wipe and follows all permissions and 
  restrictions of the matching command.
  
  If <regexp> is specified as '1', then <wildattr> is evaluated as a
  regular expresion instead of the default expresion.
  
  If <ownkey> is specified as '1', then, as the second syntax example above,
  it takes the additional <owner> argument as the owner to compare against.
  
  If <pres> is specified as '1', it takes the reverse of the wipe and
  keeps (preserves) the specified wildcard pattern and wipes everything else.
  
  Check @list options to see if this side-effect is enabled.
  Anything using this side-effect must have the SIDEFX flag set.
  
  Examples:
    > say cluster_wipe(Corum/#123/*foo,,1)  
    You say "Wiped: [20 objects: 0 not found, 0 safe] 1 attributes wiped."
    > say cluster_wipe(#123)
    You say "Wiped: [20 objects: 0 not found, 0 safe] 127 attributes wiped."
    > say cluster_wipe(#123/*foo*)
    You say "Wiped: [20 objects: 0 not found, 0 safe] 0 attributes wiped."
  
  See Also: @cluster, cluster_attrcnt(), cluster_default(), cluster_edefault(),
            cluster_get(), cluster_get_eval(), cluster_grep(), 
            cluster_hasattr(), cluster_lattr(), cluster_regrep(), 
            cluster_regrepi(), cluster_set(), cluster_stats(), cluster_u(), 
            cluster_u2(), cluster_u2default(), cluster_u2ldefault(), 
            cluster_u2local(), cluster_udefault(), cluster_ueval(), 
            cluster_uldefault(), cluster_ulocal(), cluster_vattrcnt(), 
            cluster_wipe(), cluster_xget(), iscluster(), cluster_flags(), 
            cluster_hasflag(), cluster_add()
  
[PREV] [TOP] [NEXT]

CLUSTER_XGET()

  Function: cluster_xget(<object>,<attribute>)
   
  The xget function fetches the specified attribute from the named object.
  It can be used to get attributes from objects you own, public and visual
  attributes of objects near you, and public and visual attributes other
  than the description of players wherever they may be.  If the attribute is
  not present on <object>, its parent is searched for the attribute.
  This searches all objects in the specified cluster.
   
  Example:
    > read cluster#1
    > say cluster_xget(cluster#1,desc)
    You say "My Desc"
  
  See Also: @cluster, cluster_attrcnt(), cluster_default(), cluster_edefault(),
            cluster_get(), cluster_get_eval(), cluster_grep(), 
            cluster_hasattr(), cluster_lattr(), cluster_regrep(), 
            cluster_regrepi(), cluster_set(), cluster_stats(), cluster_u(), 
            cluster_u2(), cluster_u2default(), cluster_u2ldefault(), 
            cluster_u2local(), cluster_udefault(), cluster_ueval(), 
            cluster_uldefault(), cluster_ulocal(), cluster_vattrcnt(), 
            cluster_wipe(), cluster_xget(), iscluster(), cluster_flags(), 
            cluster_hasflag(), cluster_add()

[PREV] [TOP] [NEXT]

CLUSTERS

  Clusters are a method to have 1 or more real dbref#'s defined as a single
  virtual 'container' or entity to house attributes.  Using cluster related
  commands and functions, you can target any dbref# contained in a cluster
  and it will reference the cluster as a whole.  This is useful for shared
  attribute storage, large data warehousing, or role play/player based
  statistical information where you need a large variety of attributes
  to be housed over a period of time.  The attributes are written to
  the cluster in a weighted method and not a round robin where the item
  in the cluster chosen is always the one with the least number of 
  attributes.
  
  Clusters require wizard access to create, but can be added to by the
  cluster themselves.  You must control both the cluster and the item
  to be added to the cluster to add to the cluster.
  
  See Also:  @cluster, cluster functions

[PREV] [TOP] [NEXT]

CMDS()

  Function: cmds(<player>[,<type> [,<port>]])
  
  Cmds returns the number of commands the player has typed during their current
  connected session.  If the player is not connected, it returns the commands
  typed since their last connected session.
  
  If the type is '1', then it gives an expanded cmd() listing if the player is
  connected by returning the information in the form PORT:CMD.
  
  You may specify the specified port of the player for an exact cmdlist based
  on port.
  
  If the type is '1' and the player is not connected, it returns the default
  behavior.
  
  Note: Only wizards may retreive command info on other players.
  
  Examples:
    > say cmds(me)
    You say "111"
    > say cmds(me,1)
    You say "10:99 11:12"
      
  See Also: totcmds()
  
[PREV] [TOP] [NEXT]

CNAME()

  cname(<dbref>)
   
  This function returns the name of the indicated object with any special
  colorization or accents that they may have.  When called with an exit 
  it returns the only the first alias.
  
  Example:
    > say cname(me)
    You say "TinyPlayer"  (this would be colorized and/or accented)
   
  See Also: fullname(), @alias, @name, name()

[PREV] [TOP] [NEXT]

colors

  
  RhostMUSH has your standard ANSI sequences and colors.  These can be
  gotten by using the ansi() function, or by using the '%c' substitution.
  You are incapable of seeing ansi sequences without having the ANSI
  flag set.  Furthermore, you are incapable of seeing color without
  having the ANSICOLOR flag set.  Help is available on both of these
  flags.   Please note, that the functions of '%c' and '%x' can be switched
  at runtime.  Check @list options to see which is which.
  
  Do note that if your terminal is not able to display ansi codes, then
  you will not notice any change with either flag.
  
  For more help on the %c substitution, look at SUBSTITUTIONS
  
  See Also: SUBSTITUTIONS, ANSI, ANSICOLOR, XTERMCOLOR, ANSI()
  
[PREV] [TOP] [NEXT]

COLORS()

  Function: colors([[<value>], [<key>]])
   
  This function displays the pallet of colors available on the RhostMUSH.  This
  function is only available if ZENTY_ANSI is enabled (@version shows '(A)').
  The valid arguments are as follows.
  
  Valid optional <value> parameters:
    0-2     - page value of the total list of colornames available. (0 def)
    string  - the string of the color name you wish to see the value of.
    *wild*  - the list of colors that match the wildcard (* and ? accepted)
  
  Valid <key> parameters:
    d       - show the decimal value (0-255) of the XTERM specific color (def).
    h       - show the hex value (0x00-0xFF) of the XTERM specific color.
    c       - show the 16 color code translation of the XTERM specific color.
    x       - show the 24bit (#000000-#FFFFFF) color code XTERM translation.
    r       - show the RGB (0 0 0 - 255 255 255) color code XTERM translation.
  
  Examples:
    > say colors()
    You say "aliceblue antiquewhite ... grey88"
    > say colors(1)
    You say "grey89 grey90 ... xterm43"
    > say [colors(pink)] [colors(pink,h)] [colors(pink,c)]
    You say "218 0xda wh"
  
  See Also: XTERMCOLOR, XTERMCOLOR LIST, ANSI()
  
[PREV] [TOP] [NEXT]

COLUMNS()

  Function: columns()  Syntax follows:
  columns(<tx>,<wd>,<co>,<js>,<crp>,<ct>,<lb>,<mb>,<rb>,<dsp>,<del>,<fil>,<ext>)
  
  This function has a huge number of uses, and all help will be given to show
  examples for what this function can do.  The arguments to this function are
  as follows.
    <tx>     - The text that you will be passing into columns.
    <wd>     - The maximum column size you desire.
    <co>     - The total number of columns you wish per line.
  * <js>     - The justification of text in the columns (default left) 
               Arguments: (l)eft, (c)enter, or (r)ight
  * <crp>    - Specifies if you want the columns cropped to the longest word or
               the max columns size whatever is smaller.
               Arguments: 1 to crop, 0 for no cropping (default).
  * <ct>     - Specifies that the word be cut off if over maximum columns size.
               Arguments: 1 to cut, 0 for no cutting (default).
  * <lb>     - What text you want displayed as the left border of the line.
  * <mb>     - What text you want as the separator between columns on the line.
  * <rb>     - What text you want displayed as the right border of the line.
  * <dsp>    - What display type you want.  Down then over or over then down.
               Arguments: 1 for over then down, 0 for down then over (default)
  * <del>    - Optional delimiter (default is space)
  * <fil>    - Optional filler string.
  * <ext>    - Extend partial columns to the end of the columns (if available)
  
  Anything with an '*' are optional *only* if the first three arguments are 
  used.
  
{ type 'help columns2' for extremely useful examples }
  
[PREV] [TOP] [NEXT]

COLUMNS2

  Function: columns()  (CONTINUED)
  columns(<tx>,<wd>,<co>,<js>,<crp>,<ct>,<lb>,<mb>,<rb>,<dsp>,<del>,<fil>,<ext>)
 
  There are various syntax possibilities for this command.  
  Examples:
    > @emit columns(this is a test of columns,10,3)
      this      a         of
      is        test      columns
    > @emit columns(this is a test of columns,10,3,L,,,,,,1)
      this      is        a 
      test      of        columns
    > @emit columns(this is a test of columns,10,3,R)
            this         a        of
              is      test   columns 
    > @emit columns(this is a test of columns,10,3,R,0)
            this         a        of
              is      test   columns 
    > @emit columns(this is a test of columns,10,3,R,1)
         this       a     of
           is    testcolumns
  
{ type 'help columns3' for more examples }
  
[PREV] [TOP] [NEXT]

COLUMNS3

  Function: columns()  (CONTINUED)
  columns(<tx>,<wd>,<co>,<js>,<crp>,<ct>,<lb>,<mb>,<rb>,<dsp>,<del>,<fil>,<ext>)
  
    > @emit columns(this is a test of columns,3,3,R,0,0)
      thitescol
        s  tumn
       is of  s
        a
    > @emit columns(this is a test of columns,3,3,R,0,1)
      thi  a of
       istescol
    > @emit columns(this is a test of columns,10,3,R,0,0,<*,|,*>,0)
      <*      this|         a|        of*>
      <*        is|      test|   columns*>
    > @emit columns(this is a test of columns,10,3,R,0,0,<*,|,*>,1)
      <*      this|        is|         a*>
      <*      test|        of|   columns*>
    > @emit columns(this@is@a@test@of@columns,10,3,R,0,0,<*,|,*>,1,@)
      <*      this|        is|         a*>
      <*      test|        of|   columns*>
    > @emit columns(this@is@a@test@of@columns,10,3,R,0,0,<*,|,*>,1,@,-=*=-)
      <*-=*=--this|-=*=--=*is|-=*=--=*=a*>
      <*-=*=--test|-=*=--=*of|-=*columns*>
  
  See Also: wrapcolumns(), wrap(), array(), printf()
  
[PREV] [TOP] [NEXT]

COMBAT

  Flag: COMBAT([X])
 
  (*note this flag is meaningless on RhostMUSH*)
  When this flag is set on a player or object AND the IC flag is set, it 
  denotes that they are willing to participate in combat. If this flag is
  set on a room it denotes that the room is fair ground for combat to occur.
  If this flag is set on a zonemaster, it denotes that all the rooms in the
  zone are fair ground for combat. (this is not yet implemented)
  
  See Also: IC
  
[PREV] [TOP] [NEXT]

COMMAND EVALUATION

  Topic: COMMAND EVALUATION
 
  When you submit a command to be executed by MUSH (whether by typing it in or
  by having a machine run it, the following steps are performed, in sequence.
  If the command matches something in a step, the matching actions are
  performed and the walk down the list stops.  Note the STOP and NO_STOP flags
  effect the sequence.
 
  - If the command was typed in, it is checked against the uppercase-only
    commands (QUIT, WHO, etc).  If so, the command is executed.
  - The first letter of the command is checked to see if it is a single-
    character command (", :, etc).  If so, %-substitution and function
    evaluation may be performed (depending on the command), and the command
    is executed.
  - The command is checked to see if it is the 'home' command.  If so, the
    player or object performing the command goes home.
  - The command is checked against the exits in its current room.  If one
    matches, it is performed.  If more than one matches, one is picked 
    randomly from the exits for which the player passes the lock (If the 
    player does not pass any locks, then the exit to be tried is picked 
    randomly.
  
{ 'help command evaluation2' for more }
  
[PREV] [TOP] [NEXT]

command evaluation2

  - The first word of the command is checked to see if it is an internal MUSH
    command.  If so, the remainder of the command is broken up into arguments,
    %-substitution and function evaluation may be performed on the (split up)
    arguments, and the command is executed.
  - %-substitution and function evaluation is performed on the command.
  - All objects in the player's inventory, all objects in the player's
    location, and the location itself are searched for $-commands that match
    the command.  All that match are performed.  The player may or may not be
    checked, depending on how the MUSH is configured.
 
  Note: Commands that can cause other commands to be executed (such as @wait,
  @switch, @trigger, etc) never perform substitution on their arguments, they
  leave the evaluation to the command that is to be executed.  This prevents
  most of the problems with getting objects to perform unintended commands by
  putting a ';', '}', or ',' in an argument.  The @force command is an
  exception in that it evaluates its argument, so it should be used with
  caution (preferably by never using it to pass information that someone else
  entered, use @trigger instead).
 
  Also, the construct '$xx *:%0' does not work (and is very dangerous
  programming), use '$xx *:@force me=%0' if you need this functionality.
  
  Command evaluation may be effected by the NO_COMMAND, STOP, or NO_STOP flags.
  
[PREV] [TOP] [NEXT]

commands

  Help available for RhostMUSH Commands:
   
  ]         "           :            ;            &             #
  \\        >
  
  +channel  doing       drop         enter        examine       folder     
  get       give        goto         grab         help          +help 
  idle      INFO        inventory    join         kill          leave      
  listen    LOGOUT      look         lpage        mail          move       
  mrpage    news        OUTPUTPREFIX OUTPUTSUFFIX page          pose       
  QUIT      read        rpage        say          score         SESSION    
  smell     take        taste        think        throw         touch      
  train     use         version      wield        whisper       who        
  worn
  
  @@              @break      @chown    @clone        @create    @decompile
  @destroy        @dig        @doing    @dolist       @drain     @edit 
  @emit           @entrances  @eval     @extansi      @femit     @find      
  @force          @fpose      @fsay     @halt         @hide      @include
  @label          @last       @link     @list         @listmotd  @lfunction  
  @lock           @lset       @mailsig  @mvattr       @name      @notify     
  @oemit          @open       @parent   @password     @pemit     @pipe       
  @program        @protect    @ps       @quitprogram  @quota     @register   
  @robot          @search     @set      @skip         @sql       @sqlconnect 
  @sqldisconnect  @stats      @sudo     @sweep        @switch    @teleport   
  @trigger        @unlink     @unlock   @verb         @wait      @wall       
  @wipe        
  
{ 'help commands2' for more (attribute-commands) }

[PREV] [TOP] [NEXT]

COMMANDS FLAG

  Flag: COMMANDS([$])  
  
  If the mush requires this flag then you must set this 
  flag on anything that you wish to be able to access $commands.
  
  By default, this is disabled on RhostMUSH.
  
  Please check '@list options' to see if the COMMANDS flag is required
  or not on the RhostMUSH you are on.
  
[PREV] [TOP] [NEXT]

commands2

  Help available for RhostMUSH Commands (continued):
 
  @aahear    @aclone      @aconnect    @adescribe  @adfail       @adisconnect
  @adrop     @aefail      @aenter      @afail      @agfail       @ahear
  @akill     @aleave      @alfail      @alias      @amhear       @amove
  @ansiname  @apay        @arfail      @asfail     @asuccess     @atfail    
  @atofail   @atport      @aufail      @ause       @away         @caption 
  @charges   @conformat   @cost        @cpattr     @describe     @dfail
  @door      @drop        @ealias      @efail      @enter        @exitformat
  @fail      @filter      @forwardlist @gfail      @grep         @guild 
  @idesc     @idle        @infilter    @inprefix   @kill         @lalias    
  @leave     @lfail       @listen      @move       @nameformat   @odescribe 
  @odfail    @odrop       @oefail      @oenter     @ofail        @ogfail    
  @okill     @oleave      @olfail      @omove      @opay         @orfail    
  @osuccess  @otfail      @otofail     @otport     @oufail       @ouse
  @oxenter   @oxleave     @oxtport     @pay        @prefix       @race      
  @reject    @rfail       @runout      @salisten   @sasmell      @sataste
  @satouch   @saystring   @selfboot    @sex        @sfail        @slisten     
  @solisten  @sosmell     @sotaste     @sotouch    @ssmell       @startup   
  @staste    @stouch      @success     @tfail      @titlecaption @tofail
  @toggle    @tport       @ufail       +uptime     @use          @whereall  
  @whereis   @zone        
  
  
  See Also: @list
  
[PREV] [TOP] [NEXT]

COMP()

  Function: comp(<string1>, <string2>)
 
  Comp compares two strings.  It returns 0 if they are the same, 1 if
  string2 is less than/precedes alphabetically string1, and -1 
  otherwise.
  
  Example:
    > say comp(is,is)
    You say "0"
  
  See Also: alphamin(), alphamax(), ncomp(), strdistance()
  
[PREV] [TOP] [NEXT]

CON()

  Function: con(<object>)
   
  Con returns the first object in the list of objects carried by 
  thing. Just the first, and only the first.  See NEXT.
  
  Example:
    > inv
    You are carrying:
    Glove(#123)
    Bat(#124)
    You have 200 gold pieces.
    > say con(me) 
    You say "#123"
  
  See Also: next()
  
[PREV] [TOP] [NEXT]

CONFIG()

  Function: config(<parameter>)
   
  With no arguments, this function returns a list of config option names.
  
  Given a config option name, this function returns its value.
  
  Special values 'lbuf_size', 'mbuf_size' and 'sbuf_size' exist to pull
  the sizes of the various buffers for compatibility to other codebases.
  
  The available special arguments can be used:
    0 - show all config options pushing extras on additional stack (default)
    1 - show all config options that can be placed in a single LBUF
  
  Example:
    > say config(money_name_singular) 
    You say 'Gold Piece'
    > say config()
    You say "alt_inventories ... who_wizlevel"     (where ... is a lot of info)
  
  See Also: @list options 
 
[PREV] [TOP] [NEXT]

CONN()

  Function: conn(<player> [,<boolean> [,<port>]])
 
  Returns the number of seconds that <player> has been connected.  If <player>
  is not connected then -1 is returned.  If <player> is connected more than
  once, the longest connect time is returned.
  
  You may specify an optional boolean value of '1' to return the result in
  the form '<port>:<conntime>'.  You may also specify the port of the player
  for an exact match of their conn() time.
   
  Example:
    > WHO
    Player Name          On For Idle  Doing
    Wizard                00:04   1m
    Evinar                00:12   6m  
    Wizard                00:32   6s  
    3 Players logged in.
    > say conn(wiz)
    You say "2125"
    > say conn(wiz,1)
    You say "12:251 14:2125"
    > say conn(e)
    You say "770"
  
  See Also: WHO, idle(), lwho()
  
[PREV] [TOP] [NEXT]

connect

  Command: co  <name> <password>  (short for connect)
           cd  <name> <password>  (short for cdark)
           ch  <name> <password>  (short for chidden)
           cr  <name> <password>  (short for create)
           reg <name> <password>  (short for register)
  
  Note:  To create/log in a character with spaces in their name, please use
         "<name>".  Ergo, surround your name with double quotes.
         The 'register' command does not allow creation with spaces.
  
  These commands are only useful on the connect screen.  They are used to
  create/connect to your account <name> with the provided <password>.  
  These commands are not useable once you are connected to the mush.
  
  These commands are as follows:
     co  -- This option is the default and normal method to connect.
            This option has no special conditions or privilages.
            Syntax: co player password
                    co "Player With Spaces" password
  
     ch  -- Wizards and anyone with the NOWHO @power (to @hide) can use this.
            This option will auto-hide the player when connecting.
            It defaults to the 'co' option if you can't @hide.
            Syntax: ch player password
                    ch "Player With Spaces" password
  
     cd  -- Wizards and higher can use this to connect dark to the game.
            This effectively connects wiz-cloaked to the game.
            Immortals get auto-added to supercloak.
            Syntax: cd player password
                    cd "Player With Spaces" password
     
     cr  -- Allows creation of a player from the connect screen.
            Syntax: cr player password
                    cr "Player With Spaces" password
  
     reg -- If offline registration is enabled, allows the player to register
            a character with a supplied email that is then used to email them
            their password.
            Syntax: reg player email@address
                    reg "Player With Spaces" email@address
  
  See Also: @aconnect, @adisconnect, @hide, @register
            
[PREV] [TOP] [NEXT]

CONNECTED

  Flag: CONNECTED(c)   
  
  This flag applies only to players and it shows if the 
  player is connected or not. Thus, each time you are connected to 
  the game, you should see the 'c' flag set, otherwise, you are DEAD!
  You cannot reset this flag, and it is used internally by the code 
  for things like tabulating players for the WHO list, etc.
  
[PREV] [TOP] [NEXT]

CONTROL

  Topic: CONTROL      
 
  There are 6 rules to controlling objects:
   1) You control anything you own as long as it's not set NOMODIFY/NOEXAMINE.
   2) Anything you own that has its INHERIT flag set controls anything you 
      own (including you).
   3) Anything you own that does not have its INHERIT flag set only controls
      other things that you own that do not have their INHERIT flag set and
      do not control you, unless YOU have your inherit flag set.
   4) A wizard controls everything.
   5) Anybody controls an unlinked exit, even if it is locked.
   6) You have attribute-modification control on anything with a twinklock
      which you pass.
 
  Builders should beware of 5, lest their exits be linked or stolen.
  Coders should beware of 6, lest their code be modified.
   
  Most of the commands for altering the database and many commands and
  functions that retrieve information only work on objects that you control.
  
[PREV] [TOP] [NEXT]

CONTROL_OK

  Flag: CONTROL_OK(z)  
  
  This flag currently serves no purpose within RhostMUSH.
  
[PREV] [TOP] [NEXT]

controls()

  Function: controls(<object>,<victim>)
 
  Returns 1 if <object> controls <victim>, 0 otherwise.
 
  Examples:
  > say controls(me,me)
  You say "1"
  > say controls(me,#1)
  You say "0"
  > say controls(#1,me)
  You say "1"
 
  See Also: CONTROL
  
[PREV] [TOP] [NEXT]

CONVSECS()

  Function: convsecs(<seconds>)
 
  This function converts seconds to a time string, based on how many
  seconds the number is after Jan 1, 1970.
 
  Example:
    > say secs()
    You say "709395750"
    > say convsecs(709395750)
    You say "Wed Jun 24 10:22:54 1992"
  This function may also be called as secs2time().
  
  See Also: convtime(), secs(), time(), timefmt()
  
[PREV] [TOP] [NEXT]

CONVTIME()

  Function: convtime(<time string>)
 
  This functions converts a time string to the number of seconds since
  Jan 1, 1970. A time string is of the format: Ddd MMM DD HH:MM:SS YYYY
  where Ddd is the day of the week, MMM is the month, DD is the day
  of the month, HH is the hour in 24-hour time, MM is the minutes,
  SS is the seconds, and YYYY is the year.
  If you supply an incorrectly formatted string, it will return -1.
 
  Example:
    > say time()
    You say "Wed Jun 24 10:22:54 1992"
    > say convtime(Wed Jun 24 10:22:54 1992)
    You say "709395774"
  
  This function may also be called as time2secs().
  
  This function, if allowing enhanced time formats, can handle a
  varying method of other formats.  Please see '@list options convtime'
  to see the available extra formats (if available).
  
  Enhanced date checking is handled with the 'enhanced_convtime' param.
  
  See Also: convsecs(), secs(), time(), timefmt()
  
[PREV] [TOP] [NEXT]

COPYRIGHT

  All modifications and changes to the hardcode of this mush called RhostMUSH
  are privileged. Any copying of code in part or in full of the changes we have
  done is not allowed.  If concepts or ideas are borrowed, it is requested
  that permission be gotten first and required that credits be given to this
  mush for ideas gotten from this server.  This text can not be modified,
  changed, or removed on other servers.
  
[PREV] [TOP] [NEXT]

COR()

  Function: cor(<boolean1>,<boolean2>[,<booleanN>]...)
   
  Takes two or more booleans, and returns 1 if at least one is equivalent
  to true(1).  This works like or() however execution is stopped after the
  FIRST true occurance.
  
  Example: 
    > say [cor(0[setq(0,test)],1,1[setq(1,test2)] - [r(0)] / [r(1)]
    You say "1 - test / "
    > say [cor(0[setq(0,test)],0,1[setq(1,test2)] - [r(0)] / [r(1)]
    You say "1 - test / test2"
  
  See Also: BOOLEAN VALUES, and(), not(), xor(), nand(), nor(), xnor(), cand()
            ofparse()
  
[PREV] [TOP] [NEXT]

COS()

  Function: cos(<number> [,<units>])
   
  Returns the cosine of <number>, expressed in radians.
  
  You may specify <units> which are either (r)adians,
  (g)radians, or (d)egrees.  (r)adians are the default.
   
  Examples:
    > say cos(0)
    You say "1"
    > say cos(fdiv(pi(),2))
    You say "0"
    > say cos(fdiv(pi(),4))
    You say "0.707107"
    > say cos(fdiv(pi(),6))
    You say "0.866025"
  
  See Also: acos(), asin(), atan(), atan2(), pi(), sin(), tan(), ctu(), 
            cosh(), sinh(), tanh()
  
[PREV] [TOP] [NEXT]

COSH()

  Function: cosh(<number> [,<units>])
   
  Returns the hyperbolic cosine of <number>, expressed in radians.
  
  You may specify <units> which are either (r)adians,
  (g)radians, or (d)egrees.  (r)adians are the default.
   
  Examples:
    > say cosh(0)
    You say "1"
    > say cosh(fdiv(pi(),2))
    You say "2.509178"
    > say cosh(fdiv(pi(),4))
    You say "1.324609"
    > say cosh(fdiv(pi(),6))
    You say "1.140238"
  
  See Also: acos(), asin(), atan(), atan2(), pi(), sin(), tan(), ctu(), 
            sinh(), tanh()

[PREV] [TOP] [NEXT]

COSTS

  Topic: COSTS
 
  Certain commands cost money to use, they will fail if you don't have
  enough.  Use the @list costs command to find out what these commands are
  and how much they cost.
  
  See Also: @list
  
[PREV] [TOP] [NEXT]

COUNCILOR

  Flag: COUNCILOR(a)  
  
  This flag, when set on players, will allow them most
  wizard powers and the ability to effect anything equal to or less
  in power.  They can basically effect anything within their power
  by #<object> or *<player>.  Only ROYALTY or SUPER-ROYALTY can
  set or unset this flag.
  
  See Also: GUILDMASTER, ARCHITECT, ROYALTY, IMMORTAL
  
[PREV] [TOP] [NEXT]

CPATTR2

  Command: @cpattr (Continued 2 of 3)
  Syntax:  @cpattr <object>/<attribute>=<object1>/<attr1>/<attr2>
    
      - This will copy the given attribute to 'attr1' and 'attr2' of the
        the destination object.  You may specify from one to any number
        of destination attributes.
  
  Syntax: @cpattr <object>/<attribute>=<object1>,<object2>/<attr1>
  
      - This will copy the given attribute to an attribute of the same name
        on the first object and copy it with the name 'attr1' on the second
        object.  Any number of objects may be listed.  You may specify
        multiple attributes per object as well.
 
  Syntax: @cpattr <object>/<wildcard>=<object1>,...,<objectX>
 
      - This will copy all attributes matching the wildcard to the destination
        object(s).  You may specify from one to any number of destination
        objects but must control the objects to copy the attributes.
   
{ 'help cpattr3' for more }
  
[PREV] [TOP] [NEXT]

CPATTR3

  Command: @cpattr (Continued 3 of 3)
  Syntax: @cpattr <attribute>=<object>/<attrib>,...
  
      - This copies the attribute on the ENACTOR to the target.  You can
        specify multiple targets.
  
  Syntax: @cpattr/clear <args>
 
      - The clear switch is usable with all the previous mentioned @cpattr
        commands. (help cpattr2 for help on these).  This will work just like
        the prior, except this will also purge (remove) the attributes that
        are being copied from the original object.  This acts basically like
        a move.
 
  @cpattr returns detailed information of objects copied from and to and
  any attributes successfully copied.
   
  See Also: @mvattr, @set, &
  
[PREV] [TOP] [NEXT]

CPUTIME TOGGLE

  Toggle: CPUTIME
  
  The CPUTIME toggle is designed to aid coders in evaluating the efficiency
  of their code, and to determine if changes which are made are helping
  or hurting their execution time. When this toggle is set on an object, 
  all commands that it executes are profiled by time, evaluation count, 
  function call count, and attribute fetch count. It is recommended that 
  you set the PUPPET flag on your object to enable you to see the profiling 
  information which the CPUTIME toggle presents. You can also set the CPUTIME
  toggle on yourself in which case the PUPPET flag is not necessary.
  
  Example:
    > &TIMEHOG Toy=$timehog:say [words(iter(lnum(1000),lnum(1000)))]
    Set.
    > @toggle Toy=CPUTIME
    Set.
    > @set Toy=PUPPET
    Toy grows ears and can now hear.
    Set.
    > timehog
    Toy says "1040"
    Toy> [CPU:  7.74  EVALS: 2005  FUNCS: 1003  ATRFETCH:    1]
  
  For explanations of what CPU, EVALS, FUNCS, and ATRFETCH is, see CPUTIME2
  
[PREV] [TOP] [NEXT]

CPUTIME2

  Toggle: CPUTIME (continued)
  
  CPU         - is the amount of CPU that the given process takes up on 
                the given machine.  The lower the number the better, 
                naturally.
  
  EVALS       - The number of function calls that gets parsed by the mush.
                IE: the number of times the mush has to parse something.
  
  FUNCS       - The total number of MUSH functions called.
  
  ATRFETCH    - The total number of attribute fetches (IE: the number of
                times it has to read any attribute)
                
[PREV] [TOP] [NEXT]

CRC32()

  Function: crc32(<string1>[, ..., <stringN>])
   
  Returns the Cyclic Redundancy Check of the strings or sequences of
  strings as a positive number. The answer for the same sequence of
  strings is always the same.  You may specify more than one string
  to do a CRC check against.
   
  The usefulness of this number is broad, but could provide a unique
  fingerprint, checksum pattern, or high-quality hash function.
   
  Example:
    > think crc32(MUX)
    629126998
  
  See Also: pack(), unpack(), mask(), tobin(), tohex(), tooct(), todec(),
            digest()
  
[PREV] [TOP] [NEXT]

create

  Command: co  <name> <password>  (short for connect)
           cd  <name> <password>  (short for cdark)
           ch  <name> <password>  (short for chidden)
           cr  <name> <password>  (short for create)
           reg <name> <password>  (short for register)
  
  Note:  To create/log in a character with spaces in their name, please use
         "<name>".  Ergo, surround your name with double quotes.
         The 'register' command does not allow creation with spaces.
  
  These commands are only useful on the connect screen.  They are used to
  create/connect to your account <name> with the provided <password>.  
  These commands are not useable once you are connected to the mush.
  
  These commands are as follows:
     co  -- This option is the default and normal method to connect.
            This option has no special conditions or privilages.
            Syntax: co player password
                    co "Player With Spaces" password
  
     ch  -- Wizards and anyone with the NOWHO @power (to @hide) can use this.
            This option will auto-hide the player when connecting.
            It defaults to the 'co' option if you can't @hide.
            Syntax: ch player password
                    ch "Player With Spaces" password
  
     cd  -- Wizards and higher can use this to connect dark to the game.
            This effectively connects wiz-cloaked to the game.
            Immortals get auto-added to supercloak.
            Syntax: cd player password
                    cd "Player With Spaces" password
     
     cr  -- Allows creation of a player from the connect screen.
            Syntax: cr player password
                    cr "Player With Spaces" password
  
     reg -- If offline registration is enabled, allows the player to register
            a character with a supplied email that is then used to email them
            their password.
            Syntax: reg player email@address
                    reg "Player With Spaces" email@address
  
  See Also: @aconnect, @adisconnect, @hide, @register
            
[PREV] [TOP] [NEXT]

CREATE()

  Function: create(<name>, [<arguments> [,<type>]])
  
  @create:  create(<name>,<value>,t) (default)
    This will create an object with name <name> of value <value>.  The 't'
    <type> is optional for this as it is the default.  For more help on
    creating objects, please refer to 'help @create'.  If <value> is null
    it assumes the default.  All objects made are sent to enactor's location.
  
    If no arguments are given, the default money value is taken for this 
    option only.
  
  @dig:     create(<name>,<[exit-in],[exit-out]>,r)
    This will dig a room with name <name> and OPTIONAL in-exit 'exit-in' and
    OPTIONAL out-exit 'exit-out'.  You may specify both, either, or no exits.
    For more help on digging rooms, please refer to 'help @dig'.
  
  @open:    create(<name>,<link>,e)
    This will open an exit with name <name> to OPTIONAL target <link>.  If
    <link> is unspecified, then the exit will be un-linked and will need to
    be @linked later (if so desired).
  
  The SIDEFX flag needs to be set to use this function. 
  Type @list options to see if this side-effect is enabled.
  
  Example:
  > say create(An Object,10)  (this will create 'An Object' with value of '10')
  > say create(An Object)     (this will create 'An Object' with default cost)
  
  See Also: @create, @dig, @open, dig(), open(), SIDEEFFECTS
  
[PREV] [TOP] [NEXT]

CREATETIME()

  Function: createtime(<target>)
  
  This function returns the time the target was created.  You must be able
  to examine the object to get the attribute.
  
  Example:
    > say createtime(me)
    You say "Mon Jul 14 12:23:17 2000"
  
  See Also: modifytime()
  
[PREV] [TOP] [NEXT]

CREDITS

  Topic: CREDITS
   
  RhostMUSH derived directly on code from TinyMUD.  Thanks to the authors 
  of TinyMUD for the start code.  
  
  Features and ideas borrowed from TinyMUSH/MUX/MUSE/MUCK/LP/DIKU/Penn
  Credits for these platforms follow.
  
  TinyMUSH 2.0 is derived from Larry Foard's TinyMUSH (which was itself 
  derived from TinyMUD, written by Jim Aspnes).  Ideas for features 
  (and occasionally code) came from many places, including TinyMUSE, 
  PernMUSH, and TinyTIM.  
   
  We would like to thank the following people:
   
  - Jim Aspnes, for the original TinyMUD (from which TinyMUSH was derived)
   
  - Larry Foard, for the original implementation of TinyMUSH.
   
  - Marcus Ranum for the original Untermud database layer code, and  Andrew
    Molitor for getting it to work with TinyMUSH.
   
  - Andrew Molitor (again) for the VMS port.
  
{ 'help credits2' for more }
  
[PREV] [TOP] [NEXT]

credits2

  Topic: CREDITS (continued)
  
  - Russ(Random) and Jennifer(Moira) Smith, for ideas, comments, and coding
    help.
   
  - R'nice(TinyTIM) for more good ideas than we could shake a wand of coding
    at.  (@doing, @edit enhancements, a REAL use command, lotsa minor fixes
    and tweaks)
  
  - Coyote(TinyTIM, DungeonMUSH, NarniaMUSH), for finding some nasty bugs and
    NOT using them for evil purposes.
 
  - Ambar, Amberyl, Sh'dow, Jellan, and Miritha (all from PernMUSH) for 
    numerous bug fixes, enhancements, and ideas.
 
  - Sketch(TinyTIM) for rewriting some of the more confusing help file
    entries.
 
  - Hcobb(TinyTIM) and Furie(DungeonMUSH) for inspiring the parser rewrite and
    other security-related fixes and enhancements.
   
{ 'help credits3' for more }
  
[PREV] [TOP] [NEXT]

credits3

  Topic: CREDITS (continued - Where RhostMush split off from the rest)
  
  - Nyctasia(Rhostshyl, Micro) for bringing the ideas and creating the story
    behind Rhostshyl with your imagination and your MUSH.  Thanks also for the
    work done on setting up the first Rhostshyl that the code today is based
    on including the MUSE ideas you originally inserted.
  
  - Seawolf(Rhostshyl, Pern, Discordia, etc) for converting the MUSE database 
    to MUSH, installing Nyctasia's patches, installing a mailsystem better 
    than anything past, present, and future.  Thanks also for the many bug 
    fixes and enhancements.
  
  - Thorin(Rhostshyl, Swords, etc) for adding in the many features and 
    additions along with a server and queue rewrite for speed and performance.
    Thanks also for the rewrite of the master-room code into something logical
    and securing the errors in the original code with string manipulations.
    
{ 'help credits4' for more }
  
[PREV] [TOP] [NEXT]

credits4

  Topic: CREDITS (continued)
  
  - Ashen-Shugar(Rhostshyl, Veil, Apex, Discordia, Etc) for rewriting the com
    system, adding and enhancing it, ideas and bug fixes, and various
    enhancements and modifications to the server for better performance and
    overflowing control.
  
  - Thanks also to all the vanilla MUSH/MUSE/LP/DIKU/ETC's that gave us some
    of the ideas.
  
  - Thanks also to the numerous people who have offered suggestions and ideas
    that have helped make RhostMush one of the best servers in existence.
  
  - Thanks to Seawolf, Thorin, and Ashen-Shugar for rewriting all components
    of the code and redesigning the queue, parser, eval, matching, stack,
    memory, database, networking, and all other features that make the code
    different in every way except in it's backward compatibility with 
    TinyMUSH.
  
  - Thanks to MyrkaMUX for the idea that lead to our @lock/open
  
  - Thanks to Akallabeth (A PennMUSH) for ideas for new functions.
  
{ 'help credits5' for more }
  
[PREV] [TOP] [NEXT]

credits5

  - Thanks to ChaoticMUX for the idea of the SIDEFX flag and function ideas.
  
  - Thanks to Javelin and the other developers of the PennMUSH code for 
    working with us in helping with ideas and code for RhostMUSH.  Also thanks
    for permission to use code from PennMUSH for our server.
  
  - Thanks to Zenty of TDragonD/Omni for permission fixes.
  
  - Thanks to Stormwolf of Children for numerious ideas
  
  - Thanks to Medwyn of The Underground for finding some buggies.
  
  - Thanks to Brazil(TinyMUX 2.0) for open permission in sharing ideas and
    code, and letting us know first hand any new bugs that could impact
    RhostMUSH.  It is and always will be appreciated.
  
  - Thanks to TinyMUSH 3.0 for some useful functions.
  
  - Thanks to Rolestra(Rhostshyl) and the developers of Taz for new ideas.
  
  - Thanks to Shade@Mediteranian for the Reality Levels Patch
  
  - Thanks to Exaurdon for endless braincells fried helping Lensman with bugs.
  
  - Thanks to several people and organizations that are too numerous to mention
  
[PREV] [TOP] [NEXT]

CREPLACE()

  Function: creplace(<string>, <position>, <string2>[, <type>][,<range>])
            creplace(<string>, <position list>, <character>)
  
  The creplace function will replace characters starting at position
  <position> and based on the type, will continue to overwrite till
  end of one of the strings.  You can replace one or more characters.
  
  If you specify the range, it will give the number of characters to enact
  upon.  Default is length of string2.
  
  The second option only allows three arguments, and will replace the 
  character positions specfied in the space delimited <position list>
  with the character(s) specified with <character>.  If you specify more
  than one character, it will continue to wrap around the list until
  the end of the string is met.
  
  Note:  The second option can use output from totpos() to stage and prep
         the values you want to replace depending on the situation.
  
  Valid types are: 
        o - overwrite : starting at position it'll continue to overwrite
            until the end of the <string2>. (this is the default behavior)
        c - overwrite and cut: starting at position it'll continue to
            overwrite up to the maximum length of the original string.
        i - insert : starting at position it'll insert all of string2
            into the string.
  
  Examples:
    > say creplace(this is a test,4,whee)
    You say "thiwhee a test"
    > say creplace(this is a test,4,wheewheewhoowha!)
    You say "thiwheewheewhoowha!"
    > say creplace(this is a test,4,wheewheewhoowha!,c)
    You say "thiwheewheewho" 
    > say creplace(this is a test,4,wheewheewhoowha!,i)
    You say "thiwheewheewhoowha!s is a test"
  
  Option 2 Example:
    > say creplace(this is a test,1 3 4,X)
    You say "XhXX is a test"
    > say creplace(this is a test,1 3 4,XYZ)
    You say "XhYZ is a test"
  
  See Also: replace(), lreplace(), totpos(), elementpos(), ruler()
  
[PREV] [TOP] [NEXT]

CTU()

  Function: ctu(<number>, <units-from>, <units-to>)
  
  The ctu() function will convert <number> that was originally in
  the units of <units-from> into the units of <units-to>.
  
  The units available are (r)adians, (g)radians, and (d)egrees.
  
  180 degrees = PI (3.141593) radians = 200 gradians.
  
  Examples:
    > say ctu(180,d,g)
    You say "200"
    > say ctu(180,d,r)
    You say "3.141593"
  
  See Also: sin(), cos(), tan(), asin(), acos(), atan(), atan2(), pi(), 
            cosh(), sinh(), tanh()
  
[PREV] [TOP] [NEXT]

DARK

  Flag: DARK(D)   
  
  If a room is DARK, then no items are shown when a person 
  'looks' there. If a thing is DARK, then "look" does not list that 
  object in the room's Contents:, and if an exit is DARK, it doesn't 
  show up in the Obvious Exits: list.  Puppets and objects that can 
  listen cannot be DARK.
  
  The RhostMUSH default however, allows puppets and listening devices
  to be dark as well as players.  However, on players, DARK does not
  hide them from the WHO listing.  Use the UNFINDABLE flag for this.
  Dark objects/things can still be seen by examine/looking at the object
  and @sweep picks up all dark things.
  
  RhostMUSH can be set up to mimic TinyMUSH in how it handles the dark
  flag for backward compatibility.  Check with your local wizards to
  see how it is set up here.
  
  See Also: UNFINDABLE, @sweep, look, examine
  
[PREV] [TOP] [NEXT]

database information functions

  Function Lists: Database Information Functions
    
  con()            - Returns the connection time of the specified player.
  createtime()     - Returns the timestamp the object was created.
  entrances()      - List exits linked to the specified object.
  exit()           - Lists the first exit in an object.
  foldercurrent()  - List current folders of a target player.
  folderlist()     - Lists all folders of target player.
  globalroom()     - Returns the dbref of the global room.
  loc()            - Returns the dbref of your location.
  locate()         - Attempts to locate an object by name in a specified scope.
  lrooms()         - Lists an iterative sequence of connected rooms.
  mailquick()      - Returns information about a mailbox.
  modifytime()     - Returns the timestamp the object was last modified.
  nearby()         - Tests if two different objects are near eachother.
  next()           - Returns the next object in a con()/exit() list.
  num()            - Returns the DbRef of an object.
  objid()          - Returns the DbRef Object ID of an object.
  owner()          - Returns the owner of an object or an attribute.
  rloc()           - Returns the location of an objects location.
  room()           - Returns the dbref of the (absolute) room an object is in.
  search()         - Returns a list of objects that match search criteria.
  searchng()       - Like search but do not search garbage/recover.
  searchobjid()    - Like search() but returns objid's.
  searchngobjid()  - Like searchng() but returns objid's.
  sees()           - Returns true if an object is able to see a target object.
  stats()          - Shows information about the number of objects on the MUSH.
  where()          - Returns the true location of an object.
  listcommands()   - Lists all commands that you have access to.
  listflags()      - Lists all flags that you have access to.
  listtoggles()    - List all togglees you have access to.
  pmatch()         - Returns the dbref of a matching player.
  rnum()           - Returns the dbref of an object, from a target perspective.
  valid()          - Tests validity of certain values for various options.
  xcon()           - Returns a constrained list of <object>'s contents.
  listfunctions()  - Lists all functions you have access to.
  listnewsgroups() - Lists all newsgroups that you have access to.

[PREV] [TOP] [NEXT]

DEBUG

  Flag: TRACE(T)
 
  When a thing is set TRACE, it will report to its owner the result of all
  substitutions that it performs that change the original string.  The order
  for displaying nested evaluations (such as when evaluating the arguments to
  a function) is a site-selected configuration parameter.
  
  You may specify a TRACE_GREP attibute on yourself (&TRACE_GREP me=<string>)
  if you wish to have a specific piece of code in trace output which matches
  the trace output return in red the match.
   
  Example:
  > @set object = trace
  > @va object = say The result is [add(4,mul(3,%0))].
  > @trig object/va = 7
  object(#322)} '%0' -> '7'
  object(#322)} 'mul(3,%0)' -> '21'
  object(#322)} 'add(4,mul(3,%0))' -> '25'
  object(#322)} 'The result is [add(4,mul(3,%0))].' -> 'The result is 25.'
  object says "The result is 25."
  
{ 'help trace2' for more } 
[PREV] [TOP] [NEXT]

DEC()

  Function: dec(<number>)
  
  DEC() and XDEC() may be reversed.  to check if they are, Please reference:  
                           @list options system  
  
  The dec() function is used to decrement numerical values in local registers.
  The valid registers are 0-9, and a-z.  You may also use setq labels.
  If the value in the register is a string, it will return the string without
  any changes.
  
  Example:
    > say [setq(0,10)] 1: [r(0)] [dec(0)] 2: [r(0)]
    You say " 1: 10  2: 11"
    > say [setq(0,The)] 1: [r(0)] [dec(0)] 2: [r(0)]
    You say " 1: The #-1 GLOBAL REGISTER NOT AN INTEGER 2: The
  
  See Also: inc(), setq(), setr(), r()
  
  Note:  Check @list options for the line 'Mux Formatted Inc() and Dec()'. If
         this is enabled, the functionality of inc() and dec() are swapped
         with xinc() and xdec() for MUX/Tiny style support.
  
[PREV] [TOP] [NEXT]

DECODE64()

  Function: encode64(<string>)
            decode64(<string>)
  
  encode64() returns <string> encoded using base-64 format.
  
  decode64() converts a base-64 encoded <string> back to its original form.
  
  Any invalid characters fed to the string will cause the entire string to be
  ignored.
  
  Examples:
    > say encode64(test 1 2 3)
    You say "dGVzdCAxIDIgMw=="
    > say decode64(dGVzdCAxIDIgMw==)
    You say "test 1 2 3"
  
  See Also: encrypt(), decrypt(), pack(), digest()
  
[PREV] [TOP] [NEXT]

DECRYPT()

  Function: decrypt(<string>,<seed>)
  
  Returns a decrypted string based on the given seed and encrypted string.
  You have to match the seed (case sensitive) to be able to decrypt the
  string properly.  Due to cryptology laws around the world, this function
  can only be enabled with a compile-time option.
  
  This function may not be available outside of the United States.
  
  Example:
    > say encrypt(VJKUaKUaCaVGUV,a)
    You say "this is a test"
  
  See Also: encrypt(), encode64(), decode64(), digest()
  
[PREV] [TOP] [NEXT]

default()

  Function:  default(<obj>/<attr>,<default case>)
 
  This function returns the value of <obj>/<attr>, as if retrieved via
  the get() function, if the attribute exists and is readable by you.
  Otherwise, it evaluates the default case, and returns that.
  Note that the default case is only evaluated if the attribute does
  not exist or cannot be read.
 
  This is useful for code that needs to return the value of an attribute,
  or an error message or default case, if that attribute does not exist.
 
  Examples:
    > &TEST me=apple orange banana
    > say default(me/Test, No fruits!)
    You say "apple orange banana"
    > &TEST ME
    > say default(me/Test, No fruits!)
    You say "No fruits!"
 
  See Also: get(), get_eval(), u(), edefault(), u2(), ueval(), objeval()
 
[PREV] [TOP] [NEXT]

DELETE()

  Function: delete(<string>, <first>, <len> [,<key>])
  
  Returns <string>, but with <len> characters starting after the character
  at position <first> removed.  In other words, this function copies <first>
  characters, skips <len> characters, and then copies the remainder of the 
  string.
  
  You may specify a <key> of 1 to tell mid() to take the string raw and
  not do ansi-aware processing.  This will speed up the function.
  The default is '0' which does ansi processing.
  
  Note: the config param 'ansi_default' handles if the ansi handling is 
        configured default or not.  In which case the 'key' is reversed.
   
  Example:
    > say delete(abcdefgh, 3, 2)
    You say "abcfgh"
    > say delete(Would you like coffee or perhaps tea?, 15, 18)
    You say "Would you like tea?"
  
  See Also: ldelete(), mid(), replace(), remove()
  
[PREV] [TOP] [NEXT]

delextract()

  Function: delextract(<string>, <first>, <length>[, <delim>])
  
  Delextract returns a string of words that were not in the list that you
  specified.  This in effect works exactly opposite of extract.  Delim
  may be used to specify a delimiter other than space if desired.
  
  Examples:
    > say delextract(This is a really neat example, 4, 2)
    You say "This is a example"
    > say extract(Another@funky@test@for@extract, 3, 3, @)
    You say "Another@funky"
  
  See Also: extract(), extractword(), index(), insert(), ldelete(), replace(),
            randextract()
  
[PREV] [TOP] [NEXT]

descformat

  All NON-ACTION attributes allowed formatting are in: help attributes
  
  Attribute formatting can be accomplished multiple ways.  First, there is
  a generic local 'format' for most @-attributes.  To process this format,
  you need to set an attribute of the name 'format<attr>' on the target
  (or parent, global parent, zone of the target. Use <attr>format if the
  config parameter format_compatibility is enabled). If this attribute is
  not found, it will then look at the global default parents for matching
  attribute inheritance.  Any attribute that you wish to inherit default
  pattern formatting must be set DEFAULT (attribute flag).  The desc is
  passed into the formatting as '%0'.  Local formatting has priority
  over global formatting.
  
  Note: Most RhostMUSHes will be configured to use &FORMAT<attr>.
        See '@list options system' to discover which method is in use.
  
  Examples:
    > @desc me=This is a test
    > @admin player_attr_default=123
    > @desc #123=-< %0 >-
    > lo me
      -< This is a test >-
    > &formatdesc me===<%0>==
    > lo me
      ===<This is a test>===

  See Also: ATTRIBUTES, ATTRIBUTE FLAG DEFAULT, @conformat, 
            @exitformat, @nameformat, invformat

[PREV] [TOP] [NEXT]

DESTROY()

  Function: destroy(<object>)
  
  The destroy() function will destroy the targetted object.  You can not
  destroy anything set SAFE or INDESTRUCTABLE with the destroy() function.
  You have to use @destroy for these.  This is for security percautions.
  This will immediately halt anything that the object may be evaluating.
  
  Check @list options to see if this side-effect is enabled.
  Anything using this side-effect must have the SIDEFX flag set.
  
  Example:
    > say destroy(#123)
    You say ""
   
  See Also: @destroy, wipe(), create()
  
[PREV] [TOP] [NEXT]

DESTROY_OK

  DESTROY_OK(d)   
  
  When set on an object, it allows any player to destroy
  it as long as the object is not locked against them. This is good 
  for things like notes, whereby the recipient can destroy the note 
  after reading it, instead of having to look for you to destroy it.
  The DESTROY_OK flag overrides the SAFE flag, so that you do not need to
  give the /override switch to @destroy to destroy a thing that is both
  DESTROY_OK and SAFE.   The INDESTRUCTIBLE flag makes this meaningless.
  
  See Also: @destroy, SAFE, INDESTRUCTIBLE
  
[PREV] [TOP] [NEXT]

DICE()

  Function: dice(<val1>,<val2>[[[[[,<type>],<botval>],<sep>],<fail>],<crit>])
   
  This function rolls the dice.  It works as if you were rolling dice and 
  returns the result.  <val1> is the number of dice and <val2> is the 
  sides of the dice.  For example dice(2,4) would specify you rolling 2 
  4-sided dice.   The following 'type' values exist.
     0 - default.  Just display the total of both dice.
     1 - Display all the rolls of the dice.
     2 - Display the totals, then display all the roles of the dice.
     3 - Display the totals, then all normal rolls of dice, then display 
         failures/criticals after with the default '|' separator.
     4 - Display all the normal rolls of the dice, then display the
         failures, then the criticals separated by the default '|' character.
     5 - Display just the totals, then failures/criticals after with
         the default '|' separator.

  <botval> specifies low ceiling masks for the dice.  You may specify an 
  optional output separator for the numbers.  If the separator you specify
  is the '|' character, the separator used for failure/criticals becomes ':'.
  
  You may specify offset values to the 'fail'ure or for 'crit'ical success.
  The offset increases the range of failure or success.
   
  Examples:
    > say dice(2,4)        [give me the total of rolling 2 4-sided dice]
      You say "3"
    > say dice(2,4,1)      [give me the total and individual dice rolls]
      You say "3 1 2"
    > say dice(2,4,2)      [give me just the individual dice rolls]
      You say "1 2"
    > say dice(2,4,2,3)    [give me just the dice rolls with MIN value of 3]
      You say "3 3"
    > say dice(2,4,2,,@)   [give me just the dice rolls with a separator '@']
      You say "1@2"
   
  See Also: rand()
  
[PREV] [TOP] [NEXT]

DIE()

  Function: dice(<val1>,<val2>[[[[[,<type>],<botval>],<sep>],<fail>],<crit>])
   
  This function rolls the dice.  It works as if you were rolling dice and 
  returns the result.  <val1> is the number of dice and <val2> is the 
  sides of the dice.  For example dice(2,4) would specify you rolling 2 
  4-sided dice.   The following 'type' values exist.
     0 - default.  Just display the total of both dice.
     1 - Display all the rolls of the dice.
     2 - Display the totals, then display all the roles of the dice.
     3 - Display the totals, then all normal rolls of dice, then display 
         failures/criticals after with the default '|' separator.
     4 - Display all the normal rolls of the dice, then display the
         failures, then the criticals separated by the default '|' character.
     5 - Display just the totals, then failures/criticals after with
         the default '|' separator.

  <botval> specifies low ceiling masks for the dice.  You may specify an 
  optional output separator for the numbers.  If the separator you specify
  is the '|' character, the separator used for failure/criticals becomes ':'.
  
  You may specify offset values to the 'fail'ure or for 'crit'ical success.
  The offset increases the range of failure or success.
   
  Examples:
    > say dice(2,4)        [give me the total of rolling 2 4-sided dice]
      You say "3"
    > say dice(2,4,1)      [give me the total and individual dice rolls]
      You say "3 1 2"
    > say dice(2,4,2)      [give me just the individual dice rolls]
      You say "1 2"
    > say dice(2,4,2,3)    [give me just the dice rolls with MIN value of 3]
      You say "3 3"
    > say dice(2,4,2,,@)   [give me just the dice rolls with a separator '@']
      You say "1@2"
   
  See Also: rand()
  
[PREV] [TOP] [NEXT]

DIFFERENCES

  First we'll touch on the TinyMUX differences.
  1) Paging.
     In mux, you can type: page <player-list>=topic, but you need to 
     surround players with spaces in their name within quotes.
  
     In Rhost, you can type: page <player-list>=topic, but if you intend
     to page people with spaces in their names, the first character MUST
     start with a comma.  i.e.:  page ,player1, player with space = message
     
     You may also @toggle yourself MUXPAGE to have paging work the same.
    
  2) Re-paging
     In mux, you could do page <message> to re-page a player.
  
     In Rhost, you have to use 'lp <message> to re-page a player.  You
     may also use 'rp <message>' to re-page a player who last paged you.
     They can be used interactively from each other.
  
     You may also @toggle yourself MUXPAGE to have paging work the same.
  
  3) Mail
     In mux, you could do @mail <player-list>=<subject> then use '-' to
     write new lines and '--' to send.
  
     In Rhost, you need to first set the BRANDY_MAIL toggle.  To set this,
     type:  @toggle me=brandy_mail (use !brandy_mail to unset)
     You can now use:  mail <player-list>=<subject> then use '-' to
     write new lines and '--' to send like you're used to.
  
  { type 'help differences2' for tinymush differences. }
  
[PREV] [TOP] [NEXT]

DIFFERENCES2

  Welp, there's not many differences to be honest.  However, as most TinyMUSH's
  use the brandy mailer, you may use the mail method above to make a syntax
  that you'd be compatible with.
  
  For PENN, there's some subtle differences.     
  1) Mail
     In Penn you can do:  mail <user-list>=subject/body
     
     In Rhost you need to do: mail <user-list>=subject//body
     (notice the need of two //'s)
  
  For all other platforms:
  1) BBS
     Rhost's hardcoded bbs system is *totally* different than any other
     system.  Softcode interfaces can be coded to make it into a more
     familiar interface if desired, as it is a very powerful system.
  
  2) Flags
     Rhost's flags have different letters for the staff.  Anything ported
     with softcode will probably need to be twinked.  However, all the
     functions/commands should work similiarilly to what you're used to.
  
  3) Com system.
     Rhost's current hardcoded comsystem is very archiac.  I'd suggest
     a softcoded alternative until a better one is coded.  And yes, it
     is both in the works and should be backward compatible to both
     PENN *and* MUX.
  
[PREV] [TOP] [NEXT]

DIG()

  Function: dig(<room>[[,<in exit>][,<out exit>][,<location>][,<type>]])
  
  This side-effect function mimics the full range of functionality that @dig 
  uses.  It also follows all restrictions and permissions of the @dig command.
  You can dig room name <room> with optional exit from your current location 
  to that room <in exit> and optional exit from the room being created to your
  current room <out exit>.  Neither of the exits are required.  
  
  The optional <location> specifies what location the dig() function is to
  open exits <in exit> from and <out exit> back to.  You must control the
  location, it must be specified as a dbref#, and it must be an object or room.
  
  The optional <type> specifies if the default behavior (with a '0') returns
  just the dbref# of the room created, or if a '1' specifies if the room# with
  the exit TO and the exit FROM be listed on a single line.
  
  This function requires the SIDEFX flag.
  
  Type @list options to see if this side-effect function is enabled.
   
  Examples:
    > say dig(My Room)			(without sidefx return values enabled)
    You say ""
    > say dig(Another Room,In <I>;i;in) (with sidefx return values enabled)
    You say "#123"
    > say dig(Yet Another Room,In <I>;i;in,Out <O>;o;out)
    You say "#124"
    > say dig(Yet Another Room,In <I>;i;in,Out <O>;o;out,,1)
    You say "#127 #128 #129"
  
  See Also: create(), open(), @dig, SIDEEFFECTS
  
[PREV] [TOP] [NEXT]

DIGEST()

  Function: digest(<algorithm>, <string>)
   
  Returns a checksum (Hash, digest, etc.) of <string> using the given
  <algorithm>.  If the mush is compiled with SSL support <algorithm> 
  can be one of:
   
           md2 md4 md5 sha sha1 dss1 mdc2 ripemd160
   
  Without SSL, only the sha algorithm is enabled. 
  
  See '@list options' on what algorithms are supported.
  
  Examples: 
    > say digest(md5, test123)
    You say "cc03e747a6afbbcbf8be7668acfebee5"
    > say digest(sha, test123)
    You say "3a589de6214fd40ae461313fd81dfd1edb7eae70"
   
  See also: crc32(), pack(), roman(), encrypt(), decrypt(), encode64(),
            decode64()

[PREV] [TOP] [NEXT]

DIST2D()

  Function: dist2d(x1, y1, x2, y2)
   
  Returns the integer distance between the Cartesian points in two dimensions
  (x1,y1) and (x2,y2).
   
  Example:
    > say dist2d(0,0,3,4)
    You say "5"
    
  See Also: dist3d()
  
[PREV] [TOP] [NEXT]

DIST3D()

  Function: dist3d(x1, y1, z1, x2, y2, z2)
   
  Returns the integer distance between the Cartesian points in three
  dimensions (x1,y1,z1) and (x2,y2,z2).
   
  Example:
    > say dist3d(0,0,0,10,15,20)
    You say "27"
  
  See Also: dist2d()
  
[PREV] [TOP] [NEXT]

DIV()

  Function: div(<number1>,<number2>[,<numberN>]...)
   
  Returns the integer quotient from dividing <number1> by <number2>.
  
  For floating point numbers, please use the fdiv() function. 
   
  Example:
    > say div(15,3)
    You say "5"
    > say div(16,3)
    You say "5"
    > say div(17,3)
    You say "5"
    > say div(18,3)
    You say "6"
    > say div(-17,3)
    You say XXXXX
  
  This function may also be called as idiv().
  
  See Also: add(), fdiv(), mod(), mul(), round(), sub(), trunc()
  
[PREV] [TOP] [NEXT]

doing

  Command: DOING <prefix>
  Displays a list of players currently connected to the MUSH.
  The DOING report tells you how long a player has been on, how long they
  have been inactive, and what they are doing (if they have used the @doing
  command).  If <prefix> is specified, only players whose names start with
  <prefix> are listed.  There are two forms of the DOING listing.  One
  shows GUILDS (an arbitrary attribute called 'guild' on a player) and
  the other has just the basic information.  The GUILD field in the DOING
  can be optionally changed to another field.  If you see another field than
  'Guilds' the default value has been changed.
  
  Also, if enabled, you may see either a '*' or the actual bit of the staff
  when you do a DOING.
  
  Note:  DOING must be in all caps to work.
   
  See Also: @doing, WHO
  
[PREV] [TOP] [NEXT]

DOOR SYNTAX

  Command: @door
  
  The following commands exist:
    @door[/list]  -- List the available doors.  This is the default switch:
        Syntax: @door/list
  
    @door/full    -- List full statistics of the specified door.
        Syntax: @door/full <doorname>
    
    @door/status  -- Gives the status of the current door.
        Syntax: @door/status <doorname>=<setting>
        Settings: closed -- forces the door closed and drops all connections.
                  online -- sets the door for allowing connections.
                  offline -- forces the door offline, drops all connections
                             plus disables the door from further connections.
  
   @door/open    -- Opens the specified door.               
        Syntax: @door/open <doorname> [=<arguments>]
        Door: MUSH
           Arguments: mushname -- For the MUSH door, argument is the mush name
                                  no arguments just lists the available mushes.
        Door: EMPIRE
           Arguments: login,password -- First arg is login, second is password
  
   @door/push    -- Pushes the target player into the door.
        Syntax: @door/push <player>|<doorname> [=<arguments>]
        Door: MUSH
           Arguments: mushname -- For the MUSH door, argument is the mush name
                                  no arguments just lists the available mushes.
        Door: EMPIRE
           Arguments: login,password -- First arg is login, second is password
  
   @door/close   -- Closes the specified door.
        Syntax: @door/close <doorname>
   
   @door/kick    -- Closes the specified door to the target player.
        Syntax: @door/kick <target>|<doorname>
         
   For custom doors, please check the help the maintainer provides.        
  
  See Also: DOOR_OPEN, DOOR_PUSH, DOOR_CLOSE, DOOR_LIST, DOOR_STATUS, 
            DOOR_KICK, DOOR_WRITING, INTERNAL_DOORS, DOORED, DOOR SYNTAX
  
[PREV] [TOP] [NEXT]

DOOR_CLOSE

  Command: @door/close <door>
  
  This command will close an existing door connection providing it's 
  currently open.
  
  If you're caught in a door and need to abort it then type:
  > !@door/close <door>
  
  Please notice the '!' at the start of the command!
   
  Example:
    > !@door/close mush   -- This will close the current active door
    > !!@door/close mush  -- This will close the outermost door (if chained)
    > !!!@door/close mush -- The third door (and so forth with more !'s)   
  
  See Also: @door, DOOR_PUSH, DOOR_OPEN, DOOR_LIST, DOOR_STATUS, DOOR_WRITING,
            DOOR_KICK, INTERNAL_DOORS, DOORED

[PREV] [TOP] [NEXT]

DOOR_KICK

  Command: @door/kick <player>|<door>
  
  This command will close the specified <door> that the current <player> is
  connected to.
  
  It will error out if the player is not a player or player is not connected.
  
  Example:
    > @door/kick TinyPlayer|mush
  
  This will close the door 'mush' from the player 'TinyPlayer'.
  
  See Also: @door, DOOR_PUSH, DOOR_OPEN, DOOR_LIST, DOOR_STATUS, DOOR_WRITING,
            DOOR_KICK, INTERNAL_DOORS, DOORED
  
[PREV] [TOP] [NEXT]

DOOR_LIST

  Command: @door/list [<door>]
  
  This command lists information with regards to which doors are configured
  on this system.
  
  @door/list without any arguments will return the same as just typing @door.
  @door/list <door> will return information for the named door only.
  
  Example:
    > @door/list
    > @door/list mush
  
  Continued in DOOR_LIST2 which will explain the details of the output.
  
  See Also: @door, DOOR_OPEN, DOOR_PUSH, DOOR_CLOSE, DOOR_STATUS, DOOR_WRITING,
            INTERNAL_DOORS, DOORED
  
[PREV] [TOP] [NEXT]

DOOR_LIST2

  Command: @door/list [<door>]
  .. DOOR_LIST continued
  
    NUM  NAME       STATUS      P  LOC
   (# 0) MUSH       OFFLINE    (0) #PLAYER
  
  The above is an example of information returned by @door/list.
  -  The number is the internal identifier for the given door-type.
  -  The STATUS will be one of OFFLINE, ONLINE, CLOSED, OPEN, INTERNAL
  -  'P' stands for 'permission' and means that you must have a bittype()
     of at least this high to use or see the door.
  -  'LOC' will be one of #PLAYER, #ROOM, #EXIT, #THING, #<DBREF>.
     If #PLAYER, then any player matching the required permission may open
     this door.
     If #ROOM, then any room that matches the required permission can trigger
     this door upon a player. #EXIT and #THING work in a similar way.
     If the value is a dbref then only the specified dbref can access the door
  
  See Also: @door, DOOR_PUSH, DOOR_OPEN, DOOR_CLOSE, DOOR_STATUS, DOOR_WRITING,
            INTERNAL_DOORS, DOORED, BITTYPE()
  
[PREV] [TOP] [NEXT]

DOOR_OPEN

  Command: @door/open <door> [=<arguments>]
  
  Use this command to open a connection to a named door. The door's status
  must be set to 'ONLINE' or already be 'OPEN' for this to work.
  
  Certain doors may require additional arguments before they can be opened.
  
  In addition some doors may have bitlevel requirements or may only be 
  triggered by certain people, rooms, or exits. Check @door/list for details.
  
  Example:
    > @door/open mush=RhostMUSH
  
  This will open door called 'mush' with the argument target 'RhostMUSH'
  
  See Also: @door, DOOR_PUSH, DOOR_CLOSE, DOOR_LIST, DOOR_STATUS, DOOR_WRITING,
            DOOR_KICK, INTERNAL_DOORS, DOORED, BITTYPE()
  
[PREV] [TOP] [NEXT]

DOOR_PUSH

  Command: @door/push <player>|<door> [=<arguments>]
  
  Use this command to push another player through the door with any specific
  arguments that you wish.  This is great for automated procedures.
  
  <player> must be a valid player, and must be connected.  If they are
  connected more than once, it uses the connection with the least idle time.
  
  Example:
    > @door/push TinyPlayer|mush=RhostMUSH
  
  This will open door called 'mush' with the argument target 'RhostMUSH' and
  push the player 'TinyPlayer' into it.
  
  See Also: @door, DOOR_PUSH, DOOR_CLOSE, DOOR_LIST, DOOR_STATUS, DOOR_WRITING,
            DOOR_KICK, INTERNAL_DOORS, DOORED, BITTYPE()

[PREV] [TOP] [NEXT]

DOOR_STATUS

  Command : @door/status <name> = <status>
  Note    : This switch is restricted to immortals only.
  
  Used to change the status of a door. Valid statuses are ONLINE, OFFLINE, and
  CLOSED. If CLOSED or OFFLINE is chosen then all existing connections are
  terminated.
  
  Example:
    > @door/status mush=online       -- Brings the door online
    > @door/status mush=closed       -- shutdowns the sockets for the door
    > @door/status mush=offline      -- Brings the door offline
  
  See Also: @door, DOOR_PUSH, DOOR_OPEN, DOOR_CLOSE, DOOR_LIST, DOOR_WRITING,
            DOOR_KICK, INTERNAL_DOORS, DOORED
  
[PREV] [TOP] [NEXT]

DOOR_WRITING

  
  API Version: 0.2
  
  The following is meant as a quick-guide to writing your own door modules.
  Examples and even the API may change after the writing of this document, and
  can be found by looked at http://lensman.the-wyvern.net/rhost/doors.html
  
  The door API is meant to be an easy to use way by which new doors can be
  created and plugged into the Mush.
  
  In essence only one function -MUST- be written, although for most doors up
  to 5 may need to be provided.
  
  The functions will be detailed on the next page. See DOOR_WRITING2
   
[PREV] [TOP] [NEXT]

DOOR_WRITING2

  These functions are defined as:
    typedef void (*doorInit_t)   (void);
    typedef void (*doorOpen_t)   (DESC *d, int nargs, char *cargs[], int id);
    typedef void (*doorClose_t)  (DESC *d);
    typedef void (*doorOutput_t) (DESC *d, char *pText);
    typedef void (*doorInput_t)  (DESC *d, char *pText);
  
  doorInit is called when the door is first registered with the mush.
  doorOpen is called when a request is made to open the door.
  doorClose is called when a request is made to close the door.
  doorOutput: Output is defined as text going from the mush through the door.
              As such this function is called when the user inputs some text
              that needs sending over through the door.
  doorInput : Input is defined as text going from the door through to the 
              mush.  As such this function is called when information comes 
              through the door for the player.
  
  See DOOR_WRITING3
  
[PREV] [TOP] [NEXT]

DOOR_WRITING3

  Once the functions are written to the above interface, they are registered
  with the mush by adding the following line to the end of door.c within the
  registerDoors function.
  
  addDoor(<name>, initFunc, openFunc, closeFunc, inputFunc, outputFunc, P, L);
  
  *Func should be the name of your implementation function. P is the 
  permission, or bittype level, at which this door should be usable. And L 
  should be one of PLAYER_e, ROOM_e, EXIT_e, or dbref. It corresponds to the
  LOC field on @door/list
  
  initFunc, closeFunc, inputFunc and outputFunc may all be null. If the 
  inputFunc and/or outputFunc is null then the mush will simply pass bytes 
  back and forth between the door and the player. This is most suited for a 
  'telnet' style protocol.
  
  For examples of door code, take a look at door_mush.c and door_mail.c, 
  included with your RhostMUSH.
  
[PREV] [TOP] [NEXT]

DOORED

  Flag: DOORED([R])  
  
  This is used in junction with the @door command.  This
  sets it so that you will receive no output from the MUSH while you
  are in the external door. (This can be overridden with wizard
  broadcasts for security/information reasons)
  
  See Also: @door
  
[PREV] [TOP] [NEXT]

drop

  Command: drop[/<switch>] <object>
           drop[/<switch>] <exit>
 
  The first form removes <object> from your inventory and puts it in your
  location, except for the following special cases: Dropping a STICKY thing
  sends it home, and dropping a thing in a room with a drop-to sends the thing
  to the drop-to location.
 
  The second form removes <exit> from your list of exits and adds it to the
  list of exits for the current location.  Anyone in the same location as
  you may then use the exit to travel to the exit's destination.  You can
  only drop exits when you own the location where you are dropping them.
 
  The following switch is recognized:
     /quiet   - Don't perform the @odrop/@adrop attributes on the dropped
                 object.  This switch only works if you control the object.
   
  'throw' is the same as 'drop'.
  
  See Also: get, @adrop, @drop, @odrop, DROP-TO, STICKY
  
[PREV] [TOP] [NEXT]

DROP-TOS

  Topic: DROP-TOS
 
  When the @link command is used on a room, it sets a drop-to location.  Any
  object dropped in the room (if it isn't STICKY) will go to that location.
  If the room is STICKY, the drop-to will be delayed until the last person in
  the room has left.
  
  See Also: @link, STICKY
  
[PREV] [TOP] [NEXT]

E()

  Function: e([<arg>])
  Returns the value of the numeric constant e to nine decimal places.
  
  If you specify an <arg> it takes that as the percision to the number of
  decimal places you want.  The value must be greater than zero, and less
  than the current maximum value specified as floating point precision.
  
  Please see:  @list options system 
   
  Example:
    > say e()
    You say "2.718281828"
  
  See Also: exp(), ln(), log(), power(), power10()
  
[PREV] [TOP] [NEXT]

edefault()

  Function:  edefault(<obj>/<attr>,<default case>)
 
  This function returns the evaluated value of <obj>/<attr>, as if
  retrieved via the get_eval() function, if the attribute exists and
  is readable by you. Otherwise, it evaluates the default case, and
  returns that. The default case is only evaluated if the attribute
  does not exist or cannot be read.
 
  Example:
    > &TEST me=You have lost [rand(10)] marbles.
    > say edefault(me/Test,You have no marbles.)
    You say "You have lost 6 marbles."
    > &TEST me
    > say edefault(me/Test,You have no marbles.)
    You say "You have no marbles."
  
  See Also:  get(), get_eval(), u(), default(), u2(), ueval(), objeval() 
  
[PREV] [TOP] [NEXT]

EDIT()

  Function: edit(<string>, <from>, <to> [[,<type>] [,<strict>]])
 
  This function edits <string>, replacing all occurrences of the substring
  <from> with the string <to>.  If <from> is '$', then <to> is appended to
  <string>, while if <from> is '^', then it is prepended.
  
  <type> has the following values that are allowed:
    1 - enable single edit (where it edits the first match no sequent matches)
  
  <strict> has the following values that are allowed:
    1 - strict mode will keep ansi alignment to original strings values.
    2 - raw mode will allow you to edit ansi markup in a string.
  
  Note: option 2 (raw mode) was the original method ansi worked.
   
  Examples:
    > say edit(This is a test,is,x)   
    You say "Thx x a test"
    > say edit(Atlantic,^,Trans)
    You say "TransAtlantic"
  
  See Also: @edit, editansi(), strip(), garble(), pedit(), chomp(), regedit()
  
[PREV] [TOP] [NEXT]

EDITANSI()

  Function: editansi(<string>, <search>, <replace> [,<search>, <replace>,...])
  
  This function will take a string, and replace all searched for ansi codes
  and replace them with the specified replaced ansi codes.  You may specify
  more than one search/replace segment for ansi codes, but they must always
  be in a paired set.
  
  The following logic works for the search and replace in order of priority:
    1.  If <search> is just ansi-normal (n), then it assumes you want an
        exact match on any character that has no previous encoding, and will
        replace with <replace> ALL encoding specified.
    2.  If <search> is an exact match, it substitutes <replace> overwriting
        all previous encoding.
    3.  If <search> is a FG color match only, it substitutes <replace> FG
        color and anything else in replacement encoding.
    4.  If <search> is a BG color match only, it substitutes <replace> BG
        color and anything else in replacement encoding.
    5.  If <search> is a special encoding (flash, normal, etc) it will
        replace anything in replacement encoding.
    6.  Specifying 'n' for any special encoding replacement will nullify 
        the special but will NOT nullify the color.  
    7.  Specifying 'n' for any color encoding replacement will nullify
        the color encoding but will NOT nullify the special encoding.
  
  The following ansi exclusions are allowed for search and replaces.
    H - anything NOT set hilite.
    I - anything NOT set inverse.
    U - anything NOT set underscore.
    F - anything NOT set flash.
    N - anything NOT using ansi colors.
  
  If these are specified in replace, it will strip those specified ansi
  special encodings. 
    
  Examples:
    > say editansi([ansi(hb,abc,n,def)],n,hr)
    You say "abcdef"    (abc is hilight blue, def is hilight red)
    > say editansi([ansi(hb,abc,n,def)],hb,hy)
    You say "abcdef"    (abc is hilight yellow, def is non-ansified)
    > say editansi([ansi(hb,abc,hg,xyz,n,def)],hb,y,hg,b)
    You say "abcxyzdef" (abc is yellow, xyz is blue, def is non-ansi)
  
  See Also: accents(), edit(), regedit(), pemit(), @edit

[PREV] [TOP] [NEXT]

EE()

  ee(<number> [, <precision>])
  
  The ee() function turns the number into an engineering value based on
  the specified precision.  If no precision is given, it defaults to 2.
  
  Example:
    say ee(123456789012345)
    You say "1.23E+14"
  
  See Also: mul(), fdiv(), strmath()

[PREV] [TOP] [NEXT]

ELEMENTPOS()

  Function: elementpos(<string>, <positions> [,<delim>])
  
  This function works a bit reverse of totpos() and like elements()
  but based on character position instead of word position.  You 
  may specify more than one position, and the position may be 
  repeated as many times as you want.  The position starts at '1'.
  A value less than 1 or larger than the length of the string is
  ignored.
  
  This function is ansi-aware.
  
  You may specify a null delimiter (default is a space).
  
  Example:
    > say elementpos(abcdefg,1 4)
    You say "a d"
    > say elementpos(abcdefg,1 4 7,)
    You say "adg"
  
  See Also: pos(), totpos(), elements(), elementsmux(), strip(),
            creplace()

[PREV] [TOP] [NEXT]

elements()

  Function: elements(<list of words>,<list of numbers>[[,<delim>][,<sep>]])
 
  This function returns the words in <list of words> that are in the
  positions specified by <list of numbers>. Optionally, a list delimiter
  other than a space can be separated.  This function does not assume a null
  to be a valid argument.  For that, use elementsmux().
 
  Examples:
    > say elements(Foo Ack Beep Moo Zot,2 4)
    You say "Ack Moo"
    > say elements(Foof|Ack|Beep|Moo,3 1,|)
    You say "Beep|Foof"
    > say elements(this is a test,2 4 2 2 2 2)
    You say "is test is is is is"
    > say elements(this@is@a@test,2 4 2 2 2 2,@)
    You say "is@test@is@is@is@is"
    > say elements(this@is@a@test,2 4 2 2 2 2,@,)
    You say "is test is is is is"
 
  See Also: extract(), extractword(), elementsmux(), elementpos()
  
[PREV] [TOP] [NEXT]

elementsmux()

  Function: elementsmux(<list of words>,<list of numbers>[[,<delim>][,<sep>]])
 
  This function returns the words in <list of words> that are in the
  positions specified by <list of numbers>. Optionally, a list delimiter
  other than a space can be separated.  This function assumes 'null' arguments
  are valid arguments while elements() does not.
 
  Examples:
    > say elementsmux(Foo Ack Beep Moo Zot,2 4)
    You say "Ack Moo"
    > say elementsmux(Foof|Ack|Beep|Moo,3 1,|)
    You say "Beep|Foof"
    > say elementsmux(this is a test,2 4 2 2 2 2)
    You say "is test is is is is"
    > say elementsmux(this@is@a@test,2 4 2 2 2 2,@)
    You say "is@test@is@is@is@is"
    > say elementsmux(this@is@a@test,2 4 2 2 2 2,@,)
    You say "is test is is is is"
 
  See Also: extract(), extractword(), elements(), elementpos()
  
  
[PREV] [TOP] [NEXT]

elist()

  Function: elist(<str>[,<phrase>[,<delim>[,<sep>[,<punctuation>[,<munge>]]]]])
  
  The elist function is used to return a list of words into an english
  recognizable format.  You may specify an output delimiter to use if
  you wish but it makes the format rather unique.  You may specify a separate
  punctuation instead of the default comma (,).  The punctuation may be
  more than one character.  You may specify the separator if not a space as 
  well.
  
  You can also supply a munging function to apply for each argument passed to
  elist.  So that if you passed in dbref#'s, you can munge to the name()
  function.  All arguments are passed as %0.  The order number of how they're
  passed is %1.
  
  Examples:
    > say elist(test)
    You say "test"
    > say elist(this test)
    You say "this and test"
    > say elist(this test again)
    You say "this, test, and again"
    > say elist(this test again,,,,;)
    You say "this; test; and again"
    > say elist(this test again,at least I think)
    You say "this, test, at least I think again"
    > say elist(one/two/three,what a life,/)
    You say "one, two, what a life three"
    > say elist(one/two/three,what a life,/,/)
    You say "one,/two,/what a life/three"
  
  See Also: iter(), citer(), nsiter(), list()
  
[PREV] [TOP] [NEXT]

elock()

  Function: elock(<object>[/<whichlock>], <victim> [,<type> [,<default>]])
  
  Checks if <victim> would pass the named lock on <object>.  Only the object's
  owner may test locks other than the default lock.
  
  Optional values are as follows:
    <type>    -- The argument (0-2) that you wish to pass as '%0' for 
                 customizable UseLock lock checks.  '0' is default, 1 is 
                 $commands only, 2 is ^listens only.  Valid values 0, 1, or 2.
                 This is only meaningful for UseLocks.
    <default> -- specify the default value if no lock found.  Defaults to '1'.
                 Valid values 0 or 1.
  
  Example:
    > @lock me/page=!*Twinklock
      Set.
    > say elock(me/pagelock,*twink)
      You say "0"
    > @unlock me/page
      Set.
    > say elock(me/pagelock,*twink)
      You say "1"
    > @unlock me/twink
      Set.
    > say elock(me/pagelock,*twink)
      You say "1"
    > say elock(me/pagelock,*twink,,0)
      You say "0"
  
  See Also: @lock, lock(), lockencode(), lockdecode(), lockcheck()
  
[PREV] [TOP] [NEXT]

EMIT()

  Function: emit(<text>)
  
  The emit() function returns 'text' to your location exactly as the @emit
  command does.  It follows all restrictions and permissions of @emit.
  The SIDEFX flag is required to use this function.
   
  Type @list options to see if this side-effect function is enabled.
   
  Examples:
    > say emit(boo!)
    boo!
    You say ""
  
  See Also: lemit(), pemit(), oemit(), @emit, SIDEEFFECTS
    
[PREV] [TOP] [NEXT]

ENACTOR

  Topic: ENACTOR
 
  The enactor is the object that caused an action list to be performed.
  So, the enactor of the Ahear action list is the player or object who
  said/emoted/etc the message that matched the Listen attribute, the
  enactor of the Apay attribute is the player who gave the object money, etc.
  The enactor of an attribute that is run by a @trigger command is the 
  object that ran the @trigger command.  The following substitutions can be
  performed in an action list to return information about the enactor:
 
    %# or [v(#)]           - Database number of the enactor
    %N/%n or [v(N)]/[v(n)] - Name of the enactor.
    %O/%o ...              - Objective pronoun for the enactor
                             (him her it them)
    %P/%p ...              - Possessive pronoun (his her its their)
    %S/%s ...              - Subjective pronoun (he she it they)
    %A/%a ...              - Absolute possessive pronoun (his hers its theirs)
  
  See Also: SUBSTITUTION
  
[PREV] [TOP] [NEXT]

ENCODE64()

  Function: encode64(<string>)
            decode64(<string>)
  
  encode64() returns <string> encoded using base-64 format.
  
  decode64() converts a base-64 encoded <string> back to its original form.
  
  Any invalid characters fed to the string will cause the entire string to be
  ignored.
  
  Examples:
    > say encode64(test 1 2 3)
    You say "dGVzdCAxIDIgMw=="
    > say decode64(dGVzdCAxIDIgMw==)
    You say "test 1 2 3"
  
  See Also: encrypt(), decrypt(), pack(), digest()
  
[PREV] [TOP] [NEXT]

ENCRYPT()

  Function: encrypt(<string>,<seed>)
  
  Returns an encrypted string based on the given seed.  The longer the seed,
  the better the password.  Due to cryptology laws around the world, this
  function can only be enabled with a compile-time option.
  
  This function may not be available outside of the United States.
  
  Example:
    > say encrypt(this is a test,a)
    You say "VJKUaKUaCaVGUV"
  
  See Also: decrypt(), encode64(), decode64(), digest()
  
[PREV] [TOP] [NEXT]

enter

  Command: enter[/<switch>] <object>
  The enter command is used to enter an object. Insides of objects are best
  used for vehicles, or storage spaces when you don't have a home (or even
  as a floating home).  In order to enter an object you must either own it or
  it must have its ENTER_OK flag set, and you must also pass the object's
  EnterLock (if it has one).
 
  The following switch is recognized:
     /quiet   - Don't perform the @oenter/@aenter or @oefail/@aefail
                attributes on the entered object, and don't perform the
                @oxleave attribute on your current location.  This switch
                only works if you control the object being entered.
 
  See Also: leave, @aefail, @aenter, @efail, @enter, @idesc, @lock, @oefail,
            @oenter, @oxleave, ENTER_OK
  
[PREV] [TOP] [NEXT]

ENTER_OK

  Flag: ENTER_OK(e)   
  
  If an object or person is ENTER_OK, other players may 
  enter the object or person by using 'enter <object/person>. Players
  must also have the ENTER_OK set if they wish to be able to receive 
  things given to them by other players via the 
  'give <player> = <object>'. 
  
  See Also: enter, give
  
[PREV] [TOP] [NEXT]

ENTRANCES()

  entrances([<object> [,<type> [,<begin> [,<end>]]]])
   
  With no arguments, the entrances() function returns a list of all
  exits, things, players, and rooms linked to your location, like
  @entrances. You can specify an object other than your current location
  with <object>. You can limit the type of objects found by specifying
  <type> as follows:
        a        all (default)
        e        exits
        t        things
        p        players
        r        rooms
  You can also limit the range of the dbrefs searched by giving <begin>
  and <end>.  This function is computationally expensive and costs the same
  as @find. 
  
  Example:
    > say entrances(here) 
    You say "#123 #456"
  
  See Also: @entrances, lrooms(), lexits(), lcon() 
  
[PREV] [TOP] [NEXT]

eq()

  Function: eq(<integer1>,<integer2>)
 
  Takes two integers, and returns 1 if they are equal and 0 if they are not.
  Warning: passing anything but integers will produce unexpected results,
  as non-numeric strings usually are treated as numeric 0.
 
  Example:
    > say eq(1,-1)
    You say "0"
    > say eq(5,5)
    You say "1"
    > say eq(foo, bar)
    You say "1"
  
  See Also: lt(), lte(), gte(), gt(), neq()
  
[PREV] [TOP] [NEXT]

ERROR()

  Function: error([<target>])
  
  This function takes either no arguments or an optional target player.  
  It returns one of the random error messages in a standard format.  
  If you, or the target specified, have the toggle 'VANILLA_ERRORS' 
  enabled, you will only get the default error message.
  
  If a target is specified, you must control the target player, or
  the target player must exist.  If neither of these conditions are
  met, it defaults back to the enactor (or you) for how the error
  processes.
  
  Example:
    > say error()
    You say "Huh?  (Type 'help' for help.)"
    > say error(*tinyplayer)
    You say "Huh?  (Type 'help' for help.)"
    
  See Also: @toggle
  
[PREV] [TOP] [NEXT]

ESCAPE()

  Function: escape(<string>)
 
  Returns <string> after adding an escape character (\) at the start of the
  string and also before each of the characters %;[]{}\ that appear in the
  string.  This prevents strings entered by players from causing undesired
  side effects when used, such as making your object perform unintended
  commands or give out information to which you have access.  Note that this
  function is only needed when the resulting string is to be passed through
  the @force command or be used as an attribute for an object (like the
  success message for a mail message object).  This function has the 
  advantage over the secure() function in that the string the user sees
  after evaluating it is the same as the original string.
 
  Example:
    > say escape(Sneak a peak at Wiz's desc... [get($1/desc)])
    You say "\Sneak a peek at Wiz's desc... \[get\(#1/desc\)\]"
 
  Note: 'say escape(Sneak a peek at Wiz's desc... [get(#1/desc)])' does not
  produce the expected result because the argument is evaluated BEFORE being
  processed by escape(), therefore the [get()] call has already been
  performed.
  
  See Also: secure(), securex(), escapex(), esclist(), unesclist()
  
[PREV] [TOP] [NEXT]

ESCAPEX()

  Function: escapex(<string> [,<omission>])
  
  This functions exactly like escape(), except you may specify what characters
  you wish to omit from being escaped through <omition>.  The optional special
  characters can be used when looking to escape out fields:
     f - omit the first escape (backslash) from the string.
     a - omit all forms of ansi subsitutions from the string.
  
  Example:
    > say escapex(Hey, Sneak a peak at Wiz's desc... [get($1/desc)],\[\])
    You say "\Hey \,Sneak a peek at Wiz's desc... [get\(#1/desc\)]"
  
  See Also: escape(), secure(), securex(), esclist(), unesclist()
  
[PREV] [TOP] [NEXT]

ESCLIST()

  Function: esclist(<list of characters to escape>|<string>)
  
  This function takes an optional list of characters you wish to escape and
  then escapes them (via adding a \ character before it) to every character
  that you specified.  This is intended to be used with weird escape 
  situations like calling external sources.
  
  To escape out the '|' character, have it as the last character.  Ergo,
  something like: esclist(abcd||mystring).  This says escape out the '|'
  then break the list on the next '|'.
    
  Examples:
    > @va me=Test: 'A string' and "anoter string", I say.
    Set.
    > say esclist('",|[v(va)])
    You say "Test: \'A string\' and \"anoter string\"\, I say."
    > say esclist('|[v(va)])
    You say "Test: \'A string\' and "anoter string", I say."
  
  See Also: escape(), escapex(), unesclist(), esclist(), unesclist()
  
[PREV] [TOP] [NEXT]

EVAL()

  Function: eval(<string>)
            eval(<object>,<attribute>)
  
  The first form of this function will evaluate the passed string.  All 
  substitutions are evaluated and functions called with proper permissions.
  
  The second form of this function works similiar to the get_eval() function.
  
  Examples:
    > say eval(1 plus 1 equals [add(1,1)])
    You say "1 plus 1 equals 2"
    > @va me=1+1=[add(1,1)]
    Set.
    > say eval(me,va)
    You say "1+1=2"
  
  See Also: s(), get_eval(), get(), u(), u2(), zfun()
  
[PREV] [TOP] [NEXT]

examine

  Command: examine[/<switches>] <object>[/<wild-attrib>]
  
  Available switches are on: help examine4
  
  Displays all available information about <object>.  <object> may be an
  object, 'me' or 'here'. You must control the object to examine it, or it
  must be set VISUAL.  If you do not own the object, you will just see the
  name of the object's owner, and optionally any public attributes and 
  attributes owned by you set on the object.
 
  If an attribute is owned by a player other than the owner of the object,
  the number of the attribute owner is shown in parentheses immediately
  following the attribute name.  Flag letters may appear in parentheses also,
  to indicate the status of the attribute.  The list of flag letters that
  show up is shown in 'help examine2'
  
{ 'help examine2' for more }
  
[PREV] [TOP] [NEXT]

examine2

  The following flag letters show up with attributes when examined:
    + - The attribute is locked, it does not change ownership when the
        object is @chowned and may not be modified.
    $ - The attribute is not checked when looking for $-commands.  Note
        that the predefined attributes DESC, IDESC, ODESC, FAIL, OFAIL,
        SUCC, OSUCC, DROP, ODROP, SEX, and CHARGES are never checked.
    I - This attribute is not inherited by children of the object.
    V - The attribute is visible to anyone who examines you.  Note that
        the predefined attributes DESC, SEX, and LAST are always VISUAL.
    N - The attribute will not be @cloned.
    n - The attribute will not evaluate %0-%9 ($commands only)
    s - The attribute can not be removed/wiped.
    u - The attribute is set up to handle attribute-based uselocks.
    M - The attribute is dark/inaccessable to anyone below wizard.
    p - The attribute is INVISIBLE but accessable to anyone below wizard.
    G - The attribute is modifiable by #1 only.
    i - The attribute is modifiable by Immortal or higher only.
    W - The attribute is modifiable by Wizard (Royalty) or higher only.
    a - The attribute is modifiable by Councilor (admin) or higher only.
    B - The attribute is modifiable by Architect or higher only.
    g - The attribute is modifiable by Guildmaster or higher only.
  
{ 'help examine3' for more }
  
[PREV] [TOP] [NEXT]

examine3

  If expanded looks are enabled (@list options to verify), you may also
  see global attributes on attributes.  These are surrounded by []'s.
  The following global attributes can exist:
    + - The attribute is locked, it does not change ownership when the
        object is @chowned and may not be modified.
    $ - The attribute is not checked when looking for $-commands.  Note
        that the predefined attributes DESC, IDESC, ODESC, FAIL, OFAIL,
        SUCC, OSUCC, DROP, ODROP, SEX, and CHARGES are never checked.
    I - This attribute is not inherited by children of the object.
    V - The attribute is visible to anyone who examines you.  Note that
        the predefined attributes DESC, SEX, and LAST are always VISUAL.
    N - The attribute will not be @cloned.
    n - The attribute will not evaluate %0-%9 ($commands only)
    s - The attribute can not be removed/wiped.
    u - The attribute is set up to handle attribute-based uselocks.
    M - The attribute is dark/inaccessable to anyone below wizard.
    p - The attribute is INVISIBLE but accessable to anyone below wizard.
    G - The attribute is modifiable by #1 only.
    i - The attribute is modifiable by Immortal or higher only.
    W - The attribute is modifiable by Wizard (Royalty) or higher only.
    a - The attribute is modifiable by Councilor (admin) or higher only.
    B - The attribute is modifiable by Architect or higher only.
    g - The attribute is modifiable by Guildmaster or higher only.
  
{ 'help examine4' for more }
[PREV] [TOP] [NEXT]

examine4

  If you specify a wildcarded attribute name, then only those attributes
  that match are shown.  So, 'exam me/v?' will show all your attributes that
  start with v and are two characters long.
 
  The following switches are available:
     /brief   - Show everything but the attributes.
     /quick   - When examining an object you don't control, show only the
                owner's name. 
     /full    - When examining an object you don't control, show any public
                attributes set on the object in addition to the owner's name.
     /parent  - Includes attributes that are not present on the object itself
                but which are inherited from the object's parent.  This only
                works if you have permission to see it.
     /tree    - Examine per Penn-Tree output separating trees with '`'.
                Only useful with using #obj/attr format.
     /regexp  - Use regular expression for wildcard matches.
     /cluster - Examines the specified cluster (and all members).
  
  
  Example:
    > examine me
      -- Output of examine of yourself
    > examine me/*foo*
      -- Output of just all attribs matching *foo*
  
  See Also: look, @decompile, VISUAL, ATTRIBUTE OWNERSHIP, FLAG LIST,
            ATTRIBUTE FLAGS, lattr(), cluster_lattr()
  
  
[PREV] [TOP] [NEXT]

EXIT()

  Function: exit(<object>)
 
  Exit returns the first exit on the list of exits in the object.  Dark exits
  are not listed, unless you own the object.  Unlike LEXITS(), this function
  does not provide information about exits in parent objects.
  
  Example:
    > say exit(here)
    You say "#123"
   
  See Also: con(), lcon(), lexits(), next()
  
[PREV] [TOP] [NEXT]

EXITS

  Topic: EXITS (E)
 
  An exit links one location to another location, providing a way to travel
  on the MUSH.  Although normally used to link rooms together, exits can be
  made to and from players and objects.
 
  You may pick up exits that you own, and drop exits into locations that
  you own.  When you pick up or drop an exit, anyone in the exit's new
  location may use the exit and travel to its destination.
 
  If an exit is set DARK it will not show up in the list of obvious exits in
  a room.
  
  See Also: @link, @open
  
[PREV] [TOP] [NEXT]

EXP()

  Function: exp(<power>)
 
  Returns the result of raising the numeric constant e to <power>.
  <power> may be a floating point number, and a floating point result
  is returned.
 
  Examples: 
    > say exp(0)
    You say "1"
    > say exp(1)
    You say "2.718282"
    > say exp(2)
    You say "7.389056"
  
  See Also: e(), log(), ln(), power(), power10()
  
[PREV] [TOP] [NEXT]

EXTANSI TOGGLE

  Toggle: EXTANSI
  
  When this toggle is set on the target, that target is allowed to use
  extended ansi (ie: the actual ansi codes) in the @ansiname attribute,
  thereby, allowing multi-color names.  This is done through the command
  '@extansi' in combination with this toggle.  
  
  If you wish pose, say, and @wall to ansifi your name, set the VARIABLE
  @toggle on yourself.
  
  Note: The name of the item in '@extansi' MUST match the name that 
        was given by @name.
  
  See Also: @extansi, ansi()
  
[PREV] [TOP] [NEXT]

EXTRACT()

  Function: extract(<string>, <first>, <length>[, <delim>])
 
  Extract returns a string of length words, starting with the first 
  word. Unlike letters, the first word in a string is number 1, 
  instead of 0.
 
  <delim> may be used to specify a delimiter other than a space.
  
  Examples:
    > say extract(This is a really neat example, 4, 2)
    You say "really neat"
    > say extract(Another@funky@test@for@extract, 3, 3, @)
    You say "test@for@extract" 
  
  See Also: extractword(), index(), insert(), ldelete(), replace(), 
            randextract()
  
[PREV] [TOP] [NEXT]

EXTRACTWORD()

  Function: extractword(<string>, <first>, <length>[, <delim>], <sep>] ,<del>])
  
  Extractword returns a string of length words, starting with the first
  word.  This works effectively like extract(), however, the deliminiter 
  <delim> and separator <sep> can be multi-character.  In addition, the
  separator may also contain ansi or special characters.
  
  If you specify the <del> toggle to '1' it assumes delextract() compatibility
  where the words choosen are all the words EXCEPT the range specified.
   
  Unlike extract(), extractword() is also ansi-aware.
  
  The default <delim> is a space.  The default <sep> is whatever <delim>
  is defined as.
  
  Examples:
    > say extractword(This is a really neat example, 4, 2)
    You say "really neat"
    > say extractword(a@@@multi@@@char@@@delimiter, 2, 2, @@@)
    You say "multi@@@char"
    > say extractword(a@@@multi@@@char@@@delimiter, 2, 2, @@@,%b)
    You say "multi char"
  
  See Also: extract(), extractword(), index(), insert(), ldelete(), replace(),
            randextract() 
  
[PREV] [TOP] [NEXT]

FAILURE

  Topic: FAILURE  
 
  You fail to use a player or a thing when you cannot take it (because it's
  lock fails).  You fail to use an exit when you cannot go through it
  (because it is unlinked or locked). You fail to use a room when you fail
  to look around (because it's locked).
  
  See Also: get, look, @afail, @fail, @lock, @ofail
  
[PREV] [TOP] [NEXT]

FBETWEEN()

  Function: fbetween(<value1>,<value2>,<number>[,<boolean>])
  
  This function will return TRUE (1) if <number> is between
  the values <value1> and <value2>.  If you specify the 
  optional boolean '1', it will see if the <number> is 
  between OR the values <value1> and <value2>.  This works
  like between() but handles floating point numbers.  This
  will round the values to the nearest significant 6th digit.
  
  Example:
    > say fbetween(10.01,15.01,14.5)
    You say "1"
    > say fbetween(10.5,15.20,15.20)
    You say "0"
    > say fbetween(10.5,15.20,15.20,1)
    You say "1"
  
  See Also: between(), fbound(), bound(), gt(), lt(), gte(), lte()

[PREV] [TOP] [NEXT]

FBOUND()

  Function: fbound(<number>,<min-value>[,<max-value>])
  
  This function will return <number> if greater than min-value, else it will 
  return min-value.  If max-value exists, and number is greater than max-value
  then max-value is used.  This works like bound() but takes floating point
  values.  All floating point values are rounded to the 6th digit.
  
  Example:
    > say fbound(8.1,12.1)
    You say "12.1"
    > say fbound(8.1,12.1,10.1)
    You say "10.1"
  
  See Also: between(), fbetween(), bound(), gt(), lt(), gte(), lte()
  
[PREV] [TOP] [NEXT]

FDIV()

  Function: fdiv(<number1>,<number2>[,<numberN>]...)
   
  Returns the floating point quotient from dividing <number1> by <number2>.
  
  Numbers may be floating point numbers, and a floating point result is
  returned.
   
  Results:
    > say fdiv(15,3)
    You say "5"
    > say fdiv(16,3)
    You say "5.333333"
    > say fdiv(17,3)
    You say "5.666667"
    > say fdiv(18,3)
    You say "6"
    > say fdiv(-17,3)
    You say "-5.666667"
    > say fdiv(10,3.5)
    You say "2.857143"
  
  See Also: add(), div(), mod(), mul(), round(), sub(), trunc()
 
[PREV] [TOP] [NEXT]

filter()

  Function: filter([<obj>/]<attr>,<list>[,<delim>[,<sep>][,<arg1>,...,<argN>]])
  
  This function evaluates the contents of <attr> for each element of <list>,
  passing it in as %0.  A <delimiter>-separated list is returned of those
  elements for which the evaluation returns the value 1.  You may specify an
  optional output separator.
  
  <delim> may be used to specify a delimiter other than space.
  
  You may specify 26 arguments to pass as %1 (or v(1)) though v(25) or may
  utilize the shift() function.
  
  Examples:
    > &IS_ODD object=mod(%0,2)
    > say filter(object/is_odd,1 2 3 4 5)
    You say "1 3 5"
    > say filter(object/is_odd,1@2@3@4@5,@)
    You say "1@3@5"
    > say filter(object/is_odd,1@2@3@4@5,@,|)
    You say "1|3|5"
  
  See Also: u(), map(), fold(), citer(), nsiter(), munge(), list(), sortlist()
  
[PREV] [TOP] [NEXT]

findable()

  Function: findable(<object>,<victim>)
   
  This function returns 1 if <object> can locate <victim>, or 0, if
  it cannot. This function takes into account all permissions and
  locational limitations.
  
  Example:
    > say findable(me,me)
    You say "1"
   
  See Also: loc(), where(), visible(), sees()
  
[PREV] [TOP] [NEXT]

FIRST()

  Function: first(<string>[, <delim> [, <key>]])
 
  Returns the first word of a string, that is, everything to the left
  of the first space in the string, or the entire string if there are
  no spaces in the string.
  
  <delim> may be used to specify a word delimiter other than a space.
  
  <key> may be specified as '1' to allow first() to be ansi-aware.
 
  Example:
    > say first(This is a test)
    You say "This"
    > say first(Would you like coffee\, or perhaps tea)
    You say "Would"
    > say first(List&with&nonstandard&delimiters,&)
    You say "List"
  
  See Also: rest(), before(), after(), extract(), extractword()
  
[PREV] [TOP] [NEXT]

FIRSTOF()

  Function: ofparse(<type>, [<eval1> [,<eval2> ... <evalN or delim>]])

  Type 1&3: ofparse(<type>,[<eval1> ,<eval2> ... <evalN>], <default>)
  Type 2&4: ofparse(<type>,[<eval1> ,<eval2> ... <evalN>], <output separator>)
  Type 5&7: ofparse(<type>,[<eval1> ,<eval2> ... <evalN>], <default>)
  Type 6&8: ofparse(<type>,[<eval1> ,<eval2> ... <evalN>], <output separator>)
  
  This function will take each <eval> and returns it based on the <type>.
  
  The following types exist:
    1  -- Issue a firstof().  Essentially return the first <eval> that is
          a true boolean.  This stops evaluation on first true <eval>.
          The <default> is returned if no evals are met.  The <default>
          is the assumed argument if only passed a single argument.
    2  -- Issue an allof().  Essentially returning every <eval> that is
          a true boolean.  This evaluates every argument.
    3  -- This is the reverse of '1'.  It returns the first <eval> that
          is a false boolean.  IT stops evaluation on first false <eval>.
          This again assumes <default> if no other arguments.
    4  -- This is the reverse of '2'.  It returns every false <eval>
          boolean. This evaluates every argument.
    5  -- Issue a strfirstof().  Essentially returns the first <eval> that
          is a non-null string.  This stops evaluation on first non-null
          <eval>.
    6  -- Issues a strallof().  Essentially returns every <eval> that is
          a non-null string.  This evaluates everyu argument.
    7  -- This is the reverse of '5'.  It essentially will either return
          a null or the default value.
    8  -- This is the reverse of '6'.  It essentially will return
          a list of nulls if you have such in your list.  This evaluates
          every argument.
  
  For PennMUSH function lineup:
      firstof(x,y)    == ofparse(1,x,y)
      allof(x,y,z)    == ofparse(2,x,y,z)
      strfirstof(x,y) == ofparse(5,x,y)
      strallof(x,y,z) == ofparse(6,x,y,z)
  
{ see 'help ofparse2' for examples }

[PREV] [TOP] [NEXT]

FLAG ALIASES

  Topic: FLAG ALIASES
  
  The following flags have aliases to be compatible with either earlier 
  versions of RhostMUSH or with other codebases.
  
     NO_SPOOF     - NOSPOOF                  NO_COMMAND   - NOCOMMAND
     NO_FLASH     - NOFLASH                  NO_SPOOF     - NOSPOOF         
     NO_UNDERLINE - NOUNDERLINE              
     
[PREV] [TOP] [NEXT]

FLAG LIST

  Topic: FLAG LIST
 
  Flag  Title        Flag  Title           Flag  Title      Flag  Title
  -------------------------------------------------------------------------
    A - ABODE          L - LINK_OK           X - FREE         m - MYOPIC
    B - ARCHITECT      M - MONITOR           Y - PARENT_OK    n - AUDIBLE
    C - CHOWN_OK       N - NO_SPOOF          a - COUNCILOR    o - NO_TEL
    D - DARK           O - OPAQUE            b - CLOAK        p - PUPPET
    E - EXIT           P - PLAYER            c - CONNECTED    q - REQUIRE_TREES
    F - FLOATING       Q - QUIET             d - DESTROY_OK   r - ROBOT
    G - GOING          R - ROOM              e - ENTER_OK     s - SAFE 
    H - HAVEN          S - STICKY            f - FUBAR        t - TERSE      
    I - INHERIT        T - TRACE/TRANSPARENT g - GUILDMASTER  v - VERBOSE
    J - JUMP_OK        U - UNFINDABLE        h - HALTED       w - NO_WALLS
    K - KEY            V - VISUAL            i - IMMORTAL     x - SLAVE   
    ~ - INDESTRUCTIBLE W - ROYALTY           l - LIGHT        y - NO_YELL    
    = - BYEROOM        < - ANSI              > - ANSICOLOR    z - CONTROL_OK
    - - NO_FLASH
 
  See Also: flag list2, attribute flags
  
  For information on a particular flag, type 'help <flagname>'.
  If you do not receive the expected result, try: 'help <flagname> flag'
  
[PREV] [TOP] [NEXT]

FLAG LIST2

  Topic: FLAG LIST2
   
  This is a list of flags in the secondary flags field, they are surrounded
  by []'s when you look at them.
   
    D - DOORED         a - AUDITORIUM     s - SIDEFX
    I - IC             c - NO_COMMAND     y - ZONEPARENT  
    P - PRIVATE        f - SHOWFAILCMD    z - ZONECONTENTS
    T - TELOK          g - BLIND          t - XTERMCOLOR
    X - COMBAT         o - BOUNCE
    Z - ZONEMASTER     u - NO_UNDERLINE
  
    0 - MARKER0        1 - MARKER1        2 - MARKER2        3 - MARKER3
    4 - MARKER4        5 - MARKER5        6 - MARKER6        7 - MARKER7
    8 - MARKER8        9 - MARKER9        $ - COMMANDS
  
  See Also: flag list, attribute flags, flag aliases
  
  For information on a particular flag, type 'help <flagname>'.
  If you do not receive the expected result, try: 'help <flagname> flag'
  
[PREV] [TOP] [NEXT]

FLAGS

  Topic: FLAGS
 
  Everything in the universe of this MUSH (Rooms, Exits, Things, Players,
  etc) are represented in the same way at the program level.  A room merely
  has the room flag set and a player has the player flag set.  In addition,
  flags also give objects abilities or qualities.  For instance, a wizard
  has the wizard flag set.  That is what lets the program know he may use
  wizard abilities.  An object or room may have the dark flag set. In the
  case of an object, this makes the object invisible to normal eye-sight.
  In the case of a room, the room becomes too dark to see other objects or
  players.  To get a list of the flags that are available, type '@list flags'
  or 'help flag list'. For more specific information on a particular flag,
  request help on the flag's name, as in 'help ENTER_OK'.
  
  See Also: FLAG LIST
  
[PREV] [TOP] [NEXT]

FLAGS()

  Function: flags(<object>[/<attribute>])
 
  Flags returns a string consisting of the flags attached to the 
  object. The string is, however, just one word.  Note that @switch
  is case-INsensitive.  i.e. p=P as far as it is concerned.  I wish
  that P=NP....
  
  You may also do wildcard flags() matches on attributes.  It will
  only return the first match it finds.  To see what the flag 
  letters are for the attribute flags, see 'help ATTRIBUTE FLAGS'.
  
  Example:
    > say flags(me)
    You say "Pc"
    > say flags(me/desc)
    You say "p"
    > say flags(me/asdfadsfasdfaf)
    You say ""
  
  See Also: lflags(), hasflag()
  
[PREV] [TOP] [NEXT]

FLIP()

  Function: flip(<string>)
 
  Reverses the order of the characters of <string>.
 
  Examples:
    > say flip(This is a test)
    You say "tset a si sihT"
    > say flip(This is a test, Really...)
    You say "...yllaeR ,tset a si sihT"
    > say flip(A man, a plan, a canal -- Panama!)
    You say "!amanaP -- lanac a ,nalp a ,nam A"
  
  See Also: revwords()
  
[PREV] [TOP] [NEXT]

FLOATING

  Flag: FLOATING(F) 
  
  If a room is set floating, you will not be notified every 10 
  minutes or so that you have a disconnected room.
  
  If the player is set FLOATING, then they will receive no floating 
  messages.
 
  If master-room exits are set FLOATING, then they will not be displayed
  in the global exit lists on rooms you enter.
   
  See Also: NOTIFY_LINK
  
[PREV] [TOP] [NEXT]

FLOOR()

  Function: floor(<number>)
 
  Returns the largest integer less than or equal to <number>.  <number> may be
  a floating point number, and an integer result is returned.
 
  Examples:
    > say floor(5)
    You say "5"
    > say floor(5.2)
    You say "5"
    > say floor(5.8)
    You say "5"
    > say floor(-5)
    You say "-5"
    > say floor(-5.2)
    You say "-6"
   
  See Also: ceil(), div(), mod(), round(), trunc()
  
[PREV] [TOP] [NEXT]

FLOORDIV()

  Function: floordiv(<number1>,<number2>)
   
  Returns the integer quotient from dividing <number1> by <number2>.
   
  However, integer division for the case where either <integer1> or
  <integer2> is negative is defined in a specific way -- by choosing
  the largest integer that is less than or equal to the algebraic
  quotient. If <integer1> and <integer2> are the same sign, then
  idiv() and floordiv() are equivalent.
   
  For example, division of -9 by 5 would give -2 by this definition
  instead of -1. idiv() would return -1. floordiv() would return -2.
  The floordiv() function goes with the mod() function.
   
  floordiv(x,y)*y + mod(x,y) ==> x
   
  Examples:
    > say floordiv(17,3)
    You say "5"
    > say floordiv(18,3)
    You say "6"
    > say floordiv(-17,3)
    You say "-6"
   
  See Also: fdiv(), div(), mul(), sub(), mod()
  
[PREV] [TOP] [NEXT]

FMOD()

  Function: fmod(<double1>,<double2>[,<doubleN>]...)
   
  Returns the floating remainder from dividing <double1> by <double2>.
  This works just like mod(), except it takes floating point numbers
  instead of integers.
  
  You may specify more than two values.
   
  Example:
    > say fmod(15.1,3.1)
    You say "2.7"
    > say fmod(16.1,3.1)
    You say "0.6"
    > say fmod(17.1,3.1)
    You say "1.6"
    > say fmod(18.1,3.1)
    You say "2.6"
  
  See Also: add(), fdiv(), div(), mul(), round(), sub(), trunc(), mod()
  
[PREV] [TOP] [NEXT]

fold()

  Function: fold([<obj>/]<attr>, <list>[, <base-case>[, <delim>])
  
  This function iteratively processes a list through a function, feeding
  the result of one step into the next step as %0, passing in the next element
  from the list as %1.
  
  If a base case is provided, it is used as the initial %0.  If not, the first
  list element is passed as %0 and the second is passed as %1, and subsequent
  iterations proceed normally.
  
  <delimiter> may be used to specify a delimiter other than space, but you
  must specify a base case in order to specify the delimiter.
 
  Examples:
    > &REP_NUM object=[%0][repeat(%1,%1)]
    > say fold(object/rep_num,1 2 3 4 5,->)
    You say "->122333444455555"
    > &ADD_NUMS object=add(%0,%1)
    > say fold(object/add_nums,1 2 3 4 5)
    You say "15"
  
  See Also: u(), iter(), map(), filter(), citer(), nsiter(), list()
  
[PREV] [TOP] [NEXT]

folder

  The folder command allows you to work with mail folders.  For further
  information on mail, see 'help mail'.  For general information about mail
  folders, see 'help mail folders'.
   
  The folder command takes various switches to perform the various folder
  sub-commands, as in: 
     folder/create
   
  To get help on a particular folder sub-command, enter:
     help folder <sub-command>
  
  To get a list of all commands and a short syntax and description, enter:
     help folder cmdlist
  
  where <sub-command> is one of the following sub-commands:
     change     cshare     current     create     delete     list      move   
     rename     share      cmdlist
  
[PREV] [TOP] [NEXT]

folder change

  Command: folder/change [<folder>]
  
  Change the current folder to <folder>.  If no folder is specified, your
  current folder is reset to nothing.
 
  Examples:
    > folder/change urgent
    > folder/change
  
  See Also: folder list
  
[PREV] [TOP] [NEXT]

folder cmdlist

  Topic: folder quick-reference help
  
  folder/change [<folder>]          - Either resets your folder (if 
                                      nothing specified) or will change to
                                      the specified folder.
  folder/cshare                     - Will display current folders shared.
  folder/current                    - Will display your current folder.
  folder/create [<folder>]          - Will create a user-named folder.  The
                                      folder name has to be alphanumeric.
  folder/delete [<folder>]          - Will delete the given folder.
  folder/list                       - Will list all of your current folders.
  folder/move <arg>=<from>,<to>     - Will move the specified mail into the
                                      target folder from the specified folder.
  folder/rename <folder>=<newname>  - Will rename the folder to the new name.
  folder/share [<folder>]           - Will share a given folder to the people
                                      matched in your mail/share.
  
  See Also: folder
  
[PREV] [TOP] [NEXT]

folder create

  Command: folder/create <folder name>
  
  Create a folder with <folder name> as the name.  Folder names may be up
  to 20 characters and may not have spaces in them.  Folder names must
  be alphanumeric.
   
  Example:
    > folder/create loveletters
  
  See Also: folder list, folder share
  
[PREV] [TOP] [NEXT]

folder cshare

  Command: folder/cshare
  
  This command will check your share folder(s).  Any folders you have marked
  for sharing will be displayed.
 
  See Also: folder share
  
[PREV] [TOP] [NEXT]

folder current

  Command: folder/current
  
  This command reports your current folder.
  
  See Also: folder list, folder cshare
  
[PREV] [TOP] [NEXT]

folder delete

  Command: folder/delete <folder name>
  
  This will delete <folder name>.  You may only delete empty folders.
   
  Example:
    > folder/delete love-letters
[PREV] [TOP] [NEXT]

folder list

  Command: folder/list
  
  List all your folders.
  
  See Also: folder share, folder cshare
  
[PREV] [TOP] [NEXT]

folder move

  Command: folder/move all=<from>,<to>
           folder/move <# list>=<from>,<to>
           folder/move <dbref#>=<from>,<to>
           folder/move <player>=<from>,<to>
   
  You may move all or specified messages from one folder to another. 'all'
  indicates to move all messages. <# list> refers to a list of message numbers
  separated by spaces (or just one message number). <player> refers to 
  the player name of someone who sent you mail. <dbref#> refers to the dbref #
  of someone who sent you mail. <from> indicates the source folder name, while
  <to> indicates the destination folder name.  Only message numbers may be
  listed (not players, etc.), and you may not combine the different types
  (e.g. message numbers and a player).
   
  Examples:
    > folder/move all=tinypal,allfriends
    > folder/move 5=incoming,important
    > folder/move wizard=incoming,urgent
    > folder/move 2 4=urgent,completed
    > folder/move #12345=mystery,solved
  
  See Also: folder share, mail mark, mail save, folder list
  
[PREV] [TOP] [NEXT]

folder rename

  Command: folder/rename <original name>=<new name>
  
  Rename a folder from <original name> to <new name>.
   
  Example:
    > folder/rename love-letters=personal
  
  See Also: folder list
  
[PREV] [TOP] [NEXT]

folder share

  Command: folder/share [<folder>]
  
  This command is only of use in conjunction with the mail/share command. If
  you have enabled others to check your mail with the mail/share command, those
  people who pass the share lock can only check the folder specified in the
  folder/share command.  If you have mail/share set, but no share folder
  set, anyone passing the mail/share can do a mail/number or mail/check on
  any of your folders.  If you do not specify a folder on the folder/share
  command, the share folder will be reset.
   
  Examples:
    > folder/share jokes
    > folder/share
  
  See Also: mail share, mail number, mail check, folder list
 
[PREV] [TOP] [NEXT]

FOLDERCURRENT()

  Function: foldercurrent(<player> [,<type>])
  
  This function lists the current folder of the target.  The following
  types exist.
     0 - this lists their current folder (default)
     1 - this lists their current share folder.
  
  See Also: folder, folderlist()

[PREV] [TOP] [NEXT]

FOLDERLIST()

  Function: folderlist(<player>)
  
  Returns all the folders that the target player has. 
  You must control target to see their folder list.
  
  See Also: folder, foldercurrent()

[PREV] [TOP] [NEXT]

FOREACH()

  Function: foreach([<object>/]<attribute>,<string>[,<begin>, <end> [,<ansi>]])
   
  Each character in <string> has the user-defined function of the first
  argument performed on it; the character is passed to the function as
  %0. The position of the argument is passed as %1.  The results are 
  concatenated. If <begin> and <end> are specified, only the characters 
  between <begin> and <end> are parsed, other characters are concatenated 
  as they are. This allows a rudimentary form of tokens and speeds up 
  the evaluation greatly if tokenizing is your purpose.
  
  If you specify <ansi> as '1', then specify <begin> and <end> as the special 
  string '@@' to specify to ignore the <begin> and <end> values.  Just putting
  nulls (empty values) there will assume null begin and end values and may
  not return the result you are wishing for.  Due to the higher than normal
  overhead, ansi-awareness in this function is not the default.
   
  Examples:
    > &add_one me=[add(%0,1)]
    > &ansi me=-%0-
    Set.
    > say [foreach(add_one, 54321)]
    You say, "65432"
    > &add_one me=[add(%0,1)]
    Set.
    > say [foreach(add_one, This adds #0# to numbers in this string,#,#)]
    You say, "This adds 1 to numbers in this string."
    > say [foreach(ansi,ansi(hr,r,hb,b,hc,c,hg,g),@@,@@,1)]
    You say "-r--b--c--g-"  (r is red, b is blue, c is cyan, g is green)
    
  See Also: @dolist, iter(), map(), citer(), nsiter(), list()
  
[PREV] [TOP] [NEXT]

formatdesc

  All NON-ACTION attributes allowed formatting are in: help attributes
  
  Attribute formatting can be accomplished multiple ways.  First, there is
  a generic local 'format' for most @-attributes.  To process this format,
  you need to set an attribute of the name 'format<attr>' on the target
  (or parent, global parent, zone of the target. Use <attr>format if the
  config parameter format_compatibility is enabled). If this attribute is
  not found, it will then look at the global default parents for matching
  attribute inheritance.  Any attribute that you wish to inherit default
  pattern formatting must be set DEFAULT (attribute flag).  The desc is
  passed into the formatting as '%0'.  Local formatting has priority
  over global formatting.
  
  Note: Most RhostMUSHes will be configured to use &FORMAT<attr>.
        See '@list options system' to discover which method is in use.
  
  Examples:
    > @desc me=This is a test
    > @admin player_attr_default=123
    > @desc #123=-< %0 >-
    > lo me
      -< This is a test >-
    > &formatdesc me===<%0>==
    > lo me
      ===<This is a test>===

  See Also: ATTRIBUTES, ATTRIBUTE FLAG DEFAULT, @conformat, 
            @exitformat, @nameformat, invformat

[PREV] [TOP] [NEXT]

FREE

  Flag: FREE(X)
 
  If set on an object, that object doesn't use up the owner's money (but
  can still give the owner's money away).
 
  If set on a player, that player has infinite money (unless they try to
  give money away, in which case they have normal money rules). This flag
  is settable only by Councilors and above.
  
  This flag works like IMMORTAL does on vanilla mushes but gives better
  monetary control.
  
  See Also: GUILDMASTER, ARCHITECT, COUNCILOR, ROYALTY, IMMORTAL 
  
[PREV] [TOP] [NEXT]

FUBAR

  Flag: FUBAR(f)  
  
  This flag when set permits the user to only pose and say.
  The user is incapable of doing anything else including QUIT.  Yet
  another consequence of annoying the wizards.  Settable by ROYALTY and
  SUPER-ROYALTY only.
  
  See Also: SLAVE
  
[PREV] [TOP] [NEXT]

FULLNAME()

  Function: fullname(<dbref>)
  
  This function returns the full name of the indicated object.  This is the
  same as name() in all cases except when <dbref> is an exit, then all the
  aliases are returned as well.
  
  Example:
    > look
    A Room(#1234R)
    You see a room.
    Obvious exits:
    An Exit <AE>
    > say exit(here)
    You say "#123"
    > say name(#123)
    You say "An Exit <AE>"
    > say fullname(#123)
    You say "An Exit <AE>;ae;an exit;exit"
  
  See Also: name(), @alias, @name, cname()
  
[PREV] [TOP] [NEXT]

FUNCTION ALIASES

  The following aliases exist for the following functions.  This is done
  to help with portibility from MUSH to MUSH.  The following aliases
  exist:
  
 FLIP() ----> reverse()  DIE() -------> dice()      IF() ---------> ifelse()
 MATCHALL() > totmatch() LPARENT() ---> parents()   NONZERO() ----> ifelse()
 STRTRUNC() > left()     SOUNDSLIKE() > soundlike() FILTERBOOL() -> filter()
 SUBEVAL() -> eval()     GREPI() -----> grep()      LANDBOOL() ---> land()
 ZONE() ----> lzone()    ELEMENT() ---> elements()  LORBOOL() ----> lor()
 LNORBOOL() > lnor()     ANDBOOL() ---> and()       ORBOOL() -----> or()
 NOTBOOL() -> not()      XORBOOL() ---> xor()       LOOP() -------> parse()
 MEAN()    -> avg()      ENUMERATE() -> elist()     MOD() --------> remainder()
 LMATH()   -> strfunc()
  
  To see the help on the aliased function, please check the help of the 
  function that it aliases.
   
  See Also: FUNCTION LIST
  
[PREV] [TOP] [NEXT]

FUNCTION CLASSES

  Topic: FUNCTION CLASSES
   
  Ansi:                 ANSI() STRIPANSI() COLORS()
              See Also: help ansi functions
  
  Arithmetic:           ABS() ADD() AVG() BETWEEN() BOUND() DEC() DICE()
                        DIV() EE() FBETWEEN() FBOUND() FDIV() FLOORDIV() INC()
                        MOD() MODULO() MUL() NCOMP() RAND() REMAINDER() 
                        SIGN() STRMATH() SUB() XDEC() XINC() 
              See Also: help arithmetic functions
  
  Database Information: CON() CREATETIME() ENTRANCES() EXIT() FOLDERCURRENT()
                        FOLDERLIST() GLOBALROOM() LOC() LOCATE() LROOMS() 
                        MAILQUICK() MODIFYTIME() NEARBY() NEXT() NUM() OBJID()
                        OWNER() RLOC() ROOM() SEARCH() SEARCHOBJID() SEARCHNG()
                        SEARCHNGOBJID()  SEES() STATS() WHERE() LISTCOMMANDS()
                        LISTFLAGS() LISTFUNCTIONS() LISTNEWSGROUPS() 
                        LISTTOGGLES() PMATCH() RNUM() VALID() XCON()
              See Also: help database information functions
  
  Numerical Conversion: CEIL() CRC32() DIGEST() FLOOR() PACK() ROMAN() ROUND()
                        SPELLNUM() TOBIN() TODEC() TOHEX() TOOCT() TRUNC() 
                        UNPACK()
              See Also: help numerical conversion functions
  
  { 'help function classes2' for more }    
  
[PREV] [TOP] [NEXT]

FUNCTION CLASSES2

  Topic: FUNCTION CLASSES <continued>
  
  Game Information:   CONFIG() MUDNAME() REBOOTSECS() REBOOTTIME() 
                      STARTSECS() STARTTIME() VERSION()
            See Also: help game information functions
  
  Lists:              AINDEX() AIINDEX() ANDFLAG() ANDFLAGS() CITER() 
                      DELEXTRACT() ELEMENTS() ELEMENTSMUX() ELIST() EXTRACT()
                      EXTRACTWORD() FILTER() FIRST() FLAGS() FOLD() FOREACH()
                      IBREAK() IINDEX() ILEV() INDEX() INSERT() INUM() ITER()
                      ITEXT() KEEPFLAGS() KEEPTYPE() LADD() LAND() LAST() 
                      LAVG() LDELETE() LDIV() LISTDIFF() LISTINTER() 
                      LISTMATCH() LISTUNION() LMAX() LMIN() LMUL() LNOR()
                      LNUM() LNUM2() LOR() LRAND() LREPLACE() LSUB() LXNOR() 
                      LXOR() MAP() MATCH() MEMBER() MIX() MUNGE() NSITER() 
                      NUMMATCH() NUMMEMBER() NUMWILDMATCH() PARSE() RANDMATCH()
                      RANDEXTRACT() REMFLAGS() REMOVE() REMTYPE() REST() 
                      REVERSE() REVWORDS() RINDEX() SAFEBUFF() SETDIFF() 
                      SETINTER() SETUNION() SORT() SORTBY() SORTLIST() STEP() 
                      STRFUNC() STRMATH() TOTMATCH() TOTMEMBER() TOTWILDMATCH()
                      WHILE() WILDMATCH()
            See Also: help list functions
  
  Logarithms:         E() EXP() LN() LOG() PI() POWER() POWER10() SHL() SHR()
                      SQRT()
            See Also: help logarithmic functions
  
  { 'help function classes3' for more }
  
[PREV] [TOP] [NEXT]

FUNCTION CLASSES3

  Topic: FUNCTION CLASSES <continued>
  
  Logical:            AND() MASK() NAND() NOR() OR() XOR() XNOR() CAND() COR()
            See Also: help logical functions
  
  Miscellaneous:      ASC() CHR() CNAME() ERROR() LOCKCHECK() LOCKDECODE()
                      LOCKENCODE() LOCALIZE() MOON() NAMEQ() NULL() 
                      PARENMATCH() PID() PRIVATIZE() PUSHREGS() R() 
                      SETQ() SETQ_OLD() SETQMATCH() SETR() SETR_OLD() 
                      SOUNDEX() SOUNDLIKE() TRACE()
            See Also: help miscellaneous functions
  
  Object Information: APOSS() ART() ATTRCNT() CNAME() CONTROLS() DEFAULT() 
                      EDEFAULT() ELOCK() FULLNAME() GET() GET_EVAL() 
                      GRAB() GRABALL() GREP() GUILD() HASATTR() HASATTRP() 
                      HASFLAG() HASTOGGLE() HASTYPE() HOME() LASTCREATE() 
                      LATTR() LCMDS() LCON() LEXITS() LFLAGS() LOCK() 
                      LTOGGLES() LZONE() NAME() OBJ() OBJEVAL() ORFLAG() 
                      ORFLAGS() PARENT() PGREP() POSS() RACE() SHIFT() SUBJ() 
                      TYPE() U() U2() UDEFAULT() UDEFAULT2() UEVAL() 
                      ULDEFAULT() U2LDEFAULT() ULOCAL() ULOCAL2() V() 
                      VATTRCNT() VISIBLE() VISIBLEMUX() WRITABLE() XGET()
            See Also: help object information functions
  
  { 'help function classes4' for more }
  
[PREV] [TOP] [NEXT]

FUNCTION CLASSES4

  Topic: FUNCTION CLASSES <continued>
                             
  Player Information:  BITTYPE() CHARIN() CHAROUT() CMDS() CONN() HASQUOTA() 
                       IDLE() INPROGRAM() ISHIDDEN() LISTPROTECTION() LWHO() 
                       MONEY() MONEYNAME() PORT() PROGRAMMER() QUOTA() 
                       TOTCMDS()
             See Also: help player information functions
  
  Reality Levels:      CHKREALITY() HASRXLEVEL() HASTXLEVEL() LISTRLEVELS() 
                       RXLEVEL() TXLEVEL()
             See Also: help reality level functions  
  
  Relational:          ALPHAMAX() ALPHAMIN() MAX() MIN() EQ() GT() GTE() LT()
                       LTE() NEQ() NOT() 
             See Also: help relational functions
  
  Regular Expression:  REGEDIT() REGEDITI() REGEDITALL() REGEDITALLI() 
                       REGMATCH() REGMATCHI() REGLMATCH() REGLMATCHI() 
                       REGLMATCHALL() REGLMATCHALLI() REGRAB() REGRABI() 
                       REGRABALL() REGRABALLI() REGREP() REGREPI() RESWITCH() 
                       RESWITCHI() RESWITCHALL() RESWITCHALLI()
             See Also: help regular expression functions
  
  { 'help function classes5' for more }
  
[PREV] [TOP] [NEXT]

FUNCTION CLASSES5

  Topic: FUNCTION CLASSES <continued>
  
  Strings:             ACCENT() AFTER() ANDCHR() BEFORE() BRACKETS() CAPSTR() 
                       CASE() CASEALL() CAT() CENTER() CHOMP() COLUMNS() 
                       COMP() CREPLACE() DECODE64() DECRYPT() DELETE() EDIT() 
                       EDITANSI() ELEMENTPOS() ENCODE64() ENCRYPT() ESCAPE() 
                       ESCAPEX() ESCLIST() EVAL() GARBLE() IFELSE() ISALNUM() 
                       ISALPHA() ISDBREF() ISDIGIT() ISNUM() ISOBJID() 
                       ISPUNCT() ISSPACE() ISWORD() ISXDIGIT() LCSTR() LEFT() 
                       LIT() LJC() LJUST() MERGE() MID() NOSTR() NOTCHR() 
                       NUMPOS() ORCHR() PARSESTR() PEDIT() POS() PRINTF() 
                       RANDPOS() REPEAT() REPLACE() RIGHT() RJC() RJUST() 
                       ROTL() ROTR() S() SCRAMBLE() SECURE() SECUREX() SHL() 
                       SHR() SHUFFLE() SPACE() SPLICE() SQUISH() STR() 
                       STRDISTANCE() STREQ() STREVAL() STRIP() STRIPACCENTS() 
                       STRLEN() STRMATCH() SUBNETMATCH() SWITCH() SWITCHALL() 
                       T() TOTPOS() TR() TRANSLATE() TRIM() UCSTR() UNESCLIST()
                       WORDPOS() WORDS() WRAP() WRAPCOLUMNS() XORCHR()
             See Also: help string functions
  
  Time:                CONVSECS() CONVTIME() PTIMEFMT() SECS() SINGLETIME()
                       TIME() TIMEFMT()
             See Also: help time functions  
  
  { 'help function classes6' for more }
  
[PREV] [TOP] [NEXT]

FUNCTION CLASSES6

  Topic: FUNCTION CLASSES <continued>
  
  Trigonometry:        ACOS() ASIN() ATAN() ATAN2() COS() CTU() DIST2D() 
                       DIST3D() SIN() TAN() VADD() VCROSS() VDIM() VDOT() 
                       VMAG() VMUL() VSUB() VUNIT()
             See Also: help trigonometry functions  
    
  Aliased functions:   FLIP() FOREACH() ITEMS() MATCHALL() SQUISH() LPARENT() 
                       DIE()     
             See Also: help aliased functions  
  
  Side-Effects:        CLONE() CREATE() DESTROY() DIG() EMIT() LEMIT() LINK() 
                       LIST() LOCK() NAME() NAMEQ() NPEMIT() OEMIT() OPEN() 
                       PARENT() PEMIT() R() REMIT() RSET() RULER() RXLEVEL() 
                       SET() SETQ() SETQ_OLD() SETR() SETR_OLD() TEL() 
                       TOGGLE() TXLEVEL() WIPE() ZEMIT()
             See Also: help side effect functions  
  
  Dbase Side-Effects:  SQLITE_QUERY()
             See Also: help side effect functions  
  
  { 'help function classes7' for more }
  
[PREV] [TOP] [NEXT]

FUNCTION CLASSES7

  Topic: FUNCTION CLASSES <continued>
  
  Zone Functions:     INZONE() ZFUN() ZFUN2() ZFUNDEFAULT() ZFUN2DEFAULT() 
                      ZFUNEVAL() ZFUNLDEFAULT() ZFUNL2DEFAULT() ZFUNLOCAL() 
                      ZFUN2LOCAL() ZONECMD() ZWHO()
            See Also: help zone functions
  
  Cluster Functions:  CLUSTER_ADD() CLUSTER_ATTRCNT() CLUSTER_DEFAULT() 
                      CLUSTER_EDEFAULT() CLUSTER_FLAGS() CLUSTER_GET() 
                      CLUSTER_GET_EVAL() CLUSTER_GREP() CLUSTER_HASATTR() 
                      CLUSTER_HASFLAG() CLUSTER_LATTR() CLUSTER_REGREP() 
                      CLUSTER_REGREPI() CLUSTER_SET() CLUSTER_STATS() 
                      CLUSTER_U() CLUSTER_U2() CLUSTER_U2DEFAULT() 
                      CLUSTER_U2LDEFAULT() CLUSTER_U2LOCAL() CLUSTER_UDEFAULT()
                      CLUSTER_UEVAL() CLUSTER_ULDEFAULT() CLUSTER_ULOCAL() 
                      CLUSTER_VATTRCNT() CLUSTER_WIPE(), CLUSTER_XGET(), 
                      ISCLUSTER()
            See Also: help cluster functions

  See Also: FLAG LIST
  
[PREV] [TOP] [NEXT]

FUNCTION LIST

  Topic: FUNCTION LIST
 
  Help is available for the following functions:
 
 @@()               ABS()               ACCENT()             ACOS()        
 ADD()              AFTER()             AINDEX()             AIINDEX()         
 ALPHAMAX()         ALPHAMIN()          AND()                ANDCHR()        
 ANDFLAG()          ANDFLAGS()          ANSI()               APOSS()     
 ARRAY()            ART()               ASC()                ASIN()           
 ATAN()             ATAN2()             ATTRCNT()            AVG()            
 BEFORE()           BETWEEN()           BITTYPE()            BOUND()          
 BRACKETS()         CAND()              CAPSTR()             CASE()           
 CASEALL()          CAT()               CEIL()               CENTER()         
 CHARIN()           CHAROUT()           CHKREALITY()         CHKTRACE()       
 CHOMP()            CHR()               CITER()              CLONE()          
 CLUSTER_ADD()      CLUSTER_ATTRCNT()   CLUSTER_DEFAULT()    CLUSTER_EDEFAULT()
 CLUSTER_FLAGS()    CLUSTER_GET()       CLUSTER_GET_EVAL()   CLUSTER_GREP()   
 CLUSTER_HASATTR()  CLUSTER_HASFLAG()   CLUSTER_LATTR()      CLUSTER_REGREP() 
 CLUSTER_REGREPI()  CLUSTER_SET()       CLUSTER_STATS()      CLUSTER_U()      
 CLUSTER_U2()       CLUSTER_U2DEFAULT() CLUSTER_U2LDEFAULT() CLUSTER_U2LOCAL()
 CLUSTER_UDEFAULT() CLUSTER_UEVAL()     CLUSTER_ULDEFAULT()  CLUSTER_ULOCAL() 
 CLUSTER_VATTRCNT() CLUSTER_WIPE()      CLUSTER_XGET()       CMDS()           
 CNAME()            COLORS()            COLUMNS()            COMP()           
 CON()              CONFIG()            CONN()               CONTROLS()       
 CONVSECS()    
  
{ 'help function list2' for more }
  
[PREV] [TOP] [NEXT]

FUNCTION LIST2


  CONVTIME()      COR()         COS()          CRC32()         CREATE() 
  CREATETIME()    CREPLACE()    CTU()          DEC()           DECODE64()
  DECRYPT()       DEFAULT()     DELETE()       DELEXTRACT()    DESTROY()     
  DICE()          DIG()         DIGEST()       DIST2D()        DIST3D()      
  DIV()           E()           EDEFAULT()     EDIT()          EDITANSI() 
  EE()            ELIST()       ELEMENTPOS()   ELEMENTS()      ELEMENTSMUX()
  ELOCK()         EMIT()        ENCODE64()     ENCRYPT()       ENTRANCES() 
  EQ()            ERROR()       ESCAPE()       ESCAPEX()       ESCLIST()   
  EVAL()          EXIT()        EXP()          EXTRACT()       EXTRACTWORD()
  FBETWEEN()      FBOUND()      FDIV()         FILTER()        FINDABLE()  
  FIRST()         FLAGS()       FLOOR()        FLOORDIV()      FOLD()      
  FOLDERCURRENT() FOLDERLIST()  FOREACH()      FULLNAME()      GARBLE()    
  GET()           GET_EVAL()    GLOBALROOM()   GRAB()          GRABALL()   
  GREP()          GT()          GTE()          GUILD()         HASATTR()   
  HASATTRP()      HASFLAG()     HASTOGGLE()    HASTYPE()       HASQUOTA()  
  HASRXLEVEL()    HASTXLEVEL()  HOME()         IBREAK()        IDLE()      
  IFELSE()        IINDEX()      ILEV()         INC()           INDEX()     
  INPROGRAM()     INSERT()      INUM()         INZONE()        ISALNUM()   
  ISALPHA()       ISCLUSTER()   ISDBREF()      ISDIGIT()       ISHIDDEN()  
  ISNUM()         ISOBJID()     ISPUNCT()      ISSPACE()       ISWORD()      
  ISXDIGIT()      ITER()        ITEXT()        KEEPFLAGS()     KEEPTYPE()    
  LADD()          LAND()        LAST()         LASTCREATE()    LATTR()       
  LAVG()          LCMDS()       LCON()         LCSTR()         LDELETE()     
  LDIV()          LEMIT()       LEFT()         LEXITS()        LFLAGS()      
  LINK()          LIST()        LISTCOMMANDS() LISTDIFF()      LISTFUNCTIONS()
  
{ 'help function list3' for more }
  
[PREV] [TOP] [NEXT]

FUNCTION LIST3

    
  LISTFLAGS()   LISTINTER()    LISTMATCH()    LISTNEWSGROUPS() LISTPROTECTION()
  LISTRLEVELS() LISTTOGGLES()  LISTUNION()    LIT()            LJC()          
  LJUST()       LLOC()         LMAX()         LMIN()           LMUL()         
  LN()          LNOR()         LNUM()         LNUM2()          LOC()          
  LOCALFUNC()   LOCALIZE()     LOCATE()       LOCK()           LOCKCHECK()
  LOCKDECODE()  LOCKENCODE()   LOG()          LOR()            LRAND()       
  LREPLACE()    LROOMS()       LSET()         LSUB()           LT()           
  LTE()         LTOGGLES()     LWHO()         LXNOR()          LXOR()         
  LZONE()       MAILQUICK()    MAP()          MATCH()          MASK()         
  MAX()         MEMBER()       MERGE()        MID()            MIN()          
  MIX()         MOD()          MODULO()       MODIFYTIME()     MONEY()        
  MONEYNAME()   MOON()         MUDNAME()      MUL()            MUNGE()        
  MWORDS()      NAME()         NAMEQ()        NAND()           NCOMP()        
  NEARBY()      NEQ()          NEXT()         NOR()            NOSTR()        
  NOT()         NOTCHR()       NPEMIT()       NSITER()         NUM()          
  NUMMATCH()    NULL()         NUMMEMBER()    NUMPOS()         NUMWILDMATCH() 
  OBJ()         OBJEVAL()      OBJID()        OEMIT()          OPEN()         
  OR()          ORCHR()        ORFLAG()       ORFLAGS()        OWNER()        
  PACK()        PARENMATCH()   PARENT()       PARSE()          PARSESTR()     
  PEDIT()       PEMIT()        PFIND()        PGREP()          PI()           
  PID()         PMATCH()       PORT()         POS()            POSS()         
  POWER()       POWER10()      PRINTF()       PRIVATIZE()      PROGRAMMER()   
  PTIMEFMT()    PUSHREGS()     QUOTA()        R()              RACE()         
  RAND()        RANDPOS()      RANDMATCH()    RANDEXTRACT() 
    
{ 'help function list4' for more }
 
[PREV] [TOP] [NEXT]

FUNCTION LIST4

  
  REBOOTSECS()    REBOOTTIME()    REGEDIT()      REGEDITI()     REGEDITALL()
  REGEDITALLI()   REGMATCH()      REGMATCHI()    REGLMATCH()    REGLMATCHI()
  REGLMATCHALL()  REGLMATCHALLI() REGRAB()       REGRABI()      REGREP()      
  REGREPI()       RESWITCH()      RESWITCHI()    RESWITCHALL()  RESWITCHALLI()
  REMAINDER()     REMIT()         REMFLAGS()     REMOVE()       REMTYPE()     
  REPEAT()        REPLACE()       REST()         REVERSE()      REVWORDS()    
  RIGHT()         RINDEX()        RJC()          RJUST()        RLOC()        
  RNUM()          ROMAN()         ROOM()         ROTL()         ROTR()        
  ROUND()         RSET()          RULER()        RXLEVEL()      S()          
  SAFEBUFF()      SCRAMBLE()      SEARCH()       SEARCHOBJID()  SEARCHNG()   
  SEARCHNGOBJID() SECS()          SECURE()       SECUREX()      SEES()       
  SET()           SETDIFF()       SETINTER()     SETQ()         SETQ_OLD()   
  SETQMATCH()     SETR()          SETR_OLD()     SETUNION()     SHIFT()      
  SHL()           SHR()           SHUFFLE()      SIGN()         SIN()        
  SINGLETIME()    SORT()          SORTBY()       SORTLIST()     SOUNDEX()    
  SOUNDLIKE()     SOUNDSLIKE()    SPACE()        SPELLNUM()     SPLICE()     
  SQL()           SQLESCAPE()     SQLOFF()       SQLON()        SQLPING()    
  SQLITE_QUERY()  SQRT()          SQUISH()       STARTTIME()    STARTSECS()  
  STATS()         STEP()          STR()          STRCAT()       STRDISTANCE()
  STREQ()         STREVAL()       STRFUNC()      STRIP()        STRIPACCENTS()
  STRIPANSI()     STRLEN()        STRMATCH()     STRMATH()      SUB()        
  SUBJ()          SUBNETMATCH()   SWITCH()       SWITCHALL()    T()          
  TAN()           TEL()           TIME()         TIMEFMT()      TOBIN()      
  TODEC()         TOGGLE()        TOHEX()        TOOCT()        TOTCMDS()    
  TOTMATCH()      TOTMEMBER()     TOTPOS()       TOTWILDMATCH() TR()         
  TRACE()         TRANSLATE() 

{ 'help function list5' for more }

[PREV] [TOP] [NEXT]

FUNCTION LIST5

  
  TRIM()         TRUNC()       TXLEVEL()       TYPE()          U() 
  U2()           UCSTR()       UDEFAULT()      UDEFAULT2()     UEVAL()
  ULDEFAULT()    U2LDEFAULT()  ULOCAL()        ULOCAL2()       UNESCLIST()
  UNPACK()       V()           VADD()          VALID()         VATTRCNT()   
  VCROSS()       VDIM()        VDOT()          VERSION()       VISIBLE()    
  VISIBLEMUX()   VMAG()        VMUL()          VSUB()          VUNIT()      
  WHERE()        WHILE()       WILDMATCH()     WIPE()          WORDPOS()    
  WORDS()        WRAP()        WRAPCOLUMNS()   WRITABLE()      XCON()       
  XDEC()         XINC()        XGET()          XNOR()          XOR()        
  XORCHR()       ZEMIT()       ZFUN()          ZFUN2()         ZFUNDEFAULT()
  ZFUN2DEFAULT() ZFUNEVAL()    ZFUNLDEFAULT()  ZFUNL2DEFAULT() ZFUNLOCAL()  
  ZFUN2LOCAL()   ZONECMD()     ZWHO() 
  
{ 'help function aliases' for aliases on existing functions }
  
[PREV] [TOP] [NEXT]

FUNCTION TYPES

  Topic: FUNCTION TYPES
  
  The following sub-classes of functions list each catagory of functions
  with a short description of each function in each given class.
  
  ansi functions                            arithmetic functions
  database information functions            game information functions
  list functions                            logarithmic functions
  logical functions                         miscellaneous functions
  numerical conversion functions            object information functions
  player information functions              reality level functions
  relational functions                      side effect functions
  string functions                          time functions
  trigonometry functions                    zone functions
  regular expression functions              functions utilizing regexp
  
  
  In addition:   You may specify 'function classes' to see each class.
                 You may specify 'function list' for quick listings.


[PREV] [TOP] [NEXT]

FUNCTIONS

  Topic: FUNCTIONS
   
  Functions are specialized commands used to manipulate strings and other
  input. The format for a function is of this form: [fun-name(<input>)]
  Although usually the []'s indicate an input that is optional, in this case
  they are necessary and tell the MUSH that this is a function, although
  nested functions (like [first(rest(This is a nice day))] returns 'is') do
  not require more than one pair of []'s.  Nested brackets may be used when
  it is necessary to insert a function call in the middle of an argument,
  like [get(me/[get(me/vz)])], which returns the contents of the attribute
  named in the VZ attribute.
   
  For help on a particular function, type 'help <functionname>'.  You may
  need to include the parentheses with the function name, IE.
  'help <functionname>()'.  
  
  'help function list' or '@list functions'  - quick list available functions
  'help function class'                      - listing of functions in classes
  'help function type'                       - sub-types of each function
   
  See Also: @list functions, FUNCTION CLASSES, FUNCTION LIST, FUNCTION TYPES
  
[PREV] [TOP] [NEXT]

game information functions

  Function Lists: Game Information Functions
    
  config()      - Returns a list of config parameters, or a parameter value.
  mudname()     - Returns the name of the game, as specified in config.
  version()     - Returns version and build information.
  
  rebootsecs()  - Returns the unix seconds the MUSH was last restarted.
  reboottime()  - Returns the time string of when the MUSH was rebooted.
  startsecs()   - Returns the unix seconds at which the MUSH was started.
  starttime()   - Returns the time string of when the MUSH was started.

[PREV] [TOP] [NEXT]

GARBLE()

  Function: garble(<str>,<value>[[,<sep>][,<fill>][,<type>][,<key>][,<eval>]])
  
  This function garbles the input from <str> and returns it garbled.  Each word
  has a 1 in <value> chance of being garbled.  Normal garbled strings have a 
  random character assigned unless you specify the filler character.  You may 
  specify a separator other than space.  If you specify the <type> of '1', it 
  assumes the value is a percentile instead of fractional.  A <value> '0' with
  <type> '0' (1/0) returns nothing while <type> '1' (0%) returns the string.
  The key field allows the following bitwise values:
        1 - don't garble punctuation. (',!.?')
        2 - don't garble spaces.
        3 - (1 & 2) - don't garble punctuation or spaces.
        4 - takes 'eval' and parses it for each word in <str> (passed as %0)
        5-8 (same as 1-4 but return character count instead of word itself)
  
  Note: If you plan to <eval>, you need to escape out (or use lit()) on the
        argument as it passes the evaluated argument into the value.
   
  Examples:
    > say garble(this is a test!?,2)
    You say "this Z& a ^pN0w)"
    > say garble(this@is@a@test!?,2,@)
    You say "7u(9 is a %uNbn$"
    > say garble(this is a test!?,2,,-) (1 out of 2)
    You say "this is a ------"
    > say garble(this is a test!?,50,,-,1) (50 percent)
    You say "---- is a ------"
    > say garble(this is a test!?,50,,-,1,1) (50 percent, no garble punct.)
    You say "---- is a ----!?"
  
  See Also: strip(), edit(), editansi(), mask(), regedit()
  
[PREV] [TOP] [NEXT]

GENDER

  Topic: GENDER
 
  A player's (virtual) gender is specified in the Sex attribute.  This
  attribute controls how gender-specific pronoun substitutions are evaluated
  for the player.  If the player's Sex attribute starts with an 'M' or an 'm'
  then the player is assumed to be male,  'F', 'f', 'W', and 'w' indicate
  female, and anything else indicates neuter.
  
  See Also: SUBSTITUTIONS
  
[PREV] [TOP] [NEXT]

get

  Command: get[/<switch>] <object>
           get[/<switch>] <exit>
           get[/<switch>] <object>'s <sub-object>
  
  The first form picks up <object> from your location and adds it to your
  inventory.  It will fail if the object is locked against you, or if you
  are inside a player or object that you don't control and which isn't
  set ENTER_OK.
 
  The second form takes an exit from your location and adds it to you.
  Anyone inside you may then use the exit to travel to the exit's destination.
  You may take exits that you own, and exits owned by others in locations that
  you own.
 
  The third form takes <sub-object> from <object> and adds it to your
  inventory.  <object> must be ENTER_OK and <sub-object> must not be locked
  against you for this to work.  The lock on <object> is not checked.
  
{ 'help get2' for more }
  
[PREV] [TOP] [NEXT]

GET()

  Function: get(<object>/<attribute>)
 
  The get function fetches the specified attribute from the named object.
  It can be used to get attributes from objects you own, public and visual
  attributes of objects near you, and public and visual attributes other
  than the description of players wherever they may be.  If the attribute is
  not present on <object>, its parent is searched for the attribute.
 
  Example:
    > read me
    > say get(me/desc)
  
  See Also: get_eval(), u(), xget()
  
[PREV] [TOP] [NEXT]

get2

  The following switch is recognized:
     /quiet   - Don't perform the @osucc/@asucc or @ofail/@afail attributes
                on the target object.  This switch only works if you control
                the object.
 
  <object> and <sub-object> may be either players or things.
  'take' is the same as 'get'.
  
  See Also: drop, @afail, @asucc, @fail, @ofail, @osucc, @succ, ENTER_OK,
            FAILURE, SUCCESS
  
[PREV] [TOP] [NEXT]

GET_EVAL()

  Function: get_eval(<object>/<attribute>)
 
  The get_eval function returns the specified attribute from the named object
  (just like the get function), except that function references and
  %-substitutions have already been performed.  In function references, 
  'me' refers to the object being looked at, and %-substitutions that refer
  to the enactor (such as %n, %#, etc) refer to the object making the get_eval
  call.  If the attribute is not present on <object>, its parent is searched
  for the attribute.
 
  Example:
    > @va test = This is a get_eval test on %n.  The vb is [get(me/vb)]
    > @vb test = VB from test
    > @vb me = VB from me
    > say get(test/va)
    You say "This is a get_eval test on %n. The vb is [get(me/vb)]"
    > say get_eval(test/va)
    You say "This is a get_eval test on Foobar. The vb is VB from test"
  
  See Also: get(), u()
  
[PREV] [TOP] [NEXT]

give

  Command: give <player>=<amount/object>
  Gives player the specified amount of money or <object>. You can't give
  someone money if their new total would be greater than 10000 (No reason to
  get greedy).  You may also give players objects, but the other player must
  be set ENTER_OK to receive something you give. 
  
  See Also: @apay, @cost, @opay, @pay, ENTER_OK
  
[PREV] [TOP] [NEXT]

GLOBALROOM()

  Function: globalroom()
 
  Returns the dbnum of the global room to royalty and higher players.
  
  Example:
    > say globalroom()
    You say "#2"
 
[PREV] [TOP] [NEXT]

GLOBBING

  Topic:  WILDCARDS [* and ?]
  
  Wildcards are the standard globbing mechanism for the mush engine.  With the
  wildcards, the '*' character is considered 0 or more characters and the '?'
  character is considered a single character.  These are used primarilly in
  commands and functions that allow mulit-matching based on wild card support.
  
  Example:
    > say match(this is a test,?es*)
    You say "4"
  
  Wildcards, however, are most useful for $command substitution matching.
  When you create your own softcoded command, any argument you want
  substituted you would place a '*' or a '?' for that argument.  Each argument
  is then matched up with a numerical argument for each wildcard used.  The
  first argument being %0, second being %1, and so forth.
  
  Example:
    > &TEST1 me=$test1*:@emit Your First Test:%0
    > &TEST2 me=$test2?:@emit Your Second Test:%0
    > &TEST3 me=$test3 *:@emit Your Third Test:%0
    > test1
    Your First Test:
    > test1 abc
    Your First Test: abc  [notice the space between ':' and 'a']
    > test2
    Huh? (Type 'help' for help)  [Because ? requires 1 character exactly]
    > test2X
    Your Second Test:X
    > test2abc
    Huh? (Type 'help' for help)  [Because ? required 1 character exactly]
    > test3
    Huh? (Type 'help' for help)  [because you have a space in the command]
    > test3 abc
    Your Third Test:abc  [notice no space between ':' and 'a']
    
  { See 'help wildcards2' for clarification and extended explainations }
 
[PREV] [TOP] [NEXT]

GOALS

  Topic: GOALS
 
  There is no ultimate goal to this game, except to have fun.  There are
  objects and places to build, puzzles to solve, scenery to visit, and people
  to meet. There are no winners or losers, only fellow players.  Enjoy.
  
[PREV] [TOP] [NEXT]

GOING

  Flag: GOING(G)  
  
  Used internally for the @destroy command, it is set on 
  anything that can be recycled. In the event that a player decides they 
  don't want to destroy the room after all then they can unset the BYEROOM
  flag.  Due to server modifications, you would unset the BYEROOM
  flag instead of the GOING flag to recover a room that has been
  @destroyed.  See the help on BYEROOM for more.  If you destroyed something
  you didn't intend, locate your nearest IMMORTAL (SUPER-ROYALTY) as soon
  as you can.
  
  See Also: BYEROOM, @destroy
  
[PREV] [TOP] [NEXT]

goto

  Command: goto[/<switch>] <direction>
           goto[/<switch>] home
           <direction>
           home
 
  Moves you in the specified direction, assuming that the direction is not
  locked against you.  'move home' is a special command that returns you to
  your home. The word 'move' may be omitted.
 
  The following switch is recognized:
     /quiet   - Don't perform the @osucc/@asucc/@odrop/@adrop or @ofail/@afail
                attributes on the exit being used.  This switch only works if
                you control the exit.
 
  'move' is the same as 'goto'.
  
  See Also: enter, home, leave, move()
  
[PREV] [TOP] [NEXT]

grab

  Command: grab <user>
  
  The command will check your permissions over the target's location and
  over your current location.  If you are found to have control over both
  of those locations, and of the user itself, then the targeted user
  will be brought to your location.
  
  See Also: join, @teleport  
  
[PREV] [TOP] [NEXT]

GRAB()

  Function: grab(<string>, <pattern>[, <delimeter>])
   
  This function matches <pattern> against each word of <string>, returning
  the first word it matches.  If no words are found to match the pattern,
  then an empty string is returned.  <pattern> may consist of wildcards.
  Wildcards being the use of '*' for any number of characters or '?' for
  a single character.  An optional delimiter may be used.
  
  Examples:
    > grab(This is a test,*es*)
    You say "test"
    > grab(players are cool.,*y*)
    You say "players"
    > grab(this is@a test,*es*,@)
    You say "a test"
   
  See Also: match(), member(), totmatch(), totmember(), grep(), graball()
  
[PREV] [TOP] [NEXT]

GRABALL()

  Function: graball(<string>, <pattern>[, <delimeter>[, <separator>]])
   
  This function matches <pattern> against each word of <string>, returning
  the all the words it matches.  If no words are found to match the pattern,
  then an empty string is returned.  <pattern> may consist of wildcards.
  Wildcards being the use of '*' for any number of characters or '?' for
  a single character.  An optional delimiter may be used as well as an
  optional output separator. 
  
  Examples:
    > graball(This is a test,*es*)
    You say "test"
    > graball(This is a test,*is*)
    You say "This is"
    > graball(players are cool.,*y*)
    You say "players"
    > graball(this is@a test,*es*,@)
    You say "a test"
    > graball(this is@a test@2 test,*es*,|)
    You say "a test|2 test"
 
  See Also: match(), member(), totmatch(), totmember(), grep(), grab()
  
[PREV] [TOP] [NEXT]

GREP()

  Function: grep(<object>, <attribute(s)>, <pattern> [,<key>])
   
  This returns a list of any matching attribute that matches the
  <attribute(s)> that contain <pattern>.  The <attribute> may be wildcarded
  with a '*' or a '?' for multiple character matches and single character
  matches respectively.  In addition, the pattern may also be wildcarded.
   
  If <key> is specified as '1', it will no longer assume a wildcard match
  unless explicitly given.
   
  Examples:
    > @va me=This is a test
    > @vb me=This is another test.
    > @vc me=Test Test Test whisooo!
    > say grep(me,v*,is)
    You say "VA VB VC"
    > say grep(me,v*,is,1)
    You say "VA VB"
    > say grep(me,v*,*is*)
    You say "VA VB VC"
    > say grep(me,*,*)
    You say "VA VB VC"
    > say grep(me,*,Bark?)
    You say ""
 
  See Also: pgrep(), regrep(), regrepi(), grab(), match(), lattr(), @grep
  
[PREV] [TOP] [NEXT]

gt()

  Function: gt(<integer1>,<integer2>)
 
  Takes two integers, and returns 1 if and only if <integer1> is greater than
  <integer2>, and 0 otherwise.  Warning: passing anything but integers will
  produce unexpected results, as non-numeric strings usually are treated
  as numeric 0.
 
  Example:
    > say gt(4,5)
    You say "0"
    > say gt(5,5)
    You say "0"
    > say gt(6,5)
    You say "1"
    > say gt(foo, bar)
    You say "0"
  
  See Also: lt(), lte(), gte(), eq(), neq()
  
[PREV] [TOP] [NEXT]

gte()

  Function: gte(<integer1>,<integer2>)
 
  Takes two integers, and returns 1 if and only if <integer1> is greater than
  or equal to <integer2>, and 0 otherwise.  Warning: passing anything but
  integers will produce unexpected results, as non-numeric strings usually are
  treated as numeric 0.
 
  Example:
    > say gte(4,5)
    You say "0"
    > say gte(5,5)
    You say "1"
    > say gte(6,5)
    You say "1"
    > say gte(foo, bar)
    You say "1"
  
  See Also: lt(), lte(), gt(), eq(), neq()
  
[PREV] [TOP] [NEXT]

GUESTS

  Guests are considered a temporary player bit on a mush.  They have severely
  limited access and are essentially a look but do not touch type of player.
  
  As a guest, you can interact with the mush and the playerbase, but you can
  not leave any lasting information into the game.  This includes, but is not
  limited to sending mail, setting attributes, building of any type, altering
  any data within the mush (except for global commands that the wizzes allow),
  or setting/altering your player character in any way.
  
  If you wish to have a more flexible account, we recommend creating a player
  then going through the methods on the mush to register your player or
  whatever method they have for becoming a member player of that mush.
  
  Remember, guests CAN NOT MAIL.  This is something that will likely cause
  confusion regardless of what game you are on.  This is also intentional.
  
[PREV] [TOP] [NEXT]

GUILD()

  Function: guild(<user>)
  
  Returns the guild the given user currently has.  This works similar to
  get(<user>/guild).
  
  Example:
    > say guild( me )
    You say "Citizen"
  
  See Also: get(), u(), u2(), race()
  
[PREV] [TOP] [NEXT]

GUILDMASTER

  Flag: GUILDMASTER(g)   
  
  This flag, when set on a player, allows that player a 
  few extra permissions like @quota and examining other's objects.
  This flag is settable only by ROYALTY and SUPER-ROYALTY.
  
  See Also: ARCHITECT, COUNCILOR, ROYALTY, IMMORTAL
  
[PREV] [TOP] [NEXT]

HALTED

  Flag: HALTED(h)  
  
  While this flag is set, the object cannot perform any mush 
  actions, listen, be triggered, etc.
  
  See Also: NOCOMMAND
  
[PREV] [TOP] [NEXT]

hasattr()

  Function: hasattr(<object>/<attribute name>)
            hasattr(<object>,<attribute name>)
   
  Returns 1 if the object has the named attribute, and 0 if it does
  not. If the object does not exist or the player does not have the
  ability to examine the object, #-1 will be returned.
 
  Hasattr() doesn't check for attributes inherited from parent
  objects. Use hasattrp() for that.
  
  Examples:
    > say hasattr(me/sex)
    You say "1"
    > say hasattr(me/adsadf)
    You say "0"
    > say hasattr(me,sex)
    You say "1"
  
  See Also: hasattrp(), hasflag()
  
[PREV] [TOP] [NEXT]

hasattrp()

  Function: hasattrp(<object>/<attribute name>)
            hasattrp(<object>,<attribute name>)
   
  Returns 1 if any of it's parents has the named attribute,
  and 0 if it does not. If the object does not exist or the player
  does not have the ability to examine the object, #-1 will be returned.
 
  Use hasattr() to check for attributes without checking parents.
  If the config option hasattrp_compat is set, it will check the target
  object for the attribute as well.
  
  Examples:
    > say hasattrp(me/desc)
    You say "1"
    > say hasattrp(me,desc)
    You say "1"
  
  See Also: hasattr(), hasflag()
  
[PREV] [TOP] [NEXT]

hasflag()

  Function: hasflag(<object>[/<attribute>],<flag>)
  Returns true if object <object> has the flag named <flag> set on it.
  You may not be able to retrieve information for objects that you do not
  own.  You may also check if the given flag exists on the ATTRIBUTE.
  For the TYPE of the item, (P, E, R), you need to use hastype().
   
  Example:
    > say hasflag(me, wizard)
    You say "0"
    > say hasflag(me, connect) 
    You say "1"
    > say hasflag(me/desc, NOPROG)
    You say "1"
  
  NOPROG is how the MUSH internally recognizes the NO_COMMAND flag.
  Confusing, I know.  See 'help ATTRIBUTE FLAGS' on all of these flags.
  
  See Also: LIST FLAGS, ATTRIBUTE FLAGS, hastype()
  
[PREV] [TOP] [NEXT]

hasquota()

  Function: hasquota(<player>,<amount>[,<type>])
  
  The hasquota() function returns a TRUE(1) or a FALSE(0) depending if the
  person has the specified amount <amount> of quota to actually be able to
  make the specified type (default is THING).  The types are the same types
  that the mush uses (THING (or object), PLAYER, EXIT, ROOM).  See help on
  type() for more information on types.  The hasquota() function works with
  both types of QUOTA systems.
  
  Example:
    > @quota me
    Quota for BiffStandard       Quota: 40     Used: 35     Remaining: 5
    > say hasquota(me,3)
    You say "1"
    > say hasquota(me,7)
    You say "0"
    > say hasquota(me,4,thing)
    You say "1"
  
  See Also: quota(), @quota
  
[PREV] [TOP] [NEXT]

HASRXLEVEL()

  Function: hasrxlevel(<target>,<level>)
  
  Returns 1 if <target> has the specified Rx Level. You must control <target>.
  If the level does not exist, or you do not control the target, it returns
  a '#-1'.
  
  Example:
    > say hasrxlevel(me,real)
    You say '1'.
  
  See Also: hastxlevel(), rxlevel(), txlevel(), listrlevels(), chkreality()
  
[PREV] [TOP] [NEXT]

HASTOGGLE()

  Function: hastoggle(<player>,<toggle>)
  
  Example:
    > say hastoggle(player, brandy_mail)
    You say "1"
   
  See Also: hasflag()
  
[PREV] [TOP] [NEXT]

HASTXLEVEL()

  Function: hastxlevel(<target>,<level>)
  
  Returns 1 if <target> has the specified Tx Level. You must control <target>.
  If the level does not exist, or you do not control the target, it returns
  a '#-1'.
  
  Example:
    > say hastxlevel(me,real)
    You say '1'.
  
  See Also: hasrxlevel(), rxlevel(), txlevel(), listrlevels(), chkreality()
  
[PREV] [TOP] [NEXT]

hastype()

  Function: hastype(<object>, <type>)
  
  Returns 1 if the object is of the named type, otherwise 0.
  Valid types are: ROOM, EXIT, PLAYER, THING.
  If an invalid type is given, #-1 is returned.
  
  Examples:
    > say hastype(me,PLAYER)
    You say "1"
    > say hastype(me,THING)
    You say "0"
  
  See Also: type(), hasflag()
  
[PREV] [TOP] [NEXT]

HAVEN

  Flag: HAVEN(H)  
   
  If a location is HAVEN, you cannot kill in that location.  The HAVEN flag
  no longer blocks pages or @pemits, use @lock/page instead.
   
  See Also: @lock
  
[PREV] [TOP] [NEXT]

help

  This is the RhostMUSH online help facility.
  
  "And remember, if it's not RhostMUSH, it's Mud." -- Corum
 
  Notes on help descriptions: 
        [text] - Text enclosed in []'s is optional.  The []'s are never typed
                 in as part of the command.
        <parameter> - Information parameter for a command.  The <>'s are
                      never typed in as part of the command.
 
  Syntax of help command:          help [<command>]
 
  To get a list of RhostMUSH topics:    help topics
  To get a list of RhostMUSH Commands:  help commands      (or @list commands)
  To get a list of RhostMUSH Functions: help function list (or @list function)
  To get a list of on-line RhostMUSH commands: +help
  
  You may use '*' or '?' for wildcard searches on topics.
  
  You may use the /search switch for content searching.  Eg: help/search *mail*
  
  Command syntax help is available by issuing /syntax. Eg: @emit/syntax
  
  If there are any errors in the help text, please notify a Wizard.
  An HTML version of all the help contained here is available at
  http://rhostmush.com/autohelp/help.html
  
[PREV] [TOP] [NEXT]

HERE

  Topic: HERE 
 
  The word 'here' refers to the room you are in (if you are inside an object,
  it refers to the object that you are in, not the room that the object is
  in).  For example, to rename the room you are in (if you control it), you
  could enter '@name here= <new name>'.
  
  See Also: ME
  
[PREV] [TOP] [NEXT]

HOME()

  home(<object>)
 
  Returns the object's home.
 
  Example:
    > exam me
    Mortal(#226Pc)
    Type: PLAYER Flags: CONNECTED
    Desc:Just a plain, old boring Mortal. You know.
    Owner: Mortal  Key: VA:foobar Clams: 920
    Last:Thu Dec 19 08:57:21 1991
    Home: Mortal's Room(#367R)
    Location: The Town Square
    > say home(me)
    You say "#367"
  
  See Also: loc(), room(), @link
  
[PREV] [TOP] [NEXT]

HOMES

  Topic: HOMES
 
  Every thing or player has a home.  This is where players when they go home,
  or things with the STICKY flag set go when dropped.  Homes are set with the
  @link command. A thing's home defaults to the room where it was created, if
  you control that room, or your home. You can link an exit to send players
  home with '@link <dir>=home'.  Drop-tos can also be set to 'home'.
  
  See Also: @link, DROP-TO, STICKY
  
[PREV] [TOP] [NEXT]

IBREAK()

  Function: ibreak(<n>)
  Related:  itext(<n> [,<key>])
            inum(<n> [,<key>])
            ilev()
  
  These functions, when called with an iter(), return the equivalent
  of ## (itext) or #@ (inum), with reference to the nth more outermost
  iter(), where n=0 refers to the current iter(), n=1 to an iter()
  in which the current iter() is nested, etc.
  
  The ibreak() function is used to break out of the given iter() loop.
  It will finish processing of what it currently is executing then abort
  any further iterations of that given iter loop.  You can specify the nth
  argument to specify which iter() you wish to break out of.
  
  itext() and inum() can specify a key of '1' to substitute the 
  @dolist/inline value instead of the iter() value essentially duplicating
  '%d<n>' instead of the default '%i<n>'.
  
  Examples:
  > say [iter(red blue green,iter(fish shoe, [inum(1)]:[itext(1)]))]
  You say, "1:red 1:red 2:blue 2:blue 3:green 3:green"
  
  > say [iter(red blue green,iter(fish shoe, [inum(1)]:[itext(1)][ibreak(1)]))]
  You say, "1:red 1:red"
  
  > say [iter(red blue green,iter(fish shoe, [inum(1)]:[itext(1)][ibreak(0)]))]
  You say, "1:red 2:blue 3:green"
  
  See Also: iter(), itext(), ilev(), inum(), list()

  
[PREV] [TOP] [NEXT]

IC

  Flag: IC([I])
 
  (*note this flag is meaningless on RhostMUSH*)
  When set on a player or object, denotes that they are In-Character and 
  therefore subject to inclusion in tinyplots, etc, and whatever they
  say or do will be interpreted as if their player was doing or saying it.
  If this flag is not set, whatever the they say or do is to be interpreted
  as if it is either the real life person talking, or some mixture of the
  player and the real life person that is not 100% In-Character and should
  not be taken as being in character.
 
  When set on a room it denotes that the room is fair ground for roleplaying.
  When set on a zonemaster it denotes that the entire zone is fair ground for
  roleplaying (This is not yet implemented).
 
  See Also: help COMBAT
  
[PREV] [TOP] [NEXT]

IDIV()

  Function: div(<number1>,<number2>[,<numberN>]...)
   
  Returns the integer quotient from dividing <number1> by <number2>.
  
  For floating point numbers, please use the fdiv() function. 
   
  Example:
    > say div(15,3)
    You say "5"
    > say div(16,3)
    You say "5"
    > say div(17,3)
    You say "5"
    > say div(18,3)
    You say "6"
    > say div(-17,3)
    You say XXXXX
  
  This function may also be called as idiv().
  
  See Also: add(), fdiv(), mod(), mul(), round(), sub(), trunc()
  
[PREV] [TOP] [NEXT]

IDLE

  Command: idle                 (everyone)
           idle @@<string>      (everyone)
           idle <command>	(wizards only)
  
  This command does nothing.  It will issue a NO-OP (non-operation) which 
  allows the user to send information to the mush without actually unidling.
  While using this command your idle state does not change so to other users
  you will appear to be idle.  
  
  If you specify @@<string> then <string> will be displayed to you as if 
  you issued 'think <string>' but without updating your idle time.  
  
  Note:  The <string> is NOT evaluated, intentionally.
  
  This command can only be used if you're connected to the mush.  It can not
  be used if the command has been restricted from you.
  
  Wizards may specify a command to issue under an 'idle state' as an option.
  
  Examples:
    > idle
    > idle @@boo![add(1,1)]
      boo![add(1,1)]
    > idle think Test: [add(1,1)]    (as a wizard)
      Test: 2
  
  See Also: @@

[PREV] [TOP] [NEXT]

IDLE()

  Function: idle(<player> [,<boolean> [,<port>]))
 
  Returns the number of seconds that <player> has been idle.  If <player>
  is not connected then -1 is returned.  If <player> is connected more than
  once, the smallest idle time is returned.
  
  You may specify an optional boolean value for the type.  If '1' is chosen 
  it will output in the form '<port>:<idle>'.  You may specify the exact port 
  of the player for an exact idle() match.
  
  Example:
    > WHO
    Player Name          On For Idle  Doing
    Wizard                00:04   1m
    Evinar                00:12   6m  
    Wizard                00:32   6s  
    3 Players logged in.
    > say idle(wiz)
    You say "6"
    > say idle(wiz,1)
    You say "12:68 14:6"
    > say idle(frobozz)
    You say "-1"
  
  See Also: WHO, conn(), lwho()
  
[PREV] [TOP] [NEXT]

ifelse()

  Function: ifelse(<expression>,<true string>[,<false string>])
 
  This function returns <true string> if <expression> is true (not 0), 
  <false string> otherwise. Much more efficient than an equivalent
  switch(). To check if a string contains text or not, use strlen() within
  the test case.  The false string is optional and if nothing is specified, 
  it will return an empty string if a false match is met.  This will 
  effectively mimic the if() function found on other servers.
  
  Example:
    > say ifelse(v(test),Test exists!,Test doesn't exist.)
    You say "Test doesn't exist."
    > say ifelse(strlen(v(test)),Test exits!,Test doesn't exist.)
    You say "Test exists!"
    > say ifelse(gt(1,0),This is true!)
    You say "This is true!"
    > say ifelse(gt(0,1),This is true!)
    You say ""
  
  See Also: switch(), case(), @switch
 
[PREV] [TOP] [NEXT]

IINDEX()

  Function: iindex(<list>, <string>, <position>, <delimiter>)
  
  This function is similar to index(), except that it inserts the <string>
  at the <position> in the given <list>.  You must specify a delimiter.
  For a space, use a '%b' as a delimiter.
  
  Example:
    > say iindex(this is a test,another cat and,3,%b)
    You say "this is another cat and a test"
  
  See Also: index(), rindex(), aindex()
  
[PREV] [TOP] [NEXT]

ILEV()

  Function: ilev()
  Related:  inum(<n> [,<key>])
            ibreak(<n>)
            itext(<n> [,<key>])
  
  This function goes along with inum() and itext() and will return the
  level of recursion you are currently in an iter.  The first level is 
  '0', and deeper levels are 1 and more.
  
  itext() and inum() can specify a key of '1' to substitute the 
  @dolist/inline value instead of the iter() value essentially duplicating
  '%d<n>' instead of the default '%i<n>'.
  
  Example:
    > say iter(a b c,iter(1 2 3,iter(! @ #,ilev())))
    You say "2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2"
  
  This example shows that the ilev() is in the 3rd (starting at 0)
  level of iter.
  
  See Also: inum(), itext(), iter(), ibreak(), list()
  
[PREV] [TOP] [NEXT]

IMMORTAL

  Flag: SUPER-ROYALTY (IMMORTAL)(i)   
  
  This flag when set on a player allows them to be a hybrid wizard.  
  They can basically do anything, see anything, be anything.  The 
  only thing they can not do is set or unset this flag or directly 
  affect #1.  It's generally wise if you don't annoy these people.
  
  See Also: GUILDMASTER, ARCHITECT, COUNCILOR, ROYALTY
  
[PREV] [TOP] [NEXT]

INC()

  Function: inc(<number>)
  
  INC() and XINC() may be reversed.  to check if they are, Please reference:  
                           @list options system  
  
  The inc() function is used to increment numerical values in local registers.
  The valid registers are 0-9, and a-z.  You may also use setq labels.
  If the value in the register is a string, it will return the string without
  any changes.
  
  Example:
    > say [setq(0,10)] 1: [r(0)] [inc(0)] 2: [r(0)]
    You say " 1: 10  2: 11"
    > say [setq(0,The)] 1: [r(0)] [inc(0)] 2: [r(0)]
    You say " 1: The #-1 GLOBAL REGISTER NOT AN INTEGER 2: The
  
  See Also: dec(), xdec(), xinc(), setq(), setr(), r()
  
  Note:  Check @list options for the line 'Mux Formatted Inc() and Dec()'. If
         this is enabled, the functionality of inc() and dec() are swapped
         with xinc() and xdec() for MUX/Tiny style support.
  
  
[PREV] [TOP] [NEXT]

INDESTRUCTIBLE

  Flag: INDESTRUCTIBLE(~)
  
  If set on an object, that object cannot be destroyed by any means, by 
  anyone. The flag must be removed before the object can be destroyed.
  This flag can be manipulated by Royalty and above only.
   
  See Also: SAFE, @destroy, BYEROOM, GOING
  
[PREV] [TOP] [NEXT]

INDEX()

  Function: index(<list>,<character>,<first>,<length>)
  
  This function is similar to EXTRACT(), except that an item in the
  list may be more than one word; instead of a space being used to
  separate items in the list, <character> is used. The function returns 
  <length> items starting from that in the <first> position. Trailing
  spaces are trimmed. The comma cannot be used as the <character> separator. 
 
  Example:
    > say [index(Cup of Tea | Mug of Beer | Glass of Wine, |, 2, 1)]
    You say, "Mug of Beer"
  
  See Also: extract(), extractword(), aindex(), iindex(), rindex()
  
[PREV] [TOP] [NEXT]

INFO

  Command: INFO
  This command gives information about the mush both on-line and on the 
  connect screen.  This is to help automations in gathering information about
  the mush like players connected, uptime, version, and so forth.
  
[PREV] [TOP] [NEXT]

INHERIT

  Flag: INHERIT(I)   
  
  Previously, Wizard-owned objects had wizard powers.  This was
  a problem in many cases, so that behavior has changed.  Now, only Wizard
  objects or Wizard-owned Inherit-set objects have wizard powers.  Only
  players can set the Inherit flag, and the Inherit flag is reset during
  @chown.  If a player is set Inherit, all his stuff is assumed to be
  inherit, so his objects can control him.  If a player is NOT Inherit,
  his stuff does NOT control him.  (i.e. cannot @force him.)  This flag
  is not especially useful for non-wizards.
  
  Objects set INHERIT also inherit any powers that you yourself may have.
  
  It is generally good practice to NOT EVER set yourself inherit.
  
[PREV] [TOP] [NEXT]

INPROGRAM()

  Function: inprogram(<player>)
  Returns a TRUE (1) value if the player is currently inside a @program,
  otherwise it returns a FALSE (0) value.  If the player is invalid, it
  returns a '#-1'.
  
  Examples:
    > say inprogram(me)
    You say "0"
    > @va me=@emit You entered %0!
    Set.
    > @program me=me/va:Start Program...
    Start Program...
    > |say inprogram(me)
    You say "1"
    > |@quitprogram
    @program cleared.
  
  See Also: @program, @quitprogram, programmer()
  
[PREV] [TOP] [NEXT]

INSERT()

  Function: insert(<list>, <pos> [<pos2>...<posN>], <word>[, <sep>])
   
  This function inserts a word into <list> so that the word becomes the
  <pos>'th element of the list, and all subsequent list elements are moved
  down.  This means that it appears between the <pos-1>'th and <pos>'th
  elements of the original list.  This function may be used to append or
  prepend a word to a list.  You may specify more than one position.
   
  <delim> may be used to specify a delimiter other than a space.
  
  The <pos> fields may be negative to take the argument from the right
  instead of the left.
   
  Examples:
    > say insert(This is a test, 4, new)
    You say "This is a new test"
    > say insert(Yet@Another@List, 3, Funky, @)
    You say "Yet@Another@Funky@List"
  
  See Also: extract(), extractword(), ldelete(), replace(), iindex(), aindex(),
            rindex()
  
[PREV] [TOP] [NEXT]

INTERNAL_DOORS

  Internal Doors are special cases of @door. They will can only be seen on 
  the active door list by immortals, and cannot be accessed via the @door 
  command.
  
  Typically Internal Doors are used transparently by other aspects of the 
  MUSH.  For example, the Rhost MCP module relies on the use of internal 
  doors as follows.
    - When the MUSH is started, the MCP door is registered with the door code 
      and a connection established to the MCP server.
    - On the initialization of the door, new commands are also registered 
      within the MUSH command parser; @mcom, @mwho, @mcode. When a player 
      invokes one of the MCP commands, his input it parsed by the MCP door 
      code and sent out across the ether, likewise if a message comes back 
      through the door it is parsed and passed on to the correct player(s).
  
  Expect to see alot more happening in this area soon! :)
  
  See Also: @door
  
[PREV] [TOP] [NEXT]

INUM()

  Function: inum(<n> [,<key>])
  Related:  itext(<n> [,<key>])
            ibreak(<n>)
            ilev()
   
  These functions, when called within an iter(), return the equivalent
  of ## (itext) or #@ (inum), with reference to the nth more outermost
  iter(), where n=0 refers to the current iter(), n=1 to an iter()
  in which the current iter() is nested, etc.
  
  itext() and inum() can specify a key of '1' to substitute the 
  @dolist/inline value instead of the iter() value essentially duplicating
  '%d<n>' instead of the default '%i<n>'.
   
  Examples:
  > say [iter(red blue green,iter(fish shoe, #@:##))] 
  You say, "1:red 1:red 2:blue 2:blue 3:green 3:green"
   
  > say [iter(red blue green,iter(fish shoe, [inum(1)]:[itext(1)]))]
  You say, "1:red 1:red 2:blue 2:blue 3:green 3:green"
   
  > say [iter(red blue green,iter(fish shoe, [inum(0)]:[itext(0)]))]
  You say, "1:fish 2:shoe 1:fish 2:shoe 1:fish 2:shoe"
   
  > say [iter(red blue green,iter(fish shoe, [itext(1)]:[itext(0)]))]
  You say, "red:fish red:shoe blue:fish blue:shoe green:fish green:shoe"
  
  See Also: iter(), itext(), ilev(), ibreak(), list()

[PREV] [TOP] [NEXT]

inventory

  Command: inventory
  
  Lists what you are carrying and how much money you have.  If alternate 
  inventories are in effect, anything wielded or worn may not be shown up
  by this inventory.  To see these inventories, use the 'wielded' and
  'worn' commands respectively.
  
  See Also: score, worn, wielded, invformat
  
[PREV] [TOP] [NEXT]

invformat

  Attribute: INVFORMAT
  
  This attribute is set via &INVFORMAT.  There is no '@invformat'.
  
  This attribute when set will format the enctor's inventory.  If the enactor
  is @powered FORMATTING (either directly or through a parent/zone chain),
  then you may also use %0-%6 for arguments.  They are:
    %0 - The space separated list of dbref#'s that would normally show 
         up in inventory.
    %1 - The '|' delimited list of names that would normally show up in
         inventory.
    %2 - The space separated list of exit dbref#'s that would normally 
         show up in inventory.
    %3 - The '|' delimited list of exit names that would normally show 
         up in inventory.
    %4 - The space separated list of dbref#'s that are toggled WIELDED
    %5 - The space separated list of dbref#'s that are toggled WORN
    %6 - The backpack name that is globally set. (@admin inventory_name)
  
  If the target is not @powered FORMATTING, then none of the % registers
  will return a result.
  
  See Also: @conformat, @exitformat, @nameformat, attribute formatting

[PREV] [TOP] [NEXT]

INZONE()

  Function: inzone(<zone>)
  Returns the rooms in the specified zonemaster.  If the target is not a
  zonemaster, or if the object is not a valid zone, it returns an empty
  list.  This is _not_ database intensive.
  
  Example:
    > @set here=zonemaster
    > @zone here=#0   (a room)
    > @zone here=#534 (a room)
    > @zone here=#987 (a player)
    > say lzone(here)
    You say "#0 #534 #987"
    > say inzone(here)
    You say "#0 #534"
  
  See Also: @zone, ZONES, lzone(), zwho(), zonecmd()
  
[PREV] [TOP] [NEXT]

ISALNUM()

  Function: isalnum(<string>)
  
  This function matches on the FIRST CHARACTER of the string and checks
  if it's an alphanumerical character (0-9, a-z, or A-Z).  If it is, then
  it returns '1'.  Else it returns a '0'.
  
  Examples:
    > say isalnum(?)
    You say "0"
    > say isalnum(9********)
    You say "1"
  
  See Also: isdbref(), isalpha(), ispunct(), isxdigit(), isdigit(), isspace(),
            isword(), isobjid()
  
[PREV] [TOP] [NEXT]

ISALPHA()

  Function: isalpha(<string>)
  
  This function matches on the FIRST CHARACTER of the string and checks
  if it's an alpha character (a-z or A-Z).  if it is, then it returns '1'.
  If not, it returns a '0'.
  
  Examples:
    > say isalpha(a1238548385**|%*) 
    You say "1"
    > say isalpha(0)
    You say "0"
 
  See Also: isdbref(), isalnum(), ispunct(), isxdigit(), isdigit(), isspace(),
            isword(), isobjid()
  
[PREV] [TOP] [NEXT]

ISCLUSTER()

  Function: iscluster(<target>)
  
  This function returns '1' if <target> belongs to a cluster.
  
  See Also: @cluster

[PREV] [TOP] [NEXT]

ISDBREF()

  Function: isdbref(<string>)
 
  This function will return 1 if the string passed to it is a valid dbref.
  To be a valid dbref the string must begin with '#' and be followed by an
  integer.  Also, the dbref must exist in the current database as a valid
  object.  If the object fails either of these criteria, then a 0 is
  returned.
 
  Example:
     > say isdbref(#-1)
     You say "0"
     > say isdbref(#1)
     You say "1"
     > say isdbref(This is not a dbref)
     You say "0"
  
  See Also: isspace(), isalpha(), isalnum(), isdigit(), isxdigit(), ispunct(),
            isword(), isobjid()

[PREV] [TOP] [NEXT]

ISDIGIT()

  Function: isdigit(<string>)
  
  This function matches on the FIRST CHARACTER of the string and checks
  if it's a number or not (0-9).  If it is, it returns a '1', else it
  returns a '0'.
  
  Examples:
    > say isdigit(What?)
    You say "0"
    > say isdigit(1)
    You say "1"
  
  See Also: isdbref(), isalpha(), isalnum(), isxdigit(), ispunct(), isspace(),
            isword(), isint(), isobjid()
  
[PREV] [TOP] [NEXT]

ISHIDDEN()

  Function: ishidden(<player>)
  
  This function currently is not available to non-bitted players.
  
  Example:
    > say ishidden(#1)
    You say "1"
   
  See Also: visible()
  
[PREV] [TOP] [NEXT]

ISINT()

  function: isint(<string>)
  
  This function matches the returned string to see if it is a valid
  integer.  A valid integer is considered a string that optionally
  starts with a + or a - and contains nothing but numbers.
  
  Examples:
    > say isint(+123)
    You say "1"
    > say isint(-123)
    You say "1"
    > say isint(123)
    You say "1"
    > say isint(123.456)
    You say "0"
  
  See Also: isdbref(), isalpha(), isalnum(), isxdigit(), ispunct(), isspace(),
            isword(), isdigit(), isobjid()

[PREV] [TOP] [NEXT]

ISLOWER()

  Function: islower(<character>)

  This function returns '1' if <character> is a lower case alpha character.

  See Also: isupper()

[PREV] [TOP] [NEXT]

ISNUM()

  Function: isnum(<string>)
 
  This function will return 1 if the argument is a valid number and 0
  if it is not.
 
  Example:
     > say isnum(22223.0000)
     You say "1"
     > say isnum(77)
     You say "1"
     > say isnum(22 L)
     You say "0"
     >say isnum(Bad Numbers!)
     You say "0"
  
  See Also: isspace(), isalpha(), isalnum(), isdigit(), isxdigit(), ispunct()
  
[PREV] [TOP] [NEXT]

ISOBJID()

  Function: isobjid(<string>)
  
  This function will return 1 if the string passed to it is a valid objid.
  To be a valid objid the string must begin with '#' and be followed by an
  integer, contain a ':' and have a valid timestamp.  Ergo, it must be a
  valid objid.  Also, the objid must exist in the current database as a valid
  object.  If the object fails either of these criteria, then a 0 is
  returned.
 
  Example:
     > say objid(#1)
     You say "#1:841303473"
     > say isobjid(#-1)
     You say "0"
     > say isobjid(#1)
     You say "0"
     > say isobjid(#1:841303473)
     You say "1"
     > say isobjid(#1:841303472)
     You say "0"
  
  See Also: isspace(), isalpha(), isalnum(), isdigit(), isxdigit(), ispunct(),
            isword(), isdbref()
  
[PREV] [TOP] [NEXT]

ISPUNCT()

  Function: ispunct(<string>)
  
  This function matches on the FIRST CHARACTER of the string and checks
  if it's a punctuation character (. ! ? etc).  If it is, it returns
  a '1', else it returns a '0'.
  
  Examples:
    > say ispunct(14789asdf!!!!!..???)
    You say "0"
    > say ispunct(?hurm?)
    You say "1"
   
  See Also: isdbref(), isalpha(), isalnum(), isxdigit(), isdigit(), isspace(),
            isword(), isobjid()
  
[PREV] [TOP] [NEXT]

ISSPACE()

  Function: isspace(<string>)
 
  This function matches on the FIRST CHARACTER of the string and checks
  if it's a white-space character (returns, spaces, tabs, etc).  If it
  is, it returns a '1', else it returns a '0'.
  
  Examples:
    > say isspace(space(5))
    You say "1"
    > say isspace(%r)
    You say "1"
    > say isspace(1)
    You say "0"
 
  See Also: isdbref(), isalpha(), isalnum(), isdigit(), isxdigit(), ispunct(),
            isword(), isobjid()
  
[PREV] [TOP] [NEXT]

ISUPPER()

  Function: isupper(<character>)

  This function returns '1' if <character> is an upper case alpha character.

  See Also: islower()

[PREV] [TOP] [NEXT]

ISWORD()

  Function: isword(<string>)
  
  This function will return '1' if the argument is a valid word.  A valid word
  is defined as a string that is totally alpha or contains a hyphen (-) char.
  
  Example:
    > say isword(testing)
    You say "1"
    > say isword(testing0)
    You say "0"
    > say isword(testing-me)
    You say "1"
  
  See Also: isalnum(), isalpha()
  
[PREV] [TOP] [NEXT]

ISXDIGIT()

  Function: isxdigit(<string>)
 
  This function matches on the FIRST CHARACTER of the string and checks
  if it's a hexidecimal digit or not (0-9, A-F).  If it is, it returns
  a '1', else it returns a '0'.
 
  Examples:
    > say isxdigit(freep?)
    You say "1"
    > say isxdigit(G)
    You say "0"
 
  See Also: isdbref(), isalpha(), isalnum(), isdigit(), ispunct(), isspace(),
            isword(), isobjid()
  
[PREV] [TOP] [NEXT]

ITER()

  Function: iter(<list>, <eval>[, <delim> [, <output separator>]])
 
  <list> is a <delimiter>-separated list of strings, which can be object
  numbers, attributes, or arbitrary words.  <eval> is a string that is to be
  evaluated once for each item in <list>, replacing the special symbol ## with
  the corresponding item from <list>.  A space-separated list of the results
  of these evaluations is returned to the caller.  The effect is very similar
  to @dolist, except that the results are made into a list and returned, not
  executed.  The special symbol #@ can be used to return the positional match
  of the current item of the list.  You may specify a filler for the string.
  
  You may use %i0-%i9 for itext(0) to itext(9).  
  You may use %il for the outermost layer, equiv to itext(ilev())
   
  Examples:
    > say iter(This is a test,-## #@-)
    You say "-This 1- -is 2- -a 3- -test 4-"
    > say iter(This is a test,strlen(##))
    You say "4 2 1 4"
    > say iter(lnum(10),mul(mul(##,##),10))
    You say "0 10 40 90 160 250 360 490 640 810"
    > say iter(Was it a cat I saw,words(##),s)
    You say "1 4 1"
    > say iter(This is a test,##,,***)
    You say "This***is***a***test"
    > say iter(This is a test,%i0,,***)
    You say "This***is***a***test"
  
  See Also: nsiter(), citer(), @dolist, parse(), list(), list(), itext(), 
            inum(), ilev(), ibreak()
 
[PREV] [TOP] [NEXT]

ITEXT()

  Function: itext(<n> [,<key>])
  Related:  inum(<n> [,<key>])
            ibreak(<n>)
            ilev()
   
  These functions, when called within an iter(), return the equivalent
  of ## (itext) or #@ (inum), with reference to the nth more outermost
  iter(), where n=0 refers to the current iter(), n=1 to an iter()
  in which the current iter() is nested, etc.
  
  itext() and inum() can specify a key of '1' to substitute the 
  @dolist/inline value instead of the iter() value essentially duplicating
  '%d<n>' instead of the default '%i<n>'.
   
  Examples:
  > say [iter(red blue green,iter(fish shoe, #@:##))]
  You say, "1:red 1:red 2:blue 2:blue 3:green 3:green"
   
  > say [iter(red blue green,iter(fish shoe, [inum(1)]:[itext(1)]))]
  You say, "1:red 1:red 2:blue 2:blue 3:green 3:green"
   
  > say [iter(red blue green,iter(fish shoe, [inum(0)]:[itext(0)]))]
  You say, "1:fish 2:shoe 1:fish 2:shoe 1:fish 2:shoe"
   
  > say [iter(red blue green,iter(fish shoe, [itext(1)]:[itext(0)]))]
  You say, "red:fish red:shoe blue:fish blue:shoe green:fish green:shoe"
  
  See Also: iter(), inum(), ilev(), ibreak(), list()
  
[PREV] [TOP] [NEXT]

join

  Command: join <user>
  
  The command will check your permissions over the target's location and
  over your current location.  If you are found to have control over both
  of those location, then you are brought to the targeted user's location.
  
  See Also: grab, @teleport
  
[PREV] [TOP] [NEXT]

JUMP_OK

  Flag: JUMP_OK(J)  
  
  When a room or thing is set JUMP_OK, then that location can
  be teleported into by anyone. See @teleport.
  
  See Also: @teleport, ABODE
  
[PREV] [TOP] [NEXT]

KEEPALIVE TOGGLE

  Toggle: KEEPALIVE
  
  This toggle, when set on a valid player, will enable a NOP telnet code
  to be transmitted to the target player.  This is useful for keeping
  timed connections alive for their full duration.  Especially handy
  for broken routers, NATs, firewalls, or other issues.
  
  Note: Some rare clients, depending on version, does not handle the
        KEEPALIVE toggle cleanly, and will garble input randomly
        from its use.  If you run into commands seemingly not working,
        then you may need to remove this toggle.
  
[PREV] [TOP] [NEXT]

KEEPFLAGS()

  Function: keepflags(<list>,[&|]<flag(s)>[,<delim>[,<output delim>][,<type>]])
  
  The keepflags function keeps all dbref#'s in the given list that contains
  the flags specified.  You must use one of the operators for flag checks:
     & - match ALL flags for each dbref#.
     | - match ANY of the flags for each dbref#.
  
  This function returns the list of dbref#'s that correctly match up the
  flags you specified.
  
  You may specify a <type> of 1 to return values as objid's.
  
  Examples: (#1 is a wizard, nothing else is)
    > say keepflags(#1 #2 #3 #4,&W)
    You say "#1"
    > say keepflags(#1 #2 #3 #4,&Ws)
    You say ""
    > say keepflags(#1 #2 #3 #4,|Ws)
    You say "#1"
  
  Note: You may specify 'P' for players, 'R', for rooms, and 'E' for exits
        as valid flag checks.
  
  See Also: remflags(), remtype(), keeptype()

[PREV] [TOP] [NEXT]

KEEPTYPE()

  Function: keeptype(<string>,<type(s)>[,<delim>[,<output delim>][,<type>]])
 
  The keeptype function KEEPS all types of 'type' from the string 'string'.
  The different types are standard MUSH object types:
      PLAYER - specifying robots and players
      THING  - specifying objects
      ROOM   - specifying rooms
      EXIT   - specifying exits
      OTHER  - specifying anything not fitting a MUSH 'type'.
  
  You may specify optional separators and output separators.   You may specify
  more than one type at once.
  
  If you specify <type> as 1, the results are always returned as dbref#'s, 
  otherwise the values are returned as the element in <string>.
  
  If you specify <type> as 2, the results are returned as objid's.
    
  Examples: (#0 is a room, #1 #55 and #584 are players, #-1 is invalid (other))
    > say keeptype(#0 #1 #55 #584 #-1,player)
    You say "#1 #55 #584"
    > say keeptype(#0 #1 #55 #584 #-1,exit)
    You say ""
    > say keeptype(#0 #1 #55 #584 #-1,other)
    You say "#-1"
    > say keeptype(#0@#1@#55@#584@#-1,player,@,|)
    You say "#1|#55|#584"
    > say keeptype(#0 #1 #55 #584 #-1,player other)
    You say "#1 #55 #584 #-1"
  
  See Also: delete(), remove(), ldelete(), replace(), remtype()
  
[PREV] [TOP] [NEXT]

KEY

  Flag: Flag: KEY(K)  
  
  When set on an object prevents puppets from picking it up.
  
  See Also: PUPPET, MONITOR
  
[PREV] [TOP] [NEXT]

kill

  Command: kill <player> [=<cost>]
  Attempts to kill the specified player. Killing costs <cost> coins, which
  gives you a <cost>% chance of killing the player. Thus, spending 100 
  coins always works (except against wizards and immortals, who can never be
  killed). Players cannot be killed in rooms which have been set HAVEN or
  which they control.  If you don't specify a cost, the default is 10 (for a
  10% chance of success).  The player, if killed, receives <cost>/2 coins in
  insurance.
  
  See Also: @akill, @kill, @okill, BEING KILLED, IMMORTAL, ROYALTY
  
[PREV] [TOP] [NEXT]

LADD()

  Function: ladd(<list of numbers>[,<delim>])
  
  This function takes a list of numbers and adds them all together and returns
  the result.  It may take an optional delimiter.
  
  Example:
    > say ladd(1 1 1 1 1)
    You say "5"
    > say ladd(1@1@1@1@1,@)
    You say "5"
  
  See Also: lsub(), ldiv(), lmul(), lmax(), lmin(), lavg()
  
[PREV] [TOP] [NEXT]

LAND()

  Function: land(<list of numbers>[,<delim>])
  
  This function goes through the list of numbers and and's the numbers
  together.  If a '0' is found in the list, it ends evaluation there
  and returns '0'.  You may specify an optional delimiter.
  
  Example:
    > say land(0 1 1)
    You say "0"
    > say land(0@1@1,@)
    You say "0"
  
  See Also: lor(), lnor(), lxor(), lxnor()
  
[PREV] [TOP] [NEXT]

LAST()

  Function: last(<list> [,<delim> [,<key>]])
  
  This function returns the last element in the list.  You may specify an 
  optional separator (delim), otherwise a default of a space is used.
  
  <delim> may be used to specify a word delimiter other than a space.
  
  <key> may be specified as '1' to allow last() to be ansi-aware.
  
  Examples:
    > say last(this is a test)
    You say "test"
    > say last(one@two@three,@)
    You say "three"
  
  See Also: first(), extract(), extractword(), randextract(), elements()
  
[PREV] [TOP] [NEXT]

LASTCREATE()

  Function: lastcreate(<target>,<type>)
  
  This function will return the dbref# of the last <type> that was created
  by the target.  If the type was not created by the target, it will return
  a '#-1'.  Possible types are:
                r - rooms
                t - things (objects)
                e - exits
                p - players
  
  If an invalid type is given, it will return '#-1'.
  
  Example:
    > say lastcreate(me,t)
    You say "#-1"
    > @create MyObject
    MyObject created as object #1369
    > say lastcreate(me,t)
    You say "#1369"
  
  See Also: @create, @dig, @open, @clone
  
[PREV] [TOP] [NEXT]

LATTR()

  Function: lattr(<obj>[/<wild>][,<targ> [,<type>][,<flg>][,<regexp>][,<tree>])
 
  Returns a list of the attributes set on <obj>.  If <wild> is given, only
  attributes matching it are returned.  If you specify <regexp> as true (1)
  then the wildcard pattern may be regular expressions.  You may specify the 
  optional target if you wish to return attributes that only the target
  could see.  If you do not have control over target, it defaults to yours.
  If the <tree> option is set to '1', it returns attributes based on Penn's
  trees. 
   
  You may specify a type to check against.  The following types exist:
    + - List existing lock attributes on player.
    $ - list all attributes that are $commands.
    ^ - list all attributes that are ^listens.
    & - list all attributes that contain all attribute flags <flags>.
    | - list all attributes that contain any attribute flags <flags>.
    l - list total attributes and pages of attributes.
    # - page (1, 2, etc) for attribute listing.  118 for 32byte attrs.
    > - find the alphanumerical largest attribute name.
    < - find the alphanumerical smallest attribute name.
    ~ - [~#1-#2] list attribs starting at #1 until count of #2.
  
  { see 'help lattr2' to continue }

[PREV] [TOP] [NEXT]

LATTR2

  CONTINUED
  Function: lattr(<obj>[/<wild>][,<targ> [,<type>][,<flg>][,<regexp>][,<tree>])
  
  Example:
    > @va me=$whee:@pemit %#=you did a whee.
    > @vb me=^*wow*:@pemit %#=You're hearing a wow.
    > say lattr(me)
    You say "Desc VA VB VC VE Last VV Domain XX"
    > say lattr(me/v*)
    You say "VA VB VC VE VV"
    > say lattr(me/v*,*TinyPlayer)
    You say "VC VE VV"
    > say lattr(me/v*,,$)
    You say "VA"
    > say lattr(me/v*,,^)
    You say "VB"
    > say lattr(me/^..$,,,1)
    You say "VA VB VC VE VV XX"
 
  See Also: @dolist, attrcnt(), vattrcnt(), cluster_lattr()
  
[PREV] [TOP] [NEXT]

LAVG()

  Function: lavg(<list of numbers>[,<delim>])
  
  This function takes a list of numbers and takes the average of all the 
  numbers added together.  It may take an optional delimiter.
  
  Example:
    > say lavg(2 4 6 8 10)
    You say "6"
    > say lavg(2@4@6@8@10,@)
    You say "6"
  
  See Also: lsub(), ldiv(), lmul(), lmax(), lmin(), ladd()
  
[PREV] [TOP] [NEXT]

LCMDS()

  Function: lcmds(<object> [,<output delim> [,<type>]])
  
  This function returns the name of any command that exits on the
  object.  You may specify $-commands or ^-listens to search for.
  The output separator defaults at a space, but you may wish to
  specify a delimiter as commands may contain spaces.
  The following types exist:
    $ - list all commands on the target object.
    ^ - list all listens (of the ^ variety) on the target object.
  
  Examples:
    > @va thing=$test:@pemit %#=testing 1 2 3
    > @vb thing=$test * test *:@pemit %#=You tested %0 with %1.
    > @vc thing=^* says *:@pemit %#=%0 said %1.
    > say lcmds(thing)
    You say "test test * test *"
    > say lcmds(thing,|)
    You say "test|test * test *"
    > say lcmds(thing,,^)
    You say "* says *"
    > say lcmds(thing,|,^)
    You say "* says *"
  
  See Also: lattr()
  
[PREV] [TOP] [NEXT]

LCON()

  Function: lcon(<object>[/switch] [[,<switch>] [,<sep>] [,<name>] [,<objid>]])
 
  Returns a space-separated list of the contents of <object>.
  It takes specific switches as an option:
      /PLAYER    -- lists all TYPE players in the contents.
      /OBJECT    -- lists all TYPE objects in the contents.
      /CONNECT   -- lists all connected players in the contents.
      /PUPPET    -- lists all flag type 'PUPPET' in the contents.
      /LISTEN    -- lists all listening things in the contents.
      /CMDLISTEN -- lists all listening/command things in the contents.
      /VISIBLE   -- lists only things visible (not-dark) as if looking.
  
  You may optionally specify the switch as the second argument, without 
  the '/' before it, to do the same thing.  This will cause any /switch
  you have in the first argument to assume it's part of the object name.
  The function takes an output separator as an optional third argument.

  If the optional <name> argument is set to '1', lcon will display the object
  names instead of the #dbrefs.  This is not compatible with objid.
  
  If the optional <objid> argument is set to '1', lcon will display the
  objid's in the list.
  
  By default, Rhost returns '#-1' if lcon() returns no objects. If the
  config option mux_lcon_compat is set to '1', lcon() will return an empty
  string instead, for MUX compatibility.
  
  Example:
    > inv
    t1(#366)
    radio(#223p)
    > say lcon(me)
    You say "#366 #223"
    > say lcon(me/puppet)
    You say "#223"
    > say lcon(me,puppet)
    You say "#223"
    > say lcon(me,puppet,,,1)
    You say "#223:8281828210"
  
  See Also: lexits(), @dolist
  
[PREV] [TOP] [NEXT]

LCSTR()

  Function: lcstr(<string>)
 
  Returns <string> with all letters converted to lowercase.
 
  Example:
    > say lcstr(This is something I want to TEST)
    You say "this is something I want to test"
  
  See Also: capstr(), ucstr()
  
[PREV] [TOP] [NEXT]

LDELETE()

  Function: ldelete(<list>, <pos> [<pos2>...<posN>] [, <sep>])
 
  This function removes a word from <list> by position.
  
  <delim> may be used to specify a delimiter other than a space.
  
  The <pos> fields may be negative to take the argument from the right
  instead of the left.
   
  Examples:
    > say ldelete(This is not a test, 3)
    You say "This is a test"
    > say ldelete(Yet@Another@Mundane@List, 3, @)
    You say "Yet@Another@List"
  
  See Also: extract(), extractword(), insert(), replace(), rindex()
  
[PREV] [TOP] [NEXT]

LDIV()

  Function: ldiv(<list of numbers>[,<delim>])
  
  This function takes the first number in the list, and divides from that
  all the other numbers in the list.  All zeros are ignored.  It may
  take an optional delimiter.
  
  Example:
    > say ldiv(20 2 0 0 0 0 2)
    You say "5"
    > say ldiv(20@2@0@0@0@0@2,@)
    You say "5"
  
  See Also: lavg(), lmul(), lsub(), lmax(), lmin(), ladd()
  
[PREV] [TOP] [NEXT]

leave

  Command: leave[/<switch>]
  This command leave allows you to exit an object you have entered, arriving
  in the same location as the object. You may not leave an object if you fail
  that object's LeaveLock (but you may still @teleport out, use an exit inside
  the object, or go home).
 
  The following switch is recognized:
     /quiet   - Don't perform the @oleave/@aleave or @olfail/@alfail
                attributes on the entered object, and don't perform the
                @oxenter attribute on your new location.  This switch
                only works if you control your current location.
 
  See Also: enter, @lock, ENTER_OK, @aleave, @alfail, @leave, @lfail, @oleave,
            @olfail, @oxenter
  
[PREV] [TOP] [NEXT]

LEFT()

  Function: left(<string>, <position> [,<key>])
   (Alias): strtrunc(<string>,<position> [,<key>])
  
  Left will take a string and return the left-most position of characters
  from the string.
  
  You may specify a <key> of 1 to tell left() to take the string raw and
  not do ansi-aware processing.  This will speed up the function.
  The default is '0' which does ansi processing.
  
  Note: the config param 'ansi_default' handles if the ansi handling is 
        configured default or not.  In which case the 'key' is reversed.
   
  Example:
    > say left(this is a test,5)
    You say "this "
    > say left(this is a test,10000)
    You say "this is a test"
    > say left(this is a test,0)
    You say ""
  
  See Also: right(), mid(), delete(), ljc(), rjc()
  
[PREV] [TOP] [NEXT]

LEMIT()

  Function: lemit(<text>)
  
  The lemit() function works just like @emit/room.  It will display <text> at
  the outermost room from the enactor.  If no room is found, no text will be
  outputted.  The SIDEFX flag is required to be able to use this function.
  
  Type @list options to see if this side-effect function is enabled.
  
  Examples:
    > say lemit(boo!)
    boo!
    You say ""
  
  See Also: emit(), pemit(), oemit(), @emit, SIDEEFFECTS
  
[PREV] [TOP] [NEXT]

LEXITS()

  Function: lexits(<loc> [,<output separator>] [,<name>] [,<key>] [,<objid>])
 
  Returns a space-separated list of the exits in <loc> and its parents.
  Dark exits are not returned unless you own the location.
  Parented exits that are set PRIVATE will not be displayed.
  The function takes an output separator as an optional second argument.
 
  If the optional <name> argument is '1', lexits will display object names
  instead of #dbrefs.  This is not compatible with <objid>.
  
  If the optional <objid> argument is '1', then lexits will display the
  objid's instead of the dbref#'s.
  
  The following optional keys are available:
    0 - list all children of the target (default)
    n - List 'n'th 400 children of the target. 
        NOTE: 'n' will be any number from 1 to however many 'pages'
              So '1' would be first 400, '2' would be second 400, etc.
    l - List total pages and total children of target.
     
  Example:
    > look here
    The Town Square
    You are in the town square.  All around you .....
    Obvious exits:
    foo  up  southeast south
    > say lexits(here)
    You say "#302 #10 #9 #8"
    > say lexits(here,,,,1)
    You say "#302:8185018282 #10:8919291929 #9:8959295828 #8:8582828281"
  
  See Also: lcon(), @dolist, PARENT OBJECTS
  
[PREV] [TOP] [NEXT]

LFLAGS()

  Function: lflags(<object>[/<attribute>])
  
  Lflags works just like flags, but instead of returning the character
  representation will return the string representation.  You may also
  get the flags of the specified attribute.  You may wildcard the 
  attribute and lflags() will return the flags of the first attribute
  matched.
  
  Examples:
    > say lflags(me)
    You say "PLAYER CONNECTED"
    > say flags(me)
    You say "Pc"
    > say lflags(me/desc)
    You say "NOPROG"
    > say flags(me/desc)
    You say "p"
  
  See Also: flags(), hasflag()
  
[PREV] [TOP] [NEXT]

LIGHT

  Flag: LIGHT(l)
  
  An object or exit that is set LIGHT is visible even when inside a DARK
  location.  If an object is set both DARK and LIGHT, then its contents are
  visible even though the object itself is not.
  
  See Also: DARK
  
[PREV] [TOP] [NEXT]

LINK()

  Function: link(<object>,<target>)
  
  The link() function is a side-effect for the @link command.  All
  restrictions and permissions of that command follow this function.  The
  SIDEFX flag is required to use link().
  
  Type @list options to see if this side-effect is enabled.
  
  Example:
  > @link me=here
  Home set.
  > say link(me,here)
  You say ""
  
  See Also: @link, SIDEEFFECTS
  
[PREV] [TOP] [NEXT]

LINK_OK

  Flag: LINK_OK(L)  
  
  If a room is LINK_OK, anyone can link exits to it (but 
  still not from it). It has no meaning for people, things, or exits.
  
  See Also: @link
  
[PREV] [TOP] [NEXT]

LINKING

  Topic: LINKING
 
  You can link to a room if you control it, or if it is set LINK_OK or ABODE.
  Being able to link means you can set the homes of objects or yourself to
  that room if it is set ABODE, and that you can set the destination of exits
  to that room if it is LINK_OK.
  
  See Also: @link, ABODE, LINK_OK
  
[PREV] [TOP] [NEXT]

list functions

  Function Lists: List Functions
  
  aindex()      - Appends a string at a position in another string.
  aiindex()     - Similar to aindex(), but allows adding to an empty string.
  andflags()    - Checks if a target has all the indicated flags.
  caplist()     - Performs a capstr() on a list of words.
  citer()       - Similar to iter(), but by character instead of word.
  delextract()  - Returns words specified that are not present in a list.
  elements()    - Returns specific elements from a list
  elementsmux() - Same as elements(), but null arguments are valid here.
  elist()       - Generates English-readable text from a list
  extract()     - Returns a string of <length> words.
  extractword() - Returns a string of <length> words (multi-delim).
  filter()      - Filters a list through an attribute evaluation
  first()       - Returns the first element of a list.
  flags()       - Returns a flag list for a specified object.
  fold()        - Iteriatively processes a list through a function.
  foreach()     - Processes a list of characters through a function.
  ibreak()      - Break out of the specified iteration of iter()/list().
  iindex()      - Similar to index, but inserts <string> at <position>.
  ilev()        - Returns the level of recursion you are at in iter().
  index()       - Like extract(), but supports items being more than one word.
  insert()      - Inserts a word into a list.
  inum()        - The equivalant of #@ inside an iter()
  iter()        - Iterates over a list, and processes code for each member.
  itext()       - The equivalent of ## inside an iter()
  keeptype()    - Strips dbrefs from a list that are not of a certain type.
  ladd()        - Takes a list of numbers and adds them together.
  land()        - Goes through a list of numbers, and'ing the numbers together.
  last()        - Returns the last element of a list.
  lavg()        - Takes a list of numbers and returns the average of those.

  { Continued in list functions2 }

[PREV] [TOP] [NEXT]

list functions2

  Continued from list functions
  
  ldelete()     - Removes a word from a list at a certain position.
  ldiv()        - Takes a number, and divides a list against it.
  listdiff()    - Returns differences (unsorted) of two lists.
  listinter()   - Returns the intersection (unsorted) of two lists.
  listmatch()   - Tries to match a pattern to a string, and returns matches.
  listunion()   - Returns the union (unsorted) of two lists.
  lmax()        - Returns the maximum value from a list.
  lmin()        - Returns the minimum value from a list.
  lmul()        - Takes a list of numbers and multiplies them together.
  lnor()        - Takes a list and returns the nor of its values.
  lnum()        - Returns a list of numbers from 0 to number-1
  lnum2()       - Returns a list of numbers from X to number-1
  lor()         - Or's a list of values together
  lrand()       - Returns a specified random number of elements from a list.
  lreplace()    - Replaces words in a list.
  lsub()        - Takes a list, and subtract the values from the first element.
  lxnor()       - Performs an exclusive nor on a list of booleans.
  lxor()        - Performs an exclusive or on a list of booleans.
  map()         - Almost like iter() working on an u() function.
  match()       - Matches a wildcard pattern against a list of words.
  member()      - Returns the position of a matched pattern in a list.
  
  { Continued in list functions3 }
  
[PREV] [TOP] [NEXT]

list functions3

  Continued from list functions2
      
  mix()         - Similar to map(), but slightly different. ;)
  munge()       - Munges two lists through an u() function.
  nsiter()      - Like iter, but with different delimiter parsing.
  nummatch()    - Returns the number of matches of a pattern.
  nummember()   - Returns the number of literal list matches.
  numwildmatch()- Returns the number of matches against a pattern.
  parse()       - Parses a list through a function evaluation.
  randmatch()   - Resembles totmatch(), but with randomized results.
  randextract() - Similar to extract(), but randomizes output.
  remove()      - Removes a word from a list.
  remtype()     - Returns a list of dbrefs, filtering out <type>.
  rest()        - Returns the remnant of a list after a certain element.
  reverse()     - Reverses the order of characters in a string.
  revwords()    - Reverses the order of words in a string.
  rindex()      - Similar to index().
  safebuff()    - Secures output against overflowing LBUF
  setdiff()     - Returns the difference of two lists.
  setinter()    - Returns the intersection of two lists.
  setunion()    - Returns the union of two lists.
  sort()        - Sorts a list.
  sortby()      - Sorts a list by passing it through a function.
  sortlist()    - Sorts 2 or more lists by the specified order type.

  { Continued in list functions4 }
[PREV] [TOP] [NEXT]

list functions4

  Continued from list functions3
  
  step()        - Steps through a list X elements at a time. 
  strfunc()     - Transforms a string of arguments to proper arguments.
  strmath()     - Applies math to a string.
  totmatch()    - Returns all matches of a pattern against a string.
  totmember()   - Returns all matches of a pattern against a list.
  totwildmatch()- Like wildmatch(), but returns every match.
  while()       - Evaluates a list until a condition is reached.
  wildmatch()   - Matches a pattern against a string.
  
[PREV] [TOP] [NEXT]

LIST()

  Function: list(<list>, <eval>[, <delim> ][, <header>][, <target>])
 
  This function works just like iter() but returns each result on a separate
  line thereby bypassing the buffer limit that RhostMUSH contains.  Each line
  will be a new line and will not be space delimited and will be displayed
  PRIOR to the output of the command calling it.
  
  <list> is a <delimiter>-separated list of strings, which can be object
  numbers, attributes, or arbitrary words.  <eval> is a string that is to be
  evaluated once for each item in <list>, replacing the special symbol ## with
  the corresponding item from <list>.  A space-separated list of the results
  of these evaluations is returned to the caller.  The effect is very similar
  to @dolist, except that the results are made into a list and returned, not
  executed.  The special symbol #@ can be used to return the positional match
  of the current item of the list.  list() will work without SIDEFX.  You may 
  specify an optional <header> which will be displayed prior to the lists.
  <target> optionally sends output to the target player.  You must control
  the target or it will default to the enactor.
  
  You may use %i0-%i9 for itext(0) to itext(9).  
  You may use %il for the outermost layer, equiv to itext(ilev())
   
  {See 'help list2' for examples}

[PREV] [TOP] [NEXT]

LIST2

  Function: list(<list>, <eval>[, <delim> ][, <header>][, <target>])
 
  Examples:
    > @emit [list(This test,-## #@-)]
    -This 1-
    -test 2-
    > @emit AA[list(This@is,strlen(##),@)]BB   (notice the output)
    4
    2
    AABB
    > @wait 0={@emit AA;@emit [list(This@is,strlen(##),@)]BB}
    AA
    4
    2
    BB
    > @emit [list(This@is,strlen(%i0),@,AA)]BB
    AA
    4
    2
    BB
    
  See Also: nsiter(), citer(), @dolist, parse(), list()
  
[PREV] [TOP] [NEXT]

LISTCOMMANDS()

  Function: listcommands()
  
  This function will return all the commands that you have access to.
  
  Example:
    > say listcommands()
    You say "@@ @alias ... "
  
  See Also: listfunctions(), listtoggles()
  
[PREV] [TOP] [NEXT]

LISTDIFF()

  Function: listdiff(<list1>, <list2>[, <delim> [, <sep>] [,<type>]]])
  
  This function returns the difference of two sets, keeping the order of the
  first set.  Any element in <list1> that is not in <list2> will be 
  displayed.  The following types exist:
  
      0 - remove duplicates from lists (default)
      1 - show list with duplicates
  
  Example:
    > say listdiff(foo baz gleep bar foo foo, bar moof gleep)
    You say, "foo baz"
    > say listdiff(foo baz gleep bar foo foo, bar moof gleep,,-)
    You say, "foo-baz"
    > say listdiff(foo baz gleep bar foo foo, bar moof gleep,,-,1)
    You say, "foo-baz-foo-foo"
  
  See Also: listunion(), listinter(), setdiff()

[PREV] [TOP] [NEXT]

listen

  Command: listen [<object>]
  Displays the sounds of <object>, or the location you're in if you don't
  specify an object.  Specifying object as <name> or #<dbref> or 'me' or
  'here' is legal.  You can also use listen to hear objects held by other
  people.  Just use 'listen <person>'s <object>'.
  
  This command is not to be confused with @listen.
  
  See Also: look, smell, touch, taste, @slisten, @salisten, @solisten
  
[PREV] [TOP] [NEXT]

LISTENING

  Topic: LISTENING
 
  Thee are two ways to listen for something in a room. The easiest way
  is to use a combination of @listen and @ahear/@aahear/@amhear. The
  second way is to use a "^" pattern in an attribute, similar to the way
  "$" is used for user-defined commands. The attribute takes the form:
  '^<pattern>:<action>'.
 
  The ^-pattern check is only performed on objects with their MONITOR flag
  set.  The criterion for triggering a pattern-listen is the same as that for
  triggering an @ahear - the object cannot trigger its own listen patterns.
  All matching attributes have their <action>s performed, not just the first.
  Also, attributes with the no_command flag set are not checked for 
  ^-patterns, and neither are objects' parents.
 
  Example:
    > @va test = ^* says "foo *":say I got a foo with %1!.
    Set.
    > @set test=monitor
    test grows ears and can now hear.
    > say foo bar
    You say "foo bar"
    test says "I got a foo with bar!."
  
  See Also: @ahear, @listen, @set, PUPPET, AUDIBLE, MONITOR
  
[PREV] [TOP] [NEXT]

LISTFLAGS()

  Function: listflags()
  
  This function will return all the flags that you have access to.
  
  Example:
    > say listflags()
    You say "ABODE(A) ARCHITECT(B) ... " 
  
  See Also: listcommands(), listfunctions()
  
[PREV] [TOP] [NEXT]

LISTFUNCTIONS()

  Function: listfunctions([keyval])
  
  This function will return all the functions that you have access to.
  Valid keyvalues are:
    0 - List all functions (built-in and user-defined)  This is the default.
    1 - List only the built-in functions.
    2 - List only the user-defined functions.
  
  Example:
    > say listfunctions()
    You say "@@ ABS ... "
   
  See Also: listcommands(), listtoggles()
  
[PREV] [TOP] [NEXT]

LISTINTER()

  Function: listinter(<list1>, <list2>[, <delim> [, <sep>] [,<type>]]])
  
  This function returns the intersection of two sets, keeping the order of the
  first set.  Any element in <list1> that is in <list2> will be
  displayed.  The following types exist:
  
      0 - remove duplicates from lists (default)
      1 - show list with duplicates
  
  Example:
    > say listinter(foo baz gleep bar foo bar, bar moof gleep)
    You say, "gleep bar"
    > say listinter(foo baz gleep bar foo bar, bar moof gleep,,-)
    You say, "gleep-bar"
    > say listinter(foo baz gleep bar foo bar, bar moof gleep,,-,1)
    You say, "gleep-bar-bar"
  
  See Also: listunion(), listdiff(), setinter()


[PREV] [TOP] [NEXT]

LISTMATCH()

  Function: listmatch(<string>, <pattern>[, <delimiter>])
 
  The listmatch() function tries to match <pattern> against <string>. If it
  succeeds, it returns a list of the text that matched each wildcard (up to
  ten) in <pattern>. Normally, the list is space-separated, but if
  <delimiter> is specified, the list will be separated by that instead.
 
  If it fails, or <pattern> contains no wildcards, it returns an empty
  string.
 
  Example:
    > say listmatch(This is a test, *test)
    You say "This is a "
    > say listmatch(hit the troll with the sword, hit * with *, /)
    You say "the troll/the sword"
    > say listmatch(kow, wok)
    You say ""
  
  See Also: setqmatch(), match(), totmatch(), wildmatch()
  
[PREV] [TOP] [NEXT]

LISTNEWSGROUPS()

  Function: listnewsgroups([<player>])
  
  This function serves two purposes.  If no arguments are given, it will
  display all the news groups currently available.  If you specify a player
  that you control, it will list all the news groups that player has access
  to.  If you do not control the player, or if the player is not valid, it
  returns an error message.
  
  Examples:
    > say listnewsgroups()
    You say "admin info general"
    > say listnewsgroups(me)
    You say "info general"
  
  See Also: news, news cmdlist
  
[PREV] [TOP] [NEXT]

LISTPROTECTION()

  Function: listprotection(<player> [,<key>,<delim>])
  
  This function will list all the 'protected names' (ergo @protect) that the
  player has.  If no key is specified (or a 0 specified as key) it lists all
  protected names.  The following keys exist:
  
    0 - list all protected names of the target player (default)
    1 - list only the protected names that are marked as aliases.
    2 - list only the protected names that are not marked as aliases.
  
  If the player is invalid, it returns an error, otherwise it returns an
  empty string if nothing is found for that criteria.
  
  The default deliminator is a colon (:).
  
  Example:
    > say listprotection(me)
    You say "Bob|Bobby"
  
  See Also: @protect, @name, @alias

[PREV] [TOP] [NEXT]

LISTRLEVELS()

  Function: listrlevels()
  
  Returns all available levels in a space separated list.  This function
  takes no arguments.
  
  Example:
    > say listrlevels()
    You say "Real Shadow Auf Umbra"
  
  See Also: txlevel(), rxlevel(), chkreality()

[PREV] [TOP] [NEXT]

LISTS

  Topic: LISTS
 
  A list is a string, usually stored in an attribute (currently any of the
  va-vz attributes), which is a series of words, separated by one or more
  spaces.  The following would be a list (denoted on the ends by ', which is
  not actually in the string): 'one two three four five'.  The functions
  first(), rest(), cat(), member(), and remove(), all work on lists.
   
  See Also: cat(), first(), member(), remove(), rest(), randextract()
  
[PREV] [TOP] [NEXT]

LISTTOGGLES()

  Function: listtoggles()
  
  This function will return all the toggles that you have access to.
  
  Example:
    > say listtoggles()
    You say "VANILLA_ERRORS(V) ... "
    
  See Also: listcommands(), listfunctions()
  
[PREV] [TOP] [NEXT]

LISTUNION()

  Function: listunion(<list1>, <list2>[, <delim> [, <sep>] [,<type>]]])
  
  This function returns the union of two sets, keeping the order of the
  first set.  Any element in <list2> that is not in <list1> will be
  appended to the list in <list1>.  The following types exist:
  
      0 - remove duplicates from lists (default)
      1 - show list with duplicates
  
  Example:
    > say listunion(foo baz gleep bar foo bar, bar moof gleep)
    You say, "foo baz gleep bar moof"
    > say listunion(foo baz gleep bar foo bar, bar moof gleep,,-)
    You say, "foo-baz-gleep-bar-moof"
    > say listunion(foo baz gleep bar foo bar, bar moof gleep,,-,1)
    You say, "foo-baz-gleep-bar-foo-bar-moof"
  
  See Also: listinter(), listdiff(), setunion()

[PREV] [TOP] [NEXT]

LIT()

  Function: lit(<string>)
  
  This function returns the string 'as-is' without formatting or evaluation.
  
  Examples:
    > say [space(3)]hi[space(3)]
    You say "   hi   "
    > say [lit([space(3)]hi[space(3)])]
    You say "[space(3)]hi[space(3)]"
  
[PREV] [TOP] [NEXT]

LJ()

  Functions: ljust(<string>, <length>[, <fill>])
  Functions: lj(<string>, <length>[, <fill>])
 
  This function pads a string with trailing <fill> characters, or with spaces
  if no fill character is given) ("left-justifies") so it is <length> long.
  If <string> is longer than <length>, the <string> is returned; it is not
  truncated.  <fill> may be a string of more than one character.
  
  If you wish to use ansified filler, use printf() instead.
   
  Examples:
    > say -[ljust(foo,6)]-
    You say "-foo   -"
    > say %r0[ljust(foo,6)]7%r01234567
    You say "
    0foo   7
    01234567"
    > say =[ljust(bar,5,.)]=
    You say "=bar..="
  
  Alternate:
    > say =[printf($:.:-5s,bar)]=      (the '-' specifies left justifies)
    You say "=bar..="
  
  See Also: ljc(), rjust(), rjc(), strlen(), printf(), wrap()
  
[PREV] [TOP] [NEXT]

LJC()

  Function: ljc(<string>, <length> [,<fill>])     'Left Justify and Cut'
   
  This function pads a string with trailing blanks to left justify the 
  <string> within a field of <length> characters. If <string> is longer 
  than <length> it will be cut to fit within a field of <length> characters.
  You may specify an optional fill character.
  
  If you wish to use ansified filler, use printf() instead.
   
  Examples:
    > say -[ljc(foo,6)]-
    You say "-foo   -"
    > say -[ljc(this is foo,6)]-
    You say "-this i-"
   
  See Also: ljust(), rjc(), rjust(), printf(), wrap()
 
[PREV] [TOP] [NEXT]

LJUST()

  Functions: ljust(<string>, <length>[, <fill>])
  Functions: lj(<string>, <length>[, <fill>])
 
  This function pads a string with trailing <fill> characters, or with spaces
  if no fill character is given) ("left-justifies") so it is <length> long.
  If <string> is longer than <length>, the <string> is returned; it is not
  truncated.  <fill> may be a string of more than one character.
  
  If you wish to use ansified filler, use printf() instead.
   
  Examples:
    > say -[ljust(foo,6)]-
    You say "-foo   -"
    > say %r0[ljust(foo,6)]7%r01234567
    You say "
    0foo   7
    01234567"
    > say =[ljust(bar,5,.)]=
    You say "=bar..="
  
  Alternate:
    > say =[printf($:.:-5s,bar)]=      (the '-' specifies left justifies)
    You say "=bar..="
  
  See Also: ljc(), rjust(), rjc(), strlen(), printf(), wrap()
  
[PREV] [TOP] [NEXT]

LLOC()

  Function: lloc(<target>)
  
  This function returns all the locations of the player until a condition
  is met.  
  
  Condition #1:  The first room is found and it exits normally.
  Condition #2:  It surpasses the max drill-down of locations (20)
  Condition #3:  It detects recursive contents.
  
  Example:
    > @dig Room
    Room created with room number 1768.
    > @tel #1768
    Room(#1768)
    > @create An Object
    An Object created as object #1767
    > @drop An Object
    Dropped.
    > enter An Object
    An Object(#1767)
    > say lloc(me)
    You say "#1767 #1768"
  
  See Also: lroom(), loc(), rloc(), room()
  Function idea from Akallabeth, a PENNMush.
  
[PREV] [TOP] [NEXT]

LMATH()

  See strfunc()

[PREV] [TOP] [NEXT]

LMAX()

  Function: lmax(<list of numbers>[,<delim>])
  
  This function returns the maximum value from the list.  You may specify an
  optional delimiter.
  
  Example:
    > say lmax(1 10 2 4 6)
    You say "10"
    > say lmax(1@10@2@4@6,@)
    You say "10"
  
  See Also: lmin(), max(), min(), alphamax(), alphamin()
  
[PREV] [TOP] [NEXT]

LMIN()

  Function: lmin(<list of numbers>[,<delim>])
  
  This function returns the minimum value from the list.  You may specify an
  optional delimiter.
  
  Example:
    > say lmax(1 10 2 -4 6)
    You say "-4"
    > say lmax(1@10@2@-4@6,@)
    You say "-4"
  
  See Also: lmax(), max(), min(), alphamax(), alphamin()
    
[PREV] [TOP] [NEXT]

LMUL()

  Function: lmul(<list of numbers>[,<delim>])
  
  This function takes the list of numbers and multiplies them all together
  and returns the result.  It may take an optional delimiter.
  
  Example:
    > say lmul(2 2 2 2)
    You say "16"
    > say lmul(2@2@2@2,@)
    You say "16"
  
  See Also: lavg(), ldiv(), lsub(), lmax(), lmin(), ladd()
  
[PREV] [TOP] [NEXT]

LN()

  Function: ln(<number>)
 
  Returns the result of taking the natural logarithm (base e) of <number>.
  <number> may be a floating point number, and a floating point result
  is returned.
 
  Examples:
    > say ln(0)
    You say "#-1 LN OF NEGATIVE OR ZERO"
    > say ln(1)
    You say "0"
    > say ln(e())
    You say "1"
    > say ln(10)
    You say "2.302585"
  
  See Also: e(), exp(), log(), power(), power10()
  
[PREV] [TOP] [NEXT]

LNOR()

  Function: lnor(<list of numbers>[,<delim>])
  
  Takes the list, and returns true(1) if values are false(0) or 
  false(0) if values are true(1).  You may specify an optional
  delimiter.
  
  Example:
    > say lnor(0 0)
    You say "1"
    > say lnor(0@0,@)
    You say "1"
  
  See Also: land(), lnor(), lxor(), lxnor()
  
[PREV] [TOP] [NEXT]

LNUM()

  Function: lnum(<number>[,<number>,<separator>,<stepping>])
 
  Returns a list of numbers from 0 to <number>-1.
  If a second number is specified it tells to use
  the range of numbers between the two values.
  The order you put it in specifies if it increments
  or decrements the value.  You may specify a stepping
  value for the list.
 
  Example:
    > say lnum(5) 
    You say "0 1 2 3 4"
    > say lnum(5,10)
    You say "5 6 7 8 9 10"
    > say lnum(5,10,,2)
    You say "5 7 9"
    > say lnum(7,3)
    You say "7 6 5 4 3"
    > say lnum(1,5,@)
    You say "1@2@3@4@5"
  
  See Also: lnum2()
  
[PREV] [TOP] [NEXT]

LNUM2()

  Function: lnum2(<number>[,<number>,<arg>,<stepping>])
  
  Returns a list of numbers from 0 to <number>-1.
  The optional second number tells what number
  to start at. The arg is to tell it to
  increment(+) or decrement(-) the values.  The
  default argument is increment.  You may specify a
  stepping value for the list.
  
  Example:
    > say lnum2(5)
    You say "0 1 2 3 4"
    > say lnum2(10,5,+)
    You say "5 6 7 8 9 10 11 12 13 14"
    > say lnum2(10,5,+,2)
    You say "5 7 9 11 13 15 17 19 21 23"
    > say lnum2(10,20,-)
    You say "20 19 18 17 16 15 14 13 12 11"
  
  See Also: lnum()
  
[PREV] [TOP] [NEXT]

LOC()

  Function: loc(<object>)
 
  Returns the number of the location where <object> is.  You must either
  control the object or be nearby for it to work.  When used on an exit it
  returns the destination of the exit.  You can also use loc() to find the
  location of players that are not set UNFINDABLE.
 
  Example:
    > look
    Mortal's Room(#367R)
    A bare room with nothing in it but a bed and a chair.
    Contents:
    hat(#368)
    > say loc(me)
    You say "#367"
    > enter hat
    hat(#368)
    Contents:
    cat(#325)
    > say loc(me)
    You say "#368"
    > say loc(here)
    You say "#367"
  
  See Also: rloc(), room(), where()
  
[PREV] [TOP] [NEXT]

LOCALFUNC()

  Function: localfunc(<function-name>, <args>...)
  
  The localfunc() function is used to call customized functions that are
  server specific and allows a wrapper so that new functions might be added
  without having to modify more than a single file of the source.
  
  Example:
    > localfunc(test,This is a test)
    You say "This was a test. Function: 'test' First Arg: 'This is a test'"
  
  See Also: strfunc(), @lfunction
  
[PREV] [TOP] [NEXT]

LOCALIZE()

  Function: localize(<string> [,<register-list>, [<key>]])
  
  This function will evaluate <string> while preserving all setq() registers
  outside of the function.  This is handy for calling global code or other
  functionality without it effecting your own functions and commands.
  
  You may specify a register list if you want only specific registers to be
  localized.  Otherwise, by default it assumes all registers.
  
  Accepted register values are:
    0-9 -- Standard Q registers.
    a-z -- Extended Q registers.
  
  If the <key> is set to 1, the behavior is reversed and any register that
  you specify will be omitted from localization.  The default is '0'.
   
  Example:
    > @va me=[setq(0,internal)]--My R0:[r(0)]--
    Set.
    > say [setq(0,external)][r(0)][u(va)][r(0)]
    You say "external--My R0:internal--internal"
    > say [setq(0,external)][r(0)][localize(u(va))][r(0)]
    You say "external--My R0:internal--external"
    > say [setq(0,external)][r(0)][localize(u(va),12345)][r(0)]
    You say "external--My R0:internal--internal"
  
  Note: In the last example, we allowed '12345' to be localized, but not '0'.
  
  See Also: pushregs(), ulocal(), zfunlocal(), eval(), privatize(), @lfunction
  
[PREV] [TOP] [NEXT]

LOCATE()

  Function: locate(<looker>,<string>,<where>)
 
  The locate function is used to look for an object from the perspective of
  <looker> (You must own <looker>).  The database number of the item that
  is found is returned.  The <where> parameter specifies a list of places to
  look, from this list:
    a    - Look for absolute references (#<number>)
    c    - Look for exits carried by <looker> (and by <looker>'s parents).
    e    - Look for exits in <looker>'s location (and the location's parents).
    h    - Look for 'here', which matches <looker>'s location.
    i    - Look in <looker>'s inventory.
    m    - Look for 'me', which matches <looker>.
    n    - Look for <looker>'s neighbors (other objects in the same location).
    p    - Look for player names prefixed by a '*'
    *    - Look for everything in the above list.
  
{ 'help locate2' for more }

[PREV] [TOP] [NEXT]

locate2

  You may also specify qualifiers in <where> to help resolve possible
  ambiguities:
    E    - Prefer exits over other types.
    L    - Prefer unlocked exits over locked exits.
    P    - Prefer players over other types.
    R    - Prefer rooms over other types.
    T    - Prefer things over other types.
    V    - Report "Can't find..." and "Which one..." errors to <looker>.
 
  If nothing matches, the value #-1 is returned.  If more than one thing
  matches, but nothing matches exactly, the value #-2 is returned.  If more
  than one thing exactly matches, one is chosen at random.  If you specify
  more than one type preference (E, P, R, or T), then the last one entered
  is the one that is obeyed.  The default is for no type to be preferred.
 
  Examples:
    > I
    test1(#378)
    test(#376)
    You have 42463 clams.
  
{ 'help locate3' for more }

[PREV] [TOP] [NEXT]

locate3

    > look
    Nullspace(#250R)
    test1(#382)
    > say locate(me,test,i)
    You say "#376"
    > say locate(me,test,n)
    You say "#382"
    > say locate(me,test1,in)
    You say "#378"
    > say locate(me,test1,in)
    You say "#382"
    > say locate(me,tes,in)
    You say "#-2"
    > say locate(here,tes,*)
    You say "#382"
    > say locate(me,out,e)
    You say "#252"
    > say locate(me,here,*)
    You say "#250"
  
  See Also: num(), PARENT OBJECTS, objid()
  
[PREV] [TOP] [NEXT]

lock()

  Function: lock(<object>[/<whichlock>][,<key>][,<attribute>])
 
  Returns the named lock on <object>.  If you don't specify the lock to get,
  the default lock is returned.  You must control <object>.
  
  If side-effects are enabled, it will set the specified lock, otherwise it
  will return an error.   The keys used are the same as in 'help @lock'
  The SIDEFX flag is required to use the side-effect portion of lock().
  
  Type @list options to see if the side-effect portion of lock() is enabled.
  
  If <attribute> is specified, then if <key> is non-null, the attribute 
  specified by <attribute> is 'locked'.  If <key> is empty, then the attribute
  specified by <attribute> is 'unlocked'.

  Example:
    > say lock(me)
    You say "*TinyPlayer"
    > say lock(me,#0)
    You say ""
    > say lock(me)
    You say "#0"
    > say lock(me,yes,va)
    You say "Attribute locked."
  
  See Also: @lock, elock(), lockencode(), lockdecode(), lockcheck()
  
[PREV] [TOP] [NEXT]

lockcheck()

  Function: lockencode(<string>)
            lockdecode(<string>)
            lockcheck(<string>,<target>)
  
  lockencode() returns an encoded string of a boolean lock evaluation.
   
  lockdecode() returns the decoded string of the encoded boolean.
  
  lockcheck() returns boolean true(1)/false(0) based on the encoded boolean.
  
  This is the same value (though encoded) that would be set when you issue
  a @Lock on something.  This is useful if you wish to enbed lock values
  in any string or value that you wish to then decrypt at any given time.
  
  lockcheck() follows the same rules that elock() would return.
  
  Example:
    > say name(me)
    You say "Bob"
    > say lockencode(me&*tester)
    You say "KCMxMjM0KSYoIzkwMSk="
    > say lockdecode(KCMxMjM0KSYoIzkwMSk=)
    You say "*Bob&*Tester
    > say lockcheck(KCMxMjM0KSYoIzkwMSk=,me)
    You say "1"
    > say lockcheck(KCMxMjM0KSYoIzkwMSk=,*Guest)
    You say "0"
  
  See Also: lockdecode(), lockdecode(), lockcheck(), lock(), elock(), @lock

[PREV] [TOP] [NEXT]

lockdecode()

  Function: lockencode(<string>)
            lockdecode(<string>)
            lockcheck(<string>,<target>)
  
  lockencode() returns an encoded string of a boolean lock evaluation.
   
  lockdecode() returns the decoded string of the encoded boolean.
  
  lockcheck() returns boolean true(1)/false(0) based on the encoded boolean.
  
  This is the same value (though encoded) that would be set when you issue
  a @Lock on something.  This is useful if you wish to enbed lock values
  in any string or value that you wish to then decrypt at any given time.
  
  lockcheck() follows the same rules that elock() would return.
  
  Example:
    > say name(me)
    You say "Bob"
    > say lockencode(me&*tester)
    You say "KCMxMjM0KSYoIzkwMSk="
    > say lockdecode(KCMxMjM0KSYoIzkwMSk=)
    You say "*Bob&*Tester
    > say lockcheck(KCMxMjM0KSYoIzkwMSk=,me)
    You say "1"
    > say lockcheck(KCMxMjM0KSYoIzkwMSk=,*Guest)
    You say "0"
  
  See Also: lockdecode(), lockdecode(), lockcheck(), lock(), elock(), @lock

[PREV] [TOP] [NEXT]

lockencode()

  Function: lockencode(<string>)
            lockdecode(<string>)
            lockcheck(<string>,<target>)
  
  lockencode() returns an encoded string of a boolean lock evaluation.
   
  lockdecode() returns the decoded string of the encoded boolean.
  
  lockcheck() returns boolean true(1)/false(0) based on the encoded boolean.
  
  This is the same value (though encoded) that would be set when you issue
  a @Lock on something.  This is useful if you wish to enbed lock values
  in any string or value that you wish to then decrypt at any given time.
  
  lockcheck() follows the same rules that elock() would return.
  
  Example:
    > say name(me)
    You say "Bob"
    > say lockencode(me&*tester)
    You say "KCMxMjM0KSYoIzkwMSk="
    > say lockdecode(KCMxMjM0KSYoIzkwMSk=)
    You say "*Bob&*Tester
    > say lockcheck(KCMxMjM0KSYoIzkwMSk=,me)
    You say "1"
    > say lockcheck(KCMxMjM0KSYoIzkwMSk=,*Guest)
    You say "0"
  
  See Also: lockdecode(), lockdecode(), lockcheck(), lock(), elock(), @lock

[PREV] [TOP] [NEXT]

LOG()

  Function: log(<number> [,<base>])
 
  Returns the result of taking the common logarithm (base 10) of <number>.
  <number> may be a floating point number, and a floating point result
  is returned.
  
  You may specify an optional base (besides the default of 10) for the log.
   
  Examples:
    > say log(0)
    You say "#-1 LOG OF NEGATIVE OR ZERO"
    > say log(1)
    You say "0"
    > say log(10)
    You say "1"
    > say log(e())
    You say "0.434294"
  
  See Also: e(), exp(), ln(), power(), power10()
  
[PREV] [TOP] [NEXT]

logarithmic functions

  Function Lists: Logarithmic Functions

  e() - Returns the numeric constant e.
  exp() - Returns the result of raising e to a power.
  ln() - Returns the natural logarithm of a value.
  log() - Returns the common logarithm of a value.
  pi() - Returns the numeric constant pi.
  power() - Raises a value to the nth power.
  power10() - Raises 10 to the factor of a value.
  shl() - Performs a leftwards bit-shift on a value.
  shr() - Performs a rightwards bit-shift on a value.
  sqrt() - Returns the square root of a value.

[PREV] [TOP] [NEXT]

logical functions

  Function Lists: Logical Functions
 
  and() - Returns the value of And'ing booleans together.
  mask() - Applies a specified mask to a value.
  nand() - Returns the inverse of an And on booleans.
  nor() - Returns the inverse of an Or on booleans.
  or() - Returns the value of Or'ing booleans together.
  xor() - Returns the exclusive Or of booleans.
  xnor() - Returns the exclusive inverse of an And of values.
  cand() - Like and, except stops after the first non-true value.
  cor() - Like or, except stops after the first non-true value.

[PREV] [TOP] [NEXT]

LOGOUT

  Command: LOGOUT
  Disconnects you from your character without breaking the network connection
  to the game.  You may then log in to another character.  The LOGOUT command
  must be entered in all capitals.
  
  See Also: QUIT
  
[PREV] [TOP] [NEXT]

look

  Command: look[/<switches>] [<object>]
  Displays the description of <object>, or the room you're in if you don't
  specify an object.  Specifying object as <name> or #<dbref> or 'me' or
  'here' is legal.  You can also use look to look at objects held by other
  people, just use 'look <person>'s <object>'.
 
  You may use the /outside switch to look at the location of your current
  location (useful if you are inside a vehicle or other object).  You may
  also look at other objects in the 'outer' location, but you may not
  use the possessive form with the /outside switch (IE: "look/outside
  <person>'s <object>" won't work).
  
  'read' is the same as 'look'.
  
  Note: if the @admin parameter name_with_desc is enabled, then you will 
        see the name of the thing before the description.
   
  See Also: @adesc, @describe, @odesc, examine, smell, touch, taste, listen
  
[PREV] [TOP] [NEXT]

LOOPING

  Topic: LOOPING
 
  Looping in an object can have its good parts and its bad parts.  The good
  part is when you activate part of a program multiple times to exhaustively
  perform an operation.  This is usually done by:
     @va object =  <list of commands>;@trigger me/vb
     @vb object =  @switch <test> = <false>,@trigger me/va,<otherwise go on>
 
  Looping can be a problem when it goes on without stopping.  The @ps command
  can be used to see if you are looping.  Beware!  A looping machine that
  isn't @halt'ed will drain your money supply while you are away!
  
  See Also: @dolist, @halt, @ps, @notify, @drain, @wait, @trigger
  
[PREV] [TOP] [NEXT]

LOR()

  Function: lor(<list of numbers>[,<delim>])
  
  This function goes through the list and or's the values together.  At the
  first '1' it finds, it exits the function and returns a '1'.  You may
  specify an optional delimiter.
  
  Example:
    > say lor(0 1 1)
    You say "1"
    > say lor(0@1@1,@)
    You say "1"
  
  See Also: land(), lnor(), lxor(), lxnor()
  
[PREV] [TOP] [NEXT]

lpage

  Command: lpage[/<switch>] [[<control>]<message>]
  
  <control> is the formatter for the page (", ;, :, etc)
  
  This command will automatically page the last person(s) who you paged.
  You need not specify a player name.  It accepts and understands all
  the format and commands that page would understand.
  
  Switches available:
    noansi -- show raw ansi (the %c/%x substitutions) instead of colors.
  
  See Also: page, rpage, mrpage, whisper, say, pose
  
  
[PREV] [TOP] [NEXT]

LPARENT()

  Function: parents(<obj> [,<objid>])
  
  Returns all the parents of <obj>.  Returns #-1 if <obj> cannot be found
  or has no parent or if you do not own and/or control <obj>
  
  If the optional <objid> is specified as '1', then it returns the objid's 
  instead of the dbref#'s.
  
  By default, if you can not examine any of the parents in the chain, then
  it will not show you the parent of that chain. 
 
  If the @admin parameter 'parent_follow' is enabled, which is the default,
  then if you control the <obj> you will see the entire parent chain,
  regardless of your control or examine permissions of those parents in 
  the chain.  We felt this should be the proper default behavior.
  
  Example:
    > say parents(me)
    You say "#-1"
    > @parent #4=#5
    Parent set.
    > @parent #5=#6
    Parent set.
    > say parents(#4)
    You say "#5 #6"
    > say parents(#4,1)
    You say "#5:8185828582 #6:8281859282"
  
  See Also: parent(), children()
  
[PREV] [TOP] [NEXT]

lrand()

  Function: lrand(<lower>,<upper>,<count>,[,<output delim>])
   
  This function returns a total of '<count>' elements between the
  numbers '<lower>' and '<upper>'.  It may also choose the lower and
  upper numbers for the list it generates.  If no output separator
  (output delim) is specified, a space is used by default.
   
  Example:
    > say lrand(3,20,5)         (generate 5 numbers >= 3 and <= 20)
    You say "6 18 7 4 19"
    > say lrand(1,6,3)          (generate 3 numbers >= 1 and <= 6)
    You say "1 4 6"
   
  See Also: rand(), dice(), lnum(), lnum2()
  
[PREV] [TOP] [NEXT]

LREPLACE()

  Function: lreplace(<list>, <pos>, <string>[, <delim>])
  
  This function replaces the words in the list <list> starting at the
  position <pos> and continuing to overwrite word for word till the
  end of <string>.  If <string> is longer than what would be replaced,
  the rest of the <string> is automatically appended to the end of
  <list>.  You may specify optional delimiters instead of the default
  space.  You may specify more than one position.
  
  Examples:
    > say lreplace(this is a test,3,a spotted giraffe)
    You say "this is a spotted giraffe"
    > say lreplace(this@is@a@test,2,was@another,@)
    You say "this@was@another@test"
  
  See Also: replace(), rindex(), ldelete(), ldelete(), delete()
  
[PREV] [TOP] [NEXT]

lrooms()

  Function: lrooms(<loc> [,<iteration> [,<type>] [,<objid>]])
  
  This function returns from 1 to MAXIMUM level of iterations of rooms
  connected to the target <loc> room.  The MAXIMUM level is hypothetically
  the total number of rooms contained on the MUSH.  You can only get rooms
  from visible exits or that you control, are set ABODE, JUMP_OK, LINK_OK, or
  VISIBLE.  Unfortunately, the list of rooms are not in order of iteration,
  or any particular order.  
  
  The iteration defaults to 1.  '0' specifies 'MAXIMUM'.
  
  You may specify the type of display you wish.  A type of '1' (the default) 
  displays all rooms.  A type of '0' will display only the rooms matching 
  the directly specified iteration level, and none before.  Keep in mind 
  that type '0' is not always guaranteed to be absolutely accurate as rooms 
  could be linked differently based on the order it's checked.
  
  If you specify <objid> as '1', then it returns the objid's instead of
  the dbref#'s.
   
  Examples:
    > say lrooms(here,1)
    You say "#191 #101"
    > say lrooms(here)
    You say "#191 #101"
    > say lrooms(here,2)
    You say "#191 #101 #19 #0 #1012 #10102"
    > say lrooms(here,2,0)
    You say "#19 #0 #1012 #10102"
    > say lrooms(here,,,1)
    You say "#191:8182858282 #101:8285928582"
  
  See Also: room(), lexits()
  
[PREV] [TOP] [NEXT]

LSET()

  Function: lset(<object>[/<lock>] [,[!]<flag>])
            lset(<object>[/<lock>])
  
  The lset() function is used to set specialized permissions on locks.  If you
  do not specify a lock, it will default to 'DefaultLock' which is aliased to 
  'BasicLock' for backward compatibility with other codebases.  If you do not
  specify a lock, it will display the current flags on the specified target
  lock.
  
  You may specify the '!' option to remove a specialist lock.
  
  Please see help on '@lset' for what specialized locks that you may set.
  You can only set the flags which you have permission to.
  
  This function returns an empty value and notifies the player as if they 
  ran the @lset command.
  
  Examples:
    > say lset(me,no_inherit)
    @lset: [DefaultLock] set NO_INHERIT on Ashen-Shugar(#1234)
    You say ""
    > say lset(me)
    @lset: [DefaultLock] on Player(#123): no_inherit
    You say ""
    > say lset(me/basic)
    @lset: [DefaultLock] on Player(#123): no_inherit
    You say ""
    > say lset(me/default)
    @lset: [DefaultLock] on Player(#123): no_inherit
    You say ""
    > say lset(me/fubar)
    #-1 LOCK NOT FOUND
    You say ""
  
  See Also: @lset, @set, set()

[PREV] [TOP] [NEXT]

LSUB()

  Function: lsub(<list of numbers>[,<delim>])
  
  This function takes the first number in the list, and subtracts from that
  all the other numbers in the list.  It may take an optional delimiter.
  
  Example:
    > say lsub(10 2 3 1)
    You say "4"
    > say lsub(10@2@3@1,@)
    You say "4"
  
  See Also: lavg(), ldiv(), lmul(), lmax(), lmin(), ladd()
  
[PREV] [TOP] [NEXT]

lt()

  Function: lt(<integer1>,<integer2>)
 
  Takes two integers, and returns 1 if and only if <integer1> is less than
  <integer2>, and 0 otherwise.  Warning: passing anything but integers will
  produce unexpected results, as non-numeric strings usually are treated
  as numeric 0.
 
  Example:
    > say lt(4,5)
    You say "1"
    > say lt(5,5)
    You say "0"
    > say lt(6,5)
    You say "0"
    > say lt(foo, bar)
    You say "0"
  
  See Also: lte(), gte(), gt(), eq(), neq()
  
[PREV] [TOP] [NEXT]

lte()

  Function: lte(<integer1>,<integer2>)
 
  Takes two integers, and returns 1 if and only if <integer1> is less than 
  or equal to <integer2>, and 0 otherwise.  Warning: passing anything but 
  integers will produce unexpected results, as non-numeric strings usually 
  are treated as numeric 0.
 
  Example:
    > say lte(4,5)
    You say "1"
    > say lte(5,5)
    You say "1"
    > say lte(6,5)
    You say "0"
    > say lte(foo, bar)
    You say "1"
  
  See Also: lt(), gte(), gt(), eq(), neq()
  
[PREV] [TOP] [NEXT]

LTOGGLES()

  Function: ltoggles(<player>)
  
  Returns all the toggles that the target player has.  To list all of
  your toggles, you would use: ltoggles(me)
  
  Examples:
    > say ltoggles(me)
    You say "VANILLA_ERRORS"
    > say ltoggles(#1)
    You say "#-1"
  
  See Also: @toggle
  
[PREV] [TOP] [NEXT]

LWHO()

  Function: lwho([[<value>], [<target>], [<isobjid>]])
  Returns a list of the db numbers of connected players.  This returns what
  a 'WHO' or 'DOING' would return.  This takes an optional type value.
  '0' is the default, and '1' returns the player list in the form dbref:port.
  '2' will return just the ports.  
  
  You may specify <isobjid> as '1' if you wish to have the arguments returned
  as object-id's.  Note, that since objid's return break values with a ':',
  if you specify the port <value> it uses '|' instead to separate the argument
  from the port.
  
  Note: You can only see your own port(s) unless you're a wizard.  Any other
        port will return '-1'.
  
  An optional target is allowed if you control (are a higher bitlevel) than
  the target to specify how lwho() would look per the target's viewpoint.
   
  Example:
    > WHO
    Player Name          On For Idle  Doing
    Mortal                00:11   0s  
    Evinar                00:12   6m  
    Wizard                00:32   6s  
    3 Players logged in.
    > say lwho()
    You say "#226 #271 #1"
    > say lwho(0)
    You say "#226 #271 #1"
    > say lwho(1)
    You say "#226:20 #271:5 #1:6"
    > say lwho(,,1)
    You say "#226:662752801 #271:662992921 #1:662728521"
    > say lwho(1,,1)
    You say "#226:662752801|20 #271:662992921|5 #1:662728521|6"
  
  See Also: WHO, DOING, conn(), idle()
 
[PREV] [TOP] [NEXT]

LXNOR()

  Function: lxnor(<list of numbers>[,<delim>])
   
  Takes two or more booleans, and returns true(1) if both values are
  true(1) or false(0) and returns false(0) if any one value is
  false(0) but the other(s) are true(1).  You may specify an optional
  delimiter.
  
  Example:
    > say lxnor(1 1 1 1 1 0)
    You say "0"
    > say lxnor(1@1@1@1@1@0,@)
    You say "0"
  
  See Also: lor(), lnor(), land(), lxor()
  
[PREV] [TOP] [NEXT]

LXOR()

  Function: lxor(<list of numbers>[,<delim>])
  
  Takes two or more booleans, and returns 1 if an odd number of them are
  equivalent to true(1).  You may specify an optional delimiter.
  
  Example:
    > say lxor(0 1 0 1 0 1)
    You say "1"
    > say lxor(0@1@0@1@0@1,@)
    You say "1"
     
  See Also: lor(), lnor(), land(), lxnor()
  
[PREV] [TOP] [NEXT]

LZONE()

  Function: lzone(<object> [,<key>] [,<objid>])
  
  Returns the zone list for an object. If the object is a zonemaster,
  the list contains the objects within the zone controlled by the 
  zonemaster. If the object is not a zonemaster, the list contains
  all of the zonemasters that the object belongs to.  This is _not_
  database intensive.
  
  You may optionally specify <objid> as '1' to return the objid's 
  of the target instead of the dbref#'s.
   
  The following optional keys are available:
    0 - list all zones (or zonemasters) of the target (default)
    n - List 'n'th 400 zones (or zonesmasters) of the target. 
        NOTE: 'n' will be any number from 1 to however many 'pages'
              So '1' would be first 400, '2' would be second 400, etc.
    l - List total pages and total zones (or zonemasters) of target.
    ~ - [~#1-#2] list zones starting at #1 until count of #2.
     
  Example:
    > @set here=zonemaster
    > @zone here=#0
    > @zone here=#534
    > say lzone(here)         
    You say "#0 #534"
    > say lzone(here,,1)         
    You say "#0:8185828502 #534:8258128282"
    > say lzone(here,l)
    You say "1 2"
 
  See Also: @zone, ZONES, inzone(), zwho(), zonecmd()
 
[PREV] [TOP] [NEXT]

mail

  Command: mail [@]<player-list>=<subject> (with BRANDY_MAIL toggle)
           mail [@]<player-list>=[<subj>/]<body> (with PENN_MAIL toggle)
           mail [@]<player-list>=[<subj>//]<body> (with no toggle)
           mail [<mesg#>|new|unread|nall|uall|ball]
  
  'HELP MAIL MAIN' for main index.    'HELP MAIL TOPICS' for topical help.
  
  If you are used to the MUX standard of @mail or the softcoded BrandyMail
  you will want to use the BRANDY_MAIL toggle.  
  
  If you are used to the PENN standard of @mail, you will want to use
  the PENN_MAIL toggle.  The BRANDY_MAIL toggle will take presidence.
  
  For using the line editor, you may use the MAIL_STRIPRETURN toggle.  This
  will convert the carriage return between lines to a space when combining.
   
  To set a toggle, you would type: @toggle me=<toggle>.  An example would be:
                        @toggle me=BRANDY_MAIL
 
  Examples:
    > mail me=My Subject//My Body
    Mail: You have new mail from -> <your name>
    Mail: Message sent to -> <your name>
    Mail: Done
  
  See Also: mail main, mail topics
  
[PREV] [TOP] [NEXT]

mail alias

  Command: mail/alias
  
  The alias switch is used to display any global alias you have 
  permission to access and will list all players that are attached
  to that global alias.  Global aliases are maintained by the 
  administration of the mush.  If you have ideas of global aliases,
  suggest it to them and they will add them.
  
  Syntax: mail/alias
  Wizards: wizhelp wmail alias
  
[PREV] [TOP] [NEXT]

mail anonymous

  Command: mail/anon player=message
           mail/anon/send player=message
           mail/anon/forward <msg#> player=message
           mail/anon/reply <msg#>=message
  
  The anon[ymous] switch is used in junction with the /send, /forward, or
  /reply switches (or normal sending) to ANONYMOUSLY send the mail message
  to the player.  Wizards are except from receiving anonymous mail due to
  security issues.
  
  Attempting to forward anonymous mail shows the original message being
  'anonymous'.  Attempting to reply to an anonymous mail will reply 
  to the 'anonymous' player, while that player still receives the message.
  
  If you use the line editor, you can use -~ to send anonymously instead of
  -- which would normally send the mail.
   
  See Also: mail send, mail reply, mail forward
  
[PREV] [TOP] [NEXT]

mail autofor

  Command: mail/autofor <player-name>
           mail/autofor +off
  
  Autoforwarding is used to autoforward mail that you would normally get
  to another player.  This is handy in the event that you have
  multiple players and wish to have mail all catagorized to a central
  player.  All forwarded mail is sent as from the original sender, 
  not from the player it was forwarded from.
  
  Autoforwarding can only be forwarded on a one-time basis.  It is not
  recursive.  So in otherwords, you can not forward mail forwarded to you.
  
  To remove an autoforwarding use the command:
      mail/autofor +off
  
  Mail that is autoforwarded will show up to the user sending you mail
  where it got autoforwarded to.
  
  See Also: mail lock, mail share
  
[PREV] [TOP] [NEXT]

mail autopurges

  Topic: mail autopurging 
  
  The mail system has a built in autopurging system.  To save mail
  from autopurging, it needs to have the SAVE flag set on it.  You
  have a limited number of SAVE flags you can set.  For help on
  the save flag for mail, do 'help mail save'.  Autopurging is
  currently set to three weeks but can be set at any time.  NEW
  and UNREAD mail is not effected.  
  
  Wizards by default are never auto-purged from.
  
  To set the save flag, you would use:
  
     mail/mark/save <arg>
  
  where <arg> is a single message, a list of messages, or a combination.
  
  Note:  By default, players are given 10 save slots for messages.
         This can be increased globally or individually on a case by case
         basis.  Please see 'mail/quota' to see what your current saved
         quota is.
  
  See Also: mail mark, mail save
  
[PREV] [TOP] [NEXT]

mail ball

  This is a sub-option to 'mail/read' (short for just 'mail').  If you
  specify 'nall' at the end, it will read ALL the new AND the unread
  mail messages you have in your mailbox.
  
  Example:
    > mail/read ball
    > mail ball
  
  See Also: mail uall, mail nall, mail new, mail unread, mail both
  
[PREV] [TOP] [NEXT]

mail basics

  Topic: mail basics
  
  The basic mail sub-commands are:     
     write, send, read, mark, delete, quick, and status.
  
  For more information, check the help on mail and it's sub-commands.
       type in 'help mail' and 'help folder' for the base core commands.
       type in 'help mail <subcommand>' for the mail subcommand.
       type in 'help folder <subcommand>' for the folder subcommand.
  
  To send a message to a player and enter text line by line:
     mail/write <optional text for first line>
     For full help on /write, type in 'help mail write'
  
  To send a message to a player:
     mail[/send] <player> =<message>    (help mail send)
     For example:   mail tinypal=Let's meet tomorrow night.
     Note that '/send' is optional for this command (mail/send).
  
  To read a message:
     mail[/read] #                      (help mail read)
     For example:   mail 3
     Note that '/read' is optional for this command (mail/read).
  
{ To continue, type: help mail basics2 }
  
[PREV] [TOP] [NEXT]

mail basics2

  Topic: mail basics (continued)
  To mark a message for deletion:
     mail/mark #                        (help mail mark)
     For example:   mail/mark 12
  
  To save a message (keep it from being purged):
     mail/mark/save #                   (help mail save)
     For example:   mail/mark/save 12
 
  To delete marked messages:
     mail/delete                        (help mail delete)
  
  To get a quick summary of mail (how many new, unread, old, marked, 
  current folder):
     mail[/quick]                       (help mail quick)
     Note that 'quick' is optional for this command (mail/quick).
  
  To see all mail headers and status:
     mail/status                        (help mail status)
  
  For information on setting up folders, type 'help folder'
  For more information on mail, type in 'help mail <command>'
  
[PREV] [TOP] [NEXT]

mail both

  This is a sub-option to 'mail/read' (short for just 'mail').  If you
  specify 'both' at the end, it will read the first new OR unread
  mail message you have in your mailbox.
  
  Example:
    > mail/read both
    > mail both
  
  See Also: mail uall, mail nall, mail new, mail unread, mail ball
  
[PREV] [TOP] [NEXT]

mail btutor

  Topic: mail btutor (Enhanced Line Editor (Brandy) Interface)
  
  Welcome to the mail system tutorial (brandy interface).  This will
  not cover all the commands, but will give you a good heads up on
  how to use the mail interface if you come from a MUX background
  with @mail or a mush background and used the Brandy mailer.
  
  First, let's set ourselves up so we can use the brandy interface.
  Please type this exactly as it shows:
  
    @toggle me=brandy_mail
  
  If you wish to remove the toggle at a later date, you may do this
  by doing @toggle me=!brandy_mail.  Help is available on this toggle
  by 'help brandy_mail toggle'.
  
  Ok, first, write a message to yourself, then we can begin the
  tutorial.  To start a new message, type this exactly as shown:
  
    mail me=test subject
    -test body
    --
  
  To begin your tutorial, please type the following now:
  
    help mail dtutor notes
  
[PREV] [TOP] [NEXT]

mail changes

  Topic: changes
  
  There are some changes that you may notice with the new mail system.  These
  changes are the following:
  
    Subjects are included with mail:
        - Subjects are added by separating the body and the subject using 
          '//'.  IE: mail user=subject//body 
          (see: help mail send)
        - Subjects can be added with the mail's line editor.  This is done
          by using the +subject option.  IE: mail/write +subject
          (see: help mail write)
  
    Recalling mail has been greatly modified:
        - You are able to recall any message not read by another player that
          you have sent.  It is displayed in a concise manner.
          (see: help mail recall)
  
{ type: help mail changes2 to continue }
  
[PREV] [TOP] [NEXT]

mail changes2

  Topic: changes (continued)
  
    New options for mail/write:
        - When adding new text, you can use the shortcut of '-' to add new
          lines.  This works similar to MUX's @mail does.
          (see: help mail write)
  
    New options for locking mail:
        - You can set a reject message for people you lock your mail out to.
          (see: help mail reject)
   
    Mail signatures:
        - Mail signatures that are automatically included are set by using
          @mailsig attribute.  To set, just type: @mailsig me=<signature>
  
  See Also: mail version, mail basics, mail signature
  
[PREV] [TOP] [NEXT]

mail check

  Command: mail/check <target>=<#>
  
  If someone has set up her mailbox to be shared with you, you can use this
  command to read a particular message from the target's mailbox.
   
  Example:
    > mail/check tinyfriend=4    (read tinyfriend's message #4)
   
  See Also: mail read, mail number, mail share
  
[PREV] [TOP] [NEXT]

mail cmdlist

  Topic: mail command list of commands (in alphabetical order)
  
  mail                       - This is short for 'mail/quick'
  mail/alias                 - This lists all global mail aliases.
  mail/autofor <player>      - This sets an automatic forward of mail to the
                               target player.
  mail/check <player>=<arg>  - This checks the target player's mail allowing
                               you to read it.  That player MUST have their
                               mail set to be shared by you!
  mail/delete                - This purges all marked mail.
  mail/forward <num> [<arg>] <player-list>[=[<subject>//]<optionaltext>] 
                               This forwards the target message to the 
                               specified list of players.
  mail/lock <key>            - This locks your mail from the given  player(s).
  mail/mark[/save] <arg>     - This marks the mail for deletion or if the 
                               optional SAVE switch is used, marks the mail
                               from deleting.  Mail is automatically purged
                               after a set period.  The SAVE flag keeps it
                               safe from this.
  mail/next                  - This automatically reads the next message.
  
  { see help mail cmdlist2 for more }
[PREV] [TOP] [NEXT]

mail cmdlist2

  Topic: mail quicklist of commands (CONTINUED)
  
  mail/number <target>[=<arg>] - This displays the target player's mail.  You
                               must pass that person's sharelock before you
                               can do this.
  mail/page <lines>          - This sets up the number of lines per page you
                               can view. This is relevant only for mail/status
  mail/password <args>       - This allows you to password-lock your mail.
  mail[/quick]               - This gives you a quick status of mail you have.
                               The /quick switch is optional.
  mail/quota                 - This gives you your quota statistics.
  mail[/read] <arg>          - This reads the mail.  /read switch is optional.
                               You may specify 'new' or 'unread' as well for
                               the argument instead of the mail number..
  mail/recall <args>         - This displays mail sent to others, the contents
                               of it, and gives you availability to yank mail
                               that hasn't been read.
  mail/reject [<arg>]        - This sets or resets your reject message.
  mail/reply [<arg>]<message-#>[<arg>]=[<subject>//]<body> - This replies to
                               the given message.
  
  { see help mail cmdlist3 for more }
  
[PREV] [TOP] [NEXT]

mail cmdlist3

  Topic: mail quicklist of commands (CONTINUED)
  
  mail[/send] [<arg>]<player-list>=[<subject>//]<body> - This sends mail to
                               the targeted player(s).  The /send switch is
                               optional as well as the arguments and subject.
  mail/share <players>       - This sets it up so that you can share mail with
                               other people.  It uses standard @lock keys.
  mail/status [<args>]       - This gives the listing of mail in your box.
  mail/unmark <args>         - This unmarks from deletion or saving the target
                               mail.
  mail/version               - This displays the current version of mail.
  mail/write <string>        - This begins writing a letter using the line
                               editor.  After this command, you may use '-' to
                               continue writing mail.
  mail/zap                   - This deletes your current message and reads the
                               next message (if available).
  
  See Also: mail, folder, folder cmdlist
  
[PREV] [TOP] [NEXT]

mail creating

  Please see 'help mail send'
  
[PREV] [TOP] [NEXT]

mail credits

  Topic: mail credits
  
  This mail system was coded by Seawolf.  It is largely based on 
  Ashen-Shugar's mush-coded +mail system.
 
  Help files were written by Wizard@ApexMUSH, Seawolf, and Ashen-Shugar.
 
  Thanks to Lothar for suggesting folder/share.
  
  Thanks to beta-testers:
    Ashen-Shugar, Eingelbert, Seth, Wizard
  
[PREV] [TOP] [NEXT]

mail delete

  Command: mail/delete
  
  This command will delete all your marked messages in all your folders.
  
  See Also: mark, unmark, recall, save
  
[PREV] [TOP] [NEXT]

mail dtutor

  Topic: mail dtutor (Default Bare-Bone Tutorial)
  
  Welcome to the mail system tutorial.  This will not cover all
  the commands, but it will run you through enough of them to
  get you started with using the mail system.  
  
  The mailsystem has a huge amount of functionality and it is
  our hopes that this will help remove some of the fear and
  confusion you may have.
  
  There will be pages to the tutorial that will allow you
  to interact and try each command at the same time.
  
  Let's make sure you have a mail message to help with
  the tutorial.  Please type this exactly as it shows:
      
    mail me=test subject//test body
  
  We'll explain what that does in the tutorial.
  To begin your tutorial, please type the following now:
  
    help mail dtutor1
  
[PREV] [TOP] [NEXT]

mail dtutor notes

  Topic: mail dtutor notes
  
  This is just a quick review of what you can do with the brandy
  mail interface you can't without it.
  
  When toggled, BRANDY_MAIL, you will automatically go into the
  line editor when you do the following commands:
  
    mail <list-of-players>=<subject>                (sending mail)
    mail/send <list-of-players>=<subject>//<body>   (quick sending mail)
    mail/reply <msg#>=<subject>                     (replying to mail)
    mail/forward <msg#> <list-of-players>=<subject> (forwrding mail)
  
  You have a HUGE availability of options in the line editor.  For
  the list, please type:
  
    help mail write cmdlist
  
  Help is available on individual topics therein with:
  
    help mail write <subtopic>
  
  To continue your tutorial, please type the following now:
  
    help mail dtutor1