コード例 #1
0
ファイル: MondainQuestGump.cs プロジェクト: marcusdiaz/ServUO
        public virtual void SecComplete()
        {
            if (m_Quest == null)
            {
                return;
            }

            if (m_Quest.Complete == null)
            {
                if (QuestHelper.TryDeleteItems(m_Quest))
                {
                    if (QuestHelper.AnyRewards(m_Quest))
                    {
                        m_Section = Section.Rewards;
                        SecRewards();
                    }
                    else
                    {
                        m_Quest.GiveRewards();
                    }
                }

                return;
            }

            AddHtmlLocalized(130, 45, 270, 16, 3006156, 0xFFFFFF, false, false); // Quest Conversation
            AddImage(140, 110, 0x4B9);
            AddHtmlObject(160, 70, 200, 40, m_Quest.Title, DarkGreen, false, false);
            AddHtmlObject(98, 140, 312, 180, m_Quest.Complete, LightGreen, false, true);

            AddButton(313, 455, 0x2EE6, 0x2EE8, (int)Buttons.Close, GumpButtonType.Reply, 0);
            AddButton(95, 455, 0x2EE9, 0x2EEB, (int)Buttons.Complete, GumpButtonType.Reply, 0);
        }
コード例 #2
0
ファイル: MLQuestFinishGump.cs プロジェクト: nogu3ira/xrunuo
        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));
                    }
                }
            }
        }
コード例 #3
0
        public void SecQuestionComplete()
        {
            if (m_Quest == null)
            {
                return;
            }

            if (m_Quest.Complete == null)
            {
                if (QuestHelper.TryDeleteItems(m_Quest))
                {
                    if (QuestHelper.AnyRewards(m_Quest))
                    {
                        m_Section = Section.Rewards;
                        SecRewards();
                    }
                    else
                    {
                        m_Quest.GiveRewards();
                    }
                }

                return;
            }

            AddHtmlObject(98, 156, 312, 180, m_Quest.Complete, 0x15F90, false, true);

            AddButton(95, 395, 0x2EE6, 0x2EE8, (int)Buttons.Complete, GumpButtonType.Reply, 0);
            AddHtmlLocalized(0, 0, 0, 0, 1060675, false, false); // CLOSE
        }
コード例 #4
0
ファイル: MLQuestFinishGump.cs プロジェクト: nogu3ira/xrunuo
        public MLQuestFinishGump(PlayerMobile pm, BaseQuest quest, MondainQuester quester)
            : base(75, 25)
        {
            m_Quest   = quest;
            m_From    = pm;
            m_Quester = quester;

            if (m_Quest.Complete == null)
            {
                if (QuestHelper.TryDeleteItems(m_Quest))
                {
                    if (QuestHelper.AnyRewards(m_Quest))
                    {
                        m_From.CloseGump(this.GetType());
                        m_From.SendGump(new MLQuestRewardGump(m_Quest));
                    }
                    else
                    {
                        m_Quest.GiveRewards();
                    }
                }

                return;
            }

            Intern("");

            AddPage(1);

            Closable = false;
            AddImageTiled(50, 20, 400, 400, 0x1404);
            AddImageTiled(50, 29, 30, 390, 0x28DC);
            AddImageTiled(34, 140, 17, 279, 0x242F);
            AddImage(48, 135, 0x28AB);
            AddImage(-16, 285, 0x28A2);
            AddImage(0, 10, 0x28B5);
            AddImage(25, 0, 0x28B4);
            AddImageTiled(83, 15, 350, 15, 0x280A);
            AddImage(34, 419, 0x2842);
            AddImage(442, 419, 0x2840);
            AddImageTiled(51, 419, 392, 17, 0x2775);
            AddImageTiled(415, 29, 44, 390, 0xA2D);
            AddImageTiled(415, 29, 30, 390, 0x28DC);
            AddLabelIntern(100, 50, 0x481, 0);
            AddImage(370, 50, 0x589);
            AddImage(379, 60, 0x15A9);
            AddImage(425, 0, 0x28C9);
            AddImage(90, 33, 0x232D);
            AddHtmlLocalized(130, 45, 270, 16, 3006156, 0xFFFFFF, false, false);               // Quest Conversation
            AddImageTiled(130, 65, 175, 1, 0x238D);
            AddHtmlLocalized(130, 68, 220, 48, 1114513, String.Format("#{0}", quest.Title.ToString()), 0x2710, false, false);

            AddHtmlObject(98, 140, 312, 180, quest.Complete, 0x15F90, false, true);
            AddButton(95, 395, 0x2EE9, 0x2EEB, 4, GumpButtonType.Reply, 0);               // Continue
            AddKRHtmlLocalized(0, 0, 0, 0, 1011036, false, false);
            AddKRHtmlLocalized(0, 0, 0, 0, 1011012, false, false);
            AddButton(313, 395, 0x2EE6, 0x2EE8, 3, GumpButtonType.Reply, 0);               // Close
        }
