// _ask.c
// Lets a player ask a monster about a subject. If the monster has set
// the inquiry property to a mapping, then if that mapping has an entry under
// the subject, then the monster will say that string.
// Written by Pyrosius@TMI-2
// He and Mobydick integrated it into the lib on 8-18-93.
// Added help. Lucas@Avatar (5May96)
#include <mudlib.h>
inherit DAEMON;
int cmd_ask(string str) {
string mon_name, subject;
object mon_obj;
mapping cmd_map;
if (!str) {
notify_fail("Ask <monster> about <what>?\n");
return 0;
}
if (sscanf(str, "%s about %s", mon_name, subject) != 2) {
notify_fail("Ask <monster> about <what>?\n");
return 0;
}
mon_name = lower_case(mon_name);
mon_obj = find_living(mon_name);
if (!present(mon_name, environment(this_player()))) {
notify_fail(capitalize(mon_name) + " is nowhere to be found.\n");
return 0;
}
if (!mon_obj) {
notify_fail("Do you like talking to inanimate objects?\n");
return 0;
}
if (mon_obj->query("user")) {
write ("You ask "+capitalize(mon_name)+ " about "+subject+".\n") ;
tell_object(mon_obj,this_player()->query("cap_name")+" asks you: Know anything about "+subject+"?\n") ;
say (this_player()->query("cap_name")+" asks "+capitalize(mon_name)+": Know anything about "+subject+"?\n", mon_obj) ;
return 1 ;
}
cmd_map = ([ ]);
cmd_map = mon_obj-> query("inquiry");
if (sizeof(cmd_map)==0) {
write (capitalize(mon_name)+" looks at you blankly.\n") ;
return 1 ;
}
if (undefinedp(cmd_map[subject])) {
tell_room(environment(this_player()), this_player()-> query("cap_name") +
" asks " + capitalize(mon_name) + " about " + subject + ".\n",
this_player()) ;
tell_room(environment(this_player()), capitalize(mon_name) + " says: " +
"I don't know about that.\n");
return 1;
}
else
tell_room(environment(this_player()), this_player()-> query("cap_name") +
" asks " + capitalize(mon_name) + " about " + subject + ".\n",
this_player()) ;
tell_room(environment(this_player()), capitalize(mon_name) + " says: " +
cmd_map[subject] + "\n");
return 1;
}
string help()
{
return(@HELP
Syntax: ask <monster> about <question>
This command allows you to ask a living object a question. If the
objects knows anything about the question, it will reply with an
answer.
HELP
);
}