- 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:
parent
53228d30db
commit
24eca5c9c8
7 changed files with 159 additions and 69 deletions
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue