//PARSE WITH NORMAL TADS OPERATORS #pragma C- Desc: object //KEEPS TRACK OF HOW THE PLAYER IS SOLVING THE PUZZLES Seer = 0 Warrior = 0 Alchemist = 0 Artisan = 0 list = [self.Seer self.Warrior self.Alchemist self.Artisan] wordlist = MaesterSeer.word + MaesterWarrior.word + MaesterAlchemist.word + MaesterArtisan.word current = nil ; //************Maester Actors*************// class floatingActor: floatingItem, movableActor //DUPLICATES ACTOR CLASS BUT WITH VARIABLE LOCATION PROPERTY thedesc = (self.sdesc) adesc = (self.sdesc) verDoTalkTo( actor ) = {} doTalkTo( actor ) = ( self.disavow ) verDoAttackWith(actor, io) = { "Propriety forbids.\n"; } verDoKick(actor) = { "Propriety forbids.\n"; } verIoPourOn(actor) = { "Propriety forbids.\n"; } isHim = true disavow = { if( self.location = Antechamber ) "You open your mouth to speak but <> raises a finger. You have only begun the path to becoming a <> young novice. Perhaps if you continue to prove yourself we will sit and talk after your testing is complete. Until then you are on your own. His smile takes some of the sting out of the rebuke but it is clear he is unwilling to talk.\n"; else "You attempt to speak to <> but he silences you with a motion from his hand. Now is not the time for words novice. Make your choice and continue on. You must look to yourself for answers."; } isListed = nil //THIS PREVENTS AWKWARDNESS IN THE FINAL SCENE WHEN THERE ARE FIVE MAESTERS IN THE ROOM ; Eloash: floatingActor //MAESTER SEER location = { if( Me.location = Antechamber and Desc.Seer = 1 ) return ( Antechamber ); else return ( FinalChamber ); } noun = 'seer' 'eloash' adjective = 'maester' sdesc = "Maester Eloash" ldesc = "Maester Eloash is most noted for his penetrating gaze. Standing before him you can understand why, it is hard to see anything but those eyes, staring at you, awaiting your decision.\n" sect = "Seer" ; Perat: floatingActor //MAESTER WARRIOR location = { if( Me.location = Antechamber and Desc.Warrior = 1 ) return ( Antechamber ); else return ( FinalChamber ); } noun = 'warrior' 'perat' adjective = 'maester' sdesc = "Maester Perat" ldesc = "Strong would be an understatement in describing Maester Perat. His grey hair only adds to the image of hardened steel that surrounds him. He watches you consideringly, awaiting your decision.\n" sect = "Warrior" ; Drummond: floatingActor //MAESTER ALCHEMIST location = { if( Me.location = Antechamber and Desc.Alchemist = 1 ) return ( Antechamber ); else return ( FinalChamber ); } noun = 'alchemist' 'drummond' adjective = 'maester' sdesc = "Maester Drummond" ldesc = "A sort of flowing tranquility surrounds Maester Drummond. Impossible though it may be, you are left with the impression that Maester Drummond and everything around him are somehow made up of liquids that could change form on a moments notice.\n" sect = "Alchemist" ; Tubal: floatingActor //MAESTER ARTISAN location = { if( Me.location = Antechamber and Desc.Artisan = 1 ) return ( Antechamber ); else return ( FinalChamber ); } noun = 'artisan' 'tubal' adjective = 'maester' sdesc = "Maester Tubal" ldesc = "Maester Tubal looks at you across the top of his wire-rimmed spectacles. Unruly white hair makes a sort of ridiculous bird’s nest atop his head but it hardly affects the air of extreme precision his movements convey.\n" sect = "Artisan" ; Torval: floatingActor //GRAND MAESTER location = { if( Me.location = FinalChamber ) return( FinalChamber ); else return( nil ); } noun = 'torval' adjective = 'grand' 'maester' sdesc = "Grand Maester Torval" ldesc = "Grand Maester Torval sits with the confidence that long years in his position have made a part of him. In fact, were it not for his warming smile you would probably find yourself unable to talk for lack of courage in the face of such an imposing presence.\n" disavow = "You attempt to speak to <> but he silences you with a motion from his hand. Now is not the time for words novice. Make your choice and continue on. You must look to yourself for answers." ; //***************************************// MaesterSeer: object //KEEPS TRACK OF ALL INFORMATION UNIQUE TO THE SEER SECT direction = "north" sdesc = "Seer" Maester = "Eloash" Antedesc = "The walls and ceiling of this room curve gradually so that the entire chamber is a distorted spherical shape. " firstsolve( num ) = { if ( num = 1 ) "finding the secret passage you discovered shows that you have the inquisitive mind of a Seer."; if ( num = 2 ) "looking behind a tapestry or two."; } Quit = "You’ve always been able to outsmart the Maesters and there is no reason the common people of the Empire will be any more difficult to fool. Life will be easy living in the outside world. " word = { if ( Desc.Seer = 0 ) return ''; if ( Desc.Seer = 1 ) return 'Perceptive '; if ( Desc.Seer = 2 ) return 'Sentient '; if ( Desc.Seer = 3 ) return 'Discerning '; if ( Desc.Seer = 4 ) return 'Wise '; } teaching = { if ( Desc.Seer = 1 ) "The joy of being a Maester Seer is that we do not struggle as the other orders do. The Alchemist must always strive to reconcile change and constancy, the Artisans must, at every turn, pit their wit against the world, and the Warrior must always be ready to risk life and limb in pursuit of the next goal. With the Seer this is not so, for we have come to realize that as water always flows downhill so also the best solution to any problem is the one which requires the least effort. The price that must be paid for this lack of struggle is an appearance of aloofness. The other sects, not understanding the ways of our sect, have come to think that because our thoughts cannot be understood in their way of thinking that we must be inordinately wise. In truth this is not so, to become a Seer one must only be patient and willing to wait until the solution presents itself rather than forcing a solution on the problem at hand."; if ( Desc.Seer = 2 ) "Seeing things that are obvious is one of the most difficult skills to master in becoming a Seer. The complicated is often easy to perceive because it is most often looked for. A person who finds a lock will invariably begin searching for a key but often forgets completely to check the lock and see if it is perhaps already open. This is how we overcome obstacles without a great deal of effort. If a problem is thought completely through before action is taken rather than after it will often solve itself, which is undeniably convenient."; if ( Desc.Seer = 3 ) "As a Seer becomes progressively more accomplished in their thinking the actions they take become less discernable by those around them. Reason and intuition begin to mingle in the mind of the Seer to the point that logical progression is often too slow and cumbersome to keep up with the intuitive leaps of the mind. The thoughts of a Seer at this point have a visionary aspect, or, to be more precise, the mind of the Seer becomes so accustomed to complete thinking that the end and beginning of a thing become one. In this way there is no longer a process of thinking a problem through to find a solution but rather the problem itself becomes the solution. The very idea of such a way of thinking is of course utter nonsense to anyone who has not attained it, this is the reason the other sects cannot comprehend our teachings."; if( Desc.Seer = 4 ) "Perhaps the most important knowledge that every Seer must grasp is the understanding that there are very few absolutes. To say that there are none is foolishness and contradictory at best. Acceptance is the mark of an accomplished Seer. To accept what comes and mold it into a desired shape is almost always better than fighting the natural flow of things to force an outcome. In all things what will happen will happen, changing this is just as likely to have bad results as good and so the effort required to make a change is waste. Choose a path and take it, but know that the choosing is far more important than the choice."; } ; MaesterWarrior: object //KEEPS TRACK OF ALL INFORMATION UNIQUE TO THE WARRIOR SECT direction = "south" sdesc = "Warrior" Maester = "Perat" Antedesc = "This is a small spartan room with a bearskin rug strewn across the floor. " firstsolve( num ) = { if ( num = 1 ) "breaking the door down demonstrates a directness that is necessary in a Warrior."; if ( num = 2 ) "taking an axe to an old door."; } Quit = "You are completely free of the Keep and all of its rules and regulations now and besides, the Empire is always in need of a few good soldiers. " word = { if ( Desc.Warrior = 0 ) return ''; if ( Desc.Warrior = 1 ) return 'Confident '; if ( Desc.Warrior = 2 ) return 'Determined '; if ( Desc.Warrior = 3 ) return 'Resolute '; if ( Desc.Warrior = 4 ) return 'Strong '; } teaching = { if ( Desc.Warrior = 1 ) "It is generally believed that the way of the Warrior is one of violence. We that have chosen this path know that such is not so. It is simply that the Warrior, being of clear and direct thought, understands that the surest, most expeditious way to a target is the direct path. While the Maester Artisans might call us reckless, we in turn would call them slow, and therein lies the balance of power within the Keep. When it is necessary to surmount an obstacle with great care and cunning one calls upon a Maester Artisan, however, when one wishes to accomplish a job quickly or by taking the most direct path it becomes necessary to call upon the Maester Warriors. We stand strong in our confidence, knowing that our solutions to each problem will always be correct so long as the desired ends have been reached."; if( Desc.Warrior = 2 ) "To be an adept Warrior one must have a measure of intelligence. The direct path is not always direct to the casual observer. A Warrior must know when to use force and when to hold back, waiting for a more opportune time. It also becomes essential for a Warrior to know where to apply force to a problem in order to see it solved. Push on a lever with all the force in the world and yet if it is designed to be pulled the force will do nothing. This is the wisdom of the Warrior Sect, having strength beyond that of the other orders we also have the responsibility to use such strength more carefully than they know."; if( Desc.Warrior = 3 ) "In most things the difficulty faced by the Warrior is not so much the application of force as it is finding where the application is necessary. Often times a Warrior must think like an Artisan in order to understand a problem completely and then, seeing a variety of solutions, choose the most expedient. In this the Artisans believe us ignorant as they claim to be the only order to look at all angles of a problem before choosing a solution. The difference is that after finding all of the possible solutions by thinking through the situation the Artisan will then choose the least destructive path. The Warrior will do much the same but instead choose the most direct path, regardless of other considerations. To the Warrior only the goal is important, all other considerations must be secondary."; if( Desc.Warrior = 4 ) "The Warrior must always remember that chief among all responsibilities of our sect is the protection of others. Our order is called upon in times of great need where the difference between life and death is a moment of hesitation. In such times the approach of any other sect is a sure path to failure and so the burden falls upon the shoulders that are most able to bear it: the Warrior. Many times other sects will see us as inferior because our ways are less careful, less particular. But this is a necessity when crisis is upon the Tower, when speed is of extreme importance the other sects will no longer mock the teachings that they could not understand. We patiently accept their scorn knowing that the day will come when they must depend upon our strength."; } ; MaesterAlchemist: object //KEEPS TRACK OF ALL INFORMATION UNIQUE TO THE ALCHEMIST SECT direction = "east" sdesc = "Alchemist" Maester = "Drummond" Antedesc = "The walls of this room are litered with various symbols of the Alchemist order. " firstsolve( num ) = { if ( num = 1 ) "burning the door down shows that you understand the properties of change."; if ( num = 2 ) "setting fire to an old door."; } Quit = "The Maester Alchemists are always talking about change and yet for some reason they see nothing wrong with leaving a novice to study the same books day in and day out for eternity. At least life out in the Empire will be more interesting. " word = { if ( Desc.Alchemist = 0 ) return ''; if ( Desc.Alchemist = 1 ) return 'Ductile '; if ( Desc.Alchemist = 2 ) return 'Mutable '; if ( Desc.Alchemist = 3 ) return 'Transient '; if ( Desc.Alchemist = 4 ) return 'Protean '; } teaching = { if ( Desc.Alchemist = 1 ) "The goal of a successfull Alchemist is to see the world always in a state of flux. There can be no constants in the mind of a Maester of our order, for all things change, and must be seen to do so if one is to overcome the obstacles brought on by the study of Alchemy. It is the harnessing of the power of change that is our true strength. Change of itself is no better than chaos, for in their natural states the two feed off of eachother in a necessarily symbiotic existence. The Maester Alchemist however must become an adept at separating change and chaos; bringing about change in the midst of order is the great challenge of our sect."; if ( Desc.Alchemist = 2 ) "The Alchemist must always find the means for change in a problem. In all cases it exists, but it is not always obvious. A Maester of our order learns to recognize opportunities for change and take advantage of them. More than simply recognizing the possibility for change though, an Alchemist must also see how to use change to its best effect. There is a perfect timing that must be adhered to in order for any change to have the greatest, or most desired effect. Learning to see this order amidst change is essential, without it we become little more the purveyors of chaos."; if( Desc.Alchemist = 3 ) "It is sometimes noted by those outside out sect that the solutions arrived at by an Alchemist are very similar to those that a Warrior might arrive at. For instance when faced with a wooden door an Alchemist might attempt to burn it down while a Warrior might instead try to break it down. The casual observer would say that in each case the door is destroyed and thus the solutions were similar. This could not be further from the truth though. The difference lies largely in the approach to the problem. The Warrior focuses only on how to remove the problem and often uses force to do so. The Alchemist however, does not focus on the removal of the problem but rather on changing the problem into a form that is more easily dealt with. The Alchemist would therefore say that the door has not been destroyed, it has simply been transformed. Understanding the distinction is a difficult step in becoming a Maester Alchemist and becomes extremely important when faced with more intricate problems."; if( Desc.Alchemist = 4 ) "As an Alchemist becomes more advanced the laws of alchemy can begin to be applied on a larger scale to the surrounding universe. In every place that order may be observed there is change, and change amidst order is the greatest form of alchemy. This is most notable in the stars where an ordered change on such a grand scale gives insight into maintining order in change on smaller scales. Thus the study of alchemy becomes also the study of astronomy. Astronomy itself is unimportant to the alchemist of course but it hides within itself great transformations and the key to many smaller changes. Learn to see change in all forms, see it and learn from it, apply it in every case where it may be applied. The Alchemist brings change and must be able to ride the change until arriving at the desired destination."; } ; MaesterArtisan: object //KEEPS TRACK OF ALL INFORMATION UNIQUE TO THE ARTISAN SECT direction = "west" sdesc = "Artisan" Maester = "Tubal" Antedesc = "This is a small room lit by strange bulbs that glow brightly without appearing to have any flame, no doubt some invention of the Maester Artisans. " firstsolve( num ) = { if ( num = 1 ) "taking the time to find that the door only needed a bit of oil on its hinges rather than rushing ahead with some other solution shows promise."; if ( num = 2 ) "oiling a rusty door."; } Quit = "You are completely free of the Keep and all of its rules and regulations. With the skills you have learned in reading and writing you’ll easily find a well paying job out in the Empire. " word = { if ( Desc.Artisan = 0 ) return ''; if ( Desc.Artisan = 1 ) return 'Diligent '; if ( Desc.Artisan = 2 ) return 'Accurate '; if ( Desc.Artisan = 3 ) return 'Precise '; if ( Desc.Artisan = 4 ) return 'Acute '; } teaching = { if ( Desc.Artisan = 1 ) "A clear mind and quick wit are the requirements of an accomplished Artisan. It is these qualities which have served our sect so well in many of the Keep’s past problems. By observing an obstacle logically it is always possible to overcome the problems it presents by mechanical means of some sort. In every problem there is a solution built in to the very fabric of the problem itself. Such is the balance of the Artisan, that in all things the difficulties must be seen as their own solutions. To become a Maester Artisan one must, above all else, be observant. Observing the situation itself and furthermore finding and dismissing the solutions that might result in less desirable outcomes. It is this dismissal of possible solutions that sets the Maester Artisans apart from the other sects, for it must be obvious to the Artisan that a problem may be overcome by physical strength or brute force but that same solution, once found, must be dismissed as inadequate."; if( Desc.Artisan = 2 ) "The other sects often see Artisans as little more than the machines we make. We are known for gears and lifts and engines of every sort but the other sects often fail to recognize that these are only the results of our efforts - they are not the effort themselves. The true work of an Artisan is in seeing the problem and finding ways that it can be solved. Finding every way that it can be solved. It is only then after the complete picture of problems and solutions has been seen that the Artisan begins to construct the necessary apparatus to arrive at a solution. Even a Warrior can turn a gear, but it takes an Artisan to see how the gear must work to begin with."; if( Desc.Artisan = 3 ) "Often an Artisan is required to think beyond the scope of the surrounding environment. An intricate imagination is essential for any meaningful solution. Every problem will be more than what the Artisan can see before it is solved and the unseen must be formed in the mind and dealt with just as the seen must be dealt with. For instance, what, on the other side of the door, can be used to, or will prevent, opening it from this side? In this way an Artisan pictures a whole problem and approaches it with a whole solution rather than trying to piece together disjointed parts. Other sects wonder why we spend so much time staring at a problem instead of solving it but they do not realize that we are forming the problem in our minds and running through its various solutions to find the one which suits best."; if( Desc.Artisan = 4 ) "The study of the Artisan is always to know the world. Understand its laws, search out loopholes, reach for absolutes. An Artisan must be intimately familiar with every detail of every problem and to do this with any degree of accuracy requires constant study of the universe. There are powers within our grasp that would shock even the Maester Seers but the Artisan must never view them as mystical or magical. In all things there are logical explanations and logical progressions. Seek logic and you will find laws, find laws and you will learn to bend and break them. Knowledge of the universe is control of the universe, and this is the ultimate solution to every problem."; } ; Antechamber: room sdesc = "Antechamber" enterRoom( actor ) = //THE DOOR DISAPPEARS WHEN THE PLAYER ENTERS { "Again you feel a slight chill and the world seems to shift. The moment passes and things return to normal, but the path you entered by has disappeared behind you.\b"; pass enterRoom; } ldesc = { Desc.current.Antedesc; "You are standing before a large desk behind which sits Maester <>, the head of the <> sect. Two exits lead out, one to the east and one to the west. "; if ( not self.seen ) { "\b\tAh! Hello there novice. Maester <> greets you as you enter the room, It seems that you have shown a predisposition for the <> order. He smiles, leaning forward on his desk. There were several ways you could have passed through that little obstacle, <> Of course being a Maester <> requires more than <> You now have a choice, you may leave by the western door which leads out of the Keep entirely, Here Maester <> gestures expansively toward the western doorway with his hand, or you may continue on your chosen path through the eastern door which leads to your next test. Another gesture, this time toward the eastern door. Before you make your choice however, there is the matter of your having attained the first level of the <> order. You are therefore entitled to read the basic knowledge of our order. Maester <> opens a large book on his desk and turns it for you to read.\n"; self.seen := true; } } west = Out east = In seen = nil ; Out: hard, doorway location = Antechamber sdesc = "western door" adjective = 'west' 'western' noun = 'door' doordest = { "A look of disappointment crosses Maester <>’s face as you head out the western door, but it doesn’t matter any more. "; Desc.current.Quit; "You sigh happily as you set out across the grassy fields toward the golden sunset. It feels as if a great weight has been lifted off your shoulders.\b"; end(); } ; In: hard, doorway location = Antechamber sdesc = "eastern door" adjective = 'east' 'eastern' noun = 'door' doordest = { if ( Book.location = Antechamber ) { "\tI am glad you have decided to continue along the path, Maester <> says, But before you go through that door you must read the basic knowledge of the <> order. He taps the book that he is holding out for you to read and waits expectantly.\n"; return nil; } else { "The door disappears behind you as you walk through.\b"; return GearRoom; } } ; Desk: hard, fixeditem location = Antechamber noun = 'desk' adjective = 'marble' 'large' sdesc = "large desk" ldesc = "A large marble desk. Maester <> sits behind it awaiting your decision.\n" ; Book: fixeditem, readable location = Antechamber noun = 'book' adjective = 'large' sdesc = "large book" ldesc = self.readdesc readdesc = { "\t<>\b"; "When you have finished reading the page Maester <> closes the book and puts it away, awaiting your decision.\n"; self.moveInto( nil ); } verDoTake( actor ) = { "You reach for the book but Maester <> raises an eyebrow and says, You may read the book novice, not take it."; } verIoPourOn(actor) = { "Maester <> looks at you sternly and growls, The teachings of our sect are not to be scorned novice. If you value them so little you may feel free to leave."; } specialbreak = true broke(actor) = { "Maester <> looks at you sternly and growls, The teachings of our sect are not to be scorned novice. If you value them so little you may feel free to leave."; } ; Bearskin: earth, floatingItem location = { if( Desc.current = Warrior ) return( Antechamber ); else return( nil ); } noun = 'rug' adjective = 'bear' 'skin' 'bearskin' sdesc = "bearskin rug" ldesc = "It has a vaguely bearish shape with long black fur.\n" ; Symbols: floatingItem location = { if( Desc.current = Alchemist ) return( Antechamber ); else return( nil ); } noun = 'symbol' 'symbols' sdesc = "symbols" ldesc = "Only a Maester Alchemist would be able to read the symbols without a chart.\n" ; Lightbulbs: floatingItem location = { if( Desc.current = Warrior ) return( Antechamber ); else return( nil ); } noun = 'bulb' 'bulbs' adjective = 'strange' 'glowing' sdesc = "strange bulbs" ldesc = "Impossible as it may seem the bulbs glow without even a hint of fire.\n" ; /*========================================================================================================*/ FinalChamber: room sdesc = "Large Chamber" ldesc = { "If this room was designed to be intimidating it met its goal. The ceiling vaults up to heights beyond what your eye can see and before you is an immense marble table. Behind it sit the heads of the four orders with Grand Maester Torval at their center. <> "; if ( not self.seen ) { "\b\tCongratulations novice, Grand Maester Torval’s voice resounds against the walls of the room, echoing up into the endless heights of the chamber. There is now only one test between you and your new life as a Maester. This is also your last chance to leave the Keep. He waves his hand at the western wall and an exit appears where there was none a moment ago. Leave by that door and you may never return, He pauses, waving his hand at the eastern wall now with an exit appearing on the eastern wall just as the western exit did. Or go on to the final test and, pass or fail; you may never leave the Keep again. He looks at you in silence for a moment allowing the gravity of the choice to sink in before continuing, Before you decide, however, you have earned another level of knowledge, from the <>s I believe. He gestures toward Maester <>. Maester <>, if you please.\n\tMaester <> opens a large book sitting in front of him and turns it for you to read.\n"; self.seen := true; } } west = FinalOut east = FinalIn ; MarbleTable: hard, fixeditem location = FinalChamber noun = 'table' adjective = 'marble' 'immense' sdesc = "marble table" ldesc = "Solid black marble and larger than any other piece of marble you have ever seen. The Maesters all sit behind it awaiting your decision.\n" ; Book2: fixeditem, readable location = FinalChamber noun = 'book' adjective = 'large' sdesc = "large book" ldesc = self.readdesc readdesc = { "\t<>\b"; "When you have finished reading the page Maester <> closes the book and puts it away. All of the Maesters sit awaiting your decision.\n"; self.moveInto( nil ); } ; FinalOut: hard, doorway location = FinalChamber sdesc = "western door" adjective = 'west' 'western' noun = 'door' doordest = { "A look of disappointment crosses Maester <>’s face as you head out the western door, but it doesn’t matter any more. "; Desc.current.Quit; "You sigh happily as you set out across the grassy fields toward the golden sunset. It feels as if a great weight has been lifted off your shoulders.\b"; end(); } ; FinalIn: hard, doorway location = FinalChamber sdesc = "eastern door" adjective = 'east' 'eastern' noun = 'door' doordest = { if ( Book2.location = FinalChamber ) { "\tIt is good that you have decided to brave the final test, Grand Maester Torval says, But before you continue you must read the knowledge of the <> Order that has been offered to you. He points toward Maester <> and the book he is holding and waits expectantly.\n"; return nil; } else { "The door disappears behind you as you walk through.\b"; return FinalRoom; } } ;