/* This file is an example of the way responsive_monster can be used.
The most important thing is the mapping respond_to_with.
The index of r_t_w should be an array of element,
element can be a string,
element can be an array of strings
An element of the mapping is matched with the string a player
says if:
-the string the player said contains the strings of the array
(the index of r_t_w) in the SAME order. Also, if an array of
strings is given instead of a string, the test will be
succesful if one of the elements of that array appeared at
the right place. (readmarks are ignored)
For Example:
Nimmox says: I demand, that you give me attention !
matched :
({ "demand","attention" })
or
({ "demand", ({"attention","help" }) })
But doesnt match :
({ "attention","demand" });
If one of the indices of the mapping matches a string the player said,
the monster will respond as is defined in the field of the mapping corres-
ponding with the matched index.
This field can be :
A string : The string will be sent to the room the monster is in
(with a small delay, to cause no weird effects
Like the monster responding for the players sees
his/her/it say echo)
A string with a "#func" format. : the function func will be called with
this_player() (the player that did the say)
as argument.
An array of strings: One of the strings is randomly selected, and treated
as above.
Also you can set_stop_responding(1) to stop the monster from responding
(you might want to tell a stroy uninterrupted)
set_stop_responding(0) to allow the monster to respond again.
Nimmox (January 1993)
*/
inherit "/w/pinkfish/tmp/response_mon";
object weapc;
string *tale;
void setup() {
set_name("guard");
add_adjective(({ "big", "gate" }));
set_short("Big gate guard");
set_long("This is one of the common guards of Amber. "+
"He looks quite big, maybe you shouldn't upset him...\n");
set_race("human");
set_class("fighter");
set_level(45);
set_al(250);
set_gender(1);
tale = ({ "There once was a frog with 5 legs.\n",
"This frog was very very unhappy.\n",
"All other frogs made fun of him.\n",
"And no lady frog wanted to marry him.\n",
"One day, a womble appeared, and bit one of his legs off.\n",
"Since then the frog had 4 legs, and lived happily ever after.\n"
});
set_respond_to_with(([ ({ "help", "me" }) : "'I can't help you." ,
({ ({ "hi","hello","greetings" }) }) :
({ "'Hello $hcname$.",
"emote salutes you." }),
({ ({ "remove","unwield","unhold" }),
({ "axe","weapon" }) }) :
"#remov",
({ ({ "wield","hold" }),
({ "axe","weapon" }) }) :
"#wiel",
({ "tell" , "story" }) :
"#story" ]));
weapc = clone_object("/obj/weapons/axe.wep");
weapc->move(this_object());
do_equip();
} /* setup() */
int remov() {
init_command("unhold axe");
} /* remov() */
int wiel() {
init_command("hold axe");
} /* wiel() */
void story(object tpl) {
command("'Very well, "+tpl->query_cap_name()+ " I will tell you a story.\n");
set_stop_responding(1);
call_out("tell_story",2,0);
} /* story() */
void tell_story(int arg) {
remove_call_out("tell_story");
if (arg == sizeof(tale)) {
set_stop_responding(0);
return ;
}
command("'"+tale[arg]);
call_out("tell_story",2,arg+1);
} /* tell_story() */