public override void OnSingleClick( Mobile from )
		{
			ArrayList attrs = new ArrayList();

			if ( !Identified )
				attrs.Add( new EquipInfoAttribute( 1038000 ) ); // Unidentified
			else
				attrs.Add( new EquipInfoAttribute( 1041367, m_Charges ) );

			EquipmentInfo eqInfo = new EquipmentInfo( 1017413, Crafter, false, (EquipInfoAttribute[])attrs.ToArray( typeof( EquipInfoAttribute ) ) );
			from.Send( new DisplayEquipmentInfo( this, eqInfo ) );
		}
示例#2
0
		public override void OnSingleClick( Mobile from )
		{
			ArrayList attrs = new ArrayList();

			if ( DisplayLootType )
			{
				if ( LootType == LootType.Blessed )
					attrs.Add( new EquipInfoAttribute( 1038021 ) ); // blessed
				else if ( LootType == LootType.Cursed )
					attrs.Add( new EquipInfoAttribute( 1049643 ) ); // cursed
			}

			if ( m_Quality == InstrumentQuality.Exceptional )
				attrs.Add( new EquipInfoAttribute( 1018305 - (int)m_Quality ) );

			if( m_ReplenishesCharges )
				attrs.Add( new EquipInfoAttribute( 1070928 ) ); // Replenish Charges

			// TODO: Must this support item identification?
			if( m_Slayer != SlayerName.None )
			{
				SlayerEntry entry = SlayerGroup.GetEntryByName( m_Slayer );
				if( entry != null )
					attrs.Add( new EquipInfoAttribute( entry.Title ) );
			}

			if( m_Slayer2 != SlayerName.None )
			{
				SlayerEntry entry = SlayerGroup.GetEntryByName( m_Slayer2 );
				if( entry != null )
					attrs.Add( new EquipInfoAttribute( entry.Title ) );
			}

			int number;

			if ( Name == null )
			{
				number = LabelNumber;
			}
			else
			{
				this.LabelTo( from, Name );
				number = 1041000;
			}

			if ( attrs.Count == 0 && Crafter == null && Name != null )
				return;

			EquipmentInfo eqInfo = new EquipmentInfo( number, m_Crafter, false, (EquipInfoAttribute[])attrs.ToArray( typeof( EquipInfoAttribute ) ) );

			from.Send( new DisplayEquipmentInfo( this, eqInfo ) );
		}
示例#3
0
		public override void OnSingleClick( Mobile from )
		{
			if (this.HideAttributes == true)
			{
				base.OnSingleClick(from);
				return;
			}

			ArrayList attrs = new ArrayList();

            if (DisplayLootType)
            {
                if (LootType == LootType.Blessed)
                    attrs.Add(new EquipInfoAttribute(1038021)); // blessed
                else if (LootType == LootType.Cursed)
                    attrs.Add(new EquipInfoAttribute(1049643)); // cursed
            }

            if (Name != null || OldName == null) // only use the new ([X/Y/Z]) method on things we don't have OldNames for
            {
                if (m_Quality == ArmorQuality.Exceptional)
                    attrs.Add(new EquipInfoAttribute(1018305 - (int)m_Quality));

                if (m_Identified)
                {
                    if (m_Durability != ArmorDurabilityLevel.Regular)
                        attrs.Add(new EquipInfoAttribute(1038000 + (int)m_Durability));

                    if (m_Protection > ArmorProtectionLevel.Regular && m_Protection <= ArmorProtectionLevel.Invulnerability)
                        attrs.Add(new EquipInfoAttribute(1038005 + (int)m_Protection));
                }
                else if (m_Durability != ArmorDurabilityLevel.Regular || (m_Protection > ArmorProtectionLevel.Regular && m_Protection <= ArmorProtectionLevel.Invulnerability))
                {
                    attrs.Add(new EquipInfoAttribute(1038000)); // Unidentified
                }
            }
            
			int number;

			if ( Name == null )
			{
				if (OldName == null)
				{
					number = LabelNumber;
				}
				else
				{
					string oldname = OldName;
					//yay!  Show us the old way!
					if (m_Quality == ArmorQuality.Exceptional)
					{
						oldname = "exceptional " + oldname;
					}

					if (m_Identified)
					{
						if (m_Durability != ArmorDurabilityLevel.Regular)
						{
							//attrs.Add(new EquipInfoAttribute(1038000 + (int)m_Durability));
							oldname = m_Durability.ToString().ToLower() + " " + oldname;
						}

						if (m_Protection > ArmorProtectionLevel.Regular && m_Protection <= ArmorProtectionLevel.Invulnerability)
						{
							//attrs.Add(new EquipInfoAttribute(1038005 + (int)m_Protection));
							oldname = oldname + " of " + m_Protection.ToString().ToLower();
						}
					}
					else if (m_Durability != ArmorDurabilityLevel.Regular 
						     || (m_Protection > ArmorProtectionLevel.Regular && m_Protection <= ArmorProtectionLevel.Invulnerability))
					{
						oldname = "magic " + oldname;
					}

					//crafted-by goes at the end
					if (m_Crafter != null)
					{
						oldname += " crafted by " + m_Crafter.Name;
					}

					this.LabelTo(from, oldname);
					number = 1041000;
				}
			}
			else
			{
				this.LabelTo( from, Name );
				number = 1041000;
			}

			if ( attrs.Count == 0 && Crafter == null && Name != null )
				return;

			if (OldName == null)
			{
				EquipmentInfo eqInfo = new EquipmentInfo(number, m_Crafter, false, (EquipInfoAttribute[])attrs.ToArray(typeof(EquipInfoAttribute)));
				from.Send(new DisplayEquipmentInfo(this, eqInfo));
			}
			else
			{
				if (attrs.Count > 0)
				{
					EquipmentInfo eqInfo = new EquipmentInfo(number, null, false, (EquipInfoAttribute[])attrs.ToArray(typeof(EquipInfoAttribute)));
					from.Send(new DisplayEquipmentInfo(this, eqInfo));
				}
			}
		}
