/*
* This is an effect to add vomit to rooms.
* arguments are given in the form ({ duration , pools })
* duration = length of time
* pools = number of pools of vomit to be added.
* ( should be 1 or more )
*/
#include <effect.h>
void pool_descripts( object room , int pools );
/** @ignore */
string query_classification () { return "room.vomit"; }
/** @ignore */
void beginning ( object room, int *args )
{
int duration, pools ;
duration = args [ 0 ] ;
pools = args [ 1 ] ;
pool_descripts ( room , pools ) ;
room -> submit_ee ( 0 , duration , EE_REMOVE ) ;
} /* beginning */
void pool_descripts ( object room , int pools )
{
room -> remove_item( "pool" );
room -> add_item( ({ "pool" , "vomit" , "puddle" }) , "There " +
( ( pools == 1 ) ? "is a pool" : "are " + query_num( pools , 10 ) +
" pools" ) + " of vomit decorating the place. Inevitably there "
"are little bits of carrot in it, and it would also be a good "
"idea to watch one's step." ) ;
room->add_extra_look( this_object() );
} /* pool_descripts */
/** @ignore */
int *merge_effect( object room , int *new_args , int *old_args )
{
int duration , pools ;
duration = new_args [ 0 ] + room -> expected_tt() ;
pools = new_args [ 1 ] + old_args [ 1 ] ;
pool_descripts( room , pools ) ;
return ({ duration , pools }) ;
} /* merge_effect*/
/** @ignore */
void end( object room, mixed names )
{
room -> remove_item ( "pool" );
room -> remove_extra_look( this_object() );
} /* end() */
string extra_look( object room )
{
int *enums;
int pools;
string look, number;
enums = room -> effects_matching( query_classification() );
if( !sizeof( enums ) ) return "";
pools = ( room -> arg_of( enums[0] ) ) [ 1 ] ;
number = query_num( pools , 10 );
look = "There " + ( ( pools == 1 ) ? ( "is a pool " ) : ( "are " +
number + " pools ") ) + "of vomit here.\n" ;
return look;
} /* extra_look() */