RhostMUSH Help File [HTML Version]

Generated: Sun Mar 11 22:43:22 2018

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                        %q<                       %r
%s                        %t                        %v
%w                        %x                        &
&MAILFILTER               &MAILNOTIFY               &OUTPAGEFORMAT
&PAGEFORMAT               &pageformat2              +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                   3.9.5p4
4.0.0p0                   4.0.0p1                   :
;                         >                         @@
@@()                      @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                    @goto                     @GREP
@guild                    @halt                     @hide
@idesc                    @idle                     @if
@ifelse                   @include                  @include2 
@infilter                 @inprefix                 @invformat
@jump                     @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                     @mail                     @MAILFILTER
@MAILNOTIFY               @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                     @OUTPAGEFORMAT
@oxenter                  @oxleave                  @oxtport
@PAGEFORMAT               @pageformat2              @parent
@password                 @pay                      @pemit
@pemit2                   @pipe                     @prefix
@progprompt               @program                  @program2 
@program3                 @protect                  @ps
@quitprogram              @quota                    @quota alternate
@quota standard           @race                     @register
@reject                   @remit                    @retry
@rfail                    @robot                    @rollback
@rollback2                @rollback3                @rollback4
@rollback5                @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 USAGE                ANSI()                    ANSI2
ANSI3                     ANSI4                     ANSICOLOR
ANSINAMES                 ANSIPOS()                 API
API RETURN                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 GUILDMASTER
ATTRIBUTE 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 SINGLETHREADATTRIBUTE 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()                     BAND()                    BANG NOTATION
BANGS NOTATION            BEFORE()                  BEING KILLED
BETWEEN()                 BITTYPE()                 BLIND
BNAND()                   BNOT()                    BOGUS COMMANDS
BOOLEAN VALUES            BOR()                     BOUNCE
BOUNCEFORWARD             BOUND()                   BRACKETS()
BRANDY_MAIL TOGGLE        BXOR()                    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()
CODING                    CODING ATTRIB             CODING ATTRIB2
CODING COMMAND            CODING FUNCT              CODING NEST
CODING QUEUE              CODING REGS               CODING SUBS
CODING2                   CODING3                   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
folder/change             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()                   INF()                     INFO
INHERIT                   INPROGRAM()               INSERT()
INSERT2                   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 attributes           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 brandy          mail send examples        mail send quick
mail send2                mail sending              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-attributes
mail-deleting             mail-examples             mail-filtering
mail-folders              mail-other                mail-reading
mail-reviewing            mail-sharing              mail-writing
mail/alias                mail/anonymous            mail/autofor
mail/check                mail/delete               mail/forward
mail/lock                 mail/mark                 mail/mark/save
mail/next                 mail/number               mail/page
mail/password             mail/previous             mail/quick
mail/quota                mail/read                 mail/read/save
mail/recall               mail/reject               mail/reply
mail/save                 mail/save/read            mail/send
mail/share                mail/status               mail/unmark
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/zap                  MAIL_NOPARSE TOGGLE       MAIL_STRIPRETURN TOGGLE
MAILFILTER                MAILNOTIFY                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                    MSECS()
MUDDIFF                   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 functionsNUMMATCH()
NUMMEMBER()               NUMPOS()                  numwildmatch()
OBJ()                     object information functionsobject information functions2
OBJECT TYPES              OBJEVAL()                 OBJID()
OEMIT()                   OFPARSE()                 OFPARSE2
OPAQUE                    OPEN()                    OR()
ORCHR()                   ORFLAG()                  ORFLAGS()
OUTPAGEFORMAT             OUTPUTPREFIX              OUTPUTSUFFIX
OWNER()                   PACK()                    PACKMATH()
page                      page2                     PAGEFORMAT
pageformat2               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()               PRIVATIZE2                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            SANDBOX()                 SANDBOX2
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()                   SPECIAL CHARACTERS        SPEECH_PREFIX
SPEECH_SUFFIX             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()                 strmath2                  STRTRUNC()
SUB()                     SUBEVAL()                 SUBJ()
SUBNETMATCH()             SUBSTITUTIONS             substitutions2
SUCCESS                   SUPER-ROYALTY             SWITCH()
SWITCHALL()               SWITCHES                  T()
take                      take2                     TAN()
TANH()                    taste                     TEL()
TELOK                     TEMPLE                    TERSE
TESTLOCK()                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                TRACETAB                  train
TRANSLATE()               TRANSPARENT               trigonometry functions
TRIM()                    TRREVERSE()               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.  
  
  You may use two special attributes for pre and post processing of any
  says you receive.  These attributes will have substitutions evaluated
  but will not evaluate functions.  If these attributes are set NO_COMMAND
  then they will not be processed.
    SPEECH_PREFIX  -- Contents will be evaluated before the say/pose.
    SPEECH_SUFFIX  -- Contents will be evaluated after the say/pose.
  
  Both of these attributes handle three arguments.  These are:
    %0 - The original say/pose that triggered the attribute.
    %1 - The date in the form MM/DD/YYYY
    %2 - The time in the form HH:MM:SS
    %3 - The dbref# of the player issuing the say/pose/emit (#-1 if spoofed)
  
  Example: (assuming your name is Bob)
   > "Where is the movie theater?
   Bob 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 

  This 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, @sudo
  
