final_realms_fluffos_v1/
final_realms_fluffos_v1/bin/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/ChangeLog.old/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/Win32/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/compat/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/compat/simuls/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/include/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/testsuite/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/testsuite/clone/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/testsuite/command/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/testsuite/data/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/testsuite/etc/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/testsuite/include/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/testsuite/inherit/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/testsuite/inherit/master/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/testsuite/log/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/testsuite/single/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/testsuite/single/tests/compiler/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/testsuite/single/tests/efuns/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/testsuite/single/tests/operators/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/testsuite/u/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/tmp/
final_realms_fluffos_v1/fluffos-2.9-ds2.11/windows/
final_realms_fluffos_v1/lib/baseobs/guilds/
final_realms_fluffos_v1/lib/baseobs/misc/
final_realms_fluffos_v1/lib/baseobs/races/shadows/
final_realms_fluffos_v1/lib/cmds/god/
final_realms_fluffos_v1/lib/cmds/handlers/
final_realms_fluffos_v1/lib/cmds/handlers/cmds/
final_realms_fluffos_v1/lib/d/heaven/
final_realms_fluffos_v1/lib/d/heaven/heaven/ave/
final_realms_fluffos_v1/lib/d/mudlib/
final_realms_fluffos_v1/lib/d/newbie/
final_realms_fluffos_v1/lib/d/newbie/docs/
final_realms_fluffos_v1/lib/d/newbie/drow/armour/
final_realms_fluffos_v1/lib/d/newbie/drow/items/
final_realms_fluffos_v1/lib/d/newbie/drow/mobs/
final_realms_fluffos_v1/lib/d/newbie/drow/oldmobs/
final_realms_fluffos_v1/lib/d/newbie/drow/weapons/
final_realms_fluffos_v1/lib/d/newbie/duergar/weapons/
final_realms_fluffos_v1/lib/d/newbie/dwarf/weapons/
final_realms_fluffos_v1/lib/d/newbie/elf/cafe/
final_realms_fluffos_v1/lib/d/newbie/elf/chars/equip/
final_realms_fluffos_v1/lib/d/newbie/elf/items/armours/
final_realms_fluffos_v1/lib/d/newbie/elf/items/obj/
final_realms_fluffos_v1/lib/d/newbie/elf/items/weapons/
final_realms_fluffos_v1/lib/d/newbie/elf/quick_fix/
final_realms_fluffos_v1/lib/d/newbie/gnome/armour/
final_realms_fluffos_v1/lib/d/newbie/gnome/buildings/
final_realms_fluffos_v1/lib/d/newbie/gnome/items/
final_realms_fluffos_v1/lib/d/newbie/gnome/npcs/clones/
final_realms_fluffos_v1/lib/d/newbie/gnome/rooms/northrooms/
final_realms_fluffos_v1/lib/d/newbie/gnome/weapons/
final_realms_fluffos_v1/lib/d/newbie/goblin/armour/
final_realms_fluffos_v1/lib/d/newbie/goblin/items/
final_realms_fluffos_v1/lib/d/newbie/grads/log/
final_realms_fluffos_v1/lib/d/newbie/grads/npcs/
final_realms_fluffos_v1/lib/d/newbie/grads/rooms/
final_realms_fluffos_v1/lib/d/newbie/grads/rooms/cave1/
final_realms_fluffos_v1/lib/d/newbie/grads/temp/
final_realms_fluffos_v1/lib/d/newbie/guests/weapons/
final_realms_fluffos_v1/lib/d/newbie/half-elf/items/
final_realms_fluffos_v1/lib/d/newbie/half-elf/newroomss/
final_realms_fluffos_v1/lib/d/newbie/half-elf/rooms/
final_realms_fluffos_v1/lib/d/newbie/half-elf/rooms/castle/
final_realms_fluffos_v1/lib/d/newbie/half-elf/rooms/drows/
final_realms_fluffos_v1/lib/d/newbie/half-elf/rooms/savannah/
final_realms_fluffos_v1/lib/d/newbie/half-elf/rooms/secret/
final_realms_fluffos_v1/lib/d/newbie/half-elf/rooms/town/
final_realms_fluffos_v1/lib/d/newbie/halfling/
final_realms_fluffos_v1/lib/d/newbie/halfling/misc/
final_realms_fluffos_v1/lib/d/newbie/halfling/rooms/cave/
final_realms_fluffos_v1/lib/d/newbie/human/
final_realms_fluffos_v1/lib/d/newbie/human/armour/
final_realms_fluffos_v1/lib/d/newbie/human/monsters/
final_realms_fluffos_v1/lib/d/newbie/human/obj/
final_realms_fluffos_v1/lib/d/newbie/human/weapons/
final_realms_fluffos_v1/lib/d/newbie/lizard/armour/
final_realms_fluffos_v1/lib/d/newbie/lizard/items/
final_realms_fluffos_v1/lib/d/newbie/lizard/underwater/
final_realms_fluffos_v1/lib/d/newbie/lizard/weapons/
final_realms_fluffos_v1/lib/d/newbie/logs/
final_realms_fluffos_v1/lib/d/newbie/new_halfelf/
final_realms_fluffos_v1/lib/d/newbie/new_halfelf/npcs/
final_realms_fluffos_v1/lib/d/newbie/newdrow/npcs/
final_realms_fluffos_v1/lib/d/newbie/newdrow/rooms/
final_realms_fluffos_v1/lib/d/newbie/newelf/
final_realms_fluffos_v1/lib/d/newbie/newelf/chars/
final_realms_fluffos_v1/lib/d/newbie/newelf/npcs/
final_realms_fluffos_v1/lib/d/newbie/newelf/npcs/recopied/
final_realms_fluffos_v1/lib/d/newbie/newelf/obj/
final_realms_fluffos_v1/lib/d/newbie/newelf/quest_docs./
final_realms_fluffos_v1/lib/d/newbie/newken/
final_realms_fluffos_v1/lib/d/newbie/newken/chars/
final_realms_fluffos_v1/lib/d/newbie/newken/misc/
final_realms_fluffos_v1/lib/d/newbie/newken/npcs/
final_realms_fluffos_v1/lib/d/newbie/newken/obj/
final_realms_fluffos_v1/lib/d/newbie/newliz/
final_realms_fluffos_v1/lib/d/newbie/newliz/cave/
final_realms_fluffos_v1/lib/d/newbie/newliz/npcs/
final_realms_fluffos_v1/lib/d/newbie/orc/items/misc/
final_realms_fluffos_v1/lib/d/newbie/orc/items/weapons/
final_realms_fluffos_v1/lib/d/newbie/orc/tower/
final_realms_fluffos_v1/lib/d/vehicle/
final_realms_fluffos_v1/lib/doc/
final_realms_fluffos_v1/lib/doc/driver/
final_realms_fluffos_v1/lib/doc/driver/concepts/
final_realms_fluffos_v1/lib/doc/driver/driver/
final_realms_fluffos_v1/lib/doc/driver/efuns/arrays/
final_realms_fluffos_v1/lib/doc/driver/efuns/bitstrings/
final_realms_fluffos_v1/lib/doc/driver/efuns/communication/
final_realms_fluffos_v1/lib/doc/driver/efuns/core/
final_realms_fluffos_v1/lib/doc/driver/efuns/debugging/
final_realms_fluffos_v1/lib/doc/driver/efuns/filesystem/
final_realms_fluffos_v1/lib/doc/driver/efuns/interactive/
final_realms_fluffos_v1/lib/doc/driver/efuns/mappings/
final_realms_fluffos_v1/lib/doc/driver/efuns/objects/
final_realms_fluffos_v1/lib/doc/driver/efuns/security/
final_realms_fluffos_v1/lib/doc/driver/efuns/strings/
final_realms_fluffos_v1/lib/doc/driver/efuns/system/
final_realms_fluffos_v1/lib/doc/driver/efuns/types/
final_realms_fluffos_v1/lib/doc/driver/lpc/constructs/
final_realms_fluffos_v1/lib/doc/driver/lpc/types/
final_realms_fluffos_v1/lib/doc/driver/platforms/
final_realms_fluffos_v1/lib/doc/lpc/
final_realms_fluffos_v1/lib/doc/mail/
final_realms_fluffos_v1/lib/doc/man/
final_realms_fluffos_v1/lib/doc/man/html/
final_realms_fluffos_v1/lib/doc/man/html/applies/
final_realms_fluffos_v1/lib/doc/man/html/applies/parsing/
final_realms_fluffos_v1/lib/doc/man/html/driver/
final_realms_fluffos_v1/lib/doc/man/html/efuns/
final_realms_fluffos_v1/lib/doc/man/html/efuns/arrays/
final_realms_fluffos_v1/lib/doc/man/html/efuns/buffers/
final_realms_fluffos_v1/lib/doc/man/html/efuns/compile/
final_realms_fluffos_v1/lib/doc/man/html/efuns/floats/
final_realms_fluffos_v1/lib/doc/man/html/efuns/functions/
final_realms_fluffos_v1/lib/doc/man/html/efuns/general/
final_realms_fluffos_v1/lib/doc/man/html/efuns/numbers/
final_realms_fluffos_v1/lib/doc/man/html/efuns/parsing/
final_realms_fluffos_v1/lib/doc/man/local/
final_realms_fluffos_v1/lib/doc/man/local/applies/
final_realms_fluffos_v1/lib/doc/man/local/applies/interactive/
final_realms_fluffos_v1/lib/doc/man/local/applies/master/
final_realms_fluffos_v1/lib/doc/man/local/concepts/
final_realms_fluffos_v1/lib/doc/man/local/defines/
final_realms_fluffos_v1/lib/doc/man/local/driver/
final_realms_fluffos_v1/lib/doc/man/local/efuns/
final_realms_fluffos_v1/lib/doc/man/local/efuns/arrays/
final_realms_fluffos_v1/lib/doc/man/local/efuns/buffers/
final_realms_fluffos_v1/lib/doc/man/local/efuns/calls/
final_realms_fluffos_v1/lib/doc/man/local/efuns/compile/
final_realms_fluffos_v1/lib/doc/man/local/efuns/filesystem/
final_realms_fluffos_v1/lib/doc/man/local/efuns/floats/
final_realms_fluffos_v1/lib/doc/man/local/efuns/functions/
final_realms_fluffos_v1/lib/doc/man/local/efuns/general/
final_realms_fluffos_v1/lib/doc/man/local/efuns/interactive/
final_realms_fluffos_v1/lib/doc/man/local/efuns/internals/
final_realms_fluffos_v1/lib/doc/man/local/efuns/mappings/
final_realms_fluffos_v1/lib/doc/man/local/efuns/mudlib/
final_realms_fluffos_v1/lib/doc/man/local/efuns/numbers/
final_realms_fluffos_v1/lib/doc/man/local/efuns/objects/
final_realms_fluffos_v1/lib/doc/man/local/efuns/parsing/
final_realms_fluffos_v1/lib/doc/man/local/efuns/sockets/
final_realms_fluffos_v1/lib/doc/man/local/efuns/strings/
final_realms_fluffos_v1/lib/doc/man/local/efuns/system/
final_realms_fluffos_v1/lib/doc/man/local/historical/
final_realms_fluffos_v1/lib/doc/man/local/lfun/QC/
final_realms_fluffos_v1/lib/doc/man/local/lfun/events/
final_realms_fluffos_v1/lib/doc/man/local/lfun/monster/
final_realms_fluffos_v1/lib/doc/man/local/lfun/properties/
final_realms_fluffos_v1/lib/doc/man/local/lpc/
final_realms_fluffos_v1/lib/doc/man/local/lpc/constructs/
final_realms_fluffos_v1/lib/doc/man/local/lpc/types/
final_realms_fluffos_v1/lib/doc/man/local/standards/
final_realms_fluffos_v1/lib/doc/man/local/tutorials/
final_realms_fluffos_v1/lib/doc/man/local/tutorials/basic/
final_realms_fluffos_v1/lib/doc/man/local/tutorials/intermediate/
final_realms_fluffos_v1/lib/doc/man/mudos/applies/
final_realms_fluffos_v1/lib/doc/man/mudos/applies/interactive/
final_realms_fluffos_v1/lib/doc/man/mudos/applies/parsing/
final_realms_fluffos_v1/lib/doc/man/mudos/concepts/
final_realms_fluffos_v1/lib/doc/man/mudos/driver/
final_realms_fluffos_v1/lib/doc/man/mudos/efuns/arrays/
final_realms_fluffos_v1/lib/doc/man/mudos/efuns/buffers/
final_realms_fluffos_v1/lib/doc/man/mudos/efuns/calls/
final_realms_fluffos_v1/lib/doc/man/mudos/efuns/compile/
final_realms_fluffos_v1/lib/doc/man/mudos/efuns/filesystem/
final_realms_fluffos_v1/lib/doc/man/mudos/efuns/floats/
final_realms_fluffos_v1/lib/doc/man/mudos/efuns/functions/
final_realms_fluffos_v1/lib/doc/man/mudos/efuns/general/
final_realms_fluffos_v1/lib/doc/man/mudos/efuns/mappings/
final_realms_fluffos_v1/lib/doc/man/mudos/efuns/mixed/
final_realms_fluffos_v1/lib/doc/man/mudos/efuns/mudlib/
final_realms_fluffos_v1/lib/doc/man/mudos/efuns/numbers/
final_realms_fluffos_v1/lib/doc/man/mudos/efuns/parsing/
final_realms_fluffos_v1/lib/doc/man/mudos/lpc/constructs/
final_realms_fluffos_v1/lib/doc/man/mudos/lpc/types/
final_realms_fluffos_v1/lib/doc/races/
final_realms_fluffos_v1/lib/doc/races/old_race/
final_realms_fluffos_v1/lib/global/virtual/
final_realms_fluffos_v1/lib/global/wiz_backup/
final_realms_fluffos_v1/lib/net/config/
final_realms_fluffos_v1/lib/net/daemon/chars/
final_realms_fluffos_v1/lib/net/inherit/
final_realms_fluffos_v1/lib/net/intermud3/
final_realms_fluffos_v1/lib/net/intermud3/cmds/
final_realms_fluffos_v1/lib/net/intermud3/save/
final_realms_fluffos_v1/lib/net/intermud3/services/
final_realms_fluffos_v1/lib/net/obj/
final_realms_fluffos_v1/lib/net/old/
final_realms_fluffos_v1/lib/net/old/intermud/
final_realms_fluffos_v1/lib/net/old/intermud/adm/
final_realms_fluffos_v1/lib/net/old/intermud/services/
final_realms_fluffos_v1/lib/net/old/intermud/udp/
final_realms_fluffos_v1/lib/net/virtual/
final_realms_fluffos_v1/lib/obj/b_day/
final_realms_fluffos_v1/lib/obj/chars/
final_realms_fluffos_v1/lib/obj/handlers/lists/
final_realms_fluffos_v1/lib/obj/handlers/useless/
final_realms_fluffos_v1/lib/obj/monsters/
final_realms_fluffos_v1/lib/obj/roomgen/
final_realms_fluffos_v1/lib/obj/soul/
final_realms_fluffos_v1/lib/obj/vegetation/
final_realms_fluffos_v1/lib/obj/weapons/oldsys/
final_realms_fluffos_v1/lib/open/
final_realms_fluffos_v1/lib/players/g/
final_realms_fluffos_v1/lib/releasefiles/d/heaven/
final_realms_fluffos_v1/lib/releasefiles/d/mudlib/
final_realms_fluffos_v1/lib/releasefiles/d/newbie/
final_realms_fluffos_v1/lib/releasefiles/doc/
final_realms_fluffos_v1/lib/releasefiles/players/g/
final_realms_fluffos_v1/lib/releasefiles/save/
final_realms_fluffos_v1/lib/releasefiles/save/environ/
final_realms_fluffos_v1/lib/releasefiles/save/roomgen/
final_realms_fluffos_v1/lib/releasefiles/secure/
final_realms_fluffos_v1/lib/releasefiles/w/
final_realms_fluffos_v1/lib/releasefiles/w/god/
final_realms_fluffos_v1/lib/room/
final_realms_fluffos_v1/lib/save/
final_realms_fluffos_v1/lib/save/environ/
final_realms_fluffos_v1/lib/save/roomgen/
final_realms_fluffos_v1/lib/scripts/
final_realms_fluffos_v1/lib/secure/crerem/
final_realms_fluffos_v1/lib/secure/dom/
final_realms_fluffos_v1/lib/secure/log/
final_realms_fluffos_v1/lib/secure/misc/
final_realms_fluffos_v1/lib/std/adnd/
final_realms_fluffos_v1/lib/std/commands/shadows/
final_realms_fluffos_v1/lib/std/creator/
final_realms_fluffos_v1/lib/std/curses/
final_realms_fluffos_v1/lib/std/curses/old_sys/
final_realms_fluffos_v1/lib/std/curses/shadows/
final_realms_fluffos_v1/lib/std/dom/
final_realms_fluffos_v1/lib/std/effects/
final_realms_fluffos_v1/lib/std/effects/healing/
final_realms_fluffos_v1/lib/std/effects/other/
final_realms_fluffos_v1/lib/std/effects/poisons/
final_realms_fluffos_v1/lib/std/environ/
final_realms_fluffos_v1/lib/std/guilds/
final_realms_fluffos_v1/lib/std/guilds/priests/samples/
final_realms_fluffos_v1/lib/std/guilds/wizards/
final_realms_fluffos_v1/lib/std/living/baldy/
final_realms_fluffos_v1/lib/std/living/divstuff/
final_realms_fluffos_v1/lib/std/paran/
final_realms_fluffos_v1/lib/std/poisons/
final_realms_fluffos_v1/lib/std/poisons/shadows/
final_realms_fluffos_v1/lib/std/poisons/weapons/
final_realms_fluffos_v1/lib/std/race_groups/
final_realms_fluffos_v1/lib/std/room/
final_realms_fluffos_v1/lib/std/room/old/
final_realms_fluffos_v1/lib/std/rooms/
final_realms_fluffos_v1/lib/std/shadows/
final_realms_fluffos_v1/lib/std/shadows/test_shad/
final_realms_fluffos_v1/lib/std/socket/
final_realms_fluffos_v1/lib/std/spells/
final_realms_fluffos_v1/lib/std/vaults/
final_realms_fluffos_v1/lib/tmp/
final_realms_fluffos_v1/lib/w/
final_realms_fluffos_v1/lib/w/god/
final_realms_fluffos_v1/old/
final_realms_fluffos_v1/win32/
/* Altered August 1995 - January 1996 by Hamlet
   Added weight and shortcut ways to say 'platinum coins'.
   Added the cute little 'look coin' thingy.
  980502 Skullslayer - removed unused variables
*/
inherit "/std/object";
#include "move_failures.h"
#include "money.h"
#define WEIGHTDIV 2