示例#4
0
		public override void OnSingleClick( Mobile from )
		{
			ArrayList attrs = new ArrayList();

			if ( DisplayLootType )
			{
				if ( LootType == LootType.Blessed )
					attrs.Add( new EquipInfoAttribute( 1038021 ) ); // blessed
				else if ( LootType == LootType.Cursed )
					attrs.Add( new EquipInfoAttribute( 1049643 ) ); // cursed
			}

			if ( !Identified )
			{
				attrs.Add( new EquipInfoAttribute( 1038000 ) ); // Unidentified
			}
			else
			{
				int num = 0;

				switch ( m_WandEffect )
				{
					case WandEffect.Clumsiness:			num = 3002011; break;
					case WandEffect.Identification:		num = 1044063; break;
					case WandEffect.Healing:			num = 3002014; break;
					case WandEffect.Feeblemindedness:	num = 3002013; break;
					case WandEffect.Weakness:			num = 3002018; break;
					case WandEffect.MagicArrow:			num = 3002015; break;
					case WandEffect.Harming:			num = 3002022; break;
					case WandEffect.Fireball:			num = 3002028; break;
					case WandEffect.GreaterHealing:		num = 3002039; break;
					case WandEffect.Lightning:			num = 3002040; break;
					case WandEffect.ManaDraining:		num = 3002041; break;
				}

				if ( num > 0 )
					attrs.Add( new EquipInfoAttribute( num, m_Charges ) );
			}

			int number;

			if ( Name == null )
			{
				number = 1017085;
			}
			else
			{
				this.LabelTo( from, Name );
				number = 1041000;
			}

			if ( attrs.Count == 0 && Crafter == null && Name != null )
				return;

			EquipmentInfo eqInfo = new EquipmentInfo( number, Crafter, false, (EquipInfoAttribute[])attrs.ToArray( typeof( EquipInfoAttribute ) ) );

			from.Send( new DisplayEquipmentInfo( this, eqInfo ) );
		}
		public override void OnSingleClick(Mobile from)
		{
			var attrs = new List<EquipInfoAttribute>();

			if (DisplayLootType)
			{
				if (LootType == LootType.Blessed)
				{
					attrs.Add(new EquipInfoAttribute(1038021)); // blessed
				}
				else if (LootType == LootType.Cursed)
				{
					attrs.Add(new EquipInfoAttribute(1049643)); // cursed
				}
			}

			#region Factions
			if (m_FactionState != null)
			{
				attrs.Add(new EquipInfoAttribute(1041350)); // faction item
			}
			#endregion

			if (m_Quality == WeaponQuality.Exceptional)
			{
				attrs.Add(new EquipInfoAttribute(1018305 - (int)m_Quality));
			}

			if (m_Identified || from.AccessLevel >= AccessLevel.GameMaster)
			{
				if (m_Slayer != SlayerName.None)
				{
					SlayerEntry entry = SlayerGroup.GetEntryByName(m_Slayer);
					if (entry != null)
					{
						attrs.Add(new EquipInfoAttribute(entry.Title));
					}
				}

				if (m_Slayer2 != SlayerName.None)
				{
					SlayerEntry entry = SlayerGroup.GetEntryByName(m_Slayer2);
					if (entry != null)
					{
						attrs.Add(new EquipInfoAttribute(entry.Title));
					}
				}

				if (m_DurabilityLevel != WeaponDurabilityLevel.Regular)
				{
					attrs.Add(new EquipInfoAttribute(1038000 + (int)m_DurabilityLevel));
				}

				if (m_DamageLevel != WeaponDamageLevel.Regular)
				{
					attrs.Add(new EquipInfoAttribute(1038015 + (int)m_DamageLevel));
				}

				if (m_AccuracyLevel != WeaponAccuracyLevel.Regular)
				{
					attrs.Add(new EquipInfoAttribute(1038010 + (int)m_AccuracyLevel));
				}
			}
			else if (m_Slayer != SlayerName.None || m_Slayer2 != SlayerName.None ||
					 m_DurabilityLevel != WeaponDurabilityLevel.Regular || m_DamageLevel != WeaponDamageLevel.Regular ||
					 m_AccuracyLevel != WeaponAccuracyLevel.Regular)
			{
				attrs.Add(new EquipInfoAttribute(1038000)); // Unidentified
			}

			if (m_Poison != null && m_PoisonCharges > 0)
			{
				attrs.Add(new EquipInfoAttribute(1017383, m_PoisonCharges));
			}

			int number;

			if (Name == null)
			{
				number = LabelNumber;
			}
			else
			{
				LabelTo(from, Name);
				number = 1041000;
			}

			if (attrs.Count == 0 && Crafter == null && Name != null)
			{
				return;
			}

			EquipmentInfo eqInfo = new EquipmentInfo(number, m_Crafter, false, attrs.ToArray());

			from.Send(new DisplayEquipmentInfo(this, eqInfo));
		}
示例#6
0
		public override void OnSingleClick( Mobile from )
		{
			if ( Deleted || !from.CanSee( this ) )
				return;

			LabelToExpansion(from);

			int number;

			if ( String.IsNullOrEmpty( Name ) )
				number = LabelNumber;
			else
			{
				this.LabelTo( from, Name );
				number = 1041000;
			}

			if ( DisplayDyable )
				LabelDyableTo( from );

			List<EquipInfoAttribute> attrs = new List<EquipInfoAttribute>();

			bool ismagical = AddEquipInfoAttributes( from, attrs );

			if ( attrs.Count > 0 || Crafter != null || number != 1041000 )
			{

				EquipmentInfo eqInfo = new EquipmentInfo( number, m_Crafter, from.AccessLevel < AccessLevel.GameMaster && ismagical && !m_Identified, attrs.ToArray() );
				from.Send( new DisplayEquipmentInfo( this, eqInfo ) );
			}
		}
示例#7
0
        // Special version that DOES NOT show armor attributes and tags
        public override void OnSingleClick(Mobile from)
        {
            ArrayList attrs = new ArrayList();

            int number;

            if (Name == null)
            {
                number = LabelNumber;
            }
            else
            {
                this.LabelTo(from, Name);
                number = 1041000;
            }

            if (attrs.Count == 0 && Crafter == null && Name != null)
                return;

            EquipmentInfo eqInfo = new EquipmentInfo(number, Crafter, false, (EquipInfoAttribute[])attrs.ToArray(typeof(EquipInfoAttribute)));

            from.Send(new DisplayEquipmentInfo(this, eqInfo));

        }
        public override void OnSingleClick( Mobile from )
        {
            if ( Deleted || !from.CanSee( this ) )
                return;

            int number;

            if ( String.IsNullOrEmpty( Name ) )
                number = LabelNumber;
            else
            {
                this.LabelTo( from, Name );
                number = 1041000;
            }

            List<EquipInfoAttribute> attrs = new List<EquipInfoAttribute>();

            AddEquipInfoAttributes( from, attrs );

            if ( attrs.Count > 0 || Crafter != null || String.IsNullOrEmpty( Name ) )
            {
                EquipmentInfo eqInfo = new EquipmentInfo( number, m_Crafter, false, attrs.ToArray() );
                from.Send( new DisplayEquipmentInfo( this, eqInfo ) );
            }

            if ( CheckContentDisplay( from ) )
                LabelTo( from, "({0} item{2}, {1} stones)", TotalItems, TotalWeight, TotalItems != 1 ? "s" : String.Empty );
                //LabelTo( from, 1050044, String.Format( "{0}\t{1}", TotalItems.ToString(), TotalWeight.ToString() ) );
        }
