!########################################################################## ! The Isle of Statues ! 2012, Elmar Vogt ! elvogt@gmx.net, ontos1.wordpress.com !########################################################################## constant story "Elmar Vogt: The Isle of Statues"; constant headline "^A testbed to learn the basics of Inform 6^^Type ~about~ for information about the game and how to play, or ~help~ for assistance during the game.^"; release 2; statusline time; ! for the timed game, set the watch and the end time: constant START_TIME= 13*60+10; constant END_TIME= 20*60; constant TIME_PER_MOVE= 5; constant CANNON_SHOT= END_TIME-60; constant END_SUCCEEDED= 3; constant END_STAYED_TOO_LONG= 4; constant TASKS_PROVIDED= true; constant MAX_SCORE= 3; constant NUMBER_TASKS= 3; !array task_score -> 1 1 1; attribute been_asked; attribute water; attribute filled; include "parser"; include "verblib"; !########################################################################## !### places ############################################################### !########################################################################## object ship "The ~Curiosity~" with name "ship" "Curiosity" "liner" "sailing", description "You're on the deck of the ~Curiosity~, a sturdy ship in good condition.^To the east, in a little distance, you can see a small island, certainly not more than a few hundred yards across. The afternoon sun lets the sandy beaches glitter in gold, and yet, there is something dark, disturbing and forbidding about the island. It is not more than a few minutes' worth of rowing away.", e_to sea1, before[; Go: if(player notin boat && noun==e_obj){ "The boatswain asks, ~Do you plan to walk over water, Lieutenant?~"; } ], cant_go[; "The boatswain says, ~I think the Captain doesn't want us to go in that direction.~"; ], has light; ! ************************************************************************* object sea1 "On the ocean" with description "You're on the ocean, halfway between the ~Curiosity~ to the west, and the island to the east.", w_to ship, e_to beach, before[; Exit: "The boatswain complains, ~It's a bit cold for a swim, especially while we have this handy boat, don't you think?~"; ], has light; ! ************************************************************************* object beach "The beach of the island" with description "This is a beach of soft, almost powdery sand, gently sloping up towards a palm grove and the center of the island in the east. The beach is part of a tongue of land which projects for a few dozens of paces from the otherwise almost circular shape of the coastline. As far as you can tell, this is the only place of the island where it is possible to land with your boat. ^To the west, across the glittering sea, you spot the ~Curiosity~.", w_to sea1, e_to palm_beach, before[; Go: if((player notin boat) && (noun==w_obj)){ "The boatswain asks, ~Why don't we take the boat, Lieutenant, rather than swim by ourselves?~"; } ], has light water; ! ************************************************************************* object sandy_beach "You're standing on the northwestern beach of the island." with description "The incoming surf breaks on rocks and cliffs of slate-grey stone; this would certainly not be a safe place to land your boat. Under your feet, the sand has given way to pebbles and gravel of a darker, bluish hue. Here and there, streaks of ashen grains run across the ground. The wind appears strangely to be somewhat cooler here. ^To the east you see an olive orchard. In the south lies a little palm grove.", e_to olive_orchard, s_to palm_beach, has light; ! ************************************************************************* object olive_orchard "You're now in a small olive orchard." with description "All around you there is a dense thicket of olive trees with their characteristically crooked and warped, greyish stems and branches. The dark green leaves are almost solid, apparently hardened by the sand carried along with the wind, which has also polished them to a dark lustre. ^To the west, there is a piece of rocky beach. To the south, you can climb the central hill of the island.", w_to sandy_beach, s_to hill, has light; ! ************************************************************************* object cliffs "You're standing on top of granite cliffs." with description "You have reached the northern tip of the island. Standing on the top of the sheer granite rockface, you look down onto the waves breaking below you. From up here, the water looks almost black, while the wind seems to be even colder than before. No piece of vegetation is able to cling to the barren stones. ^You could jump down into the water and kill yourself, or go south.", s_to springroom, cant_go[; "You don't really want to drown yourself by jumping into the water."; ], has light; ! ************************************************************************* object palm_beach "You're in the middle of a small palm grove." with description "This is a very idyllic piece of a tropical island, with a bunch of coconut palms growing gaily, their leaves swinging in the mild breeze, and their roots planted in the warm, golden, almost white sand. ^The beach extends to the north and the south, where it turns into a little forest. To the west, there is a tongue of land where you went ashore. In the east, the island's only hill rises prominently, but the terrain is too steep for you to go there.", n_to sandy_beach, w_to beach, s_to forest, has light; ! ************************************************************************* object hill "You're on top of a hill, overlooking the little island." with description "The hill is the center of the island, and you can see that it really is only a few hundred metres across. To the west you see the little tongue of land where you arrived, and further out on the sea you spot the ~Curiosity~. The hill itself is covered with the granite rocks which seem to make up the better part of the island. Between the stones, here and there bushels of grass tremble in the wind. ^To the north, there is a small olive orchard. Between the trees you see something lying, but you aren't sure what it is. To the east you spot a little freshwater spring, and beyond that some structures which look like they could have been buildings once. To the south, there is what appears to be a natural labyrinth of rocks, and in the west there is a palm grove, but the sides of the hill are too steep for you to go that way.", n_to olive_orchard, e_to springroom, has light; ! ************************************************************************* object springroom "On sloping ground" with description "You're standing on a steeply sloping patch of grassy ground. ^From here, you can walk into all directions: To the north, there are cliffs, to the west there is the most prominent hill of the island. In the east you discern a few lonely and crumbling ruins.", n_to cliffs, w_to hill, e_to templeroom, s_to brookroom, has light; ! ************************************************************************* object templeroom "A temple" with name "temple", description "You're standing on the eastern coast of the island, where cliffs drop steeply down onto the ocean. From the barren ground of bluish-grey slate and granite, the silhouette of the ruins of what must have been an impressive building rises. You look closely at it, and you find that at its centre there must have been an altar of some kind. The walls and pillars surrounding it reach no more than two or three meters above the ground anymore. ^To the west, the ground rises slightly, and you can see a spring coming forth between the rocks. The row of cliffs extends further to the south.", w_to springroom, s_to cliffs2, has light; ! ************************************************************************* object forest "A forest" with description "You're passing through a small forest. The vegetation is not as lush anymore as it used to be in the palm grove, and the trees remind you more of the forest in your home England than of some tropical vegetation. The trees are square and broad, their bark overgrown with what is probably moss, but looks more like cobwebs. The undergrowth is sickly and mushy, but from up between the branches you can hear some birds sing -- the first you heard on this island. ^To the north, you can go back to the palm grove. To the east you see some odd rock structures between the trees.", n_to palm_beach, e_to labyrinth, has light; ! ************************************************************************* object labyrinth "A natural labyrinth" with description "You're walking through a fascinating landscape of rocks. They seem to be from khaki-coloured chalkstone, and apparently they were eroded over millennia to their current shape. They form a regular labyrinth through which you wind your way. Irregular holes in the top parts of the rocks were undoubtedly washed out from the rain and polished by the flying sand, but still they have all the appearance of windows and doors leading nowhere from the inside. There is an eerie quiet as the rocks shield you from the wind, the surf and the birdsongs. ^To the west, there is a little forest. In the east, you spot a piece of beach, presumably the southern coast of the island. To the north there is a hill, but its sides are too steep to climb up.", w_to forest, n_to labyrinth, e_to labyrinth, s_to labyrinth, before[; Go: if(noun==u_obj) "You're a mariner, not a mountaineer: You don't feel like climbing the rocks."; if(noun==d_obj) "What is your plan; do you want to dig a hole through the bedrock?"; ], after[; Go: if(noun==n_obj or e_obj or s_obj) print "You feel a bit dizzy and disoriented."; ], has light; ! ************************************************************************* object brookroom "On the southern beach" with description "You're at the southern end of the isle with no name. The beach is rocky, strewn with flotsam and seaweed, and while it is possible to walk around here , it would not have been a good landing place for your boat. ^To the north, you can walk up a slope towards the central hill of the island. To the west, there are odd-looking rock structures. You can't go further to the east, because here the rocks rise sharply to a series of cliffs.", n_to springroom, w_to labyrinth, has light; ! ************************************************************************* object cliffs2 "On top of steep granite cliffs" with description "You're at the south end of the island on the top of granite cliffs. Below you, the surf roars against the rocks with sounds that remind you of a mad rage; as if the sea was convinced the island should not be here. ^Short of killing yourself by jumping off the cliffs, all you can do is going back north to the strange temple.", n_to templeroom, cant_go[; "The boatswain holds you back: ~Are we feeling a little suicidal today, lieutenant?~ ^You feel obliged to agree that jumping down the cliffside is not the best idea."; ], has light; !########################################################################## !### objects and people ################################################### !########################################################################## ! ************************************************************************* object captain "captain" ship with name "captain" "commander" "boss" "chief", initial "On the ship's deck, the captain stands around.", description "He is a handsome captain of the merchant fleet. You've been to sea with him on several voyages: He's stern and with a firm resolve, not too quick to get in anger, though right now he looks somewhat worried. All in all, there's not much bad that could be said about him, and there's already been too much text for the small role he will play in this game.", life[; ask: switch(second){ 'watch', 'time': "~You do have a watch on you, don't you?~"; 'island', 'isle': "~The isle isn't chartered on our maps. We only came across it by accident. Other than that it's not very big, as you can see, we know next to nothing about it."; } if(captain has been_asked){ "~Haven't I already given you orders? Are you hard of hearing, man? Now see that you go to it!~"; }else{ give captain been_asked; "The captain replies, ~We're almost out of fresh water. The island over there may have a spring. Take the boatswain with you and see if you can fetch some water!^Be aware, though, that you need to be back before 6 o'clock. Otherwise I'll have to leave without you. We can't navigate these waters in the dark. One hour before we hoist anchor, I'll fire the ship's cannon, so you'll know it's time to return.~"; } ], orders[; "~Uhm,~ the boatswain reminds you, ~I guess the captain won't take orders from you.~"; ], daemon[; if(the_time>START_TIME+30 && captain hasnt been_asked && location==ship) "The captain shouts, ~Lieutenant, please come over here!~"; ], has male animate; ! ************************************************************************* object boatswain "boatswain" ship with name "boatswain" "coxswain" "mate" "sailor", initial [; if(boatswain in ship) "The boatswain stands around, hand in his pockets, and seems to be waiting for you."; else "The boatswain."; ], description "The boatswain is a hardy, weather-worn sailor. You've travelled with him on several trips already, and he impressed you with his ready wit and common-sense. At times, he takes a little too readily to drink, but then, who doesn't?", before[; fillme: "The boatswain declines, ~Frankly, I don't care too much for water. A glass of rum would be a different story. You wouldn't happen to have some grog, would you?~"; ], life[; ask: switch(second){ 'island', 'isle', 'name', 'origin': "The boatswain replies, ~This island has no real name. But some say, it's really the 'isle of statues'. Creepy, eh?~"; 'job', 'order', 'orders', 'action', 'purpose': "~You'd best ask the captain about that.~"; 'captain': if(captain hasnt been_asked) "~He's okay. Have you asked him for our orders yet?~, the boatswain replies."; "~He's an allright enough bloke, don't you think?~"; 'water': "~As the captain said, there might be a spring on the island.~"; 'girls', 'girl', 'woman', 'women', 'lass', 'lassie': "The boatswain grins. ~Oh, I sure could tell you some stories, but do you really think this are the place and time for it...?~"; default: return help_playerSub(); } give: move noun to boatswain; "The boatswain takes ", (the) noun, " from you, a bit disgruntled at having to carry yet more stuff."; ], orders[; go: "~Sorry, the captain wants me to stay with you all the time.~"; give: if(noun notin boatswain) "He doesn't have that."; move noun to second; "The boatswain hands over ", (the) noun, ", apparently quite happy he doesn't have to carry it anymore."; take: if(testscope(noun)==false) "~I can't see ", (the) noun, "~, the boatswain complains"; if(noun has static) "The boatswain refuses: ~I can't carry that!~"; if(noun has animate) "What would be the point of having the boatswain carry ", (the) noun, "?"; move noun to boatswain; "The boatswain follows your order, but somewhat grudgingly."; drop: if(noun notin boatswain) "~Sorry, I don't have that!~, the boatswain replies."; move noun to parent(boatswain); "The boatswain does as you bid him."; buryme: if(testscope(noun)==false) "There is no ", (the) noun, "to be seen."; if(noun~=skeleton) "It doesn't make sense to bury that."; <>; ], daemon[; move boatswain to location; ! hasn't really got to do with the boatswain, but fits nicely: if(the_time==CANNON_SHOT) "You hear the ship's cannon being fired in the distance, to remind you that you need to return within an hour, or they'll leave without you!"; if(the_time>END_TIME){ deadflag= END_STAYED_TOO_LONG; } if(barrel in ship && barrel has filled){ score++; deadflag= END_SUCCEEDED; } ], has male animate; verb 'help' * -> help_player; [help_playerSub; print "The boatswain tries to be helpful: "; ! in which stage of the game are we? switch(location){ ship: if(captain hasnt been_asked) "~You might want to ask the captain about our orders.~"; if(barrel notin player) "~We could take the barrel with us to fetch the water with.~"; if(player notin boat) if(barrel has filled) "~Come on, lieutenant, drop the barrel and we're done!~"; else "~Shall we take the boat to reach the island?~"; else{ if(barrel has filled) "~Let's leave the boat.~"; else "~Let's get to the island and see whether we can find water there.~"; } sea1: if(barrel hasnt filled) "~Let's see if we can land on the beach and find water. That's what the captain sent us for, after all.~"; else "~Let's get back to the ~Curiosity~ as soon as possible, lest they leave without us.~"; springroom, brookroom: if(barrel hasnt filled){ print "~Here is the water we need."; if(barrel in player or boatswain) " And we've got the barrel to carry water back.~"; else " But we need something with which to carry the water back.~"; } default: if(hill hasnt visited) "~We could climb up the hill over there and see if we can spot a spring.~"; if(barrel has filled) "~We have all we came here for. Let's get back to the ship!~"; if(templeroom has visited || hill has visited) "~Let's not bother too long with those statues. We need to get back to the ship.~"; "~We'd better not loiter for too long. Let's get the job done.~"; }; ]; ! ************************************************************************* object boat "small rowing boat" ship with name "boat" "rowing boat" "dinghy" "sloop" "yawl", description "A rowing boat, big enough for four people and some payload.", before[; Take: "It's too heavy to be carried around."; Fillme: "~That might not be the brightest idea~, the boatswain refuses."; Go: if(location==ship or sea1){ print "You and the boatswain row the little boat, with the boatswain whistling a little melody. "; return 1; } if(location==beach && noun==w_obj){ print "You and the boatswain row quietly back, while you ponder the island of statues."; return 1; } else{ print "You can't go over land in the boat."; return 2; } ], has static container enterable open; ! ************************************************************************* object barrel "water barrel" ship with name "barrel" "keg", initial "A water barrel is standing on the deck.", description [; print "A water barrel like they are used to store fresh water on sea voyages. It's just large enough that two people may carry it when it's filled. "; if(barrel has filled){ "You gently rock it and hear and feel that it's filled with water."; }else{ "You knock on it, and a hollow sound shows that the barrel's empty."; } ], before[; Empty: if(barrel has filled) "Pouring away the precious fresh water you fetched for the ship's crew? No way."; "The barrel is already empty."; ]; ! ************************************************************************* object spring "spring" springroom with name "spring", initial "A small spring breaks from the rocks here and flows away to the south.", description "The spring carries clear, fresh water on a winding path to the south. You can readily walk around it.", has static water; ! ************************************************************************* object grass "grass" springroom with name "grass" "leaves" "vegetation", description "Despite the presence of a spring, the grass is greyish with sickly twisted leaves.", before[; Eat: "The ship's cuisine leaves some to be desired, but you're not desperate enough to try to eat grass -- especially not the greyish variety growing here."; Take: "You try to pluck some of the grass, but you only cut your fingers in the process: The leaves have sharp edges. The torn lancet-shaped leaves emit a sweetly, foul odor."; ], has pluralname static; ! ************************************************************************* object brook "brook" brookroom with name "brook", initial "A brook running from the north.", description "The brook is a small stream of fresh water, coming from the north. Where you're standing, it crosses the beach and vanishes into the ocean to the south. It is narrow enough for you to easily jump across it.", has static water; ! ************************************************************************* object watch "pocket watch" with name "watch" "pocket watch" "timepiece", initial "A pocket watch", description "A brass pocket watch, well wound up.", before[; Examine: "The watch reads ", the_time/60, " of the clock and ", the_time%60, " minutes, more or less."; ], has worn; ! ************************************************************************* object pistol "pistol" palm_beach with name "pistol" "gun" "musket", initial "On the ground, there lies a rusty flintlock pistol.", description "A pistol which has been lying around obviously for several years, judging from the tarnished brass. It seems it isn't loaded anymore, but traces of soot clearly indicate that it has been fired in anger some time ago.", before[; Fireme: if(pistol in player) "The pistol gives off an empty, disappointing ~click~ sound. The flint is no good anymore, and it's not loaded anyway."; else "You have nothing to shoot with."; ], after[; Take: "You take the pistol, though it won't do you much good: It's empty, and you have neither powder nor shot."; ]; ! ************************************************************************* object skeleton "skeleton" olive_orchard with name "skeleton" "bones" "body" "dead", initial "Between the crooked trees, there lies the skeleton and remains of a dead man.", description "The bones of a human skeleton have been bleached to a dead white by the sun and the wind, and the fine sand from the beach has polished their surface to make them almost shiny. The grin of the jaws is uncanny, while the bare sockets of the eyes seem to stare at you in shock and surprise. Shreds of rotten clothing hang around the naked bones, but not nearly enough to make out who he was, or when he arrived on the island.", before[; Buryme: if((shovel notin player && shovel notin boatswain) || (pickaxe notin player && pickaxe notin boatswain)) "You have nothing to dig with."; if((second ~= nothing) && second ~= shovel or pickaxe) "That's hardly a suitable tool for digging."; if(skeleton hasnt concealed){ score++; give skeleton concealed; give crucifix ~concealed; print "You decide to give the skeleton a proper burial, and it doesn't take long to dig a small hole in the sandy ground. Soon, the small heap of bones is hidden from the elements, and the boatswain even managed to produce something like a crucifix from two sticks. You speak the Lord's Prayer and feel a slight sense of relief and deliverance -- not necessarily *your* deliverance."; if(bottle has concealed){ give bottle ~concealed; print "^Only when you're finished you notice a bottle which was hidden between the skeleton's rags of clothing, which now lies in the sand."; }; return true; }; ], after[; Examine: give skeleton general; ! if the skelton has been visited, he will be remembered ! when reading message2 if(bottle has concealed){ print "^A bottle drops from the bones as you respectfully turn them around."; give bottle ~concealed; }; ], has container transparent static; ! ************************************************************************* object crucifix "crucifix" olive_orchard with name "crucifix" "cross" "stick" "sticks" "wood", description "Two sticks of wood, tied together to form a crude crucifix to mark the skeleton's grave.", has concealed; ! ************************************************************************* object bottle "bottle" olive_orchard with name "bottle" "vessel" "glass", initial "A glass bottle, dirty, scratched and worn off", description[; print "The glass is dark, with smudges of grey dirt on it."; if(message1 in bottle) " When you take a close look at it, you can make out a piece of parchment or paper inside it."; ], before[; Attack: print "You break the bottle into a number of dirty shards."; if(message1 in bottle){ move message1 to parent(bottle); if(message1 in player) print " Before the wind can blow it away, you grab hold of the parchment."; else print " The parchment from the bottle drops to the ground."; }; if(bottle in player){ move shards to parent(player); print " The useless shards from the bottle fall to the ground."; } else move shards to parent(bottle); remove bottle; return true; ], has container openable transparent concealed; ! ************************************************************************* object message1 "parchment" bottle with name "shred" "parchment" "note" "letter", initial "A shred of parchment", description "A torn and tattered piece of parchment. A few letters are scribbled across it, faded and in places smeared, but still legible. It makes you wonder how the dead man could get hold of the parchment, and what he used to write his message with.", before[; Readme: if(message1 in bottle) "You try, but you can't make out anything through the glass."; else "You only make out a few letters, but their message is clear enough. The note reads ~Flee!~"; ]; ! ************************************************************************* object scabbard "leather scabbard" templeroom with name "leather" "scabbard" "sheath" "case", description[; print "A sheath or scabbard, made from leather. It is cylindrical in shape, about thirty centimeters long and several centimeters wide -- one of the cases one might use to store a telescope or such inside. It has obviously been lying around already for some time, as the weather has left its marks upon the leather, which has become greyish, faded and brittle."; if(skeleton has general) print "^The makeup and style indicate that it belonged to the dead mariner whose bones you found in the olive orchard."; return true; ], before[; Open: if(scabbard has open) "It's already open."; ], after[; Open: if(message2 in scabbard) print "You open the scabbard, and inside you see a piece of rolled-up paper or parchment."; if(scabbard hasnt general){ print "^A few grains of sand pour from the scabbard as well."; give scabbard general; }; return true; ], has container openable; ! ************************************************************************* object message2 "sheet of paper" scabbard with name "paper" "foolscap" "note" "letter" "message", initial "A ragged sheet of paper", description "It's a piece of foolscap, torn around the edges. The scabbard has apparently not managed to keep it completely sheltered from the elements, but the message, which was written on it with some kind of graphite or silver pencil is, though faint and in place washed away, still fairly legible.", before[; Readme: print "It's a note, written in some distress, as you can judge the handwriting: ^~Been marooned here for several weeks now. Don't know how long I will last. Some food always to be found, water from the spring to the east.^ But the statues... It's the rock and the crumbling sand. Whenever I turn away from them, they seem to move. Are they after me? I don't know. I don't sleep anymore. I'm fading. I wish they'd let me die.~^"; if(skeleton has general) "This must be from the poor fellow you discovered in the olive orchard."; else "You have no idea who could have written this."; ]; ! ************************************************************************* object shards "shards of glass" nothing with name "shards" "glass" "pieces", initial "pieces of glass", description "A number of dirty pieces of glass which once formed a bottle.", before[; Take: "There is no point in taking broken pieces of glass with you, and you change your mind and leave them."; ], has static; !************************************************************************* object crabs "crabs" beach with name "crabs" "crab" "hermit" "cancer" "crawfish" "crayfish", initial "A bunch of crabs crawl across the sand.", description "The crabs don't care much for you, and they scurry away from you, their pincers clicking angrily.", before[; Take: "You decide against it; their pincers look like they could cut nasty wounds in your flesh."; ], has animate; !************************************************************************* object crabs2 "crabs" sandy_beach with name "crabs" "crab" "hermit" "cancer" "crawfish" "crayfish", initial "A few crabs push their bodies over the gravely ground.", description "The crabs only crawl slowly, in a listless and seemingly confused manner. It appears almost as though they were blind.", before[; Take: "You change your mind once you realise the sickly appearance of the creatures."; ], has animate; !************************************************************************* constant DESCRIBE_STATUES= "The statues are made from some chalk, and, judging from their appearance, are extremely old. They must have once depicted both men and women, but the tropical rain, the saltwater spray, and the sand in the wind have eroded all the features. Now it's almost impossible to tell even what kinds of clothing the statues have worn. Their bare hands and feet have been reduced to stumps from the wind and weather."; object headless_statues "some statues" templeroom with name "statues" "headless" "figures" "figurines", initial "Between the crumbling walls of the temple, you discern the remains of several statues.", before[; examine: print "There are four statues. "; if(hill has visited) print "They are made from the same material as the crucified statues on the hill. "; else print (string) DESCRIBE_STATUES; "You can still tell that these all had their arms raised in a gesture of welcome... or defeat. ^But none of the statues has a head anymore. You look around, but they haven't fallen to the ground: They are completely gone, as if somebody had deliberately decapitated the statues. But who might have done that, and why is beyond you."; ], has static; !************************************************************************* object crucified_statues "some statues" hill with name "statues" "crucified" "mutilated" "figures" "figurines" "cross" "crosses", before[; examine: print "There are a handful of statues, lined up in a row. "; if(templeroom has visited) print "They have the same appearance, and seem to be made from the same material as the statues in the temple. "; else print (string) DESCRIBE_STATUES; "This is a gruesome and eerie display, though: There are fixed stone crosses, some three meters in height, and the statues have been attached to them. Yet you can tell that the figures were not originally crucified like this, rather, they must have stood with outstretched arms initially. Only later have they been affixed to the crosses with large bands of copper and copper spikes, which were driven through the palms and feet of the statues. ^And though the wind and the rain have washed away most of the features of the statues, and all the faces, it still looks like they all have thrown back their heads in agony."; ], has static; !************************************************************************* !* "fake" objects: ******************************************************* object the_island "distant island" with name "distant" "remote" "island" "isle", description "Through the haze, you can see an island in the distance to the East. It's not very large and dominated by a central hill. A beach which appears to make a good landing spot for a boat is facing you. The island is covered by vegetation, so chances to find fresh water there seem good.", before[; Examine, Look: if(location~=ship or sea1) "Well, you're examining it right now, aren't you?"; ], found_in [; return true; ! island is always present ], has scenery; !************************************************************************* object the_ship "ship" with name "ship" "sailing" "Curiosity", description "The merchant sailing ship has dropped anchor a few hundred metres from the beach of the small island. Everything is calm, and the ship appears to be in good condition.", found_in ship sea1 beach sandy_beach palm_beach forest olive_orchard hill, has scenery; !************************************************************************* object shovel "shovel" with name "shovel" "spade", description "A pretty ordinary shovel, the kind used to dig holes." ; !************************************************************************* object pickaxe "pickaxe" with name "pickaxe" "axe" "pick", description "A little rusty, but still useful to losen the earth before digging a hole." ; !************************************************************************* [initialise; location= ship; move watch to player; move shovel to boat; move pickaxe to boat; player.description= "You're a young lieutenant, second-in-command of the merchant ship ~Curiosity~. Neither particularly attractive nor ugly, you consider it your main job to be the right hand of the captain. You're wearing the usual outfit."; settime(START_TIME, TIME_PER_MOVE); ! set the timer and use five minutes per move startdaemon(boatswain); startdaemon(captain); "The good ship ~Curiosity~, a merchant liner, has folded its sails and lies at anchor to the west of a small island. The weather is fair, and the ship is in good order. You, the second-in-command of the ship, called the lieutenant, know the reason why the ~Curiosity~ has stopped near this remote, uninhabited, and mostly uncharted island: You're running short of water, and the nameless island seems a good opportunity to replenish your supplies.^^"; ]; [DeathMessage; switch(deadflag){ END_SUCCEEDED: print "^You have accomplished your mission: The ~Curiosity~ has its supply of fresh water, and you can continue on your cruise. ^The captain hoists the anchor, the sails are unfurled, and the wind pushes the ship onwards. ^In the afternoon sun, the nameless island with its spectres of the past, with its unsolved riddles and the remains of the hapless skeleton falls back behind you."; KeyCharPrimitive(); "^Quite soon, it vanishes behind the horizon."; END_STAYED_TOO_LONG: if(location==ship or sea1) "^You have failed: The time is up, and the captain can wait no longer. He has to heave anchor before nightfall, and sail away from the ~island of statues~. Without a fresh water supply, it's questionable whether the ~Curiosity~ will be able to reach a secure harbour."; else "^Suddenly, you realize that you've stayed on the isle of statues for too long: The ~Curiosity~ has heaved anchor and is sailing away with no hope of return. ^You are stranded on the island. And whatever is on this island with its statues, its temples and atmosphere of decay... will remain with you."; } ]; include "grammar"; verb 'talk' * 'to'/'with' noun 'about' noun -> ask; ! far from perfect extend 'fill' replace * noun 'from' noun ->fillme; [FillmeSub; ! print second; if(second == nothing) "From which source do you want to fill it?"; if(second hasnt water) "There is no water to obtain from ", (the) second, "."; if(noun has filled) print_ret (The) noun, " is already full."; if(noun has animate) print_ret (The) noun, " says ~Thanks, but I'm not thirsty.~"; if(noun == barrel){ score++; give noun filled; "Gluck gluck gluck -- You fill ", (the) noun, " with fresh water.";} else "I don't think this will work."; ]; verb 'bury' * noun -> buryme * noun 'with' noun -> buryme; [BurymeSub; if(location == ship or sea1) "Don't be ridiculous -- do you want to dig through the planks?"; if(noun ~= skeleton) "Why would you want to bury that?"; ]; verb 'shoot' * noun ->fireme; verb 'fire' = 'shoot'; [FiremeSub; "It's not possible to shoot with ", (the) noun, "."; ]; verb 'launch' = 'enter'; extend 'read' replace * noun ->readme; [ReadmeSub; "That's not something which can be read."; ]; verb 'about' * -> Aboutme; [AboutmeSub; "~The Isle of Statues~ -- 2012 by Elmar Vogt ^Contact: elvogt@@64gmx.net -- http://ontos1.wordpress.com ^Welcome to the world of interactive fiction! ^^To play the game, simply type the commands you want to see executed, like ~take cannon~, ~examine banana~ or ~talk to Napoleon about Russia~, and see what happens. The interpreter tries to implement a realistic world-model (within reasons...), and will respond to the best of its abilities. ^At any point in the game, you can ~save~ your current game state, ~restore~ a previous one or ~restart~ the game completely. ^As a rule of thumb, simple instructions will work best. Not every conceivable command will elicit a concrete response, and not all objects in the game are implemented. It may be useful to try different verbs, or different constructs -- ~Kill dwarf with mace~ may work, while ~use mace to kill dwarf~ may not. If an object appears to be unknown to the interpreter, it probably is unimportant. ^Useful commands are ~n~, ~e~, ~s~, ~w~ (short for ~go north~, etc.) and ~u and ~d~ (~up~ and ~down~), if appropriate, to move in the cardinal directions of the game world. ~l~ will look around (or at something), while ~x~ will ~examine~ an object (like ~x robot~). Some objects can be ~take~n (and ~drop~ped), and manipulated in other ways. ~i~ (~inventory~) gives you an overview of what you're carrying. If you type ~help~ or ~ask boatswain about ...~, your faithful companion will try to give you some advice. ^Finally: Finding out the purpose of the game is part of the game! ^^(This is the first interactive fiction game I've written, and as such it is more of a ~test~ than a true game in its own right -- I mostly wanted to see if I would get a grip on Inform 6, the programming language. ^Nonetheless a number of people have invested their time and given me valuable feedback on bugs and playability improvements: As such, I would like to thank Thomas Schäfer, ~katzy~, ~StJohnLimbo~, Peter Pears, ~Dannii~, and everybody else.) ^^Enjoy playing interactive fiction!"; ]; end;