public override bool GetDestination(PlayerMobile player, ref Point3D loc, ref Map map)
        {
            QuestSystem qs = player.Quest;

            if (qs is UzeraanTurmoilQuest)
            {
                if (qs.IsObjectiveInProgress(typeof(FindSchmendrickObjective)) ||
                    qs.IsObjectiveInProgress(typeof(FindApprenticeObjective)) ||
                    UzeraanTurmoilQuest.HasLostScrollOfPower(player))
                {
                    loc = new Point3D(5222, 1858, 0);
                    map = Map.Trammel;
                    return(true);
                }
                else if (qs.IsObjectiveInProgress(typeof(FindDryadObjective)) ||
                         UzeraanTurmoilQuest.HasLostFertileDirt(player))
                {
                    loc = new Point3D(3557, 2690, 2);
                    map = Map.Trammel;
                    return(true);
                }
                else if (player.Profession != 5 && // paladin
                         (qs.IsObjectiveInProgress(typeof(GetDaemonBoneObjective)) ||
                          UzeraanTurmoilQuest.HasLostDaemonBone(player)))
                {
                    loc = new Point3D(3422, 2653, 48);
                    map = Map.Trammel;
                    return(true);
                }
                else if (qs.IsObjectiveInProgress(typeof(CashBankCheckObjective)))
                {
                    loc = new Point3D(3624, 2610, 0);
                    map = Map.Trammel;
                    return(true);
                }
            }

            return(false);
        }
예제 #2
0
        public override bool OnDragDrop(Mobile from, Item dropped)
        {
            if (dropped is BlankScroll && UzeraanTurmoilQuest.HasLostScrollOfPower(from))
            {
                FocusTo(from);

                Item scroll = new SchmendrickScrollOfPower();

                if (!from.PlaceInBackpack(scroll))
                {
                    scroll.Delete();
                    from.SendLocalizedMessage(1046260); // You need to clear some space in your inventory to continue with the quest.  Come back here when you have more space in your inventory.
                    return(false);
                }
                else
                {
                    dropped.Consume();
                    from.SendLocalizedMessage(1049346); // Schmendrick scribbles on the scroll for a few moments and hands you the finished product.
                    return(dropped.Deleted);
                }
            }

            return(base.OnDragDrop(from, dropped));
        }
예제 #3
0
        public override void OnTalk(PlayerMobile player, bool contextMenu)
        {
            QuestSystem qs = player.Quest;

            if (qs is UzeraanTurmoilQuest)
            {
                if (UzeraanTurmoilQuest.HasLostScrollOfPower(player))
                {
                    qs.AddConversation(new LostScrollOfPowerConversation(true));
                }
                else if (UzeraanTurmoilQuest.HasLostFertileDirt(player))
                {
                    qs.AddConversation(new LostFertileDirtConversation(true));
                }
                else if (UzeraanTurmoilQuest.HasLostDaemonBlood(player))
                {
                    qs.AddConversation(new LostDaemonBloodConversation());
                }
                else if (UzeraanTurmoilQuest.HasLostDaemonBone(player))
                {
                    qs.AddConversation(new LostDaemonBoneConversation());
                }
                else
                {
                    if (player.Profession == 2) // magician
                    {
                        Container backpack = player.Backpack;

                        if (backpack == null ||
                            backpack.GetAmount(typeof(BlackPearl)) < 30 ||
                            backpack.GetAmount(typeof(Bloodmoss)) < 30 ||
                            backpack.GetAmount(typeof(Garlic)) < 30 ||
                            backpack.GetAmount(typeof(Ginseng)) < 30 ||
                            backpack.GetAmount(typeof(MandrakeRoot)) < 30 ||
                            backpack.GetAmount(typeof(Nightshade)) < 30 ||
                            backpack.GetAmount(typeof(SulfurousAsh)) < 30 ||
                            backpack.GetAmount(typeof(SpidersSilk)) < 30)
                        {
                            qs.AddConversation(new FewReagentsConversation());
                        }
                    }

                    QuestObjective obj = qs.FindObjective(typeof(FindUzeraanBeginObjective));

                    if (obj != null && !obj.Completed)
                    {
                        obj.Complete();
                    }
                    else
                    {
                        obj = qs.FindObjective(typeof(FindUzeraanFirstTaskObjective));

                        if (obj != null && !obj.Completed)
                        {
                            obj.Complete();
                        }
                        else
                        {
                            obj = qs.FindObjective(typeof(FindUzeraanAboutReportObjective));

                            if (obj != null && !obj.Completed)
                            {
                                Container cont = GetNewContainer();

                                if (player.Profession == 2) // magician
                                {
                                    cont.DropItem(new MarkScroll(5));
                                    cont.DropItem(new RecallScroll(5));
                                    for (int i = 0; i < 5; i++)
                                    {
                                        cont.DropItem(new RecallRune());
                                    }
                                }
                                else
                                {
                                    cont.DropItem(new Gold(300));
                                    for (int i = 0; i < 6; i++)
                                    {
                                        cont.DropItem(new NightSightPotion());
                                        cont.DropItem(new LesserHealPotion());
                                    }
                                }

                                if (!player.PlaceInBackpack(cont))
                                {
                                    cont.Delete();
                                    player.SendLocalizedMessage(1046260); // You need to clear some space in your inventory to continue with the quest.  Come back here when you have more space in your inventory.
                                }
                                else
                                {
                                    obj.Complete();
                                }
                            }
                            else
                            {
                                obj = qs.FindObjective(typeof(ReturnScrollOfPowerObjective));

                                if (obj != null && !obj.Completed)
                                {
                                    FocusTo(player);
                                    SayTo(player, 1049378); // Hand me the scroll, if you have it.
                                }
                                else
                                {
                                    obj = qs.FindObjective(typeof(ReturnFertileDirtObjective));

                                    if (obj != null && !obj.Completed)
                                    {
                                        FocusTo(player);
                                        SayTo(player, 1049381); // Hand me the Fertile Dirt, if you have it.
                                    }
                                    else
                                    {
                                        obj = qs.FindObjective(typeof(ReturnDaemonBloodObjective));

                                        if (obj != null && !obj.Completed)
                                        {
                                            FocusTo(player);
                                            SayTo(player, 1049379); // Hand me the Vial of Blood, if you have it.
                                        }
                                        else
                                        {
                                            obj = qs.FindObjective(typeof(ReturnDaemonBoneObjective));

                                            if (obj != null && !obj.Completed)
                                            {
                                                FocusTo(player);
                                                SayTo(player, 1049380); // Hand me the Daemon Bone, if you have it.
                                            }
                                            else
                                            {
                                                SayTo(player, 1049357); // I have nothing more for you at this time.
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }