Exemplo n.º 1
0
        public static string GetRumor(QuestTome book, bool talk)
        {
            int    goal   = book.QuestTomeType;
            string locate = "held by a powerful creature";

            if (goal == 2)
            {
                locate = "lost somewhere";
            }
            if (book.QuestTomeGoals == 3)
            {
                locate = "found"; goal = 3;
            }

            string world   = book.QuestTomeLand;
            string dungeon = book.QuestTomeDungeon;
            string from    = book.QuestTomeCitizen;
            string item    = book.GoalItem1;

            if (book.QuestTomeGoals == 1)
            {
                item = book.GoalItem2;
            }
            else if (book.QuestTomeGoals == 2)
            {
                item = book.GoalItem3;
            }
            else if (book.QuestTomeGoals == 3)
            {
                item = book.VillainName + " " + book.VillainTitle;
            }

            if (talk)
            {
                string who = "I heard";
                switch (Utility.RandomMinMax(0, 5))
                {
                case 0: who = "I heard";                                                                                                                                                                                                break;

                case 1: who = "I learned";                                                                                                                                                                                              break;

                case 2: who = "I found out";                                                                                                                                                                                    break;

                case 3: who = "The " + RandomThings.GetRandomJob() + " in " + RandomThings.GetRandomCity() + " told me";                                break;

                case 4: who = "I overheard some " + RandomThings.GetRandomJob() + " say";                                                                                               break;

                case 5: who = "My friend told me";                                                                                                                                                                              break;
                }
                return(who + " that " + item + " may be " + locate + " within " + dungeon + " in " + world + ".");
            }

            if (world != "")
            {
                return("" + from + " has told you that " + item + " may be " + locate + " within " + dungeon + " in " + world + ".");
            }

            return("");
        }
Exemplo n.º 2
0
        public override bool OnDragDrop(Mobile from, Item dropped)
        {
            if (dropped is CheeseWheel || dropped is CheeseWedge || dropped is CheeseSlice)
            {
                this.PlaySound(0x0CD);

                string sMessage = "Squeak";

                int relic = Utility.RandomMinMax(1, 59);

                int chance = dropped.Amount;
                if (chance > 75)
                {
                    chance = 75;
                }

                int pick = Utility.RandomMinMax(0, 8);
                if (chance >= Utility.RandomMinMax(1, 100))
                {
                    pick = 9;
                }

                switch (pick)
                {
                case 0: sMessage = "I heard that the " + Server.Items.SomeRandomNote.GetSpecialItem(relic, 1) + " can be obtained in " + Server.Items.SomeRandomNote.GetSpecialItem(relic, 0) + "."; break;

                case 1: sMessage = "Nystal said something about the " + Server.Items.SomeRandomNote.GetSpecialItem(relic, 1) + " and " + Server.Items.SomeRandomNote.GetSpecialItem(relic, 0) + "."; break;

                case 2: sMessage = "Someone told Lord British that " + Server.Items.SomeRandomNote.GetSpecialItem(relic, 0) + " is where you would look for the " + Server.Items.SomeRandomNote.GetSpecialItem(relic, 1) + "."; break;

                case 3: sMessage = "Lord British would tell me tales of knights going to " + Server.Items.SomeRandomNote.GetSpecialItem(relic, 0) + " and bringing back the " + Server.Items.SomeRandomNote.GetSpecialItem(relic, 1) + "."; break;

                case 4: sMessage = QuestCharacters.RandomWords() + " was in the kitchen whispering about the " + Server.Items.SomeRandomNote.GetSpecialItem(relic, 1) + " and " + Server.Items.SomeRandomNote.GetSpecialItem(relic, 0) + "."; break;

                case 5: sMessage = "I saw a note from the " + RandomThings.GetRandomJob() + ", and it mentioned the " + Server.Items.SomeRandomNote.GetSpecialItem(relic, 1) + " and " + Server.Items.SomeRandomNote.GetSpecialItem(relic, 0) + "."; break;

                case 6: sMessage = "Lord British met with " + QuestCharacters.RandomWords() + " and told then to bring back the " + Server.Items.SomeRandomNote.GetSpecialItem(relic, 1) + " from " + Server.Items.SomeRandomNote.GetSpecialItem(relic, 0) + "."; break;

                case 7: sMessage = "I heard that the " + Server.Items.SomeRandomNote.GetSpecialItem(relic, 1) + " can be found in " + Server.Items.SomeRandomNote.GetSpecialItem(relic, 0) + "."; break;

                case 8: sMessage = "Someone from " + RandomThings.GetRandomCity() + " died in " + Server.Items.SomeRandomNote.GetSpecialItem(relic, 0) + " searching for the " + Server.Items.SomeRandomNote.GetSpecialItem(relic, 1) + "."; break;

                case 9: sMessage = Server.Misc.TavernPatrons.GetRareLocation(this);           break;
                }
                this.PrivateOverheadMessage(MessageType.Regular, 1153, false, sMessage, from.NetState);
                dropped.Delete();
                return(true);
            }


            return(base.OnDragDrop(from, dropped));
        }
