inherit NPC_OBJ;
int eaten;
string my_owner;
void check_env();
void setup() {
set_name("lemon");
set_short("muffled lemon");
set_long( "The lemon bounces around, dancing wildly as it tries "
"desperately to sing, but there appears to be a bit of "
"rind in its mouth, muffling the words. It seems to be "
"trying to sing quest solutions to you.\n");
basic_setup("lemon", 1, 0);
} /* setup() */
void set_owner( object thing ) {
my_owner = (string)thing->query_name();
load_chat(30, ({
1, "@dance",
1, "@waltz",
1, "@bounce ex",
1, "@sing about quests",
1, "@sing wyrm sword... forest... hair...",
1, "@sing the Womble's brooch is hidden in the hints room",
1, "@caper",
1, "@think about forests",
1, "@wonder about how to complete those tricky quests",
1, (: do_command("whisper "+my_owner+
" Remember to whittle.") :),
1, (: do_command("whisper "+my_owner+
" Don't let mushrooms grow on your teeth.") :),
}));
check_env();
} /* set_owner() */
void init() {
::init();
if (my_owner && !find_player(my_owner)) {
command("cry");
command("'Woe is me! Wherefore art thou, "+my_owner+"?");
eaten = 1;
call_out("dest_me", 8);
}
this_player()->add_command("eat", this_object());
} /* init() */
int do_eat() {
if ((string)this_player()->query_name() != my_owner || eaten)
return 0;
this_player()->add_succeeded_mess(this_object(),
"$D zips madly around the room avoiding $N "
"as $r attempt to rip it's skin off and eat it.\n",
({ }) );
do_command( "unfollow "+ my_owner );
eaten = 1;
call_out("do_the_eat", 1);
call_out("dest_me", 8);
return 1;
} /* do_eat() */
void do_the_eat() {
do_command("wonder why people are so unkind");
do_command("sigh");
do_command(":slowly melts into the floor.");
} /* do_the_eat() */
int attack_by(object ob) {
ob->stop_fight(this_object());
tell_object(ob, "The lemon is a terrible pacifist.\n");
} /* attack_by() */
int attack_ob(object ob) {
ob->stop_fight(this_object());
tell_object(ob, "The lemon is a terrible pacifist.\n");
} /* attack_by() */
void event_exit(object ob) {
if (!stringp(my_owner)) return ;
if (ob == find_player(my_owner)) {
call_out("check_env", 0);
}
} /* event_exit() */
void event_dest_me(object ob) {
call_out("check_env", 0);
} /* check_env() */
void check_env() {
if (!stringp(my_owner) || !find_player(my_owner)) {
command("cry");
eaten = 1;
call_out("dest_me", 2);
return ;
}
if ( environment() != environment( find_player( my_owner ) ) ) {
move( environment( find_player( my_owner ) ),
"$N appear$s with a song.", "$N disappear$s with a song." );
command( "follow "+ my_owner );
}
} /* check_env() */
string query_owner() { return my_owner; }
void dest_me() {
if ( environment() )
all_inventory()->move( environment() );
::dest_me();
} /* dest_me() */