!TO-DO: Add "dark horizon/horizons" to all rooms, as mentioned in WestRoom. !**************************************************************************** !****(AREA SCENERY)********************************************************** !**************************************************************************** class distant_scenery { !This can be applied to things that are not in the same room, to give !default responses (that can be overridden by individual objects as !needed) for things that the player should not be able to do. before { object DoCut,DoHit,DoStab,DoRip,DoPull,DoPush,DoWake, \ DoMove,DoSearch,DoTouch,DoRepair,DoJump,DoClimb { PrintMessage(3,12,self) } xobject DoWrap,DoTie,DoUnWrap,DoUnTie { PrintMessage(3,12,self) } } } !---------------------------------------------------------------------------- scenery trench "trench" { nouns "trench", "rut" adjectives "long", "shallow" article "the" found_in CrashSite, NorthRoom door_to { PrintMessage(3,8) } long_desc { "The pod slid and rolled for a ways on impact, creating a shallow trench." } } !---------------------------------------------------------------------------- scenery pod_wreckage "pod wreckage" { parse_rank 2 !So it's higher than the "sharp edges" and "pod hatch" nouns "wreckage", "pod" "four", "slag", "heap", "craft" adjectives "black", "gray", "twisted", "jagged", "pod" article "the" found_in CrashSite door_to { "The pod is too badly damaged to enter." } long_desc { "It might have survived, if not for the heavy gravity. Pods aren't best at surviving a landing ejection. A better choice would have been the cruiser, a small atmospheric craft that was unfortunately ripped away when most of the\I Sirius Dream \iwas crushed by the gravitic anomaly. Only the three of you, from a crew of nine, managed an escape. By then the wreckage was already caught in the planet's pull. The pod lies in a twisted, jagged heap nearby." print "" "Starlight glints on the sharp edges of a shredded portion of the pod." } before { xobject DoCut,DoRip { !If we try to cut/rip anything using the pod, then redirect it !to use the sharp edge instead. Perform(verbroutine, object, sharp_edges) } } after { object DoClimb { !Take this opportunity to mention the sharp edges again. "With such sharp edges to hinder progress, climbing "; print The(self); " isn't possible. Anyway, you can see the top from here, and nothing is up there. You have no need to climb it." } object DoSearch { "Aside from the beacon post you found before nightfall and the large scraps of crash netting scattered about the area, nothing can be salvaged from the wreckage." } } } !---------------------------------------------------------------------------- scenery sharp_edges "sharp edges of the pod" { inherits component noun "edge", "edges", "portion", "pod", "wreckage", "metal" adjectives "sharp", "shredded", "edges", "pod", "metal","twisted","hull" article "the" part_of pod_wreckage is plural, sharp long_desc { "Sharp, jagged edges protrude from the wreckage." } before { object DoGet { "The edges are nothing but the exposed corners and shredded ends of hull metal. You can't take them from the wreckage." } } } !---------------------------------------------------------------------------- scenery pod_hatch "pod hatch" { nouns "hatch", "door", "slab" adjectives "pod's", "pod", "torn", "heavy" article "the" found_in CrashSite in covegn !So that "pull hatch from covegn" is recognized. is openable, not open !Just so we can trap for attempts to open it. long_desc { "The heavy, bulky pod hatch "; if (covegn.found_in = location) { "pins Covegn to the ground." if (terminal is not moved) and (terminal not in location) { !We're don't set it "moved" so that initial_desc works. !Don't auto-acquire it when all we're doing was looking at it. move terminal to location : print "" : PrintMessage(4,10) AssignPronoun(terminal) !Gives "it" to this object. } } else { "lays flat nearby." !TO-DO: Does this really sound right, though? } } before { object DoOpen,DoClose { "At this point, the hatch is nothing more than a heavy slab lying face-down near the wreckage. It was completely torn from Pod Four, no longer in any position to "; : print word[1]; "." } object DoGet,DoPush,DoPull,DoMove { "You tried moving it even while the Ensign was still alive. It won't budge." } object DoLookUnder, DoSearch { if (terminal is not moved) and \ (covegn.found_in = location) and \ (terminal not in location) { move terminal to location : PrintMessage(4,10) print "" : perform(&DoGet, terminal) AssignPronoun(terminal) !Gives "it" to this object. } else { if (covegn.found_in = location) { "Only Covegn's pinned legs are under the pod hatch now." } else { "You can't see under the pod's hatch now." } } } } } !---------------------------------------------------------------------------- scenery sirius_wreckage "wreckage of the\I Sirius Dream\i" { inherits distant_scenery !Because it's not in the same room. nouns "wreckage", "sirius", "dream", "glow", "starship", \ "ship","craft","spaceship" adjectives "blazing", "faint", "larger", "sirius", "burning", \ "flaming", "crumpled" article "the" found_in CrashSite, NorthRoom, Chase_room1, Chase_room2, Chase_room3, \ Chase_room4, Chase_room5, Chase_room6, SiriusDream long_desc { !Note that this also doubles as "n_obj.long_desc" in some areas. if (location = CrashSite, NorthRoom, Chase_room1, Chase_room2) { "You can only make out a faint glow to the north, about where the\I Sirius Dream \imay have crashed." } elseif (location = Chase_room3,Chase_room4) { "The wreckage of the\I Sirius Dream \iis identifiable as a glowing bulk far to the north." } elseif (location = Chase_room5,Chase_room6) { "To the north, the burning wreckage of the\I Sirius Dream \iis visible." } elseif (location = SiriusDream) { "The wreckage rests longways to the north, long and tall enough to block the horizon. Many fires have erupted from the length of it, burning hot from internal venting and fuel leaks. What used to be a sleek, recent-model Consortium starship is now a twisted, crumpled mess." } } after { xobject DoPoint { if (object = terminal, receptor) { if (power_cell not in term_slot) { print "The terminal's solar receptor might soak up light, but not heat. "; capital word[1]; "ing it at the burning wreckage accomplishes nothing." : return true } } return false !Default handling } } } !---------------------------------------------------------------------------- scenery crash_site "crash site" { inherits distant_scenery !Because it's not in the same room. nouns "wreckage", "wreck", "site", "crash", "pod", "sphere", "light" adjectives "pod", "crash", "capsule", "shaped", "capsule-shaped", "sphere" article "the" found_in RockSite, WestRoom long_desc { !This also doubles as "n_obj.long_desc" when in RockSite, and !e_obj.long_desc when in WestRoom (so don't mention direction) "The crash site is visible in the distance as a small sphere of light shining on capsule-shaped wreckage." if (creature in CrashSite) { "You can just see the creature's form, still prowling the wreckage." } } } !---------------------------------------------------------------------------- scenery beacon_post "beacon post" { !MISC #1 = whether the player has already seen the beacon reminder. misc false nouns "beacon", "post" adjectives "beacon" article "the" found_in CrashSite is switchable, switchedon, light, platform, openable, not open capacity 0 !It can't actually hold anything, of course. long_desc { "This is the beacon you salvaged from the wreckage, shortly after the crash. It stands on three little legs and casts a dim light. "; if (distress_signal is switchedon) { "A small green light flashes on the beacon's base, showing that the distress signal is working." } else { "In your rush to aid Huchess and Covegn, it seems you forgot to turn on the beacon's built-in distress signal." } } before { object DoOpen, DoClose { print CThe(self); " has no parts that you can "; word[1]; "." } xobject DoTie, DoWrap { if (object = netting_ribbons) { if (word[1] = "cover") { print "You wrap"; } else { print "You "; word[1]; } " a ribbon of netting around the beacon post, but after a moment, you remove it again. Its internal sensor can detect tampering, and besides, it won't help to tie anything to the beacon." } elseif (object = shard) { perform(&DoPutIn,object,xobject) !Use pre-made handling. } else { return false !Default handling. } } xobject DoPutIn { if (object = shard) { if (shard is light) { "The shard already glows." } else { print "The rocks on this planet store heat and convert it into light, but the beacon's light isn't hot at all. Bringing "; The(shard); " near the beacon does nothing." } } elseif (object = terminal) { PrintMessage(3,6) !Nothing is to be gained by that. } else { return false } } object DoSwitchOn { "The beacon is already on, casting a dim light across the crash site. A button lower on the base can be used to turn "; if (distress_signal is switchedon) { "off "; } else { "on "; } "the distress signal." } object DoSwitchOff { "It's dark enough even with the beacon on. Turning it off is a bad idea, and you decide against it." } object DoGet { "You already moved it here from the wreckage of the pod, propped it up and turned it on. It's too tall and too heavy to carry around with you. It serves its purpose right where it is." } } } !---------------------------------------------------------------------------- scenery distress_signal "distress signal" { inherits component !MISC #1 = we tried to turn off the beacon. !MISC #2 = whether or not Huchess was alive at the time we turn it on. misc false, false parse_rank 2 !To avoid ambiguity with the signal button nouns "signal" adjectives "distress", "built-in" article "the" part_of beacon_post is switchable, not switchedon, platform capacity 0 !It's not holding anything. long_desc { "An emergency distress signal is part of every beacon post. You were very lucky to find one intact, even though the Runoma system is far enough removed from Consortium space as to make rescue unlikely. The signal "; if (distress_signal is switchedon) { "is now on, broadcasting your emergency message." } else { "has not yet been switched on." } } before { xobject DoPutIn { perform(&DoPutIn,object,beacon_post) !Redirect to the beacon. } object DoSwitchOff { if (self is switchedon) { if (self.misc #1) { "No, the signal is your only hope of rescue." } else { self.misc #1 = true "Now that the signal is on, you should leave it on. Rescue might be unlikely, but with no distress call, it would be almost impossible." } } else { print CArt(self); " isn't on yet." } } object DoSwitchOn { if (self is switchedon) { "You have already activated the distress signal." } else { return false !Okay to turn on. } } object DoListen { if (self is switchedon) { "The signal is inaudible, but any nearby Consortium ship will hear your distress call on emergency channels. Being realistic, you don't expect a prompt rescue." } else { "The signal hasn't been switched on." } } } after { object DoSwitchOn { "You press the button on the beacon post to enable the distress signal. At the optional prompt, you record the situation in brief. \"Emergency! "; if (huchess is alive) { self.misc #2 = true } else { self.misc #2 = false } PrintMessage(9,8,self.misc #2) !Two versions of the message. print "\"" !End quote on the message. "\nThe message will continue to broadcast on repeat, although you aren't aware of any other ships in or near the Runoma system. If you're wrong, at least they can monitor the area through remote access once they arrive in-system. The distress signal also activated a camera transmitter in the beacon post." } } } !---------------------------------------------------------------------------- scenery distress_button "distress button" { inherits component nouns "button" adjectives "distress" article "the" part_of beacon_post is switchable long_desc { "It's the button for the built-in distress signal." } before { object DoPush { if (distress_signal is switchedon) { perform(&DoSwitchOff, distress_signal) } else { perform(&DoSwitchOn, distress_signal) } } object DoSwitchOn,DoSwitchOff { perform(verbroutine, distress_signal) } } } !---------------------------------------------------------------------------- scenery internal_sensor "tamper-sensor" { inherits component nouns "sensor", "tamper-sensor" adjectives "tamper", "internal" article "the" part_of beacon_post is switchable, switchedon long_desc { "Somewhere inside the beacon is a sensor meant to deter tampering. Its of no use to you, though." } before { object DoSwitchOn,DoSwitchOff { "It goes on and off with the beacon. Besides, there is no reason to do that. You have no need to tamper with it." } } } !---------------------------------------------------------------------------- scenery camera "camera transmitter" { inherits component nouns "camera", "transmitter" adjectives "camera" article "the" part_of beacon_post long_desc { "You can't see it, but a remote access camera is inside the beacon post. It does you no good here, of course, but any Consortium ship with a PrimeCom console (and most have dozens of them) should be able to monitor the situation from an in-system proximity." } } !---------------------------------------------------------------------------- scenery landscape_rocks "rocks and spires" { !Note that we don't use singular "shape" because that's the creature. inherits distant_scenery !Because it's not in the same room. nouns "rocks", "shapes", "spires", "rock", "spire", "boulder", "boulders", "arches" adjectives "curving", "leaning", "desert", "twisting", "angular" found_in CrashSite, RockSite, WestRoom, NorthRoom, Chase_room1, \ Chase_room2, Chase_room3, Chase_room4, Chase_room5, \ Chase_room6, SiriusDream is plural article "the" long_desc { "The shapes are large black cut-outs against near-black. Before nightfall, they were blue and white rocks, and they coruscated like sculpted glass in a fire. Now, they are as bleak as the desert itself." if (location = CrashSite,WestRoom) { print "" : PrintMessage(4,1) } } before { object DoGet { if (location ~= RockSite) { "Large rocks dot the landscape, almost invisible in the planet's night. None are nearly close enough to reach from where you "; if (location = CrashSite,WestRoom) { "stand. "; : PrintMessage(4,1) } else { "stand." } } else { perform(&DoGet,arch_rock) !Perform it on the real rock. } } object DoHit, DoCut, DoChisel, DoTouch, DoLook, DoStab, DoPry { !Redirect these actions to the main rock, when in RockSite if (location = RockSite) { perform(verbroutine,arch_rock,xobject) } else { return false !Default messages } } xobject DoTie, DoWrap { !Redirect these actions to the main rock, when in RockSite if (location = RockSite) { perform(verbroutine,object,arch_rock) } else { return false !Default messages } } } } !---------------------------------------------------------------------------- scenery landscape_netting "emergency netting" { nouns "net", "netting" adjectives "emergency", "spongy", "piece", "crash" found_in CrashSite article "the" is cuttable !Just to support some attempts. long_desc { "Emergency netting is strewn in fragments around the crash site. The material is thick and spongy, but lightweight. The wind has already begun to spread it out and away to the surrounding desert." if (netting is not moved) { !Don't auto-acquire it when all we're doing was looking at it. netting is moved : move netting to location "\nA smaller piece, half the size of a bed sheet, is swept to your feet by a strong, cold wind." } } before { object DoSearch { if (netting is moved) { !Originally, we don't allow a search for the vellum. After !15 turns, it blows away and we see it. However, once the !player sees it, if they start over, they're probably gonna !search for it. We *must* make it blow west to give them a !reason to go retrieve it, but at least we can let them find !it here. But mention that it would have blown away anyway. if (vellum in nothing) { "You notice a sheet of vellum previously overlooked among the large scraps. It ripples in the wind, partially snagged between ground and netting. It seems poised to blow away. In fact, you suspect that it would have done just that eventually, had you not noticed it there." "\nAs you reach for it, a strong wind whips it up and away. It blows west, drifting away from the crash site and into the darkness. "; !Adding this sentence mainly because players were thinking !the vellum was part of the netting. Make it more known. PrintMessage(9,11) !The type used for command orders. move vellum to WestRoom : vellum is known Activate(vellum_reminder, 9) !In case the player forgets. } else { return false !Default message - nothing else to find! } } else { Perform(&DoGet, self) } } object DoGet { if (netting is moved) { "The rest of it is too large to be of obvious use." } else { "You locate a smaller piece, about half the size of a bed sheet, among the larger scraps of netting." print "" : move netting to location perform(&DoGet, netting) } } object DoCut, DoRip, DoStab { if (xobject = nothing) or (xobject is not sharp) { return false !Default message } else { !Prevent the player from doing it. "You'll have to collect a piece of it first." } } } } !---------------------------------------------------------------------------- scenery spike_in_huchess "spike" { !Serves as a placeholder until we remove the spike from Huchess. parse_rank 2 !So that it can come above our "other" fake spikes. nouns "spike", "rod", "pipe", "pole" adjectives "heating", "core", "metal" article "a" is sharp, switchable, not switchedon found_in huchess !Literally found in Huchess... in huchess !To support "remove spike from..." long_desc { run spike.long_desc !Piggyback off the spike's real description. } before { object DoGet,DoPull { if (creature in location) and (covegn.found_in ~= location) { !The creature is here, and going after Huchess now. PrintMessage(3,11) } else { if (xobject = nothing,huchess,spike_wound,huchess_shoulder) { if (huchess is alive) { "Carefully, slowly, you grip the heating core spike just above its inset lever, and pull it up and out of Lieutenant Huchess. His eyelids tremble and his body shakes, but he remains unconscious until the rod is completely removed." !Beta 9/23/05 -- give players one extra turn. !if (huchess_health.timer > 4) { ! Activate(huchess_health, 4) !} if (huchess_health.timer > 5) { Activate(huchess_health, 5) } } else { "You pull the heating core spike from the dead Lieutenant's shoulder." } print "" spike_in_shoulder.found_in = nothing : remove spike_in_shoulder spike_in_huchess.found_in = nothing : remove spike_in_huchess spike_in_wound.found_in = nothing : remove spike_in_wound move spike to location : perform(&DoGet, spike) } else { print "No, "; The(spike); " is in the Lieutenant's shoulder." } } } object DoSwitchOn, DoSwitchOff { perform(verbroutine,spike) } } after { !Allow the *real* spike to respond to *after* events! xobject DoTie, DoWrap { xobject = spike : return spike.after } } } !---------------------------------------------------------------------------- !This is basically another reference to the spike, so that we can refer to !it in another way... "remove spike from wound" in other words. ! scenery spike_in_wound "spike" { inherits spike_in_huchess parse_rank 1 !To avoid ambiguity with the main "spike_in_huchess" found_in spike_wound in spike_wound } !---------------------------------------------------------------------------- !This is basically another reference to the spike, so that we can refer to !it in another way... "remove spike from shoulder" in other words. ! scenery spike_in_shoulder "spike" { inherits spike_in_huchess parse_rank 1 !To avoid ambiguity with the main "spike_in_huchess" found_in huchess_shoulder in huchess_shoulder } !---------------------------------------------------------------------------- scenery spike_wound "spike wound" { nouns "wound", "injury", "wounds" adjectives "spike", "huchess's", "huchess", "shoulder", "lieutenant's" article "the" parse_rank 1 !To avoid ambiguity with the main "spike_in_huchess" !Note that we can't put the spike wound in the shoulder, otherwise there !are multiple spikes matched on "get spike from shoulder" etc. So lets !put the wound directly in huchess instead. !found_in huchess_shoulder !in huchess_shoulder found_in huchess in huchess is platform, container capacity 0 !Because it's not *really* a platform or container long_desc { "The wound in the Lieutenant's shoulder "; if (spike is moved) { if (huchess.misc #1) { "has been bandaged with long ribbons of crash netting." } else { "is a mess of blood and skin. "; if (huchess is alive) { "The active bleeding has to stop soon, or the Lieutenant will die." } else { "This is the injury that finally proved fatal." } } } else { "is plugged by the heating core spike. It will have to come out." } } before { object DoWrap { !We'll let "wrap wound" work implicitly. if (xobject = nothing) and (netting_ribbons in player) { "(with netting ribbons)" Perform(&DoWrap,netting_ribbons,huchess_shoulder) } else { return false !Default handling. } } xobject DoWrap,DoPutIn,DoTie { perform(verbroutine,object,huchess_shoulder) } } } !---------------------------------------------------------------------------- scenery huchess_shoulder "Lieutenant's wounded shoulder" { nouns "shoulder", "arm" adjectives "huchess", "huchess's", "huchess'", "wounded", "left" article "the" found_in huchess in huchess is platform capacity 0 !Because it's not *really* a platform parse_rank 1 !To avoid ambiguity with the main "spike_in_huchess" long_desc { if (spike is moved) { if (huchess.misc #1) { run spike_wound.long_desc !Wound has been bandaged. } else { "Lieutenant Huchess has a wound through one shoulder, left exposed and open in the absence of the spike." } } else { "A metal spike juts from the Lieutenant's left shoulder." } } before { !We do this here, because "put on huchess" is a redirect to shoulder. xobject DoPutIn { if (object = netting, netting_ribbons) { return false !It's okay to try it. } else { PrintMessage(2,6,huchess) } } object DoWrap { !We'll let "wrap huchess" work implicitly. if (xobject = nothing) and (netting_ribbons in player) { "(with netting ribbons)" Perform(&DoWrap,netting_ribbons,self) } else { return false !Default handling. } } } after { xobject DoWrap,DoTie { if (huchess.misc #1) { print "You have already bandaged "; The(self); "." } elseif (object = netting) { PrintMessage(9,5,object) !Too large to use as a bandage. } elseif (object = netting_ribbons) { if (creature in location) and (covegn.found_in ~= location) { !The creature is here, and going after huchess now. PrintMessage(3,11) } else { if (spike is moved) { !Success. We bandaged the wound. huchess.misc #1 = true !Flag it. "You wrap a couple of the long pieces of netting "; print "securely around "; The(self); ". "; if (huchess is alive) { Deactivate(huchess_health) !No longer in danger "The flow of blood is reduced by the tie-off, and the netting serves to soak up the rest. Huchess breathes heavily, but he seems stable now." } else { "This might have worked when he was still alive, but the effort is wasted on him now." } } else { "You can't bandage the wound until you remove the spike from his shoulder." } } } else { return false !Give default messages. } } } } !---------------------------------------------------------------------------- scenery crag_line "crag line" { inherits distant_scenery !Because it's not in the same room. nouns "crags", "crag", "line", "mountain", "mountains" adjectives "jagged", "crag", "distant", "jutting" article "the" found_in CrashSite long_desc { "To the distant west, in line with the horizon, a line of jutting mountains could be seen before sundown. Now, not much is visible beyond the circle of light cast by the beacon post." } } !---------------------------------------------------------------------------- scenery desert "desert land" { nouns "desert", "land", "ground" adjectives "dry", "desert" article "the" found_in CrashSite, RockSite, WestRoom, NorthRoom, SiriusDream, \ Chase_room1, Chase_room2, Chase_room3, Chase_room4, \ Chase_room5, Chase_room6 door_to { if (location = CrashSite) { "The desert surrounds the crash site in all directions. If you intend to explore, be more specific." } else { PrintMessage(9,15) } } long_desc { if FindLight(location) { "Dry desert stretches for hundreds of miles all around. In the darkness of night, though, you can only see a short ways in any direction." } else { "You can't see much of it in the dark." } } } !---------------------------------------------------------------------------- scenery uniform_scraps "scraps of your uniform" { nouns "uniform", "remains", "scraps", "ribbons", "bandages", "shreds" adjectives "scraps", "uniform", "remains", "shreds" article "the" is rippable, cuttable, plural found_in covegn, huchess long_desc { "Ribbons of blue and brown fabric -- the remains of your uniform -- are wrapped as bandages around "; if (covegn.found_in = location) { "their "; } else { "his "; } "various wounds." } before { object DoUnWrap, DoUnTie { perform(&DoGet,self,xobject) } object DoGet { "The makeshift bandages are blood-soaked and tightly knotted around "; if (covegn.found_in = location) { "their "; } else { "his "; } "wounds. You can't -- and probably shouldn't -- take back the scraps of your uniform." } object DoRip { PrintMessage(3,1,self) } object DoCut { if (xobject = nothing) or (xobject is not sharp) { return false !Default message } else { PrintMessage(3,1,self) } } } } !---------------------------------------------------------------------------- scenery covegn_uniform "Covegn's uniform" { nouns "uniform", "clothes", "suit", "clothing" adjectives "covegn","ensign","ensigns","covegn's","ensign's","covegns" found_in covegn in covegn !So that "get X from Y" will work. is rippable, cuttable long_desc { "Her uniform was badly torn in the crash. Some of it now serves as bandages, while the rest remains to protect her postmortem modesty." } before { object DoUnWrap { perform(&DoGet,self,xobject) } object DoGet { if (xobject = nothing,covegn) { if (huchess is alive) and (not huchess.misc #1) and (spike is moved) { !Players might try taking her uniform to bandage Huchess. !So if that's the case, give a different message here. "It would take too long, and Huchess is running out of time. Perhaps something else might be used for bandages." } else { PrintMessage(3,2,covegn) } } else { print "No, that uniform is on "; the(covegn); "." } } object DoRip { PrintMessage(3,1,self) } object DoCut { if (xobject = nothing) or (xobject is not sharp) { return false !Default message } else { PrintMessage(3,1,self) } } } } !---------------------------------------------------------------------------- scenery huchess_uniform "Huchess's uniform" { nouns "uniform", "clothes", "suit", "clothing" adjectives "huchess", "lieutenant", "huchess's", "lieutenant's" found_in huchess in huchess !So that "get X from Y" will work. is rippable, cuttable long_desc { "The Lieutenant's uniform is torn in several places, "; if (huchess is alive) { "but it serves to keep him warm." } else { "but in death, it doesn't matter." } } before { object DoUnWrap { perform(&DoGet,self,xobject) } object DoGet { if (xobject = nothing,huchess) { if (huchess is alive) { "The uniform, damaged though it is, can still keep him warm." } else { PrintMessage(3,2,huchess) } } else { print "No, that uniform is on "; the(huchess); "." } } object DoRip { PrintMessage(3,1,self) } object DoCut { if (xobject = nothing) or (xobject is not sharp) { return false !Default message } else { PrintMessage(3,1,self) } } } } !---------------------------------------------------------------------------- scenery arch_rock "arched rock" { parse_rank 2 !So it takes priority over "landscape_rocks" nouns "rock", "boulder", "arch", "surface" adjectives "arched", "angular", "cold", "smooth" found_in RockSite article "the" is cuttable, platform capacity 0 !It's not really a platform, you know... long_desc { "A web of thin cracks covers a surface that is cold and smooth to the touch. The arch is wide and thick, taller at its apex than you stand. "; if (shard is moved) { "Removal of the shard has left a notch in the arch." } else { "Covegn had been reviewing the research on Runoma II, before the emergency. This planet is the subject of a territorial dispute with the Jun Voar, and rocks like this are the reason. They store and convert energy from direct heat into light." } } door_to { "You step through the large opening under the arch, but nothing happens. It's not a doorway -- just a large rock." } before { xobject DoPutIn { if (object = spike) and (shard is not moved) { "You put the spike against the arch of rock, but nothing happens. It might help to be a little more forceful, or use its cracks to your advantage." } else { PrintMessage(3,6) !Nothing is to be gained by that. } } object DoGet { if (shard is moved) { PrintMessage(3,7) !Already taken a shard. } else { "You can't possibly take the whole rock with you." } } object DoHit, DoCut, DoChisel, DoStab, DoPry { if (xobject = nothing) or (xobject is not sharp) { if (verbroutine = &DoHit) { if (xobject = nothing) { "Without using something kind of sharp and solid, that won't affect the rock." } else { "The rock is unaffected by that." } } else { return false !Default message } } else { return false !It's okay to chisel it. } } } after { object DoClimb { print "Even if you could climb "; The(self); ", "; "the point of view is no better than here on the ground. You have no need to try." } object DoTouch { if (xobject = nothing) { "Smooth and cold, with thin cracks throughout." } else { return false !Default messages. } } object DoHit, DoCut, DoChisel, DoStab, DoPry { if (shard is moved) { PrintMessage(3,7) !Already taken a shard. } else { "Using the bloodied spike as a chisel, you bang it against the rock and pry the cracks until a stone shard comes loose in your hands." print "" : shard is moved : move shard to location rock_notch.part_of = arch_rock perform(&DoGet, shard) : AssignPronoun(shard) } } xobject DoTie, DoWrap { if (object = netting_ribbons) { "You might be able to tie netting around "; print The(self); ", but why? A smaller piece of rock would be better suited to the task." } elseif (object = spike) and (spike.misc #1) { print "The ribbon of netting tied to the spike isn't long enough to wrap around "; The(self); " as well. No matter. It's a needless effort, anyway. A smaller rock would be necessary to hold the spike's lever." } else { return false !Just give the default message instead. } } } } !---------------------------------------------------------------------------- scenery rock_cracks "cracks in the rock" { inherits component parse_rank 2 !So that it takes precedence over the cracks in term screen. nouns "web", "cracks" adjectives "web", "thin" article "the" part_of arch_rock in arch_rock !So "[verb] cracks in rock" works. is cuttable, container capacity 0 !Not really a container, just to support "put X in cracks" long_desc { "Thin cracks form a web around the arched rock." } before { object DoGet { perform(&DoGet,arch_rock) } xobject DoPutIn { if (object = spike) { perform(&DoPry,arch_rock,object) } else { return false !Default message } } object DoHit, DoCut, DoChisel, DoStab, DoPry { perform(verbroutine,arch_rock,xobject) } } } !---------------------------------------------------------------------------- scenery rock_notch "notch in the rock" { inherits component nouns "notch" adjectives "arch", "rock" article "the" is container !But not really capacity 0 !It can't actually hold anything. part_of nothing !Will be part_of arch_rock after the shard is taken. long_desc { "A notch was left in the rock where the shard used to be." } before { xobject DoPutIn { "It only exists because you removed a piece of the rock. The resulting notch is of no use to you, and nothing can be put into it." } } } !---------------------------------------------------------------------------- scenery sky "sky" { inherits distant_scenery !Because it's not in the same room. nouns "sky", "ceiling" article "the" found_in CrashSite, RockSite, WestRoom, NorthRoom, SiriusDream, \ Chase_room1, Chase_room2, Chase_room3, Chase_room4, \ Chase_room5, Chase_room6 long_desc { "Distant stars shine -- most, somewhat dimly -- in a deep black sky. Dark blotches, visible as voids that interrupt your view of the stars, are large clouds that drift swiftly by." } } !---------------------------------------------------------------------------- scenery stars "stars" { inherits distant_scenery !Because it's not in the same room. nouns "stars" adjectives "ceiling", "dim" article "the" is plural found_in CrashSite, RockSite, WestRoom, NorthRoom, SiriusDream, \ Chase_room1, Chase_room2, Chase_room3, Chase_room4, \ Chase_room5, Chase_room6 long_desc { run sky.long_desc !Piggyback off the sky's description } } !---------------------------------------------------------------------------- ! We use this as a placeholder when the creature can be seen from where we ! are now, but it's not in the same room with us. This way, the player can ! still refer to it without much problem. ! scenery fake_creature "creature" { inherits distant_scenery !Because it's not in the same room. inherits creature_base !Gives it nouns, pronouns, adjectives, & article. found_in nothing !We'll put it where it needs to be, later. long_desc { if (location = SiriusDream) { print CThe(self); " moves in and out of the fringes of light, shrinking into blackness before emerging again. You can't get a good look at it now, but it's larger than you, more muscular, and it stoops when it walks." } } order_response { PrintMessage(8,4) } before { object DoHello, DoTalk, DoTell, DoAsk, DoAskQuestion { PrintMessage(8,4) } object DoGet { PrintMessage(9,6) } } after { object DoListen { "Its frequent cries are raspy and metallic." } } } !---------------------------------------------------------------------------- ! This appears when the creature has been burnt and killed. It needs to be ! interactive enough that if the player tries to test it by pushing or ! kicking or stabbing or whatever, it'll give an appropriate response. ! scenery dead_creature "dead creature" { inherits creature_base !Gives it nouns, pronouns, adjectives, & article. found_in nothing !We'll put it where it needs to be, later. is not alive !Because, well... we have finally killed it! long_desc { "The creature is face-down on the desert ground, lifeless. Its body is charred and blackened, with clotted lesions and blisters over its back, arms, and legs. "; if (tooth is not moved) { "One pointed tooth from its gaping mouth has cracked and fallen to the ground. "; } "Finally, you can stop running." } order_response { PrintMessage(8,7) } before { object DoHello, DoTalk, DoTell, DoAsk, DoAskQuestion { PrintMessage(8,7) } } after { object DoWake { "No, it's definitely dead." } object DoEat { "It may come to that, yes. But not right now." } object DoListen { "Its burnt and blackened skin still sizzles." } object DoHit { "It moves not at all. It's definitely dead." } object DoTouch { "It still sizzles. Better to leave it alone." } } } !---------------------------------------------------------------------------- scenery sirius_debris "scraps and debris" { nouns "metal", "debris" adjectives "scraps" found_in SiriusDream article "the" !is plural !Don't treat as plural, because messages become weird. long_desc { "Scraps of metal and other debris litter the area. "; if (creature in location) and (power_cell is not moved) { "With the creature raging nearby, though, you can't search through it now." } else { "Slagged girders, bits of the short-range deflector, and crushed interior fixtures are of no use to you." if (power_cell is not moved) { if (terminal.misc #4) { !Verified that we know what we need. !Don't auto-acquire because we were only looking. power_cell is moved : move power_cell to location "\nWith an eye for something you can use among the debris, you spot a small power cell near the edge of the light." } else { !A clue that *maybe* we can look back in it later. print "" !Blank line before we do the next part. PrintMessage(9,2) !It all looks like junk right now. } } } } before { object DoSearch { if (power_cell is moved) { return false !Default message } else { Perform(&DoGet, self) } } object DoGet { if (power_cell is moved) { "The rest of it isn't worth taking." } else { if (creature in location) { PrintMessage(8,5) !Can't do it with creature here. } else { if (terminal.misc #4) { !Player knows they need it. "You rummage through the scraps and debris from the wreckage. Most of it -- bits of the short-range deflector, slagged girders, crushed interior fixtures that must have made their way out of breaches in the hull -- is of no use. After a short time, you manage to find exactly what you need. It's a small power cell.\n" : move power_cell to location perform(&DoGet, power_cell) AssignPronoun(power_cell) !Give it "it" condition. } else { !A clue that *maybe* we can look back in it later. PrintMessage(9,2) !It all looks like junk right now. } } } } } } !---------------------------------------------------------------------------- scenery named_debris "starship debris" { nouns "girders", "deflector", "fixtures" adjectives "slagged", "bits", "short-range", "short", "range", \ "crushed", "interior" found_in SiriusDream article "the" long_desc { "It's all part of the debris from the wreckage." } before { object DoGet, DoSearch { !Redirect these actions to the main debris. Perform(verbroutine,sirius_debris) } } } !---------------------------------------------------------------------------- scenery fuel_puddle "puddle of fuel" { nouns "puddle", "fuel", "depression", "pool" adjectives "puddle", "starship", "pool" found_in SiriusDream article "the" is container !So we can "put in" and "drop in" capacity 0 !Because, yes, it's not really a container. long_desc { "Starship fuel has collected in a puddle nearby. Whatever crack or furrow fed it was apparently interrupted before the source went up in flames. The burning wreckage, hot though it is, seems far enough back to prevent ignition. Still, it would be a mistake to get too close to the puddle." } door_to { PrintMessage(9,14) !supremely bad idea } before { object DoGet { "You have nothing to hold it in. Even if you did, filling anything with starship fuel seems unwise so near open fires. The heat alone is enough to ignite it." } xobject DoPutIn { if (object = shard) and (shard.misc #1) and (spike is switchedon) { perform(&DoThrowAt,spike,self) } elseif (object = spike) { perform(&DoThrowAt,object,self) } else { PrintMessage(9,4) } } } after { xobject DoThrowAt { if (object = shard) and (shard.misc #1) and (spike is switchedon) { perform(&DoThrowAt,spike,self) } elseif (object = spike) { if (spike is switchedon) { !We should allow it, because it will allow the !player to see what happens. We *could* cheat and !warn the player about what would happen, but I think !this will be more effective. We don't necessarily !even have to lose it, just lose the wrap only. They're !just going to undo it anyway. PrintMessage(9,3,self) : BurnThePuddle if (CreatureInFuel) { PrintMessage(8,6) !The rest of the text. CreatureIsDead !And now it's dead. } } else { "The spike isn't hot now, so throwing it into "; print The(self); " wouldn't pose a danger -- but at the same time, it seems pointless." } } else { PrintMessage(9,4) } } } } !---------------------------------------------------------------------------- distant_scenery fires "fires" { inherits distant_scenery !Prevent most attempts. nouns "fire", "fires", "flames", "flame", "blaze" article "the" found_in SiriusDream is plural long_desc { "Fires spill from leaks and openings in the battered starship hull. Better to keep your distance than to risk an accident." } door_to { PrintMessage(9,14) !supremely bad idea } before { object DoGet { "Fire moves by burning what it contacts. You have no reasons to waste anything you have by burning it. "; PrintMessage(9,10) !The fire is of no use to you. } object DoTouch { "You can't possibly get close enough to the burning wreckage. "; PrintMessage(9,10) !The fire is of no use to you. } xobject DoThrowAt { "No, you'll lose anything you throw at the burning wreckage. "; PrintMessage(9,10) !The fire is of no use to you. } xobject DoPoint { if (object = terminal, receptor) { Perform(&DoPoint,object,sirius_wreckage) } else { return false !Default handling. } } } } !---------------------------------------------------------------------------- scenery blood_stains "blood stains" { nouns "stains", "ground" adjectives "blood", "stained" found_in nothing !Moved to CrashSite when Covegn is gone. article "the" parse_rank 2 !So it takes prioritiy of regular ground. long_desc { "Blood-stained ground is all that remains where "; if (huchess.found_in = location) { "Covegn was." } else { "Huchess and Covegn used to be." } } } !---------------------------------------------------------------------------- scenery darkness "darkness" { nouns "night", "darkness" adjectives "dark" article "the" found_in CrashSite, NorthRoom, RockSite, WestRoom, Chase_Room1, \ Chase_room2, Chase_room3, Chase_room4, Chase_room5, \ Chase_room6, SiriusDream door_to { PrintMessage(9,15) } long_desc { "Night on Runoma II is thick and black. "; if (location = CrashSite) { "Without good reason, it seems foolish to venture too far away from the crash site." } else { "Dark desert land surrounds you for hundreds of miles." } } }