Exemplo n.º 3
0
        public static string GetRumor(MuseumBook book, int item, bool talk)
        {
            int    goal   = book.RumorGoal;
            string locate = "held by a powerful creature";

            if (goal == 2)
            {
                locate = "lost somewhere";
            }

            string world   = book.RumorWorld;
            string dungeon = book.RumorDungeon;
            string from    = book.RumorFrom;

            if (talk)
            {
                string who = "I heard";
                switch (Utility.RandomMinMax(0, 5))
                {
                case 0: who = "I heard";                                                                                                                                                                                                break;

                case 1: who = "I learned";                                                                                                                                                                                              break;

                case 2: who = "I found out";                                                                                                                                                                                    break;

                case 3: who = "The " + RandomThings.GetRandomJob() + " in " + RandomThings.GetRandomCity() + " told me";                                break;

                case 4: who = "I overheard some " + RandomThings.GetRandomJob() + " say";                                                                                               break;

                case 5: who = "My friend told me";                                                                                                                                                                              break;
                }
                return(who + " that the " + MuseumBook.AntiqueInfo(item, 4, book) + " may be " + locate + " within " + dungeon + " in " + world + ".");
            }

            if (world != "")
            {
                return("" + from + " has told you that the " + MuseumBook.AntiqueInfo(item, 4, book) + " may be " + locate + " within " + dungeon + " in " + world + ".");
            }

            return("");
        }
Exemplo n.º 4
0
        public static void PickSearchLocation(CourierMail scroll, string DungeonNow, Mobile from, string alignment, string homeworld)
        {
            string QuestItem = Server.Misc.QuestCharacters.QuestItems();

            scroll.SearchItem = QuestItem;

            string QuestStory = Server.Misc.QuestCharacters.EpicQuestStory(QuestItem, alignment);

            string thisWorld = "the Land of Sosaria";
            string thisPlace = "the Dungeon of Doom";
            Map    thisMap   = Map.Trammel;

            int       aCount  = 0;
            ArrayList targets = new ArrayList();

            foreach (Item target in World.Items.Values)
            {
                if (target is SearchBase && (DifficultyLevel.GetDifficultyLevel(target.Location, target.Map) <= GetPlayerInfo.GetPlayerDifficulty(from)))
                {
                    string tWorld = Worlds.GetMyWorld(target.Map, target.Location, target.X, target.Y);
                    if (tWorld == "the Land of Sosaria")
                    {
                        targets.Add(target); aCount++;
                    }
                    else if (CharacterDatabase.GetDiscovered(from, tWorld))
                    {
                        targets.Add(target); aCount++;
                    }
                }
            }

            aCount = Utility.RandomMinMax(1, aCount);

            int xCount = 0;

            for (int i = 0; i < targets.Count; ++i)
            {
                xCount++;

                if (xCount == aCount)
                {
                    Item finding = ( Item )targets[i];
                    thisWorld          = Worlds.GetMyWorld(finding.Map, finding.Location, finding.X, finding.Y);
                    thisMap            = finding.Map;
                    thisPlace          = Server.Misc.Worlds.GetRegionName(finding.Map, finding.Location);
                    scroll.MsgComplete = 0;
                    scroll.MsgReward   = Server.Misc.DifficultyLevel.GetDifficultyLevel(finding.Location, finding.Map) + 2;
                    if (scroll.MsgReward < 2)
                    {
                        scroll.MsgReward = 2;
                    }
                }
            }

            string Word1 = "Legends";

            switch (Utility.RandomMinMax(1, 4))
            {
            case 1: Word1 = "Rumors"; break;

            case 2: Word1 = "Myths"; break;

            case 3: Word1 = "Tales"; break;

            case 4: Word1 = "Stories"; break;
            }
            string Word2 = "lost";

            switch (Utility.RandomMinMax(1, 4))
            {
            case 1: Word2 = "kept"; break;

            case 2: Word2 = "seen"; break;

            case 3: Word2 = "taken"; break;

            case 4: Word2 = "hidden"; break;
            }
            string Word3 = "deep in";

            switch (Utility.RandomMinMax(1, 4))
            {
            case 1: Word3 = "within"; break;

            case 2: Word3 = "somewhere in"; break;

            case 3: Word3 = "somehow in"; break;

            case 4: Word3 = "far in"; break;
            }
            string Word4 = "centuries ago";

            switch (Utility.RandomMinMax(1, 4))
            {
            case 1: Word4 = "thousands of years ago"; break;

            case 2: Word4 = "decades ago"; break;

            case 3: Word4 = "millions of years ago"; break;

            case 4: Word4 = "many years ago"; break;
            }

            scroll.SearchDungeon = thisPlace;
            scroll.SearchWorld   = thisWorld;
            scroll.DungeonMap    = thisMap;

            string gold = (scroll.MsgReward * 1000).ToString();

            if (alignment == "neutral")
            {
                gold = (scroll.MsgReward * 1500).ToString();
            }
            string heard  = "I have heard that you could perhaps help me with something of the utmost importance.";
            string reward = "Do this for me, and I can reward you " + gold + " gold.";

            if (alignment != "evil")
            {
                switch (Utility.RandomMinMax(0, 5))
                {
                case 0: heard = "I have heard that you could perhaps help me with something of the utmost importance.";         break;

                case 1: heard = RandomThings.GetRandomName() + " has told me about you, and that maybe you can help.";          break;

                case 2: heard = "After speaking to my friend, " + RandomThings.GetRandomName() + ", they mentioned that maybe you can assist me with something.";       break;

                case 3: heard = "I hear that you are one I could trust for this important task ahead.";         break;

                case 4: heard = "The " + RandomThings.GetRandomJob() + " in " + RandomThings.GetRandomCity() + " mentioned that you could perhaps help me with something.";     break;

                case 5: heard = "There is a dire situation I think you may be able to help with.";      break;
                }
            }
            else if (alignment == "evil")
            {
                reward = "I think that " + gold + " gold will make this worth your time.";
                switch (Utility.RandomMinMax(0, 5))
                {
                case 0: heard = "I have heard that you are one that can serve me in my purposes.";      break;

                case 1: heard = RandomThings.GetRandomName() + " has told me about you, and that you would serve me well.";             break;

                case 2: heard = "After speaking to my servant, " + RandomThings.GetRandomName() + ", they mentioned that maybe you would do my bidding.";       break;

                case 3: heard = "I hear whispers of your ambitions, and that maybe we can both benefit from what I am about to ask.";   break;

                case 4: heard = "Those in " + RandomThings.GetRandomCity() + " sometimes speak your name in hush curses, which is why I have sent this message to you.";        break;

                case 5: heard = "There is an item I need for my plans, and I think you are one that can obtain it with little notice by others.";       break;
                }
            }

            string intro = from.Name + ",<br><br>" + heard;

            string EntranceLocation = Worlds.GetAreaEntrance(scroll.SearchDungeon, scroll.DungeonMap);

            scroll.SearchMessage = intro + " " + reward + " " + QuestStory + " " + Word1 + " tell of " + QuestItem + " being " + Word2 + " " + Word3;

            scroll.SearchMessage = scroll.SearchMessage + " " + scroll.SearchDungeon + " " + Word4 + " in " + scroll.SearchWorld + " at the below sextant coordinates.<br><br>" + EntranceLocation;

            scroll.SearchMessage = scroll.SearchMessage + "<br><br>When you find it, bring this message back to me. I am in " + homeworld + " at the below sextant coordinates.<br><br>" + scroll.ForWhere;

            scroll.SearchMessage = scroll.SearchMessage + "<br><br>- " + scroll.ForWho;

            scroll.InvalidateProperties();
        }
