public override bool DropToWorld(Mobile from, Point3D p)
        {
            var drop = base.DropToWorld(from, p);

            var region = (ShrineBattleRegion)Region.Find(new Point3D(p.X, p.Y, p.Z), from.Map).GetRegion(typeof(ShrineBattleRegion));

            if (region != null && region.Controller != null)
            {
                _Controller = region.Controller;

                if (!_Controller.Active && _Controller.FragmentCount < 8 &&
                    JollyRogerData.GetShrine(this) == _Controller.Shrine)
                {
                    if (_Timer != null)
                    {
                        _Timer.Stop();
                    }

                    _Controller.FragmentCount++;

                    from.PrivateOverheadMessage(MessageType.Regular, 0x47E, 1159028, from.NetState); // *The fragment settles into the ground and surges with power as it begins to sink!*
                    Effects.SendPacket(Location, Map, new GraphicalEffect(EffectType.FixedXYZ, Serial.Zero, Serial.Zero, 0x3735, Location, Location, 1, 120, true, true));
                    from.PlaySound(0x5C);
                    _Timer = new FragmentTimer(this, from, _Controller.FragmentCount);
                    _Timer.Start();
                }
            }

            return(drop);
        }
Beispiel #2
0
        public static void CheckEnabled(bool timed = false)
        {
            JollyRogerData jollyroger = PointsSystem.JollyRogerData;

            if (jollyroger.Enabled && !jollyroger.InSeason)
            {
                if (timed)
                {
                    Timer.DelayCall(TimeSpan.FromSeconds(30), () =>
                    {
                        Utility.WriteConsoleColor(ConsoleColor.Green, "Disabling Jolly Roger");

                        Remove();
                        jollyroger.Enabled = false;
                    });
                }
                else
                {
                    Utility.WriteConsoleColor(ConsoleColor.Green, "Auto Disabling Jolly Roger");

                    Remove();
                    jollyroger.Enabled = false;
                }
            }
            else if (!jollyroger.Enabled && jollyroger.InSeason)
            {
                if (timed)
                {
                    Timer.DelayCall(TimeSpan.FromSeconds(30), () =>
                    {
                        Utility.WriteConsoleColor(ConsoleColor.Green, "Enabling Jolly Roger");

                        Generate();
                        jollyroger.Enabled = true;

                        if (!jollyroger.QuestContentGenerated)
                        {
                            GenerateQuestContent();
                            jollyroger.QuestContentGenerated = true;
                        }
                    });
                }
                else
                {
                    Utility.WriteConsoleColor(ConsoleColor.Green, "Auto Enabling Jolly Roger");

                    Generate();
                    jollyroger.Enabled = true;

                    if (!jollyroger.QuestContentGenerated)
                    {
                        GenerateQuestContent();
                        jollyroger.QuestContentGenerated = true;
                    }
                }
            }
        }
