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! } }
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); }