int valid_snoop(object snooper, object snoopee, object pobj) {
if (snooper == snoopee) {
tell_object(snooper, "You can't snoop yourself.\n");
return 0;
}
if (snoopee && query_snoop(snoopee)) {
tell_object(snooper,
snoopee->query_cap_name()+" is already being snooped.\n");
return 0;
}
if (snooper->query_snoopee()) {
if (!snooper->query_property("quiet snoop")) {
event(users(), snooper->query_cap_name()+" stops qsnooping "+
snooper->query_snoopee()->query_name(), "snoop");
tell_object((object)snooper->query_snoopee(),
snooper->query_cap_name()+" stops snooping you.\n");
} else {
event(users(), snooper->query_cap_name()+" stops snooping "+
snooper->query_snoopee()->query_name(), "snoop");
snooper->remove_property("quiet snoop");
}
snooper->set_snoopee(0);
}
if (!snoopee) {
return 1;
}
if (query_snoop(snoopee))
return 0;
if (!snooper->query_creator())
return 0;
if (pobj == this_object()) {
event(users(), snooper->query_cap_name()+" starts qsnooping "+
snoopee->query_name(), "snoop");
return 1;
}
if (query_verb() == "qsnoop" && query_lord(geteuid(snooper)))
{
tell_object(snooper, "You are quiet snooping "+
snoopee->query_cap_name()+"\n");
snooper->add_property("quiet snoop", 1);
}
else
{
tell_object(snoopee, "You are being snooped by "+
snooper->query_cap_name()+".\n");
tell_object(snooper, "You are snooping "+
snoopee->query_cap_name()+"\n");
}
// Radix...
if(snooper->query_invis() < 2)
{
log_file("SNOOP",ctime(time()) + " " +
(string)snooper->query_cap_name() + " " +
query_verb() + "s " + (string) snoopee-> query_cap_name()+ ".\n");
snooper->set_snoopee(snoopee);
tell_object(snooper, "Please share with us the reason why you are " +
"snooping.\n: ");
input_to("snoop_reason");
event(users(), snooper->query_cap_name()+" starts snooping "+
snoopee->query_name(), "snoop");
}
snoop_list[snooper] = snoopee;
return 1;
} /* valid_snoop() */
void snoop_reason(string str) {
object snooper;
snooper = this_player();
if (this_player(1) != this_player()) {
write("Can't force people...\n");
return ;
}
/* if (!high_programmer(geteuid(this_player()))) {
write("Not a high programmer.\n");
return ;
} */
if (!snoop_list[snooper]) {
write("The snoopee has just logged out.\n");
return ;
}
if(!str) {
write("Snoop canceled.\n");
log_file("SNOOP", " Chickened out.\n");
return;
}
log_file("SNOOP", " Reason: " + str + "\n");
if (snoop(snooper, snoop_list[snooper]))
write("Snoop suceeded,\n");
else
write("Snoop failed.\n");
} /* snoop_reason() */