public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);
            int version = reader.ReadInt();

            m_TurnIn = reader.ReadMobile() as FishMonger;
            m_Boat   = reader.ReadItem() as BaseBoat;
            m_Crate  = reader.ReadItem() as ShippingCrate;

            if (m_Crate != null)
            {
                m_Crate.AddQuest(this);
            }

            switch (reader.ReadInt())
            {
            case 0:
                m_Title = reader.ReadString();
                break;

            case 1:
                m_Title = reader.ReadInt();
                break;
            }

            AddReward(new BaseReward(1116510)); //A rare reward from the Order of the Dragonfish.
        }
        public static FishMonger GetRandomMonger(PlayerMobile player, FishMonger monger)
        {
            bool NOGO = true;

            FishMonger mob = null;

            List <FishMonger> mongers = new List <FishMonger>(m_Mongers);

            //First, remove quester
            if (mongers.Contains(monger))
            {
                mongers.Remove(monger);
            }

            //Next, remove mongers from other facets in same region as quest giver
            for (var index = 0; index < m_Mongers.Count; index++)
            {
                FishMonger m = m_Mongers[index];

                if (m.Region != null && monger.Region != null && m.Region.Name == monger.Region.Name)
                {
                    mongers.Remove(m);
                }
            }

            //Now, remove mongers from other quests
            if (player.Quests != null)
            {
                for (int i = 0; i < player.Quests.Count; i++)
                {
                    if (player.Quests[i] is ProfessionalFisherQuest)
                    {
                        ProfessionalFisherQuest q = (ProfessionalFisherQuest)player.Quests[i];

                        if (mongers.Contains(q.TurnIn))
                        {
                            mongers.Remove(q.TurnIn);
                        }
                    }
                }
            }

            if (mongers.Count < 1)
            {
                return(null);
            }

            while (NOGO)
            {
                mob = mongers[Utility.Random(mongers.Count)];

                if (mob.Region != null && mob.Region.Name != null)
                {
                    NOGO = false;
                }
            }

            return(mob);
        }
        public ProfessionalFisherQuest(Mobile from, FishMonger monger, FishMonger quester, BaseBoat boat)
        {
            PlayerFishingEntry entry = PlayerFishingEntry.GetEntry(from, true);

            int lines;

            if (boat.IsClassicBoat)
            {
                lines = 1;
            }
            else
            {
                lines = entry.CalculateLines();
            }

            m_TurnIn = monger;
            m_Boat   = boat;

            int  index  = 0;
            int  amount = 10;
            Type type   = null;

            List <int>             hasChosen = new List <int>();
            Dictionary <Type, int> types     = new Dictionary <Type, int>();

            for (int i = 0; i < lines; i++)
            {
                entry.GetRandomFish(ref index, ref amount, hasChosen);
                hasChosen.Add(index);
                type = FishQuestHelper.GetTypeFromIndex(index);
                if (amount < 5)
                {
                    amount = 5;
                }
                if (amount > 20)
                {
                    amount = 20;
                }

                types[type] = amount;
            }

            AddObjective(new FishQuestObjective(types));
            AddReward(new BaseReward(1116510)); //A rare reward from the Order of the Dragonfish.

            hasChosen.Clear();

            m_Title = GetTitle(quester);
        }