mixed *money_array;
static int dont_join;

int query_number_coins();

void create() {
  money_array = ({ });
  ::create();
  set_name("coin");
  add_alias("Some Money For Me");
  add_plural("coins");
  set_main_plural("coins");
  add_property("determinate", "");
  add_property("no one",1);
  add_property("money",1);
}

void init() {
  add_action("do_help", "help");
}

int do_help(string str) {
  mixed *values;
  int i;

  if (!str || str != "money")
    return 0;
  write("Money values.\n");
  values = (mixed *)MONEY_HAND->query_values();
  str = "";
  for (i=0;i<sizeof(values);i+=2)
    str += sprintf("%10-s : %4d %s\n", values[i], values[i+1], values[0]);
  printf("%-*s\n", this_player()->query_cols(), str);
  return 1;
}

varargs int adjust_money(mixed amt, string type) {
  int i, val;
  
  if (pointerp(amt)) {
    for (i=0;i<sizeof(amt);i+=2)
      adjust_money(amt[i+1], amt[i]);
    return 1;
  }
  if (!stringp(type) || !intp(amt))
    return 0;
  /* Let's not allow unknown money types - Hamlet */
  if (member_array(type,(mixed *)MONEY_HAND->query_values()) == -1)
    return 0;
    
  if(environment(this_object()))
    if(interactive(environment(this_object()))) {
      val = (int)MONEY_HAND->query_value(type);
      catch(MONEY_TRACKER->update_statistics(val*amt,
            environment(this_object())));
    }
  if ((i=member_array(type, money_array)) == -1) {
    add_adjective(type);
    add_plural(type+"s");
    add_plural(type[0..0]+"cs");
    add_alias(type);  /* 'give 10 platinum to Hamlet' */
    add_alias(type[0..0]+"c");  /* 'give 10 pc to Hamlet' */
    if(type == "platinum") {
      add_alias("plat");  /* 'give 10 plat to Hamlet' */
      add_plural("plats");
      add_adjective("plat");
    }
/* order - highest value to the left of money_array */
    for(i=0; i<sizeof(money_array); i+=2) {
      val = (int)MONEY_HAND->query_value(money_array[i]);
      if((int)MONEY_HAND->query_value(type) > val) break;
    }
     
    money_array = money_array[0..(i-1)] + ({ type, amt }) +
       money_array[i..sizeof(money_array)];
  } else {
    money_array[i+1] += amt;
    if (money_array[i+1] <= 0) {
      remove_adjective(type);
      /* More Hamlet junk */
      remove_plural(type+"s");
      remove_plural(type[0..0]+"cs");
      remove_alias(type);
      remove_alias(type[0..0]+"c");
      if(type == "platinum") {
        remove_alias("plat");
        remove_plural("plats");
        remove_adjective("plat");
      }
      money_array = delete(money_array,i,2);
      set_weight(query_number_coins()/WEIGHTDIV); /* Hamlet */
      return 0;
    }
  }

  set_weight(query_number_coins()/WEIGHTDIV); /* Hamlet */
  return money_array[i+1];
}

