/**
* This is the effect skelton docs. This effect
* has a classification of "body.sleep.tranquil".
* <p>
* Describe the arguments in here.
* <p>
* This effect has a shadow associated with it.
* @classification body.sleep.tranquil
* @see help::effects
*/
#include "path.h"
#include <effect.h>
/** @ignore yes */
void beginning( object player, int time ) {
tell_object( player, "You feel very sleepy.\n" );
tell_room( ENV( player ), CAP( (string)player->the_short() ) +
" nods "+ (string)player->query_possessive() +" head sleepily.\n",
player );
player->submit_ee( "go_to_sleep", ({ 20, 20 }), EE_ONCE );
player->submit_ee( 0, time, EE_REMOVE );
} /* beginning() */
void restart( object player ) {
player->add_extra_look( TO );
} /* restart() */
/** @ignore yes */
int merge_effect( object player, int time1, int time2 ) {
player->submit_ee( 0, time1 + time2 - (int)player->expected_tt(),
EE_REMOVE );
return time1 + time2;
} /* merge_effect() */
/** @ignore yes */
void end( object player, int time ) {
if ( player->query_property( PASSED_OUT ) ) {
tell_object( player, "You wake up feeling refreshed.\n" );
tell_room( ENV( player ), CAP( (string)player->
the_short() ) +" wakes up.\n", player );
player->remove_property( PASSED_OUT );
player->remove_extra_look( TO );
} else
tell_object( player, "You don't feel so tired anymore.\n" );
} /* end() */
void go_to_sleep( object player ) {
tell_object( player, "You can't keep your eyes open anymore. You go "+
"to sleep.\n" );
tell_room( ENV( player ), CAP( (string)player->the_short() ) +
" gives a little sigh, and goes to sleep.\n", player );
player->add_property( PASSED_OUT, 1 );
player->add_extra_look( TO );
player->submit_ee( "make_noises", ({ 20, 20 }), EE_CONTINUOUS );
} /* go_to_sleep() */
void make_noises( object player ) {
switch ( random( 3 ) ) {
case 0 :
tell_room( ENV( player ), CAP( (string)player->
the_short() ) +" snores gently.\n", player );
break;
case 1 :
tell_room( ENV( player ), CAP( (string)player->
the_short() ) +" snuffles in "+ (string)player->
query_possessive() +" sleep.\n", player );
break;
default :
tell_object( player, "You dream of chasing "+
add_a( ({ "giant carrot", "rabid whelk", "large "+
"herring", "plate of spinach", "building on wheels",
"small hedgehog", "pair of trousers" })[ random( 7 ) ] ) +
" through a field of "+ ({ "lobsters", "flamingoes",
"blue daffodils", "people wearing straw hats",
"waving sheep", "cows standing upright", "corn "+
"with large, pink ears" })[ random( 7 ) ] +".\n" );
tell_room( ENV( player ), CAP( (string)player->
the_short() ) +" moves a bit in "+ (string)player->
query_possessive() +" sleep.\n", player );
}
player->adjust_hp( 10 + random( 10 ) );
} /* make_noises() */
/** @ignore yes */
string query_classification() { return "body.sleep.tranquil"; }
/** @ignore yes */
string query_shadow_ob() { return SHADOWS +"tranquil_sleep"; }
string extra_look( object player ) {
return CAP( player->HE ) +" is fast asleep.\n";
} /* extra_look() */