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/
// NPC statistic tracker for FR-Mud
// Radix - April 6, 1996
// Version 1.7
// Hacked up for money... Anirudh

#include "timestuff.h"
#include "money_adjust.h"
/* The data mappings...
  ([ "directory of transaction room" :
            ({
                       taken in, 
                       taken in per level,
                       taken per level under 15,
                       last taken,
                       time averaged,
                       given out,
                       given out/level,
                       given per level under 15,
                       last given,
                       time averaged,
             })
  ])
*/

inherit "/std/object.c";

#define SAVE "/save/"
//#define PKHAND "/obj/handlers/pk"

int *mult;
int last_adj;
mapping data;
int totaldif,diftimes;

void reset_la() { last_adj = 0; }
void reset_screw_rate() {
  totaldif = 0;
  diftimes = 0;
}

int query_screw_rate() {
  int num = diftimes;
  int dif = totaldif;
  write(num+"\n");
  if(num > 20000) reset_screw_rate();
  if(num <= 0) return 1; // Taniwha
  return dif/num;
}

int query_number_screwed() { return diftimes; }
int *query_adj_data() { return ({last_adj }) +mult; }

mapping query_data() { return data; }

void load_this_ob() {
   if(!m_sizeof(data))
     restore_object(SAVE+"moneydata");
}

void save_this_ob() {
  if(m_sizeof(data)) 
    save_object(SAVE+"moneydata",1);
}
void clear_data() {
  data = ([ ]);
  mult = ({ 0,0,0,0 });
  save_object(SAVE+"moneydata",1);
}

void create()
{
   ::create();
   data = ([ ]);
  mult = ({ 0,0,0,0 });
   load_this_ob();
}

void dest_me()
{
   save_this_ob();
   destruct(this_object());
}

string crop_string(string longpa, int howlong) {
  string shorter;
  shorter = longpa[sizeof(longpa)-howlong..sizeof(longpa)];
  return shorter;
}

string environment_path(object obj)
{
  string fname = file_name(environment(obj));
  string *dom = explode(fname,"/");
  dom -= ({ dom[sizeof(dom)-1] });
  return implode(dom,"/");
}

mapping query_moneystats() {
  load_this_ob();
  return data;
}

mapping query_domain_moneystats( string dom ) { 
  load_this_ob();
  if(data[dom]) return data[dom];
  return 0;
}

mixed *query_money_stat( string dom, string pathname ) {
  load_this_ob();
  if(data[dom]) {
    if(data[dom][pathname]) return data[dom][pathname];
  }
  return 0;
}

void select_domain_stats(string realdom) {
  int i;
  int tim, timt, timtt, time_now;
  int ttl15t,gtl15t;
  int gtt,ttt,gtlt,ttlt;
  int tt, ttl,ttl15,gt,gtl,gtl15;
  float ratio;
  string dom, outgoing;
  string *ind, *tmp;
  load_this_ob();
  time_now = TIMEKEEPER->query_running_time()/60.0;
  outgoing ="\nDir  ggive ngive ggivel ngivel ggl15 ngl15\n";
  outgoing += "(money in copper, time in player hours)\n\n";
  if(!mappingp(data)) data = ([ ]); // Taniwha
  ind = m_indices(data);
  for(i=0;i<sizeof(ind);i++) {
    tmp = explode(ind[i],"/");
    if(sizeof(tmp) < 2) continue;
    if(tmp[1] == realdom) {
      dom = ind[i];
          if(!m_sizeof(data[dom])) {
            data = m_delete(data,data[dom]);
            continue;
          }
        tt = data[dom][0];
        ttl = data[dom][1];
        ttl15 = data[dom][2];
        gt = data[dom][5];
        gtl = data[dom][6];
        gtl15 = data[dom][7];
        if(((time_now-data[dom][3])>BASE_WEEK/30.0
          &&(time_now-data[dom][8])>BASE_WEEK/30.0)
          ||(time_now-data[dom][3])<0.0
          ||(time_now-data[dom][8])<0.0)
         {
          data = m_delete(data,dom);
          continue;
        }
        tim = data[dom][9];
                if(data[dom][4]>tim) tim = data[dom][4];
        if(tim > timt) timt = tim;
      if(dom)
         dom = dom[strlen(realdom)+3..1000]+"/";
   if(timt) {
         outgoing+=sprintf("%-13s %8.2f ",crop_string(dom,17),(gt*60.0)/timt);
         outgoing+=sprintf(" %8.2f ", (gt+tt)*60.0/timt);
         outgoing+=sprintf(" %8.2f ", (gtl)*60.0/timt);
         outgoing+=sprintf(" %8.2f ", (gtl+ttl)*60.0/timt);
         outgoing+=sprintf(" %6.4f ", (gtl15)*60.0/timt);
         outgoing+=sprintf(" %6.4f\n", (gtl15+ttl15)*60.0/timt);
       }

       gtt+=gt;
       ttt+=tt;
       gtlt+=gtl;
       ttlt+=ttl;
       gtl15t+=gtl15;
       ttl15t+=ttl15;
      if(timt > timtt) timtt = timt;
       gt=0;
       tt=0;
       gtl=0;
       ttl=0;
       gtl15=0;
       ttl15=0;
       timt=0;
    }
  }
   outgoing+="\n\n";
   if(timtt) {
         outgoing+=sprintf("%-13s %8.2f ","TOTALS",(gtt*60.0)/timtt);
         outgoing+=sprintf(" %8.2f ", (gtt+ttt)*60.0/timtt);
         outgoing+=sprintf(" %8.2f ", (gtlt)*60.0/timtt);
         outgoing+=sprintf(" %8.2f ", (gtlt+ttlt)*60.0/timtt);
         outgoing+=sprintf(" %8.2f ", (gtl15t)*60.0/timtt);
         outgoing+=sprintf(" %8.2f\n", (gtl15t+ttl15t)*60.0/timtt);
     }
  this_player()->more_string(outgoing);
}