示例#9
0
		public override void OnSingleClick( Mobile from )
		{
			if (this.HideAttributes == true)
			{
				base.OnSingleClick(from);
				return;
			}

			ArrayList attrs = new ArrayList();

			if ( DisplayLootType )
			{
				if ( LootType == LootType.Blessed )
					attrs.Add( new EquipInfoAttribute( 1038021 ) ); // blessed
				else if ( LootType == LootType.Cursed )
					attrs.Add( new EquipInfoAttribute( 1049643 ) ); // cursed
			}

			if ( m_Quality == JewelQuality.Exceptional )
				attrs.Add( new EquipInfoAttribute( 1018305 - (int)m_Quality ) );

			int number;

			if ( Name == null )
			{
				number = LabelNumber;
			}
			else
			{
				this.LabelTo( from, Name );
				number = 1041000;
			}

			if (Identified == false && MagicCharges > 0)
				attrs.Add( new EquipInfoAttribute( 1038000 ) ); // unidentified
			else if (Identified == true && MagicCharges > 0)
			{
				switch(MagicType)
				{
					case JewelMagicEffect.MagicReflect:
						attrs.Add( new EquipInfoAttribute(1044416, m_MagicCharges) ); // magic reflection
						break;
					case JewelMagicEffect.Invisibility:
						attrs.Add( new EquipInfoAttribute(1044424, m_MagicCharges) ); // invisibility
						break;
					case JewelMagicEffect.Bless:
						attrs.Add( new EquipInfoAttribute(1044397, m_MagicCharges) ); // bless
						break;
					case JewelMagicEffect.Teleport:
						attrs.Add( new EquipInfoAttribute(1044402, m_MagicCharges) ); // teleport
						break;
					case JewelMagicEffect.Agility:
						attrs.Add( new EquipInfoAttribute(1044389, m_MagicCharges) ); // agility
						break;
					case JewelMagicEffect.Cunning:
						attrs.Add( new EquipInfoAttribute(1044390, m_MagicCharges) ); // cunning
						break;
					case JewelMagicEffect.Strength:
						attrs.Add( new EquipInfoAttribute(1044396, m_MagicCharges) ); // strength
						break;
					case JewelMagicEffect.NightSight:
						attrs.Add( new EquipInfoAttribute(1044387, m_MagicCharges) ); // night sight
						break;
					case JewelMagicEffect.Curse:
						attrs.Add( new EquipInfoAttribute(1044407, m_MagicCharges) ); // curse
						break;
					case JewelMagicEffect.Clumsy:
						attrs.Add( new EquipInfoAttribute(1044382, m_MagicCharges) ); // clumsy
						break;
					case JewelMagicEffect.Feeblemind:
						attrs.Add( new EquipInfoAttribute(1044384, m_MagicCharges) ); // feeblemind
						break;
					case JewelMagicEffect.Weakness:
						attrs.Add( new EquipInfoAttribute(1044388, m_MagicCharges) ); // weaken
						break;
				}
			}

			if ( attrs.Count == 0 && Name != null && m_Crafter == null )
				return;

			EquipmentInfo eqInfo = new EquipmentInfo( number, m_Crafter, false, (EquipInfoAttribute[])attrs.ToArray( typeof( EquipInfoAttribute ) ) );

			from.Send( new DisplayEquipmentInfo( this, eqInfo ) );
		}
示例#10
0
		public override void OnSingleClick( Mobile from )
		{
			if ( m_Description != null && m_Description.Length > 0 )
				LabelTo( from, m_Description );

			ArrayList attrs = new ArrayList();

			if ( m_Quality == RunebookQuality.Exceptional )
				attrs.Add( new EquipInfoAttribute( 1018305 - (int)m_Quality ) );

			int number = LabelNumber;

			if ( Crafter == null && attrs.Count == 0 )
			{
				base.OnSingleClick( from );
				return;
			}

			EquipmentInfo eqInfo = new EquipmentInfo( number, m_Crafter, false, (EquipInfoAttribute[])attrs.ToArray( typeof( EquipInfoAttribute ) ) );

			from.Send( new DisplayEquipmentInfo( this, eqInfo ) );
		}
示例#11
0
		public override void OnSingleClick( Mobile from )
		{
			ArrayList attrs = new ArrayList();

			int num = 1041424;
			attrs.Add( new EquipInfoAttribute( num, m_Charges ) );

			int number;

			if ( Name == null )
			{
				number = 1017085;
			}
			else
			{
				this.LabelTo( from, Name );
				number = 1041000;
			}

			EquipmentInfo eqInfo = new EquipmentInfo( number, Crafter, false, (EquipInfoAttribute[])attrs.ToArray( typeof( EquipInfoAttribute ) ) );

			from.Send( new DisplayEquipmentInfo( this, eqInfo ) );
		}
		public override void OnSingleClick( Mobile from )
		{
			ArrayList attrs = new ArrayList();

			if ( DisplayLootType )
			{
				if ( LootType == LootType.Blessed )
					attrs.Add( new EquipInfoAttribute( 1038021 ) ); // blessed
				else if ( LootType == LootType.Cursed )
					attrs.Add( new EquipInfoAttribute( 1049643 ) ); // cursed
			}

			#region Factions
			if ( m_FactionState != null )
				attrs.Add( new EquipInfoAttribute( 1041350 ) ); // faction item
			#endregion

			if ( m_Quality == WeaponQuality.Exceptional )
				attrs.Add( new EquipInfoAttribute( 1018305 - (int)m_Quality ) );

			if ( m_Identified )
			{
				if ( m_Slayer != SlayerName.None )
					attrs.Add( new EquipInfoAttribute( SlayerGroup.GetEntryByName( m_Slayer ).Title ) );

				if ( m_DurabilityLevel != WeaponDurabilityLevel.Regular )
					attrs.Add( new EquipInfoAttribute( 1038000 + (int)m_DurabilityLevel ) );

				if ( m_DamageLevel != WeaponDamageLevel.Regular )
					attrs.Add( new EquipInfoAttribute( 1038015 + (int)m_DamageLevel ) );

				if ( m_AccuracyLevel != WeaponAccuracyLevel.Regular )
					attrs.Add( new EquipInfoAttribute( 1038010 + (int)m_AccuracyLevel ) );
			}
            else if (m_Slayer != SlayerName.None || m_DurabilityLevel != WeaponDurabilityLevel.Regular || m_DamageLevel != WeaponDamageLevel.Regular || m_AccuracyLevel != WeaponAccuracyLevel.Regular || m_ChargedAbility != WeaponChargedAbility.Regular && m_AbilityCharges > 0 )
			{
				attrs.Add( new EquipInfoAttribute( 1038000 ) ); // Unidentified
			}

			if ( m_Poison != null && m_PoisonCharges > 0 )
				attrs.Add( new EquipInfoAttribute( 1017383, m_PoisonCharges ) );

			int number;

			/*if ( Name == null )
			{
				number = LabelNumber;
			}
			else
			{
				this.LabelTo( from, Name );
				number = 1041000;
			}*/

            string name = Name == null ? ItemData.Name.ToLower() : Name;
            if (Name == null && m_Identified && m_ChargedAbility != WeaponChargedAbility.Regular && m_AbilityCharges > 0)
                name += String.Format(" of {0}: {1}", GetChargedAbilityName(m_ChargedAbility), m_AbilityCharges);
            this.LabelTo( from, name );
            number = 1041000;

			if ( attrs.Count == 0 && Crafter == null && Name != null )
				return;

			EquipmentInfo eqInfo = new EquipmentInfo( number, m_Crafter, false, (EquipInfoAttribute[])attrs.ToArray( typeof( EquipInfoAttribute ) ) );

			from.Send( new DisplayEquipmentInfo( this, eqInfo ) );
		}