mixed *query_money_array() { return money_array; }

void set_money_array(mixed *arr) { 
  int i;
  mixed *newarr = ({ });

  if(stringp(arr))
    return;
      
  for(i=0;i<sizeof(arr);i+=2)
    if (member_array(arr[i],(mixed *)MONEY_HAND->query_values()) != -1)
      newarr += ({ arr[i], arr[i+1] });
        
  money_array = newarr;
  adjectives = ({ }); /* clear them... */
  alias = ({ "Some Money For Me" }); /* clear these too */
  plurals = ({ "coins" }); /* clear these too */
  
  for (i=0;i<sizeof(money_array);i+=2) {
    add_adjective(money_array[i]);
    add_plural(money_array[i]+"s");
    add_plural(money_array[i][0..0]+"cs");
    add_alias(money_array[i]); /* Give 30 platinum to someone - Hamlet */
    add_alias(money_array[i][0..0]+"c"); /* give 30 pc to Hamlet */
    if(money_array[i] == "platinum") {
      add_alias("plat");  /* give 30 plat to Hamlet */
      add_plural("plats");
      add_adjective("plat");
    }
  }
  set_weight(query_number_coins()/WEIGHTDIV); /* Hamlet */
}

string *half_short() {
  string *retval;
  int i;

  retval = ({ });
  for (i=0;i<sizeof(money_array);i+=2)
    if (money_array[i+1] > 1)
      if (this_player() != environment() && money_array[i+1] > 10)
        retval += ({ "Some "+money_array[i] });
      else
        retval += ({ money_array[i+1]+" "+ 
                           money_array[i] });
    else if (money_array[i+1] == 1)
      retval += ({ "1 "+money_array[i] });
  return retval;
}

