! ------ Form (bottom) world #ifndef SKIP_FORM; Global FormStage; ! how close is the player to the end? Global FormStageLast; ! what did we last see of the cube? Global FormGoDir; ! which way is towards the end? Fake_Action HeardYes; Fake_Action HeardNo; [ FormEnter; FormStage = 0; FormStageLast = 0; FormGoDir = -1; give formsky ~absent; give formground ~absent; StartDaemon(formbluesphere); ]; [ FormExit; give formsky absent; remove formsky; give formground absent; remove formground; StopDaemon(formbluesphere); ]; Class FormRoomClass with description [; !print "[DEBUG] (Room ", self.number, ".) "; "You stand on a hard grey plane; it stretches without variation around you. \ The sky above swirls with distant mist."; ], initial [ ix; ix = FormGoDir; FormGoDir = random(81) / 10; while (FormGoDir < 0 || FormGoDir >= 8 || FormGoDir == ix) FormGoDir = random(8) - 1; !print "[DEBUG] Magic exit direction is ", (FormDirName) FormGoDir, ".^"; ], n_to [; return FormMotion(self, 0); ], ne_to [; return FormMotion(self, 1); ], e_to [; return FormMotion(self, 2); ], se_to [; return FormMotion(self, 3); ], s_to [; return FormMotion(self, 4); ], sw_to [; return FormMotion(self, 5); ], w_to [; return FormMotion(self, 6); ], nw_to [; return FormMotion(self, 7); ], u_to "There is no way up.", d_to "There is nowhere lower.", before [; Yes, No: "No one is listening."; ], has light; ! no outdoors; we have a private sky here. [ FormIsRoom obj; if (obj == nothing) rfalse; if (obj.n_to == FormRoom1.n_to) rtrue; else rfalse; ]; Nearby formsky "sky" with article "the", name "distant" "mist" "misty" "sky", found_in [; if (FormIsRoom(location) ~= 0 || location == FormRoomFinal) rtrue; else rfalse; ], description "Veils of mist move far, far above, a slow dance of shape and shadowy \ color. Where the pale folds thin, you can glimpse darkness, pierced with bright \ points. Stars, or moonlight on waves seen from the bottom of an invisible sea, \ or the lights of some dawn-tale city in the sky.", react_before [; Examine: if (noun == u_obj) <>; ], before [; Examine: rfalse; Search, LookBehind: <>; Smell: <>; ! smell nothing -- ie, air. Enter: <>; Listen: "You have a faint impression of vast uproar in the heavens, thinned to \ silence only by its distance."; default: "Whatever is above you is far out of reach."; ], has scenery absent; ! absent-switched Nearby formground "ground" with article "the", name "hard" "grey" "plane" "ground", found_in [; if (FormIsRoom(location) ~= 0 || location == FormRoomFinal) rtrue; else rfalse; ], description "The ground is an opaque and featureless grey.", react_before [; Examine, Touch: if (noun == d_obj) <<(action) self>>; ], before [; Examine: rfalse; Receive: <>; Enter: <>; Touch: "The ground is impenetrable and vaguely slick."; ], has scenery absent; ! absent-switched [ FormMotion startrm dir destrm lumpchange angle rightdir; lumpchange = 0; if (anywherein(lump, player) ~= 0) { rightdir = 0; angle = FormGoDir - dir; if (angle < 0) angle = angle + 8; if (angle >= 8) angle = angle - 8; switch (FormStage) { 0: if (angle == 0 or 1 or 7) rightdir = 1; 1: if (angle == 0) rightdir = 1; if (angle == 4) rightdir = -1; default: if (angle == 0) rightdir = 1; if (angle == 4 or 3 or 5) rightdir = -1; } if (rightdir > 0) { if (lump.number < 1) lump.number = 1; FormStage = FormStage + 1; if (FormStage == 5) { print "You walk for a while. The last trace of color fades from the \ cube; and you notice, a moment later, that no new objects are \ breaking the grey monotony.^"; return FormRoomFinal; } if (lump.number >= 2) lumpchange = FormStage; } if (rightdir < 0) { if (FormStage > 0) { FormStage = FormStage - 1; if (lump.number >= 2) lumpchange = (-1 - FormStage); } } } destrm = FormVector(startrm, dir); print "You walk for a while"; if (dir == formbluesphere.number) { if (startrm == parent(formbluesphere)) print ", outpacing ", (the) formbluesphere; if (destrm == parent(formbluesphere)) print ", following ", (the) formbluesphere; } print "."; if (lumpchange ~= 0) { switch (lumpchange) { 1: print " The ridges on the cube slowly shift, becoming more regular."; -1: print " The ridges on the cube slowly shift, becoming irregular again."; 2: print " The ridges on the cube slowly flatten away, leaving smooth \ shaded stripes."; -2: print " The stripes on the cube slowly raise into angular ridges."; 3: print " The stripes on the cube slowly fade to a uniform brown."; -3: print " Bands of paler and darker brown slowly appear on the cube's surface."; 4: print " The cube's brown color slowly pales to tan."; -4: print " The cube's tan color slowly darkens."; default: print " The cube begins to play jazz. [BUG]"; } } new_line; return destrm; ]; Array FormVectorArray --> [; FormRoom2 FormRoom4 FormRoom1 FormRoom5 FormRoom3; ! n = se FormRoom5 FormRoom3 FormRoom4 FormRoom1 FormRoom2; ! ne FormRoom4 FormRoom5 FormRoom2 FormRoom3 FormRoom1; ! e = sw FormRoom2 FormRoom4 FormRoom1 FormRoom5 FormRoom3; ! se FormRoom3 FormRoom1 FormRoom5 FormRoom2 FormRoom4; ! s = nw FormRoom4 FormRoom5 FormRoom2 FormRoom3 FormRoom1; ! sw FormRoom5 FormRoom3 FormRoom4 FormRoom1 FormRoom2; ! w = ne FormRoom3 FormRoom1 FormRoom5 FormRoom2 FormRoom4; ! nw ]; [ FormDirName dir; while (dir >= 8) { dir = dir - 8; } switch (dir) { 0: print "north"; 1: print "northeast"; 2: print "east"; 3: print "southeast"; 4: print "south"; 5: print "southwest"; 6: print "west"; 7: print "northwest"; } ]; [ FormVector startrm dir destrm; if (startrm == FormRoomFinal) return FormRoom1; startrm = startrm.number - 1; destrm = FormVectorArray-->((dir * 5) + startrm); return destrm; ]; Class formpyramidclass with name "pyramid", description "A perfect four-sided pyramid made of some shiny substance.", before [; Receive: "You can't balance anything on a pyramid."; ]; Class formconeclass with name "cone", description "A perfect cone made of some shiny substance.", before [; Receive: "You can't balance anything on a cone."; Eat: "That's plainly not marzipan."; ]; Class formsphereclass with name "sphere", describe [; if (self.number ~= -1) { print_ret "^A ", (name) self, " is rolling by."; } ], description "A perfect sphere made of some shiny substance.", before [ dir; Follow: if (self.number ~= -1) "You really are bored, aren't you?"; Receive: "You can't balance anything on a sphere."; Push: if (parent(self) ~= location) { if (FormIsCube(parent(self)) ~= 0) <>; if (FormIsBox(parent(self)) ~= 0) print_ret (The) self, " rattles around in ", (the) parent(self), "."; rfalse; } self.number = random(8) - 1; give self general; print_ret "You give ", (the) self, " a push. It calmly rolls away, to the ", (FormDirName) self.number, " as it happens."; PushDir: if (parent(second)~=compass) return L__M(##PushDir,2); switch (second) { n_obj: dir = 0; ne_obj: dir = 1; e_obj: dir = 2; se_obj: dir = 3; s_obj: dir = 4; sw_obj: dir = 5; w_obj: dir = 6; nw_obj: dir = 7; default: return L__M(##PushDir,3); } if (parent(self) ~= location) { if (FormIsCube(parent(self)) ~= 0) <>; if (FormIsBox(parent(self)) ~= 0) <>; rfalse; } self.number = dir; give self general; print_ret "You give ", (the) self, " a push to the ", (FormDirName) self.number, ". It rolls away."; ], after [; Take: if (self.number ~= -1) { self.number = -1; print_ret "You pluck ", (the) self, " from its course."; } ], number -1, ! -1 for not moving, or rolling direction daemon [ rm newrm; if (self.number ~= -1) { rm = parent(self); if (FormIsRoom(rm) == 0 && rm ~= FormRoomFinal) { self.number = -1; give self ~general; "^The blue sphere squirms around like a kitten. [BUG]"; } newrm = FormVector(rm, self.number); if (location == rm) { if (self hasnt general) print "^", (The) self, " rolls away to the ", (FormDirName) self.number, ".^"; } give self ~general; move self to newrm; if (location == newrm) { print "^Calmly, ", (a) self, " rolls towards you from the ", (FormDirName) self.number + 4, ".^"; } } ]; [ FormIsSphere obj; if (obj == nothing) rfalse; if (obj.daemon == formbluesphere.daemon) rtrue; else rfalse; ]; Class formboxclass with name "box", description [; print "A wide, square, open-topped box made of some shiny substance. "; if (child(self) == nothing) { print_ret (The) self, " is empty."; } print "In ", (the) self; WriteListFrom(child(self), TERSE_BIT | FULLINV_BIT | ENGLISH_BIT | RECURSE_BIT | ISARE_BIT); "."; ], before [; Wave, Turn, Push, Pull, PushDir: if (formbluesphere in self) { ! cheesy, but so what? <>; } if (anywherein(formbluesphere, self) ~= 0) { print_ret (The) formbluesphere, " rolls off ", (the) parent(formbluesphere), " and plunks into ", (the) self, "."; } if (anywherein(lump, self) ~= 0) { print "Your attention is caught by ", (the) lump, ", as the box's motion \ moves it. "; <>; } ], after [; Take: if (formbluesphere in self) { ! cheesy, but so what? print_ret "Taken. ", (The) formbluesphere, " rattles around as you lift ", (the) self, "."; } ], has open container; [ FormIsBox obj; if (obj == nothing) rfalse; if (obj.invent == formredbox.invent) rtrue; else rfalse; ]; Class formcubeclass with name "cube", description [; print "A perfect cube made of some shiny substance."; if (child(self) ~= nothing) { print " On ", (the) self; WriteListFrom(child(self), TERSE_BIT | FULLINV_BIT | ENGLISH_BIT | RECURSE_BIT | ISARE_BIT); print "."; } new_line; rtrue; ], before [ obj; Receive: if (children(self) ~= 0) { print_ret "There is already ", (a) child(self), " on ", (the) self, "."; } if (FormIsSphere(noun) ~= 0 && parent(self) ~= location) { move noun to location; if (anywherein(self, player) ~= 0) { print_ret "You can't hold ", (the) self, " steady enough. ", (The) noun, " rolls off and clunks to the ground."; } else { print_ret (The) self, " isn't quite steady on ", (the) parent(self), ". ", (The) noun, " rolls off."; } } !move noun to self; !print_ret "You put ", (the) noun, " onto ", (the) self, "."; rfalse; Push, Pull: obj = child(self); if (FormIsSphere(obj) ~= 0) { move obj to location; print_ret (The) obj, " rolls off ", (the) self, " and plunks to the ground."; } ], after [ obj; Take: obj = child(self); if (obj ~= nothing) { if (FormIsSphere(obj) ~= 0) { move obj to location; print_ret "Taken. ", (The) obj, " rolls off ", (the) self, " and plunks \ to the ground."; } else { print_ret "Taken. You are careful not to let ", (the) obj, " slide off."; } } ], has supporter; [ FormIsCube obj; if (obj == nothing) rfalse; if (obj.invent == formbluecube.invent) rtrue; else rfalse; ]; Object FormRoom1 "Somewhere Else" class FormRoomClass, with number 1; Nearby formredpyramid "red pyramid" class formpyramidclass, with name "red"; Nearby formyellowcube "yellow cube" class formcubeclass, with name "yellow"; Object FormRoom2 "Somewhere Else" class FormRoomClass, with number 2; Nearby formgreencube "green cube" class formcubeclass, with name "green"; Nearby formredbox "red box" class formboxclass, with name "red"; Object FormRoom3 "Somewhere Else" class FormRoomClass, with number 3; Nearby formbluesphere "blue sphere" class formsphereclass, with name "blue"; Object FormRoom4 "Somewhere Else" class FormRoomClass, with number 4; Nearby formbluecube "blue cube" class formcubeclass, with name "blue"; Nearby formyellowcone "yellow cone" class formconeclass, with name "yellow"; Object FormRoom5 "Somewhere Else" class FormRoomClass, with number 5; Constant formgreenpyramidplural "green pyramids"; Nearby formgreenpyramid "green pyramid" class formpyramidclass, with name "green", plural formgreenpyramidplural; Nearby formgreenpyramid2 "green pyramid" class formpyramidclass, with name "green", plural formgreenpyramidplural; Object FormRoomFinal "Somewhere Else" class FormRoomClass, with short_name [; if (deadflag == 2) print "By Theater Portico"; else print "Somewhere Else"; rtrue; ], n_to [; return FormNoMotion(); ], ne_to [; return FormNoMotion(); ], e_to [; return FormNoMotion(); ], se_to [; return FormNoMotion(); ], s_to [; return FormNoMotion(); ], sw_to [; return FormNoMotion(); ], w_to [; return FormNoMotion(); ], nw_to [; return FormNoMotion(); ], in_to [; if (formring in self) <>; ], before [; Yes, No: if (formlump in self) { print "(to ", (the) formlump, ")^"; if (action == ##Yes) <>; else <>; } if (formring in self) { print "(to ", (the) formring, ")^"; <>; } ], has ~general; Nearby formring "ring of brightness" with name "ring" "band" "of" "light" "bright" "brightness", initial [; if (self.number == 0) { self.number = 1; "Light sweeps in from all around, condensing, brightening into a ring which \ hovers before you."; } indirect(self.description); rtrue; ], description [; print "A ring of translucent brightness hangs before you, horizontal, twin to the dark \ ring you saw elsewhere. Edges seem to glitter within it in crystalline \ array; you can make no sense of them."; if (formring.number == 2) print " The white cube drifts back and forth before the ring, a few feet \ beyond and above it."; new_line; rtrue; ], number 0, ! 0: just met (used only to flag first "initial" description) ! 1: just met ! 2: put cube in/on ! 3: player entered, ring gone life [; Attack: "You have no idea how to begin."; Tell, Answer, Ask, Order: "Your voice is absorbed into silence."; default: "The ring does not react."; ], before [; Touch, Take, Push, Pull: "The brightness has no substance."; Listen: "The ring is silent."; Search: "The ring is empty."; Receive: if (noun == lump) { print "The white cube swings into a slow midair oscillation before the ring.^"; self.number = 2; remove lump; move formlump to parent(self); if (itobj == lump) itobj = formlump; rtrue; } print_ret (The) noun, " passes through the ring without resistance, and without \ result."; Enter: if (self.number ~= 2) { if (anywherein(lump, player) ~= 0) { print "You step forward, against some invisible resistance. But the \ white cube in your hands is pulled forward, instead; it jerks \ from your grasp. "; } else { move lump to player; ! you need to be holding it before you can insert it print "You step forward, against some invisible resistance. But something \ scrapes, then sails past you, pulled ahead even as you are pushed back. "; } <>; } print "Bracing against a sudden invisible attraction, you cross the boundary of the \ ring. It writhes suddenly and collapses inward --^^"; print (emphstring) "Crash.", "^^Moments later, you are pulling yourself to \ your feet; pulling together shreds of your thoughts; grasping frantically \ for speech and language, for the distorted words of the white cube have \ come into focus at last...^^"; remove self; self.number = 3; print "The words are what they have been from the beginning \ (and you feel every shape in the \ world shift in its balance):^^", (emphstring) "~Ah, my love. Can you \ forgive me?~", "^"; rtrue; ], has static animate hiddengender; [ FormNoMotion; "Something drags at your limbs. You cannot move far."; ]; Object formlump "white cube" with name "smooth" "white" "cube", describe [; if (formring.number == 2) { rtrue; ! taken care of by formring } else { "^The white cube drifts slowly before you. Waiting."; } ], description [; print "It's a large cube of some smooth, shiny white substance."; if (formring.number == 2) { " It slowly moves back and forth before the ring of light; incomprehensible \ sounds somehow echo from it."; } else { " It slowly orbits before you; its plea echoes."; } ], react_before [; Listen: if (noun == nothing) <>; ], life [; Attack: "You have no idea how to begin."; Tell, Ask, Order: "Your voice echoes back at you, distorted into unknowable syllables."; Answer: if (noun == 'yes' or #n$y) <>; if (noun == 'no') <>; <>; default: "The cube does not react."; ], orders [; Yes: <>; No: <>; default: "Your voice echoes back at you, distorted into unknowable syllables."; ], before [; HeardYes: if (formring.number == 3) { deadflag = 5; print "Your simple assent is overborne by a voice that echoes from you like \ breaking stone:^^"; print (emphstring) "~How can I deny you? There is nothing to forgive.~", "^^"; print "And then the band of light explodes from you, spreading out across the \ rising grey plain, joyfully, forever -- \ and above you, darkness breaks through the mists; \ a ring of darkness which descends as the light ascends to meet it --^^"; print "(Somewhere, rough metal bends at last, and bows towards smooth metal. \ They touch, singing -- wire hangs slack between --)^^"; print "And the mists dissolve between light and dark; \ and the simple lights of home blur \ and fade and are wiped away. As are you. As is everything.^^"; rtrue; } <>; HeardNo: if (formring.number == 3) { print "Your simple refusal is overborne by a voice that echoes from you like \ weary stone:^^"; print (emphstring) "~How can I ever forgive you? There is nothing to \ forgive.~", "^^"; print "The cube shivers to silent dust. The band of light spreads out, away \ from you, fading back into the eternal grey. And a distant darkness \ recedes into the swirling mists. You gaze up into those mists -- every \ breath is an ache in your chest -- and wait for a glimpse of the distant, \ simple lights of home --^^"; PauseClear(); Finalise(); rtrue; } <>; Listen: if (formring.number ~= 3) { "Strange, distorted sounds echo from the cube as it moves."; } else { "The plea still echoes around you."; } Take, Push, Pull, Wave, Turn, PushDir: "The cube is inalterable in its course."; Touch: "The substance is very smooth."; ], number 0, each_turn [; if (formring.number == 2) { switch (self.number) { 0: self.number = 1; print "^Strange, distorted sounds echo from the cube as it moves.^"; 1: self.number = 2; 2: self.number = 1; print "^Strange, distorted sounds still swirl from the cube. The ring \ remains impassive.^"; } } ], has static animate hiddengender; ! --------------------- ! The infamous morphic lump. The real one, in fact. Array lumpname_Home table [ 'ping' 'pong' 'ball' ]; Array lumpname_November table [ 'leather' 'leather-bound' 'book' 'tome' ]; Array lumpname_Silent table [ 'oval' 'ivory' 'casket' 'lid' 'seam' ]; Array lumpname_Dry table [ 'wicker' 'reed' 'reeds' 'doll' 'figure' ]; Array lumpname_Frozen table [ 'silver' 'silvery' 'metal' 'plaque' 'frame' 'frost' ]; Array lumpname_Dome table [ 'clear' 'glass' 'sphere' 'man' 'figure' 'thing' 'something' ]; Array lumpname_Dark table [ 'fuzzy' 'fuzz' 'fluffy' 'fluff' 'fiber' 'mass' 'tangle' ]; Array lumpname_Claustro table [ 'rough' 'wood' 'wooden' 'block' ]; Array lumpname_Meaning table [ 'marshmallow' ]; Array lumpname_Form01 table [ 'ridged' 'ridge' 'ridges' 'brown' 'cube' ]; Array lumpname_Form2 table [ 'striped' 'stripe' 'stripes' 'band' 'bands' 'brown' 'cube' ]; Array lumpname_Form3 table [ 'smooth' 'brown' 'cube' ]; Array lumpname_Form4 table [ 'smooth' 'tan' 'cube' ]; Array lumpname_Form5 table [ 'smooth' 'white' 'cube' ]; Object lump "lump" with parse_name [ arr arrsize ix num wd; switch (world) { world_Home: arr = lumpname_Home; world_November: arr = lumpname_November; world_Silent: arr = lumpname_Silent; world_Dry: arr = lumpname_Dry; world_Frozen: arr = lumpname_Frozen; world_Dome: arr = lumpname_Dome; world_Dark: arr = lumpname_Dark; world_Claustro: arr = lumpname_Claustro; world_Meaning: arr = lumpname_Meaning; world_Form: switch (FormStage) { 0, 1: arr = lumpname_Form01; 2: arr = lumpname_Form2; 3: arr = lumpname_Form3; 4: arr = lumpname_Form4; 5: arr = lumpname_Form5; default: arr = lumpname_Form5; ! paranoia } default: arr = lumpname_Home; ! paranoia } arrsize = arr-->0; num = 0; wd = NextWord(); while (1==1) { for (ix=1 : ix <= arrsize : ix++) { if (wd == arr-->ix) break; } if (ix <= arrsize) { ! yes, legal word num++; wd = NextWord(); } else { break; } } return num; ], article [; switch (world) { world_Silent: print "an"; default: print "a"; } ], short_name [; switch (world) { world_Home: print "ping-pong ball"; world_November: print "leather-bound book"; world_Silent: print "ivory casket"; world_Dry: print "wicker doll"; world_Frozen: print "silver plaque"; world_Dome: print "glass sphere"; world_Dark: print "fuzzy mass"; world_Claustro: print "block of wood"; world_Meaning: print "marshmallow"; world_Form: switch (FormStage) { 0, 1: print "ridged brown cube"; 2: print "striped brown cube"; 3: print "brown cube"; 4: print "tan cube"; 5: print "white cube"; } } rtrue; ], initial [; switch (world) { world_Dome: "A glass sphere rests in the sand. It's just the size of your cupped hands, and \ a small male figure is visible within it."; } ], number 0, ! 0: noticed no changes (in form world, anyway.) ! 1: seen it change, possibly only subliminally ! 2: noticed that it has changed. ! 3: know how to turn it. description [; switch (world) { world_Home: "A ping-pong ball. You know what a ping-pong ball looks like. [BUG]"; world_November: if (verb_word == #n$x or 'examine' or 'look') { print "The cover is neat brown leather, chased with a bit of silver leaf, \ though that's mostly worn away. "; } "You turn a few pages; but the brush-stroked \ script is entirely strange. Several pages show faces, clearly \ painted by the writer's hand. Their features tell you nothing."; world_Silent: "It's a small oval box, ornately engraved with a pattern of leaves and vines, \ top, sides, and bottom. The lid's seam is barely visible. \ The ivory is yellowed with age, but clean and polished."; world_Dry: "Fine dry reeds are laced in a three-way weave, forming a human figure -- \ not detailed, but quite lifelike."; world_Frozen: "It's a silvery plaque, in a frame of the same metal. The frame is etched \ with swirling, intricate designs; the plaque itself seems to be covered by \ a tracery of frost."; world_Dome: "It's clear as water -- you've never seen such pure glass -- and perfectly \ smooth; the strange sunlight glints only here and there, on a few scratches. \ Within it you can see a finely-wrought figure: a man, nude, standing with \ hands outstretched in pleading. He stands upon a delicate layer of prismatic \ glints which is suspended within the glass."; world_Dark: "It's a tribble. [BUG]"; world_Claustro: "It's a large, rough-cut block of some dark wood. The faces are splintered and \ cracked with the grain, and several knots twist the edges."; world_Meaning: "It's a marshmallow. (Untoasted.) [BUG]"; world_Form: switch (FormStage) { 0: print "It's a large cube of some shiny brown substance. The surface is \ covered with parallel, irregularly spaced ridges.^"; if (self.number == 1) { print "^Hmm. It doesn't look any different now, but you're \ sure you felt something.^"; }; rtrue; 1: print "It's a large cube of some shiny brown substance. The surface is \ covered with parallel ridges, evenly spaced.^"; 2: print "It's a large cube of some shiny brown substance. The surface is \ smooth, but striped with alternating lighter and darker bands.^"; 3: print "It's a large cube of some smooth, shiny brown substance.^"; 4: print "It's a large cube of some smooth, shiny tan substance.^"; 5: print "It's a large cube of some smooth, shiny white substance.^"; } if (self.number < 2) { self.number = 2; print "^Wait, that's not how it was when you arrived.^"; } rtrue; } ], before [; switch (world) { world_November: switch (action) { ##Open, ##Search: <>; } world_Silent: switch (action) { ##Open, ##Turn: "The lid will not loosen."; ##Close: "It's already closed."; ##Empty, ##EmptyT: CDefArt(self); " is closed."; ##Receive: print_ret "You cannot; ", (the) self, " isn't open."; ##Search: print_ret (The) self, " is closed, and carefully as you inspect \ the carved surface, you find nothing which reveals how it \ might be opened."; ##Wave: "Nothing rattles within the casket."; } world_Dry: switch (action) { ##Search: "The figure is hollow, as far as you can tell."; ##Push, ##Touch, ##Squeeze: "The wicker surface yields stiffly."; ##Pull, ##Open: "You cannot unbind the wicker weave."; } world_Frozen: switch (action) { ##Touch: "The metal is as burning-cold as if it had been in this world \ for centuries."; ##Ignite: "The frost doesn't melt. It must be a pattern in the metal."; ##Rub, ##Touch: "The frost doesn't soften under your fingertips. It must \ be a pattern in the metal."; ##Search: "You tilt the plaque, looking beyond the frosted surface. Light glints \ among crystals, forming a distant face... your reflection? It doesn't \ look quite like you. And the eyes are desolate."; } world_Dome: switch (action) { ##Search: <>; ##Touch: "It's smooth-polished."; ##Rub: "Your fingers leave faint streaks on the glass."; } world_Dark: switch (action) { ##Examine: if (location == thedark) <>; "It's a light, fluffy tangle of some fiber. The strands are \ a bright violet."; ##Touch: "You feel a light, fluffy tangle of some fiber."; ##Search: "You massage the fuzzy mass, but your fingers encounter nothing but \ the fiber itself."; ##Ignite: "Strangely, the fiber refuses to ignite."; ##Pull: "You stretch the tangle taut; it springs back easily."; ##Insert, ##PutOn: if (second == ears) { if (location == thedark) "The sounds around you are only slightly muted, and the \ fiber won't stay in your ears, anyway."; else "It makes little difference to what you hear, and the \ fiber won't stay in your ears, anyway."; } } world_Claustro: switch (action) { ##Touch, ##Rub: "You run your fingers lightly, avoiding splinters. \ The wood is as rough as it appears."; ##Ignite: "The wood won't catch, not even the splintered edges."; } world_Form: switch (action) { ##Touch, ##Rub: if (FormStage < 2) "The ridges are stylized, shallow angular planes."; "The substance is very smooth."; ##Receive: "Something about the idea makes you uneasy."; ##Turn, ##Push, ##Pull, ##Wave, ##PushDir: if (self.number == 0) { self.number = 1; print "Something seems subtly different about the cube, as it moves.^"; rtrue; } if (self.number == 3) { print "You turn the cube slowly back and forth. "; } if (self.number == 1 or 2) { self.number = 3; print "You turn the cube slowly back and forth; and, yes, \ it changes very slightly as it moves. "; } if (self.number == 3) { switch (FormStage) { 0: print_ret "Its ridges become more regular as you move \ it towards the ", (FormDirName) FormGoDir, " and more irregular towards the ", (FormDirName) FormGoDir+4, "."; 1: print_ret "Its ridges become more irregular as you move \ it towards the ", (FormDirName) FormGoDir+4, " and shallower towards the ", (FormDirName) FormGoDir, "."; 2: print_ret "Its stripes become fainter as you move \ it towards the ", (FormDirName) FormGoDir, " and slightly bumpy towards the ", (FormDirName) FormGoDir+4, "."; 3: print_ret "Its coloring becomes somewhat banded as you move \ it towards the ", (FormDirName) FormGoDir+4, " and paler towards the ", (FormDirName) FormGoDir, "."; 4: print_ret "Its coloring becomes more intense as you move \ it towards the ", (FormDirName) FormGoDir+4, " and paler towards the ", (FormDirName) FormGoDir, "."; 5: "There is a faint tension as you move it towards the ring."; default: "Nothing seems to happen."; } } ! else, self.number = 0; !if (action == ##PushDir) ! "Nothing obvious happens."; } } ], after [; switch (world) { world_Dome: switch (action) { ##Take: "Taken. It's surprisingly heavy."; } } ], each_turn [; if (world == world_Form) { switch (self.number) { 1: if (FormStage ~= FormStageLast) { print "^The brown cube seems to shift in your grasp.^"; FormStageLast = FormStage; } } } ]; ! --------------------- #ifnot; ! SKIP_FORM; [ FormEnter; ]; [ FormExit; ]; Object FormRoom1 "Somewhere Else" with description "Tenth room.", has light; Object lump "lump" with name "lump"; #endif; ! SKIP_FORM;