[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.
    %-<num> = Stack 10+ that are comma delimited or if <num> specified
              the positional stack location 0 through 999.  BANGS supported.
    %-m     = The last command executed that issued @hook.  
    %i0-%i9 = Equivalent to itext(0) through itext(9). [%il for outer]
              BANGS supported.
    %d0-%d9 = Equivalent to dtext(0) through dtext(9).  [%dl for outer]
              Only useable with /inline only.  BANGS supported.
    %q0-%q9 = Value of registers.  Basically equivalent to [r(0)] - [r(9)].
              Note: You may use %q<label> or %q<0> as well.  BANGS supported.
    %qa-%qz = Extended value of registers.
    %va-%vz = Contents of attribute va through vz.
  
    NOTE: Anything that says BANGS supported may use BANGS for the process.
          example: %-!!$22 (see if arg 22 contains a string)
                   %q<!!$0> (see if register 0 is a string)
                   %q<!!$foo> (see if register with label 'foo' is a string)
                   %i!!$0 (see if iter()'s itext(0) is a string)
                   %d!!$0 (see if @dolist/inline's dtext(0) is a string)
  
{ '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.
    %-<num> = Stack 10+ that are comma delimited or if <num> specified
              the positional stack location 0 through 999.  BANGS supported.
    %-m     = The last command executed that issued @hook.  
    %i0-%i9 = Equivalent to itext(0) through itext(9). [%il for outer]
              BANGS supported.
    %d0-%d9 = Equivalent to dtext(0) through dtext(9).  [%dl for outer]
              Only useable with /inline only.  BANGS supported.
    %q0-%q9 = Value of registers.  Basically equivalent to [r(0)] - [r(9)].
              Note: You may use %q<label> or %q<0> as well.  BANGS supported.
    %qa-%qz = Extended value of registers.
    %va-%vz = Contents of attribute va through vz.
  
    NOTE: Anything that says BANGS supported may use BANGS for the process.
          example: %-!!$22 (see if arg 22 contains a string)
                   %q<!!$0> (see if register 0 is a string)
                   %q<!!$foo> (see if register with label 'foo' is a string)
                   %i!!$0 (see if iter()'s itext(0) is a string)
                   %d!!$0 (see if @dolist/inline's dtext(0) is a string)
  
{ '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.
    %-<num> = Stack 10+ that are comma delimited or if <num> specified
              the positional stack location 0 through 999.  BANGS supported.
    %-m     = The last command executed that issued @hook.  
    %i0-%i9 = Equivalent to itext(0) through itext(9). [%il for outer]
              BANGS supported.
    %d0-%d9 = Equivalent to dtext(0) through dtext(9).  [%dl for outer]
              Only useable with /inline only.  BANGS supported.
    %q0-%q9 = Value of registers.  Basically equivalent to [r(0)] - [r(9)].
              Note: You may use %q<label> or %q<0> as well.  BANGS supported.
    %qa-%qz = Extended value of registers.
    %va-%vz = Contents of attribute va through vz.
  
    NOTE: Anything that says BANGS supported may use BANGS for the process.
          example: %-!!$22 (see if arg 22 contains a string)
                   %q<!!$0> (see if register 0 is a string)
                   %q<!!$foo> (see if register with label 'foo' is a string)
                   %i!!$0 (see if iter()'s itext(0) is a string)
                   %d!!$0 (see if @dolist/inline's dtext(0) is a string)
  
{ '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.
    %-<num> = Stack 10+ that are comma delimited or if <num> specified
              the positional stack location 0 through 999.  BANGS supported.
    %-m     = The last command executed that issued @hook.  
    %i0-%i9 = Equivalent to itext(0) through itext(9). [%il for outer]
              BANGS supported.
    %d0-%d9 = Equivalent to dtext(0) through dtext(9).  [%dl for outer]
              Only useable with /inline only.  BANGS supported.
    %q0-%q9 = Value of registers.  Basically equivalent to [r(0)] - [r(9)].
              Note: You may use %q<label> or %q<0> as well.  BANGS supported.
    %qa-%qz = Extended value of registers.
    %va-%vz = Contents of attribute va through vz.
  
    NOTE: Anything that says BANGS supported may use BANGS for the process.
          example: %-!!$22 (see if arg 22 contains a string)
                   %q<!!$0> (see if register 0 is a string)
                   %q<!!$foo> (see if register with label 'foo' is a string)
                   %i!!$0 (see if iter()'s itext(0) is a string)
                   %d!!$0 (see if @dolist/inline's dtext(0) is a string)
  
{ '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.
    %-<num> = Stack 10+ that are comma delimited or if <num> specified
              the positional stack location 0 through 999.  BANGS supported.
    %-m     = The last command executed that issued @hook.  
    %i0-%i9 = Equivalent to itext(0) through itext(9). [%il for outer]
              BANGS supported.
    %d0-%d9 = Equivalent to dtext(0) through dtext(9).  [%dl for outer]
              Only useable with /inline only.  BANGS supported.
    %q0-%q9 = Value of registers.  Basically equivalent to [r(0)] - [r(9)].
              Note: You may use %q<label> or %q<0> as well.  BANGS supported.
    %qa-%qz = Extended value of registers.
    %va-%vz = Contents of attribute va through vz.
  
    NOTE: Anything that says BANGS supported may use BANGS for the process.
          example: %-!!$22 (see if arg 22 contains a string)
                   %q<!!$0> (see if register 0 is a string)
                   %q<!!$foo> (see if register with label 'foo' is a string)
                   %i!!$0 (see if iter()'s itext(0) is a string)
                   %d!!$0 (see if @dolist/inline's dtext(0) is a string)
  
{ '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.
    %-<num> = Stack 10+ that are comma delimited or if <num> specified
              the positional stack location 0 through 999.  BANGS supported.
    %-m     = The last command executed that issued @hook.  
    %i0-%i9 = Equivalent to itext(0) through itext(9). [%il for outer]
              BANGS supported.
    %d0-%d9 = Equivalent to dtext(0) through dtext(9).  [%dl for outer]
              Only useable with /inline only.  BANGS supported.
    %q0-%q9 = Value of registers.  Basically equivalent to [r(0)] - [r(9)].
              Note: You may use %q<label> or %q<0> as well.  BANGS supported.
    %qa-%qz = Extended value of registers.
    %va-%vz = Contents of attribute va through vz.
  
    NOTE: Anything that says BANGS supported may use BANGS for the process.
          example: %-!!$22 (see if arg 22 contains a string)
                   %q<!!$0> (see if register 0 is a string)
                   %q<!!$foo> (see if register with label 'foo' is a string)
                   %i!!$0 (see if iter()'s itext(0) is a string)
                   %d!!$0 (see if @dolist/inline's dtext(0) is a string)
  
{ '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.
    %-<num> = Stack 10+ that are comma delimited or if <num> specified
              the positional stack location 0 through 999.  BANGS supported.
    %-m     = The last command executed that issued @hook.  
    %i0-%i9 = Equivalent to itext(0) through itext(9). [%il for outer]
              BANGS supported.
    %d0-%d9 = Equivalent to dtext(0) through dtext(9).  [%dl for outer]
              Only useable with /inline only.  BANGS supported.
    %q0-%q9 = Value of registers.  Basically equivalent to [r(0)] - [r(9)].
              Note: You may use %q<label> or %q<0> as well.  BANGS supported.
    %qa-%qz = Extended value of registers.
    %va-%vz = Contents of attribute va through vz.
  
    NOTE: Anything that says BANGS supported may use BANGS for the process.
          example: %-!!$22 (see if arg 22 contains a string)
                   %q<!!$0> (see if register 0 is a string)
                   %q<!!$foo> (see if register with label 'foo' is a string)
                   %i!!$0 (see if iter()'s itext(0) is a string)
                   %d!!$0 (see if @dolist/inline's dtext(0) is a string)
  
{ '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.
    %-<num> = Stack 10+ that are comma delimited or if <num> specified
              the positional stack location 0 through 999.  BANGS supported.
    %-m     = The last command executed that issued @hook.  
    %i0-%i9 = Equivalent to itext(0) through itext(9). [%il for outer]
              BANGS supported.
    %d0-%d9 = Equivalent to dtext(0) through dtext(9).  [%dl for outer]
              Only useable with /inline only.  BANGS supported.
    %q0-%q9 = Value of registers.  Basically equivalent to [r(0)] - [r(9)].
              Note: You may use %q<label> or %q<0> as well.  BANGS supported.
    %qa-%qz = Extended value of registers.
    %va-%vz = Contents of attribute va through vz.
  
    NOTE: Anything that says BANGS supported may use BANGS for the process.
          example: %-!!$22 (see if arg 22 contains a string)
                   %q<!!$0> (see if register 0 is a string)
                   %q<!!$foo> (see if register with label 'foo' is a string)
                   %i!!$0 (see if iter()'s itext(0) is a string)
                   %d!!$0 (see if @dolist/inline's dtext(0) is a string)
  
{ '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.
    %-<num> = Stack 10+ that are comma delimited or if <num> specified
              the positional stack location 0 through 999.  BANGS supported.
    %-m     = The last command executed that issued @hook.  
    %i0-%i9 = Equivalent to itext(0) through itext(9). [%il for outer]
              BANGS supported.
    %d0-%d9 = Equivalent to dtext(0) through dtext(9).  [%dl for outer]
              Only useable with /inline only.  BANGS supported.
    %q0-%q9 = Value of registers.  Basically equivalent to [r(0)] - [r(9)].
              Note: You may use %q<label> or %q<0> as well.  BANGS supported.
    %qa-%qz = Extended value of registers.
    %va-%vz = Contents of attribute va through vz.
  
    NOTE: Anything that says BANGS supported may use BANGS for the process.
          example: %-!!$22 (see if arg 22 contains a string)
                   %q<!!$0> (see if register 0 is a string)
                   %q<!!$foo> (see if register with label 'foo' is a string)
                   %i!!$0 (see if iter()'s itext(0) is a string)
                   %d!!$0 (see if @dolist/inline's dtext(0) is a string)
  
{ '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.
    %-<num> = Stack 10+ that are comma delimited or if <num> specified
              the positional stack location 0 through 999.  BANGS supported.
    %-m     = The last command executed that issued @hook.  
    %i0-%i9 = Equivalent to itext(0) through itext(9). [%il for outer]
              BANGS supported.
    %d0-%d9 = Equivalent to dtext(0) through dtext(9).  [%dl for outer]
              Only useable with /inline only.  BANGS supported.
    %q0-%q9 = Value of registers.  Basically equivalent to [r(0)] - [r(9)].
              Note: You may use %q<label> or %q<0> as well.  BANGS supported.
    %qa-%qz = Extended value of registers.
    %va-%vz = Contents of attribute va through vz.
  
    NOTE: Anything that says BANGS supported may use BANGS for the process.
          example: %-!!$22 (see if arg 22 contains a string)
                   %q<!!$0> (see if register 0 is a string)
                   %q<!!$foo> (see if register with label 'foo' is a string)
                   %i!!$0 (see if iter()'s itext(0) is a string)
                   %d!!$0 (see if @dolist/inline's dtext(0) is a string)
  
{ '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.
    %-<num> = Stack 10+ that are comma delimited or if <num> specified
              the positional stack location 0 through 999.  BANGS supported.
    %-m     = The last command executed that issued @hook.  
    %i0-%i9 = Equivalent to itext(0) through itext(9). [%il for outer]
              BANGS supported.
    %d0-%d9 = Equivalent to dtext(0) through dtext(9).  [%dl for outer]
              Only useable with /inline only.  BANGS supported.
    %q0-%q9 = Value of registers.  Basically equivalent to [r(0)] - [r(9)].
              Note: You may use %q<label> or %q<0> as well.  BANGS supported.
    %qa-%qz = Extended value of registers.
    %va-%vz = Contents of attribute va through vz.
  
    NOTE: Anything that says BANGS supported may use BANGS for the process.
          example: %-!!$22 (see if arg 22 contains a string)
                   %q<!!$0> (see if register 0 is a string)
                   %q<!!$foo> (see if register with label 'foo' is a string)
                   %i!!$0 (see if iter()'s itext(0) is a string)
                   %d!!$0 (see if @dolist/inline's dtext(0) is a string)
  
{ '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.
    %-<num> = Stack 10+ that are comma delimited or if <num> specified
              the positional stack location 0 through 999.  BANGS supported.
    %-m     = The last command executed that issued @hook.  
    %i0-%i9 = Equivalent to itext(0) through itext(9). [%il for outer]
              BANGS supported.
    %d0-%d9 = Equivalent to dtext(0) through dtext(9).  [%dl for outer]
              Only useable with /inline only.  BANGS supported.
    %q0-%q9 = Value of registers.  Basically equivalent to [r(0)] - [r(9)].
              Note: You may use %q<label> or %q<0> as well.  BANGS supported.
    %qa-%qz = Extended value of registers.
    %va-%vz = Contents of attribute va through vz.
  
    NOTE: Anything that says BANGS supported may use BANGS for the process.
          example: %-!!$22 (see if arg 22 contains a string)
                   %q<!!$0> (see if register 0 is a string)
                   %q<!!$foo> (see if register with label 'foo' is a string)
                   %i!!$0 (see if iter()'s itext(0) is a string)
                   %d!!$0 (see if @dolist/inline's dtext(0) is a string)
  
{ '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.
    %-<num> = Stack 10+ that are comma delimited or if <num> specified
              the positional stack location 0 through 999.  BANGS supported.
    %-m     = The last command executed that issued @hook.  
    %i0-%i9 = Equivalent to itext(0) through itext(9). [%il for outer]
              BANGS supported.
    %d0-%d9 = Equivalent to dtext(0) through dtext(9).  [%dl for outer]
              Only useable with /inline only.  BANGS supported.
    %q0-%q9 = Value of registers.  Basically equivalent to [r(0)] - [r(9)].
              Note: You may use %q<label> or %q<0> as well.  BANGS supported.
    %qa-%qz = Extended value of registers.
    %va-%vz = Contents of attribute va through vz.
  
    NOTE: Anything that says BANGS supported may use BANGS for the process.
          example: %-!!$22 (see if arg 22 contains a string)
                   %q<!!$0> (see if register 0 is a string)
                   %q<!!$foo> (see if register with label 'foo' is a string)
                   %i!!$0 (see if iter()'s itext(0) is a string)
                   %d!!$0 (see if @dolist/inline's dtext(0) is a string)
  
{ '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 last named <label>
          %_<->          -- disables debugging for last defined label
          %_<off>        -- disables all debugging labels
          %_<!list>      -- List current stack, in-use stack, and all labels.
          %_<!shortlist> -- List current stack and in-use stack.
  
  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 remove the
  last defined label from the stack.  If you use the same label twice,
  it will remove the newest defined first working backwards.
  
  If you specify a label of just '-' it removes the last defined label.
   
  Using the <label> adds to the debug stack and using <-label> reduces one
  from the debug stack by removing the latest named label.  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 last named <label>
          %_<->          -- disables debugging for last defined label
          %_<off>        -- disables all debugging
          %_<!list>      -- List current stack, in-use stack, and all labels.
          %_<!shortlist> -- List current stack and in-use stack.
  
  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"
    > say Debugging: [add(1,1)]%_<123>[add(2,2)]%_<->[add(3,3)]
    YourPlayerName(#12345) [123]} 'add(2,2)' -> '4'
    You say "Debugging: 246"
  
  In the last two examples, 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 last named <label>
          %_<->          -- disables debugging for last defined label
          %_<off>        -- disables all debugging
          %_<!list>      -- List current stack, in-use stack, and all labels.
          %_<!shortlist> -- List current stack and in-use stack.
  
  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.
  
  TRACETAB         -- Specify how many spaces to indent on each parse
  
  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.
    %-<num> = Stack 10+ that are comma delimited or if <num> specified
              the positional stack location 0 through 999.  BANGS supported.
    %-m     = The last command executed that issued @hook.  
    %i0-%i9 = Equivalent to itext(0) through itext(9). [%il for outer]
              BANGS supported.
    %d0-%d9 = Equivalent to dtext(0) through dtext(9).  [%dl for outer]
              Only useable with /inline only.  BANGS supported.
    %q0-%q9 = Value of registers.  Basically equivalent to [r(0)] - [r(9)].
              Note: You may use %q<label> or %q<0> as well.  BANGS supported.
    %qa-%qz = Extended value of registers.
    %va-%vz = Contents of attribute va through vz.
  
    NOTE: Anything that says BANGS supported may use BANGS for the process.
          example: %-!!$22 (see if arg 22 contains a string)
                   %q<!!$0> (see if register 0 is a string)
                   %q<!!$foo> (see if register with label 'foo' is a string)
                   %i!!$0 (see if iter()'s itext(0) is a string)
                   %d!!$0 (see if @dolist/inline's dtext(0) is a string)
  
{ '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.
    %-<num> = Stack 10+ that are comma delimited or if <num> specified
              the positional stack location 0 through 999.  BANGS supported.
    %-m     = The last command executed that issued @hook.  
    %i0-%i9 = Equivalent to itext(0) through itext(9). [%il for outer]
              BANGS supported.
    %d0-%d9 = Equivalent to dtext(0) through dtext(9).  [%dl for outer]
              Only useable with /inline only.  BANGS supported.
    %q0-%q9 = Value of registers.  Basically equivalent to [r(0)] - [r(9)].
              Note: You may use %q<label> or %q<0> as well.  BANGS supported.
    %qa-%qz = Extended value of registers.
    %va-%vz = Contents of attribute va through vz.
  
    NOTE: Anything that says BANGS supported may use BANGS for the process.
          example: %-!!$22 (see if arg 22 contains a string)
                   %q<!!$0> (see if register 0 is a string)
                   %q<!!$foo> (see if register with label 'foo' is a string)
                   %i!!$0 (see if iter()'s itext(0) is a string)
                   %d!!$0 (see if @dolist/inline's dtext(0) is a string)
  
{ '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.
    %-<num> = Stack 10+ that are comma delimited or if <num> specified
              the positional stack location 0 through 999.  BANGS supported.
    %-m     = The last command executed that issued @hook.  
    %i0-%i9 = Equivalent to itext(0) through itext(9). [%il for outer]
              BANGS supported.
    %d0-%d9 = Equivalent to dtext(0) through dtext(9).  [%dl for outer]
              Only useable with /inline only.  BANGS supported.
    %q0-%q9 = Value of registers.  Basically equivalent to [r(0)] - [r(9)].
              Note: You may use %q<label> or %q<0> as well.  BANGS supported.
    %qa-%qz = Extended value of registers.
    %va-%vz = Contents of attribute va through vz.
  
    NOTE: Anything that says BANGS supported may use BANGS for the process.
          example: %-!!$22 (see if arg 22 contains a string)
                   %q<!!$0> (see if register 0 is a string)
                   %q<!!$foo> (see if register with label 'foo' is a string)
                   %i!!$0 (see if iter()'s itext(0) is a string)
                   %d!!$0 (see if @dolist/inline's dtext(0) is a string)
  
{ '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.
    %-<num> = Stack 10+ that are comma delimited or if <num> specified
              the positional stack location 0 through 999.  BANGS supported.
    %-m     = The last command executed that issued @hook.  
    %i0-%i9 = Equivalent to itext(0) through itext(9). [%il for outer]
              BANGS supported.
    %d0-%d9 = Equivalent to dtext(0) through dtext(9).  [%dl for outer]
              Only useable with /inline only.  BANGS supported.
    %q0-%q9 = Value of registers.  Basically equivalent to [r(0)] - [r(9)].
              Note: You may use %q<label> or %q<0> as well.  BANGS supported.
    %qa-%qz = Extended value of registers.
    %va-%vz = Contents of attribute va through vz.
  
    NOTE: Anything that says BANGS supported may use BANGS for the process.
          example: %-!!$22 (see if arg 22 contains a string)
                   %q<!!$0> (see if register 0 is a string)
                   %q<!!$foo> (see if register with label 'foo' is a string)
                   %i!!$0 (see if iter()'s itext(0) is a string)
                   %d!!$0 (see if @dolist/inline's dtext(0) is a string)
  
{ '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.
    %-<num> = Stack 10+ that are comma delimited or if <num> specified
              the positional stack location 0 through 999.  BANGS supported.
    %-m     = The last command executed that issued @hook.  
    %i0-%i9 = Equivalent to itext(0) through itext(9). [%il for outer]
              BANGS supported.
    %d0-%d9 = Equivalent to dtext(0) through dtext(9).  [%dl for outer]
              Only useable with /inline only.  BANGS supported.
    %q0-%q9 = Value of registers.  Basically equivalent to [r(0)] - [r(9)].
              Note: You may use %q<label> or %q<0> as well.  BANGS supported.
    %qa-%qz = Extended value of registers.
    %va-%vz = Contents of attribute va through vz.
  
    NOTE: Anything that says BANGS supported may use BANGS for the process.
          example: %-!!$22 (see if arg 22 contains a string)
                   %q<!!$0> (see if register 0 is a string)
                   %q<!!$foo> (see if register with label 'foo' is a string)
                   %i!!$0 (see if iter()'s itext(0) is a string)
                   %d!!$0 (see if @dolist/inline's dtext(0) is a string)
  
{ '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.
    %-<num> = Stack 10+ that are comma delimited or if <num> specified
              the positional stack location 0 through 999.  BANGS supported.
    %-m     = The last command executed that issued @hook.  
    %i0-%i9 = Equivalent to itext(0) through itext(9). [%il for outer]
              BANGS supported.
    %d0-%d9 = Equivalent to dtext(0) through dtext(9).  [%dl for outer]
              Only useable with /inline only.  BANGS supported.
    %q0-%q9 = Value of registers.  Basically equivalent to [r(0)] - [r(9)].
              Note: You may use %q<label> or %q<0> as well.  BANGS supported.
    %qa-%qz = Extended value of registers.
    %va-%vz = Contents of attribute va through vz.
  
    NOTE: Anything that says BANGS supported may use BANGS for the process.
          example: %-!!$22 (see if arg 22 contains a string)
                   %q<!!$0> (see if register 0 is a string)
                   %q<!!$foo> (see if register with label 'foo' is a string)
                   %i!!$0 (see if iter()'s itext(0) is a string)
                   %d!!$0 (see if @dolist/inline's dtext(0) is a string)
  
{ '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.
    %-<num> = Stack 10+ that are comma delimited or if <num> specified
              the positional stack location 0 through 999.  BANGS supported.
    %-m     = The last command executed that issued @hook.  
    %i0-%i9 = Equivalent to itext(0) through itext(9). [%il for outer]
              BANGS supported.
    %d0-%d9 = Equivalent to dtext(0) through dtext(9).  [%dl for outer]
              Only useable with /inline only.  BANGS supported.
    %q0-%q9 = Value of registers.  Basically equivalent to [r(0)] - [r(9)].
              Note: You may use %q<label> or %q<0> as well.  BANGS supported.
    %qa-%qz = Extended value of registers.
    %va-%vz = Contents of attribute va through vz.
  
    NOTE: Anything that says BANGS supported may use BANGS for the process.
          example: %-!!$22 (see if arg 22 contains a string)
                   %q<!!$0> (see if register 0 is a string)
                   %q<!!$foo> (see if register with label 'foo' is a string)
                   %i!!$0 (see if iter()'s itext(0) is a string)
                   %d!!$0 (see if @dolist/inline's dtext(0) is a string)
  
{ '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.
    %-<num> = Stack 10+ that are comma delimited or if <num> specified
              the positional stack location 0 through 999.  BANGS supported.
    %-m     = The last command executed that issued @hook.  
    %i0-%i9 = Equivalent to itext(0) through itext(9). [%il for outer]
              BANGS supported.
    %d0-%d9 = Equivalent to dtext(0) through dtext(9).  [%dl for outer]
              Only useable with /inline only.  BANGS supported.
    %q0-%q9 = Value of registers.  Basically equivalent to [r(0)] - [r(9)].
              Note: You may use %q<label> or %q<0> as well.  BANGS supported.
    %qa-%qz = Extended value of registers.
    %va-%vz = Contents of attribute va through vz.
  
    NOTE: Anything that says BANGS supported may use BANGS for the process.
          example: %-!!$22 (see if arg 22 contains a string)
                   %q<!!$0> (see if register 0 is a string)
                   %q<!!$foo> (see if register with label 'foo' is a string)
                   %i!!$0 (see if iter()'s itext(0) is a string)
                   %d!!$0 (see if @dolist/inline's dtext(0) is a string)
  
{ '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.
    %-<num> = Stack 10+ that are comma delimited or if <num> specified
              the positional stack location 0 through 999.  BANGS supported.
    %-m     = The last command executed that issued @hook.  
    %i0-%i9 = Equivalent to itext(0) through itext(9). [%il for outer]
              BANGS supported.
    %d0-%d9 = Equivalent to dtext(0) through dtext(9).  [%dl for outer]
              Only useable with /inline only.  BANGS supported.
    %q0-%q9 = Value of registers.  Basically equivalent to [r(0)] - [r(9)].
              Note: You may use %q<label> or %q<0> as well.  BANGS supported.
    %qa-%qz = Extended value of registers.
    %va-%vz = Contents of attribute va through vz.
  
    NOTE: Anything that says BANGS supported may use BANGS for the process.
          example: %-!!$22 (see if arg 22 contains a string)
                   %q<!!$0> (see if register 0 is a string)
                   %q<!!$foo> (see if register with label 'foo' is a string)
                   %i!!$0 (see if iter()'s itext(0) is a string)
                   %d!!$0 (see if @dolist/inline's dtext(0) is a string)
  
{ '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.
    %-<num> = Stack 10+ that are comma delimited or if <num> specified
              the positional stack location 0 through 999.  BANGS supported.
    %-m     = The last command executed that issued @hook.  
    %i0-%i9 = Equivalent to itext(0) through itext(9). [%il for outer]
              BANGS supported.
    %d0-%d9 = Equivalent to dtext(0) through dtext(9).  [%dl for outer]
              Only useable with /inline only.  BANGS supported.
    %q0-%q9 = Value of registers.  Basically equivalent to [r(0)] - [r(9)].
              Note: You may use %q<label> or %q<0> as well.  BANGS supported.
    %qa-%qz = Extended value of registers.
    %va-%vz = Contents of attribute va through vz.
  
    NOTE: Anything that says BANGS supported may use BANGS for the process.
          example: %-!!$22 (see if arg 22 contains a string)
                   %q<!!$0> (see if register 0 is a string)
                   %q<!!$foo> (see if register with label 'foo' is a string)
                   %i!!$0 (see if iter()'s itext(0) is a string)
                   %d!!$0 (see if @dolist/inline's dtext(0) is a string)
  
{ '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.
    %-<num> = Stack 10+ that are comma delimited or if <num> specified
              the positional stack location 0 through 999.  BANGS supported.
    %-m     = The last command executed that issued @hook.  
    %i0-%i9 = Equivalent to itext(0) through itext(9). [%il for outer]
              BANGS supported.
    %d0-%d9 = Equivalent to dtext(0) through dtext(9).  [%dl for outer]
              Only useable with /inline only.  BANGS supported.
    %q0-%q9 = Value of registers.  Basically equivalent to [r(0)] - [r(9)].
              Note: You may use %q<label> or %q<0> as well.  BANGS supported.
    %qa-%qz = Extended value of registers.
    %va-%vz = Contents of attribute va through vz.
  
    NOTE: Anything that says BANGS supported may use BANGS for the process.
          example: %-!!$22 (see if arg 22 contains a string)
                   %q<!!$0> (see if register 0 is a string)
                   %q<!!$foo> (see if register with label 'foo' is a string)
                   %i!!$0 (see if iter()'s itext(0) is a string)
                   %d!!$0 (see if @dolist/inline's dtext(0) is a string)
  
{ '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.
    %-<num> = Stack 10+ that are comma delimited or if <num> specified
              the positional stack location 0 through 999.  BANGS supported.
    %-m     = The last command executed that issued @hook.  
    %i0-%i9 = Equivalent to itext(0) through itext(9). [%il for outer]
              BANGS supported.
    %d0-%d9 = Equivalent to dtext(0) through dtext(9).  [%dl for outer]
              Only useable with /inline only.  BANGS supported.
    %q0-%q9 = Value of registers.  Basically equivalent to [r(0)] - [r(9)].
              Note: You may use %q<label> or %q<0> as well.  BANGS supported.
    %qa-%qz = Extended value of registers.
    %va-%vz = Contents of attribute va through vz.
  
    NOTE: Anything that says BANGS supported may use BANGS for the process.
          example: %-!!$22 (see if arg 22 contains a string)
                   %q<!!$0> (see if register 0 is a string)
                   %q<!!$foo> (see if register with label 'foo' is a string)
                   %i!!$0 (see if iter()'s itext(0) is a string)
                   %d!!$0 (see if @dolist/inline's dtext(0) is a string)
  
{ '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.
    %-<num> = Stack 10+ that are comma delimited or if <num> specified
              the positional stack location 0 through 999.  BANGS supported.
    %-m     = The last command executed that issued @hook.  
    %i0-%i9 = Equivalent to itext(0) through itext(9). [%il for outer]
              BANGS supported.
    %d0-%d9 = Equivalent to dtext(0) through dtext(9).  [%dl for outer]
              Only useable with /inline only.  BANGS supported.
    %q0-%q9 = Value of registers.  Basically equivalent to [r(0)] - [r(9)].
              Note: You may use %q<label> or %q<0> as well.  BANGS supported.
    %qa-%qz = Extended value of registers.
    %va-%vz = Contents of attribute va through vz.
  
    NOTE: Anything that says BANGS supported may use BANGS for the process.
          example: %-!!$22 (see if arg 22 contains a string)
                   %q<!!$0> (see if register 0 is a string)
                   %q<!!$foo> (see if register with label 'foo' is a string)
                   %i!!$0 (see if iter()'s itext(0) is a string)
                   %d!!$0 (see if @dolist/inline's dtext(0) is a string)
  
{ '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.
    %-<num> = Stack 10+ that are comma delimited or if <num> specified
              the positional stack location 0 through 999.  BANGS supported.
    %-m     = The last command executed that issued @hook.  
    %i0-%i9 = Equivalent to itext(0) through itext(9). [%il for outer]
              BANGS supported.
    %d0-%d9 = Equivalent to dtext(0) through dtext(9).  [%dl for outer]
              Only useable with /inline only.  BANGS supported.
    %q0-%q9 = Value of registers.  Basically equivalent to [r(0)] - [r(9)].
              Note: You may use %q<label> or %q<0> as well.  BANGS supported.
    %qa-%qz = Extended value of registers.
    %va-%vz = Contents of attribute va through vz.
  
    NOTE: Anything that says BANGS supported may use BANGS for the process.
          example: %-!!$22 (see if arg 22 contains a string)
                   %q<!!$0> (see if register 0 is a string)
                   %q<!!$foo> (see if register with label 'foo' is a string)
                   %i!!$0 (see if iter()'s itext(0) is a string)
                   %d!!$0 (see if @dolist/inline's dtext(0) is a string)
  
{ '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.
    %-<num> = Stack 10+ that are comma delimited or if <num> specified
              the positional stack location 0 through 999.  BANGS supported.
    %-m     = The last command executed that issued @hook.  
    %i0-%i9 = Equivalent to itext(0) through itext(9). [%il for outer]
              BANGS supported.
    %d0-%d9 = Equivalent to dtext(0) through dtext(9).  [%dl for outer]
              Only useable with /inline only.  BANGS supported.
    %q0-%q9 = Value of registers.  Basically equivalent to [r(0)] - [r(9)].
              Note: You may use %q<label> or %q<0> as well.  BANGS supported.
    %qa-%qz = Extended value of registers.
    %va-%vz = Contents of attribute va through vz.
  
    NOTE: Anything that says BANGS supported may use BANGS for the process.
          example: %-!!$22 (see if arg 22 contains a string)
                   %q<!!$0> (see if register 0 is a string)
                   %q<!!$foo> (see if register with label 'foo' is a string)
                   %i!!$0 (see if iter()'s itext(0) is a string)
                   %d!!$0 (see if @dolist/inline's dtext(0) is a string)
  
{ '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]

&MAILFILTER

  Attribute: &MAILFILTER
  
  This attribute, when set on a player, will allow that player individual
  control of where the mail will go.  This allows the player to redirect
  incoming mail into pre-existing folders.  The following are passed:
              %0  - the dbref# of the player (or #-1 if anonymous)
              %1  - the subject of the message
              %2  - the body of the message
              %3  - the date/time of the message
  Examples:
    > folder/list
      Mail: You have the following folders ->
      Incoming Testing Junk
    > &MAILFILTER me=[switch(%0,#123,Testing,#234,Junk)]
      Set.
    > think [num(me)] [name(me)]
      #123 Yourself
    > mail me=A Test//A Test
      Mail: You have new mail from -> Yourself [Subj: A Test]
      Mail: Auto-Moved to folder -> Testing
      Mail: Message sent to -> Yourself
    > (recieving mail from Bob, dbref #999)
      Mail: You have new mail from -> Bob [Subj: Hey!]
    > (recieving mail from Tony, dbref #234)
      Mail: You have new mail from -> Tony [Subj: You smell]
      Mail: Auto-Moved to folder -> Junk
  
  See Also: @mailsig, &mailnotify
 
[PREV] [TOP] [NEXT]

&MAILNOTIFY

  Attribute: &MAILNOTIFY
  
  This attribute, when set on a player, will send a message to the person
  mailing them depending on the evaluated text in the attribute.
  
  If the message evaluates to an empty string, no message is sent.
  
  The following arguments are passed for evaluation:
              %0  - the dbref# of the player (or #-1 if anonymous)
              %1  - the subject of the message
              %2  - the body of the message
              %3  - the date/time of the message
  
  Examples:
    > &mailnotify me=Hi, [name(%0)]!  You sent me mail!
    Set.
    > think [name(me)]
    Bob
    > mail me=Test!
    Hi, Bob!  You sent me mail!
    Mail: You have new mail from -> Bob
    Mail: Message sent to -> Bob
    Mail: Done
    > think [name(me)]
    Betty
    > mail bob=Test!
    Hi, Betty! You sent me mail!
    Mail: Message sent to -> Bob
    Mail: Done
  
  See Also: @mailsig, &mailfilter

[PREV] [TOP] [NEXT]

&OUTPAGEFORMAT

  Attribute: &outpageformat <object>[=<message>]
             &pageformat <object>[=<message>]
  
  &PAGEFORMAT changes the message seen by <object> when it receives a page.
  &OUTPAGEFORMAT sets the message seen by <object> when it sends a page.
  
  %0 - will be set to the page message (not including :, ; or ").
  %1 - will be set to ':' ';' or '"' for pose, semipose and normal page, 
       reespectively.
  %2 - will be set to the alias of the pager, if any.
  %3 - will be a space-separated list of recipient dbrefs.
  %4 - will be set to the default message (based on pageformat/outpageformat).
  
  { See 'help &pageformat2' for examples. }

[PREV] [TOP] [NEXT]

&PAGEFORMAT

  Attribute: &outpageformat <object>[=<message>]
             &pageformat <object>[=<message>]
  
  &PAGEFORMAT changes the message seen by <object> when it receives a page.
  &OUTPAGEFORMAT sets the message seen by <object> when it sends a page.
  
  %0 - will be set to the page message (not including :, ; or ").
  %1 - will be set to ':' ';' or '"' for pose, semipose and normal page, 
       reespectively.
  %2 - will be set to the alias of the pager, if any.
  %3 - will be a space-separated list of recipient dbrefs.
  %4 - will be set to the default message (based on pageformat/outpageformat).
  
  { See 'help &pageformat2' for examples. }

[PREV] [TOP] [NEXT]

&pageformat2

  Attribute: &outpageformat <object>[=<message>]    (CONTINUED)
             &pageformat <object>[=<message>]
  
  Examples:
    > &pageformat me=\[[time()]\] %4
    Set.
    > @outpageformat me=\[[time()]\] %4
    Set.

    (To obtain @toggle vpage behavior:)
    > &pageformat me=[setq(0,%n[if(%2,%b(%2))],1,switch(%3,%!,,elist(iter(%3,
                     name(##),%b,|),,|)))][switch(%1,",%q0 pages[if(%q1,%b%q1)]:
                     %0,:,From afar[if(%q1,%b(to %q1))]\, %q0 %0,
                     From afar[if(%q1, %b(to %q1))]\, %q0%0)]
    Set.

    (To obtain no @toggle vpage behavior:)
    > &pageformat me=[setq(1,switch(%3,%!,,elist(iter(%3,name(##),%b,|),,|)))]
                     [switch(%1,",%n pages[if(%q1,%b%q1)]: %0,:,From 
                     afar[if(%q1,%b(to %q1))]\, %n %0,From 
                     afar[if(%q1,%b(to %q1))]\, %n%0)]
    Set.
  
    Both examples above will return how 'page' would normally show.
  
  See Also: page, lpage, rpage, mrpage

[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]

-

  Command: mail/write <text>
           -<text>
  
  The '-' subcommand is used to continue lines of text after the initial
  'mail/write' was used to start the mail message.  This is used in
  juncture with sending, forwarding, or replying to mail using the
  line editor.  This command will NOT be recognized as a valid command
  if you did not use mail/write previous to it!
  
  Example:
    > -this is a line of text
    Huh?  (Type 'help' for help.)
    > mail/write I forgot to start the message first!
    Mail: Write message started (37/32758).
    > -this is a line of text
    Mail: Write line 2 added (60/32758)
    > mail/write another line of text
    Mail: Write line 3 added (81/32758)
  
  See Also: mail write cmdlist, mail write adding
  
[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 privileged/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]
  * &pageformat and &outpage format added [ASH]
  * @admin param vattr_command allows you to make @commands for 
    user-defined attributes (VATTRS) [ASH]
  * @list vattrcmds to show attribute relationships to commands [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]
  * *_site and *_host will no longer allow duplicated entries [ASH]
  * parenmatch() optionally allows stateful flags to specify additional
    spaces for padding to make output easier to read [ASH]
  * ldelete(), replace(), and insert() now take optional output delims [ASH]
  * extractword() handles args from 1 now and negative operators [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]
  * small bug in time conversion in timefmt() with daylight savings [ASH]
  * mail did not handle commas for player separation properly [ASH]

[PREV] [TOP] [NEXT]

3.9.5p4

  Release Date: 11/23/16
  Status: Alpha
  
  New Features
  ------------
  * testlock() for PennMUSH compatibility on testing locks [ASH]
  * hook_offline if enabled will trigger the @hook/after on
    @pcreate/@register on AO_<command> attribute.  Player created 
    will be %# [ASH]
  * @hook/include converts A_* (after) and B_* (before) hooks into
    command processors instead of function processors.  Work was done
    to avoid recursive calling.
  * sandbox() to deny access to functions (built in or user) [ASH]
  * BYPASS @admin function permission to tag a function (built in or user)
    to not be affected by the sandbox() function [ASH]
  * packmath() to allow math on varying radix compressions [ASH]
  * subeval() evaluates string without executiong functions [ASH]
  * %_<-> pops last stack for debug labels [ASH]
  * alternative messages for those who hit 'MAX' on optional max values
    for site restrictions for noguest, register, and forbid. [ASH]
  * alternative messages for those set NOCONNECT or NOPOSSESS [KAG, ASH]
  
  Changes
  ------------
  * lt(), lte(), gt(), gte(), eq(), neq() handle multiple args [ASH]
  * @hook will show if hook_offline is enabled [ASH]
  * offline 'create' optionally triggers @hook [ASH]
  * [co]nnect, [cr]eate, etc on connect screen are no longer case
    sensitive [ASH]
  * strmath() now handles <, >, <=, >=, =, != [ASH]
  * elements()/elementsmux() now handles negative values to pull
    from the end [ASH]
  * improve folder/list to be more descriptive [ASH]
  * xinc() and xdec() modified to handle advanced inc/dec [ASH]
  * mail/status @folder works for displaying mail of folder [ASH]
  * backend exec() parser passes EV_NOFCHECK to avoid parsing funcs [ASH]
  * modified the backend to allow easy setting permissions on user attrib [ASH]
  * When /save is used with /read it will output the format of your mail
    in an MBOX standard format [ASH]
  * UEVAL() and ZFUNEVAL() now accept /SUBEVAL as a switch [ASH]
  * %-<number> now optionally handles %-subs 0-999 [ASH]
  * %-m handles last command for @hooks only [ASH]
  * improved %_<subs> to be more vigerous with removal and pops
    last match first.
  * colors have a (n)ame option to display name of the ansi arg [ASH]
  * alternate date formats for convtime() [ASH]
  * optional double eval for subeval (safe as it doesn't do functs) [ASH]
  
  Bug Fixes
  ------------
  * GCC 6.2 had different sizes for pointer and structure data [ASH]
  * cleanup of warnings for GCC 6.2. [ASH]
  * cleanup of warnings for CLANG on MacOSX Sierra [ASH]
  * fix crash bug in ljc() [ASH]
  * potential buffer corruption with very large function, flag,
    toggle, and command lists [ASH]
  * listfunctions() didn't work properly with local @lfunctions [ASH]
  * mail/status [<folder>] wouldn't show mail of the given folder [ASH]
  * bug with matching when NO_NAME was in effect on a target [ASH]
  * folders mistakenly seen as corrupt when you had no mail at all [ASH]
  * potential crash with NONAME when examining [ASH]
  * @hook/include would break IGNORE feature sets and single chr commands [ASH]
  * missing free buffer for sqlite [ASH]
  * @hook didn't case desensitize commands passed to it [ASH]
  * MAX on noguest didn't actually check guests connected when it should [ASH]
  * nested /NOTRACE on @function/@lfunction didn't work [ASH]

[PREV] [TOP] [NEXT]

4.0.0p0

  Release Date: 01/15/17
  Status: Alpha
    
  New Features
  ------------
  * # option to printf for converting tabs to specified number of spaces [ASH]
  * BANG support is now supported in %-<num> regs and %q<> regs [ASH]
  * BANG support is now supported in %i<num> and %d<num> substitutions [ASH]
  * SPEECH_PREFIX and SPEECH_SUFFIX attributes for prefix and suffix
    processing of say ("), pose (: & ;), and @emit (//)  messages.  
    Note: if set NO_COMMAND these will not process [ASH]
  * Added argument %3 to SPEECH_PREFIX/SUFFIX for dbref# of enactor.  This
    follows rules of 'spoofing' and spoofers show up as #-1.  [ASH]
  * @admin param posesay_funct will optionally allow SPEECH_PREFIX and
    SPEECH_SUFFIX to evaluate functions as long as not set NO_COMMAND.  [ASH]
  * privatize() handles localize level of evaluation [ASH]
  * @jump added to jump 'ahead' a set number of commands in sequence [ASH]
  * @rollback to allow rolling back in the command queue based on varying
    abilities [ASH]
  * @goto command, a command similiar to @jump, using numerical labels. [AMB]
  * @list alloc now lists network statistics for current running mush [ASH]
  * @rollback handles /label to be compatible with @goto [ASH]
  * msecs() like secs() but shows milisecond counts [ASH]
  * exec_secure for execscript(_) config param (default 1) which does as it 
    does now.  setting it to '0' escapes all characters but alphanumeric [ASH]
  * A form of REST API has been added.  Please refer to documentation in-game
    in help and wizhelp for how to use the API handler. [ASH]
  * @api command to empower/enable API handling of a target [ASH]
  * forbidapi_host/forbidapi_site for API handling [ASH]
  * api_port for the unique port for the API handler [ASH]
  * api_nodns to disable DNS lookups for all API handling [ASH]
  * max_lastsite_api to set maximum API connections a minute [ASH]
  * @power API (used with @api) for empowering objects [ASH]
  * @power MONITORAPI (used with MONITOR_SITE) for filtering API [ASH]
  * @admin param guest_randomize if enabled will randomly select a guest
    each time one connects [ASH]
  * passproxy_site/passproxy_host for bypassing the automatic proxy
    detection subsystem.
  
  Changes
  ------------
  * increased the size of altname to 100 characters due to unicode [ASH]
  * laxed some restrictions (like line length) for execscript [ASH]
  * TESTLOCK() now handles more arguments for multi-targets [ASH]
  * attribute uselocks now pass args %0-%9 that $commands have [ASH]
  * listmatch() takes optional 4th arg to specify args to display [ASH]
  * increased spellnum() to decillion [ASH]
  * Added additional time formats to convtime() [ASH]
  * moved up initializers for cpu alerts to be more aggressive [ASH]
  * @decompile/tf will now, if passed /noextra in addition, surpress the
    additional information on decompile (like attribute flags) [ASH]
  * added negative time values for some sequences for convtime() [ASH]
  * Split up and improved the CPU alarm subsystem [ASH]
  * decode64 handles carrage returns where before it did not [ASH]
  
  Bug Fixes
  ------------
  * permission combination sets on connect screen could cause a crash [ASH]
  * small bug in backend ansi handler that wouldn't allow background 16color
    with foreground 256color [ASH]
  * lnum2() didn't work properly with lnum_compat enabled [ASH]
  * a one off unitialized variable for loading in command tables [ASH]
  * small cleanup with compiling without ZENTY_ANSI [ASH]
  * handler cleaned up for no-op handling [ASH,AMB]
  * small parsing issue with bang notation with functions caused cutoff [ASH]
  * rare issue of not null terminating string for a parser condition [ASH]
  * the mail fix routine didn't range-check player lookups properly [ASH]
  * possible out of bounds with UTF8 on notify to port [ASH]
  * trim didn't default to 'space' if third argument existed and null [ASH]
  * fix for *BSD missing 'daylight' timezone variable definition [ASH]
  * /0 CIDR notation would not set properly [ASH]
  * all localization doesn't keep setq names properly + clear [ASH] 
  * fix that @jump could potentially blow the stack of the mush
    to fix a stack leak, you must @shutdown then start mush [ASH]
  * @rollback had a missing buffer free [ASH]
  * ] for @hook/ignore and @hook/permit was broken [ASH]
  * @goto could potentially overflow a buffer [ASH]
  * off by one argument handler for @rollback [ASH]
  * segments not initialized properly for CPU alarms [ASH]
  * error in CPUTIME not always being initialized properly [ASH]
  * Some CPU handlers were broke and far too aggressive [ASH]
  * bug in @dolist/inline that wouldn't fully honor CPU protection [ASH]
  * MUX password check algo didn't fully work because memcmp() is stupid [ASH]
  * Bug with @nuke on wiping mail if issued from a non-player [ASH]
  * Fixed an ancient crashbug in right() when second arg was missing [AMB]
  * potatoe sent invalid data-stream of NULL followed by CRLF.  We ignore
    this now and no longer update idle time [ASH]
  * bug in @protect that didn't set/unset the proper flags [ASH]
  * The base UTF8 conversion had a math error in stringutil.c [eery]
  * UTF8 ran into codepoint corruption due to missing terminator [eery]

[PREV] [TOP] [NEXT]

4.0.0p1

  Release Date: 09/08/17
  Status: Alpha
    
  New Features
  ------------
  * @name/ansi combines @name and @extansi.  If you do not have @extansi
    access, @name/ansi will fail as well [ASH]
  * @pcreate, @create, @open, @dig, @clone, and @register now handle
    /ansi as well [ASH]
  * ansipos() to return the markup of the ansi and accents of the given
    position in the string. [ASH]
  * added @admin param 'null_is_idle' to treat @@ like IDLE to stop @@
    from updating idle times. [ASH]
  * @power wiz_idle to allow target players the enhanced idle features [ASH]
  * attribute 'mailnotify' (set via &mailnotify) will evaluate the attribute
    and send to the target person who is issuing mail [ASH]
  * WIZ_SPOOF @power to grant spoofing ability to target [ASH]
  * Attribute TRACETAB to control how many spaces(0-10) to indent on trace
    output for those who prefer PENN's debug format [ASH]
  * passapi_host and passapi_site to bypass max api connections [ASH]
  * trreverse().  Works like reverse() but transposes characters like <> [ASH]
  * insert() now has additional arguments to append, prepend, and box
    (including transposing box) arguments [ASH]  
  * noparse @admin function_access parameter [ASH]
  * @admin param iter_loop_max to control maximum cycles of iter special
    processing [ASH]
  * inf() (an iter() clone) allows special string substitutions for input 
    of :<value>:>: or :<value>:<: for 'infinite loop' checks.  Normal 
    function invocation and cpu alarms as well as the @admin param 
    iter_loop_max dictates maximums for the looping [ASH]
  
  Changes
  ------------
  * objid's are now statically stored on things to finally get around
    weird timezone issues [ASH]
  * More aggressively handle API processing [ASH]
  * colors() works with +<color> as well as <color> now [ASH]
  * Initial fix for stored procedures in MySQL [ASH]
  * optional argument to set() and @set to allow setting attributes with
    a content that starts with '_'  [ASH]
  * COMP() now handles case insensitive, numbers, floats, and dbref#s [ASH]
  
  Bug Fixes
  ------------
  * ANSI16 conversion had bad entries for highlighted yellow [Polk]
  * EVAL locks had a race condition on redefining calling attrib [ASH]
  * ANSI didn't fully honor ZENTY_ANSI when ZENTY_ANSI was enabled [ASH]
  * compiler warnings when ZENTY_ANSI not specified [ASH]
  * crash bug in printf [ASH]
  * printf tab replacement did not reset value for next arg [ASH]
  * mail functions could potentially crash the game if mail is off [ASH]
  * API would wrongly do AUTH checks even if the code ignored lookups [ASH]
  * cleanup @reboot data to strip API lookups and other things [ASH]
  * Nospoof didn't work if you were @toggled UTF8
  * bug in objid where the validation check wouldn't always work [ASH]
  * insert(), ldelete(), and replace() didn't fully work with output
    seperators [ASH]
  * mail attributes allowed evaluation of mail functions and it likely
    shouldn't for security reasons [ASH]
  * timeslice config param could crash the game if used [ASH]
[PREV] [TOP] [NEXT]

:

  Command: :<message>
   
  Displays <message> to everyone in your current room, preceded by your name
  and a space.  
  
  You may use two special attributes for pre and post processing of any
  says you receive.  These attributes will have substitutions evaluated
  but will not evaluate functions.  If these attributes are set NO_COMMAND
  then they will not be processed.
    SPEECH_PREFIX  -- Contents will be evaluated before the say/pose.
    SPEECH_SUFFIX  -- Contents will be evaluated after the say/pose.
  
  Both of these attributes handle three arguments.  These are:
    %0 - The original say/pose that triggered the attribute.
    %1 - The date in the form MM/DD/YYYY
    %2 - The time in the form HH:MM:SS
    %3 - The dbref# of the player issuing the say/pose/emit (#-1 if spoofed)
  
  Example: (assuming your name is Bob)
    > :jumps for joy
    Bob 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.  
  
  You may use two special attributes for pre and post processing of any
  says you receive.  These attributes will have substitutions evaluated
  but will not evaluate functions.  If these attributes are set NO_COMMAND
  then they will not be processed.
    SPEECH_PREFIX  -- Contents will be evaluated before the say/pose.
    SPEECH_SUFFIX  -- Contents will be evaluated after the say/pose.
  
  Both of these attributes handle three arguments.  These are:
    %0 - The original say/pose that triggered the attribute.
    %1 - The date in the form MM/DD/YYYY
    %2 - The time in the form HH:MM:SS
    %3 - The dbref# of the player issuing the say/pose/emit (#-1 if spoofed)
  
  Example: (assuming your name is Bob)
    > ;'s watch beeps.
    Bob'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(), subeval(), null(), privatize(), sandbox()
  
[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, @jump, @rollback, @goto

[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, @jump, @rollback, @goto
  
[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.  Can not be used with /ansi.
     /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.
     /ansi       - Combine @clone and @extansi together.  This follows
                   @extansi permissions and can not be used with /cost.
   
  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.
  
  Examples:
    > @clone RedWagon
    RedWagon cloned, new copy is object #17447.
    > @clone/ansi RedWagon=[ansi(hb,BlueWagon)]
    Ansi string entered for BlueWagon of 'BlueWagon'. (this would be in blue)
    RedWagon cloned as BlueWagon, new copy is object #17444.
  
  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[/<switch>] <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
  
  Available switches:
    /ansi - This combines @create with @extansi to essentially auto-ansify
            the object that you create with <name>.  This follows 
            permissions of @extansi.
  
  Examples:
    > @create MyObj
    MyObj created as object #17508
    > @create/ansi [ansi(hy,MyObj)]
    Ansi string entered for MyObj of 'MyObj'. ('MyObj' would be in yellow)
    MyObj created as object #17508
  
  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.
      /noextra - when used in junction with /tf removes the additional
                 flags and other information from attribute displaying.
  
  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.
 
  The following switches are available:
    /teleport - You are @teleported to the room after it is created 
                and any exits are opened.
    /ansi     - Combines @dig with @extansi.  @extansi colorization is
                applied to the room AND THE EXITS that you specify.  This
                follows permissions of @extansi.
 
  You may use the lastcreate() function to see the last room that @dig'd.
  
  Examples:
    > @dig A Room=Exit In <EI>;exit in;ei,Exit Out <EO>;exit out;eo
    A Room created with room number 17506.
    Opened.
    Linked.
    Opened.
    Linked.
  
    > @dig/ansi [ansi(hb,Blue Room)]=[ansi(hb,Exit In)] [ansi(hr,<EI>)]
    Ansi string entered for Blue Room of 'Blue Room'.  (This would be blue)
    Blue Room created with room number 17503.
    Ansi string entered for Exit In <EI> of 'Exit In <EI>'. (this would be red)
    Opened.
    Linked.
  
  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(), inf()
  
[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.
  
  You may use two special attributes for pre and post processing of any
  emits you receive.  These attributes will have substitutions evaluated
  but will not evaluate functions.  If these attributes are set NO_COMMAND
  then they will not be processed.
    SPEECH_PREFIX  -- Contents will be evaluated before the @emit.
    SPEECH_SUFFIX  -- Contents will be evaluated after the @emit.
  
  Both of these attributes handle three arguments.  These are:
    %0 - The original @emit that triggered the attribute.
    %1 - The date in the form MM/DD/YYYY
    %2 - The time in the form HH:MM:SS
    %3 - The dbref# of the player issuing the say/pose/emit (#-1 if spoofed)
 
  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>
  
  Note: @name/ansi combines this feature with @name
  
  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]

@goto

  Command: @goto[/label] <textlabel>
 
  This command is similiar to @jump, in that it can be used to skip commands
  following it in the queue, up to a certain point. Unlike @jump, this command
  does not skip a specified amount of commands, but lets you skip all commands
  until a specified, text-based label is reached.

  This makes it, yes, quite similiar to classic GOTO commands from other
  programming languages, with the exception that the @goto command only allows
  you to skip *forward*, never backward. For backward jumps, see @rollback.

  Example:
    > @wait 0={th a; th b;@goto foo;th c;th d;@goto/label foo;th e;th f}
    a
    b
    e
    f

  Notes:
    1) @goto'ing to a label that does not exist later in the code makes
       @goto jump the entire remainder of the queue. This can actually be used
       to skip out of loops and command queues entirely.
    2) Labels can have a maximum of 16 characters. Any additional characters
       used in a label's name get ignored.

  See Also: @break, @assert, @skip, @force, @sudo, @switch, @rollback, @jump

[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,
            @jump, @rollback, @goto


[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,
            @jump, @rollback, @goto


[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, @jump, @rollback, @goto

[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]

@jump

  Command: @jump[/<switch>] <amount> [=<evaluation>]
  
  This command will skip ahead <amount> number of commands in the current
  queue.  This effectively 'skips' execution of commands until the number
  of commands are met.  If <amount> exceeds the number of commands in the
  current queue, it will gracefully end the command sequence as if the
  @jump was the last command in the sequence.
  
  You can not nest @jumps.  A value for <amount> that is zero or less than
  zero will assume nothing to be @jump'd and the @jump will be ignored.
  
  You may specify an optionale valuation to be evaluated for the @jump
  processing.  This is intended to execute commands whenever @jump is
  called.  If a zero or less than zero value is passed, the <evaluation>
  is not triggered.
   
  The following switches exist:
    /queued  -- The <evaluation> passed to @jump is queued (default)
    /inline  -- The <evaluation> passed to @jump is in-line.
  
  Example:
    > &FOO me=$foo:say one;@jump 2;say two;say three;say four
    You say "one"
    You say "four"
 
  See Also: @break, @assert, @skip, @force, @sudo, @switch, @rollback, @goto
  
[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.
  
  Any function that starts with a _ that matches a hardcode function you can
  use to override the hardcoded function with sandbox.
  Example:  @lfunction _ladd=me/my_add_function
            say sandbox([add(1,1)] is my own add function,add,1)
  
  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 privileged 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 - privileged
             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(), sandbox(), subeval()
 
[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(), testlock(), 
            lockencode(), lockdecode(), lockcheck()
  
[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 privileges and not modify privileges.  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]

@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|1-N]
  
   Note: For folder help please type 'help folder'
  
   Important topics:
      'HELP MAIL MAIN' for main index.    -- this is very helpful
      'HELP MAIL TOPICS' for topical help.
  
   Important initial help entries:
      'HELP MAIL CMDLIST' for a command listing and quick description
      'HELP MAIL DTUTOR' for a quick tutorial on how to use mail
      'HELP MAIL BTUTOR' for a quick tutorial on the mail editor (optional)
  
  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, folder
  
[PREV] [TOP] [NEXT]

@MAILFILTER

  Attribute: &MAILFILTER
  
  This attribute, when set on a player, will allow that player individual
  control of where the mail will go.  This allows the player to redirect
  incoming mail into pre-existing folders.  The following are passed:
              %0  - the dbref# of the player (or #-1 if anonymous)
              %1  - the subject of the message
              %2  - the body of the message
              %3  - the date/time of the message
  Examples:
    > folder/list
      Mail: You have the following folders ->
      Incoming Testing Junk
    > &MAILFILTER me=[switch(%0,#123,Testing,#234,Junk)]
      Set.
    > think [num(me)] [name(me)]
      #123 Yourself
    > mail me=A Test//A Test
      Mail: You have new mail from -> Yourself [Subj: A Test]
      Mail: Auto-Moved to folder -> Testing
      Mail: Message sent to -> Yourself
    > (recieving mail from Bob, dbref #999)
      Mail: You have new mail from -> Bob [Subj: Hey!]
    > (recieving mail from Tony, dbref #234)
      Mail: You have new mail from -> Tony [Subj: You smell]
      Mail: Auto-Moved to folder -> Junk
  
  See Also: @mailsig, &mailnotify
 
[PREV] [TOP] [NEXT]

@MAILNOTIFY

  Attribute: &MAILNOTIFY
  
  This attribute, when set on a player, will send a message to the person
  mailing them depending on the evaluated text in the attribute.
  
  If the message evaluates to an empty string, no message is sent.
  
  The following arguments are passed for evaluation:
              %0  - the dbref# of the player (or #-1 if anonymous)
              %1  - the subject of the message
              %2  - the body of the message
              %3  - the date/time of the message
  
  Examples:
    > &mailnotify me=Hi, [name(%0)]!  You sent me mail!
    Set.
    > think [name(me)]
    Bob
    > mail me=Test!
    Hi, Bob!  You sent me mail!
    Mail: You have new mail from -> Bob
    Mail: Message sent to -> Bob
    Mail: Done
    > think [name(me)]
    Betty
    > mail bob=Test!
    Hi, Betty! You sent me mail!
    Mail: Message sent to -> Bob
    Mail: Done
  
  See Also: @mailsig, &mailfilter

[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[/<switch>] <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.
  
  The following switches exist for name:
    /ansi - combine @name and @extansi to both (re)name the item and
            set the specified ansiname for it at the same time.
            It does this by stripping all special characters for the real
            name then applying the accented/ansified name entered for the
            extansified name.  This follows permissions for @extansi.
    
  Examples:
    > @name me=Bob
      Name set.
    > @name/ansi me=[ansi(hr,B,hb,o,hr,b)]
      Ansi string entered for Bob of 'Bob'.  (note: 'Bob' would be colorized)
      Name set.
  
  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
  
  This 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.
     /ansi      - Combine @open and @extansi to colorize with the names.
                  This follows the permissions of @extansi.
  
  You may use the lastcreate() function to see the last thing @open'd
  
  Examples:
    > @open North <N>;north;n=#1234,South <S>;south;s
    Opened.
    Linked.
    Opened.
    Linked.
  
    > @open/ansi [ansi(hb,North <N>)];north;n=#1234,[ansi(hr,South <S>)];south;s
    Ansi string entered for North <N> of 'North <N>'. (this is in blue)
    Opened.
    Linked.
    Ansi string entered for South <S> of 'South <S>'. (this is in red)
    Opened.
    Linked.
  
  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]

@OUTPAGEFORMAT

  Attribute: &outpageformat <object>[=<message>]
             &pageformat <object>[=<message>]
  
  &PAGEFORMAT changes the message seen by <object> when it receives a page.
  &OUTPAGEFORMAT sets the message seen by <object> when it sends a page.
  
  %0 - will be set to the page message (not including :, ; or ").
  %1 - will be set to ':' ';' or '"' for pose, semipose and normal page, 
       reespectively.
  %2 - will be set to the alias of the pager, if any.
  %3 - will be a space-separated list of recipient dbrefs.
  %4 - will be set to the default message (based on pageformat/outpageformat).
  
  { See 'help &pageformat2' for examples. }

[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]

@PAGEFORMAT

  Attribute: &outpageformat <object>[=<message>]
             &pageformat <object>[=<message>]
  
  &PAGEFORMAT changes the message seen by <object> when it receives a page.
  &OUTPAGEFORMAT sets the message seen by <object> when it sends a page.
  
  %0 - will be set to the page message (not including :, ; or ").
  %1 - will be set to ':' ';' or '"' for pose, semipose and normal page, 
       reespectively.
  %2 - will be set to the alias of the pager, if any.
  %3 - will be a space-separated list of recipient dbrefs.
  %4 - will be set to the default message (based on pageformat/outpageformat).
  
  { See 'help &pageformat2' for examples. }

[PREV] [TOP] [NEXT]

@pageformat2

  Attribute: &outpageformat <object>[=<message>]    (CONTINUED)
             &pageformat <object>[=<message>]
  
  Examples:
    > &pageformat me=\[[time()]\] %4
    Set.
    > @outpageformat me=\[[time()]\] %4
    Set.

    (To obtain @toggle vpage behavior:)
    > &pageformat me=[setq(0,%n[if(%2,%b(%2))],1,switch(%3,%!,,elist(iter(%3,
                     name(##),%b,|),,|)))][switch(%1,",%q0 pages[if(%q1,%b%q1)]:
                     %0,:,From afar[if(%q1,%b(to %q1))]\, %q0 %0,
                     From afar[if(%q1, %b(to %q1))]\, %q0%0)]
    Set.

    (To obtain no @toggle vpage behavior:)
    > &pageformat me=[setq(1,switch(%3,%!,,elist(iter(%3,name(##),%b,|),,|)))]
                     [switch(%1,",%n pages[if(%q1,%b%q1)]: %0,:,From 
                     afar[if(%q1,%b(to %q1))]\, %n %0,From 
                     afar[if(%q1,%b(to %q1))]\, %n%0)]
    Set.
  
    Both examples above will return how 'page' would normally show.
  
  See Also: page, lpage, rpage, mrpage

[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.
  
  If the system uses the old DES style of passwords, you are limited
  to 8 character passwords.
  
  If the system uses the newer SHA512 style of passwords, you may have
  a password up to 160 characters in length.
  
  No white space characters (spaces, tabs, carrage returns, etc) are 
  allowed in the password.
  
  If secured passwords are enabled, it will enforce a minimum length
  of 5 characters for passwords and require at least one lowercase 
  and uppercase letter, and require a special character which is
  non-alphanumeric or ', or -.
  
  Please see @list options system to see what method of password
  algo is currently in place.
   
  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.
  
  Note: See @list options system to see what is enabled.
  
  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 unless protect_addenh is enabled.
    /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.
    /ansi    - Combines @register with @extansi to colorize the player
               name.  This follows @extansi permissions.
  
  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/ansi [ansi(hb,Player)]=my@email
    Ansi string entered for Player of 'Player' (this would be in blue)
    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]

@retry

  Command: @rollback <count>[/<repeats>] [=<arg0, ..., argN>]
           @rollback/wait <count>[/<repeats>/<waittime>] [=<arg0, ..., argN>]
           @rollback/retry <boolean> [=<arg0, ..., argN>]
           @rollback/label[/<switch>] <label>|<args...>
  
  You may specify the /label switch with any other syntax with @rollback.  To
  utilize a label, you would prepend the argument with <label>|.  So for
  example, instead of @rollback <count> you would do 
  @rollback/label <label>|<count>.  And instead of @rollback/retry <boolean>
  you would use @rollback/retry/label <label>|<boolean>.  All other arguments
  will align after the <label>| portion.
  
  The rollback command has multiple facets that allow you flexibility to
  'roll back' the current queue and re-issue the command sequence a number
  of times.  There's three distinct flavors of the @rollback command that can
  be used.  On most RhostMUSH's, the @rollback/retry will be aliased to @retry
  which for the most part mimic's penn's @retry command.  You may optionally
  pass 10 arguments to @rollback.  The arguments as well as the <boolean> wil
  be re-evaluated on every pass.
  
  NOTE:  All %0-%9 arguments are RESET TO THEIR ORIGINAL VALUES after the end
         of the rollback segment.  This is intentional.
  
{ see 'help @rollback2' for the arguments that can be passed}

[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]

@rollback

  Command: @rollback <count>[/<repeats>] [=<arg0, ..., argN>]
           @rollback/wait <count>[/<repeats>/<waittime>] [=<arg0, ..., argN>]
           @rollback/retry <boolean> [=<arg0, ..., argN>]
           @rollback/label[/<switch>] <label>|<args...>
  
  You may specify the /label switch with any other syntax with @rollback.  To
  utilize a label, you would prepend the argument with <label>|.  So for
  example, instead of @rollback <count> you would do 
  @rollback/label <label>|<count>.  And instead of @rollback/retry <boolean>
  you would use @rollback/retry/label <label>|<boolean>.  All other arguments
  will align after the <label>| portion.
  
  The rollback command has multiple facets that allow you flexibility to
  'roll back' the current queue and re-issue the command sequence a number
  of times.  There's three distinct flavors of the @rollback command that can
  be used.  On most RhostMUSH's, the @rollback/retry will be aliased to @retry
  which for the most part mimic's penn's @retry command.  You may optionally
  pass 10 arguments to @rollback.  The arguments as well as the <boolean> wil
  be re-evaluated on every pass.
  
  NOTE:  All %0-%9 arguments are RESET TO THEIR ORIGINAL VALUES after the end
         of the rollback segment.  This is intentional.
  
{ see 'help @rollback2' for the arguments that can be passed}

[PREV] [TOP] [NEXT]

@rollback2

  (CONTINUED)
  Command: @rollback <count>[/<repeats>] [=<arg0, ..., argN>]
           @rollback/wait <count>[/<repeats>/<waittime>] [=<arg0, ..., argN>]
           @rollback/retry <boolean> [=<arg0, ..., argN>]
           @rollback/label[/<switch>] <label>|<args...>
  
  The arguments that are passed are:
    <label>    - The optional label (@goto label) you wish to pass to the
                 @rollback.  The label and other arguments will be separated
                 by the pipe(|) character.
    <count>    - The number of arguments you wish to roll back to.  If you
                 specify the /retry it ignores this option and always rolls
                 back to the start of the command queue.  This is only
                 evaluated once.  Must be greater than zero(0).
    <repeats>  - The number of times you wish to repeat the rolled back
                 segment.  The default maximum is 1000 retries, regardless
                 of the option you specify.  This is only evaluated once.
                 This value defaults to '1'.  Must be greater than zero(0).
    <waittime> - The waittime that you wish to use in the @wait for the
                 rolled back segment.  Defaults to '0'.  This is evaluated
                 for every rollback.  Must be zero(0) or greater.
    <boolean>  - This is evaluated to a 'true(1)' or 'false(0)' value on
                 every rollback pass.  The retry will continue until a
                 false condition is met or until the MAX (1000 default)
                 rollback count threshold is met.
  
  The switches available are:
    /wait      - Slice the rolled back section into its own waited queue.
    /retry     - retry everything from before the @rollback segment.  
    /label     - specify a @goto label that @rollback will apply.
  
{ see 'help @rollback3' for examples on condition 1 }
{ see 'help @rollback4' for examples on condition 2 }
{ see 'help @rollback5' for examples on condition 3 }

[PREV] [TOP] [NEXT]

@rollback3

(CONTINUED)
  Command: @rollback <count>[/<repeats>] [=<arg0, ..., argN>]
           @rollback/wait <count>[/<repeats>/<waittime>] [=<arg0, ..., argN>]
           @rollback/retry <boolean> [=<arg0, ..., argN>]
           @rollback/label[/<switch>] <label>|<args...>
  
  The first condition is the standard default method for @rollback.  With
  this method you specify a <count> of how many arguments you wish to roll
  back to.  If <count> exceeds the total number of commands in the argument
  list, it grabs the all the arguments.  If the value is zero, it ignores
  the @rollback in the entirity and continues on to the next command.
   
  You may specify a <repeats> value if you wish to have more than one repeat
  of the subset of previous commands.  The default value for this is one(1).
  
  You may specify optional arguments to pass to the retried commands.  This
  will override the originally passed arguments and will be evaluated for
  every rollback.  This allows you to specify a new set of arguments for
  every rollback run.  Once the rollback is completed, the arguments are
  reset to their original values.
  
  All passed arguments are re-evaluated on every retry.
   
  Examples: (condition 1)
    > &FOO me=$foo *:think 1-%0;think 2-%0;think 3-%0;
              @rollback 2/2=[add(%0,5)];think end-%0
    Set.
    > foo 5
      1-5
      2-5
      3-5
      2-10
      3-10
      2-15
      3-15
      END-5
  
    > &FOO me=$foo *:think 1-%0;think 2-%0;think 3-%0;
              @rollback 2=[add(%0,5)];think end-%0
    Set.
    > foo 5
      1-5
      2-5
      3-5
      2-10
      3-10
      END-5
  
    > &FOO me=$foo *:think 1-%0;@goto/label foo;think 2-%0;think 3-%0;
              @rollback/label foo|5=[add(%0,5)];think end-%0
    Set.
    > foo 5
      1-5
      2-5
      3-5
      2-10
      3-10
      end-5

  
{ see 'help @rollback3' for examples on condition 1 }
{ see 'help @rollback4' for examples on condition 2 }
{ see 'help @rollback5' for examples on condition 3 }

[PREV] [TOP] [NEXT]

@rollback4

(CONTINUED)
  Command: @rollback <count>[/<repeats>] [=<arg0, ..., argN>]
           @rollback/wait <count>[/<repeats>/<waittime>] [=<arg0, ..., argN>]
           @rollback/retry <boolean> [=<arg0, ..., argN>]
           @rollback/label[/<switch>] <label>|<args...>
  
  The second condition allows you to toss the rolled back segment of code into
  its own separate wait queue.  The <count> and <repeats> are set initially on
  the first pass and will not be re-evaluated.  The actual waittime is 
  re-evaluated for every rollback segment, meaning for every rollback you can 
  give it a unique wait time.  Be aware that once the <waittime> is a negative 
  number, the @rollback will abort itself.
  
  All passed arguments are re-evaluated on every retry.
  
  Examples: (condition 2)
    > &FOO me=$foo *:think 1-%0;think 2-%0;think 3-%0;
              @rollback/wait 2/2/100=[add(%0,5)];think end-%0
    Set.
    > foo 5
    1-5
    2-5
    3-5
    end-5

    (then 100 seconds later -- specified by the wait value)
    2-10
    3-10
    2-15
    3-15

    > &FOO me=$foo *:think 1-%0;think 2-%0;@goto/label foo;think 3-%0;
              @rollback/wait/label foo|2/2/100=[add(%0,5)];think end-%0
    Set.
    > foo 5
    1-5
    2-5
    3-5
    end-5
 
    (then 100 seconds later)
    3-10
    3-15

  
{ see 'help @rollback3' for examples on condition 1 }
{ see 'help @rollback4' for examples on condition 2 }
{ see 'help @rollback5' for examples on condition 3 }

[PREV] [TOP] [NEXT]

@rollback5

(CONTINUED)
  Command: @rollback <count>[/<repeats>] [=<arg0, ..., argN>]
           @rollback/wait <count>[/<repeats>/<waittime>] [=<arg0, ..., argN>]
           @rollback/retry <boolean> [=<arg0, ..., argN>]
           @rollback/label[/<switch>] <label>|<args...>
  
  The third condition is commonly referred to as the @retry option.  This will
  effectively retry the entire code segment prior to the @rollback in the
  entirity until <boolean> is false(0) or until the maximum rollback threshold
  is met, which by default is 1000 retries.  The <boolean> value is evaluated
  for every rollback pass to see if the new condition will be true or false.
  
  All passed arguments are re-evaluated on every retry.
  
  Examples: (condition 3)  
    > &FOO me=$foo *:think 1-%0;think 2-%0;think 3-%0;
              @rollback/retry [gt(%0,1)]=[sub(%0,1)];think end-%0
    Set.
    > foo 3
    1-3
    2-3
    3-3
    1-2
    2-2
    3-2
    1-1
    2-1
    3-1
    end-3
  
    > &FOO me=$foo *:think 1-%0;@goto/label foo;think 2-%0;think 3-%0;
              @rollback/retry/label foo|[gt(%0,1)]=[sub(%0,1)];think end-%0
    Set.
    > foo 3
    1-3
    2-3
    3-3
    2-2
    3-2
    2-1
    3-1
    end-3
  
  See Also: @jump, @skip, @include, @break, @assert, @sudo, @switch @goto
  
[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.
        /STRICT - bypasses special meaning of '_' on attribute setting.
   
  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>.
  
  Note: the third form will be ignored if using /strict.
   
  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,
            @jump, @rollback, @goto


[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.
  
  Be aware that @startup could potentially have a race condition on some
  functions and commands.  This is because at the time of the @startup
  the game is still in a 'starting state' which limits some features,
  such as new sockets.  To get around this limitation, please put a small
  wait before the @startup.
   
  Examples: 
    > @startup me = @vz me=MUSH was last restarted at [time()].
    > @startup me = home
    > @startup me = @wait 1=think [execscript(runme.sh)]
        
  
[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, @jump, @rollback, @goto
  
[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(), @skip, @break, @assert, @jump,
            @rollback, @goto
  
[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.
  
  You may use two special attributes for pre and post processing of any
  emits you receive.  These attributes will have substitutions evaluated
  but will not evaluate functions.  If these attributes are set NO_COMMAND
  then they will not be processed.
    SPEECH_PREFIX  -- Contents will be evaluated before the @emit.
    SPEECH_SUFFIX  -- Contents will be evaluated after the @emit.
  
  Both of these attributes handle three arguments.  These are:
    %0 - The original @emit that triggered the attribute.
    %1 - The date in the form MM/DD/YYYY
    %2 - The time in the form HH:MM:SS
    %3 - The dbref# of the player issuing the say/pose/emit (#-1 if spoofed)
  
  Example: 
    > \\A chill falls over the room.
    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 may use ansi with ansi() or %c (or if configured %x/%m substitutions).
  See '@list options system' to see what options are configured for ANSI.
  
  You need both the ANSI and ANSICOLOR flags to see ansi color.
  
  For 256 color you need the XTERMCOLOR flag in addition to ANSI and 
  ANSICOLOR.
  
{ 'help ansi usage' on how to use ansi}
  
  See Also: ANSICOLOR, XTERMCOLOR, SUBSTITUTIONS, ANSI(), NOFLASH, COLORS()
  
[PREV] [TOP] [NEXT]

ansi functions

  Function Lists: Ansi Functions
      
  ansi()        - ANSI formats a string.
  ansipos()     - ANSI substitutions based on the position of the ansi 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)
  
{ 'help ansi usage' on how to use ansi}
    
  See Also: ansi(), stripansi(), ANSI, ANSICOLOR, XTERMCOLOR, NO_FLASH, 
            SUBSTITUTIONS, XTERMCOLOR LIST, COLORS()

[PREV] [TOP] [NEXT]

ANSI USAGE

  Topic: ANSI USAGE
  
  Note: Make sure to @list options to see what percent subs handle ANSI!
  
  To use ANSI, you may use the ansi() function or ANSI substitutions.  You
  may reference 'help ansi()' to see what syntaxes are allowed for ANSI.
  
  To enable ansi, you would set up the flags to see ansi.
  The following flags are required:
    ANSI       - This is the central ansi handler.  This handles base ANSI 
                 codes like hilight, flash, and underscore but not color.
    ANSICOLOR  - This, in addition to ANSI, will enable you the base set 
                 of ansicodes.  This is the base 16 color set.
    XTERMCOLOR - This, with the addition of ANSI and ANSICOLOR, allows
                 the extended 256 color set.
  
  To use the ANSI function you would use:
    16 color mode:
    > think ansi(hr,this is highlight red)
    > think %ch%crthis is highlight red%cn
  
  Do note that as far as the parser is concerned, ansi() and the %c subs
  are exactly the same.  Also be aware that if ANSI subs are %x only, 
  use %x instead of %c.
  
    256 color mode: 
    > think ansi(+pink,this is pink)
    > think ansi(0xda,this is also pink)
    
[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}
{ 'help ansi usage' on how to use ansi}

[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}
{ 'help ansi usage' on how to use ansi}
  
[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}
{ 'help ansi usage' on how to use ansi}

[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}
{ 'help ansi usage' on how to use ansi}
  
[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]

ANSIPOS()

  Function: ansipos(<string>, <position>)
  
  This function returns the markup of the ansified string based on the
  position specified.  This will return the foreground, background, 
  accents and UTF8 encoding for that position.
  
  Examples:
    > think [ansipos([ansi(+orange,orange)],5)]This string is orange%cn
  
  See Also: editansi(), pos(), ansi(), stripansi()
  
[PREV] [TOP] [NEXT]

API

  Topic: API

  RhostMUSH has a process where it allows API connections to happen on another
  port.  It requires to have the api_port specified to a unique port for the
  API handler, then various optional config parameters to optimize how the
  API works.  The API, unlike normal connections, allows any valid dbref# to
  talk to the mush from the API engine.  It does this through multi-factor
  authentication including host match and password authentication.
  
  Keep in mind, the API port is NOT the mush port.  It is a different port.
  There is also quite a lot of protection on the API port which will
  automatically disable the object or the IP from connecting if abused.
  
  It uses Basic Authorization and encapsulates.  Example of using curl for
  login authentication to the API's object would be:
             curl --user "#123:foobar"

  The dbref# would be #123, and the password you want to authenticate would
  be 'foobar'.

  Example curl commands that are used for the API handler are:
  GET Examples (this is from a command line using the 'curl' application)
> curl -X GET --user "#12:ya" -H "Exec: [lnum(10)]" --head http://localhost:2222
  
  POST Example: (this is from a command line using the 'curl' application)
> curl -X POST --user "#12:ya" -H "Exec: @emit hi!" --head http://localhost:2222
  
  To have a target dbref# enabled for API processing, please alert a staff
  on your game as it requires staff approval and authentication to enable
  the dbref# to be useable for the API sub engine.
  
{ see 'help api return' for expected return codes }

[PREV] [TOP] [NEXT]

API RETURN

  Topic: API RETURN

  When the mush responds to your API requests, it will do so with headers
  only.  There is no data submitted.  If there is header data it does not
  recognize or is malformed, it will return an appropiate error message.

  The following return encoding can be expected
  POST:
      HTTP/1.1 <CODE> OK
      Content-type: text/plain
      Date: Thu Jul  6 14:37:52 2017
      Exec: <STRING>

  GET:
      HTTP/1.1 <CODE> OK
      Content-type: text/plain
      Date: Thu Jul  6 14:51:16 2017
      Exec: <STRING>
      Return: <VALUE>


      -- <CODE> may be any of the following with matching <STRING>
         200 - OK            <STRING>: Ok - Executed
         400 - Bad Request   <STRING>: Error - Invalid Headers Supplied
         400 - Bad Request   <STRING>: Error - Empty String
         404 - Not Found     <STRING>: Error - Invalid target
         403 - Forbidden     <STRING>: Error - Permission Denied
         403 - Forbidden     <STRING>: Error - IP not allowed
         403 - Forbidden     <STRING>: Error - Malformed User or Password

      -- <VALUE> is the actual return value for a GET fetch.  This is what
         the evaluated string will have been.
  
  For help on setting up, authentication, or administration of the API 
  engine, please refer to the wizhelp topics for the API.

[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.
  mask()      - Applies a specified mask to a value.
  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.
  
  You may specify %0 to %9 as the arguments passed in the ^listen or
  $command for to this lock.
  
  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]

BAND()

  Function: mask(<value>,<value>[,<masktype>])
            mask(<value>,<value>,...,<value>,<masktype>)
  
  This function will apply a specified mask to a value.  This can be
  useful for bitwise anding/oring values together. (for those mathheads)
  The values available for masktype are:
     & -- Bitwise AND 
     | -- Bitwise OR
     ^ -- Bitwise XOR
     ~ -- Bitwise NAND (AND 1's compliment)
     1 -- Bitwise BNOT (1's Compliment)
     2 --              (2's Compliment)
  
  The default masktype is the bitwise AND (&) (but only with 2 arguments).
  
  Please note, if you use more than 2 values, you must specify the masktype,
  otherwise it'll assume the last argument is always the masktype.
  
  Examples:
    > say mask(3,4)
    You say "0"
    > say mask(3,4,|)
    You say "7"
    > say mask(3,4,^)
    You say "7"
  
  See Also: edit(), regedit(), pack(), unpack(), packmath(), shl(), shr(),
            crc32()
  
[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'.  A value of '1' means the condition was matched, '0' not.
  The following formats are available with BANG support ([] is return value):
    !   - 'not' BOOLEAN/MATH value.         Example:   !match(me,you)   [1]
    !!  - 'not not' BOOLEAN/MATH value.     Example:  !!match(me,you)   [0]
    !$  - 'not' STRING value.               Example:  !$grep(me,you)    [1]
    !!$ - 'not not' STRING value.           Example: !!$grep(me,you)    [0]
    !^  - 'not' TRUE BOOLEAN (like t())     Example:  !^grep(me,you)    [1]
    !!^ - 'not not' TRUE BOOLEAN (like t()) Example: !!^grep(me,you)    [0]
  
  You may also use these in %q<> substitutions,  %-<num> arguments, %i
  substitutions and %d substitutions.
  
  See 'help t()' for how TRUE BOOLEAN works.
    
  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" 
    > say [setq(0,space(1000))]%q<!!$0> // %q<!!^0>     (process register 0)
    YOu say "1 // 0"     (spaces are not null // spaces are non-boolean)
    > say u(#lambda/[lit(%-!!$0 // %-!!^0)],space(10))  (process argument 0)
    YOu say "1 // 0"     (spaces are not null // spaces are non-boolean)
  
  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.
  
  See Also: %-, %q, %i, %d, t()
  
[PREV] [TOP] [NEXT]

BANGS 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'.  A value of '1' means the condition was matched, '0' not.
  The following formats are available with BANG support ([] is return value):
    !   - 'not' BOOLEAN/MATH value.         Example:   !match(me,you)   [1]
    !!  - 'not not' BOOLEAN/MATH value.     Example:  !!match(me,you)   [0]
    !$  - 'not' STRING value.               Example:  !$grep(me,you)    [1]
    !!$ - 'not not' STRING value.           Example: !!$grep(me,you)    [0]
    !^  - 'not' TRUE BOOLEAN (like t())     Example:  !^grep(me,you)    [1]
    !!^ - 'not not' TRUE BOOLEAN (like t()) Example: !!^grep(me,you)    [0]
  
  You may also use these in %q<> substitutions,  %-<num> arguments, %i
  substitutions and %d substitutions.
  
  See 'help t()' for how TRUE BOOLEAN works.
    
  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" 
    > say [setq(0,space(1000))]%q<!!$0> // %q<!!^0>     (process register 0)
    YOu say "1 // 0"     (spaces are not null // spaces are non-boolean)
    > say u(#lambda/[lit(%-!!$0 // %-!!^0)],space(10))  (process argument 0)
    YOu say "1 // 0"     (spaces are not null // spaces are non-boolean)
  
  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.
  
  See Also: %-, %q, %i, %d, t()
  
[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]

BNAND()

  Function: mask(<value>,<value>[,<masktype>])
            mask(<value>,<value>,...,<value>,<masktype>)
  
  This function will apply a specified mask to a value.  This can be
  useful for bitwise anding/oring values together. (for those mathheads)
  The values available for masktype are:
     & -- Bitwise AND 
     | -- Bitwise OR
     ^ -- Bitwise XOR
     ~ -- Bitwise NAND (AND 1's compliment)
     1 -- Bitwise BNOT (1's Compliment)
     2 --              (2's Compliment)
  
  The default masktype is the bitwise AND (&) (but only with 2 arguments).
  
  Please note, if you use more than 2 values, you must specify the masktype,
  otherwise it'll assume the last argument is always the masktype.
  
  Examples:
    > say mask(3,4)
    You say "0"
    > say mask(3,4,|)
    You say "7"
    > say mask(3,4,^)
    You say "7"
  
  See Also: edit(), regedit(), pack(), unpack(), packmath(), shl(), shr(),
            crc32()
  
[PREV] [TOP] [NEXT]

BNOT()

  Function: mask(<value>,<value>[,<masktype>])
            mask(<value>,<value>,...,<value>,<masktype>)
  
  This function will apply a specified mask to a value.  This can be
  useful for bitwise anding/oring values together. (for those mathheads)
  The values available for masktype are:
     & -- Bitwise AND 
     | -- Bitwise OR
     ^ -- Bitwise XOR
     ~ -- Bitwise NAND (AND 1's compliment)
     1 -- Bitwise BNOT (1's Compliment)
     2 --              (2's Compliment)
  
  The default masktype is the bitwise AND (&) (but only with 2 arguments).
  
  Please note, if you use more than 2 values, you must specify the masktype,
  otherwise it'll assume the last argument is always the masktype.
  
  Examples:
    > say mask(3,4)
    You say "0"
    > say mask(3,4,|)
    You say "7"
    > say mask(3,4,^)
    You say "7"
  
  See Also: edit(), regedit(), pack(), unpack(), packmath(), shl(), shr(),
            crc32()
  
[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]

BOR()

  Function: mask(<value>,<value>[,<masktype>])
            mask(<value>,<value>,...,<value>,<masktype>)
  
  This function will apply a specified mask to a value.  This can be
  useful for bitwise anding/oring values together. (for those mathheads)
  The values available for masktype are:
     & -- Bitwise AND 
     | -- Bitwise OR
     ^ -- Bitwise XOR
     ~ -- Bitwise NAND (AND 1's compliment)
     1 -- Bitwise BNOT (1's Compliment)
     2 --              (2's Compliment)
  
  The default masktype is the bitwise AND (&) (but only with 2 arguments).
  
  Please note, if you use more than 2 values, you must specify the masktype,
  otherwise it'll assume the last argument is always the masktype.
  
  Examples:
    > say mask(3,4)
    You say "0"
    > say mask(3,4,|)
    You say "7"
    > say mask(3,4,^)
    You say "7"
  
  See Also: edit(), regedit(), pack(), unpack(), packmath(), shl(), shr(),
            crc32()
  
[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]

BXOR()

  Function: mask(<value>,<value>[,<masktype>])
            mask(<value>,<value>,...,<value>,<masktype>)
  
  This function will apply a specified mask to a value.  This can be
  useful for bitwise anding/oring values together. (for those mathheads)
  The values available for masktype are:
     & -- Bitwise AND 
     | -- Bitwise OR
     ^ -- Bitwise XOR
     ~ -- Bitwise NAND (AND 1's compliment)
     1 -- Bitwise BNOT (1's Compliment)
     2 --              (2's Compliment)
  
  The default masktype is the bitwise AND (&) (but only with 2 arguments).
  
  Please note, if you use more than 2 values, you must specify the masktype,
  otherwise it'll assume the last argument is always the masktype.
  
  Examples:
    > say mask(3,4)
    You say "0"
    > say mask(3,4,|)
    You say "7"
    > say mask(3,4,^)
    You say "7"
  
  See Also: edit(), regedit(), pack(), unpack(), packmath(), shl(), shr(),
            crc32()
  
[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(<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]

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]

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(), inf()
  
[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]

CODING

  Topic: CODING
  
  This topic discusses the ins and outs of mush programming.  While not a 
  complete document by any regard, it should help you understand the basics
  and get around programming on a mush.
  
  There are sub-topics available with coding that you may reference at
  anytime.  These are:
  
    CODING QUEUE   -- A quick overview of how the queue works in the mush
    CODING COMMAND -- A quick overview of what defines a command
    CODING FUNCT   -- A quick overview of what defines a function
    CODING NEST    -- A quick overview of operators to nest commands
    CODING ATTRIB  -- A quick overview of setting attributes
    CODING REGS    -- A quick overview of temporary registers/arguments
    CODING SUBS    -- A quick overview of substitutions
  
    WILDCARDS      -- Help on how wildcards work
    REGEXP         -- If you feel adventurous for regular expressions
  
  To continue with the overview and explain how a general layout works,
  please see 'CODING2'.
  
[PREV] [TOP] [NEXT]

CODING ATTRIB

  Topic: CODING ATTRIB
  
  Attributes are a 'permanent' storage of values.  The content that can be
  stored on attributes are limited by the buffer limit for the mush in
  question.  The buffer limit can be 4K, 8K, 16K, 32K, or 64K.  You may
  find out the size of the buffer with the command:
  
  > say config(lbuf_size)
  You say "32768"   (note, this would be 32K) 
  > say config(sbuf_size)
  You say "64"
  
  When setting attributes, you give it three arguments.  The name of
  the attribute (which we will be calling ATTRIBUTE), the target that
  you will set the attribute on (which we will be calling TARGET), and
  the contents you wish to set to this (which we will be calling CONTENT).
  The attribute can be most characters (primarilly alpha-numeric) that is
  under an SBUF in size.  This is by default 32 bytes, but can be extended 
  to 64 bytes.  
  
  When setting attributes there are multiple methods to do so.  First,
  we will cover commands that allow you to do so.
  Setting attributes:
    > &ATTRIBUTE TARGET=CONTENTS     (& is shorthand for '@set')
    > @set TARGET=ATTRIBUTE:CONTENTS (this works like the & command above)
  
  Fetching attributes: (note: examine and @decompile allow wildcards)
    > examine TARGET
    > examine TARGET/ATTRIBUTE
    > @decompile TARGET
    > @decompile TARGET/ATTRIBUTE
  
  Editing attributes: (note: @edit allows wildcards)
    > @edit TARGET/ATTRIBUTE=OLD,NEW
  
  Copying Attributes: (note: @cpattr allows wildcards)
    > @cpattr TARGET/ATTRIBUTE=DESTINATION
    > @cpattr TARGET/ATTRIBUTE=DESTINATION/NEWATTRIBUTE
  
  Moving Attributes:
    > @cpattr/clear TARGET/ATTRIBUTE=DESTINATION
    > @cpattr/clear TARGET/ATTRIBUTE=DESTINATION/NEWATTRIBUTE
    > @mvattr TARGET=ATTRIBUTE,NEWATTRIBUTE
  
  Clearing Attributes: (note: @wipe allows wildcards)
    > @wipe TARGET/ATTRIBUTE 
    > &ATTRIBUTE TARGET
    > @set TARGET=ATTRIBUTE:
  
{ See 'help coding attrib2' for functions used to manipulate attributes }

[PREV] [TOP] [NEXT]

CODING ATTRIB2

  Topic: CODING ATTRIB2
  
  Just like commands, you may use functions to set and clear attributes.
  Since these affect objects and 'events' as a side-effect, these are 
  considered 'side effect functions' and will require the SIDEFX flag to
  be set on anything DIRECTLY using these functions.  
  
  The following functions are used to manipulate attribute data.
  Setting attributes:
    > @eval set(TARGET, ATTRIBUTE:CONTENTS)
  
  Fetching attributes: (note: lattr takes wildcards)
    > @eval lattr(TARGET/ATTRIBUTE)
    > @eval get(TARGET/ATTRIBUTE)
    > @eval xget(TARGET,ATTRIBUTE)
  
  Fetching & Executing attributes: (not a complete list)
    > @eval u(TARGET/ATTRIBUTE)
    > @eval ueval(TARGET/ATTRIBUTE/CITIZEN)
    > @eval ulocal(TARGET/ATTRIBUTE)
    > @eval eval(TARGET,ATTRIBUTE)
    > @eval subeval(TARGET,ATTRIBUTE)
  
  Editing attributes:
    > @eval edit(CONTENTS,OLD,NEW)
 
  Clearing attributes: (note: wipe allows wildcards)
    > @eval wipe(TARGET/ATTRIBUTE)
    > @eval set(TARGET,ATTRIBUTE:)
  
  This list is not complete and there are quite a few functions that allow
  manipulation of attributes and data.  Please review help files for these.
   
[PREV] [TOP] [NEXT]

CODING COMMAND

  Topic: CODING COMMAND
  
  To see commands please type:  @list commands.  'help' available on each.
  
  A 'command' is defined as a call to a process that essentailly forks its
  own sandbox for running its pre-defined execution.  Examples of commands
  are 'think', '@emit', '@pemit', 'page', 'say', 'pose', and so forth.  
  Commands should not be confused with functions, since a segment MUST
  start with a command, and you can't start a segment with a function.
  
  It's easier to consider that each command starts its own sandbox, and
  functions are used to manipulate the environment of that given command.
  
  You may nest commands together and link them one after another, in
  such a situation, the environment 'pokes holes' into each sandboxed
  environment and allows the commands that follow the previous command
  to be able to see and inherit values that may have been manipulated or
  seen by the previous command.
  
  One way that you can preserve values to pass to other commands is with
  arguments.  Most commands accept arguments to them which you can string
  and pass along.
  
  The other way is setting registers, which are essentially pre-allocated
  buffers that you may store values into that can be accessed by any
  command following the previous commands in the sequence.  Once the
  command sequence is finished, the registers are reset and cleared
  automatically.  There is no way to preserve these values and it is
  always considered to be temporary until the process of all the commands
  in the sequence is completed.


[PREV] [TOP] [NEXT]

CODING FUNCT

  Topic: CODING FUNCT
  
  'help function type' is very informative and it's requested you check
  that out for a list of functions for every 'type'.
  
  To see functions please type: @list functions.  'help' available on each.
  
  A 'function' is considered a method to manipulate, display, or set the
  environment that the command has set up.  There are literally hundreds
  of functions that you may use, and with the use of @lfunction 
  (or @function for wizards) you may define any number of additional
  functions with softcode for the game and user-space to use.  The mushing
  language is highly extensible and allows some heavy modifications.
  
  You may nest functions or string them together.
  
  Example of nesting functions:
  > say [add(sub(mul(3,3),2,div(10,5)),20)]
  You say "25"
  The above example is doing:  ((3 * 3) - 2 - (10 / 5)) + 20
  
  Example of stringing functions:
  > say [add(1,1)][sub(4,3)][mul(10,10)]
  You say "21100"
  The above example is displaying '2' '1' and '100' strung together.
  
  All functions allow manipulation of the input and/or output of each given
  command, and some special functions like sideeffects allow you to do 
  things outside of that given command.  Again, help is available on them all.
  
  With the use of functions and commands, you will find MUSH an extensive
  interpreted language and quite powerful in its own right.
   
[PREV] [TOP] [NEXT]

CODING NEST

  Topic: CODING NEST
  
  You may nest commands or functions with the use of {}'s, []'s, or ()'s.  The
  previous is mostly used for command nesting, and the latter used for
  function nesting and declaration.
  
  Command Nesting: An example of command nesting
  $foo*:@wait 10={@emit 1;@swi [trim(%0)]=bob,{@emit bob;@emit was;@emit here}}
  
  In this example, if you specify 'bob' as the argument to foo, it will
  display '1', 'bob', 'was', 'here' on separate lines.  Notice the trim()
  function around the argument (%0).  This is trimming extra spaces around the
  argument so that you don't have ' bob', ' bob ', or 'bob ' as commands which
  based on comparisons may or may not work as expected.  It's essentially one 
  of the ways to control the data that you are being given.
  
  If you pass 'foo' anything but 'bob', all you will get is '1' and nothing
  else.
  
  Function Nesting: An example of function nesting 
  > say [add(sub(1,1),2)]
  You say '2'
  
  You are, in this example, subtracting 1 and 1, passing that nested value to
  the 'add' function and then adding that result to the number '2'.  So
  in this case, 1 - 1 is 0, and 0 + 2 is 2, so you will be returning '2'
  
[PREV] [TOP] [NEXT]

CODING QUEUE

  Topic: CODING QUEUE
  
  The mush queue is a single threaded interpreted parser.  It works by pushing
  and popping entries into and out of the queue based on a timed or event
  driven engine.  Each time something is pushed onto the queue, it is
  evaluated then popped off.  If you have a command that has itself other
  commands, then it queues those results, so please keep that in mind when
  programming.
  
  An example of how you would queue a command is as follows.
  
  > @wait 0={think 1;think 2;@switch 1=1,think 3;think 4}
  1
  2
  4
  3

  WAAIIIIT a minute.  Why was this out of order?  The reason why is because
  of how the queue works.  The command 'think' pushes the contents on the
  queue.  The command '@switch' pushes the contents on the queue.  However,
  the contents of @switch is, itself, a command and the @switch command
  then queues and executes its own arguments.  This requires a SECOND call
  to the queue.  Remember, the queue is processed linearilly and in order.
  
  So to wrap up, the first order of queue would be:
  -> think, think, @switch, think
  
  The second order of queue would be:
  -> think

[PREV] [TOP] [NEXT]

CODING REGS

  Topic: CODING REGS
  
  Registers (and arguments) are special substitutions that hold the values
  that you have either set before time or are passing into a command or
  function.  To store temporary values, you use two functions to do so:
  > say setq(0,bob)
  You say ""
   
  This will store 'bob' to register '0'.  This function as seen returns
  nothing.  You have 36 registers that you can use.  0-9 and a-z.  
  You may label these registers with any name you want that is 32 characters 
  or less in length.  The label may contain spaces.
  
  > say setr(0,bob)
  You say "bob"
  
  This function works just like setq(), but notice it not only stores the 
  value, but it returns the value you have set.  This is intentional and
  used when you plan to store the value but still need to have the results
  returned for evaluation.  Like setq(), you may specify labels where the
  same rules apply.
  
  Arguments are temporary only for the runtime of that given command or
  function.   With commands you can have:
  $foo *=*:@emit Args: %0 and %1.
  
  The command 'foo' has two arguments.  argument 0 (%0) will be before the
  '=' and argument 1 (%1) will be after the '='.  You may pass this multiple
  words.  You can use '*' or '?' for wildcards.  You may also use regular
  expressions if you feel adventerous, but that is for advanced coding.
  
  See 'help wildcard' to see more on normal wildcarding.
  See 'help regexp' to see more on regular expressions.

[PREV] [TOP] [NEXT]

CODING SUBS

  Topic: CODING SUBS
  
  Substitutions are a quick reference to call a value that may dynamically
  change.  For example, '%n' will reference the name of whatever is 
  executing the code, and '%#' is the dbref# that is calling.  For a list
  of all substitutions, please see 'help substitutions'.  It lists all
  the subs as well as a short description of how they work.  Don't hesitate
  to play with the values to see how they work.  You won't hurt anything
  by doing so :)
  
  Examples:
  > say %# %n
  You say "#123 Bob"
  > say [setq(0,foo)]Register is: %q0
  You say "Register is: foo"
  
[PREV] [TOP] [NEXT]

CODING2

  Topic: CODING2
  
  When you start coding on a mush, each sequence usually starts with a
  command, which then uses functions to manipulate the data the command
  is calling.  You may also make soft-coded commands ($-commands in help)
  by starting a command with a '$' and then any wildcards with '*' for
  1 or more characters or '?' meaning one character only.  You may use
  the ^ command for having objects listen for a word sequence.  Please
  refer to 'help monitor' to explain a bit more on how ^ sequences work.
  
  When you establish a softcoded command, the sequence works as follows:
  &ATTRIBUTE TARGET=$command *:COMMAND1;COMMAND2;...;COMMANDx
  
  Example: (assuming you own an object 'Fred' with dbref #123)
  &BOO #123=$boo *:@pemit %#=You have booed '%0'.
  
  Breaking this down.  #123 is the dbref# of 'Fred'.  The dbref# will
  always be unique in a mush database.  BOO is the attribute that you
  set with the '&' command.  'boo' is the command it will be looking
  for, identified with the '$' starter character.  You have one argument
  being passed signified with the '*' character.  The command it is
  executing is '@pemit', and it's using the percent substitutions '%#'
  which is specifying the dbref# of whatever is enacting the command,
  which in this case would be you.  The '%0' at the end is the argument
  that aligns with the wildcard.  All arguments start at '0' and go
  from 0-9.  You can have more than 9 arguments but that becomes more
  complex code.  So if you had two *'s and one ?, the first two *'s 
  would be %0 and %1 respectively, and the ? would be %2.
  
  So, we have set our BOO attribute to the 'boo' command.  Let's now
  execute the command:
  > boo
  Huh? (Type 'help' for help)
  
  Ok, wait a second.  Why didn't it see the command?  The answer if
  you look at the command makes sense.  It's expecting an argument
  AFTER a space.  If you wanted the argument to be optional you would
  instead set it like:
  &BOO #123=$boo*:@pemit %#=You have booed '%0'.
  
  Notice no space between 'boo' and '*'.  So let's try it again:
  > boo
  You have booed ''
  > boo abc123
  You have booed 'abc123'
  
{ help coding3 to learn how to nest commands }

[PREV] [TOP] [NEXT]

CODING3

  Topic: CODING3
  
  You may nest commands together with the ';' identifier.  This will
  link commands together.  If you with to 'cluster' commands together,
  you may use the {}'s characters to surround a list of commands you
  wish to link together.
  
  For example:
  $foo *:@switch %0=yes,{@emit 1;@emit 2;@emit 3},no,{@emit A;@emit B;@emit C}
  
  In this example, if you typed 'foo yes' it would display 1, 2, and 3.
  If you typed 'foo no' it would instead display A, B, and C.
  
  The @switch command (which you may shorten to @swi), executes a 'switch'
  or evaluation based on what you specified.  In this case you are comparing
  '%0' (or what is typed after foo), to two expected arguments.  'yes' or
  'no'.  @switch allows multiple arguments, as well as a default value.
  Note with how it's set up above, if foo does not have a 'yes' or 'no' value
  you will get no output since @switch is expecting 'yes' or 'no' only and
  has no default case to fall back on.
  
  You may notice that you use {}'s to cluster the commands for each separate
  conditional.  You may nest {}'s inside each other for nested @switches or
  other commands that allow arguments passed to them of commands.  Such
  example commands are @switch, @ifelse, @skip, @sudo, @force, @wait, and
  so forth.

[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.
              You may use the literal string or +string (like pink or +pink)
    *wild*  - the list of colors that match the wildcard (* and ? accepted)
   any ansi - With the '(n)ame' option you may specify anything you'd pass
              ansi() and have it return the names matching the encoding.
  
  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.
    n       - show the name of the ansi() encoding passed.
  
  Note: you can not use wildcards with a key.
  
  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     @goto     @halt         @hide
  @include     @jump           @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> [,<type>])
   
  Comp compares two values.  It returns 0 if they are the same, 1 if
  string2 is less than/precedes alphabetically string1, and -1 
  otherwise.
  
  The following <type> types are available:
    A - Always case-sensitive (default)
    I - Always case-insensitive 
    D - Dbrefs of valid objects (warns if invalid dbref#'s)
    N - Integers
    F - Floating point numbers
  
  Example:
    > say comp(is,is)
    You say "0"
    > say comp(is,is,a)
    You say "0"
    > say comp(is,IS)
    You say "1"
    > say comp(is,IS,i)
    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(), packmath()
  
[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

  Topic: DIFFERENCES
  
  If you are coming from a MUD/LP, type 'help muddiff' for those.
  
  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

  Topic: DIFFERENCES
  
  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.
  
  The following ansi special matches are allowed for search.
    d - any foreground color.
    D - any background color.
  
  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: ansipos(), 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().
  
  If you specify <list of numbers> as negative, it takes from the end starting
  at -1.
   
  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.
  
  If you specify <list of numbers> as negative, it takes from the end starting
  at -1.
   
  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(), inf()
  
[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(), testlock()
  
[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> [,<integer3>,...])
 
  Takes two (or more) integers, and returns 1 if all the values
  are equal, otherwise it returns a 0.  This function handles floating 
  point numbers as well.
  
  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"
    > say eq(5,5,5,5,5,5)
    You say "1"
    > say eq(5,5,5,3,5,5)
    You say "0"
  
  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(), subeval(), sandbox()
  
[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>, <len>[, <delim>], <sep>] ,<del>]])
  
  Extractword returns a string of <len> 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 only <string> and no other arguments, it returns the first
  word of the string as if the first() function.
  
  If you specify a negative number to <first>, it counts backwards from the end
  of the string.  So -1 is the last argument, -2 is previous to last, and so
  forth.
  
  If you specify a negative number to <len>, it will return up to the total
  words minus the length.  So -1 will return all words from start to the
  last element, -2 to the previous to last element, and so forth.
  
  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"
    > say extractword(Skip the first and last elements, 2, -2)
    You say "the first and last"
    > say extractword((Get just the last three elements,-3, 3)
    You say "last three elements"
  
  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(), inf()
  
[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(), inf()
  
[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]

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/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(), inf()
  
[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()
 LMATH()   -> strfunc()  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()
    
  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() ANSIPOS() EDITANSI() STRIPANSI() COLORS() 
              See Also: help ansi functions
  
  Arithmetic:           ABS() ADD() AVG() BETWEEN() BOUND() DEC() DICE()
                        DIV() EE() FBETWEEN() FBOUND() FDIV() FLOORDIV() INC()
                        MASK() 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() MASK() PACK() 
                        PACKMATH() 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() ARRAY() CITER() 
                      DELEXTRACT() ELEMENTS() ELEMENTSMUX() ELIST() EXTRACT()
                      EXTRACTWORD() FILTER() FIRST() FLAGS() FOLD() FOREACH()
                      IBREAK() IINDEX() ILEV() INDEX() INF() 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()
                      TRREVERSE() 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() 
                      SANDBOX() 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() SUBEVAL() SUBNETMATCH() SWITCH() 
                       SWITCHALL() T() TOTPOS() TR() TRANSLATE() TRIM() UCSTR()
                       UNESCLIST() WORDPOS() WORDS() WRAP() WRAPCOLUMNS() 
                       XORCHR()
             See Also: help string functions
  
  Time:                CONVSECS() CONVTIME() MSECS() 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()              ANSIPOS()
 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()     
  INF()           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()        MSECS()        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()        PACKMATH()     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()      SANDBOX()       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()           SUBEVAL()       SUBJ()         SUBNETMATCH()  SWITCH()     
  SWITCHALL()     T()             TAN()          TEL()          TIME()       
  TIMEFMT()       TOBIN()         TODEC()        TOGGLE()       TOHEX()      
  TOOCT()         TOTCMDS()       TOTMATCH()     TOTMEMBER()    TOTPOS()     
  TOTWILDMATCH()  TR()            TRACE()        TRANSLATE()    TRIM()

{ 'help function list5' for more }

[PREV] [TOP] [NEXT]

FUNCTION LIST5

  
  TRREVERSE()    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(), 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(), inf()

  
[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(), inf()
  
[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]

INF()

  Function: iter(<list>, <eval>[, <delim> [, <output separator>]])
             inf(<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())
  
  The inf() function is special in that it allows <list> to be passed a 
  special handler of :<value>:<key>: where <value> is a positive or negative 
  number, and <key> is > or <.  Such as ':50:>:'   
  
  You may not mix the special handler and other values.
  
  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"
    > say iter(:1000:>:,%i0)
    You say ":1000:>:"         (iter does not allow the special <list>)
    > say inf(:1000:>:,%i0)
    You say "1000 1001 ..."    (it'll print values from 1000 to the LBUF size)
  
  See Also: nsiter(), citer(), @dolist, parse(), list(), list(), itext(), 
            inum(), ilev(), ibreak()
 
[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> [..<posN>], <word>[[,<sep>] [,<osep>]], <key>)
   
  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.
  
  You may specify a separate <sep> seperator or it assumes space if not
  provided.  
  
  The <osep> output delimiter may be more than one character, and if 
  enabled, '@@' can be used as another method for a null.  You may specify 
  an empty <osep> as well.
  
  The following <key>s exist for insert:
    0 - (default) do normal insert
    1 - Append the text to the position(s)
    2 - Prepe