// Radix, info command - July 1996
// Version 0.9
#include <standard.h>
#include <cmd.h>
#define OBTRACK "/obj/handlers/item_info"
#define PKTRACK "/obj/handlers/pk"
#define DEATHTRACK "/obj/handlers/death"
#define MONEY_HANDLER "/obj/handlers/money"
inherit CMD_BASE;
void setup()
{
position = 1;
}
string query_short_help()
{
return "Usage: info <object>\n\n"
"All items and NPCs can be info'ed. Different "
"information is of course obtained for the different "
"objects. Info is stored in /obj/handlers/object_track.c "
"for items and death.c for NPCs.\n\n"
"Item info is checked everytime it is cloned, and "
"updated. If the old data is no longer valid, the object "
"loses its QC status and must be re-QCed by the "
"appropriate immortal(s). "
"\n\n"
"NPC data is updated everytime an NPC is killed or kills "
"another player. The NPC's query_kill_xp is the main "
"stat of concern here, when it is either adjusted up or "
"down for various reasons determined by stored data. "
"\n\n"
"See also:\n"
" stat, qc\n\n";
}
static int cmd(string str, object ob)
{
object itm, *obs;
string *tmp;
switch(this_player(1)->query_object_type())
{
case "B" :
notify_fail("You don't have permissions to use this "
"command.\n");
return 0;
break;
}
if(!ob) return;
if(!str)
{
notify_fail("Syntax: info <object>\n");
return 0;
}
if(str[0..1] == "-m")
{
MONEY_HANDLER->info_money(str[3..10]);
return 1;
}
if(str[0..1] == "-d")
{
str = str[3..10000];
tmp = explode(str," ");
if(sizeof(tmp) != 2)
{
notify_fail("Syntax: info -d domain <weapons | "
"armours | containers>\n");
return 0;
}
switch(tmp[1])
{
case "weapons" :
case "weapon" :
case "w" :
OBTRACK->domain_weapons(tmp[0]);
return 1;
break;
case "armours" :
case "armour" :
case "armors" :
case "armor" :
case "a" :
OBTRACK->domain_armours(tmp[0]);
return 1;
break;
case "containers" :
case "container" :
case "c" :
OBTRACK->domain_item_containers(tmp[0]);
return 1;
break;
default :
notify_fail("Syntax: info -d domain/sub-dir <weapons | "
"armours | containers>\n");
return 0;
break;
}
}
if(str[0..1] == "-p")
{
PKTRACK->info_player(str[3..15]);
return 1;
}
if(str[0..1] == "-k")
{
if(member_array(str[3..20], get_dir("/d/")) < 0)
{
notify_fail("Not a valid domain.\n");
return 0;
}
DEATHTRACK->full_domain_kar(str[3..20]);
return 1;
}
if(str[0..6] == "-update")
{
OBTRACK->mapping_update();
return 1;
}
obs = this_player()->wiz_present(str,this_player());
if(!sizeof(obs))
{
notify_fail("Could not find "+str+".\n");
return 0;
}
if(sizeof(obs) > 1)
tell_object(ob,"Only doing the first object...\n");
itm = obs[0];
if(itm->query_npc())
{
DEATHTRACK->info_npc(itm);
return 1;
}
if(!OBTRACK->query_info_perms(geteuid(ob),itm))
{
notify_fail("You do not have permission to info this item.\n");
return 0;
}
if(itm->query_item_container())
{
OBTRACK->info_item_container(itm);
return 1;
}
if(itm->query_weapon())
{
OBTRACK->info_weapon(itm);
return 1;
}
if(itm->query_armour())
{
OBTRACK->info_armour(itm);
return 1;
}
return 1;
}