/* -*- LPC -*- */
/*
* $Locker: $
* $Id: wet.c,v 1.2 1998/01/11 17:03:41 pinkfish Exp $
* $Log: wet.c,v $
* Revision 1.2 1998/01/11 17:03:41 pinkfish
* fixed_up_the_extra_look_stuff,_tomake_them_ignored.
*
* Revision 1.1 1998/01/06 04:19:27 ceres
* Initial revision
*
*/
/**
* This is the effect skelton docs. This effect
* has a classification of "object.wet".
* <p>
* Describe the arguments in here.
* @classification object.wet
* @see help::effects
*/
// The target object will now receive the "wet" adjective
// while it is wet - Fiona
#include <effect.h>
/** @ignore yes */
string query_classification() { return "object.wet"; }
/** @ignore yes */
void beginning( object thing, int amount, int id ) {
thing->submit_ee( "dry_off", ({ 30, 90 }), EE_CONTINUOUS );
thing->add_extra_look( this_object() );
// Now we can call a towel "a wet towel" or "a wet frog green towel" etc.
// It will not actually change its short but spells will now
// recognize the wetness effect.
thing->add_adjective("wet");
} /* beginning() */
/** @ignore yes */
int merge_effect( object thing, int old_amount, int new_amount, int id ) {
return old_amount + new_amount;
} /* merge_effect() */
/** @ignore yes */
void end( object thing, int amount, int id ) {
thing->remove_extra_look( this_object() );
// This thing is no longer wet. Remove the adjective
thing->remove_adjective("wet");
} /* end() */
void restart( object thing, int amount, int id ) {
thing->add_extra_look( this_object() );
} /* restart() */
void dry_off( object thing, int amount, int id ) {
amount -= 100 + amount / 10;
if ( amount > 0 )
thing->set_arg_of( (int)thing->sid_to_enum( id ), amount );
else
thing->submit_ee( 0, 0, EE_REMOVE );
} /* dry_off() */
/** @ignore yes */
string extra_look( object thing ) {
int *enums;
string wetness;
enums = (int *)thing->effects_matching( "object.wet" );
if ( !sizeof( enums ) )
return "";
switch ( (int)thing->arg_of( enums[ 0 ] ) / ( 1 +
(int)thing->query_weight() ) ) {
case 0 :
return "";
case 1 .. 5 :
wetness = "slightly wet";
break;
case 6 .. 10 :
wetness = "wet";
break;
case 11 .. 30 :
wetness = "very wet";
break;
case 31 .. 80 :
wetness = "sopping wet";
break;
default :
wetness = "absolutely soaking wet";
}
return "It is "+ wetness +".\n";
} /* extra_look() */