Here is a sample cryogenic chamber for the banish code previously posted.
It uses the standard room system developed at the Shattered World, but it
should be no trouble to port it to your local system. The code is fairly
self-explanatory.

---------------------------- cut here --------------------------
/*
	Cryogenic chamber

	Developed on the Shattered World LPmud by Zik / Billy
*/

/* hey, who needs comments in code this simple anyway? - Zik */

inherit "room/room";

#include "gender.h"

int AskMode;
int GameDays;
object Popsicle;


reset(NotFirst)
{
::reset(NotFirst);
if (!NotFirst)
    {
    int GameHourMins;
    GameHourMins = "obj/game_clock"->convert_hours_minutes(0,24);
    AskMode = 0;
    dest_dir = ({"room/city/cr3", "south"});
    short_desc = "The cryogenic chamber";
    long_desc = "You see row upon row of frozen bodies in cryogenic chambers behind neat little " +
    		"covers made of ice. In the corner sits an Eskimo with a heavy " +
    		"fur coat. Frost hangs from the corners of the " +
    		"chambers. So this is where people go when they want " +
    		"some time off from the MUD! All you have to do is enter " +
    		"\"freeze <number> days\" and you won't be able to log on " +
    		"for that many game days. There are " + GameHourMins + 
    		" Earth minutes in a game day. " +
    		"If you want to see who's here already, try examining the " +
    		"chambers. Very handy for exam time!\n";
    items = ({"eskimo", "He's a big burly chap - or maybe that's just the fur " +
    	"coat he's wearing. Without a doubt he's the only person they could " +
    	"get to work in this place. Too damn cold for anyone else",
    	"chamber", "", "chambers", ""});
    set_light(1);
    }
}


init()
{
::init();
add_action("freeze", "freeze");
add_action("checkme", "yes");
add_action("copout", "no");
}


long(str)
{
if (str == "chamber" || str == "chambers")
    {
    array Banished;
    int Count;
    write("Each cryogenic chamber is about the size and " +
	"shape of a coffin - funny how you keep thinking about death in this " +
	"place... They all have transparent ice lids so you can see the " +
	"dead, um, I mean \"very chilly\" people inside. Each chamber has a " +
	"name and a time scrawled on a small blackboard on its base. Looking " +
	"around, this is what you see:\n");
    Banished = "std/banish"->banished_list();
    for (Count = 0; Count < sizeof(Banished); Count += 2)
        {
        if (Banished[Count+1] > 0)
            write(capitalize(Banished[Count]) + " frozen for " +
            	Banished[Count+1] + " more game days.\n");
        }
    return 1;
    }
::long(str);
}


freeze(str)
{
string Surplus;
int EarthDays;

if (str && sscanf(str, "%d%s", GameDays, Surplus) >= 1 && GameDays > 0)
    {
    if (AskMode && Popsicle != this_player())
        {
        write("Can't you see that the Eskimo is busy with " +
            Popsicle->query_name() + "? Try again later.\n");
        return 1;
        }
    EarthDays = (GameDays * "obj/game_clock"->convert_hours_minutes(0,1) + 30) / 60;
    write("The Eskimo says: So you want to be frozen for " + GameDays +
          " game days. That's about " + EarthDays + " days where you come from. " +
          " Are you really really sure you want to be a popsicle? (type 'yes' or " +
          "'no')\n");
    AskMode = 1;
    Popsicle = this_player();
    return 1;
    }
}


checkme()
{
if (AskMode && this_player() == Popsicle)
    {
    write("Please enter your password: ");
    input_to("checkme2", 1);
    return 1;
    }
}


checkme2(Pass)
{
if (crypt(Pass, Popsicle->query_password()) == Popsicle->query_password())
    {
    tell_object(Popsicle, "\n");
    freezeme();
    }
else
    {
    tell_object(Popsicle, "\nNaughty, naughty!\n");
    AskMode = 0;
    return 1;
    }
}


freezeme()
{
if (AskMode && this_player() == Popsicle)
    {
    string Name;
    string Sex;
    string SexObject;
    Name = Popsicle->query_name();
    Sex = subjective(Popsicle);
    SexObject = objective(Popsicle);
    tell_object(Popsicle, "The Eskimo says: Thanks; I love doing this!\n" +
    	"He guides you across to an empty chamber and you lie down. " +
    	"It's bloody freezing on this slab! As the ice cover closes " +
    	"over your face you begin to have second thoughts. Geez it's " +
    	"cold! Then you suddenly find you can't move any more. And " +
    	"everything begins to go dark...\n");
    "std/banish"->add(Popsicle->query_real_name(), GameDays);
    Popsicle->quit();
    tell_room(this_object(), 
        "The Eskimo says to " + Name + ": Thanks; I love doing this!\n" +
    	"He guides " + SexObject + " across to an empty chamber and " + Sex + " lies down. " +
    	Name + " shivers. The ice cover closes and the Eskimo returns " +
    	"to his seat, smiling.\n");
    }
AskMode = 0;
return 1;
}


copout()
{
if (AskMode && this_player() == Popsicle)
    {
    write("The Eskimo nods to himself and says: I didn't think you'd have the " +
	"willpower to go through with it.\n");
    AskMode = 0;
    return 1;
    }
}


exit()
{
if (this_player() == Popsicle)
    AskMode = 0;
}


---------------------------- cut here --------------------------
Enjoy!


+---------------------------------------------------------------------+
|             Zik                   |  "`Bizarre' is the word boring  |
|       Michael Saleeba             |   people use to describe things |
|   zik@bruce.cs.monash.oz.au       |   too interesting for them."    |
+---------------------------------------------------------------------+

