예제 #1
0
        public override void OnDoubleClick(Mobile from)
        {
            if (from is PlayerMobile pm && pm.InRange(GetWorldLocation(), 2))
            {
                QuestSystem qs = pm.Quest;

                if (qs is DarkTidesQuest)
                {
                    QuestObjective obj = qs.FindObjective <FindCallingScrollObjective>();

                    if (obj?.Completed == false || DarkTidesQuest.HasLostCallingScroll(from))
                    {
                        Item scroll = new KronusScroll();

                        if (pm.PlaceInBackpack(scroll))
                        {
                            pm.SendLocalizedMessage(1060120, "",
                                                    0x41); // You rummage through the scrolls until you find the Scroll of Calling.  You quickly put it in your pack.

                            if (obj?.Completed == false)
                            {
                                obj.Complete();
                            }
                        }
                        else
                        {
                            pm.SendLocalizedMessage(1060148, "", 0x41); // You were unable to take the scroll.
                            scroll.Delete();
                        }
                    }
                }
            }

            base.OnDoubleClick(from);
        }
예제 #2
0
        public override int LabelNumber => 1060149;// Calling of Kronus
        public override bool CanDrop(PlayerMobile player)
        {
            DarkTidesQuest qs = player.Quest as DarkTidesQuest;

            if (qs == null)
            {
                return(true);
            }

            return(false);
        }
예제 #3
0
        public override bool CanTalkTo(PlayerMobile to)
        {
            DarkTidesQuest qs = to.Quest as DarkTidesQuest;

            if (qs == null)
            {
                return(to.Quest == null && QuestSystem.CanOfferQuest(to, typeof(DarkTidesQuest)));
            }

            return(qs.FindObjective(typeof(FindMardothAboutVaultObjective)) != null);
        }
        public override bool CanDrop(PlayerMobile player)
        {
            DarkTidesQuest qs = player.Quest as DarkTidesQuest;

            if (qs == null)
            {
                return(true);
            }

            return(!(qs.IsObjectiveInProgress(typeof(RetrieveAbraxusScrollObjective)) || qs.IsObjectiveInProgress(typeof(ReadAbraxusScrollObjective))));
        }
예제 #5
0
        public override bool CanDrop(PlayerMobile player)
        {
            DarkTidesQuest qs = player.Quest as DarkTidesQuest;

            if (qs == null)
            {
                return(true);
            }

            return(!(qs.IsObjectiveInProgress(typeof(FindCallingScrollObjective)) || qs.IsObjectiveInProgress(typeof(FindMardothAboutKronusObjective)) || qs.IsObjectiveInProgress(typeof(FindWellOfTearsObjective)) || qs.IsObjectiveInProgress(typeof(UseCallingScrollObjective))));
        }
예제 #6
0
        public override bool GetDestination(PlayerMobile player, ref Point3D loc, ref Map map)
        {
            QuestSystem qs = player.Quest;

            if (qs is DarkTidesQuest)
            {
                if (qs.IsObjectiveInProgress(typeof(FindMaabusTombObjective)))
                {
                    loc = new Point3D(2038, 1263, -90);
                    map = Map.Malas;
                    qs.AddConversation(new RadarConversation());
                    return(true);
                }

                if (qs.IsObjectiveInProgress(typeof(FindCrystalCaveObjective)))
                {
                    loc = new Point3D(1194, 521, -90);
                    map = Map.Malas;
                    return(true);
                }

                if (qs.IsObjectiveInProgress(typeof(FindCityOfLightObjective)))
                {
                    loc = new Point3D(1091, 519, -90);
                    map = Map.Malas;
                    return(true);
                }

                if (qs.IsObjectiveInProgress(typeof(ReturnToCrystalCaveObjective)))
                {
                    loc = new Point3D(1194, 521, -90);
                    map = Map.Malas;
                    return(true);
                }

                if (DarkTidesQuest.HasLostCallingScroll(player))
                {
                    loc = new Point3D(1194, 521, -90);
                    map = Map.Malas;
                    return(true);
                }
            }

            return(false);
        }
예제 #7
0
        public override void CheckProgress()
        {
            if (System.From.Map == Map.Malas && m_WellOfTearsArea.Contains(System.From.Location))
            {
                if (DarkTidesQuest.HasLostCallingScroll(System.From))
                {
                    if (!m_Inside)
                    {
                        System.AddConversation(new LostCallingScrollConversation(false));
                    }
                }
                else
                {
                    Complete();
                }

                m_Inside = true;
            }
            else
            {
                m_Inside = false;
            }
        }
