/* -*- LPC -*- */
/*
* $Locker: $
* $Id: flea_infestation.c,v 1.4 2000/01/07 22:17:54 ceres Exp $
* $Log: flea_infestation.c,v $
* Revision 1.4 2000/01/07 22:17:54 ceres
* Added a chance that an NPC will stop having fleas.
*
* Revision 1.3 1998/04/21 02:15:24 terano
* Changed % infection per EE from 15 to 2..
*
* Revision 1.2 1998/04/20 18:20:03 hobbes
* changed set_infection_chance() from 1 to 15
*
* Revision 1.1 1998/01/06 04:08:27 ceres
* Initial revision
*
*/
/**
* This is the effect skelton docs. This effect
* has a classification of "misc.curse.smurf".
* <p>
* Describe the arguments in here.
* @classification misc.curse.smurf
* @see help::effects
*/
/* Flea infestation, use 10000 as standard severity -*- LPC -*-
*/
#include <effect.h>
#include <disease.h>
inherit SIMPLE_DISEASE;
void setup() {
set_name( "Fleas" );
set_classification( "disease.parasite.external.flea" );
set_infection_chance( 2 );
/* Something can catch fleas if it's alive, and */
set_infection_check( (: living( $1 ) &&
/* is an NPC that is not unique or */
( ( !userp( $1 ) && !$1->query_property( "unique" ) ) ||
/* is a mature player, and is not dead. */
$1->query_mature() ) && !$1->query_property( "dead" ) :) );
} /* setup() */
int disease_start( object player, int arg, int ) {
string race_ob;
race_ob = (string)player->query_race_ob();
/* Trolls can't have fleas. */
if ( ( (string)race_ob->query_name() == "troll" ) ||
player->query_property( "no fleas" ) ) {
player->submit_ee( 0, 0, EE_REMOVE );
return 0;
}
return arg;
} /* disease_start() */
void disease_action( object player, int, int ) {
switch( random( 14 ) ) {
case 0 .. 3 :
player->remove_hide_invis( "hiding" );
tell_object( player, "Something itches. You scratch yourself.\n" );
tell_room( environment( player ), (string)player->one_short() +
" scratches "+ (string)player->query_objective() +"self.\n",
player );
break;
case 4 .. 7 :
player->remove_hide_invis( "hiding" );
tell_object( player, "Ouch! Something bit you!\n" );
tell_room( environment( player ), (string)player->one_short() +
" starts as if bitten.\n", player );
/* Should this use ac? */
player->adjust_hp( -10 - random( 10 ) );
break;
case 8 .. 11 :
tell_object( player, "You notice a small red welt on your skin.\n" );
break;
default:
}
if(!random(100) && !userp(player))
player->submit_ee(0, 0, EE_REMOVE);
} /* disease_action( */
int test_remove( object player, int arg, int enum, int bonus ) {
log_file( "OLD_CURE", file_name( previous_object() ) +" "+
file_name( this_object() ) +"\n" );
if ( arg + bonus < 30 ) {
player->set_arg_of( enum, arg + bonus );
return 0;
}
return 1;
} /* test_remove() */