Esempio n. 1
0
        /* This is our callback hook that will be called when the player clicks
         * on any button in the quest offer dialog. We check if he accepts or
         * declines here...
         */

        private static void CheckPlayerAcceptQuest(GamePlayer player, byte response)
        {
            //We recheck the qualification, because we don't talk to players
            //who are not doing the quest
            if (addrir.CanGiveQuest(typeof(ImportantDelivery), player) <= 0)
            {
                return;
            }

            ImportantDelivery quest = player.IsDoingQuest(typeof(ImportantDelivery)) as ImportantDelivery;

            if (quest != null)
            {
                return;
            }

            if (response == 0x00)
            {
                SendReply(player, LanguageMgr.GetTranslation(player.Client, "Hib.ImportantDelivery.CheckPlayerAcceptQuest.NoAccept"));
            }
            else
            {
                //Check if we can add the quest!
                if (!addrir.GiveQuest(typeof(ImportantDelivery), player, 1))
                {
                    return;
                }
                addrir.SayTo(player, LanguageMgr.GetTranslation(player.Client, "Hib.ImportantDelivery.CheckPlayerAcceptQuest.Accept"));
            }
            //language manager support for items
            recruitsDiary.Name     = LanguageMgr.GetTranslation(player.Client, "Hib.ImportantDelivery.DefineItems.RecruitsDiary");
            sackOfSupplies.Name    = LanguageMgr.GetTranslation(player.Client, "Hib.ImportantDelivery.DefineItems.SackOfSupplies");
            crateOfVegetables.Name = LanguageMgr.GetTranslation(player.Client, "Hib.ImportantDelivery.DefineItems.CrateOfVegetables");
            recruitsCloak.Name     = LanguageMgr.GetTranslation(player.Client, "Hib.ImportantDelivery.DefineItems.RecruitsCloak");
        }
        protected static void TalkToFreagus(DOLEvent e, object sender, EventArgs args)
        {
            // We get the player from the event arguments and check if he qualifies
            // for the quest!
            GamePlayer player = ((SourceEventArgs)args).Source as GamePlayer;

            if (player == null)
            {
                return;
            }

            if (addrir.CanGiveQuest(typeof(ImportantDelivery), player) <= 0)
            {
                return;
            }

            // We also check if the player is already doing the quest
            ImportantDelivery quest = player.IsDoingQuest(typeof(ImportantDelivery)) as ImportantDelivery;

            freagus.TurnTo(player);

            // Did the player rightclick on NPC?
            if (e == GameObjectEvent.Interact)
            {
                if (quest != null)
                {
                    if (quest.Step == 7)
                    {
                        freagus.SayTo(player, LanguageMgr.GetTranslation(player.Client, "Hib.ImportantDelivery.TalkToFreagus.Welcome"));
                    }
                    else if (quest.Step == 8)
                    {
                        freagus.SayTo(player, LanguageMgr.GetTranslation(player.Client, "Hib.ImportantDelivery.TalkToFreagus.GoodCrop"));
                        quest.FinishQuest();
                    }
                }

                return;
            }
            else if (e == GameLivingEvent.WhisperReceive)
            {
                WhisperReceiveEventArgs wArgs = (WhisperReceiveEventArgs)args;

                if (quest != null)
                {
                    // Do some small talk :)
                    if (wArgs.Text == LanguageMgr.GetTranslation(player.Client, "Hib.ImportantDelivery.TalkToFreagus.CaseReward"))
                    {
                        freagus.SayTo(player, LanguageMgr.GetTranslation(player.Client, "Hib.ImportantDelivery.TalkToFreagus.Reward", player.Name));
                        freagus.SayTo(player, LanguageMgr.GetTranslation(player.Client, "Hib.ImportantDelivery.TalkToFreagus.Errand"));
                        if (quest.Step == 8)
                        {
                            quest.FinishQuest();
                        }
                    }
                }
            }
        }
        /* This is our callback hook that will be called when the player clicks
         * on any button in the quest offer dialog. We check if he accepts or
         * declines here...
         */

        private static void CheckPlayerAbortQuest(GamePlayer player, byte response)
        {
            ImportantDelivery quest = player.IsDoingQuest(typeof(ImportantDelivery)) as ImportantDelivery;

            if (quest == null)
            {
                return;
            }

            if (response == 0x00)
            {
                SendSystemMessage(player, LanguageMgr.GetTranslation(player.Client, "Hib.ImportantDelivery.CheckPlayerAbortQuest.NoAbort"));
            }
            else
            {
                SendSystemMessage(player, LanguageMgr.GetTranslation(player.Client, "Hib.ImportantDelivery.CheckPlayerAbortQuest.Abort", questTitle));

                quest.AbortQuest();
            }
        }
        protected static void TalkToAethic(DOLEvent e, object sender, EventArgs args)
        {
            // We get the player from the event arguments and check if he qualifies
            // for the quest!
            GamePlayer player = ((SourceEventArgs)args).Source as GamePlayer;

            if (player == null)
            {
                return;
            }

            if (addrir.CanGiveQuest(typeof(ImportantDelivery), player) <= 0)
            {
                return;
            }

            // We also check if the player is already doing the quest
            ImportantDelivery quest = player.IsDoingQuest(typeof(ImportantDelivery)) as ImportantDelivery;

            aethic.TurnTo(player);

            // Did the player rightclick on NPC?
            if (e == GameObjectEvent.Interact)
            {
                if (quest != null)
                {
                    switch (quest.Step)
                    {
                    case 3:
                    case 4:
                        aethic.SayTo(player, LanguageMgr.GetTranslation(player.Client, "Hib.ImportantDelivery.TalkToAethic.Greetings"));
                        break;

                    case 5:
                        aethic.SayTo(player, LanguageMgr.GetTranslation(player.Client, "Hib.ImportantDelivery.TalkToAethic.Supplies", player.Name));
                        break;

                    case 6:
                        aethic.SayTo(player, LanguageMgr.GetTranslation(player.Client, "Hib.ImportantDelivery.TalkToAethic.Vegetables"));
                        break;
                    }
                }

                return;
            }
            else if (e == GameLivingEvent.WhisperReceive)
            {
                WhisperReceiveEventArgs wArgs = (WhisperReceiveEventArgs)args;

                if (quest != null)
                {
                    // Do some small talk :)
                    if (wArgs.Text == LanguageMgr.GetTranslation(player.Client, "Hib.ImportantDelivery.TalkToAethic.CaseErrand"))
                    {
                        addrir.SayTo(player, LanguageMgr.GetTranslation(player.Client, "Hib.ImportantDelivery.TalkToAethic.Errand"));
                        if (quest.Step == 5)
                        {
                            GiveItem(aethic, player, ticketToArdee);
                            GiveItem(aethic, player, crateOfVegetables);
                            quest.Step = 6;
                        }
                    }
                }
            }
        }
        /* This is the method we declared as callback for the hooks we set to
         * NPC. It will be called whenever a player right clicks on NPC
         * or when he whispers something to him.
         */

        protected static void TalkToAddrir(DOLEvent e, object sender, EventArgs args)
        {
            // We get the player from the event arguments and check if he qualifies
            // for the quest!
            GamePlayer player = ((SourceEventArgs)args).Source as GamePlayer;

            if (player == null)
            {
                return;
            }

            if (addrir.CanGiveQuest(typeof(ImportantDelivery), player) <= 0)
            {
                return;
            }

            // We also check if the player is already doing the quest
            ImportantDelivery quest = player.IsDoingQuest(typeof(ImportantDelivery)) as ImportantDelivery;

            addrir.TurnTo(player);

            // Did the player rightclick on NPC?
            if (e == GameObjectEvent.Interact)
            {
                if (quest == null)
                {
                    // Player is not doing the quest...
                    addrir.SayTo(player, LanguageMgr.GetTranslation(player.Client, "Hib.ImportantDelivery.TalkToAddrir.Greetings"));
                    return;
                }
                else
                {
                    switch (quest.Step)
                    {
                    case 1:
                        addrir.SayTo(player, LanguageMgr.GetTranslation(player.Client, "Hib.ImportantDelivery.TalkToAddrir.Journal"));
                        break;

                    case 2:
                        addrir.SayTo(player, LanguageMgr.GetTranslation(player.Client, "Hib.ImportantDelivery.TalkToAddrir.OneStepCloser"));
                        break;

                    case 3:
                        addrir.SayTo(player, LanguageMgr.GetTranslation(player.Client, "Hib.ImportantDelivery.TalkToAddrir.HorseTicket"));
                        break;
                    }

                    return;
                }
            }

            // The player whispered to NPC (clicked on the text inside the [])
            else if (e == GameLivingEvent.WhisperReceive)
            {
                WhisperReceiveEventArgs wArgs = (WhisperReceiveEventArgs)args;

                if (quest == null)
                {
                    // Do some small talk :)
                    if (wArgs.Text == LanguageMgr.GetTranslation(player.Client, "Hib.ImportantDelivery.TalkToAddrir.CaseQuestion"))
                    {
                        addrir.SayTo(player, LanguageMgr.GetTranslation(player.Client, "Hib.ImportantDelivery.TalkToAddrir.Question"));
                    }

                    // If the player offered his "help", we send the quest dialog now!
                    if (wArgs.Text == LanguageMgr.GetTranslation(player.Client, "Hib.ImportantDelivery.TalkToAddrir.CaseTraining"))
                    {
                        player.Out.SendQuestSubscribeCommand(addrir, QuestMgr.GetIDForQuestType(typeof(ImportantDelivery)), LanguageMgr.GetTranslation(player.Client, "Hib.ImportantDelivery.TalkToAddrir.Training"));
                    }
                }
                else
                {
                    if (wArgs.Text == LanguageMgr.GetTranslation(player.Client, "Hib.ImportantDelivery.TalkToAddrir.CaseCharSheet"))
                    {
                        addrir.SayTo(player, LanguageMgr.GetTranslation(player.Client, "Hib.ImportantDelivery.TalkToAddrir.CharSheet"));
                    }

                    if (wArgs.Text == LanguageMgr.GetTranslation(player.Client, "Hib.ImportantDelivery.TalkToAddrir.CaseInformation"))
                    {
                        addrir.SayTo(player, LanguageMgr.GetTranslation(player.Client, "Hib.ImportantDelivery.TalkToAddrir.Information"));
                        if (quest.Step == 1)
                        {
                            quest.Step = 2;
                        }
                    }

                    if (wArgs.Text == LanguageMgr.GetTranslation(player.Client, "Hib.ImportantDelivery.TalkToAddrir.CaseJournal"))
                    {
                        addrir.SayTo(player, LanguageMgr.GetTranslation(player.Client, "Hib.ImportantDelivery.TalkToAddrir.Journal"));
                        GiveItem(addrir, player, recruitsDiary);
                    }

                    if (wArgs.Text == LanguageMgr.GetTranslation(player.Client, "Hib.ImportantDelivery.TalkToAddrir.CaseExpedite"))
                    {
                        addrir.SayTo(player, LanguageMgr.GetTranslation(player.Client, "Hib.ImportantDelivery.TalkToAddrir.Expedite"));
                        GiveItem(addrir, player, sackOfSupplies);
                    }

                    if (wArgs.Text == LanguageMgr.GetTranslation(player.Client, "Hib.ImportantDelivery.TalkToAddrir.CaseHorseTicket"))
                    {
                        addrir.SayTo(player, LanguageMgr.GetTranslation(player.Client, "Hib.ImportantDelivery.TalkToAddrir.HorseTicket"));
                        if (quest.Step == 2)
                        {
                            GiveItem(addrir, player, ticketToTirnamBeo);
                            quest.Step = 3;
                        }
                    }

                    if (wArgs.Text == "abort")
                    {
                        addrir.SayTo(player, LanguageMgr.GetTranslation(player.Client, "Hib.ImportantDelivery.TalkToAddrir.Abort"));
                    }
                }
            }
        }