示例#13
0
		public override void OnSingleClick(Mobile from)
		{
			ArrayList attrs = new ArrayList();

			if (Quality == ClothingQuality.Exceptional)
				attrs.Add(new EquipInfoAttribute(1018305 - (int)Quality));

			int number;

			if ( Name == null )
			{
				this.LabelTo( from, "cloth gloves" );
				number = 1041000;
			}
			else
			{
				this.LabelTo( from, Name );
				number = 1041000;
			}

			if (attrs.Count == 0 && Crafter == null && Name != null)
				return;

			EquipmentInfo eqInfo = new EquipmentInfo(number, Crafter, false, (EquipInfoAttribute[])attrs.ToArray(typeof(EquipInfoAttribute)));

			from.Send(new DisplayEquipmentInfo(this, eqInfo));
		}
示例#14
0
		public override void OnSingleClick(Mobile from)
		{
			int number;

			if ( Name == null )
			{
				number = LabelNumber;
			}
			else
			{
				this.LabelTo( from, Name );
				number = 1041000;
			}

			ArrayList attrs = new ArrayList();

			if (Quality == WeaponQuality.Exceptional)
				attrs.Add( new EquipInfoAttribute( 1018305 - (int)m_Quality ) );

			EquipmentInfo eqInfo = new EquipmentInfo( number, m_Crafter, false, (EquipInfoAttribute[])attrs.ToArray( typeof( EquipInfoAttribute ) ) );

			from.Send( new DisplayEquipmentInfo( this, eqInfo ) );
		}
		public override void OnSingleClick(Mobile from)
		{
			ArrayList attrs = new ArrayList();

			if (DisplayLootType)
			{
				if (LootType == LootType.Blessed)
					attrs.Add(new EquipInfoAttribute(1038021)); // blessed
				else if (LootType == LootType.Cursed)
					attrs.Add(new EquipInfoAttribute(1049643)); // cursed
			}

			string name = Name;
			bool hasability = ( m_ChargedAbility != JewelChargedAbility.Regular ) && ( m_AbilityCharges > 0 );

			if ( !m_Identified && hasability )
				attrs.Add(new EquipInfoAttribute(1038000)); // Unidentified
			else if ( String.IsNullOrEmpty( Name ) )
			{
				string gemtype = GetGemType( m_GemType );
				string chargeability = GetChargedAbilityName( m_ChargedAbility );
				name = String.Format( "{0}{1}{2}", String.IsNullOrEmpty( gemtype ) ? "" : String.Format( "{0} ", gemtype ), ItemData.Name.ToLower(), hasability ? String.Format( " of {0}: {1}", chargeability, m_AbilityCharges ) : "" );
			}

			this.LabelTo(from, name);
			int number = 1041000;

			EquipmentInfo eqInfo = new EquipmentInfo(number, null, false, (EquipInfoAttribute[])attrs.ToArray(typeof(EquipInfoAttribute)));
			from.Send(new DisplayEquipmentInfo(this, eqInfo));
		}
示例#16
0
		public override void OnSingleClick( Mobile from )
		{
			// If it's not identified, leave... name is handled in EnchantedScroll

			if( !m_Identified )
				return;

			ArrayList attrs = new ArrayList();

			if( ItemType.IsSubclassOf( typeof( BaseWeapon ) ) )
			{
				// Send damage, durability, accuracy and slayer info

				if ( iProps[3] != (int) SlayerName.None )
					attrs.Add( new EquipInfoAttribute( 1017383 + iProps[3] ) );

				if ( iProps[1] != (int) WeaponDurabilityLevel.Regular )
					attrs.Add( new EquipInfoAttribute( 1038000 + iProps[1] ) );

				if ( iProps[0] != (int) WeaponDamageLevel.Regular )
					attrs.Add( new EquipInfoAttribute( 1038015 + iProps[0] ) );

				if ( iProps[2] != (int) WeaponAccuracyLevel.Regular )
					attrs.Add( new EquipInfoAttribute( 1038010 + iProps[2] ) );

			}
			else if( ItemType.IsSubclassOf( typeof( BaseArmor ) ) )
			{
				// Send protection and durability info

				if ( iProps[1] != (int) ArmorDurabilityLevel.Regular )
					attrs.Add( new EquipInfoAttribute( 1038000 + iProps[1] ) );

				if ( iProps[0] > (int) ArmorProtectionLevel.Regular )
					attrs.Add( new EquipInfoAttribute( 1038005 + iProps[0] ) );

			}
			else if( ItemType.IsSubclassOf( typeof( BaseClothing ) ) )
			{
				// Send charges and charge type info

				MagicEffect MagicType = (MagicEffect) iProps[0];

				switch (MagicType)
				{
					case MagicEffect.MagicReflect:
						attrs.Add(new EquipInfoAttribute(1044416, iProps[1])); // magic reflection
						break;
					case MagicEffect.Invisibility:
						attrs.Add(new EquipInfoAttribute(1044424, iProps[1])); // invisibility
						break;
					case MagicEffect.Bless:
						attrs.Add(new EquipInfoAttribute(1044397, iProps[1])); // bless
						break;
					case MagicEffect.Agility:
						attrs.Add(new EquipInfoAttribute(1044389, iProps[1])); // agility
						break;
					case MagicEffect.Cunning:
						attrs.Add(new EquipInfoAttribute(1044390, iProps[1])); // cunning
						break;
					case MagicEffect.Strength:
						attrs.Add(new EquipInfoAttribute(1044396, iProps[1])); // strength
						break;
					case MagicEffect.NightSight:
						attrs.Add(new EquipInfoAttribute(1044387, iProps[1])); // night sight
						break;
					case MagicEffect.Curse:
						attrs.Add(new EquipInfoAttribute(1044407, iProps[1])); // curse
						break;
					case MagicEffect.Clumsy:
						attrs.Add(new EquipInfoAttribute(1044382, iProps[1])); // clumsy
						break;
					case MagicEffect.Feeblemind:
						attrs.Add(new EquipInfoAttribute(1044384, iProps[1])); // feeblemind
						break;
					case MagicEffect.Weakness:
						attrs.Add(new EquipInfoAttribute(1044388, iProps[1])); // weaken
						break;
				}
			}
			else if( ItemType.IsSubclassOf( typeof( BaseJewel ) ) )
			{
				// Send charges and charge type info

				JewelMagicEffect MagicType = (JewelMagicEffect) iProps[0];

				switch(MagicType)
				{
					case JewelMagicEffect.MagicReflect:
						attrs.Add( new EquipInfoAttribute(1044416, iProps[1] ) ); // magic reflection
						break;
					case JewelMagicEffect.Invisibility:
						attrs.Add( new EquipInfoAttribute(1044424, iProps[1] ) ); // invisibility
						break;
					case JewelMagicEffect.Bless:
						attrs.Add( new EquipInfoAttribute(1044397, iProps[1] ) ); // bless
						break;
					case JewelMagicEffect.Teleport:
						attrs.Add( new EquipInfoAttribute(1044402, iProps[1] ) ); // teleport
						break;
					case JewelMagicEffect.Agility:
						attrs.Add( new EquipInfoAttribute(1044389, iProps[1] ) ); // agility
						break;
					case JewelMagicEffect.Cunning:
						attrs.Add( new EquipInfoAttribute(1044390, iProps[1] ) ); // cunning
						break;
					case JewelMagicEffect.Strength:
						attrs.Add( new EquipInfoAttribute(1044396, iProps[1] ) ); // strength
						break;
					case JewelMagicEffect.NightSight:
						attrs.Add( new EquipInfoAttribute(1044387, iProps[1] ) ); // night sight
						break;
					case JewelMagicEffect.Curse:
						attrs.Add( new EquipInfoAttribute(1044407, iProps[1] ) ); // curse
						break;
					case JewelMagicEffect.Clumsy:
						attrs.Add( new EquipInfoAttribute(1044382, iProps[1] ) ); // clumsy
						break;
					case JewelMagicEffect.Feeblemind:
						attrs.Add( new EquipInfoAttribute(1044384, iProps[1] ) ); // feeblemind
						break;
					case JewelMagicEffect.Weakness:
						attrs.Add( new EquipInfoAttribute(1044388, iProps[1] ) ); // weaken
						break;
				}
			}
			else
				return;

			EquipmentInfo eqInfo = new EquipmentInfo( 1041000, null, false, (EquipInfoAttribute[])attrs.ToArray( typeof( EquipInfoAttribute ) ) );
			from.Send( new DisplayEquipmentInfo( this, eqInfo ) );
		}
        public override void OnSingleClick( Mobile from )
        {
            if ( Deleted || !from.CanSee( this ) )
                return;

            int number;

            if ( String.IsNullOrEmpty( Name ) )
                number = LabelNumber;
            else
            {
                this.LabelTo( from, Name );
                number = 1041000;
            }

            List<EquipInfoAttribute> attrs = new List<EquipInfoAttribute>();

            AddEquipInfoAttributes( from, attrs );

            if ( attrs.Count > 0 || Crafter != null || String.IsNullOrEmpty( Name ) )
            {
                EquipmentInfo eqInfo = new EquipmentInfo( number, m_Crafter, false, attrs.ToArray() );
                from.Send( new DisplayEquipmentInfo( this, eqInfo ) );
            }
        }