string short(int dark) {
  mixed retval;

  retval = half_short();
  if (!sizeof(retval))
    return 0;
  if (sizeof(retval) == 1)
    return retval[0] + " coin"+(retval[0]==1?"":"s");
  return implode(retval[0..sizeof(retval)-2], ", ")+
         " and "+retval[sizeof(retval)-1] + " coin"+
         (retval[sizeof(retval)-1]==1?"":"s");
}
/*
string *pretty_short(int dark) {
  return half_short();
}
*/

string long(string str, int dark) {
  string ret = "You look at the coin and see ";
  
    ret += ({ "the handsome head of Moloch, he seems to be offering you "
              "a lollipop."
            , "the beastial head of Errtu the Nightstalker."
            , "the purple nosed visage of Rage, the drunken sot."
            , "the handsome face of Mirath the Wanderer, Carver of Mountains."
            , "a dark, indistinct form.  Very little can be seen of the face "
              "of Manshoon, betrothed of Cyrcia."
            , "the lopsided smile of that jokester of a lizard-man, "
              "Fengarance."
            , "the sneering maw of Greymist, destroyer of seas."
            , "the evil visage of Bresbane, Bringer of the Night."
                , "The smiling face of Roan, onetime Lord of Banefall."
              , "The dark beauty of Krelk"
          })[random(10)];
  ret += "\n";
  return ret;
}

