Exemple #1
0
        public override void OnResponse(GameClient sender, RelayInfo info)
        {
            // 3 - Close
            // 4 - Continue

            if (info.ButtonID == 4)
            {
                m_From.DropHolding();

                if (!m_Quest.Completed)
                {
                    m_From.SendLocalizedMessage(1074861);                       // You do not have everything you need!
                }
                else
                {
                    QuestHelper.DeleteItems(m_Quest);

                    if (m_Quester != null)
                    {
                        m_Quest.Quester = m_Quester;
                    }

                    if (!QuestHelper.AnyRewards(m_Quest))
                    {
                        m_Quest.GiveRewards();
                    }
                    else
                    {
                        m_From.CloseGump(typeof(BaseQuestGump));
                        m_From.SendGump(new MLQuestRewardGump(m_Quest));
                    }
                }
            }
        }
Exemple #2
0
        public override void OnAccept()
        {
            if (Quest.StartingItem != null)
            {
                Quest.StartingItem.QuestItem = true;
                return;
            }

            int amount = MaxProgress;

            while (amount > 0 && !Failed)
            {
                Item item = QuestHelper.Construct(m_Delivery) as Item;

                if (item == null)
                {
                    Fail();
                    break;
                }

                if (item.Stackable)
                {
                    item.Amount = amount;
                    amount      = 1;
                }

                if (!Quest.Owner.PlaceInBackpack(item))
                {
                    Quest.Owner.SendLocalizedMessage(503200);  // You do not have room in your backpack for
                    Quest.Owner.SendLocalizedMessage(1075574); // Could not create all the necessary items. Your quest has not advanced.

                    Fail();

                    break;
                }
                else
                {
                    item.QuestItem = true;
                }

                amount -= 1;
            }

            if (Failed)
            {
                QuestHelper.DeleteItems(Quest.Owner, m_Delivery, MaxProgress - amount, false);

                Quest.RemoveQuest();
            }
        }
Exemple #3
0
        public virtual void OnResign(bool resignChain)
        {
            m_Owner.PlaySound(ResignSound);

            // update chain
            if (!resignChain && !QuestHelper.FirstChainQuest(this, Quester))
            {
                UpdateChain();
            }

            // delete items	that were given on quest start
            for (int i = 0; i < m_Objectives.Count; i++)
            {
                if (m_Objectives[i] is ObtainObjective)
                {
                    ObtainObjective obtain = (ObtainObjective)m_Objectives[i];

                    QuestHelper.RemoveStatus(m_Owner, obtain.Obtain);
                }
                else if (m_Objectives[i] is DeliverObjective)
                {
                    DeliverObjective deliver = (DeliverObjective)m_Objectives[i];

                    QuestHelper.DeleteItems(m_Owner, deliver.Delivery, deliver.MaxProgress, true);
                }
            }

            // delete escorter
            if (m_Quester is BaseEscort)
            {
                BaseEscort escort = (BaseEscort)m_Quester;

                escort.Say(1005653);                   // Hmmm.  I seem to have lost my master.
                escort.PlaySound(0x5B3);
                escort.BeginDelete(m_Owner);
            }

            RemoveQuest(resignChain);
        }
        public override void OnResponse(Server.Network.NetState state, RelayInfo info)
        {
            if (this.m_From != null)
            {
                this.m_From.CloseGump(typeof(MondainQuestGump));
            }

            switch (info.ButtonID)
            {
            // close quest list
            case (int)Buttons.Close:
                break;

            // close quest
            case (int)Buttons.CloseQuest:
                this.m_From.SendGump(new MondainQuestGump(this.m_From));
                break;

            // accept quest
            case (int)Buttons.AcceptQuest:
                if (this.m_Offer)
                {
                    this.m_Quest.OnAccept();
                }
                break;

            // refuse quest
            case (int)Buttons.RefuseQuest:
                if (this.m_Offer)
                {
                    this.m_Quest.OnRefuse();
                    this.m_From.SendGump(new MondainQuestGump(this.m_Quest, Section.Refuse, true));
                }
                break;

            // resign quest
            case (int)Buttons.ResignQuest:
                if (!this.m_Offer)
                {
                    this.m_From.SendGump(new MondainResignGump(this.m_Quest));
                }
                break;

            // accept reward
            case (int)Buttons.AcceptReward:
                if (!this.m_Offer && this.m_Section == Section.Rewards && this.m_Completed)
                {
                    this.m_Quest.GiveRewards();
                }
                break;

            // previous page
            case (int)Buttons.PreviousPage:
                if (this.m_Section == Section.Objectives || (this.m_Section == Section.Rewards && !this.m_Completed))
                {
                    this.m_Section = (Section)((int)this.m_Section - 1);
                    this.m_From.SendGump(new MondainQuestGump(this.m_Quest, this.m_Section, this.m_Offer));
                }
                break;

            // next page
            case (int)Buttons.NextPage:
                if (this.m_Section == Section.Description || this.m_Section == Section.Objectives)
                {
                    this.m_Section = (Section)((int)this.m_Section + 1);
                    this.m_From.SendGump(new MondainQuestGump(this.m_Quest, this.m_Section, this.m_Offer));
                }
                break;

            // player complete quest
            case (int)Buttons.Complete:
                if (!this.m_Offer && this.m_Section == Section.Complete)
                {
                    if (!this.m_Quest.Completed)
                    {
                        this.m_From.SendLocalizedMessage(1074861);     // You do not have everything you need!
                    }
                    else
                    {
                        QuestHelper.DeleteItems(this.m_Quest);

                        if (this.m_Quester != null)
                        {
                            this.m_Quest.Quester = this.m_Quester;
                        }

                        if (!QuestHelper.AnyRewards(this.m_Quest))
                        {
                            this.m_Quest.GiveRewards();
                        }
                        else
                        {
                            this.m_From.SendGump(new MondainQuestGump(this.m_Quest, Section.Rewards, false, true));
                        }
                    }
                }
                break;

            // admin complete quest
            case (int)Buttons.CompleteQuest:
                if ((int)this.m_From.AccessLevel > (int)AccessLevel.Counselor && this.m_Quest != null)
                {
                    QuestHelper.CompleteQuest(this.m_From, this.m_Quest);
                }
                break;

            // show quest
            default:
                if (this.m_Section != Section.Main || info.ButtonID >= this.m_From.Quests.Count + ButtonOffset || info.ButtonID < ButtonOffset)
                {
                    break;
                }

                this.m_From.SendGump(new MondainQuestGump(this.m_From.Quests[(int)info.ButtonID - ButtonOffset], Section.Description, false));
                break;
            }
        }