Ejemplo n.º 1
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));
        }
Ejemplo n.º 2
0
        public static void SetupNote(ThiefNote note, Mobile m)
        {
            note.Hue    = Utility.RandomList(0x95E, 0x95D, 0x95B, 0x952, 0x957, 0x94D, 0x944, 0x945, 0x940, 0x93D, 0xB79);
            note.ItemID = Utility.RandomList(0x2DD, 0x201A);

            note.NoteOwner = m;

            note.NoteItemCategory = "";
            note.NoteItem         = QuestCharacters.QuestItems(true);
            note.NoteItemGot      = 0;
            note.NoteItemPerson   = ContainerFunctions.GetOwner("Pilfer");
            note.NoteDeliverType  = Utility.RandomMinMax(1, 2);

            if (Utility.RandomBool())               // STEAL FROM TOWN
            {
                int    rewardMod      = 1;
                string searchLocation = "the Land of Sosaria";
                switch (Utility.RandomMinMax(0, 13))
                {
                case 0:         searchLocation = "the Land of Sosaria";                 break;

                case 1:         searchLocation = "the Land of Sosaria";                 break;

                case 2:         searchLocation = "the Land of Sosaria";                 break;

                case 3:         searchLocation = "the Land of Lodoria";                 rewardMod = 2;  if (!(CharacterDatabase.GetDiscovered(m, "the Land of Lodoria")))
                    {
                        searchLocation = "the Land of Sosaria";
                    }
                    break;

                case 4:         searchLocation = "the Land of Lodoria";                 rewardMod = 2;  if (!(CharacterDatabase.GetDiscovered(m, "the Land of Lodoria")))
                    {
                        searchLocation = "the Land of Sosaria";
                    }
                    break;

                case 5:         searchLocation = "the Land of Lodoria";                 rewardMod = 2;  if (!(CharacterDatabase.GetDiscovered(m, "the Land of Lodoria")))
                    {
                        searchLocation = "the Land of Sosaria";
                    }
                    break;

                case 6:         searchLocation = "the Serpent Island";                  rewardMod = 3;  if (!(CharacterDatabase.GetDiscovered(m, "the Serpent Island")))
                    {
                        searchLocation = "the Land of Sosaria";
                    }
                    break;

                case 7:         searchLocation = "the Serpent Island";                  rewardMod = 3;  if (!(CharacterDatabase.GetDiscovered(m, "the Serpent Island")))
                    {
                        searchLocation = "the Land of Sosaria";
                    }
                    break;

                case 8:         searchLocation = "the Serpent Island";                  rewardMod = 3;  if (!(CharacterDatabase.GetDiscovered(m, "the Serpent Island")))
                    {
                        searchLocation = "the Land of Sosaria";
                    }
                    break;

                case 9:         searchLocation = "the Isles of Dread";                  rewardMod = 4;  if (!(CharacterDatabase.GetDiscovered(m, "the Isles of Dread")))
                    {
                        searchLocation = "the Land of Sosaria";
                    }
                    break;

                case 10:        searchLocation = "the Savaged Empire";                  rewardMod = 5;  if (!(CharacterDatabase.GetDiscovered(m, "the Savaged Empire")))
                    {
                        searchLocation = "the Land of Sosaria";
                    }
                    break;

                case 11:        searchLocation = "the Savaged Empire";                  rewardMod = 5;  if (!(CharacterDatabase.GetDiscovered(m, "the Savaged Empire")))
                    {
                        searchLocation = "the Land of Sosaria";
                    }
                    break;

                case 12:        searchLocation = "the Island of Umber Veil";    rewardMod = 2;  if (!(CharacterDatabase.GetDiscovered(m, "the Island of Umber Veil")))
                    {
                        searchLocation = "the Land of Sosaria";
                    }
                    break;

                case 13:        searchLocation = "the Bottle World of Kuldar";  rewardMod = 4;  if (!(CharacterDatabase.GetDiscovered(m, "the Bottle World of Kuldar")))
                    {
                        searchLocation = "the Land of Sosaria";
                    }
                    break;
                }

                if (!(CharacterDatabase.GetDiscovered(m, "the Land of Sosaria")) && searchLocation == "the Land of Sosaria")
                {
                    if (m.Skills.Cap == 11000)
                    {
                        searchLocation = "the Savaged Empire";
                    }
                    else
                    {
                        searchLocation = "the Land of Lodoria";
                    }
                }

                if (searchLocation == "the Land of Sosaria")
                {
                    rewardMod = 1;
                }

                int       aCount  = 0;
                ArrayList targets = new ArrayList();
                foreach (Item target in World.Items.Values)
                {
                    if (target is Coffer && Worlds.GetMyWorld(target.Map, target.Location, target.X, target.Y) == searchLocation)
                    {
                        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];
                        Coffer coffer  = (Coffer)finding;
                        note.NoteItemArea     = coffer.CofferTown;
                        note.NoteItemCategory = coffer.CofferType;
                        note.NoteReward       = (rewardMod * 500) + (Utility.RandomMinMax(0, 10) * 50);
                        note.NoteReward       = (int)((Server.Misc.MyServerSettings.QuestRewardModifier() * 0.01) * note.NoteReward);
                    }
                }
            }
            else             // STEAL FROM DUNGEON
            {
                string searchLocation = "the Land of Sosaria";
                switch (Utility.RandomMinMax(0, 15))
                {
                case 0:         searchLocation = "the Land of Sosaria";                 break;

                case 1:         searchLocation = "the Land of Sosaria";                 break;

                case 2:         searchLocation = "the Land of Sosaria";                 break;

                case 3:         searchLocation = "the Land of Lodoria";                 if (!(CharacterDatabase.GetDiscovered(m, "the Land of Lodoria")))
                    {
                        searchLocation = "the Land of Sosaria";
                    }
                    break;

                case 4:         searchLocation = "the Land of Lodoria";                 if (!(CharacterDatabase.GetDiscovered(m, "the Land of Lodoria")))
                    {
                        searchLocation = "the Land of Sosaria";
                    }
                    break;

                case 5:         searchLocation = "the Land of Lodoria";                 if (!(CharacterDatabase.GetDiscovered(m, "the Land of Lodoria")))
                    {
                        searchLocation = "the Land of Sosaria";
                    }
                    break;

                case 6:         searchLocation = "the Serpent Island";                  if (!(CharacterDatabase.GetDiscovered(m, "the Serpent Island")))
                    {
                        searchLocation = "the Land of Sosaria";
                    }
                    break;

                case 7:         searchLocation = "the Serpent Island";                  if (!(CharacterDatabase.GetDiscovered(m, "the Serpent Island")))
                    {
                        searchLocation = "the Land of Sosaria";
                    }
                    break;

                case 8:         searchLocation = "the Serpent Island";                  if (!(CharacterDatabase.GetDiscovered(m, "the Serpent Island")))
                    {
                        searchLocation = "the Land of Sosaria";
                    }
                    break;

                case 9:         searchLocation = "the Isles of Dread";                  if (!(CharacterDatabase.GetDiscovered(m, "the Isles of Dread")))
                    {
                        searchLocation = "the Land of Sosaria";
                    }
                    break;

                case 10:        searchLocation = "the Savaged Empire";                  if (!(CharacterDatabase.GetDiscovered(m, "the Savaged Empire")))
                    {
                        searchLocation = "the Land of Sosaria";
                    }
                    break;

                case 11:        searchLocation = "the Savaged Empire";                  if (!(CharacterDatabase.GetDiscovered(m, "the Savaged Empire")))
                    {
                        searchLocation = "the Land of Sosaria";
                    }
                    break;

                case 12:        searchLocation = "the Island of Umber Veil";    if (!(CharacterDatabase.GetDiscovered(m, "the Island of Umber Veil")))
                    {
                        searchLocation = "the Land of Sosaria";
                    }
                    break;

                case 13:        searchLocation = "the Bottle World of Kuldar";  if (!(CharacterDatabase.GetDiscovered(m, "the Bottle World of Kuldar")))
                    {
                        searchLocation = "the Land of Sosaria";
                    }
                    break;

                case 14:        searchLocation = "the Underworld";                              if (!(CharacterDatabase.GetDiscovered(m, "the Underworld")))
                    {
                        searchLocation = "the Underworld";
                    }
                    break;

                case 15:        searchLocation = "the Land of Ambrosia";                if (!(CharacterDatabase.GetDiscovered(m, "the Land of Ambrosia")))
                    {
                        searchLocation = "the Land of Sosaria";
                    }
                    break;
                }

                if (!(CharacterDatabase.GetDiscovered(m, "the Land of Sosaria")) && searchLocation == "the Land of Sosaria")
                {
                    if (m.Skills.Cap == 11000)
                    {
                        searchLocation = "the Savaged Empire";
                    }
                    else
                    {
                        searchLocation = "the Land of Lodoria";
                    }
                }

                int       aCount  = 0;
                ArrayList targets = new ArrayList();
                foreach (Item target in World.Items.Values)
                {
                    if (target is StealBase && Worlds.GetMyWorld(target.Map, target.Location, target.X, target.Y) == searchLocation)
                    {
                        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];
                        note.NoteItemArea = Server.Misc.Worlds.GetRegionName(finding.Map, finding.Location);
                        int difficult = Server.Misc.Worlds.GetDifficultyLevel(finding.Location, finding.Map) + 2;
                        if (difficult < 2)
                        {
                            difficult = 2;
                        }
                        note.NoteReward = (difficult * 500) + (Utility.RandomMinMax(0, 10) * 50);
                    }
                }
            }

            string dropLocation = "the Land of Sosaria";

            switch (Utility.RandomMinMax(0, 13))
            {
            case 0:         dropLocation = "the Land of Sosaria";                   break;

            case 1:         dropLocation = "the Land of Sosaria";                   break;

            case 2:         dropLocation = "the Land of Sosaria";                   break;

            case 3:         dropLocation = "the Land of Lodoria";                   if (!(CharacterDatabase.GetDiscovered(m, "the Land of Lodoria")))
                {
                    dropLocation = "the Land of Sosaria";
                }
                break;

            case 4:         dropLocation = "the Land of Lodoria";                   if (!(CharacterDatabase.GetDiscovered(m, "the Land of Lodoria")))
                {
                    dropLocation = "the Land of Sosaria";
                }
                break;

            case 5:         dropLocation = "the Land of Lodoria";                   if (!(CharacterDatabase.GetDiscovered(m, "the Land of Lodoria")))
                {
                    dropLocation = "the Land of Sosaria";
                }
                break;

            case 6:         dropLocation = "the Serpent Island";                    if (!(CharacterDatabase.GetDiscovered(m, "the Serpent Island")))
                {
                    dropLocation = "the Land of Sosaria";
                }
                break;

            case 7:         dropLocation = "the Serpent Island";                    if (!(CharacterDatabase.GetDiscovered(m, "the Serpent Island")))
                {
                    dropLocation = "the Land of Sosaria";
                }
                break;

            case 8:         dropLocation = "the Serpent Island";                    if (!(CharacterDatabase.GetDiscovered(m, "the Serpent Island")))
                {
                    dropLocation = "the Land of Sosaria";
                }
                break;

            case 9:         dropLocation = "the Isles of Dread";                    if (!(CharacterDatabase.GetDiscovered(m, "the Isles of Dread")))
                {
                    dropLocation = "the Land of Sosaria";
                }
                break;

            case 10:        dropLocation = "the Savaged Empire";                    if (!(CharacterDatabase.GetDiscovered(m, "the Savaged Empire")))
                {
                    dropLocation = "the Land of Sosaria";
                }
                break;

            case 11:        dropLocation = "the Savaged Empire";                    if (!(CharacterDatabase.GetDiscovered(m, "the Savaged Empire")))
                {
                    dropLocation = "the Land of Sosaria";
                }
                break;

            case 12:        dropLocation = "the Island of Umber Veil";              if (!(CharacterDatabase.GetDiscovered(m, "the Island of Umber Veil")))
                {
                    dropLocation = "the Land of Sosaria";
                }
                break;

            case 13:        dropLocation = "the Bottle World of Kuldar";    if (!(CharacterDatabase.GetDiscovered(m, "the Bottle World of Kuldar")))
                {
                    dropLocation = "the Land of Sosaria";
                }
                break;
            }

            if (!(CharacterDatabase.GetDiscovered(m, "the Land of Sosaria")) && dropLocation == "the Land of Sosaria")
            {
                if (m.Skills.Cap == 11000)
                {
                    dropLocation = "the Savaged Empire";
                }
                else
                {
                    dropLocation = "the Land of Lodoria";
                }
            }

            int       dCount = 0;
            ArrayList drops  = new ArrayList();

            foreach (Item target in World.Items.Values)
            {
                if (((note.NoteDeliverType == 1 && target is HollowStump) || (note.NoteDeliverType == 2 && target is HayCrate)) && Worlds.GetMyWorld(target.Map, target.Location, target.X, target.Y) == dropLocation)
                {
                    drops.Add(target); dCount++;
                }
            }

            dCount = Utility.RandomMinMax(1, dCount);

            int sCount = 0;

            for (int i = 0; i < drops.Count; ++i)
            {
                sCount++;

                if (sCount == dCount)
                {
                    Item finding = ( Item )drops[i];

                    if (finding is HayCrate)
                    {
                        HayCrate hay = (HayCrate)finding;
                        note.NoteDeliverTo = hay.HayTown;
                    }
                    else if (finding is HollowStump)
                    {
                        HollowStump stump = (HollowStump)finding;
                        note.NoteDeliverTo = stump.StumpTown;
                    }
                }
            }

            string action = "recover";

            switch (Utility.RandomMinMax(0, 4))
            {
            case 0: action = "recover"; break;

            case 1: action = "steal"; break;

            case 2: action = "acquire"; break;

            case 3: action = "find"; break;

            case 4: action = "get"; break;
            }

            string drop = "drop";

            switch (Utility.RandomMinMax(0, 4))
            {
            case 0: drop = "leave"; break;

            case 1: drop = "place"; break;

            case 2: drop = "set"; break;

            case 3: drop = "put"; break;

            case 4: drop = "drop"; break;
            }

            string container = "crate of hay in";

            if (note.NoteDeliverType == 1)
            {
                container = "hollow stump near";
            }

            string location = note.NoteItemArea;

            if (note.NoteItemCategory != "" && note.NoteItemCategory != null)
            {
                location = "the " + note.NoteItemCategory + " in " + note.NoteItemArea;
            }

            note.NoteStory = note.NoteItemPerson + " wants you to " + action + " " + note.NoteItem + " from " + location + ".";
            note.NoteStory = note.NoteStory + " Once you have it, " + drop + " it in the " + container + " " + note.NoteDeliverTo + ".";
            note.NoteStory = note.NoteStory + " There you will also find your payment of " + note.NoteReward + " gold and instructions for your next job.";

            note.InvalidateProperties();
        }