object new_money_object(int num, string type) {
  int i;
  object ob;

  if (!sizeof(money_array))
    return 0;
  if (!type)
    i = 0;
  else if ((i = member_array(type, money_array)) == -1)
    return 0;
  if (num > money_array[i+1])
    num = money_array[i+1];
  ob = clone_object(MONEY_OBJECT);
  ob->adjust_money(num, type);
  money_array[i+1] -= num;
  if (money_array[i+1] <= 0)
    money_array = delete(money_array, i, 2);
  
  /* Weight stuff -- Hamlet */
  set_weight(query_number_coins()/WEIGHTDIV);
  
  return ob;
}

varargs int move(mixed dest, mixed messin, mixed messout) {
  int j;
  object ob, mon;
  object from_where;
  from_where = environment();
  if(!from_where) from_where=
        find_player(query_property("clonedin"));

  if(environment() ) environment()->fix_my_loc_weight_later();
  j = (int)::move(dest, messin, messout);
  if (j != MOVE_OK)
    return j;
  if (objectp(dest))
    ob = dest;
  else {
    ob = find_object(dest);
    if (!ob) {
      call_other(ob, "??");
      ob = find_object(dest);
    }
  }
  remove_alias("Some Money For Me");
  remove_call_out("move");
  if (ob && (mon = present("Some Money For Me", ob)) && !dont_join) {
    for (j=0;j<sizeof(money_array);j+=2)
      mon->adjust_money(money_array[j+1], money_array[j]);
    dont_join = 1;
    move("/room/void");
     if(from_where)
      if(interactive(from_where))
      catch(MONEY_TRACKER->update_statistics(-query_value(),
          from_where));
    call_out("dest_me",0);
    return MOVE_OK;    
  }
  add_alias("Some Money For Me");
  if(ob&&interactive(ob)) {
    catch(MONEY_TRACKER->update_statistics(query_value(),ob));
    }
     if(from_where)
      if(!dont_join)
      catch(MONEY_TRACKER->update_statistics(-query_value(),
          from_where));
  set_weight(query_number_coins()/WEIGHTDIV);
  if(environment() ) environment()->fix_my_loc_weight_later();

  return MOVE_OK;
}

