! ------ Meaning (top) world #ifndef SKIP_MEANING; Global MeanPosX; Global MeanPosY; Global MeanDistance; Global MeanSquareDistance; [ MeanEnter; MeanPosX = 7; MeanPosY = 4; MeanSquareDistance = (MeanPosX * MeanPosX) + (MeanPosY * MeanPosY); MeanDistance = SquareRoot(MeanSquareDistance); meansky.number = MeanDistance + 2; StartDaemon(meansky); ]; [ MeanExit; if (meansky.number >= 0) StopDaemon(meansky); ]; Object MeanRoom "Somewhere" with description [; !print "[DEBUG] sqrdist ", MeanSquareDistance, "; dist ", MeanDistance, ".^"; print "You hang without support, and the depths below swirl with mist. Above \ you, the sky is flat and grey"; if (meansky.number >= 0) print ". Shapes move slowly across it."; else print " and empty."; new_line; rtrue; ], n_to [; return MeanMotion(0, -1); ], ne_to [; return MeanMotion(1, -1); ], e_to [; return MeanMotion(1, 0); ], se_to [; return MeanMotion(1, 1); ], s_to [; return MeanMotion(0, 1); ], sw_to [; return MeanMotion(-1, 1); ], w_to [; return MeanMotion(-1, 0); ], nw_to [; return MeanMotion(-1, -1); ], u_to "There is nowhere higher.", d_to [; if (meanshadow in self) <>; "You're not even sure what keeps you here. Best not to disturb it."; ], in_to [; if (meanring in self) <>; ], before [; Jump: "You do not know what that means here."; Drop: if (anywherein(noun, player) ~= 0) "You don't dare."; Yes, No: "No one is listening."; ], has light; ! no outdoors; we have a private sky here. Constant MeanLivesNum 10; Array MeanLivesShown --> MeanLivesNum; Array MeanLives --> [; "a dark figure standing in an empty room. Its lips move, silently: Will you \ forgive me?"; "two silhouettes standing on a dark porch. They are talking, but they are huddled \ somehow away from each other, and one will not look the other in the eye. \ A third shape steps out for a moment nearby, and the two freeze, until \ the third moves away."; "one silhouette walking slowly in a sunny park. It takes a side path, and then another, \ seemingly without aim or direction. A dry tree branch tosses idly in one hand; \ the figure does not speak."; "two silhouettes standing in a room; many others sit around them. The two mouths are \ moving, soundlessly, and you see a stray foot tapping. The audience is relaxed, \ laughing."; "three figures kneeling on pavement, around an arrangement of cards and small shapes. \ One silhouette lays down another card and moves an angular shape onto it. The \ other two sit back, frowning. One gropes for a jar and sips from it."; "six silhouettes sitting in a circle, in a plush room. One is reading out loud, from a \ book. It turns a page and passes the book to its right, and that figure \ continues the reading. There is a distant air of solemnity, until one reader \ grimaces, and seems to laugh ruefully. It begins again."; "several figures lying on trim grass, staring up into the sky. The sunlight is somehow \ dim. One silhouette sits up, and seems to laugh, and points at its own shadow."; "a dim figure sitting over a desk, pen in hand. It shuffles through one sheaf of papers, \ then another; it picks up a book that is lying on the floor. A few lines are scratched. \ The figure jumps up and walks in a tight circle, waving its arms. Then it sits, writes \ another line or two, and so it continues."; "a silhouette standing in a small room -- a kitchen, full of jars and untidy sacks. \ The figure mixes furiously, tastes from his bowl, shakes a bottle over it, taps \ again to be sure. Peelings and shells pile up on the counter."; "two silhouettes walking slowly across a sunny park. Other shapes play some game in \ the distance, but the pair pay no attention. They stop by a low stone \ wall. A bird darts down, and lands on it, and eyes them fearlessly."; ]; Array MeanLivesShort --> [; "a dark figure whispering: Will you forgive me?"; "the two figures standing stiffly on a dark porch."; "the lone figure walking in a sunny park."; "the two figures performing."; "the three figures kneeling around their cards."; "the six figures sitting in a circle, reading."; "the figures lying under strange sunlight."; "the figure hard at work at a desk."; "the figure in a kitchen."; "the two figures walking in a sunny park."; ]; Nearby meansky "sky" with article "the", name "flat" "grey" "sky" "silhouette" "figure" "figures" "shape" "shapes" "shadows" "surface", description [; print "Everything ends above you, a flat featureless surface, and there is no way to \ judge its distance."; if (self.number < 0) { new_line; rtrue; } print " Within the sky, or behind it, shapes slowly evolve."; if (self.number < MeanLivesNum) { print " You can make out ", (string) MeanLives-->self.number, "^"; give self general; } else { print " But you cannot make them out.^"; } rtrue; ], react_before [; Examine: if (noun == u_obj) <>; ], before [; Examine: rfalse; Search, LookBehind: <>; Smell: <>; ! smell nothing -- ie, air. Enter: <>; Listen: "The greyness is silent."; default: "The grey sky is infinitely far above, or perhaps just beyond your reach."; ], number 0, ! sky-writing counter. If -1, the daemon has stopped. daemon [; if (self has general) { give self ~general; "^The shapes above seem to blur."; } self.number = self.number - 1; if (self.number < MeanDistance) { if (MeanPosX == 0 && MeanPosY == 0) { self.number = -1; StopDaemon(self); move meanring to parent(self); "^The shapes in the sky fade. No, they are around you -- a ring of dimness \ that sweeps in from every direction, shrinking, coalescing before you. \ The words echo this time: ~Will you forgive me?~"; } self.number = MeanDistance+2; } if (self.number < MeanLivesNum) { if (MeanLivesShown-->self.number == 0) { MeanLivesShown-->self.number = 1; print "^The formless shadows above you resolve for a moment, into "; print (string) MeanLives-->self.number, "^"; } else { print "^The shadows above you change. Again \ you see "; print (string) MeanLivesShort-->self.number, "^"; } } else { print "^The shadows above you change slowly, hinting at meaning.^"; } ], has scenery; ! general means the changing is paused for a turn. Nearby meandepths "depths" with article "the", name "misty" "mist" "swirl" "swirling" "abyss" "depths" "ground", description [; print "There is nothing beneath your feet. \ Veils of mist move far, far below, a slow dance of shape and shadowy \ color. Where the pale folds thin, you can glimpse darkness, pierced with bright \ points. Stars, or moonlit waves... or the streets of a city like your home. But \ the lights are terribly distant.^"; if (meanshadow in MeanRoom) { print "^A spot of black shadow lies on the mist.^"; } rtrue; ], react_before [; Examine: if (noun == d_obj) <>; ], before [; Examine: rfalse; Smell: <>; ! smell nothing -- ie, air. Receive: "You don't dare."; Enter: <>; Listen: "You have a faint impression of vast uproar deep in the abyss, thinned to \ silence only by its distance."; default: "Whatever is below you is far out of reach."; ], has scenery; Object meanring "ring of darkness" with name "ring" "band" "of" "dark" "darkness" "dim" "dimness", initial "A ring of translucent darkness hangs before you, horizontal, no broader \ than your circled arms would be. A thousand fragmentary shapes might flicker \ within the shadowy band; but they are all quite still.", description [; print_ret (string) self.initial; ], react_before [; Yes, No: print "(to ", (the) self, ")^"; <>; Listen: if (noun == nothing) <>; ], life [; Attack: "You have no idea how to begin."; Tell, Answer, Ask, Order: print "Your voice echoes back, distorted nearly beyond meaning: "; switch (random(5)) { 1: "~...can...~"; 2: "~...will...~"; 3: "~...you...~"; 4: "~...me...~"; 5: "~...ever...~"; !default: "~...forgive...~"; } default: "The ring does not react."; ], before [; Touch, Take, Push, Pull: "The darkness has no substance."; Listen: "The plea still echoes around you."; Search: "The ring is empty."; Receive: print_ret (The) noun, " passes through the ring without resistance, and without \ result."; Enter: if (self notin MeanRoom) "Rings? We don't need no stinking rings. [BUG]"; print "Straining against intangible resistance, you cross the boundary of the \ ring. It writhes suddenly and collapses inward --^^"; print (emphstring) "Crash.", " The silence is not broken, but it seems tuned \ to a higher pitch; echoes of something fade reluctantly from your thoughts. \ Echoes of... you're not sure. But for a moment, you saw ", (emphstring) "everything.", "^"; move meanshadow to MeanRoom; move meanlump to MeanRoom; remove self; "^Something swoops past your head."; ], has static animate hiddengender; ! This is a special case, only used for this world. Object meanlump "sphere" with name "softly" "glowing" "sphere" "ghost" "image" "woman" "thing" "something", initial "A softly glowing sphere orbits you slowly, a phantom of light. Within it you see \ a ghost-figure of a woman.", description "The sphere is just large enough to fit in your cupped hands, were it solid, \ and not a soft luminance in the air. It moves around you, without a whisper, passing \ before your eyes once in three heartbeats. And in the sphere's heart stands the image \ of a woman. She is dressed simply, in a pale robe and hairfall. She gazes out away \ from you. She does not move; but her hands are outstretched, pleading.", orders [; "There is no reply."; ], before [; Take: "The sphere has no substance. And it already circles you; it's yours, \ or at least a companion, for the moment."; Push, Pull, Touch, Attack, Turn: "The sphere has no substance."; Search: <>; Listen: "You cannot quite hear anything."; ], has static talkable; Constant MeanSeeShadow "^Something else catches your eye: there is a shadow upon \ the mist, far below.^"; Object meanshadow "shadow below" with name "dark" "darkness" "black" "blackness" "shadow" "shade" "spot", describe [; if (self.number > 0) { self.number = 0; print (string) MeanSeeShadow; rtrue; } else { "^Far below, a pure-black shadow lies upon the mists."; } ], description "At this distance, it's a mere spot. But it has the same night's-blood \ darkness which has brought you this strange, far way.", door_to DomWest, door_world world_Dome, number 2, before [; Examine: rfalse; Enter: if (self notin MeanRoom) "Shadow? We don't need no stinking shadows. [BUG]"; print "Once again, the thought of motion becomes motion; you slide downward. \ The glowing sphere follows, circling your head quietly, even as your \ descent speeds, becomes a plummet.... Mist whips past you; the wind \ roars; you cannot breathe for it, and then the blackness swallows you, \ leaving silence and the single light of the orbiting sphere --^^"; PauseClear(); print "-- Foul air chokes you.^^"; MoveToWorld(self.door_world); PlayerTo(self.door_to, 0); ! full look move lump to self.door_to; if (itobj == meanlump) itobj = lump; "^Something thuds into the sand at your feet."; default: <>; ], each_turn [; if (self.number > 0) { self.number = self.number - 1; if (self.number == 0) print (string) MeanSeeShadow; } ], has static; Global MeanMotionFlags = 0; [ MeanMotion xoff yoff oldsqdist; if (MeanPosX == 0 && MeanPosY == 0) { "There is intense resistance. You cannot overcome it."; } MeanPosX = MeanPosX + xoff; MeanPosY = MeanPosY + yoff; oldsqdist = MeanSquareDistance; MeanSquareDistance = (MeanPosX * MeanPosX) + (MeanPosY * MeanPosY); MeanDistance = SquareRoot(MeanSquareDistance); if (MeanMotionFlags == 0) { print "Though there is nothing beneath you to move across, you consider motion, \ and something happens"; } else { print "There is motion"; } if (MeanSquareDistance < oldsqdist) { if ((MeanMotionFlags & 1) == 0) { MeanMotionFlags = MeanMotionFlags | 1; print ". Nothing changes; but there is a faint resistance, a sense of effort, \ like a dream of flying into the wind.^"; } else { if (MeanPosX == 0 && MeanPosY == 0) print "; and a sense of resistance which becomes suddenly powerful, seizing \ your progress.^"; else print ", and a faint sense of resistance to it.^"; } } else { if ((MeanMotionFlags & 2) == 0) { MeanMotionFlags = MeanMotionFlags | 2; print ". Nothing changes; but there is a faint acceleration, a sense of ease, \ like a dream of sinking through still water.^"; } else { print ", and a faint sense of attraction aiding it.^"; } } return MeanRoom; ]; ! return square root of argument, rounded down. [ SquareRoot sqrd ix; if (sqrd >= 256) return 16; for ( ix = 1 : ix <= 16 : ix++ ) { if (sqrd < (ix*ix)) return ix-1; } return 17; ]; #ifnot; ! SKIP_MEANING; [ MeanEnter; ]; [ MeanExit; ]; Object MeanRoom "Somewhere" with description "Ninth room.", has light; #endif; ! SKIP_MEANING;