Ejemplo n.º 3
0
        public static void PickSearchLocation(SearchPage scroll, string DungeonNow, Mobile from)
        {
            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);
                    Region region = Region.Find(target.Location, target.Map);
                    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);
                }
            }

            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;
            }

            string sMessage =

                scroll.SearchDungeon = thisPlace;

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

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

            string OldMessage = "<br><br><br><br><br><br>" + scroll.SearchMessage;

            scroll.SearchMessage = scroll.SearchItem + "<br><br>" + Word1 + " tell of the " + scroll.SearchItem + " being " + Word2 + " " + Word3;
            scroll.SearchMessage = scroll.SearchMessage + " " + scroll.SearchDungeon + " " + Word4 + " by " + QuestCharacters.QuestGiver() + ".";
            scroll.SearchMessage = scroll.SearchMessage + " in " + scroll.SearchWorld + " at the below sextant coordinates.<br><br>" + EntranceLocation + OldMessage;

            scroll.InvalidateProperties();
        }
Ejemplo n.º 4
0
        public SOS(string world, int level) : base(0x14ED)
        {
            if (level < 1)
            {
                level = MessageInABottle.GetRandomLevel();
            }

            if (world == "the Town of Skara Brae")
            {
                world = "the Land of Sosaria";
            }                                                                                      // NO SOSs IN SKARA BRAE
            else if (world == "the Moon of Luna")
            {
                world = "the Land of Sosaria";
            }                                                                                     // NO SOSs ON THE MOON
            else if (world == "the Underworld")
            {
                world = "the Land of Sosaria";
            }                                                                                   // NO SOSs IN THE UNDERWORLD

            Weight = 1.0;

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

            MapWorld    = world;
            m_Level     = level;
            m_TargetMap = map;

            m_TargetLocation = loc;

            UpdateHue();

            ShipName = RandomThings.GetRandomShipName("", 0);

            string Beast = "a sea dragon";

            switch (Utility.Random(12))
            {
            case 0: Beast = "a gigantic monster"; break;

            case 1: Beast = "a sea hag"; break;

            case 2: Beast = "a leviathan"; break;

            case 3: Beast = "a sea dragon"; break;

            case 4: Beast = "a sea giant"; break;

            case 5: Beast = "a storm giant"; break;

            case 6: Beast = "a sea serpent"; break;

            case 7: Beast = "a demon of the sea"; break;

            case 8: Beast = "a rotting squid"; break;

            case 9: Beast = "a giant beast"; break;

            case 10: Beast = "a dragon turtle"; break;

            case 11: Beast = "a huge creature"; break;
            }

            if (IsAncient)
            {
                ShipStory = "This parchment is very old and almost crumbles in your hand. You know that whoever wrote this has been dead for possibly centuries, but it reads... ";
            }

            switch (Utility.Random(5))
            {
            case 0: ShipStory = ShipStory + "We were sailing in " + MapWorld + " when " + Beast + " rose from the depths of the ocean and attacked our ship! The hull has taken alot of damage and '" + ShipName + "' is slowly sinking into the depths of the sea! Whoever finds this, send a ship to the coordinates below! Hurry! I am not sure how long we will last out here!"; break;

            case 1: ShipStory = ShipStory + "If ya never seen " + Beast + " before, consider yerself lucky. There be little warning before they hit our ship, '" + ShipName + "', while sailing in " + MapWorld + ". We thought we hit a reef but we were wrong. It tore the ship apart. Only me and " + QuestCharacters.ParchmentWriter() + " managed to survive the onslaught of the beast. Now we sit here, on some island. The coordinates I last remember is where your ship went down. We may be close to there if you can send a ship. There be gold for payment if you do."; break;

            case 2: ShipStory = ShipStory + "I am writing this with my dying strength on board '" + ShipName + "'. " + QuestCharacters.ParchmentWriter() + " the Pirate came upon us in the night while far from land in " + MapWorld + ". We didn't stand a chance. We tried to outrun er but the wind was against us to be sure. He set our ship ablaze and fled off into the distance. Now we slowly sink into the ocean. If you find this, I wrote our coordinates below. You may still get here in time to save the others. If you can, tell " + QuestCharacters.ParchmentWriter() + " my tale so they never live wondering my fate. They live somewhere in " + RandomThings.GetRandomCity() + "."; break;

            case 3: ShipStory = ShipStory + "'" + ShipName + "' be sinking far from land. What we thought was a merchant ship was actually a war ship in disguise. They be hunting us pirates on the high seas in " + MapWorld + "...and today our luck ran out. Their cannons ripped through our sails, and tore holes in our hull. They killed most of the crew, where only " + Utility.RandomMinMax(3, 16) + " of us survived. They be gone now, but the sharks started circling the wreck. I just saw " + QuestCharacters.ParchmentWriter() + " being pulled below the waves, blood gushing up from below. I be on the largest piece of flotsam and can only hope I survive till ya get here."; break;

            case 4: ShipStory = ShipStory + "I knew " + QuestCharacters.ParchmentWriter() + " weren't no good at being a captain of '" + ShipName + "'. Now this probably be our end here in " + MapWorld + ". We be under attack by " + Beast + " and we have no chance of making it to " + RandomThings.GetRandomCity() + " now. I fear that me never see me wife again. If ye find this note, please find us before we sink. I have an ancient artifact I could trade for yer help."; break;
            }
        }
Ejemplo 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() + "";
                }
            }
        }