Esempio n. 1
0
            protected override void OnTarget(Mobile from, object targeted)
            {
                if (m_Key.Deleted || !m_Key.IsChildOf(from.Backpack))
                {
                    from.SendLocalizedMessage(501661); // That key is unreachable.
                    return;
                }

                if (targeted is StorageLocker)
                {
                    StorageLocker sl = (StorageLocker)targeted;

                    if (sl.Type == m_Key.Type)
                    {
                        sl.Locked = false;

                        if (sl.Type == Parts.Flywheel)
                        {
                            sl.DropItem(new FlyWheel());
                        }
                        else if (sl.Type == Parts.BearingAssembly)
                        {
                            sl.DropItem(new BearingAssembly());
                        }
                        else if (sl.Type == Parts.PowerCore)
                        {
                            sl.DropItem(new PowerCore());
                        }
                        else if (sl.Type == Parts.WireSpool)
                        {
                            sl.DropItem(new WireSpool());
                        }

                        sl.BeginRestart(TimeSpan.FromMinutes(10.0));

                        m_Key.Delete();
                    }
                }
                else
                {
                    from.SendLocalizedMessage(501666); // You can't unlock that!
                }
            }
Esempio n. 2
0
        public override bool OnBeforeDestroyed()
        {
            if (m_key != Parts.None)
            {
                (new LockerKey(m_key)).MoveToWorld(new Point3D(base.Location), base.Map);
                m_StorageLocker.BeginRestart(TimeSpan.FromMinutes(10.0));
            }
            else
            {
                Item debris = new WoodKeyDebris();
                debris.Movable = false;
                debris.MoveToWorld(new Point3D(base.Location), base.Map);

                switch (Utility.Random(3))
                {
                case 0:
                {
                    BarrelWrath.DoRandomWrath(debris);
                    break;
                }

                case 1:
                {
                    BarrelPoisonWrath.DoRandomWrath(debris);
                    break;
                }

                case 2:
                {
                    switch (Utility.Random(8))
                    {
                    case 0:
                    {
                        (new SeaSnake()).MoveToWorld(new Point3D(Location), Map);
                        break;
                    }

                    case 1:
                    {
                        (new ShipRat()).MoveToWorld(new Point3D(Location), Map);
                        break;
                    }

                    case 2:
                    {
                        (new ShipBat()).MoveToWorld(new Point3D(Location), Map);
                        break;
                    }

                    case 3:
                    {
                        (new ShipBat()).MoveToWorld(new Point3D(Location), Map);
                        break;
                    }

                    case 4:
                    {
                        (new ShipRat()).MoveToWorld(new Point3D(Location), Map);
                        break;
                    }

                    case 5:
                    {
                        (new SeaSnake()).MoveToWorld(new Point3D(Location), Map);
                        break;
                    }

                    default: break;
                    }
                }
                break;
                }

                if (Utility.RandomDouble() < 0.05)
                {
                    (new BarrelHoops()).MoveToWorld(new Point3D(Location), Map);
                }
                if (Utility.RandomDouble() < 0.05)
                {
                    (new BarrelStaves()).MoveToWorld(new Point3D(Location), Map);
                }
                if (Utility.RandomDouble() < 0.05)
                {
                    (new BarrelLid()).MoveToWorld(new Point3D(Location), Map);
                }
                if (Utility.RandomDouble() < 0.05)
                {
                    (new CopperWire()).MoveToWorld(new Point3D(Location), Map);
                }
            }

            return(true);
        }