object query_parse_id(mixed *arr) {
  int i, j, num, l;
  string s1, *bit;
  int n1;
  object ob;
  string cn1;

  if(this_player() && this_player()->query_name() == "hamlet")
    tell_object(this_player(),sprintf("%O\n",arr));
    
  if (arr[0] == 0) {
    bit = explode(arr[1], " ");
/* Not entirely positive what this did, but changes required its removal.
   I added some of this carp back below.
   - Hamlet
 
    if (bit[sizeof(bit)-1] != "coins")
      if (environment() != this_player())
        return this_object();
      else
        return 0;
    if (sizeof(bit) == 1)
      return this_object();
*/

    if(bit[0] == "coins")
      return this_object();

    if(bit[0] == "all") {
      if(environment(this_object()) != this_player())
        return this_object();
      else
        return 0;
    }
          
    switch(bit[0]) {
      case "plat" : bit[0] = "platinum"; break;
      case "pc"   : bit[0] = "platinum";  break;
      case "gc"   : bit[0] = "gold";  break;
      case "ec"   : bit[0] = "electrum";  break;
      case "sc"   : bit[0] = "silver";  break;
      case "cc"   : bit[0] = "copper";  break;
    }
    
    i = member_array(bit[0], money_array);
    if (i == -1)
      return 0;
    num = money_array[i+1];
    s1 = money_array[i];
    money_array = delete(money_array, i, 2);
    remove_adjective(s1);
    remove_plural(s1+"s");
    remove_plural(s1[0..0]+"cs");
    remove_alias(s1);
    remove_alias(s1[0..0]+"c");
    if(s1 == "platinum") {
      remove_alias("plat");
      remove_plural("plats");
      remove_adjective("plat");
    }
    ob = clone_object(MONEY_OBJECT);
    ob->set_money_array(({ s1, num }));

    
    /* Weight stuff.  -- Hamlet */
    set_weight(query_number_coins()/WEIGHTDIV);
    
        ob->add_property("clonedin",environment()->query_name());
    ob->do_move_call_out(environment());
    return ob;
  }
/* assume if they are after a particular one they are not interested in
 * us... */
  if (arr[0] <= 0 || !sizeof(money_array))
    return 0;
  i = -1;
  