示例#18
0
        /*
		public void DisplayDurabilityTo( Mobile m, int uses )
		{
			LabelToAffix( m, 1017323, AffixType.Append, ": " + uses.ToString() ); // Durability
		}
*/

        public override void OnSingleClick(Mobile from)
        {
            if (Deleted || !from.CanSee(this))
            {
                return;
            }

            LabelToExpansion(from);

            //			if ( this is IUsesRemaining && ((IUsesRemaining)this).ShowUsesRemaining )
            //				DisplayDurabilityTo( from, ((IUsesRemaining)this).UsesRemaining );

            if (IsAesthetic)
            {
                LabelTo(from, "[Aesthetic]", 2049);
            }

            int number;
            string name = Name;
            if (IsAesthetic)
                name = name + "[Aesthetic]";
            /*
			if ( m_Resource != CraftResource.None && m_Resource != CraftResource.RegularWood && m_Resource != CraftResource.Iron && m_Resource != CraftResource.RegularLeather && String.IsNullOrEmpty( name ) )
			{
				StringList stringlist = StringList.Default;

				if ( from.NetState != null && from.NetState.LTable != null )
					stringlist = from.NetState.LTable;

				if ( String.IsNullOrEmpty( name ) && stringlist[LabelNumber] != null )
					name = stringlist[LabelNumber].Text;

				if ( name.StartsWith( "a " ) && name.Length > 2 )
					name = name.Substring( 2, name.Length-2 );
				else if ( name.StartsWith( "an " ) && name.Length > 3 )
					name = name.Substring( 3, name.Length-3 );

				int oreType = 0;
				bool dragonscale = false;

				//dragon scale - 1053112

				switch ( m_Resource )
				{
					case CraftResource.DullCopper:	oreType = 1053108; break; // dull copper
					case CraftResource.ShadowIron:	oreType = 1053107; break; // shadow iron
					case CraftResource.Copper:		oreType = 1053106; break; // copper
					case CraftResource.Bronze:		oreType = 1053105; break; // bronze
					case CraftResource.Gold:			oreType = 1053104; break; // golden
					case CraftResource.Agapite:		oreType = 1053103; break; // agapite
					case CraftResource.Verite:		oreType = 1053102; break; // verite
					case CraftResource.Valorite:		oreType = 1053101; break; // valorite
					case CraftResource.SpinedLeather:	oreType = 1061118; break; // spined
					case CraftResource.HornedLeather:	oreType = 1061117; break; // horned
					case CraftResource.BarbedLeather:	oreType = 1061116; break; // barbed
					case CraftResource.RedScales:		oreType = 1060814; dragonscale = true; break; // red
					case CraftResource.YellowScales:	oreType = 1060818; dragonscale = true; break; // yellow
					case CraftResource.BlackScales:	oreType = 1060820; dragonscale = true; break; // black
					case CraftResource.GreenScales:	oreType = 1060819; dragonscale = true; break; // green
					case CraftResource.WhiteScales:	oreType = 1060821; dragonscale = true; break; // white
					case CraftResource.BlueScales:	oreType = 1060815; dragonscale = true; break; // blue
					case CraftResource.OakWood:		oreType = 1072533; break;
					case CraftResource.AshWood:		oreType = 1072534; break;
					case CraftResource.YewWood:		oreType = 1072535; break;
					case CraftResource.Bloodwood:		oreType = 1072538; break;
					case CraftResource.Heartwood:		oreType = 1072536; break;
					case CraftResource.Frostwood:		oreType = 1072539; break;
				}

				string resource = stringlist[oreType].Text;
				if ( dragonscale )
					resource = String.Format( "{0} {1}", resource, stringlist[1053112].Text );

				name = String.Format( "{0} {1}", resource, name );
			}
			else
				name = Name;
*/
            if (String.IsNullOrEmpty(name))
            {
                number = LabelNumber;
            }
            else
            {
                LabelTo(from, name, 1153);
                number = 1041000;
            }

            if (DisplayDyable)
            {
                LabelDyableTo(from);
            }

            var attrs = new List<EquipInfoAttribute>();

            bool ismagical = AddEquipInfoAttributes(from, attrs) ||
                             (m_Resource > CraftResource.Valorite && m_Resource < CraftResource.RegularLeather) ||
                             base.Hue > 0;

            if (attrs.Count > 0 || Crafter != null || number != 1041000)
            {
                var eqInfo = new EquipmentInfo(
                    number, m_Crafter, /*from.AccessLevel < AccessLevel.GameMaster &&*/ ismagical && !Identified,
                    attrs.ToArray());
                from.Send(new DisplayEquipmentInfo(this, eqInfo));
            }
        }
