Server.BaseAttributes.SetValue C# (CSharp) Méthode

SetValue() public méthode

public SetValue ( int bitmask, int value ) : void
bitmask int
value int
Résultat void
        public void SetValue( int bitmask, int value )
        {
            if( (bitmask == (int)AosWeaponAttribute.DurabilityBonus) && (this is AosWeaponAttributes) )
            {
                if( m_Owner is BaseWeapon )
                    ((BaseWeapon)m_Owner).UnscaleDurability();
            }
            else if( (bitmask == (int)AosArmorAttribute.DurabilityBonus) && (this is AosArmorAttributes) )
            {
                if( m_Owner is BaseArmor )
                    ((BaseArmor)m_Owner).UnscaleDurability();
                else if( m_Owner is BaseClothing )
                    ((BaseClothing)m_Owner).UnscaleDurability();
            }

            uint mask = (uint)bitmask;

            if( value != 0 )
            {
                if( (m_Names & mask) != 0 )
                {
                    int index = GetIndex( mask );

                    if( index >= 0 && index < m_Values.Length )
                        m_Values[index] = value;
                }
                else
                {
                    int index = GetIndex( mask );

                    if( index >= 0 && index <= m_Values.Length )
                    {
                        int[] old = m_Values;
                        m_Values = new int[old.Length + 1];

                        for( int i = 0; i < index; ++i )
                            m_Values[i] = old[i];

                        m_Values[index] = value;

                        for( int i = index; i < old.Length; ++i )
                            m_Values[i + 1] = old[i];

                        m_Names |= mask;
                    }
                }
            }
            else if( (m_Names & mask) != 0 )
            {
                int index = GetIndex( mask );

                if( index >= 0 && index < m_Values.Length )
                {
                    m_Names &= ~mask;

                    if( m_Values.Length == 1 )
                    {
                        m_Values = m_Empty;
                    }
                    else
                    {
                        int[] old = m_Values;
                        m_Values = new int[old.Length - 1];

                        for( int i = 0; i < index; ++i )
                            m_Values[i] = old[i];

                        for( int i = index + 1; i < old.Length; ++i )
                            m_Values[i - 1] = old[i];
                    }
                }
            }

            if( (bitmask == (int)AosWeaponAttribute.DurabilityBonus) && (this is AosWeaponAttributes) )
            {
                if( m_Owner is BaseWeapon )
                    ((BaseWeapon)m_Owner).ScaleDurability();
            }
            else if( (bitmask == (int)AosArmorAttribute.DurabilityBonus) && (this is AosArmorAttributes) )
            {
                if( m_Owner is BaseArmor )
                    ((BaseArmor)m_Owner).ScaleDurability();
                else if( m_Owner is BaseClothing )
                    ((BaseClothing)m_Owner).ScaleDurability();
            }

            if( m_Owner.Parent is Mobile )
            {
                Mobile m = (Mobile)m_Owner.Parent;

                m.CheckStatTimers();
                m.UpdateResistances();
                m.Delta( MobileDelta.Stat | MobileDelta.WeaponDamage | MobileDelta.Hits | MobileDelta.Stam | MobileDelta.Mana );

                if( this is AosSkillBonuses )
                {
                    ((AosSkillBonuses)this).Remove();
                    ((AosSkillBonuses)this).AddTo( m );
                }
            }

            m_Owner.InvalidateProperties();
        }