private void OnVariantApplied(Part p, PartVariant pv) { if (p == null || p.partInfo.partPrefab == null || p != this.part) { return; } Log.Info("KRnDModule.OnVariantApplied, part: " + p.partInfo.title + ", " + p.name); String partName = KRnD.sanatizePartName(p.name); if (KRnD.originalStats.TryGetValue(partName, out PartStats partStats)) { if (partStats.kRnDVariants != null && partStats.kRnDVariants.TryGetValue(pv.Name, out KRnDVariant kv)) { partStats.currentVariant = pv.Name; partStats.currentVariantMass = kv.mass; this.part.partInfo.variant = pv; // ??? why doesn't KSP do this } } else { throw new Exception("no original-stats for part '" + partName + "'"); } }