public virtual void Deserialize(BigEndianReader reader)
 {
     ModificationType = reader.ReadSByte();
     SpellId = reader.ReadShort();
     Value = new CharacterBaseCharacteristic();
     Value.Deserialize(reader);
 }
 public virtual void Deserialize(BigEndianReader reader)
 {
     Experience = reader.ReadDouble();
     ExperienceLevelFloor = reader.ReadDouble();
     ExperienceNextLevelFloor = reader.ReadDouble();
     Kamas = reader.ReadInt();
     StatsPoints = reader.ReadInt();
     SpellsPoints = reader.ReadInt();
     AlignmentInfos = new ActorExtendedAlignmentInformations();
     AlignmentInfos.Deserialize(reader);
     LifePoints = reader.ReadInt();
     MaxLifePoints = reader.ReadInt();
     EnergyPoints = reader.ReadShort();
     MaxEnergyPoints = reader.ReadShort();
     ActionPointsCurrent = reader.ReadShort();
     MovementPointsCurrent = reader.ReadShort();
     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 = reader.ReadShort();
     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);
     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);
     var limit = reader.ReadUShort();
     SpellModifications = new CharacterSpellModification[limit];
     for (int i = 0; i < limit; i++)
     {
         SpellModifications[i] = new CharacterSpellModification();
         SpellModifications[i].Deserialize(reader);
     }
 }