/* @verb capsule:seal this none none @verb capsule:open this none none @verb capsule:about this none none @verb capsule:tell this none this @verb capsule:"@veil @unveil" this none none @property capsule:about {} @property capsule:noises {} @property capsule:sensitivity 10 */ @program #11511:@veil if (! (caller in this.committee) ) player:tell("Sorry, but you have to be in the committee to do that."); return; endif; if (this.veiled) message = "The lights in the room dim and a spotlight centres on the shrouded form. %N walks calmly over to the mysterious object, and as a fanfare of trumpets swells from the room's loudspeakers, %s slowly draws back the velvet cover. As the strong light hits the shape's chromed surface it is reflected into your eyes, blinding you momentarily. As your eyes become more accustomed to the new brilliance that faces you, you begin to make out the shape of %T."; player:tell("You unveil the capsule."); this.veiled = 0; else message = "%N shuffles over to the capsule carying a large red velvet shroud. %S shakes the shroud sending a flurry of dust into the air and throws it over the capsule."; player:tell("You veil the capsule."); this.veiled = 1; endif; message = $string_utils:pronoun_sub(message); this.location:announce_all_but({ this }, message); . @program #11511:seal "...duration in seconds. 120 == 2 minutes, 31536000 = 1 year..."; duration = 120; if (this.sealed) player:tell("The capsule has already been sealed!"); elseif (this.opened) player:tell("You must close the capsule before you can seal it."); else if ($command_utils:yes_or_no("Are you SURE you want to do this?")) this.sealed = 1; this.sealed_till = time() + duration; "...remember to mail people when you need to be opened again..."; this.send = 0; player:tell("The capsule is now sealed."); message = "%N seals the capsule."; message = $string_utils:pronoun_sub(message); this.location:announce_all_but({this, player}, message); else player:tell("The capsule has not been sealed."); endif; endif; . @program capsule:open if (!this.sealed) pass(@args); elseif (time() > this.sealed_till) pass(@args); this.sealed = 0; else player:tell("I am sorry, but it isn't time to open the capsule."); this.location:announce_all_but({this, player}, player.name, " tries to open the time capsule but to no avail."); endif . @program #11511:tell pass(@args); if ((this.sealed) && (random(this.sensitivity) == 1)) if (len = length(this.noises)) fork (3) this.location:announce_all_but({ this }, this.noises[random(len)]); endfork; endif; endif; if (this.send == 0) if (time() > this.sealed_till) mess = "The " + tostr(this.name) + " is ready to be opened. You can find it at " + tostr(this.location) + "."; for people in ({ @this.forward, @this.committee }) this.location:announce_all_but({ this }, "Sending mail to ", people:title(), " (", tostr(people), ")."); endfor this.send = 1; endif endif . @program capsule:about "...tell the player about this object..."; about = this.about; if (typeof(about) != LIST) about = { about }; endif; committee_names = {}; for member in (this.committee) if (!member.wizard) committee_names = { @committee_names, member:title() }; endif; endfor; player:tell_lines(this.about); player:tell(""); player:tell_lines({ "A Time Capsule Commitee has been set up to oversee the acceptance of artifacts to be placed in the time capsule. The members of the committee have no 'real' powers, they are just there to provide advice and assistance to people who wish to design an artefact. The current members of the commitee are "+$string_utils:english_list(committee_names)+"." } ); player:tell(""); player:tell_lines(this.rules); player:tell("----"); . ;#11511.about = { "The time capsule is a sealable container. Once sealed the capsule can not be opened for a year. The capsule's :enterfunc and :exitfunc have been coded to prevent objects entering or leaving the capsule once it is sealed. The objects inside the capsule have been protected so that, as much as is possible, their properties and verbs are hidden from view.", "", "The capsule was designed by Keelah and Networker." } ;#11511.rules = { "The Time Capsule Committee has set out the following rules to which artifact designers must adhere for their objects to be placed in the time capsule:", "1. Objects donated should not rely on any object that might not be here in a year.", "2. Objects must have a detailed description.", "3. Objects must have an :about verb that tells what the object does and how to use it.", "4. All verbs on the object must be documented.", "5. Objects must be approved by the Time Capsule Committee.", "6. Objects must be turned in for approval before January 25, 1993.", "7. Objects approved to be put in the time capsule, the owner will lose ownership of the object, thus letting the owner get back that quota. Therefore, the person who makes the objects needs to put his/her name in the :about.", "8. Any questions? Mail Time Capsule Committe Co-Chairpersons Keelah or Networker." } ;#11511.description = "The time capsule is a steel cryogenic tube about 6 feet in length. Thick frost covers the lid and a misty vapor pours from the capsule's sides. There is a large LED display set into the capsule's lid, and you are just able to make out a line of red figures through the frost." ;#11511.noises = { "You hear a faint scratching noise coming from within the capsule.", "The motor of the capsule's coolant pump purrs quietly.", "You hear a soft voice whisper your name, it seems to be coming from inside the capsule.", "A sheet of frost falls from the side of the capsule, shattering on the floor with a 'CRUNCH!'.", "The capsule suddenly gives out a loud 'BANG!!'.", "The capsule's coolant motor splutters momentarily and then settles back down to it's normal rythmic purr." }