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 override bool OnDragLift(Mobile from) { if (_Controller != null) { _Controller.FragmentCount--; _Controller = null; } if (_Timer != null) { _Timer.Stop(); } return(true); }