using System; using Server; using Server.Items; using Server.Mobiles; using Server.Network; using Server.Gumps; namespace Server.Items { public class DungeonPassageRelic : Item { [Constructable] public DungeonPassageRelic() : base( 0x1F14 ) { Name = "a relic of the classic depths"; Hue = 1150; // White glowing hue Weight = 1.0; } public DungeonPassageRelic( Serial serial ) : base( serial ) { } public override void OnDoubleClick( Mobile from ) { if ( !IsChildOf( from.Backpack ) ) { from.SendLocalizedMessage( 1042001 ); return; } from.CloseGump( typeof( DungeonPassageGump ) ); from.SendGump( new DungeonPassageGump( from, this ) ); } public override void Serialize( GenericWriter writer ) { base.Serialize( writer ); writer.Write( (int) 0 ); } public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); } } } namespace Server.Gumps { public class DungeonPassageGump : Gump { private Item m_Relic; public DungeonPassageGump( Mobile from, Item relic ) : base( 100, 100 ) { m_Relic = relic; Closable = false; Disposable = true; Dragable = true; Resizable = false; AddPage(0); AddBackground(0, 0, 320, 150, 3600); AddHtml(0, 15, 320, 20, "
Dungeon Passage
", false, false); AddImageTiled(25, 40, 270, 2, 96); // Divider line AddHtml(25, 55, 270, 40, "Are you sure you wish to shatter this relic and be transported to a random classic dungeon?", false, false); // Yes Button AddButton(40, 105, 4005, 4007, 1, GumpButtonType.Reply, 0); AddLabel(80, 106, 1152, "Yes!"); // No/Cancel Button AddButton(190, 105, 4017, 4019, 0, GumpButtonType.Reply, 0); AddLabel(230, 106, 38, "Not Now."); } public override void OnResponse( NetState sender, RelayInfo info ) { Mobile m = sender.Mobile; if ( info.ButtonID == 1 ) { if ( m_Relic == null || m_Relic.Deleted || !m_Relic.IsChildOf( m.Backpack ) ) { m.SendMessage( 38, "The relic must be in your backpack to use." ); return; } Point3D destination = Point3D.Zero; Map targetMap = Map.Felucca; string dungeonName = ""; switch ( Utility.Random( 6 ) ) { case 0: // Shame destination = new Point3D( 3515, 174, -2 ); dungeonName = "Shame"; break; case 1: // Deceit destination = new Point3D( 3827, 165, 0 ); dungeonName = "Deceit"; break; case 2: // Covetous destination = new Point3D( 4096, 127, 0 ); dungeonName = "Covetous"; break; case 3: // Hythloth destination = new Point3D( 4297, 64, 59 ); dungeonName = "Hythloth"; break; case 4: // Despise destination = new Point3D( 4748, 183, 30 ); dungeonName = "Despise"; break; case 5: // Destard destination = new Point3D( 5155, 286, 0 ); dungeonName = "Destard"; break; } Effects.PlaySound( m.Location, m.Map, 0x1FE ); m.MoveToWorld( destination, targetMap ); Effects.PlaySound( m.Location, m.Map, 0x1FE ); m.SendMessage( 63, "The relic shatters into dust and you find yourself in the depths of {0}!", dungeonName ); m_Relic.Delete(); } else { m.SendMessage( "You put the relic away for now." ); } } } }