public Element(global::Element e, List <global::Element> elements) { id = e.id; state = (byte)e.state; if (e.HasTag(GameTags.Unstable)) { state |= 8; } int num = elements.FindIndex((global::Element ele) => ele.id == e.lowTempTransitionTarget); int num2 = elements.FindIndex((global::Element ele) => ele.id == e.highTempTransitionTarget); lowTempTransitionIdx = (byte)((num < 0) ? 255 : num); highTempTransitionIdx = (byte)((num2 < 0) ? 255 : num2); elementsTableIdx = (byte)elements.IndexOf(e); specificHeatCapacity = e.specificHeatCapacity; thermalConductivity = e.thermalConductivity; solidSurfaceAreaMultiplier = e.solidSurfaceAreaMultiplier; liquidSurfaceAreaMultiplier = e.liquidSurfaceAreaMultiplier; gasSurfaceAreaMultiplier = e.gasSurfaceAreaMultiplier; molarMass = e.molarMass; strength = e.strength; flow = e.flow; viscosity = e.viscosity; minHorizontalFlow = e.minHorizontalFlow; minVerticalFlow = e.minVerticalFlow; maxMass = e.maxMass; lowTemp = e.lowTemp; highTemp = e.highTemp; highTempTransitionOreID = e.highTempTransitionOreID; highTempTransitionOreMassConversion = e.highTempTransitionOreMassConversion; lowTempTransitionOreID = e.lowTempTransitionOreID; lowTempTransitionOreMassConversion = e.lowTempTransitionOreMassConversion; sublimateIndex = (sbyte)elements.FindIndex((global::Element ele) => ele.id == e.sublimateId); convertIndex = (sbyte)elements.FindIndex((global::Element ele) => ele.id == e.convertId); pack0 = 0; pack1 = 0; if (e.substance == null) { colour = 0u; } else { Color32 color = e.substance.colour; colour = (uint)((color.a << 24) | (color.b << 16) | (color.g << 8) | color.r); } sublimateFX = e.sublimateFX; lightAbsorptionFactor = e.lightAbsorptionFactor; defaultValues = e.defaultValues; }