예제 #8
0
        public override void OnDoubleClick(Mobile from)
        {
            var pm = from as PlayerMobile;

            if (pm != null && pm.InRange(GetWorldLocation(), 2))
            {
                var qs = pm.Quest;

                if (qs is DarkTidesQuest)
                {
                    var obj = qs.FindObjective(typeof(FindCallingScrollObjective));

                    if ((obj != null && !obj.Completed) || DarkTidesQuest.HasLostCallingScroll(from))
                    {
                        Item scroll = new KronusScroll();

                        if (pm.PlaceInBackpack(scroll))
                        {
                            pm.SendLocalizedMessage(1060120, "", 0x41);
                            // You rummage through the scrolls until you find the Scroll of Calling.  You quickly put it in your pack.

                            if (obj != null && !obj.Completed)
                            {
                                obj.Complete();
                            }
                        }
                        else
                        {
                            pm.SendLocalizedMessage(1060148, "", 0x41); // You were unable to take the scroll.
                            scroll.Delete();
                        }
                    }
                }
            }

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

            if (qs is DarkTidesQuest)
            {
                if (DarkTidesQuest.HasLostCallingScroll(player))
                {
                    qs.AddConversation(new LostCallingScrollConversation(true));
                }
                else
                {
                    QuestObjective obj = qs.FindObjective(typeof(FindMardothAboutVaultObjective));

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

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

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

                                cont.DropItem(new PigIron(20));
                                cont.DropItem(new NoxCrystal(20));
                                cont.DropItem(new BatWing(25));
                                cont.DropItem(new DaemonBlood(20));
                                cont.DropItem(new GraveDust(20));

                                BaseWeapon weapon = new BoneHarvester();

                                weapon.Slayer = SlayerName.OrcSlaying;

                                if (Core.AOS)
                                {
                                    BaseRunicTool.ApplyAttributesTo(weapon, 3, 20, 40);
                                }
                                else
                                {
                                    weapon.DamageLevel     = (WeaponDamageLevel)BaseCreature.RandomMinMaxScaled(2, 4);
                                    weapon.AccuracyLevel   = (WeaponAccuracyLevel)BaseCreature.RandomMinMaxScaled(2, 4);
                                    weapon.DurabilityLevel = (WeaponDurabilityLevel)BaseCreature.RandomMinMaxScaled(2, 4);
                                }

                                cont.DropItem(weapon);

                                cont.DropItem(new BankCheck(2000));
                                cont.DropItem(new EnchantedSextant());

                                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 if (contextMenu)
                            {
                                FocusTo(player);
                                player.SendLocalizedMessage(1061821);                                   // Mardoth has nothing more for you at this time.
                            }
                        }
                    }
                }
            }
            else if (qs == null && QuestSystem.CanOfferQuest(player, typeof(DarkTidesQuest)))
            {
                new DarkTidesQuest(player).SendOffer();
            }
        }
예제 #10
0
        public override void OnTalk(PlayerMobile player, bool contextMenu)
        {
            QuestSystem qs = player.Quest;

            if (qs is DarkTidesQuest)
            {
                if (DarkTidesQuest.HasLostCallingScroll(player))
                {
                    qs.AddConversation(new LostCallingScrollConversation(true));
                }
                else
                {
                    QuestObjective obj = qs.FindObjective(typeof(FindMardothAboutVaultObjective));

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

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

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

                                cont.DropItem(new PigIron(20));
                                cont.DropItem(new NoxCrystal(20));
                                cont.DropItem(new BatWing(25));
                                cont.DropItem(new DaemonBlood(20));
                                cont.DropItem(new GraveDust(20));

                                BaseWeapon weapon = new BoneHarvester();

                                weapon.Slayer = SlayerName.OrcSlaying;

                                int damageLevel = BaseCreature.RandomMinMaxScaled(2, 4);
                                if (PseudoSeerStone.Instance != null && PseudoSeerStone.Instance._HighestDamageLevelSpawn < damageLevel)
                                {
                                    if (damageLevel == 5 && PseudoSeerStone.ReplaceVanqWithSkillScrolls)
                                    {
                                        cont.DropItem(PuzzleChest.CreateRandomSkillScroll());
                                    }
                                    int platAmount = PseudoSeerStone.PlatinumPerMissedDamageLevel * (damageLevel - PseudoSeerStone.Instance._HighestDamageLevelSpawn);
                                    if (platAmount > 0)
                                    {
                                        cont.DropItem(new Platinum(platAmount));
                                    }
                                    damageLevel = PseudoSeerStone.Instance._HighestDamageLevelSpawn;
                                }
                                weapon.DamageLevel     = (WeaponDamageLevel)damageLevel;
                                weapon.AccuracyLevel   = (WeaponAccuracyLevel)BaseCreature.RandomMinMaxScaled(2, 4);
                                weapon.DurabilityLevel = (WeaponDurabilityLevel)BaseCreature.RandomMinMaxScaled(2, 4);

                                cont.DropItem(weapon);

                                cont.DropItem(new BankCheck(2000));
                                cont.DropItem(new EnchantedSextant());

                                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 if (contextMenu)
                            {
                                FocusTo(player);
                                player.SendLocalizedMessage(1061821);                                   // Mardoth has nothing more for you at this time.
                            }
                        }
                    }
                }
            }
            else if (qs == null && QuestSystem.CanOfferQuest(player, typeof(DarkTidesQuest)))
            {
                new DarkTidesQuest(player).SendOffer();
            }
        }