void full_domain_stats(string realdom) {
  int i;
  int tim, timt, timtt, time_now;
  int ttl15t,gtl15t;
  int gtt,ttt,gtlt,ttlt;
  int tt, ttl,ttl15,gt,gtl,gtl15;
  float ratio;
  string dom, outgoing;
  string *ind, *tmp;
  load_this_ob();
  time_now = TIMEKEEPER->query_running_time()/60.0;
    outgoing="\nDir  grs give  grs take  ggive/lev  gtak/lev  gg/lev<15  gt/lev<15\n";
  outgoing += "(money in copper, per time in player hours)\n\n";
  if(!mappingp(data)) data = ([ ]); // Taniwha
  ind = m_indices(data);
  for(i=0;i<sizeof(ind);i++) {
    tmp = explode(ind[i],"/");
    if(sizeof(tmp) < 2) continue;
    if(tmp[1] == realdom) {
      dom = ind[i];
          if(!m_sizeof(data[dom])) {
            data = m_delete(data,data[dom]);
            continue;
          }
         tt = data[dom][0];
        ttl = data[dom][1];
        ttl15 = data[dom][2];
        gt = data[dom][5];
        gtl = data[dom][6];
        gtl15 = data[dom][7];
        if(((time_now-data[dom][3])>BASE_WEEK/30.0
          &&(time_now-data[dom][8])>BASE_WEEK/30.0)
          ||(time_now-data[dom][3])<0.0
          ||(time_now-data[dom][8])<0.0)
         {
          data = m_delete(data,dom);
          continue;
        }
        tim = data[dom][9];
                if(data[dom][4]>tim) tim = data[dom][4];
        if(tim > timt) timt = tim;
      if(dom)
         dom = dom[strlen(realdom)+3..1000]+"/";
   if(timt) {
         outgoing+=sprintf("%-13s %8.2f ",crop_string(dom,17),(gt*60.0)/timt);
         outgoing+=sprintf(" %8.2f ", (tt)*60.0/timt);
         outgoing+=sprintf(" %8.2f ", (gtl)*60.0/timt);
         outgoing+=sprintf(" %8.2f ", (ttl)*60.0/timt);
         outgoing+=sprintf(" %6.4f ", (gtl15)*60.0/timt);
         outgoing+=sprintf(" %6.4f\n", (ttl15)*60.0/timt);
       }

       gtt+=gt;
       ttt+=tt;
       gtlt+=gtl;
       ttlt+=ttl;
       gtl15t+=gtl15;
       ttl15t+=ttl15;
      if(timt > timtt) timtt = timt;
       gt=0;
       tt=0;
       gtl=0;
       ttl=0;
       gtl15=0;
       ttl15=0;
       timt=0;
    }
  }
   outgoing+="\n\n";
   if(timtt) {
         outgoing+=sprintf("%-13s %8.2f ","TOTALS",(gtt*60.0)/timtt);
         outgoing+=sprintf(" %8.2f ", (ttt)*60.0/timtt);
         outgoing+=sprintf(" %8.2f ", (gtlt)*60.0/timtt);
         outgoing+=sprintf(" %8.2f ", (ttlt)*60.0/timtt);
         outgoing+=sprintf(" %8.2f ", (gtl15t)*60.0/timtt);
         outgoing+=sprintf(" %8.2f\n", (ttl15t)*60.0/timtt);
     }
  this_player()->more_string(outgoing);
}