コード例 #5
0
        public virtual bool CheckAtDestination()
        {
            if (m_Quest != null)
            {
                EscortObjective escort = GetObjective();

                if (escort == null)
                {
                    return(false);
                }

                Mobile escorter = GetEscorter();

                if (escorter == null)
                {
                    return(false);
                }

                if (escort.Region != null && escort.Region.Contains(Location))
                {
                    Say(1042809, escorter.Name);                       // We have arrived! I thank thee, ~1_PLAYER_NAME~! I have no further need of thy services. Here is thy pay.

                    escort.Complete();

                    if (m_Quest.Completed)
                    {
                        escorter.SendLocalizedMessage(1046258, null, 0x23);                           // Your quest is complete.

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

                        escorter.PlaySound(m_Quest.CompleteSound);

                        StopFollow();
                        m_EscortTable.Remove(escorter);
                        m_DeleteTimer = Timer.DelayCall(TimeSpan.FromSeconds(5.0), new TimerCallback(Delete));

                        // fame
                        Misc.Titles.AwardFame(escorter, escort.Fame, true);

                        // compassion
                        bool gainedPath = false;

                        PlayerMobile pm = escorter as PlayerMobile;

                        if (pm != null)
                        {
                            if (pm.CompassionGains > 0 && DateTime.Now > pm.NextCompassionDay)
                            {
                                pm.NextCompassionDay = DateTime.MinValue;
                                pm.CompassionGains   = 0;
                            }

                            if (pm.CompassionGains >= 5)                               // have already gained 5 times in one day, can gain no more
                            {
                                pm.SendLocalizedMessage(1053004);                      // You must wait about a day before you can gain in compassion again.
                            }
                            else if (VirtueHelper.Award(pm, VirtueName.Compassion, escort.Compassion, ref gainedPath))
                            {
                                pm.SendLocalizedMessage(1074949, null, 0x2A);                                    // You have demonstrated your compassion!  Your kind actions have been noted.

                                if (gainedPath)
                                {
                                    pm.SendLocalizedMessage(1053005);                                       // You have achieved a path in compassion!
                                }
                                else
                                {
                                    pm.SendLocalizedMessage(1053002);                                       // You have gained in compassion.
                                }
                                pm.NextCompassionDay = DateTime.Now + TimeSpan.FromDays(1.0);               // in one day CompassionGains gets reset to 0
                                ++pm.CompassionGains;
                            }
                            else
                            {
                                pm.SendLocalizedMessage(1053003);                                   // You have achieved the highest path of compassion and can no longer gain any further.
                            }
                        }
                    }
                    else
                    {
                        escorter.PlaySound(m_Quest.UpdateSound);
                    }

                    return(true);
                }
            }
            else if (!m_Checked)
            {
                Region region = GetDestination();

                if (region != null && region.Contains(Location))
                {
                    m_DeleteTimer = Timer.DelayCall(TimeSpan.FromSeconds(5.0), new TimerCallback(Delete));
                    m_Checked     = true;
                }
            }

            return(false);
        }
コード例 #6
0
ファイル: MondainQuestGump.cs プロジェクト: marcusdiaz/ServUO
        public override void OnResponse(Server.Network.NetState state, RelayInfo info)
        {
            if (m_From != null)
            {
                m_From.CloseGump(typeof(MondainQuestGump));
            }

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

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

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

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

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

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

            // refuse reward
            case (int)Buttons.RefuseReward:
                if (!m_Offer && m_Section == Section.Rewards && m_Completed)
                {
                    m_Quest.RefuseRewards();
                }
                break;

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

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

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

                            if (!QuestHelper.AnyRewards(m_Quest))
                            {
                                m_Quest.GiveRewards();
                            }
                            else
                            {
                                m_From.SendGump(new MondainQuestGump(m_Quest, Section.Rewards, false, true));
                            }
                        }
                        else
                        {
                            m_From.SendLocalizedMessage(1074861);     // You do not have everything you need!
                        }
                    }
                }
                break;

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

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

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