- ConPVP: Help menu will no longer move players out of houses inside SafeZones.

- Player barkeeper hair changes will now correctly update in the client.
- Fixed hueing and removal of player barkeeper hair.
- Corrected the Self Repair mod on Brightsight Lenses.
- Fixed ElvenGlasses' WeaponAttributes property to be openable in the properties gump.
- Removed the Damage Increase property from Quiver of Infinity (this was replaced by Damage Modifier a while ago).
- Added a system message when trying to equip a talisman owned by someone else.
- Fixed a water floor tile acting like a wall in house customization.
This commit is contained in:
eos 2012-07-14 23:32:27 +00:00
parent 53228d30db
commit 24eca5c9c8
7 changed files with 159 additions and 69 deletions

View file

@ -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;
}

View file

@ -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<Item> 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<Item> 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<Item> 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<Item> 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

View file

@ -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

View file

@ -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;
}
}
}
}

View file

@ -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;
}
}
}

View file

@ -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)

View file

@ -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;
}
}
}