int *mudwide_sums() {
  int i;
  int *vals;
  string *ind, *tmp;
  string dom;
  int time_now;
  time_now = TIMEKEEPER->query_running_time()/60.0;
  load_this_ob();
  if(!mappingp(data)) data = ([ ]); // Taniwha
  vals = ({ 0,0,0,0,0,0,0 });
  ind = m_indices(data);
  for(i=0;i<sizeof(ind);i++) {
    tmp = explode(ind[i],"/");
    if(sizeof(tmp) < 2) continue;
      dom = ind[i];
        if(((time_now-data[dom][3])>BASE_WEEK/30.0
          &&(time_now-data[dom][8])>BASE_WEEK/30.0)
          ||(time_now-data[dom][3])<0.0
          ||(time_now-data[dom][8])<0.0)
         {
          data = m_delete(data,dom);
          continue;
        }
         vals[0] += 0.002*data[dom][0];
         vals[1] += 0.002*data[dom][1];
         vals[2] += 0.002*data[dom][2];
         vals[3] += 0.002*data[dom][5];
         vals[4] += 0.002*data[dom][6];
         vals[5] += 0.002*data[dom][7];
         if(data[dom][4]>vals[6]) vals[6]=data[dom][4];
         if(data[dom][9]>vals[6]) vals[6]=data[dom][9];
  }
  return vals;
}

int query_adj_fact(int arg) {
  int *vals;
  int adj,base;
  int time_now;
  time_now=TIMEKEEPER->query_running_time();
  load_this_ob();
  if(last_adj == 0) {
       last_adj=time_now;
       save_this_ob();
       return 1000;
     }
  if(!mult) mult = ({ 0,0,0,0 });
  if(time_now>2000000+last_adj) {
  vals = mudwide_sums();
  if(vals[0]==0) return 1000;
  base=MONEYSCALE*(vals[0]+vals[3])/(-vals[0]);
    adj=base*SSFRAC;
    if(adj>SSMAXC) adj = SSMAXC;
    if(adj<-SSMAXC) adj = -SSMAXC;
    mult[SSFLAG] += adj;
    if(mult[SSFLAG]>SSMAXM) mult[SSFLAG]=SSMAXM;
    if(mult[SSFLAG]<SSMINM) mult[SSFLAG]=SSMINM;

    adj=base*MONFRAC;
    if(adj>MONMAXC) adj = MONMAXC;
    if(adj<-MONMAXC) adj = -MONMAXC;
    mult[MONFLAG] -= adj;
    if(mult[MONFLAG]>MONMAXM) mult[MONFLAG]=MONMAXM;
    if(mult[MONFLAG]<MONMINM) mult[MONFLAG]=MONMINM;

    adj=base*SBFRAC;
    if(adj>SBMAXC) adj = SBMAXC;
    if(adj<-SBMAXC) adj = -SBMAXC;
    mult[SBFLAG] -= adj;
    if(mult[SBFLAG]>SBMAXM) mult[SBFLAG]=SBMAXM;
    if(mult[SBFLAG]<SBMINM) mult[SBFLAG]=SBMINM;

    adj=base*TAVFRAC;
    if(adj>TAVMAXC) adj = TAVMAXC;
    if(adj<-TAVMAXC) adj = -TAVMAXC;
    mult[TAVFLAG] += adj;
    if(mult[TAVFLAG]>TAVMAXM) mult[TAVFLAG]=TAVMAXM;
    if(mult[TAVFLAG]<TAVMINM) mult[TAVFLAG]=TAVMINM;

  secure_log_file("INFLATION",ctime(time())+"\n"+mult[0]+
      ", "+mult[1]+", "+mult[2]+", "+mult[3]+", "+base+"\n");
  last_adj = time_now;
  save_this_ob();
  }
  return 1000+mult[arg];
}

