inherit MONSTER;
inherit M_ACTIONS;
/* inherit M_TRIGGERS; */
int nFollow;
void
setup( void ) {
set_name( "bob" );
set_proper_name( "Bob" );
set_gender( 1 );
set_adj( "slave" );
set_in_room_desc( "Bob, Fudge's slave." );
set_long( "Bob is wearing a simple robe, and his head is always bent in humbleness." );
set_race( "human" );
/* add_pattern( "Fudge says: Bob, %s", "call parse $1" ); */
nFollow = call_out( "follow_fudge", 2 );
}
void
follow_fudge( void ) {
object *objs;
object fudge;
int i;
int nFudgeHere;
nFudgeHere = 0;
objs = query_environment()->query_inventory();
for( i = 0; i < sizeof( objs ); i++ ) {
if( objs[i]->query_id() == "fudge" ) {
nFudgeHere = 1;
}
}
if( nFudgeHere == 0 ) {
fudge = USER_D->find_user( "fudge" );
if( fudge == 0 ) {
/* Fudge has left the building */
remove_call_out( nFollow );
respond( "say It seems Fudge has left these planes." );
die();
destruct_object( this_object() );
return;
}
if( query_environment() != fudge->query_player()->query_environment() ) {
switch( random( 10 ) ) {
case 0: query_environment()->tell_room( 0, "Bob leaves."); break;
case 1: query_environment()->tell_room( 0, "Bob tries to follow his master."); break;
case 2: query_environment()->tell_room( 0, "Bob follows Fudge."); break;
case 3: query_environment()->tell_room( 0, "Bob disappears in a cloud of smoke."); break;
case 4: query_environment()->tell_room( 0, "Bob suddenly vanishes."); break;
case 5: query_environment()->tell_room( 0, "Bob fades out of view."); break;
case 6: query_environment()->tell_room( 0, "Bob runs off after Fudge."); break;
case 7: query_environment()->tell_room( 0, "Bob suddenly notices that Fudge has left, and runs off."); break;
case 8: query_environment()->tell_room( 0, "Bob fades into the shadows, and is gone."); break;
case 9: query_environment()->tell_room( 0, "Bob snaps his fingers, and is gone."); break;
}
move(fudge->query_player()->query_environment()->base_name());
switch( random( 10 ) ) {
case 0: query_environment()->tell_room( 0, "Bob follows the light of his life."); break;
case 1: query_environment()->tell_room( 0, "Bob follows in his masters footsteps."); break;
case 2: query_environment()->tell_room( 0, "Bob appears next to Fudge in a cloud of smoke."); break;
case 3: query_environment()->tell_room( 0, "Bob enters."); break;
case 4: query_environment()->tell_room( 0, "Bob appears."); break;
case 5: query_environment()->tell_room( 0, "Bob arrives shortly after Fudge."); break;
case 6: query_environment()->tell_room( 0, "Bob comes running, tying to keep up with Fudge."); break;
case 7: query_environment()->tell_room( 0, "A humble slave enters."); break;
case 8: query_environment()->tell_room( 0, "A humble person wearing a robe enters."); break;
case 9: query_environment()->tell_room( 0, "Bob catches up with Fudge."); break;
}
}
}
nFollow = call_out( "follow_fudge", 2 );
}
void
parse( string str ) {
if( str == "status" ) {
respond( "say There are " + sizeof( USER_D->query_users() ) + " players here." );
respond( "say Of these " + sizeof( USER_D->query_users() ) + " players, " + sizeof( USER_D->query_wizards() ) + " are wizards." );
} else {
respond( str );
}
/* respond("say Parsing: " + str ); */
/* respond("say I did not understand you, master.");
respond("bow fudge"); */
}
void
outside_message( string str ) {
str = ANSI_D->strip_colors( str );
str = str[..(strlen(str)-3)];
if( strlen( str ) > 18 ) {
if( str[..16] == "Fudge says: Bob, " ) {
parse( str[17..] );
}
}
}