#define NO_ENV(x) sizeof( filter( x, (: clonep($1) && !ENV($1) && !query_shadowing($1) :) ) )
inherit COMMAND_BASE;
int cmd() {
int l;
object *rooms, *items, *doors, *chatters, *livings, *objects,
*containers, *weapons, *clothing, *armours, *money, *handlers, *cmds;
objects = objects();
rooms = filter( objects, (: $1->query_is_room() :) );
objects -= rooms;
l += sizeof(rooms);
items = filter( objects, (: base_name($1) == "/std/room/basic/item" :) );
objects -= items;
l += sizeof(items);
doors = filter( objects, (: base_name($1) == "/std/room/basic/door" :) );
objects -= doors;
l += sizeof(doors);
chatters = filter( objects, (: base_name($1) == "/std/room/basic/chatter" :) );
objects -= chatters;
l += sizeof(chatters);
containers = filter( objects, (: base_name($1) == "/std/container" :) );
objects -= containers;
l += sizeof(containers);
weapons = filter( objects, (: $1->query_weapon() :) );
objects -= weapons;
l += sizeof(weapons);
reset_eval_cost();
clothing = filter( objects, (: $1->query_clothing() :) );
objects -= clothing;
l += sizeof(clothing);
armours = filter( objects, (: $1->query_armour() :) );
objects -= armours;
l += sizeof(armours);
money = filter( objects, (: base_name($1) == "/obj/money" :) );
objects -= money;
l += sizeof(money);
handlers = filter( objects, (: base_name($1)[0..9] == "/handlers/" ||
base_name($1)[0..16] == "/secure/handlers/" :) );
objects -= handlers;
l += sizeof(handlers);
cmds = filter( objects, (: base_name($1)[0..5] == $2 ||
base_name($1)[0..12] == $3 :),
"/cmds/", "/secure/cmds/" );
objects -= cmds;
l += sizeof(cmds);
objects = filter( objects, (: base_name($1) == "/std/object" :) );
l += sizeof(objects);
livings = livings();
l += sizeof(livings);
tell_object( TP, sprintf(
"Types of various objects: Num (no env)\n\n"
"rooms: %4d\n"
"/std/room/basic/item: %4d\n"
"/std/room/basic/door: %4d\n"
"/std/room/basic/chatter: %4d\n"
"/std/object: %4d (%d)\n"
"/std/container: %4d (%d)\n"
"/obj/weapon: %4d (%d)\n"
"/obj/clothing: %4d (%d)\n"
"/obj/armour: %4d (%d)\n"
"/obj/money: %4d (%d)\n"
"livings: %4d (%d)\n"
"heart beats: %4d\n"
"handlers: %4d\n"
"commands: %4d\n---\n"
"Used by these objects: %4d\n"
"Total objects loaded: %4d\n",
sizeof(rooms), sizeof(items), sizeof(doors),
sizeof(chatters), sizeof(objects), NO_ENV( objects ),
sizeof(containers), NO_ENV( containers ),
sizeof(weapons), NO_ENV( weapons ),
sizeof(clothing), NO_ENV( clothing ),
sizeof(armours), NO_ENV( armours ),
sizeof(money), NO_ENV( money ), sizeof(livings),
NO_ENV( livings ), sizeof( heart_beats() ),
sizeof(handlers), sizeof(cmds), l, sizeof(objects()) ) );
return 1;
} /* cmd() */