float update_money_given(int amount, object player)
{
   mixed vals;
   string domname, obname;
   int i, temp,plev;
   int time_now, time_since, total_time, time_extra;
   float rateret;

   if(!(domname = environment_path(player)))
      return 1;
   load_this_ob();
   vals = data[domname];
   if(!vals) vals = ({0,0,0,0,0,0,0,0,0,0});
   
   if(!(player->query_creator()) && 
     strsrch(player->query_name(),"test") == -1) {
   time_now = TIMEKEEPER->query_running_time()/60.0;
   if(!vals[8]) vals[8] = time_now;
   time_since = time_now - vals[8];
  if(time_since < 0) time_since = 0;
   if(time_since > BASE_WEEK/30.0) {
     vals[5]=0;
     vals[6]=0;
     vals[7]=0;
     vals[8]=time_now;
     vals[9]=BASE_WEEK/30.0;
   }
   else {
     total_time = vals[9]+time_since;
     if(total_time > BASE_WEEK/30.0) {
       time_extra = total_time - BASE_WEEK/30.0;
       temp = vals[5]*((vals[9]-time_extra)*10.0/vals[9])/10;
       vals[5] = temp;
       temp = vals[6]*((vals[9]-time_extra)*10.0/vals[9])/10;
       vals[6] = temp;
       temp = vals[7]*((vals[9]-time_extra)*10.0/vals[9])/10;
       vals[7] = temp;
       temp = BASE_WEEK/30.0;
       vals[9] = temp;
     }
     else vals[9] = total_time;
     vals[8] = time_now;
   }
   
   if(vals[9] < 0) vals[9] = BASE_WEEK/30;
   vals[5] += amount;
   plev = player->query_level();
   vals[6] = (vals[6]*plev+amount)/plev;
   if(plev<16) vals[7] =(vals[7]*plev+amount)/plev;

   data[domname] = vals;
   save_this_ob();
   }

   return 1.0;
}

void update_money_taken(int amount, object player)
{
   mixed vals;
   string domname, obname;
   int i, temp,plev;
   int time_now, time_since, total_time, time_extra;

   if( player->query_creator() || 
     strsrch(player->query_name(),"test") != -1) return;
  if(!(domname = environment_path(player)))
    return;
  plev = player->query_level();
   load_this_ob();
   vals = data[domname];
   if(!vals) vals = ({0,0,0,0,0,0,0,0,0,0});
   
   time_now = TIMEKEEPER->query_running_time()/60.0;
   if(!vals[3]) vals[3] = time_now;
   time_since = time_now - vals[3];
   if(time_since < 0) time_since = 0;
   if(time_since > BASE_WEEK/30.0) {
     vals[0]=0;
     vals[1]=0;
     vals[2]=0;
     vals[3]=time_now;
     vals[4]=BASE_WEEK/30.0;
   }
   else {
     total_time = vals[4]+time_since;
     if(total_time > BASE_WEEK/30.0) {
       time_extra = total_time - BASE_WEEK/30.0;
       temp = vals[0]*((vals[4]-time_extra)*10.0/vals[4])/10;
       vals[0] = temp;
       temp = vals[1]*((vals[4]-time_extra)*10.0/vals[4])/10;
       vals[1] = temp;
       temp = vals[2]*((vals[4]-time_extra)*10.0/vals[4])/10;
       vals[2] = temp;
       temp = BASE_WEEK/30.0;
       vals[4] = temp;
     }
     else vals[4] = total_time;
     vals[3] = time_now;
   }
   
   if(vals[4] < 0) vals[4] = BASE_WEEK/30;
   vals[0] += amount;
   vals[1] = (vals[1]*plev+amount)/plev;
   if(plev<16) vals[2] = (vals[2]*plev+amount)/plev;
   
   data[domname] = vals;
   save_this_ob();
   return;

}


float update_statistics(int amount, object player)
{
  if(environment(player)&&(amount>5000 ||amount<-5000))
tell_object(find_player("anirudh"),player->query_name()+" "+amount);
  if(player &&environment(player)&&(amount>250000||amount<-250000))
  secure_log_file("MONEY",player->query_name()+", "+file_name(environment(player))+
       "\n"+amount+", "+ctime(time())+"\n");
  if(player&&environment(player)&&
    !(environment(player)->query_treasury()) &&
    !(environment(player)->query_bank())) 
   {
       if(interactive(player) && amount <0) {
    update_money_taken(amount,player);
         return 1;
      }
   if(interactive(player) && amount >0) 
        return update_money_given(amount,player);
  return 1;
}
  return 0;
}