Beispiel #3
0
        public Tabard(Shrine shrine)
            : base(0xA412)
        {
            _Shrine = shrine;

            Weight         = 3;
            Hue            = JollyRogerData.GetShrineHue(shrine);
            StrRequirement = 0;
        }
        public override void OnComponentUsed(AddonComponent c, Mobile from)
        {
            var l = JollyRogerData.GetList(from);

            if (from is PlayerMobile pm && l != null && l.Shrine != null)
            {
                var title = JollyRogerData.GetShrineTitle(pm);

                if (title > 0)
                {
                    var shrine = JollyRogerData.GetShrine(title);

                    ShrineArray s = null;

                    for (var index = 0; index < l.Shrine.Count; index++)
                    {
                        var y = l.Shrine[index];

                        if (y.Shrine == shrine)
                        {
                            s = y;
                            break;
                        }
                    }

                    if (s != null)
                    {
                        var count = s.MasterDeath;

                        if (count >= 8)
                        {
                            from.CloseGump(typeof(TabardRewardGump));
                            from.SendGump(new TabardRewardGump(shrine));
                        }
                        else if (count < 3)
                        {
                            from.SendLocalizedMessage(1159362); // Thou art virtuous, but have not truly fought for virtue.
                        }
                        else
                        {
                            from.SendLocalizedMessage(1159370,
                                                      shrine.ToString()); // Thou art virtuous, but have not truly fought for ~1_VIRTUE~
                        }
                    }
                    else
                    {
                        from.SendLocalizedMessage(1159361); // Thou art not virtuous...
                    }
                }
                else
                {
                    from.SendLocalizedMessage(1159361); // Thou art not virtuous...
                }
            }
Beispiel #5
0
        public override void OnEnter(Mobile m)
        {
            var virtue = Virtue.FirstOrDefault(x => x.Area.Contains(m.Location));

            if (virtue != null)
            {
                var list = JollyRogerData.GetList(m);

                if (list != null && list.Shrine != null)
                {
                    var s = list.Shrine.FirstOrDefault(x => x.Shrine == virtue.Shrine);

                    if (s != null && s.MasterDeath >= 3)
                    {
                        if (!list.Cloak && list.Shrine.Count == 8 && !list.Shrine.Any(x => x.MasterDeath < 3))
                        {
                            var item = new CloakOfTheVirtuous();

                            if (m.Backpack == null || !m.Backpack.TryDropItem(m, item, false))
                            {
                                m.SendLocalizedMessage(1152337, item.ToString()); // A reward of ~1_ITEM~ will be delivered to you once you free up room in your backpack.

                                item.Delete();
                            }
                            else
                            {
                                m.PrivateOverheadMessage(MessageType.Regular, 0x47E, 1159339, m.NetState); // Thous hast proven thou walks the path of Virtue!

                                JollyRogerData.SetCloak(m, true);

                                m.SendLocalizedMessage(1152339, item.ToString()); // A reward of ~1_ITEM~ has been placed in your backpack.
                                m.PlaySound(0x419);
                            }
                        }
                        else
                        {
                            m.PrivateOverheadMessage(MessageType.Regular, 0x47E, false, $"*Thou are truly {virtue.Title}...*", m.NetState);

                            m.FixedParticles(0x376A, 1, 72, 0x13B5, EffectLayer.Waist);
                            m.PlaySound(0x1F2);
                        }
                    }
                    else
                    {
                        m.PrivateOverheadMessage(MessageType.Regular, 0x47E, false, $"*Thou are not truly {virtue.Title}...*", m.NetState);
                    }
                }
                else
                {
                    m.PrivateOverheadMessage(MessageType.Regular, 0x47E, false, $"*Thou are not truly {virtue.Title}...*", m.NetState);
                }
            }
        }
        public override void OnComponentUsed(AddonComponent c, Mobile from)
        {
            var l  = JollyRogerData.GetList(from);
            var pm = from as PlayerMobile;

            if (pm != null && l != null && l.Shrine != null)
            {
                var title = JollyRogerData.GetShrineTitle(pm);

                if (title > 0)
                {
                    var shrine = JollyRogerData.GetShrine(title);
                    var s      = l.Shrine.FirstOrDefault(y => y.Shrine == shrine);

                    if (s != null)
                    {
                        var count = s.MasterDeath;

                        if (count >= 8)
                        {
                            from.CloseGump(typeof(TabardRewardGump));
                            from.SendGump(new TabardRewardGump(shrine));
                        }
                        else if (count < 3)
                        {
                            from.SendLocalizedMessage(1159362); // Thou art virtuous, but have not truly fought for virtue.
                        }
                        else
                        {
                            from.SendLocalizedMessage(1159370,
                                                      shrine.ToString()); // Thou art virtuous, but have not truly fought for ~1_VIRTUE~
                        }
                    }
                    else
                    {
                        from.SendLocalizedMessage(1159361); // Thou art not virtuous...
                    }
                }
                else
                {
                    from.SendLocalizedMessage(1159361); // Thou art not virtuous...
                }
            }
            else
            {
                from.SendLocalizedMessage(1159361); // Thou art not virtuous...
            }
        }
            protected override void OnTick()
            {
                if (_Item != null && _Item._Controller != null && _Mobile != null)
                {
                    Effects.SendPacket(_Item.Location, _Item.Map, new GraphicalEffect(EffectType.FixedXYZ, Serial.Zero, Serial.Zero, 0x377A, _Item.Location, _Item.Location, 1, 72, true, true));

                    _Mobile.PrivateOverheadMessage(MessageType.Regular, 0x47E, 1159029, _Mobile.NetState); // *You feel a slight energy pulse through you...*
                    Effects.SendPacket(_Mobile.Location, _Mobile.Map, new GraphicalEffect(EffectType.FixedFrom, _Mobile.Serial, Serial.Zero, 0x377A, _Mobile.Location, _Mobile.Location, 1, 72, true, true));
                    _Mobile.PlaySound(0x202);

                    if (_Item._Controller.FragmentCount == 8 && _Count == 8)
                    {
                        _Item._Controller.FragmentCount = 0;
                        DelayCall(TimeSpan.FromSeconds(5), () => _Item._Controller.Active = true);
                    }

                    JollyRogerData.FragmentIncrease(_Mobile, _Item._Controller.Shrine);

                    _Item.Delete();
                }
            }
        public override void OnResponse(NetState sender, RelayInfo info)
        {
            if (info.ButtonID == 1)
            {
                Mobile from = sender.Mobile;

                var item = new Tabard(_Shrine);

                if (from.Backpack == null || !from.Backpack.TryDropItem(from, item, false))
                {
                    from.SendLocalizedMessage(1152338); // A reward item will be delivered to you once you free up room in your backpack.
                    item.Delete();
                }
                else
                {
                    JollyRogerData.SetTabard(from, true);
                    from.SendLocalizedMessage(1152340); // A reward item has been placed in your backpack.
                    from.PlaySound(0x419);
                }
            }
        }
        public override void OnResponse(NetState sender, RelayInfo info)
        {
            Mobile from = sender.Mobile;

            switch (info.ButtonID)
            {
            case 0:
            {
                break;
            }

            case 1:
            {
                var l = JollyRogerData.GetList(from);

                if (l != null)
                {
                    if (l.Tabard)
                    {
                        from.SendLocalizedMessage(1152687);         // You've already claimed your reward!
                    }
                    else
                    {
                        from.CloseGump(typeof(TabardClaimConfirmGump));
                        from.SendGump(new TabardClaimConfirmGump(_Shrine));
                    }
                }

                break;
            }

            case 2:
            {
                from.CloseGump(typeof(TabardConvertConfirmGump));
                from.SendGump(new TabardConvertConfirmGump());
                break;
            }
            }
        }
 public MysteriousFragment()
     : base(0x1F13)
 {
     Hue = JollyRogerData.FragmentRandomHue();
 }