public static float ModifyCommonalityOf(ThingDef thingDefFor, ThingDef stuff, float curCommonality) { var extension = stuff.GetCachedExtension(); if (extension != null) { if (thingDefFor.IsApparel) { if (extension.apparelGenerationCommonalityOffset.HasValue) { curCommonality += extension.apparelGenerationCommonalityOffset.Value; } if (extension.apparelGenerationCommonalityFactor.HasValue) { curCommonality *= extension.apparelGenerationCommonalityFactor.Value; } } if (thingDefFor.IsWeapon) { if (extension.weaponGenerationCommonalityOffset.HasValue) { curCommonality += extension.weaponGenerationCommonalityOffset.Value; } if (extension.weaponGenerationCommonalityFactor.HasValue) { curCommonality *= extension.weaponGenerationCommonalityFactor.Value; } } if (thingDefFor.building != null) { if (extension.structureGenerationCommonalityOffset.HasValue) { curCommonality += extension.structureGenerationCommonalityOffset.Value; } if (extension.structureGenerationCommonalityFactor.HasValue) { curCommonality *= extension.structureGenerationCommonalityFactor.Value; } } } return(curCommonality); }