示例#19
0
		public override void OnSingleClick(Mobile from)
		{
			if (this.HideAttributes == true)
			{
				base.OnSingleClick(from);
				return;
			}

			ArrayList attrs = new ArrayList();

            if (DisplayLootType)
            {
                if (LootType == LootType.Blessed)
                    attrs.Add(new EquipInfoAttribute(1038021)); // blessed
                else if (LootType == LootType.Cursed)
                    attrs.Add(new EquipInfoAttribute(1049643)); // cursed
            }

            if (Name != null || OldName == null) // only use the new ([X/Y/Z]) method on things we don't have OldNames for
            {
                if (m_Quality == WeaponQuality.Exceptional)
                    attrs.Add(new EquipInfoAttribute(1018305 - (int)m_Quality));

                if (m_Identified)
                {
                    if (m_Slayer != SlayerName.None)
                        attrs.Add(new EquipInfoAttribute(1017383 + (int)m_Slayer));

                    if (m_DurabilityLevel != WeaponDurabilityLevel.Regular)
                        attrs.Add(new EquipInfoAttribute(1038000 + (int)m_DurabilityLevel));

                    if (m_DamageLevel != WeaponDamageLevel.Regular)
                        attrs.Add(new EquipInfoAttribute(1038015 + (int)m_DamageLevel));

                    if (m_AccuracyLevel != WeaponAccuracyLevel.Regular)
                        attrs.Add(new EquipInfoAttribute(1038010 + (int)m_AccuracyLevel));
                }
                else if (m_Slayer != SlayerName.None || m_DurabilityLevel != WeaponDurabilityLevel.Regular || m_DamageLevel != WeaponDamageLevel.Regular || m_AccuracyLevel != WeaponAccuracyLevel.Regular)
                {
                    attrs.Add(new EquipInfoAttribute(1038000)); // Unidentified
                }
            }

            if (Name != null || OldName == null)
            {
                if (m_Poison != null && m_PoisonCharges > 0)
                    attrs.Add(new EquipInfoAttribute(1017383, m_PoisonCharges));
            }

        

			int number;

			if (Name == null)
			{
				if (OldName == null)
				{
					number = LabelNumber;
				}
				else
				{
					string oldname = OldName;
					string article = OldArticle;
					//yay!  Show us the old way!
					if (m_Quality == WeaponQuality.Exceptional)
					{
						oldname = "exceptional " + oldname;
						article = "an";
					}

					if (m_Identified)
					{
						if (m_Slayer != SlayerName.None)
						{
							oldname = m_Slayer.ToString().ToLower() + " " + oldname;
							article = "a";
						}

						if (m_AccuracyLevel != WeaponAccuracyLevel.Regular)
						{
							if (m_AccuracyLevel == WeaponAccuracyLevel.Accurate)
							{
								oldname = "accurate " + oldname;
								article = "an";
							}
							else
							{
								oldname = m_AccuracyLevel.ToString().ToLower() + " accurate " + oldname;
								if (m_AccuracyLevel == WeaponAccuracyLevel.Eminently || m_AccuracyLevel == WeaponAccuracyLevel.Exceedingly)
								{
									article = "an";
								}
								else
								{
									article = "a";
								}
							}
						}

						if (m_DurabilityLevel != WeaponDurabilityLevel.Regular)
						{
							oldname = m_DurabilityLevel.ToString().ToLower() + " " + oldname;
							if (m_DurabilityLevel == WeaponDurabilityLevel.Indestructible)
							{
								article = "an";
							}
							else
							{
								article = "a";
							}
						}

						if (m_DamageLevel != WeaponDamageLevel.Regular)
						{
							if (m_DamageLevel == WeaponDamageLevel.Vanq) //silly people abbreviated vanquishing in the enumeration!
							{
								oldname = oldname + " of vanquishing";
							}
							else
							{
								oldname = oldname + " of " + m_DamageLevel.ToString().ToLower();
							}
						}
					}
					else if( m_Slayer != SlayerName.None 
						     || m_DurabilityLevel != WeaponDurabilityLevel.Regular 
						     || m_DamageLevel != WeaponDamageLevel.Regular 
						     || m_AccuracyLevel != WeaponAccuracyLevel.Regular )
					{
						oldname = "magic " + oldname;
						article = "a";
					}

					//crafted-by goes at the end
					if (m_Crafter != null)
					{
						oldname += " crafted by " + m_Crafter.Name;
					}

					if (m_Poison != null && m_PoisonCharges > 0)
					{
						oldname = "poisoned " + oldname;
						oldname = (oldname + ", charges: " + m_PoisonCharges);
						article = "a";
					}

					//finally, add the article
					oldname = article + " " + oldname;

					this.LabelTo(from, oldname);
					number = 1041000;
				}
			}
			else
			{
				this.LabelTo(from, Name);
				number = 1041000;
			}

			if (attrs.Count == 0 && Crafter == null && Name != null)
				return;

			if (Name != null || OldName == null)
			{
				EquipmentInfo eqInfo = new EquipmentInfo(number, m_Crafter, false, (EquipInfoAttribute[])attrs.ToArray(typeof(EquipInfoAttribute)));
				from.Send(new DisplayEquipmentInfo(this, eqInfo));
			}
			else
			{
				if (attrs.Count > 0)
				{
					EquipmentInfo eqInfo = new EquipmentInfo(number, null, false, (EquipInfoAttribute[])attrs.ToArray(typeof(EquipInfoAttribute)));
					from.Send(new DisplayEquipmentInfo(this, eqInfo));
				}
			}
		}
