예제 #1
0
        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);
        }
예제 #2
0
        public override bool OnDragLift(Mobile from)
        {
            if (_Controller != null)
            {
                _Controller.FragmentCount--;
                _Controller = null;
            }

            if (_Timer != null)
            {
                _Timer.Stop();
            }

            return(true);
        }