From 68ab65a475d5267c8ac68562f864c1c7db402e8f Mon Sep 17 00:00:00 2001 From: xavier Date: Sat, 22 Dec 2012 22:21:04 +0000 Subject: [PATCH] new tubs. --- .../Tailor Items/Dyetubs/DyeTub.cs | 5 +- .../Tailor Items/Dyetubs/LeatherDyeTub.cs | 2 +- .../Dyetubs/MetallicClothDyetub.cs | 36 ++++++++ .../Tailor Items/Dyetubs/MetallicHuePicker.cs | 83 +++++++++++++++++++ .../Dyetubs/MetallicLeatherDyeTub.cs | 46 ++++++++++ .../Tailor Items/Dyetubs/SpecialDyeTub.cs | 3 +- .../Tailor Items/Dyetubs/WhiteClothDyeTub.cs | 37 +++++++++ .../Dyetubs/WhiteLeatherDyeTub.cs | 39 +++++++++ .../Skill Items/Tailor Items/Misc/Dyes.cs | 44 ++++++++-- 9 files changed, 285 insertions(+), 10 deletions(-) create mode 100644 Scripts/Items/Skill Items/Tailor Items/Dyetubs/MetallicClothDyetub.cs create mode 100644 Scripts/Items/Skill Items/Tailor Items/Dyetubs/MetallicHuePicker.cs create mode 100644 Scripts/Items/Skill Items/Tailor Items/Dyetubs/MetallicLeatherDyeTub.cs create mode 100644 Scripts/Items/Skill Items/Tailor Items/Dyetubs/WhiteClothDyeTub.cs create mode 100644 Scripts/Items/Skill Items/Tailor Items/Dyetubs/WhiteLeatherDyeTub.cs diff --git a/Scripts/Items/Skill Items/Tailor Items/Dyetubs/DyeTub.cs b/Scripts/Items/Skill Items/Tailor Items/Dyetubs/DyeTub.cs index 2d98fe40b..397f71729 100644 --- a/Scripts/Items/Skill Items/Tailor Items/Dyetubs/DyeTub.cs +++ b/Scripts/Items/Skill Items/Tailor Items/Dyetubs/DyeTub.cs @@ -81,7 +81,7 @@ namespace Server.Items } [CommandProperty( AccessLevel.GameMaster )] - public bool Redyable + public virtual bool Redyable { get { @@ -140,6 +140,9 @@ namespace Server.Items { } + // Three metallic tubs now. + public virtual bool MetallicHues{ get { return false; } } + // Select the clothing to dye. public virtual int TargetMessage{ get{ return 500859; } } diff --git a/Scripts/Items/Skill Items/Tailor Items/Dyetubs/LeatherDyeTub.cs b/Scripts/Items/Skill Items/Tailor Items/Dyetubs/LeatherDyeTub.cs index 2f160573f..196c700ea 100644 --- a/Scripts/Items/Skill Items/Tailor Items/Dyetubs/LeatherDyeTub.cs +++ b/Scripts/Items/Skill Items/Tailor Items/Dyetubs/LeatherDyeTub.cs @@ -9,7 +9,7 @@ namespace Server.Items public override int TargetMessage{ get{ return 1042416; } } // Select the leather item to dye. public override int FailMessage{ get{ return 1042418; } } // You can only dye leather with this tub. public override int LabelNumber{ get{ return 1041284; } } // Leather Dye Tub - public override CustomHuePicker CustomHuePicker{ get{ return CustomHuePicker.LeatherDyeTub; } } + public override CustomHuePicker CustomHuePicker{ get{ return null; } } private bool m_IsRewardItem; diff --git a/Scripts/Items/Skill Items/Tailor Items/Dyetubs/MetallicClothDyetub.cs b/Scripts/Items/Skill Items/Tailor Items/Dyetubs/MetallicClothDyetub.cs new file mode 100644 index 000000000..40a5680bb --- /dev/null +++ b/Scripts/Items/Skill Items/Tailor Items/Dyetubs/MetallicClothDyetub.cs @@ -0,0 +1,36 @@ +using System; + +namespace Server.Items +{ + public class MetallicClothDyetub : DyeTub + { + public override int LabelNumber { get { return 1152920; } } // Metallic Cloth ... + + public override bool MetallicHues { get { return true; } } + + [Constructable] + public MetallicClothDyetub() + { + LootType = LootType.Blessed; + } + + public MetallicClothDyetub( Serial serial ) + : base( serial ) + { + } + + public override void Serialize( GenericWriter writer ) + { + base.Serialize( writer ); + + writer.Write( (int) 0 ); // version + } + + public override void Deserialize( GenericReader reader ) + { + base.Deserialize( reader ); + + int version = reader.ReadInt(); + } + } +} \ No newline at end of file diff --git a/Scripts/Items/Skill Items/Tailor Items/Dyetubs/MetallicHuePicker.cs b/Scripts/Items/Skill Items/Tailor Items/Dyetubs/MetallicHuePicker.cs new file mode 100644 index 000000000..d00cc6d03 --- /dev/null +++ b/Scripts/Items/Skill Items/Tailor Items/Dyetubs/MetallicHuePicker.cs @@ -0,0 +1,83 @@ +using Server; +using Server.Gumps; +using Server.Network; +using System; +using System.Windows.Forms; + +namespace Server.Items +{ + public class MetallicHuePicker : Gump + { + public delegate void MetallicHuePickerCallback( Mobile from, object state, int hue ); + + private Mobile m_From; + private MetallicHuePickerCallback m_Callback; + private object m_State; + + public void Render() + { + AddPage( 0 ); + + AddBackground( 0, 0, 450, 450, 0x13BE ); + AddBackground( 10, 10, 430, 430, 0xBB8 ); + + AddHtmlLocalized( 55, 400, 200, 25, 1011036, false, false ); // OKAY + + AddButton( 20, 400, 4005, 4007, 1, GumpButtonType.Reply, 0 ); + AddButton( 200, 400, 4005, 4007, 2, GumpButtonType.Reply, 0 ); + AddLabel( 235, 400, 0, "DEFAULT" ); + + AddHtmlLocalized( 55, 25, 200, 25, 1150063, false, false ); // Base/Shadow Color + AddHtmlLocalized( 260, 25, 200, 25, 1150064, false, false ); // Highlight Color + + for( int row = 0; row < 13; row++ ) + { + AddButton( 30, ( 65 + ( row * 25 ) ), 0x1467, 0x1468, row + 1, GumpButtonType.Page, row + 1 ); + AddItem( 50, ( 65 + ( row * 25 ) ), 0x1412, 2501 + ( row * 12 ) + ( ( row == 12 ) ? 6 : 0 ) ); + } + + for( int page = 1; page < 14; page++ ) + { + AddPage( page ); + + for( int row = 0; row < 12; row++ ) + { + int hue = ( 2501 + ( ( page == 13 ) ? 6 : 0 ) + ( row + ( 12 * ( page - 1 ) ) ) ); /* OSI just had to skip 6 unused hues, didnt they */ + AddRadio( 260, ( 65 + ( row * 25 ) ), 0xd2, 0xd3, false, hue ); + AddItem( 280, ( 65 + ( row * 25 ) ), 0x1412, hue ); + } + } + } + + public MetallicHuePicker( Mobile from, MetallicHuePickerCallback callback, object state ) + : base( 450, 450 ) + { + m_From = from; + m_Callback = callback; + m_State = state; + + Render(); + } + + public override void OnResponse( NetState sender, RelayInfo info ) + { + switch( info.ButtonID ) + { + case 1: // Okay + { + if( info.Switches.Length > 0 ) + { + m_Callback( m_From, m_State, info.Switches[ 0 ] ); + } + break; + } + case 2: // Default + { + m_Callback( m_From, m_State, 0 ); + + break; + } + } + } + } +} \ No newline at end of file diff --git a/Scripts/Items/Skill Items/Tailor Items/Dyetubs/MetallicLeatherDyeTub.cs b/Scripts/Items/Skill Items/Tailor Items/Dyetubs/MetallicLeatherDyeTub.cs new file mode 100644 index 000000000..86c39910d --- /dev/null +++ b/Scripts/Items/Skill Items/Tailor Items/Dyetubs/MetallicLeatherDyeTub.cs @@ -0,0 +1,46 @@ +using System; + +namespace Server.Items +{ + public class MetallicLeatherDyeTub : LeatherDyeTub + { + public override CustomHuePicker CustomHuePicker{ get{ return null; } } + + public override int LabelNumber { get { return 1153495; } } // Metallic Leather ... + + public override bool MetallicHues { get { return true; } } + + [Constructable] + public MetallicLeatherDyeTub() + { + LootType = LootType.Blessed; + } + + public MetallicLeatherDyeTub( Serial serial ) + : base( serial ) + { + } + + public override void GetProperties( ObjectPropertyList list ) + { + base.GetProperties( list ); + + if ( Core.ML && IsRewardItem ) + list.Add( 1076221 ); // 5th Year Veteran Reward + } + + public override void Serialize( GenericWriter writer ) + { + base.Serialize( writer ); + + writer.Write( (int) 0 ); // version + } + + public override void Deserialize( GenericReader reader ) + { + base.Deserialize( reader ); + + int version = reader.ReadInt(); + } + } +} \ No newline at end of file diff --git a/Scripts/Items/Skill Items/Tailor Items/Dyetubs/SpecialDyeTub.cs b/Scripts/Items/Skill Items/Tailor Items/Dyetubs/SpecialDyeTub.cs index 7da177f11..0999e5a79 100644 --- a/Scripts/Items/Skill Items/Tailor Items/Dyetubs/SpecialDyeTub.cs +++ b/Scripts/Items/Skill Items/Tailor Items/Dyetubs/SpecialDyeTub.cs @@ -1,8 +1,9 @@ using System; +using Server.Engines.VeteranRewards; namespace Server.Items { - public class SpecialDyeTub : DyeTub, Engines.VeteranRewards.IRewardItem + public class SpecialDyeTub : DyeTub, IRewardItem { public override CustomHuePicker CustomHuePicker{ get{ return CustomHuePicker.SpecialDyeTub; } } public override int LabelNumber{ get{ return 1041285; } } // Special Dye Tub diff --git a/Scripts/Items/Skill Items/Tailor Items/Dyetubs/WhiteClothDyeTub.cs b/Scripts/Items/Skill Items/Tailor Items/Dyetubs/WhiteClothDyeTub.cs new file mode 100644 index 000000000..da5702c6a --- /dev/null +++ b/Scripts/Items/Skill Items/Tailor Items/Dyetubs/WhiteClothDyeTub.cs @@ -0,0 +1,37 @@ +using Server; +using System; + +namespace Server.Items /* High seas, loot from merchant ship's hold, also a "uncommon" loot item */ +{ + public class WhiteClothDyeTub : DyeTub + { + public override int LabelNumber { get { return 1149984; } } // White Cloth Dye Tub + + public override bool Redyable { get { return false; } } + + [Constructable] + public WhiteClothDyeTub() + { + DyedHue = Hue = 0x9C2; + } + + public WhiteClothDyeTub( Serial serial ) + : base( serial ) + { + } + + public override void Serialize( GenericWriter writer ) + { + base.Serialize( writer ); + + writer.Write( ( int )0 ); // version + } + + public override void Deserialize( GenericReader reader ) + { + base.Deserialize( reader ); + + int version = reader.ReadInt(); + } + } +} \ No newline at end of file diff --git a/Scripts/Items/Skill Items/Tailor Items/Dyetubs/WhiteLeatherDyeTub.cs b/Scripts/Items/Skill Items/Tailor Items/Dyetubs/WhiteLeatherDyeTub.cs new file mode 100644 index 000000000..c927d8bee --- /dev/null +++ b/Scripts/Items/Skill Items/Tailor Items/Dyetubs/WhiteLeatherDyeTub.cs @@ -0,0 +1,39 @@ +using Server; +using System; + +namespace Server.Items +{ + public class WhiteLeatherDyeTub : LeatherDyeTub /* OSI UO 13th anniv gift, from redeemable gift tickets */ + { + public override int LabelNumber { get { return 1149900; } } // White Leather Dye Tub + + public override bool Redyable { get { return false; } } + + [Constructable] + public WhiteLeatherDyeTub() + { + DyedHue = Hue = 0x9C2; + LootType = LootType.Blessed; + } + + + public WhiteLeatherDyeTub( Serial serial ) + : base( serial ) + { + } + + public override void Serialize( GenericWriter writer ) + { + base.Serialize( writer ); + + writer.Write( ( int )1 ); // version + } + + public override void Deserialize( GenericReader reader ) + { + base.Deserialize( reader ); + + int version = reader.ReadInt(); + } + } +} \ No newline at end of file diff --git a/Scripts/Items/Skill Items/Tailor Items/Misc/Dyes.cs b/Scripts/Items/Skill Items/Tailor Items/Misc/Dyes.cs index d4a8340dd..02393495a 100644 --- a/Scripts/Items/Skill Items/Tailor Items/Misc/Dyes.cs +++ b/Scripts/Items/Skill Items/Tailor Items/Misc/Dyes.cs @@ -4,12 +4,23 @@ using Server.HuePickers; namespace Server.Items { - public class Dyes : Item + public class Dyes : Item /* , IUsesRemaining */ /* TODO complete usesremaing */ { + /* + public bool ShowUsesRemaining { get { return false; } set { } } + + [CommandProperty( AccessLevel.GameMaster )] + public virtual int UsesRemaining { get { return m_UsesRemaining; } set { m_UsesRemaining = value; } } + + private int m_UsesRemaining; + */ + [Constructable] public Dyes() : base( 0xFA9 ) { Weight = 3.0; + + /* m_UsesRemaining = 25; */ } public Dyes( Serial serial ) : base( serial ) @@ -20,7 +31,9 @@ namespace Server.Items { base.Serialize( writer ); - writer.Write( (int) 0 ); // version + writer.Write( (int) 1 ); // version + + /* writer.Write( ( int )m_UsesRemaining ); */ } public override void Deserialize( GenericReader reader ) @@ -31,6 +44,8 @@ namespace Server.Items if ( Weight == 0.0 ) Weight = 3.0; + + /* m_UsesRemaining = ( version == 0 ) ? 25 : reader.ReadInt(); */ } public override void OnDoubleClick( Mobile from ) @@ -60,9 +75,16 @@ namespace Server.Items } } - private static void SetTubHue( Mobile from, object state, int hue ) + public virtual void SetTubHue( Mobile from, object state, int hue ) { - ((DyeTub)state).DyedHue = hue; + if( state is DyeTub ) + { + DyeTub tub = state as DyeTub; + + tub.DyedHue = hue; + + /* dyes.m_UsesRemaining--; let this change ride till the overhaul */ + } } protected override void OnTarget( Mobile from, object targeted ) @@ -73,10 +95,18 @@ namespace Server.Items if ( tub.Redyable ) { - if ( tub.CustomHuePicker == null ) - from.SendHuePicker( new InternalPicker( tub ) ); - else + if( tub.MetallicHues ) /* OSI has three metallic tubs now */ + { + from.SendGump( new MetallicHuePicker( from, new MetallicHuePicker.MetallicHuePickerCallback( SetTubHue ), tub ) ); + } + else if( tub.CustomHuePicker != null ) + { from.SendGump( new CustomHuePickerGump( from, tub.CustomHuePicker, new CustomHuePickerCallback( SetTubHue ), tub ) ); + } + else + { + from.SendHuePicker( new InternalPicker( tub ) ); + } } else if ( tub is BlackDyeTub ) {