public Riverside() { mia = new Dialog(); string miadesc = "Inside there is not much more than a single chair and a couple of blankets lying on the floor. On the chair sits an old woman in her sixties."; mia.AddLine("knock", "You knock against the door of the hut. There is a rustling noise. After a moment you hear the voice of an old woman. " + Quote("Come in!"), "knockenter"); mia.AddLine("knockenter", "You enter the hut. " + miadesc + " She has a book in her lab and looks at you curiously. " + Quote(" The old forgotten people don't get visits from you often."), "main"); mia.AddLine("enter", "You push the curtain at the door aside and enter the hut. " + miadesc + " She has a book in her lab and looks at you in disdain. ", "main"); mia.AddLine("main", Quote("How can I help you, child?"), new Answer(() => W.agreedToPhoto, Quote("Do you know how to enter Kester Manor?"), "kester"), new Answer(Quote("I want to know my future."), "future"), new Answer(Quote("Nevermind"), "leave") ); mia.AddLine("kester", Quote("My son Adam works as a cook at Kester Manor. He is my good boy. Sometimes he brings food for me and the others. We would starve if not for him.") + " She pauses and turns the book in her lap around. " + Quote("Kester is a bad man. He does not allow my son to leave the Manor, but my boy found a way to visit his mother.") + " She gives the thought some weight with a long pause.", "kester2"); mia.AddLine("kester2", Quote("Sometimes my son has to sleep here outside with us even though he is useful to the community and has a job!") + " A confused look is on her face. " + Quote("My good boy always takes the broken hut. It's really cold in there when the wind howls.") + " You are not completely sure that she still has all her senses together.", () => { W.learnedAboutAdam = true; }, "main"); mia.AddLine("future", Quote("Come here child and give me your hand. I hope you have a small token of gratitude for an old woman?"), MiaFuture); mia.AddLine("leave", ExamineHuts); }
public KesterManor() { // Opening the way through the hole in the wall planks = new Dialog(); planks.AddLine("start", "A couple of wooden planks bar your way on the other side.", new Answer("Examine the planks", "examine"), new Answer("Push against the planks carefully", "pushcare"), new Answer("Push against the planks with full force", "pushfull"), new Answer("Turn back", LeaveToRiverside)); planks.AddLine("examine", "The planks seem to be loosly leaning on the other side. Something is supporting them from the other side.", "start"); planks.AddLine("pushcare", "You carfully push against the planks to get them loose moving them slowly centimeter by centimeter. After a while the space is big enough for you to squeeze through.", () => { holeOpen = true; GardnersHut(); }); planks.AddLine("pushfull", "You push against the planks as hard as you can. At first not much happens, then suddenly with a loud thumb something falls on the other side and the planks fall backwards.", () => { holeOpen = true; holeForce = true; alarm++; GardnersHut(); }); // Investigating the crates crates = new Dialog(); crates.AddLine("start", "The crates seem to be in good shape. They are covered with wooden lids.", new Answer(() => !createsOpen, "Open the lid of one of the crates", "open"), new Answer(() => W.numberOfPhotos > 0 && !createsOpen, "Take a photo of the crates", "photoclosed"), new Answer(() => W.numberOfPhotos > 0 && createsOpen, "Take a photo of the crates and their content", "photoopen"), new Answer(() => W.numberOfPhotos == 0, "You used all films and can not take anymore photos", "start"), new Answer("Walk away", "leave") ); crates.AddLine("open", "You push one of the lids of one of the crates aside and peek inside. At the look of the conents you have to gasp. The box is filled to the top with various food items. You see small sacks with wheat and beans, nuts, dried fruit and dried meat. The food in a single one of theses crates must be enough to feed everyone in " + kCityName + " for more more than a week!", () => { createsOpen = true; }, "start"); crates.AddLine("photoclosed", "You take a photo of the crates at the pier. They look a bit lonely in front of the broad river.", () => { W.numberOfPhotos--; W.hasCrateClosePhoto = true; }, "start"); crates.AddLine("photoopen", "You take a photo of the crates at the pier. You make sure that all the delicious food is visible on the photo. If you show this to the community at the Day of Mourning it will create an outcry.", () => { W.numberOfPhotos--; W.hasCrateOpenPhoto = true; }, "start"); crates.AddLine("leave", RiverSpot); // Investigating the barn barne = new Dialog(); barne.AddLine("start", "The barn smells of soil and you can hear noises from the inside.", new Answer("Enter the barn", "enter"), new Answer("Leave", "leave") ); barne.AddLine("enter", "You sneak through the door in the barn. Inside a thick smell of soil and feces welcomes you.", "main"); barne.AddLine("main", "The barn is divided into several small pens. In each pen you see an four legged animal. You have not seen large animals like that for a long time and they look rather alien to you. All the cattle " + kCityName + " had died several years ago during the a large drought period, or so they said.", new Answer(() => W.numberOfPhotos > 0, "Take a photo of the animals in their pens", "photo"), new Answer(() => W.numberOfPhotos == 0, "You used all films and can not take anymore photos", "main"), new Answer("Leave the barn", "leave") ); barne.AddLine("photo", "You take a photo of the animals in the barn. If you show this to the community at the Day of Mourning it will create an outcry.", () => { W.numberOfPhotos--; W.hasBarnPenPhoto = true; }, "start"); barne.AddLine("leave", BarnSpot); // Investigating Kester Manor // kester = new Dialog(); // kester.AddLine("start", "Kester Manor is a large building with beautiful glass windows. It seems rather deserted on the outside. If you are careful you can sneak around and peek through the windows.", // new Answer("Peek through a window", "window"), // new Answer("Leave the Manor", "leave") // ); // kester.AddLine("window", "start"); // kester.AddLine("leave", HouseSpot); }
public HomeCorridor() { // Talk with the door smelling like bacon baconDialog = new Dialog(); baconDialog.AddLine("standing", "You stand before an old worn-down wooden door.", new Answer("Knock on the door", "knock"), new Answer("Leave", Default)); baconDialog.AddLine("knock", "You knock on the door. At first nothing happens. After a while you hear a muffled voice talking through the door." + Quote("What do you want?"), new Answer(Quote("Can I join your breakfast?"), "join"), new Answer(Quote("Sorry, wrong door!"), Default)); baconDialog.AddLine("join", Quote("What breakfast? There is no breakfast here. Mind your own business."), new Answer(Quote("But I can clearly smell the meat!"), "meat", () => { W.smelledTheBacon = true; }), new Answer(Quote("Well, nevermind then."), Default)); baconDialog.AddLine("meat", Quote("Be quiet idiot! You will alert someone if you keep shouting around. There is nothing here for you."), new Answer(Quote("Please let me in, I am really hungry!"), "noreply"), new Answer("Leave", Default)); baconDialog.AddLine("noreply", "The voice behind the door is quite.", new Answer("Knock on the door", "knock"), new Answer("Leave", Default)); // The Peacekeeper enters the buildings peacekeeperRaidStart = new Dialog(); peacekeeperRaidStart.AddLine("hold", Quote("Attention citizens! This is an official Peacekeeping investigation. Return to your apartments and do not interfere.") + " In front of you stands a tall peacekeeper in heavy combat armor. He wields a semi-automatic combat rifle in one hand. In the other he holds a flashlight which he points directly in your face.", new Answer("Quickly run to your apartment", () => { W.elaineMourning = true; LeaveToApartment(); }), new Answer(Quote("Hey don't point that flashlight in my face!"), "ask"), new Answer(Quote("What is going on here?"), "ask")); peacekeeperRaidStart.AddLine("ask", Quote("Stand back citizen! This investigation does not concern you."), new Answer("Quickly run to your apartment", () => { W.elaineMourning = true; LeaveToApartment(); }), new Answer(Quote("You can not just walk in here like you own this place!"), PeacekeeperBeatUp) ); // Elaine mourns over her dead brother elaineMourn = new Dialog(); string elaine1 = "She wears an overall which seems to be slightly too large for her size. The overall must have had a powerful blue color once, but now it is worn-out and covered with oil stains and burnt patches. She is wearing a colorful scarf in tones of yellow and red which would have lightened the mood would it be for other circumstances."; string elaine2 = "Her head is covered with wild chestnut colored hair, and from the features in her face you estimate her to be in her mid twenties."; elaineMourn.AddLine("mourn", "You see a women kneeling over a body with several gunshot wounds. " + elaine1 + " When you approach she quickly lifts her head and gives you a cautious look. " + elaine2 + " Her eyes are in tears, but that gives her a certain frailness and natural beauty.", new Answer(() => !W.refusedElaine, Quote("What happened here?"), "happened"), new Answer("Walk away", Default)); elaineMourn.AddLine("happened", Quote("They killed my brother! My poor brother!") + " She is sobbing violently. " + Quote("What did he do to them? They just walked in here and shot him!"), new Answer(Quote("I am so sorry! The peacekeepers do not have the right to kill people"), "agree"), new Answer(Quote("This is not my business."), "unmoved"), new Answer(() => { return(W.smelledTheBacon); }, Quote("What was he thinking? I could smell the meat even in my bedroom. Eating meat is strictly forbidden during the Weeks of Mourning. The peacekeepers don't take an offense like that easily."), "bacon")); elaineMourn.AddLine("agree", Quote("No they don't. They are bullying us as they please, while we have enough to suffer already. My brother was a good man, he always helped other people."), "help"); elaineMourn.AddLine("unmoved", Quote("How can that not be your business? Next time they kill <i>you</i> because you look the wrong way."), "help"); elaineMourn.AddLine("bacon", Quote("Still they do not have the right to kill someone over a small piece of meat! There are so many rules which are easy to overstep and it ends in violence so quickly."), "help"); elaineMourn.AddLine("help", () => elaineHelp.Play("start")); // Elaine founds you knocked out elaineWakeup = new Dialog(); elaineWakeup.AddLine("wakeup", Quote("Hey you! Wake up!") + " The voice of a woman is ringing in your ears. You feel a dull pain in your head and body. Slowly you open your eyes and try to focus. A young woman is bowed over you. " + elaine1 + " " + elaine2 + " Her eyes are red as if she has recently cried.", new Answer(Quote("What happened?"), "explain"), new Answer("...", "explain")); elaineWakeup.AddLine("explain", Quote("The peacekeepers have beaten you up. You must have been in their way when they came to kill my brother.") + " She has a pained expression in here face and looks way. " + Quote("My poor brother..."), new Answer(Quote("They killed someone?"), "ask"), new Answer(Quote("This is not my business. I had enough for today!"), "enough")); elaineWakeup.AddLine("ask", Quote("Yes. The peacekeepers broke through the door of my brothers apartment. Looks like he found a small animal and ate some of its meat for breakfast. I don't know what happened exactly, but theses idiots shot him several times and now he is lying dead on the floor in a pool of blood."), "help"); elaineWakeup.AddLine("enough", Quote("This affects everyone! Next time they kill <i>you</i> because you look the wrong way!"), "help"); elaineWakeup.AddLine("help", () => elaineHelp.Play("start")); // Elaine asks you for your help elaineHelp = new Dialog(); elaineHelp.AddLine("start", Quote("Please, you have to help me! It is forbidden to have bodies lying around for too long. You know how strict they are with enforcing their rules.") + " She seems to be very uneasy and looks around nervously. " + Quote("Please help me bring the body outside to the river. If they come back while the body is still lying around they will kill me too."), new Answer(Quote("Leave me out of this. I don't want to end like that body."), "refuse"), new Answer(Quote("Ok, but let's be quick about it."), "accept1")); elaineHelp.AddLine("refuse", Quote("Please you have to help me! I can not carry him alone."), new Answer(Quote("No, you are on your own here!"), "refuse2"), new Answer(Quote("If I really have to..."), "accept2")); elaineHelp.AddLine("refuse2", () => { W.refusedElaine = true; Default(); }); elaineHelp.AddLine("accept1", Quote("Oh, thank you! I could not do that without your help."), "accept"); elaineHelp.AddLine("accept2", Quote("Thank you! Thank you so much! It will not take long!"), "accept"); elaineHelp.AddLine("accept", "", () => { W.elaineMourning = false; }, new Answer(() => W.peaceKeeperBeatup, "walk"), new Answer(() => !W.peaceKeeperBeatup, "carry")); elaineHelp.AddLine("walk", "You walk upstairs to the second floor. Two doors away from your apartment lies a body on the ground. ", new Answer("carry")); elaineHelp.AddLine("carry", "Suddenly the woman starts to sob. She turns away and puts her hands in front of her face.", new Answer("Be silent and wait.", "carrysilent"), new Answer(Quote("Let's be quick before they come back."), "carryquick")); elaineHelp.AddLine("carrysilent", "The woman covers her face and silently sobs. After a while she seems to get calmer and turns around.", "carryout"); elaineHelp.AddLine("carryquick", "She quickly turns towards you, with a dismayed expression on her face. She seems to bite on her lips to pull herself together.", "carryout"); elaineHelp.AddLine("carryout", Quote("I take him under his shoulders, can you lift the feet?") + " You help her lift the body and carry it downstairs. It's an arduous task and you begin to sweat and feel the pain in your back again.", "river"); elaineHelp.AddLine("river", "Together you carry the body outside the apartment building, over the street and through a small dark alley. A hundred meters further down, the buildings give way to a broad river with brownish water. " + Quote("Here, let's drop him into the water."), new Answer(Quote("Don't you want to give him a proper funeral?"), "funeral"), new Answer(Quote("Ok. I count until three and we throw him in together."), "throw")); elaineHelp.AddLine("funeral", Quote("This is not the time for jokes. You know very well that people like us don't get funerals. Everyone is throwing their dead into the river."), "throw"); elaineHelp.AddLine("throw", Quote("I'll count till three: 1... 2...") + " Together you swing the body back and forth." + Quote("3!") + " You let loose and the body is flying for not even two meters before it falls into the river with a loud splashing noise.", "end"); elaineHelp.AddLine("end", "The woman turns towards the water and stands there in complete silence. Slowly the current takes the body and carries him downstream.", "end2"); elaineHelp.AddLine("end2", "After a while she turns towards you with a weak smile. " + Quote("My name is Elaine.") + " She looks you straight in the eyes and speaks with a silent voice. " + Quote("This injustice has to stop and I have an idea how it can be done. Come meet me at the market place in the " + kElaineShopName + ". I have to run back now to clean up the rest, before the peacekeepers come back.") + "Without waiting for a reply she turns around and runs back towards the alley.", () => { W.timeOfDay = 8; W.riverside.Enter(); }); }
public Market() { elaine = new Dialog(); elaine.AddLine("hihelp", Quote("Hey, you again! Thank you again for your help back there.") + " Elaine looks a bit better than before. Sitting in the shop seems to give her some confidence. She even manages to pull off a smile, even though you can still see the distress in her eyes.", new Answer(Quote("I am sorry for your loss. You must feel terrible."), "pity"), new Answer(Quote("You mentioned something about an idea earlier at the river?"), "help"), new Answer(Quote("I am just looking around."), "looking") ); elaine.AddLine("pity", Quote("I do not want to talk about it now."), "default" ); elaine.AddLine("hirefuse", Quote("Hello, can I help you? Do you want to buy something?") + " Elaine glances at you wearily.", new Answer(Quote("About your brother earlier. I am sorry for refusing to help you. Is there anything I can do?"), "sorry"), new Answer(Quote("I am just looking around."), "looking") ); elaine.AddLine("sorry", Quote("Luckily one of the neighbors was so decent and helped me with the body. I can not really blame you, you probably were as shocked as myself."), "help" ); elaine.AddLine("hi", Quote("Hello there! Any progress with the photos?"), "default"); elaine.AddLine("default", "Elaine is sitting on a chair in a corner of the shop. She seems to be occupied with a small box full of wires and other electronic parts.", new Answer(Quote("I am sorry for your loss. You must feel terrible."), "pity"), new Answer(Quote("Just looking around."), "looking"), new Answer(() => !W.photofail && !W.agreedToPhoto, Quote("Can I help you with anything?"), "help"), new Answer(() => !W.photofail && W.agreedToPhoto, Quote("What should I do again?"), "ihaveforgotten"), new Answer(() => !W.photofail && W.agreedToPhoto && W.NumerUsefulPhotos() > 0, Quote("I have the photos!"), "success"), new Answer(() => !W.photofail && W.agreedToPhoto && W.numberOfPhotos < 3 && W.NumerUsefulPhotos() == 0, Quote("I have the photos!"), "successnot"), new Answer("Leave the shop", "leave") ); elaine.AddLine("success", "She looks at the photos. " + Quote("Splendid! I knew, I could count on you! Give them to me and we shall show everyone tomorrow at the celebration that Kester must be overturned!"), Mourn); elaine.AddLine("successnot", "She looks at the photos. " + Quote("What have you photographed? This was not a sightseeing trip. You should photograph something unmasking about Kester!"), new Answer(() => W.numberOfPhotos > 0, Quote("I go back and take some more"), "default"), new Answer(() => W.numberOfPhotos == 0, Quote("Theses were all I could get."), "fail", () => { W.photofail = true; }) ); elaine.AddLine("fail", Quote("This was our only chance!") + " Her face fills with sadness and she turns away. You can not do much more than go back to you bed and sleep until tomorrow.", "default"); elaine.AddLine("ihaveforgotten", Quote("Sneak into Kester Manor and try to find out what he is doing there with our food. Take a few unmasking photos and come back to me alive."), "default"); elaine.AddLine("looking", Quote("If you need my counsel or look for something in particular let me know."), "default" ); elaine.AddLine("help", Quote("The peacekeepers have bullied us for long enough. Since Kester is in Power in " + kCityName + " it has become even worse. Everyone has to contribute almost all food they have to the great celebration for the Day of Mourning. We are starving and everyone who can not pay is beaten up by the peacekeeprs and accused of hiding something. There is talk on the street that Kester is diverting most of what is collected into his own pockets, selling it to the other cities for personal favors and luxury items.") + " A sudden fervor is showing in her voice. " + Quote("We need to stop this and I have just what it needs!"), "fetchphoto" ); elaine.AddLine("fetchphoto", "She walks to the back of her store and scrabbles around in on of the many shelfs covering the walls. A moment later she returns with a box. " + Quote("Look, someone traded this to me yesterday. It is an old instant camera, and the best thing: there are a few films in good condition. These are very rare, but they are pretty useless these days. You can not eat photos after all."), new Answer(Quote("How does that help us with Kester?"), "listen"), new Answer(Quote("I hoped for something with a bit more power."), "moarpower") ); elaine.AddLine("moarpower", Quote("Don't be stupid. You can not just attack the peacekeepers with raw force. They are too many and too well equipped. You just get yourself killed and we have another body to mourn."), "listen"); elaine.AddLine("listen", Quote("Listen, it's easy you just have to find a way to sneak into Kester Manor and take a few shots of what they do with our food there. You bring the photos to me and we will show them on the Day of Mourning to unmask him in front of everyone."), "think?" ); elaine.AddLine("think?", Quote("What do you think?"), new Answer(Quote("This is madness they will discover me!"), "madness"), new Answer(Quote("Why don't you go yourself?"), "yourself"), new Answer(Quote("Ok, I will try it, but no promises."), "ok"), new Answer(Quote("Kester will pay for what he has done!"), "ok"), new Answer(Quote("It is too dangerous. I can not do it."), "nook") ); elaine.AddLine("madness", Quote("Not if you are careful. The Day of Mourning is the only day of the year on which Kester has to leave his manor and show himself in public. An opportunity like this does not come again for a long time."), "think?"); elaine.AddLine("yourself", Quote("I do not have the courage to do it. I would just blunder as always and they would detect me."), "think?"); elaine.AddLine("nook", Quote("Well, I can not force you. If you would please excuse me then."), "default"); elaine.AddLine("ok", Quote("Splendid!") + " She hands you the camera and a three films. " + Quote("Don't waste the films, these are the only three I have. Return to me once you have some good photos.") + " Elaine seems relieved as if some of the burden on her shoulders has become a bit lighter. " + Quote("Perhaps Bella at the market can help you. She seems to know a few secrets about people."), () => { W.agreedToPhoto = true; }, "default"); elaine.AddLine("leave", InspectStalls); // The fish monger tries to sell fish he does not have fishmonger = new Dialog(); fishmonger.AddLine("hi", Quote("Hungry?"), new Answer(Quote("Yes, can I have one of your fish?"), "yes"), new Answer(Quote("No thanks! Your fish stinks."), "no") ); fishmonger.AddLine("yes", Quote("It's a shame, but I am out of fish."), "leave"); fishmonger.AddLine("no", Quote("It's fresh like the morning dew!"), "leave"); fishmonger.AddLine("leave", InspectStalls); // The clother tries to sell you breeches clother = new Dialog(); clother.AddLine("hi", Quote("Need new breeches?"), new Answer(Quote("What? No one is wearing breeches anymore."), "wut") ); clother.AddLine("wut", Quote("They are on discount and they are everything we have today."), "leave"); clother.AddLine("leave", InspectStalls); // Bella! bella = new Dialog(); bella.AddLine("hi", Quote("Hi sweetheart, the guys around here call me Bella. How can I make you happy?") + " She smiles at you warmly.", "dialog"); bella.AddLine("dialog", "", new Answer("Why is the Swordfish closed?", "swordfish"), new Answer(() => W.agreedToPhoto, Quote("What is Kester doing with our food?"), "kester_rumors"), new Answer(() => W.bellaRumor == 0, Quote("Heard any rumors recently?"), "rumor1", () => { W.bellaRumor = 1; }), new Answer(() => W.bellaRumor == 1, Quote("Heard any rumors recently?"), "rumor2", () => { W.bellaRumor = 2; }), new Answer(() => W.bellaRumor == 2, Quote("Heard any rumors recently?"), "rumor3", () => { W.bellaRumor = 3; }), new Answer(() => W.bellaRumor == 3, Quote("Heard any rumors recently?"), "rumor4", () => { W.bellaRumor = 0; }), new Answer(Quote("I will better leave now."), "leave") ); bella.AddLine("swordfish", Quote("Weeks of Mourning, darling. Have you forgotten?") + " She gives a soft sigh. " + Quote("No time for pleasure in theses days. I hope you are not too disappointed about that?"), "dialog"); bella.AddLine("kester_rumors", Quote("Not so loud, sweetheart. You don't want to alert the peacekeepers. Poor guys already need to worry about so much.") + " She scans the nearby area to make sure no one is listing. " + Quote("Go to the river huts, you will find your answers there."), "dialog"); bella.AddLine("rumor1", Quote("Noah seems to cause some trouble in the alleys as usual. Heard word he beat one of my girls. Tis' not nice to beat a girl."), "dialog"); bella.AddLine("rumor2", Quote("They say an old woman lives near the river who can tell you the future. The 'riverlady' they call her."), "dialog"); bella.AddLine("rumor3", Quote("At the junkyard there a strange flashes of light at night. Victor must have found another contraption. If you see him, tell him to be more careful, I don't want to loose my best customer."), "dialog"); bella.AddLine("rumor4", Quote("You are worse than a fishwife, sweety."), "dialog"); bella.AddLine("leave", InspectStalls); }