/**
* This is the tent erected from the wizards' tent hats.
*
* @author Gruper
* @started March 97
*/
inherit "/std/room/basic_room";
void setup();
void set_locations( object o );
void dest_me();
string query_quit_handler();
int inside_tent();
int trap_tell( string words, object thing, int silent );
object outside;
/** @ignore */
void setup() {
set_short( "pointy tent" );
set_room_size( 3 );
set_light( 50 );
add_property( "no teleport", 1 );
add_property( "inside_tent", 1 );
set_long( "This tent seems to have been constructed by pulling "
"four telescopic legs from a wizard's hat, turning it inside-out, "
"and then rolling down flaps of oiled canvas from the brim. "
"A small magical light zips around near the ceiling, bathing the "
"room with its cheery, blueish glow. A small sign is sewn to the "
"wall.\n" );
add_item( "small magical light", "The small light emits a cheerful, "
"blue glow as it zips 'round and 'round near the ceiling.\n" );
add_item( ({ "canvas", "walls" }), "The walls are made of oiled "
"canvas.\n" );
add_item( "telescopic legs", "The four legs have literally been "
"pulled out of a hat. Without them, you'd just be standing "
"inside a very large bag.\n" );
add_item( ({ "tent flap", "door" }), "The tent flap keeps foul "
"weather and irritating insects out.\n" );
add_sign("The sign has been stitched to the wall. It appears to "
"contain instructions for how to handle the tent.",
"Ynstructionnes:\n"
"===============\n"
"Wenne the Hatte is nothing butte a Hatte, thou canst\n"
"\"erect tent\", and wenne thou hast tired of the Tent,\n"
"thou canst \"collapse tent\", but make sure thou art\n "
"Outside yt, or be Trapped!\n");
} /* setup() */
/** @ignore */
string query_quit_handler() {
if( outside )
return file_name( outside );
else
return 0;
}
/** @ignore */
void set_locations( object o ){
outside = o;
}
/** @ignore */
void dest_me() {
object *things;
things = all_inventory( this_object() );
tell_room( this_object(), "Someone collapses the tent and you "
"tumble outside.\n" );
if( sizeof( things ) > 1 ){
tell_object( this_player(), query_multiple_short( things ) +
" tumble out from the collapsing tent.\n" );
tell_room( outside, query_multiple_short( things ) + " tumble "
"out from the collapsing tent.\n", this_player() );
} else if( sizeof( things ) ){
tell_object( this_player(), query_multiple_short( things ) +
" tumbles out from the collapsing tent.\n" );
tell_room( outside, query_multiple_short( things ) + " tumbles "
"out from the collapsing tent.\n", this_player() );
}
things->move( outside );
::dest_me();
}
/** @ignore */
int trap_tell( string words, object thing, int silent ) {
if( function_exists( "trap_tell", outside ) )
return outside->trap_tell( words, thing, silent );
else
return "/cmds/living/t_ell"->cmd( words, thing, silent );
}
/** @ignore */
int trap_cast( string command ) {
string *words;
words = explode( command, " " );
if( sizeof( words ) > 0 && words[0] == "cast" ) {
/* Trap the command */
write( "There's not enough room to cast spells in here!\n" );
say( this_player()->one_short() +" looks disappointed.\n" );
return 1;
} else {
/* Don't trap the command */
return 0;
}
}
/** @ignore */
void init() {
::init();
this_player()->command_override( (: trap_cast :) );
} /* init() */
/** @ignore */
mixed *stats() {
return ::stats() + ({ ({ "outside", outside }) });
} /* stats() */
// Make sure room isn't unloaded
/** @ignore */
int query_keep_room_loaded() {
return 1;
}
/** @ignore */
int dont_free() {
return 1;
}
/** @ignore */
int clean_up() {
return 1;
}