diff --git a/Scripts/Engines/Help/HelpGump.cs b/Scripts/Engines/Help/HelpGump.cs index 785450c68..b48395b78 100644 --- a/Scripts/Engines/Help/HelpGump.cs +++ b/Scripts/Engines/Help/HelpGump.cs @@ -227,7 +227,7 @@ namespace Server.Engines.Help { BaseHouse house = BaseHouse.FindHouseAt( from ); - if ( house != null && house.IsAosRules ) + if ( house != null && house.IsAosRules && !from.Region.IsPartOf( typeof( Engines.ConPVP.SafeZone ) ) ) // Dueling { from.Location = house.BanLocation; } diff --git a/Scripts/Gumps/PlayerVendorGumps.cs b/Scripts/Gumps/PlayerVendorGumps.cs index 039fce94a..4d1f2c43a 100644 --- a/Scripts/Gumps/PlayerVendorGumps.cs +++ b/Scripts/Gumps/PlayerVendorGumps.cs @@ -594,13 +594,30 @@ namespace Server.Gumps if ( Categories[cat].Layer == Layer.FacialHair ) { if ( m_Vendor.Female ) - from.SendLocalizedMessage( 1010639 ); // You cannot place facial hair on a woman! + { + from.SendLocalizedMessage( 1010639 ); // You cannot place facial hair on a woman! + } else + { + int hue = m_Vendor.FacialHairHue; + + m_Vendor.FacialHairItemID = 0; + m_Vendor.ProcessDelta(); // invalidate item ID for clients + m_Vendor.FacialHairItemID = Categories[cat].Entries[ent].ItemID; + m_Vendor.FacialHairHue = hue; + } } else if ( Categories[cat].Layer == Layer.Hair ) - m_Vendor.HairItemID = Categories[cat].Entries[ent].ItemID; + { + int hue = m_Vendor.HairHue; + m_Vendor.HairItemID = 0; + m_Vendor.ProcessDelta(); // invalidate item ID for clients + + m_Vendor.HairItemID = Categories[cat].Entries[ent].ItemID; + m_Vendor.HairHue = hue; + } else { item = Categories[cat].Entries[ent].Create(); @@ -625,24 +642,37 @@ namespace Server.Gumps { if ( cat < Categories.Length && cat >= 0 ) { - Item item = null; + CustomCategory category = Categories[cat]; - List items = m_Vendor.Items; - - for ( int i = 0; item == null && i < items.Count; ++i ) + if ( category.Layer == Layer.Hair ) { - Item checkitem = items[i]; - Type type = checkitem.GetType(); - - for ( int j = 0; item == null && j < Categories[cat].Entries.Length; ++j ) - { - if ( type == Categories[cat].Entries[j].Type ) - item = checkitem; - } + new PVHairHuePicker( false, m_Vendor, from ).SendTo( state ); } + else if ( category.Layer == Layer.FacialHair ) + { + new PVHairHuePicker( true, m_Vendor, from ).SendTo( state ); + } + else + { + Item item = null; - if ( item != null ) - new PVHuePicker( item, m_Vendor, from ).SendTo( state ); + List items = m_Vendor.Items; + + for ( int i = 0; item == null && i < items.Count; ++i ) + { + Item checkitem = items[i]; + Type type = checkitem.GetType(); + + for ( int j = 0; item == null && j < category.Entries.Length; ++j ) + { + if ( type == category.Entries[j].Type ) + item = checkitem; + } + } + + if ( item != null ) + new PVHuePicker( item, m_Vendor, from ).SendTo( state ); + } } } else @@ -651,24 +681,37 @@ namespace Server.Gumps if ( cat < Categories.Length && cat >= 0 ) { - Item item = null; + CustomCategory category = Categories[cat]; - List items = m_Vendor.Items; - - for ( int i = 0; item == null && i < items.Count; ++i ) + if ( category.Layer == Layer.Hair ) { - Item checkitem = items[i]; - Type type = checkitem.GetType(); - - for ( int j = 0; item == null && j < Categories[cat].Entries.Length; ++j ) - { - if ( type == Categories[cat].Entries[j].Type ) - item = checkitem; - } + m_Vendor.HairItemID = 0; } + else if ( category.Layer == Layer.FacialHair ) + { + m_Vendor.FacialHairItemID = 0; + } + else + { + Item item = null; - if ( item != null ) - item.Delete(); + List items = m_Vendor.Items; + + for ( int i = 0; item == null && i < items.Count; ++i ) + { + Item checkitem = items[i]; + Type type = checkitem.GetType(); + + for ( int j = 0; item == null && j < category.Entries.Length; ++j ) + { + if ( type == category.Entries[j].Type ) + item = checkitem; + } + } + + if ( item != null ) + item.Delete(); + } from.SendGump( new PlayerVendorCustomizeGump( m_Vendor, from ) ); } @@ -683,10 +726,10 @@ namespace Server.Gumps private Mobile m_Vendor; private Mobile m_Mob; - public PVHuePicker( Item item, Mobile v, Mobile from ) : base( (item.Layer == Layer.Hair || item.Layer == Layer.FacialHair) ? 0xFAB : item.ItemID ) + public PVHuePicker( Item item, Mobile v, Mobile from ) : base( item.ItemID ) { - m_Vendor = v; m_Item = item; + m_Vendor = v; m_Mob = from; } @@ -705,6 +748,39 @@ namespace Server.Gumps m_Mob.SendGump( new PlayerVendorCustomizeGump( m_Vendor, m_Mob ) ); } } + + private class PVHairHuePicker : HuePicker + { + private bool m_FacialHair; + private Mobile m_Vendor; + private Mobile m_Mob; + + public PVHairHuePicker( bool facialHair, Mobile v, Mobile from ) : base( 0xFAB ) + { + m_FacialHair = facialHair; + m_Vendor = v; + m_Mob = from; + } + + public override void OnResponse( int hue ) + { + if ( m_Vendor.Deleted ) + return; + + if ( m_Vendor is PlayerVendor && !((PlayerVendor)m_Vendor).CanInteractWith( m_Mob, true ) ) + return; + + if ( m_Vendor is PlayerBarkeeper && !((PlayerBarkeeper)m_Vendor).IsOwner( m_Mob ) ) + return; + + if ( m_FacialHair ) + m_Vendor.FacialHairHue = hue; + else + m_Vendor.HairHue = hue; + + m_Mob.SendGump( new PlayerVendorCustomizeGump( m_Vendor, m_Mob ) ); + } + } } public class NewPlayerVendorCustomizeGump : Gump diff --git a/Scripts/Items/Armor/Glasses/ElvenGlasses.cs b/Scripts/Items/Armor/Glasses/ElvenGlasses.cs index 25a65db2d..51c3320ad 100644 --- a/Scripts/Items/Armor/Glasses/ElvenGlasses.cs +++ b/Scripts/Items/Armor/Glasses/ElvenGlasses.cs @@ -5,7 +5,7 @@ namespace Server.Items { public class ElvenGlasses : BaseArmor { - public override int LabelNumber{ get{ return 1032216; } } //elven glasses + public override int LabelNumber{ get{ return 1032216; } } // elven glasses public override int BasePhysicalResistance{ get{ return 2; } } public override int BaseFireResistance{ get{ return 4; } } @@ -21,7 +21,7 @@ namespace Server.Items public override int ArmorBase{ get{ return 30; } } - public override ArmorMaterialType MaterialType{ get{ return ArmorMaterialType.Leather; } } + public override ArmorMaterialType MaterialType{ get{ return ArmorMaterialType.Leather; } } public override CraftResource DefaultResource{ get{ return CraftResource.RegularLeather; } } public override ArmorMeditationAllowance DefMedAllowance{ get{ return ArmorMeditationAllowance.All; } } @@ -31,6 +31,7 @@ namespace Server.Items public AosWeaponAttributes WeaponAttributes { get{ return m_AosWeaponAttributes; } + set{} } [Constructable] @@ -43,12 +44,12 @@ namespace Server.Items public ElvenGlasses( Serial serial ) : base( serial ) { } - + public override void AppendChildNameProperties( ObjectPropertyList list ) { base.AppendChildNameProperties( list ); - - int prop; + + int prop; if ( (prop = m_AosWeaponAttributes.HitColdArea) != 0 ) list.Add( 1060416, prop.ToString() ); // hit cold area ~1_val~% @@ -95,7 +96,7 @@ namespace Server.Items if ( (prop = m_AosWeaponAttributes.HitLeechStam) != 0 ) list.Add( 1060430, prop.ToString() ); // hit stamina leech ~1_val~% } - + private static void SetSaveFlag( ref SaveFlag flags, SaveFlag toSet, bool setIf ) { if ( setIf ) @@ -106,37 +107,37 @@ namespace Server.Items { return ( (flags & toGet) != 0 ); } - + private enum SaveFlag { None = 0x00000000, - WeaponAttributes = 0x00000001, + WeaponAttributes = 0x00000001, } - + public override void Serialize( GenericWriter writer ) { base.Serialize( writer ); - - writer.Write( (int) 0 ); // version - + + writer.Write( (int) 0 ); // version + SaveFlag flags = SaveFlag.None; - + SetSaveFlag( ref flags, SaveFlag.WeaponAttributes, !m_AosWeaponAttributes.IsEmpty ); - + writer.Write( (int) flags ); - + if ( GetSaveFlag( flags, SaveFlag.WeaponAttributes ) ) m_AosWeaponAttributes.Serialize( writer ); } - + public override void Deserialize(GenericReader reader) { base.Deserialize( reader ); - + int version = reader.ReadInt(); - + SaveFlag flags = (SaveFlag) reader.ReadInt(); - + if ( GetSaveFlag( flags, SaveFlag.WeaponAttributes ) ) m_AosWeaponAttributes = new AosWeaponAttributes( this, reader ); else diff --git a/Scripts/Items/Minor Artifacts/ML/BrightsightLenses.cs b/Scripts/Items/Minor Artifacts/ML/BrightsightLenses.cs index 826b0ce9b..aec6159c5 100644 --- a/Scripts/Items/Minor Artifacts/ML/BrightsightLenses.cs +++ b/Scripts/Items/Minor Artifacts/ML/BrightsightLenses.cs @@ -6,7 +6,7 @@ namespace Server.Items public class BrightsightLenses : ElvenGlasses { public override int LabelNumber{ get{ return 1075039; } } // Brightsight Lenses - + public override int BasePhysicalResistance{ get{ return 9; } } public override int BaseFireResistance{ get{ return 29; } } public override int BaseColdResistance{ get{ return 7; } } @@ -20,29 +20,35 @@ namespace Server.Items public BrightsightLenses() : base() { Hue = 0x501; - + Attributes.NightSight = 1; Attributes.RegenMana = 3; - - WeaponAttributes.SelfRepair = 3; + + ArmorAttributes.SelfRepair = 3; } public BrightsightLenses( Serial serial ) : base( serial ) { } - + public override void Serialize( GenericWriter writer ) { base.Serialize( writer ); - - writer.Write( (int) 0 ); // version + + writer.Write( (int) 1 ); // version } - + public override void Deserialize(GenericReader reader) { base.Deserialize( reader ); - + int version = reader.ReadInt(); + + if ( version < 1 ) + { + WeaponAttributes.SelfRepair = 0; + ArmorAttributes.SelfRepair = 3; + } } } } diff --git a/Scripts/Items/Special/8th Anniversary Items/QuiverOfInfinity.cs b/Scripts/Items/Special/8th Anniversary Items/QuiverOfInfinity.cs index e16712354..736ad9822 100644 --- a/Scripts/Items/Special/8th Anniversary Items/QuiverOfInfinity.cs +++ b/Scripts/Items/Special/8th Anniversary Items/QuiverOfInfinity.cs @@ -26,7 +26,7 @@ namespace Server.Items { base.Serialize( writer ); - writer.WriteEncodedInt( 1 ); //version + writer.WriteEncodedInt( 2 ); // version } public override void Deserialize( GenericReader reader ) @@ -35,10 +35,11 @@ namespace Server.Items int version = reader.ReadEncodedInt(); - if( version < 1 && DamageIncrease == 0 ) - { + if ( version < 1 && DamageIncrease == 0 ) DamageIncrease = 10; - } + + if ( version < 2 && Attributes.WeaponDamage == 10 ) + Attributes.WeaponDamage = 0; } } } diff --git a/Scripts/Items/Talismans/BaseTalisman.cs b/Scripts/Items/Talismans/BaseTalisman.cs index deef9751e..556757f2d 100644 --- a/Scripts/Items/Talismans/BaseTalisman.cs +++ b/Scripts/Items/Talismans/BaseTalisman.cs @@ -223,12 +223,15 @@ namespace Server.Items talisman.m_AosSkillBonuses = new AosSkillBonuses(newItem, m_AosSkillBonuses); } - public override bool CanEquip(Mobile m) + public override bool CanEquip( Mobile from ) { - if (BlessedFor == null || BlessedFor == m) - return base.CanEquip(m); + if ( BlessedFor != null && BlessedFor != from ) + { + from.SendLocalizedMessage( 1010437 ); // You are not the owner. + return false; + } - return false; + return base.CanEquip( from ); } public override void OnAdded(object parent) diff --git a/Scripts/SpecialSystems/Engines/ItemFixes.cs b/Scripts/SpecialSystems/Engines/ItemFixes.cs index 4a1f49dc4..a93885842 100644 --- a/Scripts/SpecialSystems/Engines/ItemFixes.cs +++ b/Scripts/SpecialSystems/Engines/ItemFixes.cs @@ -11,6 +11,9 @@ namespace Server.Misc TileData.ItemTable[0x2A0].Flags |= TileFlag.NoShoot; TileData.ItemTable[0x3E0].Flags |= TileFlag.NoShoot; TileData.ItemTable[0x3E1].Flags |= TileFlag.NoShoot; + + // Incorrect height + TileData.ItemTable[0x34D2].Height = 0; } } }