public override void OnComplete()
        {
            IdolQuester quester = ((SummonQuest)System).IdolQuester;

            quester.SayTo(System.From, "Well done, the Keeper has been slain!");
            System.From.SendMessage("Check the Keepers corpse to see if your lucky enough to recieve an idol");
            System.Complete();
        }
        public override void OnRead()
        {
            IdolQuester quester = ((SummonQuest)System).IdolQuester;
            QuestType   type    = quester.Type;

            if (quester == null)
            {
                System.From.SendMessage("Internal error: unable to find idolquester. Quest unable to continue.");
                System.Cancel();
            }
            else
            {
                PentagramAddon altar = quester.Altar;

                if (altar == null)
                {
                    System.From.SendMessage("Internal error: unable to find summoning altar. Quest unable to continue.");
                    System.Cancel();
                }
                else if ((WrongBoss.Active == false && type == QuestType.Wrong) ||
                         (HythBoss.Active == false && type == QuestType.Hythloth) ||
                         (DecBoss.Active == false && type == QuestType.Deceit) ||
                         (CoveBoss.Active == false && type == QuestType.Covetous) ||
                         (DestBoss.Active == false && type == QuestType.Destard) ||
                         (ShameBoss.Active == false && type == QuestType.Shame) ||
                         (DespBossTwo.Active == false && DespBoss.Active == false && type == QuestType.Despise))
                {
                    switch (type)
                    {
                    case QuestType.Shame: m_MiniBoss = new ShameBoss(); break;

                    case QuestType.Deceit: m_MiniBoss = new DecBoss(); break;

                    case QuestType.Destard: m_MiniBoss = new DestBoss(); break;

                    case QuestType.Hythloth: m_MiniBoss = new HythBoss(); break;

                    case QuestType.Despise: m_MiniBoss = new DespBoss(); break;

                    case QuestType.Covetous: m_MiniBoss = new CoveBoss(); break;

                    case QuestType.Wrong: m_MiniBoss = new WrongBoss(); break;
                    }

                    m_MiniBoss.MoveToWorld(altar.Location, altar.Map);
                    System.AddObjective(new VanquishMinibossObjective());
                }
                else
                {
                    quester.SayTo(System.From, "The Keeper is already here!");

                    System.Cancel();
                }
            }
        }
        public override void CheckProgress()
        {
            IdolQuester quester = ((SummonQuest)System).IdolQuester;

            if (
                (WrongBoss.Active == false && quester.Type == QuestType.Wrong) ||
                (HythBoss.Active == false && quester.Type == QuestType.Hythloth) ||
                (DecBoss.Active == false && quester.Type == QuestType.Deceit) ||
                (CoveBoss.Active == false && quester.Type == QuestType.Covetous) ||
                (DestBoss.Active == false && quester.Type == QuestType.Destard) ||
                (ShameBoss.Active == false && quester.Type == QuestType.Shame) ||
                (DespBossTwo.Active == false && DespBoss.Active == false && quester.Type == QuestType.Despise)
                )
            {
                Complete();
            }
        }
        public override void Cancel()
        {
            base.Cancel();

            QuestObjective obj    = FindObjective(typeof(CollectFragmentsObjective));
            QuestObjective objtwo = FindObjective(typeof(VanquishMinibossObjective));

            if (obj != null && obj.CurProgress > 0 && objtwo == null && !obj.Completed)
            {
                BankBox box = From.BankBox;

                if (box != null)
                {
                    IdolQuester quester = m_IdolQuester;
                    QuestType   type    = quester.Type;
                    switch (type)
                    {
                    case QuestType.Shame: m_Frag = new FragmentCrystal(QuestType.Shame, obj.CurProgress); break;

                    case QuestType.Deceit: m_Frag = new FragmentCrystal(QuestType.Deceit, obj.CurProgress); break;

                    case QuestType.Destard: m_Frag = new FragmentCrystal(QuestType.Destard, obj.CurProgress); break;

                    case QuestType.Hythloth: m_Frag = new FragmentCrystal(QuestType.Hythloth, obj.CurProgress); break;

                    case QuestType.Despise: m_Frag = new FragmentCrystal(QuestType.Despise, obj.CurProgress); break;

                    case QuestType.Covetous: m_Frag = new FragmentCrystal(QuestType.Covetous, obj.CurProgress); break;

                    case QuestType.Wrong: m_Frag = new FragmentCrystal(QuestType.Wrong, obj.CurProgress); break;
                    }
                    box.DropItem(m_Frag);
                    From.SendMessage("The dungeon fragments you have offered up have been returned to you.");
                }
            }
        }
        public override void OnComplete()
        {
            IdolQuester quester = ((SummonQuest)System).IdolQuester;

            if (quester == null)
            {
                System.From.SendMessage("Internal error: unable to find idolquester. Quest unable to continue.");
                System.Cancel();
            }
            else
            {
                PentagramAddon altar = quester.Altar;

                if (altar == null)
                {
                    System.From.SendMessage("Internal error: unable to find summoning altar. Quest unable to continue.");
                    System.Cancel();
                }
                else
                {
                    System.AddConversation(new VanquishMinibossConversation());
                }
            }
        }
        public override void ChildDeserialize(GenericReader reader)
        {
            int version = reader.ReadEncodedInt();

            m_IdolQuester = reader.ReadMobile() as IdolQuester;
        }
 public SummonQuest(IdolQuester quester, PlayerMobile from)
     : base(from)
 {
     m_IdolQuester = quester;
 }