  bit = explode(arr[1]," ");
  for(l=0;l<sizeof(bit);l++) {
    switch(bit[l]) {
      case "plat"  : bit[l] = "platinum"; break;
      case "pc"    : bit[l] = "platinum";  break;
      case "gc"    : bit[l] = "gold";  break;
      case "ec"    : bit[l] = "electrum";  break;
      case "sc"    : bit[l] = "silver";  break;
      case "cc"    : bit[l] = "copper";  break;
      case "plats" : bit[l] = "platinums";  break;
      case "pcs"   : bit[l] = "platinums";  break;
      case "gcs"   : bit[l] = "golds";  break;
      case "ecs"   : bit[l] = "electrums";  break;
      case "scs"   : bit[l] = "silvers";  break;
      case "ccs"   : bit[l] = "coppers";  break;
    }
  }
/*

  if(this_player()->query_name() == "hamlet")
    tell_object(this_player(),sprintf("%O\n",arr));
*/

  arr[1] = implode(bit," ");
     
  for (j=0;j<sizeof(money_array);j+=2)
    /* This next line looks moronic, but trust me, it skirts a known sscanf()
       bug.
    */
    if (sscanf(arr[1], "%s "+money_array[j],cn1)) {
      i = j;
      sscanf(cn1,"%d",n1);
      if(n1 > 0)
        arr[0] = n1;
  }
  