Exemplo n.º 5
0
        public ScrollClue( ) : base(0x2258)
        {
            Weight = 1.0;
            Hue    = 0x83C;
            Name   = "a parchment";
            ItemID = Utility.RandomList(0x14EF, 0x14F0, 0x46AE, 0x46AF, 0x46B2, 0x46B3);

            if (ScrollLevel > 0)
            {
            }
            else
            {
                string sLanguage = "pixie";
                switch (Utility.RandomMinMax(0, 28))
                {
                case 0: sLanguage = "balron"; break;

                case 1: sLanguage = "pixie"; break;

                case 2: sLanguage = "centaur"; break;

                case 3: sLanguage = "demonic"; break;

                case 4: sLanguage = "dragon"; break;

                case 5: sLanguage = "dwarvish"; break;

                case 6: sLanguage = "elven"; break;

                case 7: sLanguage = "fey"; break;

                case 8: sLanguage = "gargoyle"; break;

                case 9: sLanguage = "cyclops"; break;

                case 10: sLanguage = "gnoll"; break;

                case 11: sLanguage = "goblin"; break;

                case 12: sLanguage = "gremlin"; break;

                case 13: sLanguage = "druidic"; break;

                case 14: sLanguage = "tritun"; break;

                case 15: sLanguage = "minotaur"; break;

                case 16: sLanguage = "naga"; break;

                case 17: sLanguage = "ogrish"; break;

                case 18: sLanguage = "orkish"; break;

                case 19: sLanguage = "sphinx"; break;

                case 20: sLanguage = "treekin"; break;

                case 21: sLanguage = "trollish"; break;

                case 22: sLanguage = "undead"; break;

                case 23: sLanguage = "vampire"; break;

                case 24: sLanguage = "dark elf"; break;

                case 25: sLanguage = "magic"; break;

                case 26: sLanguage = "human"; break;

                case 27: sLanguage = "symbolic"; break;

                case 28: sLanguage = "runic"; break;
                }

                string sPart = "a ";
                switch (Utility.RandomMinMax(0, 6))
                {
                case 0: sPart = "a strange ";   break;

                case 1: sPart = "an odd ";              break;

                case 2: sPart = "an ancient ";  break;

                case 3: sPart = "a long dead "; break;

                case 4: sPart = "a cryptic ";   break;

                case 5: sPart = "a mystical ";  break;

                case 6: sPart = "a symbolic ";  break;
                }

                string sCalled = "a strange";
                switch (Utility.RandomMinMax(0, 6))
                {
                case 0: sCalled = "an odd"; break;

                case 1: sCalled = "an unusual"; break;

                case 2: sCalled = "a bizarre"; break;

                case 3: sCalled = "a curious"; break;

                case 4: sCalled = "a peculiar"; break;

                case 5: sCalled = "a strange"; break;

                case 6: sCalled = "a weird"; break;
                }

                Name = sCalled + " parchment";

                ScrollDescribe     = "written in " + sPart + sLanguage + " language";
                ScrollIntelligence = Utility.RandomMinMax(2, 8) * 10;
                ScrollLevel        = (ScrollIntelligence / 10) - 1;

                if (ScrollIntelligence >= 80)
                {
                    ScrollSolved = "Diabolically Coded";
                }
                else if (ScrollIntelligence >= 70)
                {
                    ScrollSolved = "Ingeniously Coded";
                }
                else if (ScrollIntelligence >= 60)
                {
                    ScrollSolved = "Deviously Coded";
                }
                else if (ScrollIntelligence >= 50)
                {
                    ScrollSolved = "Cleverly Coded";
                }
                else if (ScrollIntelligence >= 40)
                {
                    ScrollSolved = "Adeptly Coded";
                }
                else if (ScrollIntelligence >= 30)
                {
                    ScrollSolved = "Expertly Coded";
                }
                else
                {
                    ScrollSolved = "Plainly Coded";
                }

                int scrollWords = Utility.RandomMinMax(1, 4);
                ScrollTrue = 1; if (Utility.RandomMinMax(1, 2) == 1)
                {
                    ScrollTrue = 1;
                }
                if (ScrollTrue == 0)
                {
                    ScrollTrue = 1;
                }
                if (scrollWords == 1)
                {
                    string world = "the Land of Sosaria";
                    switch (Utility.Random(9))
                    {
                    case 0: world = "the Land of Sosaria"; break;

                    case 1: world = "the Land of Lodoria"; break;

                    case 2: world = "the Serpent Island"; break;

                    case 3: world = "the Isles of Dread"; break;

                    case 4: world = "the Savaged Empire"; break;

                    case 5: world = "the Land of Ambrosia"; break;

                    case 6: world = "the Island of Umber Veil"; break;

                    case 7: world = "the Bottle World of Kuldar"; break;

                    case 8: world = "the Underworld"; break;
                    }
                    Point3D loc = Worlds.GetRandomLocation(world, "land");

                    ScrollX     = loc.X;
                    ScrollY     = loc.Y;
                    ScrollMap   = Worlds.GetMyDefaultMap(world);
                    ScrollQuest = "grave";

                    Point3D spot = new Point3D(ScrollX, ScrollY, 0);
                    int     xLong = 0, yLat = 0;
                    int     xMins = 0, yMins = 0;
                    bool    xEast = false, ySouth = false;

                    string my_location = "";

                    if (Sextant.Format(spot, ScrollMap, ref xLong, ref yLat, ref xMins, ref yMins, ref xEast, ref ySouth))
                    {
                        my_location = String.Format("{0}° {1}'{2}, {3}° {4}'{5}", yLat, yMins, ySouth ? "S" : "N", xLong, xMins, xEast ? "E" : "W");
                    }

                    switch (Utility.Random(3))
                    {
                    case 0: ScrollCharacter = QuestCharacters.ParchmentWriter(); ScrollText = "Dear " + QuestCharacters.ParchmentWriter() + ",<br><br>It saddens me to write this message to you and I hope it finds you well. " + ScrollCharacter + " was killed while we were exploring " + QuestCharacters.SomePlace("parchment") + " and I have done everything I could for them. I could not bring them with me as the journey to " + RandomThings.GetRandomCity() + " was too far and I did not want the animals to pick the bones clean, so I buried them in a shallow grave in " + world + ". If you wish to visit the grave, the location is at...<br><br>" + my_location + "<br><br>Make sure to bring a grave digging shovel if you wish to return them to your home in " + RandomThings.GetRandomCity() + " and read this parchment when you get there to make sure you are in the right spot. Again, I am sorry for your loss.<br><br> - " + QuestCharacters.QuestGiver() + ""; break;

                    case 1: ScrollCharacter = QuestCharacters.ParchmentWriter(); ScrollText = QuestCharacters.ParchmentWriter() + ",<br><br>This message is for you eyes only, I would appreciate discretion in this matter. " + ScrollCharacter + " tried to kill me while we were traveling " + world + ", but I bested them in battle. Before returning to " + RandomThings.GetRandomCity() + ", I buried them to keep others from asking questions of their whereabouts. I also buried them with their belongings so if they had something you needed, you can find their body at...<br><br>" + my_location + "<br><br>Make sure to bring a grave digging shovel, and bury it back up when you are done. Make sure to read this parchment when you get there to make sure you are in the right spot. I already have enough troubles.<br><br> - " + QuestCharacters.QuestGiver() + ""; break;

                    case 2: ScrollCharacter = QuestCharacters.ParchmentWriter(); ScrollText = QuestCharacters.ParchmentWriter() + ",<br><br>The plan worked! I led " + ScrollCharacter + " out into " + world + " and killed them before they even knew what I was doing. I buried them and went back to " + RandomThings.GetRandomCity() + " to collect my payment, but they said you needed proof of the deed. Very well. I buried the body at...<br><br>" + my_location + "<br><br>So you can go see for yourself. Make sure to bring a grave digging shovel and read this parchment when you get there to make sure you are in the right spot. Then meet me in " + RandomThings.GetRandomCity() + " where I will be waiting for my gold. Don't take too long, or I may have to do a job for myself.<br><br> - " + QuestCharacters.ParchmentWriter() + ""; break;
                    }
                }
                else if (scrollWords == 2)
                {
                    string world = "the Land of Sosaria";
                    switch (Utility.Random(9))
                    {
                    case 0: world = "the Land of Sosaria"; break;

                    case 1: world = "the Land of Lodoria"; break;

                    case 2: world = "the Serpent Island"; break;

                    case 3: world = "the Isles of Dread"; break;

                    case 4: world = "the Savaged Empire"; break;

                    case 5: world = "the Land of Ambrosia"; break;

                    case 6: world = "the Island of Umber Veil"; break;

                    case 7: world = "the Bottle World of Kuldar"; break;

                    case 8: world = "the Underworld"; break;
                    }
                    Point3D loc = Worlds.GetRandomLocation(world, "land");

                    ScrollX     = loc.X;
                    ScrollY     = loc.Y;
                    ScrollMap   = Worlds.GetMyDefaultMap(world);
                    ScrollQuest = "chest";

                    Point3D spot = new Point3D(ScrollX, ScrollY, 0);
                    int     xLong = 0, yLat = 0;
                    int     xMins = 0, yMins = 0;
                    bool    xEast = false, ySouth = false;

                    string my_location = "";

                    if (Sextant.Format(spot, ScrollMap, ref xLong, ref yLat, ref xMins, ref yMins, ref xEast, ref ySouth))
                    {
                        my_location = String.Format("{0}° {1}'{2}, {3}° {4}'{5}", yLat, yMins, ySouth ? "S" : "N", xLong, xMins, xEast ? "E" : "W");
                    }

                    string sVillain = "thieves";
                    string sHero    = "a ranger";
                    string sBody    = "foot";
                    string sMonster = "an orc";
                    switch (Utility.RandomMinMax(0, 4))
                    {
                    case 0: sVillain = "thieves";   sHero = "a ranger";             sBody = "foot";         sMonster = "an orc";            break;

                    case 1: sVillain = "rogues";    sHero = "a guard";              sBody = "leg";          sMonster = "an ogre";           break;

                    case 2: sVillain = "robbers";   sHero = "a knight";     sBody = "hand";         sMonster = "a troll";           break;

                    case 3: sVillain = "brigands";  sHero = "a peasant";    sBody = "head";         sMonster = "a lizardman";       break;

                    case 4: sVillain = "bandits";   sHero = "a mercenary";  sBody = "arm";          sMonster = "an ettin";          break;
                    }

                    switch (Utility.Random(3))
                    {
                    case 0: ScrollCharacter = QuestCharacters.QuestGiver(); ScrollText = "Dear " + QuestCharacters.ParchmentWriter() + ",<br><br>I made it to " + RandomThings.GetRandomCity() + " last night after being chased by some " + sVillain + " through " + world + ". In order to not lose everything I was traveling with, I had to bury it. I think they knew what I had in that chest because I see them around asking questions about me. It is up to you to get to it before they do. I will attempt to lead them away while you head for...<br><br>" + my_location + "<br><br>Make sure to bring a shovel and read this parchment when you get there to make sure you are in the right spot. Once I lose them I will return home. Keep that one thing safe above all else.<br><br> - " + ScrollCharacter + ""; break;

                    case 1: ScrollCharacter = QuestCharacters.ParchmentWriter(); ScrollText = QuestCharacters.ParchmentWriter() + ",<br><br>I managed to follow " + ScrollCharacter + " all the way to " + RandomThings.GetRandomCity() + " where they stayed for " + Utility.RandomMinMax(2, 8) + " days. When they finally departed, I followed them through " + world + " and waited for the right moment. Although things did not go well for them, I managed to get that chest you wanted. What I didn't know was " + sHero + " saw me and gave chase. I managed to lose them long enough to bury the goods and make it back to " + RandomThings.GetRandomCity() + " without getting caught. Although they are still searching for me, they know not who you are. If you can dig it up at...<br><br>" + my_location + "<br><br>I will gladly accept half the gold as payment since I could not deliver it to you myself. Make sure to bring a shovel and read this parchment when you get there to make sure you are in the right spot.<br><br> - " + QuestCharacters.QuestGiver() + ""; break;

                    case 2: ScrollCharacter = QuestCharacters.QuestGiver(); ScrollText = QuestCharacters.ParchmentWriter() + ",<br><br>I followed all of the clues and it led me to " + RandomThings.GetRandomCity() + " where I found the final piece of the map. It shows that " + ScrollCharacter + " buried their treasure in " + world + " and it may still be there. I am resting in " + RandomThings.GetRandomCity() + " as I write this because I severely hurt my " + sBody + " in " + sMonster + " attack yesterday. As soon as you can, go to...<br><br>" + my_location + "<br><br>Make sure to bring a shovel and read this parchment when you get there to make sure you are in the right spot. If that item is in the chest as the legends say, then bring it to " + QuestCharacters.SomePlace("parchment") + " and I will meet you there.<br><br> - " + QuestCharacters.ParchmentWriter() + ""; break;
                    }
                }
                else if (scrollWords == 3)
                {
                    string world = "the Land of Sosaria";
                    switch (Utility.Random(9))
                    {
                    case 0: world = "the Land of Sosaria"; break;

                    case 1: world = "the Land of Lodoria"; break;

                    case 2: world = "the Serpent Island"; break;

                    case 3: world = "the Isles of Dread"; break;

                    case 4: world = "the Savaged Empire"; break;

                    case 5: world = "the Land of Ambrosia"; break;

                    case 6: world = "the Island of Umber Veil"; break;

                    case 7: world = "the Bottle World of Kuldar"; break;

                    case 8: world = "the Underworld"; break;
                    }

                    Point3D loc = Worlds.GetRandomLocation(world, "sea");

                    Map shipMap = Worlds.GetMyDefaultMap(world);

                    if (ScrollTrue == 1)
                    {
                        switch (Utility.Random(31))
                        {
                        case 0: loc = new Point3D(578, 1370, -5); shipMap = Map.Ilshenar; break;

                        case 1: loc = new Point3D(946, 821, -5); shipMap = Map.TerMur; break;

                        case 2: loc = new Point3D(969, 217, -5); shipMap = Map.TerMur; break;

                        case 3: loc = new Point3D(322, 661, -5); shipMap = Map.TerMur; break;

                        case 4: loc = new Point3D(760, 587, -5); shipMap = Map.Tokuno; break;

                        case 5: loc = new Point3D(200, 1056, -5); shipMap = Map.Tokuno; break;

                        case 6: loc = new Point3D(1232, 387, -5); shipMap = Map.Tokuno; break;

                        case 7: loc = new Point3D(528, 233, -5); shipMap = Map.Tokuno; break;

                        case 8: loc = new Point3D(504, 1931, -5); shipMap = Map.Malas; break;

                        case 9: loc = new Point3D(1472, 1776, -5); shipMap = Map.Malas; break;

                        case 10: loc = new Point3D(1560, 579, -5); shipMap = Map.Malas; break;

                        case 11: loc = new Point3D(1328, 144, -5); shipMap = Map.Malas; break;

                        case 12: loc = new Point3D(2312, 2299, -5); shipMap = Map.Felucca; break;

                        case 13: loc = new Point3D(2497, 3217, -5); shipMap = Map.Felucca; break;

                        case 14: loc = new Point3D(576, 3523, -5); shipMap = Map.Felucca; break;

                        case 15: loc = new Point3D(4352, 3768, -5); shipMap = Map.Felucca; break;

                        case 16: loc = new Point3D(4824, 1627, -5); shipMap = Map.Felucca; break;

                        case 17: loc = new Point3D(3208, 216, -5); shipMap = Map.Felucca; break;

                        case 18: loc = new Point3D(1112, 619, -5); shipMap = Map.Felucca; break;

                        case 19: loc = new Point3D(521, 2153, -5); shipMap = Map.Felucca; break;

                        case 20: loc = new Point3D(2920, 1643, -5); shipMap = Map.Felucca; break;

                        case 21: loc = new Point3D(320, 2288, -5); shipMap = Map.Trammel; break;

                        case 22: loc = new Point3D(3343, 1842, -5); shipMap = Map.Trammel; break;

                        case 23: loc = new Point3D(3214, 938, -5); shipMap = Map.Trammel; break;

                        case 24: loc = new Point3D(4520, 1128, -5); shipMap = Map.Trammel; break;

                        case 25: loc = new Point3D(4760, 2307, -5); shipMap = Map.Trammel; break;

                        case 26: loc = new Point3D(3551, 2952, -5); shipMap = Map.Trammel; break;

                        case 27: loc = new Point3D(1271, 2651, -5); shipMap = Map.Trammel; break;

                        case 28: loc = new Point3D(744, 1304, -5); shipMap = Map.Trammel; break;

                        case 29: loc = new Point3D(735, 555, -5); shipMap = Map.Trammel; break;

                        case 30: loc = new Point3D(1824, 440, -5); shipMap = Map.Trammel; break;
                        }

                        world = Server.Misc.Worlds.GetMyWorld(shipMap, loc, loc.X, loc.Y);
                    }

                    int     shipX = loc.X;
                    int     shipY = loc.Y;
                    Point3D spot = new Point3D(shipX, shipY, 0);
                    int     xLong = 0, yLat = 0;
                    int     xMins = 0, yMins = 0;
                    bool    xEast = false, ySouth = false;

                    string my_location = "";

                    if (Sextant.Format(spot, shipMap, ref xLong, ref yLat, ref xMins, ref yMins, ref xEast, ref ySouth))
                    {
                        my_location = String.Format("{0}° {1}'{2}, {3}° {4}'{5}", yLat, yMins, ySouth ? "S" : "N", xLong, xMins, xEast ? "E" : "W");
                    }

                    switch (Utility.Random(3))
                    {
                    case 0: ScrollText = "Dear " + QuestCharacters.ParchmentWriter() + ",<br><br>We were sailing the high seas in " + world + ", when we noticed our anchor was caught on something. The water was clear so we could see almost to the bottom of the sea floor. We were caught on a ship that met its demise. We spent about " + Utility.RandomMinMax(2, 8) + " days, fishing up what we could from the wreck.<br><br>" + my_location + "<br><br>We found some interesting items. One of our crew, who was a member of the mariners guild, seemed to bring up the most valuable items. We were running out of food so we headed toward shore. With my cut of the bounty, I now sit here in " + RandomThings.GetRandomCity() + ", writing this long awaited letter to you. Stop here when you can, as I have a proposition for you.<br><br> - " + QuestCharacters.QuestGiver() + ""; break;

                    case 1: ScrollText = "Dear " + QuestCharacters.ParchmentWriter() + ",<br><br>We were found our old ship while on the high seas in " + world + ". The sun was favorable, and we could see the mast close to the surface of the wake. We spent about " + Utility.RandomMinMax(2, 8) + " days trying to bring up what we could.<br><br>" + my_location + "<br><br>We recovered many of our things. One of our crew, who was a member of the mariners guild, seemed to bring up the captain's loot. The water was gettig rough, so we headed for the nearby docks. If you can meet me in " + RandomThings.GetRandomCity() + ", I can return some of your things you lost that fateful day.<br><br> - " + QuestCharacters.QuestGiver() + ""; break;

                    case 2: ScrollText = "Dear " + QuestCharacters.ParchmentWriter() + ",<br><br>The legends were true! That crazy " + RandomThings.GetRandomJob() + " knew where that ship was and I found it. I had to take a small boat out there, but I could make out its shadow beneath the waves.<br><br>" + my_location + "<br><br>I can't hope to recover anything from the wreck, but I might be able to with he help of your father. Make your way to " + RandomThings.GetRandomCity() + ", and we will come up with a plan to buy a ship and return for the treasure.<br><br> - " + QuestCharacters.QuestGiver() + ""; break;
                    }
                }
                else
                {
                    int    xSet  = 1;
                    int    ySet  = 1;
                    Map    mSet  = Map.Trammel;
                    string vMap  = "";
                    string vHome = "a dungeon";

                    int HomeLocation = Utility.RandomMinMax(1, 2);

                    if (HomeLocation == 1)
                    {
                        ScrollTrue = 1;
                        vHome      = "a castle in the sky";
                        switch (Utility.Random(7))
                        {
                        case 0: xSet = 1863; ySet = 1129; mSet = Map.Trammel; break;

                        case 1: xSet = 1861; ySet = 2747; mSet = Map.Felucca; break;

                        case 2: xSet = 466; ySet = 3801; mSet = Map.Felucca; break;

                        case 3: xSet = 254; ySet = 670; mSet = Map.Malas; break;

                        case 4: xSet = 422; ySet = 398; mSet = Map.TerMur; break;

                        case 5: xSet = 251; ySet = 1249; mSet = Map.Tokuno; break;

                        case 6: xSet = 3884; ySet = 2879; mSet = Map.Trammel; break;
                        }
                    }
                    else if (HomeLocation == 2)
                    {
                        ScrollTrue = 1;
                        vHome      = "a dungeon";
                        switch (Utility.Random(21))
                        {
                        case 0: xSet = 4299; ySet = 3318; mSet = Map.Felucca; break;

                        case 1: xSet = 177; ySet = 961; mSet = Map.TerMur; break;

                        case 2: xSet = 766; ySet = 1527; mSet = Map.TerMur; break;

                        case 3: xSet = 1191; ySet = 1516; mSet = Map.Malas; break;

                        case 4: xSet = 1944; ySet = 3377; mSet = Map.Trammel; break;

                        case 5: xSet = 1544; ySet = 1785; mSet = Map.Malas; break;

                        case 6: xSet = 2059; ySet = 2406; mSet = Map.Trammel; break;

                        case 7: xSet = 1558; ySet = 2861; mSet = Map.Felucca; break;

                        case 8: xSet = 755; ySet = 1093; mSet = Map.Tokuno; break;

                        case 9: xSet = 2181; ySet = 1327; mSet = Map.Trammel; break;

                        case 10: xSet = 752; ySet = 680; mSet = Map.TerMur; break;

                        case 11: xSet = 466; ySet = 3801; mSet = Map.Felucca; break;

                        case 12: xSet = 2893; ySet = 2030; mSet = Map.Felucca; break;

                        case 13: xSet = 1050; ySet = 93; mSet = Map.TerMur; break;

                        case 14: xSet = 127; ySet = 85; mSet = Map.Tokuno; break;

                        case 15: xSet = 145; ySet = 1434; mSet = Map.Malas; break;

                        case 16: xSet = 2625; ySet = 823; mSet = Map.Felucca; break;

                        case 17: xSet = 740; ySet = 182; mSet = Map.Tokuno; break;

                        case 18: xSet = 5390; ySet = 3280; mSet = Map.Trammel; break;

                        case 19: xSet = 922; ySet = 1775; vMap = "the Hedge Maze"; mSet = Map.TerMur; break;

                        case 20: xSet = 1036; ySet = 1162; mSet = Map.TerMur; break;
                        }
                    }
                    else             // FALSE LOCATION
                    {
                        ScrollTrue = 0;
                        switch (Utility.Random(2))
                        {
                        case 0: vHome = "a dungeon"; break;

                        case 1: vHome = "a castle in the sky"; break;
                        }

                        string world = "the Land of Sosaria";
                        switch (Utility.Random(7))
                        {
                        case 0: world = "the Land of Sosaria"; break;

                        case 1: world = "the Land of Lodoria"; break;

                        case 2: world = "the Serpent Island"; break;

                        case 3: world = "the Isles of Dread"; break;

                        case 4: world = "the Savaged Empire"; break;

                        case 5: world = "the Land of Ambrosia"; break;

                        case 6: world = "the Island of Umber Veil"; break;
                        }
                        Point3D loc = Worlds.GetRandomLocation(world, "land");
                        xSet = loc.X; ySet = loc.Y; mSet = Worlds.GetMyDefaultMap(world);
                    }

                    Point3D location = new Point3D(xSet, ySet, 0);
                    if (vMap == "")
                    {
                        vMap = Worlds.GetMyWorld(mSet, location, xSet, ySet);
                    }
                    int  xLong = 0, yLat = 0;
                    int  xMins = 0, yMins = 0;
                    bool xEast = false, ySouth = false;

                    Point3D spot        = new Point3D(xSet, ySet, 0);
                    string  my_location = location.ToString();

                    if (Sextant.Format(spot, mSet, ref xLong, ref yLat, ref xMins, ref yMins, ref xEast, ref ySouth))
                    {
                        my_location = String.Format("{0}° {1}'{2}, {3}° {4}'{5}", yLat, yMins, ySouth ? "S" : "N", xLong, xMins, xEast ? "E" : "W");
                    }

                    string sBuilding = "tower";
                    switch (Utility.RandomMinMax(0, 6))
                    {
                    case 0: sBuilding = "tower"; break;

                    case 1: sBuilding = "house"; break;

                    case 2: sBuilding = "keep"; break;

                    case 3: sBuilding = "castle"; break;

                    case 4: sBuilding = "cabin"; break;

                    case 5: sBuilding = "mansion"; break;

                    case 6: sBuilding = "tent"; break;
                    }

                    ScrollText = QuestCharacters.ParchmentWriter() + ",<br><br>During my last journey, I found something quite remarkable. I stumbled upon " + vHome + " that appeared to be abandoned. I believe it was " + vHome + " that once belonged to " + QuestCharacters.QuestGiver() + ". Our " + sBuilding + " by " + RandomThings.GetRandomCity() + " is getting too small for the hoards of gold we have been getting from searching " + QuestCharacters.SomePlace("parchment") + ", so it is probably time we move. I am guessing we almost have enough gold to hire the help needed to get the place ready to live, so I would like you to meet me in " + RandomThings.GetRandomCity() + " where we can maybe seek out workers to help us with this endeavor. If you can make the journey, you should see it for yourself. If you still have that sextant, you can find it in " + vMap + " at...<br><br>" + my_location + "<br><br> - " + QuestCharacters.QuestGiver() + "";
                }
            }
        }