/* -*- LPC -*- */
/*
* $Locker: $
* $Id: flea_cure.c,v 1.2 1999/10/24 16:12:47 gruper Exp $
* $Log: flea_cure.c,v $
* Revision 1.2 1999/10/24 16:12:47 gruper
* Did I change this one?
*
* Revision 1.1 1998/01/06 04:10:22 ceres
* Initial revision
*
*/
/**
* This is the effect skelton docs. This effect
* has a classification of "body.smell.insecticide".
* <p>
* Describe the arguments in here.
* @classification body.smell.insecticide
* @see help::effects
*/
/*
** flea_cure - for curing the flea effect.
**
** Written by: Jeremy - 6-Oct-95
**
** Deutha added smell_string(), capitalised Grflx and put a "u" in odour :)
*/
#include <effect.h>
int infested;
int cleanse( object thing, int bonus ) {
int i, flag, *effnums;
class effect *effs;
if ( !thing )
return 0;
if ( !living( thing ) )
return 0;
effnums = (int *)thing->effects_matching(
"disease.parasite.external.flea");
if ( !sizeof( effnums ) )
return 0;
effs = (class effect *)thing->query_effs();
for ( i = sizeof( effnums ) - 1; i >= 0; i-- )
if ( effs[ effnums[ i ] ]->ob_name->test_remove( thing,
effs[ effnums[ i ] ]->arg, effnums[ i ], bonus ) ) {
thing->delete_effect( effnums[ i ] );
flag = 1;
}
infested = flag;
return flag;
} /* cleanse() */
/** @ignore yes */
void beginning( object player, int time ) {
player->submit_ee( "make_smell", ({ 20, 30 }), EE_CONTINUOUS );
player->submit_ee( "kill_flea", ({ 30, 40 }), EE_CONTINUOUS );
call_out("cleanse", 0, player, time/10);
//cleanse(player, time/10);
player->submit_ee( 0, time, EE_REMOVE );
} /* beginning() */
/** @ignore yes */
int merge_effect( object player, int time1, int time2 ) {
player->submit_ee( 0, time1 + time2 - (int)player->expected_tt(),
EE_REMOVE );
if (!infested)
call_out("cleanse", 0, player, (time1+time2)/10);
return time1 + time2;
} /* merge_effect() */
/** @ignore yes */
void end( object player, int time ) {
tell_object( player, "The odd odour is gone now.\n" );
} /* end() */
void kill_flea( object player ) {
if (infested && random(2)) {
tell_object( player, "You hear a faint scream and see a small dot " +
"fall past your eyes.\n" );
tell_room( environment( player ), "You see a tiny speck leap from " +
(string)player->short() + "'s head, screaming pitifully.\n",
player );
}
} /* kill_flea() */
void make_smell( object player ) {
tell_object( player, "You notice a strange odour, like wet Grflx "
"and rotting cabbage, in the air.\n" );
tell_room( environment( player ), "A smell reminiscent of a wet Grflx "+
"and rotting cabbages seems to emanate from "+
(string)player->short() + ".\n", player );
} /* make_smell() */
/** @ignore yes */
string query_classification() { return "body.smell.insecticide"; }
string smell_string( object player, int time ) {
return "the odd odour of wet Grflx and rotting cabbage";
} /* smell_string() */