示例#20
0
		public DisplayEquipmentInfo( Item item, EquipmentInfo info ) : base( 0x1C )
		{
			EquipInfoAttribute[] attrs = info.Attributes;
			string text = CliLoc.LocToString( info.Number );

			if ( info.Crafter != null && info.Crafter.Name != null )
				text = string.Format( "{0} [crafted by {1}]", text, info.Crafter.Name );

			for ( int i = 0; i < attrs.Length; ++i )
			{
				if ( attrs[i].Charges > 0 )
					text = string.Format( "{0} [{1}:{2}]", text, CliLoc.LocToString(attrs[i].Number), attrs[i].Charges.ToString() );
				else if ( attrs[i].Charges == 0 )
					text = string.Format( "{0} [{1}:None]", text, CliLoc.LocToString(attrs[i].Number) );
				else
					text = string.Format( "{0} [{1}]", text, CliLoc.LocToString(attrs[i].Number) );
			}

			//if (!info.Unidentified)
			//text = string.Format("{0} [unidentified]", text);

			this.EnsureCapacity(45 + text.Length);
			m_Stream.Write((int)item.Serial);
			m_Stream.Write((short)item.ItemID);
			m_Stream.Write((byte)MessageType.Label);
			m_Stream.Write((short)906);
			m_Stream.Write((short)3);
			m_Stream.WriteAsciiFixed("", 30);
			m_Stream.WriteAsciiNull(text);

			m_Stream.Write((int)-1);
		}
示例#21
0
		public DisplayEquipmentInfo(Item item, EquipmentInfo info)
			: base(0xBF)
		{
			var attrs = info.Attributes;

			EnsureCapacity(
				17 + (info.Crafter == null ? 0 : 6 + info.Crafter.TitleName == null ? 0 : info.Crafter.TitleName.Length) +
				(info.Unidentified ? 4 : 0) + (attrs.Length * 6));

			m_Stream.Write((short)0x10);
			m_Stream.Write(item.Serial);

			m_Stream.Write(info.Number);

			if (info.Crafter != null)
			{
				string name = info.Crafter.TitleName;

				m_Stream.Write(-3);

				if (name == null)
				{
					m_Stream.Write((ushort)0);
				}
				else
				{
					int length = name.Length;
					m_Stream.Write((ushort)length);
					m_Stream.WriteAsciiFixed(name, length);
				}
			}

			if (info.Unidentified)
			{
				m_Stream.Write(-4);
			}

			for (int i = 0; i < attrs.Length; ++i)
			{
				m_Stream.Write(attrs[i].Number);
				m_Stream.Write((short)attrs[i].Charges);
			}

			m_Stream.Write(-1);
		}
示例#22
0
		public DisplayEquipmentInfo( Item item, EquipmentInfo info ) : base( 0xBF )
		{
			EquipInfoAttribute[] attrs = info.Attributes;

			this.EnsureCapacity( 17 + (info.Crafter == null ? 0 : 6 + info.Crafter.RawName == null ? 0 : info.Crafter.RawName.Length) + (info.Unidentified ? 4 : attrs.Length * 6) );

			m_Stream.Write( (short) 0x10 );
			m_Stream.Write( (int) item.Serial );

			m_Stream.Write( (int) info.Number );

			if ( info.Crafter != null )
			{
				string name = info.Crafter.RawName;
                if (info.Crafter.Fame > 9999)
                {
                    if (info.Crafter.Female)
                        name = "Lady " + name;
                    else
                        name = "Lord " + name;
                }
				m_Stream.Write( (int) -3 );

				if ( name == null )
					m_Stream.Write( (ushort) 0 );
				else
				{
					int length = name.Length;
					m_Stream.Write( (ushort) length );
					m_Stream.WriteAsciiFixed( name, length );
				}
			}

			if ( info.Unidentified )
				m_Stream.Write( (int) -4 );
			else
			{
				for ( int i = 0; i < attrs.Length; ++i )
				{
					m_Stream.Write( (int) attrs[i].Number );
					m_Stream.Write( (short) attrs[i].Charges );
				}
			}

			m_Stream.Write( (int) -1 );
		}
示例#23
0
        public DisplayEquipmentInfo( Item item, EquipmentInfo info )
            : base(0xBF)
        {
            EquipInfoAttribute[] attrs = info.Attributes;

            this.EnsureCapacity( 17 + (info.Crafter == null ? 0 : 6 + info.Crafter.Name == null ? 0 : info.Crafter.Name.Length) + (info.Unidentified ? 4 : 0) + (attrs.Length * 6) );

            m_Stream.Write( (short) 0x10 );
            m_Stream.Write( (int) item.Serial );

            m_Stream.Write( (int) info.Number );

            if ( info.Crafter != null )
            {
                string name = info.Crafter.Name;

                if ( name == null ) name = "";

                int length = (ushort)name.Length;

                m_Stream.Write( (int) -3 );
                m_Stream.Write( (ushort) length );
                m_Stream.WriteAsciiFixed( name, length );
            }

            if ( info.Unidentified )
            {
                m_Stream.Write( (int) -4 );
            }

            for ( int i = 0; i < attrs.Length; ++i )
            {
                m_Stream.Write( (int) attrs[i].Number );
                m_Stream.Write( (short) attrs[i].Charges );
            }

            m_Stream.Write( (int) -1 );
        }
示例#24
0
		public override void OnSingleClick(Mobile from)
		{
			if (Deleted || !from.CanSee(this))
			{
				return;
			}

			LabelToExpansion(from);

			int number;

			if (String.IsNullOrEmpty(Name))
			{
				number = LabelNumber;
			}
			else
			{
				LabelTo(from, Name);
				number = 1041000;
			}

			if (DisplayDyable)
			{
				LabelDyableTo(from);
			}

            if (!(this is FleshboundTome))
			    LabelTo(from, 1042886, m_Count.ToString());

			var attrs = new List<EquipInfoAttribute>();

			AddEquipInfoAttributes(from, attrs);

			if (attrs.Count > 0 || Crafter != null || number != 1041000)
			{
				var eqInfo = new EquipmentInfo(number, m_Crafter, false, attrs.ToArray());
				from.Send(new DisplayEquipmentInfo(this, eqInfo));
			}
		}