  if(i == -1) {
    for(j=0;j<sizeof(money_array);j+=2)
      if(money_array[j] == arr[1][0..strlen(money_array[j])-1])
        i = j;
  }
      
  if (i == -1) {
    i = member_array("copper",money_array);
    if (i == -1)
      i = 0;
  }
  
  if( (arr[1][strlen(arr[1])-5..strlen(arr[1])-1] == "coins") &&
      (n1 <= 0) )
    arr[0] = money_array[i+1];
    
  if (arr[0] >= money_array[i+1]) {
    num = money_array[i+1];
    remove_plural(money_array[i]+"s");
    remove_plural(money_array[i][0..]+"cs");
    remove_alias(money_array[i]);
    remove_alias(money_array[i][0..0]+"c");
    if(money_array[i] == "platinum") {
      remove_alias("plat");
      remove_plural("plats");
      remove_adjective("plat");
    }
    remove_adjective(money_array[i]);
  }
  else
    num = arr[0];
  money_array[i+1] -= num;
  arr[0] -= num;
  ob = clone_object(MONEY_OBJECT);
  ob->set_money_array( ({ money_array[i], num }) );

  
  /* Weight stuff.  -- Hamlet */
  set_weight(query_number_coins()/WEIGHTDIV);
  
        ob->add_property("clonedin",environment()->query_name());
  ob->do_move_call_out(environment());  
  return ob;
}

/* you cannot sell money... */
int do_not_sell() { return 1; }
void do_move_call_out(object ob) { call_out("move",0,ob); }

int query_value() { return (int)MONEY_HAND->query_total_value(money_array); }

int query_number_coins()
{
  int i, tot;

  if(!sizeof(money_array)) return 0;
  for(i=1;i<sizeof(money_array);i+=2)
    tot += money_array[i];
  return tot;
}