示例#1
0
        protected override void Parse( BigEndianReader reader )
        {
            reader.ReadByte(); // ID
            reader.ReadInt16(); // Size

            _Serial = reader.ReadUInt32();
            _MobileName = reader.ReadAsciiString( 30 );

            _HitPoints = reader.ReadInt16();
            _MaxHitPoints = reader.ReadInt16();
            _AllowNameChange = reader.ReadByte() == 1 ? true : false;
            byte features = reader.ReadByte();
            _IsFemale = reader.ReadByte() == 1 ? true : false;
            _Strength = reader.ReadInt16();
            _Dexterity = reader.ReadInt16();
            _Intelligence = reader.ReadInt16();
            _Stamina = reader.ReadInt16();
            _MaxStamina = reader.ReadInt16();
            _Mana = reader.ReadInt16();
            _MaxMana = reader.ReadInt16();
            _Gold = reader.ReadInt32();
            _ArmorRating = reader.ReadInt16();
            _Weight = reader.ReadInt16();

            if ( ( features & 0x5 ) == 0x5 )
            {
                _MaxWeight = reader.ReadInt16();
                _Race = (MobileRace) reader.ReadByte();
            }

            if ( ( features & 0x2 ) == 0x2 )
            {
                _StatCap = reader.ReadInt16();
            }

            if ( ( features & 0x3 ) == 0x3 )
            {
                _Followers = reader.ReadByte();
                _MaxFollowers = reader.ReadByte();
            }

            if ( ( features & 0x4 ) == 0x4 )
            {
                _FireResistance = reader.ReadInt16();
                _ColdResistance = reader.ReadInt16();
                _PoisonResistance = reader.ReadInt16();
                _EnergyResistance = reader.ReadInt16();
                _Luck = reader.ReadInt16();
                _MinWeaponDamage = reader.ReadInt16();
                _MaxWeaponDamage = reader.ReadInt16();
                _TithingPoints = reader.ReadInt32();
            }

            if ( ( features & 0x6 ) == 0x6 )
            {
                _HitChanceIncrease = reader.ReadInt16();
                _SwingSpeedIncrease = reader.ReadInt16();
                _DamageChanceIncrease = reader.ReadInt16();
                _LowerReagentCost = reader.ReadInt16();
                _HitPointRegeneration = reader.ReadInt16();
                _StaminaRegeneration = reader.ReadInt16();
                _ManaRegeneration = reader.ReadInt16();
                _ReflectPhysicalDamage = reader.ReadInt16();
                _EnhancePotions = reader.ReadInt16();
                _DefenseChanceIncrease = reader.ReadInt16();
                _SpellDamageIncrease = reader.ReadInt16();
                _FasterCastRecovery = reader.ReadInt16();
                _FasterCasting = reader.ReadInt16();
                _LowerManaCost = reader.ReadInt16();
                _StrengthIncrease = reader.ReadInt16();
                _DexterityIncrease = reader.ReadInt16();
                _IntelligenceIncrease = reader.ReadInt16();
                _HitPointsIncrease = reader.ReadInt16();
                _StaminaIncrease = reader.ReadInt16();
                _ManaIncrease = reader.ReadInt16();
                _MaximumHitPointsIncrease = reader.ReadInt16();
                _MaximumStaminaIncrease = reader.ReadInt16();
                _MaximumManaIncrease = reader.ReadInt16();
            }
        }
示例#2
0
        protected override void Parse(BigEndianReader reader)
        {
            reader.ReadByte();             // ID
            reader.ReadInt16();            // Size

            _Serial     = reader.ReadUInt32();
            _MobileName = reader.ReadAsciiString(30);

            _HitPoints       = reader.ReadInt16();
            _MaxHitPoints    = reader.ReadInt16();
            _AllowNameChange = reader.ReadByte() == 1 ? true : false;
            byte features = reader.ReadByte();

            _IsFemale     = reader.ReadByte() == 1 ? true : false;
            _Strength     = reader.ReadInt16();
            _Dexterity    = reader.ReadInt16();
            _Intelligence = reader.ReadInt16();
            _Stamina      = reader.ReadInt16();
            _MaxStamina   = reader.ReadInt16();
            _Mana         = reader.ReadInt16();
            _MaxMana      = reader.ReadInt16();
            _Gold         = reader.ReadInt32();
            _ArmorRating  = reader.ReadInt16();
            _Weight       = reader.ReadInt16();

            if ((features & 0x5) == 0x5)
            {
                _MaxWeight = reader.ReadInt16();
                _Race      = (MobileRace)reader.ReadByte();
            }

            if ((features & 0x2) == 0x2)
            {
                _StatCap = reader.ReadInt16();
            }

            if ((features & 0x3) == 0x3)
            {
                _Followers    = reader.ReadByte();
                _MaxFollowers = reader.ReadByte();
            }

            if ((features & 0x4) == 0x4)
            {
                _FireResistance   = reader.ReadInt16();
                _ColdResistance   = reader.ReadInt16();
                _PoisonResistance = reader.ReadInt16();
                _EnergyResistance = reader.ReadInt16();
                _Luck             = reader.ReadInt16();
                _MinWeaponDamage  = reader.ReadInt16();
                _MaxWeaponDamage  = reader.ReadInt16();
                _TithingPoints    = reader.ReadInt32();
            }

            if ((features & 0x6) == 0x6)
            {
                _HitChanceIncrease        = reader.ReadInt16();
                _SwingSpeedIncrease       = reader.ReadInt16();
                _DamageChanceIncrease     = reader.ReadInt16();
                _LowerReagentCost         = reader.ReadInt16();
                _HitPointRegeneration     = reader.ReadInt16();
                _StaminaRegeneration      = reader.ReadInt16();
                _ManaRegeneration         = reader.ReadInt16();
                _ReflectPhysicalDamage    = reader.ReadInt16();
                _EnhancePotions           = reader.ReadInt16();
                _DefenseChanceIncrease    = reader.ReadInt16();
                _SpellDamageIncrease      = reader.ReadInt16();
                _FasterCastRecovery       = reader.ReadInt16();
                _FasterCasting            = reader.ReadInt16();
                _LowerManaCost            = reader.ReadInt16();
                _StrengthIncrease         = reader.ReadInt16();
                _DexterityIncrease        = reader.ReadInt16();
                _IntelligenceIncrease     = reader.ReadInt16();
                _HitPointsIncrease        = reader.ReadInt16();
                _StaminaIncrease          = reader.ReadInt16();
                _ManaIncrease             = reader.ReadInt16();
                _MaximumHitPointsIncrease = reader.ReadInt16();
                _MaximumStaminaIncrease   = reader.ReadInt16();
                _MaximumManaIncrease      = reader.ReadInt16();
            }
        }