示例#25
0
		public override void OnSingleClick( Mobile from )
		{
			List<EquipInfoAttribute> attrs = new List<EquipInfoAttribute>();

			if ( DisplayLootType )
			{
				if ( LootType == LootType.Blessed )
					attrs.Add( new EquipInfoAttribute( 1038021 ) ); // blessed
				else if ( LootType == LootType.Cursed )
					attrs.Add( new EquipInfoAttribute( 1049643 ) ); // cursed
			}

			#region Factions
			if ( m_FactionState != null )
				attrs.Add( new EquipInfoAttribute( 1041350 ) ); // faction item
			#endregion

			if ( m_Quality == ArmorQuality.Exceptional )
				attrs.Add( new EquipInfoAttribute( 1018305 - (int)m_Quality ) );

			if ( m_Identified || from.AccessLevel >= AccessLevel.GameMaster)
			{
				if ( m_Durability != ArmorDurabilityLevel.Regular )
					attrs.Add( new EquipInfoAttribute( 1038000 + (int)m_Durability ) );

				if ( m_Protection > ArmorProtectionLevel.Regular && m_Protection <= ArmorProtectionLevel.Invulnerability )
					attrs.Add( new EquipInfoAttribute( 1038005 + (int)m_Protection ) );
			}
			else if ( m_Durability != ArmorDurabilityLevel.Regular || (m_Protection > ArmorProtectionLevel.Regular && m_Protection <= ArmorProtectionLevel.Invulnerability) )
				attrs.Add( new EquipInfoAttribute( 1038000 ) ); // Unidentified

			int number;

			if ( Name == null )
			{
				number = LabelNumber;
			}
			else
			{
				this.LabelTo( from, Name );
				number = 1041000;
			}

			if ( attrs.Count == 0 && Crafter == null && Name != null )
				return;

			EquipmentInfo eqInfo = new EquipmentInfo( number, m_Crafter, false, attrs.ToArray() );

			from.Send( new DisplayEquipmentInfo( this, eqInfo ) );
		}
		public override void OnSingleClick( Mobile from )
		{
			ArrayList attrs = new ArrayList();

			if ( DisplayLootType )
			{
				if ( LootType == LootType.Blessed )
					attrs.Add( new EquipInfoAttribute( 1038021 ) ); // blessed
				else if ( LootType == LootType.Cursed )
					attrs.Add( new EquipInfoAttribute( 1049643 ) ); // cursed
			}

			#region Factions
			if ( m_FactionState != null )
				attrs.Add( new EquipInfoAttribute( 1041350 ) ); // faction item
			#endregion

			if ( m_Quality == ClothingQuality.Exceptional )
				attrs.Add( new EquipInfoAttribute( 1018305 - (int)m_Quality ) );

			int number;

			if ( Name == null )
			{
				number = LabelNumber;
			}
			else
			{
				this.LabelTo( from, Name );
				number = 1041000;
			}

			if ( attrs.Count == 0 && Crafter == null && Name != null )
				return;

			EquipmentInfo eqInfo = new EquipmentInfo( number, m_Crafter, false, (EquipInfoAttribute[])attrs.ToArray( typeof( EquipInfoAttribute ) ) );

			from.Send( new DisplayEquipmentInfo( this, eqInfo ) );
		}
示例#27
0
		public override void OnSingleClick( Mobile from )
		{
			List<EquipInfoAttribute> attrs = new List<EquipInfoAttribute>();

			AddEquipInfoAttributes( from, attrs );

			int number;

			if ( Name == null )
			{
				number = LabelNumber;
			}
			else
			{
				this.LabelTo( from, Name );
				number = 1041000;
			}

			if ( attrs.Count == 0 && Crafter == null && Name != null )
				return;

			EquipmentInfo eqInfo = new EquipmentInfo( number, m_Crafter, false, attrs.ToArray() );

			from.Send( new DisplayEquipmentInfo( this, eqInfo ) );
		}
示例#28
0
        public override void OnSingleClick( Mobile from )
        {
            List<EquipInfoAttribute> attrs = new List<EquipInfoAttribute>();

            if ( DisplayLootType )
            {
                if ( LootType == LootType.Blessed )
                    attrs.Add( new EquipInfoAttribute( 1038021 ) ); // blessed
                else if ( LootType == LootType.Cursed )
                    attrs.Add( new EquipInfoAttribute( 1049643 ) ); // cursed
            }

            #region Factions
            if ( m_FactionState != null )
                attrs.Add( new EquipInfoAttribute( 1041350 ) ); // faction item
            #endregion

            if ( m_Quality == WeaponQuality.Exceptional )
                attrs.Add( new EquipInfoAttribute( 1018305 - (int)m_Quality ) );

            if ( m_Identified || from.AccessLevel >= AccessLevel.GameMaster )
            {
                if( m_Slayer != SlayerName.None )
                {
                    SlayerEntry entry = SlayerGroup.GetEntryByName( m_Slayer );
                    if( entry != null )
                        attrs.Add( new EquipInfoAttribute( entry.Title ) );
                }

                if( m_Slayer2 != SlayerName.None )
                {
                    SlayerEntry entry = SlayerGroup.GetEntryByName( m_Slayer2 );
                    if( entry != null )
                        attrs.Add( new EquipInfoAttribute( entry.Title ) );
                }

                if ( m_DurabilityLevel != WeaponDurabilityLevel.Regular )
                    attrs.Add( new EquipInfoAttribute( 1038000 + (int)m_DurabilityLevel ) );

                if ( m_DamageLevel != WeaponDamageLevel.Regular )
                    attrs.Add( new EquipInfoAttribute( 1038015 + (int)m_DamageLevel ) );

                if ( m_AccuracyLevel != WeaponAccuracyLevel.Regular )
                    attrs.Add( new EquipInfoAttribute( 1038010 + (int)m_AccuracyLevel ) );
            }
            else if( m_Slayer != SlayerName.None || m_Slayer2 != SlayerName.None || m_DurabilityLevel != WeaponDurabilityLevel.Regular || m_DamageLevel != WeaponDamageLevel.Regular || m_AccuracyLevel != WeaponAccuracyLevel.Regular )
                attrs.Add( new EquipInfoAttribute( 1038000 ) ); // Unidentified

            if ( m_Poison != null && m_PoisonCharges > 0 )
                attrs.Add( new EquipInfoAttribute( 1017383, m_PoisonCharges ) );

            int number;

            if ( Name == null )
            {
                number = LabelNumber;
            }
            else
            {
                this.LabelTo( from, Name );
                number = 1041000;
            }

            if ( attrs.Count == 0 && Crafter == null && Name != null && (m_PreUORMagEff == null || m_PreUORMagEff == PreUORMagEff.None) )
                return;

            EquipmentInfo eqInfo = new EquipmentInfo( number, m_Crafter, false, attrs.ToArray() );
            from.Send( new DisplayEquipmentInfo( this, eqInfo ) );

            if ( m_PreUORMagEff != null && m_PreUORMagEff != PreUORMagEff.None )
            {
                String mageff = "";
                switch( m_PreUORMagEff )
                {
                    case PreUORMagEff.Clumsiness:
                        mageff = "Clumsiness";
                        break;
                    case PreUORMagEff.Feeblemindedness:
                        mageff = "Feeblemindness";
                        break;
                    case PreUORMagEff.Weakness:
                        mageff = "Weakness";
                        break;
                    case PreUORMagEff.Burning:
                        mageff = "Burning";
                        break;
                    case PreUORMagEff.Wounding:
                        mageff = "Wounding";
                        break;
                    case PreUORMagEff.DaemonBreath:
                        mageff = "Daemon's breath";
                        break;
                    case PreUORMagEff.Thunder:
                        mageff = "Thunder";
                        break;
                    case PreUORMagEff.MagesBane:
                        mageff = "Mages bane";
                        break;
                    case PreUORMagEff.GhoulTouch:
                        mageff = "Ghoul's touch";
                        break;
                    case PreUORMagEff.Evil:
                        mageff = "Evil";
                        break;
                }
                if(mageff.Length == 0)
                    return;
                this.LabelTo(from, String.Format("[{0}: {1}]", mageff, MagEffCharges));
            }
        }