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); }
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; } } } }
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... } }
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(); }