public void Initialise() { Name = NameOffset + _calculator.GetNonF1DriverNameId(Id); var stepOffset = LocalOffset * Id; if (Id < 8) // each attribute is 10 bytes long { Salary = BaseOffset + stepOffset + SalaryOffset; RaceBonus = BaseOffset + stepOffset + RaceBonusOffset; ChampionshipBonus = BaseOffset + stepOffset + ChampionshipBonusOffset; Age = BaseOffset + stepOffset + AgeOffset; Nationality = BaseOffset + stepOffset + NationalityOffset; UnknownA = BaseOffset + stepOffset + UnknownAOffset; Speed = BaseOffset + stepOffset + SpeedOffset; Skill = BaseOffset + stepOffset + SkillOffset; Overtaking = BaseOffset + stepOffset + OvertakingOffset; WetWeather = BaseOffset + stepOffset + WetWeatherOffset; Concentration = BaseOffset + stepOffset + ConcentrationOffset; Experience = BaseOffset + stepOffset + ExperienceOffset; Stamina = BaseOffset + stepOffset + StaminaOffset; Morale = BaseOffset + stepOffset + MoraleOffset; } else if (Id == 8) // some attributes become 7 bytes long { Salary = BaseOffset + stepOffset + SalaryOffset; RaceBonus = BaseOffset + stepOffset + RaceBonusOffset; ChampionshipBonus = BaseOffset + stepOffset + ChampionshipBonusOffset; Age = BaseOffset + stepOffset + AgeOffset - 12; Nationality = BaseOffset + stepOffset + NationalityOffset; UnknownA = BaseOffset + stepOffset + UnknownAOffset; Speed = BaseOffset + stepOffset + SpeedOffset; Skill = BaseOffset + stepOffset + SkillOffset; Overtaking = BaseOffset + stepOffset + OvertakingOffset; WetWeather = BaseOffset + stepOffset + WetWeatherOffset; Concentration = BaseOffset + stepOffset + ConcentrationOffset; Experience = BaseOffset + stepOffset + ExperienceOffset - 3; Stamina = BaseOffset + stepOffset + StaminaOffset - 6; Morale = BaseOffset + stepOffset + MoraleOffset - 9; } else // each attribute is 7 bytes long { stepOffset = LocalOffset * 9 - 15 + LocalOffset / 10 * 7 * (Id % 9); Salary = BaseOffset + stepOffset + SalaryOffset / 10 * 7; RaceBonus = BaseOffset + stepOffset + RaceBonusOffset / 10 * 7; ChampionshipBonus = BaseOffset + stepOffset + ChampionshipBonusOffset / 10 * 7; Age = BaseOffset + stepOffset + AgeOffset / 10 * 7; Nationality = BaseOffset + stepOffset + NationalityOffset / 10 * 7; UnknownA = BaseOffset + stepOffset + UnknownAOffset / 10 * 7; Speed = BaseOffset + stepOffset + SpeedOffset / 10 * 7; Skill = BaseOffset + stepOffset + SkillOffset / 10 * 7; Overtaking = BaseOffset + stepOffset + OvertakingOffset / 10 * 7; WetWeather = BaseOffset + stepOffset + WetWeatherOffset / 10 * 7; Concentration = BaseOffset + stepOffset + ConcentrationOffset / 10 * 7; Experience = BaseOffset + stepOffset + ExperienceOffset / 10 * 7; Stamina = BaseOffset + stepOffset + StaminaOffset / 10 * 7; Morale = BaseOffset + stepOffset + MoraleOffset / 10 * 7; } }