Пример #1
0
        protected static void PlayerUseSlot(DOLEvent e, object sender, EventArgs args)
        {
            GamePlayer player = (GamePlayer)sender;

            GodelevasNeed quest = (GodelevasNeed)player.IsDoingQuest(typeof(GodelevasNeed));

            if (quest == null)
            {
                return;
            }

            if (quest.Step == 1)
            {
                UseSlotEventArgs uArgs = (UseSlotEventArgs)args;

                InventoryItem item = player.Inventory.GetItem((eInventorySlot)uArgs.Slot);
                if (item != null && item.Id_nb == woodenBucket.Id_nb)
                {
                    if (player.IsWithinRadius(cotswoldVillageBridge, 500))
                    {
                        SendSystemMessage(player, "You use the wooden bucket and scoop up some fresh river water.");

                        ReplaceItem(player, woodenBucket, fullWoodenBucket);
                        quest.Step = 2;
                    }
                    else
                    {
                        SendSystemMessage(player, "You can't scoop up some river water here.");
                    }
                }
            }
        }
Пример #2
0
        protected static void PlayerLeftWorld(DOLEvent e, object sender, EventArgs args)
        {
            GamePlayer player = sender as GamePlayer;

            if (player == null)
            {
                return;
            }

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

            if (quest != null)
            {
                GameEventMgr.RemoveHandler(player, GamePlayerEvent.UseSlot, new DOLEventHandler(PlayerUseSlot));
                GameEventMgr.RemoveHandler(player, GamePlayerEvent.Quit, new DOLEventHandler(PlayerLeftWorld));
            }
        }
Пример #3
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 CheckPlayerAbortQuest(GamePlayer player, byte response)
        {
            GodelevasNeed quest = player.IsDoingQuest(typeof(GodelevasNeed)) as GodelevasNeed;

            if (quest == null)
            {
                return;
            }

            if (response == 0x00)
            {
                SendSystemMessage(player, "Good, now go out there and finish your work!");
            }
            else
            {
                SendSystemMessage(player, "Aborting Quest " + questTitle + ". You can start over again if you want.");
                quest.AbortQuest();
            }
        }
Пример #4
0
        /* 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 TalkToGodelevaDowden(DOLEvent e, object sender, EventArgs args)
        {
            // We get the player from the event arguments and check if he qualifies
            GamePlayer player = ((SourceEventArgs)args).Source as GamePlayer;

            if (player == null)
            {
                return;
            }

            if (godelevaDowden.CanGiveQuest(typeof(GodelevasNeed), player) <= 0)
            {
                return;
            }

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

            godelevaDowden.TurnTo(player);

            // Did the player rightclick on NPC?
            if (e == GameObjectEvent.Interact)
            {
                if (quest == null)
                {
                    // Player is not doing the quest...
                    godelevaDowden.SayTo(player, "Hello there friend.  I can't say I've seen you around here.  Of course, I'm usually so busy, I don't get a chance to chat with the locals like I used to.  Say, you're not [looking] for something to do, are you?");
                    return;
                }
                else
                {
                    if (quest.Step == 2)
                    {
                        godelevaDowden.SayTo(player, "Do you have the full bucket for me, " + player.Name + "?");
                    }

                    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 :)
                    switch (wArgs.Text)
                    {
                    case "looking":
                        godelevaDowden.SayTo(player, "Oh yes! I have met someone who is very interesting. I think about him all the time when we are apart, which is often. His name is Elvar Tambor, and he is a weapons merchant in Prydwen Keep. We [met] about six months ago.");
                        break;

                    case "met":
                        godelevaDowden.SayTo(player, "Great, because I have something that I need done. I need to get some fresh water to clean my floors with, but I simply don't have time to run to the water to get some. Will you [fetch] some for me?");
                        break;

                    // If the player offered his help, we send the quest dialog now!
                    case "fetch":
                        player.Out.SendQuestSubscribeCommand(godelevaDowden, QuestMgr.GetIDForQuestType(typeof(GodelevasNeed)), "Will you take the bucket down to the river and retrieve some water for Godeleva? [Level " + player.Level + "]");
                        break;
                    }
                }
                else
                {
                    switch (wArgs.Text)
                    {
                    case "abort":
                        player.Out.SendCustomDialog("Do you really want to abort this quest, \nall items gained during quest will be lost?", new CustomDialogResponse(CheckPlayerAbortQuest));
                        break;
                    }
                }
            }
        }