foundationI_fluffos_v1/
foundationI_fluffos_v1/bin/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/ChangeLog.old/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/Win32/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/compat/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/compat/simuls/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/include/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/testsuite/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/testsuite/clone/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/testsuite/command/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/testsuite/data/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/testsuite/etc/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/testsuite/include/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/testsuite/inherit/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/testsuite/inherit/master/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/testsuite/log/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/testsuite/single/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/testsuite/single/tests/compiler/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/testsuite/single/tests/efuns/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/testsuite/single/tests/operators/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/testsuite/u/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/tmp/
foundationI_fluffos_v1/fluffos-2.9-ds2.12/windows/
foundationI_fluffos_v1/lib/
foundationI_fluffos_v1/lib/cmds/ambassador/
foundationI_fluffos_v1/lib/cmds/database/
foundationI_fluffos_v1/lib/cmds/soul/
foundationI_fluffos_v1/lib/daemon/include/
foundationI_fluffos_v1/lib/daemon/save/
foundationI_fluffos_v1/lib/daemon/services/
foundationI_fluffos_v1/lib/daemon/soul/
foundationI_fluffos_v1/lib/doc/build/
foundationI_fluffos_v1/lib/doc/build/room/
foundationI_fluffos_v1/lib/doc/build/virtual/
foundationI_fluffos_v1/lib/doc/driver/
foundationI_fluffos_v1/lib/doc/efun/
foundationI_fluffos_v1/lib/doc/etc/
foundationI_fluffos_v1/lib/doc/help/creator/
foundationI_fluffos_v1/lib/doc/help/hm/
foundationI_fluffos_v1/lib/doc/help/user/
foundationI_fluffos_v1/lib/doc/lpc/basic/
foundationI_fluffos_v1/lib/doc/lpc/data_types/
foundationI_fluffos_v1/lib/doc/lpc/etc/
foundationI_fluffos_v1/lib/doc/lpc/intermediate/
foundationI_fluffos_v1/lib/doc/lpc/types/
foundationI_fluffos_v1/lib/doc/mudlib/
foundationI_fluffos_v1/lib/doc/mudlib/features/
foundationI_fluffos_v1/lib/domains/Examples/etc/
foundationI_fluffos_v1/lib/domains/Examples/room/
foundationI_fluffos_v1/lib/domains/Examples/virtual/
foundationI_fluffos_v1/lib/domains/Examples/virtual/exaA/
foundationI_fluffos_v1/lib/domains/Examples/virtual/exaB/
foundationI_fluffos_v1/lib/domains/Examples/weapon/
foundationI_fluffos_v1/lib/domains/Standard/
foundationI_fluffos_v1/lib/domains/Standard/pools/
foundationI_fluffos_v1/lib/domains/Standard/std/
foundationI_fluffos_v1/lib/domains/Standard/xtra/
foundationI_fluffos_v1/lib/include/
foundationI_fluffos_v1/lib/news/
foundationI_fluffos_v1/lib/secure/cfg/
foundationI_fluffos_v1/lib/secure/cmds/adm/
foundationI_fluffos_v1/lib/secure/cmds/ambassador/
foundationI_fluffos_v1/lib/secure/cmds/mortal/
foundationI_fluffos_v1/lib/secure/etc/
foundationI_fluffos_v1/lib/secure/etc/approval/
foundationI_fluffos_v1/lib/secure/etc/elections/
foundationI_fluffos_v1/lib/secure/etc/mudlib/
foundationI_fluffos_v1/lib/secure/etc/quests/
foundationI_fluffos_v1/lib/secure/save/daemon/
foundationI_fluffos_v1/lib/secure/save/postal/d/descartes/
foundationI_fluffos_v1/lib/secure/save/users/d/
foundationI_fluffos_v1/lib/secure/std/
foundationI_fluffos_v1/lib/std/obj/
foundationI_fluffos_v1/lib/std/room/
foundationI_fluffos_v1/lib/std/user/
foundationI_fluffos_v1/lib/std/virtual/
foundationI_fluffos_v1/old/
foundationI_fluffos_v1/win32/
// File:        _refs.c
// Mudlib:      Nightmare (but see below)
// Purpose:     Lists refs set.
// Author:      Douglas Reay (Pallando @ TMI, Nightmare, many other muds ...
//                            want me on yours as well?  Mail me at TMI-2  8-)
// ***********  HISTORY OF THE REFS COMMANDS AND RELATED CODE  ***************
// Once upon a time, in a mud far from here (Genesis) Lars wrote a
// general purpose object tracer.  This was an object people cloned
// that added actions to them, including a simple call command.
// Many wizards copied this file, adding their own functions, some
// creating monstrosities many thousands of line long, consuming disc
// and memory resources.  The best of these was the scroll object tracer.
// 92-06-**   Pallando created a wiztool on Ephemeral Dales (a 2.* LPmud)
//            that kept the code for commands in seperate bins.
// 92-10-**   Wrote commands for the wiztool that did the same as the scroll
//            but allowed multiple references (which were kept as a associated
//            arrays in a daemon in the cmds bin).
// 93-01-02   Moved wiztool commands to TMI and converted to real user commands.
//            Users no longer need to clone an object to use call, etc.
//            refs kept in ob_data mapping in user
// 93-03-**   Work done on get_object() by Watcher@TMI (details in that file)
// 93-05-**   code copied to Nightmare.  refs kept in seperate mapping in user.
//            shared ref functions file moved to /adm/daemon/
// Mud where work done: Ephemeral Dales, TMI, Tabor, Nightmare, Actuator
// Simul_efuns:  identify(), resolv_str(), get_object(), get_objects()
// Commands: call cref dref eref move ref refs sc ss tref unref

#include <daemons.h>
#include <std.h>

inherit DAEMON;
inherit REFS_D;

int cmd_refs( string a )
{
  mapping refs;
  string *k;
  int i, s;

  refs = get_refs();
  if( !mapp(refs) || !(k=keys(refs)) || !(s=sizeof(k)) )
  {
    write( "You have no references set.\n" );
    return 1;
  }
  if( -1 != member_array( "default", k ) )
  {
    k -= ({ "default" });
    k = ({ "default" }) + k; // Make sure the default gets displayed first.
  }
  for( i = 0 ; i < s ; i++ )
    write( wrap( sprintf( "%-15s%s", k[i], identify( refs[k[i]] ) ) ) );
  return 1;
}

int help()
{
  write( @EndText
                    Help file on ref commands
                   ===========================

The commands in this directory allow you to do the things the scroll
object tracer does, but without a seperate object.  It also allows
you to set multiple references of any variable type and call functions
with any arguments.

  call <O>;<S>;<V>;<V>     calls function <S> in object <O> with args <V>
  ref [<S>;]<V>            sets reference <S> to variable <V>
  refs                     displays the references you have set
  unref <S>                unsets reference <S>
  eref [<S>;]<O>           sets reference <S> to the environment of <O>
  cref [<O>]               clones object <O>
  tref [<O>;]<S>           tells object <O> message <S>
  ss [<O>]                 scans the inventory of object <O>
  sc [<O>]                 recursively scans the inventory of object <O>
EndText
// Break needed because text too long for one block.
+ @EndText

Any of the arguments, except reference names, can be references.
A reference is specified by a "#" before the reference names.
Arguments given in [] are optional and will default.

NB  If you want to you can do

alias gref    move $* to me
alias summon  move $* to here
alias iref    call $*;query_id
alias all     call users;query;$*
EndText
  );
  return 1;
}