/**
* This effect places a poster in the room for a time.
* The poster will add an item to the room, which contains a
* description and a read message.
* <p>
* The argument is an array of four elements. These are time for
* poster to remain in room, the short desc., the long desc., and
* the message displayed when poster is read.
* <p>
* @classification other.poster
* @see help::effects
*/
#include <effect.h>
/**
* @ignore yes
*/
string query_classification() { return "other.poster"; }
/**
* @ignore yes
*/
void beginning( object room, mixed *info, int ) {
room->submit_ee( "vanish_mess", info[0], EE_REMOVE );
room->add_extra_look( this_object() );
room->add_item( info[1], ({ "long", info[2], "read", info[3] }) );
room->add_property( "DBM poster present", 1 );
} /* beginning() */
/**
* @ignore yes
*/
void vanish_mess( object room, mixed *info ) {
string mess;
room->submit_ee( 0, 0, EE_REMOVE );
if( room->query_property( "location" ) == "outside" ) {
switch( random( 3 ) ) {
case 0 :
mess = "The " + info[1] + " peels off and flutters away in a sudden "
"breeze.\n";
break;
case 1 :
mess = "A beggar tears the " + info[1] + " down and wanders away "
"with it, muttering about firestarters.\n";
break;
default :
mess = "A rat manages to rip the " + info[1] + " down and scamper "
"off with it.\n";
break;
}
tell_room( room, mess );
}
} /* vanish_mess() */
/**
* @ignore yes
*/
void merge_effect() { return; }
/**
* @ignore yes
*/
void end( object room, mixed *info ) {
room->remove_extra_look( this_object() );
room->remove_item( info[1] );
room->remove_property( "DBM poster present" );
} /* end() */
/**
* @ignore yes
*/
string extra_look() {
return "A colourful poster has been pasted here.\n";
} /* extra_look() */