public void Deserialize(IDataReader reader)
 {
     ModificationType = reader.ReadByte();
     SpellId          = (UInt16)reader.ReadVarShort();
     Value            = new CharacterBaseCharacteristic();
     Value.Deserialize(reader);
 }
 public void Deserialize(IDataReader reader)
 {
     Experience               = reader.ReadVarLong();
     ExperienceLevelFloor     = reader.ReadVarLong();
     ExperienceNextLevelFloor = reader.ReadVarLong();
     ExperienceBonusLimit     = reader.ReadVarLong();
     Kamas             = reader.ReadVarLong();
     StatsPoints       = (UInt16)reader.ReadVarShort();
     AdditionnalPoints = (UInt16)reader.ReadVarShort();
     SpellsPoints      = (UInt16)reader.ReadVarShort();
     AlignmentInfos    = new ActorExtendedAlignmentInformations();
     AlignmentInfos.Deserialize(reader);
     LifePoints            = (UInt32)reader.ReadVarInt();
     MaxLifePoints         = (UInt32)reader.ReadVarInt();
     EnergyPoints          = (UInt16)reader.ReadVarShort();
     MaxEnergyPoints       = (UInt16)reader.ReadVarShort();
     ActionPointsCurrent   = reader.ReadVarShort();
     MovementPointsCurrent = reader.ReadVarShort();
     Initiative            = new CharacterBaseCharacteristic();
     Initiative.Deserialize(reader);
     Prospecting = new CharacterBaseCharacteristic();
     Prospecting.Deserialize(reader);
     ActionPoints = new CharacterBaseCharacteristic();
     ActionPoints.Deserialize(reader);
     MovementPoints = new CharacterBaseCharacteristic();
     MovementPoints.Deserialize(reader);
     Strength = new CharacterBaseCharacteristic();
     Strength.Deserialize(reader);
     Vitality = new CharacterBaseCharacteristic();
     Vitality.Deserialize(reader);
     Wisdom = new CharacterBaseCharacteristic();
     Wisdom.Deserialize(reader);
     Chance = new CharacterBaseCharacteristic();
     Chance.Deserialize(reader);
     Agility = new CharacterBaseCharacteristic();
     Agility.Deserialize(reader);
     Intelligence = new CharacterBaseCharacteristic();
     Intelligence.Deserialize(reader);
     Range = new CharacterBaseCharacteristic();
     Range.Deserialize(reader);
     SummonableCreaturesBoost = new CharacterBaseCharacteristic();
     SummonableCreaturesBoost.Deserialize(reader);
     Reflect = new CharacterBaseCharacteristic();
     Reflect.Deserialize(reader);
     CriticalHit = new CharacterBaseCharacteristic();
     CriticalHit.Deserialize(reader);
     CriticalHitWeapon = (UInt16)reader.ReadVarShort();
     CriticalMiss      = new CharacterBaseCharacteristic();
     CriticalMiss.Deserialize(reader);
     HealBonus = new CharacterBaseCharacteristic();
     HealBonus.Deserialize(reader);
     AllDamagesBonus = new CharacterBaseCharacteristic();
     AllDamagesBonus.Deserialize(reader);
     WeaponDamagesBonusPercent = new CharacterBaseCharacteristic();
     WeaponDamagesBonusPercent.Deserialize(reader);
     DamagesBonusPercent = new CharacterBaseCharacteristic();
     DamagesBonusPercent.Deserialize(reader);
     TrapBonus = new CharacterBaseCharacteristic();
     TrapBonus.Deserialize(reader);
     TrapBonusPercent = new CharacterBaseCharacteristic();
     TrapBonusPercent.Deserialize(reader);
     GlyphBonusPercent = new CharacterBaseCharacteristic();
     GlyphBonusPercent.Deserialize(reader);
     RuneBonusPercent = new CharacterBaseCharacteristic();
     RuneBonusPercent.Deserialize(reader);
     PermanentDamagePercent = new CharacterBaseCharacteristic();
     PermanentDamagePercent.Deserialize(reader);
     TackleBlock = new CharacterBaseCharacteristic();
     TackleBlock.Deserialize(reader);
     TackleEvade = new CharacterBaseCharacteristic();
     TackleEvade.Deserialize(reader);
     PAAttack = new CharacterBaseCharacteristic();
     PAAttack.Deserialize(reader);
     PMAttack = new CharacterBaseCharacteristic();
     PMAttack.Deserialize(reader);
     PushDamageBonus = new CharacterBaseCharacteristic();
     PushDamageBonus.Deserialize(reader);
     CriticalDamageBonus = new CharacterBaseCharacteristic();
     CriticalDamageBonus.Deserialize(reader);
     NeutralDamageBonus = new CharacterBaseCharacteristic();
     NeutralDamageBonus.Deserialize(reader);
     EarthDamageBonus = new CharacterBaseCharacteristic();
     EarthDamageBonus.Deserialize(reader);
     WaterDamageBonus = new CharacterBaseCharacteristic();
     WaterDamageBonus.Deserialize(reader);
     AirDamageBonus = new CharacterBaseCharacteristic();
     AirDamageBonus.Deserialize(reader);
     FireDamageBonus = new CharacterBaseCharacteristic();
     FireDamageBonus.Deserialize(reader);
     DodgePALostProbability = new CharacterBaseCharacteristic();
     DodgePALostProbability.Deserialize(reader);
     DodgePMLostProbability = new CharacterBaseCharacteristic();
     DodgePMLostProbability.Deserialize(reader);
     NeutralElementResistPercent = new CharacterBaseCharacteristic();
     NeutralElementResistPercent.Deserialize(reader);
     EarthElementResistPercent = new CharacterBaseCharacteristic();
     EarthElementResistPercent.Deserialize(reader);
     WaterElementResistPercent = new CharacterBaseCharacteristic();
     WaterElementResistPercent.Deserialize(reader);
     AirElementResistPercent = new CharacterBaseCharacteristic();
     AirElementResistPercent.Deserialize(reader);
     FireElementResistPercent = new CharacterBaseCharacteristic();
     FireElementResistPercent.Deserialize(reader);
     NeutralElementReduction = new CharacterBaseCharacteristic();
     NeutralElementReduction.Deserialize(reader);
     EarthElementReduction = new CharacterBaseCharacteristic();
     EarthElementReduction.Deserialize(reader);
     WaterElementReduction = new CharacterBaseCharacteristic();
     WaterElementReduction.Deserialize(reader);
     AirElementReduction = new CharacterBaseCharacteristic();
     AirElementReduction.Deserialize(reader);
     FireElementReduction = new CharacterBaseCharacteristic();
     FireElementReduction.Deserialize(reader);
     PushDamageReduction = new CharacterBaseCharacteristic();
     PushDamageReduction.Deserialize(reader);
     CriticalDamageReduction = new CharacterBaseCharacteristic();
     CriticalDamageReduction.Deserialize(reader);
     PvpNeutralElementResistPercent = new CharacterBaseCharacteristic();
     PvpNeutralElementResistPercent.Deserialize(reader);
     PvpEarthElementResistPercent = new CharacterBaseCharacteristic();
     PvpEarthElementResistPercent.Deserialize(reader);
     PvpWaterElementResistPercent = new CharacterBaseCharacteristic();
     PvpWaterElementResistPercent.Deserialize(reader);
     PvpAirElementResistPercent = new CharacterBaseCharacteristic();
     PvpAirElementResistPercent.Deserialize(reader);
     PvpFireElementResistPercent = new CharacterBaseCharacteristic();
     PvpFireElementResistPercent.Deserialize(reader);
     PvpNeutralElementReduction = new CharacterBaseCharacteristic();
     PvpNeutralElementReduction.Deserialize(reader);
     PvpEarthElementReduction = new CharacterBaseCharacteristic();
     PvpEarthElementReduction.Deserialize(reader);
     PvpWaterElementReduction = new CharacterBaseCharacteristic();
     PvpWaterElementReduction.Deserialize(reader);
     PvpAirElementReduction = new CharacterBaseCharacteristic();
     PvpAirElementReduction.Deserialize(reader);
     PvpFireElementReduction = new CharacterBaseCharacteristic();
     PvpFireElementReduction.Deserialize(reader);
     MeleeDamageDonePercent = new CharacterBaseCharacteristic();
     MeleeDamageDonePercent.Deserialize(reader);
     MeleeDamageReceivedPercent = new CharacterBaseCharacteristic();
     MeleeDamageReceivedPercent.Deserialize(reader);
     RangedDamageDonePercent = new CharacterBaseCharacteristic();
     RangedDamageDonePercent.Deserialize(reader);
     RangedDamageReceivedPercent = new CharacterBaseCharacteristic();
     RangedDamageReceivedPercent.Deserialize(reader);
     WeaponDamageDonePercent = new CharacterBaseCharacteristic();
     WeaponDamageDonePercent.Deserialize(reader);
     WeaponDamageReceivedPercent = new CharacterBaseCharacteristic();
     WeaponDamageReceivedPercent.Deserialize(reader);
     SpellDamageDonePercent = new CharacterBaseCharacteristic();
     SpellDamageDonePercent.Deserialize(reader);
     SpellDamageReceivedPercent = new CharacterBaseCharacteristic();
     SpellDamageReceivedPercent.Deserialize(reader);
     SpellModifications = new CharacterSpellModification[reader.ReadShort()];
     for (var i = 0; i < SpellModifications.Length; i++)
     {
         (SpellModifications[i] = new CharacterSpellModification()).Deserialize(reader);
     }
     ProbationTime = (UInt32)reader.ReadInt();
 }