public Character Clone() { ItemInstance[] clonedItemInstances = new ItemInstance[SlotCount]; for (int i = 0; i < clonedItemInstances.Length; i++) { ItemInstance itemInstance = _item[i]; if (itemInstance != null) clonedItemInstances[i] = itemInstance.Clone(); } Character clone = new Character(this.Name, this.Realm, this.Region, this.Race, this.BossOptions.Clone(), clonedItemInstances, ActiveBuffs, CurrentModel); clone.CalculationOptions = this.CalculationOptions; clone.itemSetList = this.itemSetList; clone.Class = this.Class; clone.AssignAllTalentsFromCharacter(this, true); clone.PrimaryProfession = this.PrimaryProfession; clone.SecondaryProfession = this.SecondaryProfession; clone.WaistBlacksmithingSocketEnabled = this.WaistBlacksmithingSocketEnabled; clone.WristBlacksmithingSocketEnabled = this.WristBlacksmithingSocketEnabled; clone.HandsBlacksmithingSocketEnabled = this.HandsBlacksmithingSocketEnabled; clone.OptimizationRequirements = this.OptimizationRequirements; clone.CalculationToOptimize = this.CalculationToOptimize; clone.BossOptions = this.BossOptions.Clone(); return clone; }