public static IEnumerable <ThingDef> ImpliedLeatherDefs() { int numLeathers = DefDatabase <ThingDef> .AllDefs.Where(new Func <ThingDef, bool>(ThingDefGenerator_Leather.GeneratesLeather)).Count <ThingDef>(); float eachLeatherCommonality = 1f / (float)numLeathers; foreach (ThingDef sourceDef in DefDatabase <ThingDef> .AllDefs.ToList <ThingDef>()) { if (ThingDefGenerator_Leather.GeneratesLeather(sourceDef)) { if (sourceDef.race.useLeatherFrom == null) { ThingDef d = new ThingDef(); d.resourceReadoutPriority = ResourceCountPriority.Middle; d.category = ThingCategory.Item; d.thingClass = typeof(ThingWithComps); d.graphicData = new GraphicData(); d.graphicData.graphicClass = typeof(Graphic_Single); d.useHitPoints = true; d.selectable = true; d.SetStatBaseValue(StatDefOf.MaxHitPoints, 100f); d.altitudeLayer = AltitudeLayer.Item; d.stackLimit = 75; d.comps.Add(new CompProperties_Forbiddable()); d.SetStatBaseValue(StatDefOf.Beauty, -20f); d.SetStatBaseValue(StatDefOf.DeteriorationRate, 2f); d.alwaysHaulable = true; d.drawGUIOverlay = true; d.rotatable = false; d.pathCost = 15; d.category = ThingCategory.Item; d.description = "LeatherDesc".Translate(new object[] { sourceDef.label }); d.useHitPoints = true; d.SetStatBaseValue(StatDefOf.MaxHitPoints, 60f); d.SetStatBaseValue(StatDefOf.MarketValue, sourceDef.race.leatherMarketValueFactor * 2.1f); d.SetStatBaseValue(StatDefOf.Mass, 0.03f); d.SetStatBaseValue(StatDefOf.Flammability, 1f); if (d.thingCategories == null) { d.thingCategories = new List <ThingCategoryDef>(); } DirectXmlCrossRefLoader.RegisterListWantsCrossRef <ThingCategoryDef>(d.thingCategories, "Leathers"); d.graphicData.texPath = "Things/Item/Resource/Cloth"; d.stuffProps = new StuffProperties(); DirectXmlCrossRefLoader.RegisterListWantsCrossRef <StuffCategoryDef>(d.stuffProps.categories, "Leathery"); StatUtility.SetStatValueInList(ref d.stuffProps.statFactors, StatDefOf.MarketValue, 1.3f); StatUtility.SetStatValueInList(ref d.stuffProps.statFactors, StatDefOf.ArmorRating_Blunt, 1.5f); StatUtility.SetStatValueInList(ref d.stuffProps.statFactors, StatDefOf.ArmorRating_Sharp, 1.5f); StatUtility.SetStatValueInList(ref d.stuffProps.statFactors, StatDefOf.ArmorRating_Heat, 1.7f); StatUtility.SetStatValueInList(ref d.stuffProps.statFactors, StatDefOf.ArmorRating_Electric, 4f); d.defName = sourceDef.defName + "_Leather"; if (!sourceDef.race.leatherLabel.NullOrEmpty()) { d.label = sourceDef.race.leatherLabel; } else { d.label = "LeatherLabel".Translate(new object[] { sourceDef.label }); } d.stuffProps.color = sourceDef.race.leatherColor; d.graphicData.color = sourceDef.race.leatherColor; d.graphicData.colorTwo = sourceDef.race.leatherColor; d.stuffProps.commonality = 1.2f * eachLeatherCommonality * sourceDef.race.leatherCommonalityFactor; StatUtility.SetStatValueInList(ref d.stuffProps.statFactors, StatDefOf.Insulation_Cold, sourceDef.race.leatherInsulation); StatUtility.SetStatValueInList(ref d.stuffProps.statFactors, StatDefOf.Insulation_Heat, sourceDef.race.leatherInsulation); List <StatModifier> sfos = sourceDef.race.leatherStatFactors; if (sfos != null) { foreach (StatModifier current in sfos) { StatUtility.SetStatValueInList(ref d.stuffProps.statFactors, current.stat, current.value); } } sourceDef.race.leatherDef = d; yield return(d); } } } }
public static IEnumerable <TerrainDef> ImpliedTerrainDefs() { int i = 0; foreach (ThingDef rock in from def in DefDatabase <ThingDef> .AllDefs where def.building != null && def.building.isNaturalRock && !def.building.isResourceRock select def) { TerrainDef rough = new TerrainDef(); TerrainDef hewn = new TerrainDef(); TerrainDef smooth = new TerrainDef(); rough.texturePath = "Terrain/Surfaces/RoughStone"; rough.edgeType = TerrainDef.TerrainEdgeType.FadeRough; rough.pathCost = 2; StatUtility.SetStatValueInList(ref rough.statBases, StatDefOf.Beauty, -1f); rough.scatterType = "Rocky"; rough.affordances = new List <TerrainAffordanceDef>(); rough.affordances.Add(TerrainAffordanceDefOf.Light); rough.affordances.Add(TerrainAffordanceDefOf.Medium); rough.affordances.Add(TerrainAffordanceDefOf.Heavy); rough.affordances.Add(TerrainAffordanceDefOf.SmoothableStone); rough.fertility = 0f; rough.acceptFilth = false; rough.acceptTerrainSourceFilth = false; rough.modContentPack = rock.modContentPack; rough.renderPrecedence = 190 + i; rough.defName = rock.defName + "_Rough"; rough.label = "RoughStoneTerrainLabel".Translate(rock.label); rough.description = "RoughStoneTerrainDesc".Translate(rock.label); rough.color = rock.graphicData.color; rock.building.naturalTerrain = rough; hewn.texturePath = "Terrain/Surfaces/RoughHewnRock"; hewn.edgeType = TerrainDef.TerrainEdgeType.FadeRough; hewn.pathCost = 1; StatUtility.SetStatValueInList(ref hewn.statBases, StatDefOf.Beauty, -1f); hewn.scatterType = "Rocky"; hewn.affordances = new List <TerrainAffordanceDef>(); hewn.affordances.Add(TerrainAffordanceDefOf.Light); hewn.affordances.Add(TerrainAffordanceDefOf.Medium); hewn.affordances.Add(TerrainAffordanceDefOf.Heavy); hewn.affordances.Add(TerrainAffordanceDefOf.SmoothableStone); hewn.fertility = 0f; hewn.acceptFilth = true; hewn.acceptTerrainSourceFilth = true; hewn.modContentPack = rock.modContentPack; hewn.renderPrecedence = 50 + i; hewn.defName = rock.defName + "_RoughHewn"; hewn.label = "RoughHewnStoneTerrainLabel".Translate(rock.label); hewn.description = "RoughHewnStoneTerrainDesc".Translate(rock.label); hewn.color = rock.graphicData.color; rock.building.leaveTerrain = hewn; smooth.texturePath = "Terrain/Surfaces/SmoothStone"; smooth.edgeType = TerrainDef.TerrainEdgeType.FadeRough; smooth.pathCost = 0; StatUtility.SetStatValueInList(ref smooth.statBases, StatDefOf.Beauty, 2f); StatUtility.SetStatValueInList(ref smooth.statBases, StatDefOf.MarketValue, 8f); smooth.scatterType = "Rocky"; smooth.affordances = new List <TerrainAffordanceDef>(); smooth.affordances.Add(TerrainAffordanceDefOf.Light); smooth.affordances.Add(TerrainAffordanceDefOf.Medium); smooth.affordances.Add(TerrainAffordanceDefOf.Heavy); smooth.fertility = 0f; smooth.acceptFilth = true; smooth.acceptTerrainSourceFilth = true; smooth.modContentPack = rock.modContentPack; smooth.renderPrecedence = 140 + i; smooth.defName = rock.defName + "_Smooth"; smooth.label = "SmoothStoneTerrainLabel".Translate(rock.label); smooth.description = "SmoothStoneTerrainDesc".Translate(rock.label); smooth.color = rock.graphicData.color; rough.smoothedTerrain = smooth; hewn.smoothedTerrain = smooth; yield return(rough); } }
public static void SetStatBaseValue(this BuildableDef def, StatDef stat, float newBaseValue) { StatUtility.SetStatValueInList(ref def.statBases, stat, newBaseValue); }
public static IEnumerable <TerrainDef> ImpliedTerrainDefs() { int i = 0; foreach (ThingDef item in DefDatabase <ThingDef> .AllDefs.Where((ThingDef def) => def.building != null && def.building.isNaturalRock && !def.building.isResourceRock)) { TerrainDef terrainDef = new TerrainDef(); TerrainDef hewn = new TerrainDef(); TerrainDef smooth = new TerrainDef(); terrainDef.texturePath = "Terrain/Surfaces/RoughStone"; terrainDef.edgeType = TerrainDef.TerrainEdgeType.FadeRough; terrainDef.pathCost = 2; StatUtility.SetStatValueInList(ref terrainDef.statBases, StatDefOf.Beauty, -1f); terrainDef.scatterType = "Rocky"; terrainDef.affordances = new List <TerrainAffordanceDef>(); terrainDef.affordances.Add(TerrainAffordanceDefOf.Light); terrainDef.affordances.Add(TerrainAffordanceDefOf.Medium); terrainDef.affordances.Add(TerrainAffordanceDefOf.Heavy); terrainDef.affordances.Add(TerrainAffordanceDefOf.SmoothableStone); terrainDef.fertility = 0f; terrainDef.filthAcceptanceMask = (FilthSourceFlags.Terrain | FilthSourceFlags.Unnatural); terrainDef.modContentPack = item.modContentPack; terrainDef.renderPrecedence = 190 + i; terrainDef.defName = item.defName + "_Rough"; terrainDef.label = "RoughStoneTerrainLabel".Translate(item.label); terrainDef.description = "RoughStoneTerrainDesc".Translate(item.label); terrainDef.color = item.graphicData.color; item.building.naturalTerrain = terrainDef; hewn.texturePath = "Terrain/Surfaces/RoughHewnRock"; hewn.edgeType = TerrainDef.TerrainEdgeType.FadeRough; hewn.pathCost = 1; StatUtility.SetStatValueInList(ref hewn.statBases, StatDefOf.Beauty, -1f); hewn.scatterType = "Rocky"; hewn.affordances = new List <TerrainAffordanceDef>(); hewn.affordances.Add(TerrainAffordanceDefOf.Light); hewn.affordances.Add(TerrainAffordanceDefOf.Medium); hewn.affordances.Add(TerrainAffordanceDefOf.Heavy); hewn.affordances.Add(TerrainAffordanceDefOf.SmoothableStone); hewn.fertility = 0f; hewn.filthAcceptanceMask = FilthSourceFlags.Any; hewn.modContentPack = item.modContentPack; hewn.renderPrecedence = 50 + i; hewn.defName = item.defName + "_RoughHewn"; hewn.label = "RoughHewnStoneTerrainLabel".Translate(item.label); hewn.description = "RoughHewnStoneTerrainDesc".Translate(item.label); hewn.color = item.graphicData.color; item.building.leaveTerrain = hewn; smooth.texturePath = "Terrain/Surfaces/SmoothStone"; smooth.edgeType = TerrainDef.TerrainEdgeType.FadeRough; smooth.pathCost = 0; StatUtility.SetStatValueInList(ref smooth.statBases, StatDefOf.Beauty, 2f); StatUtility.SetStatValueInList(ref smooth.statBases, StatDefOf.MarketValue, 8f); smooth.scatterType = "Rocky"; smooth.affordances = new List <TerrainAffordanceDef>(); smooth.affordances.Add(TerrainAffordanceDefOf.Light); smooth.affordances.Add(TerrainAffordanceDefOf.Medium); smooth.affordances.Add(TerrainAffordanceDefOf.Heavy); smooth.fertility = 0f; smooth.filthAcceptanceMask = FilthSourceFlags.Any; smooth.modContentPack = item.modContentPack; smooth.tags = new List <string> { "Floor" }; smooth.renderPrecedence = 140 + i; smooth.defName = item.defName + "_Smooth"; smooth.label = "SmoothStoneTerrainLabel".Translate(item.label); smooth.description = "SmoothStoneTerrainDesc".Translate(item.label); smooth.color = item.graphicData.color; terrainDef.smoothedTerrain = smooth; hewn.smoothedTerrain = smooth; yield return(terrainDef); yield return(hewn); yield return(smooth); i++; } }
public static IEnumerable <TerrainDef> ImpliedTerrainDefs() { int i = 0; using (IEnumerator <ThingDef> enumerator = (from def in DefDatabase <ThingDef> .AllDefs where def.building != null && def.building.isNaturalRock && !def.building.isResourceRock select def).GetEnumerator()) { if (enumerator.MoveNext()) { ThingDef rock = enumerator.Current; TerrainDef rough = new TerrainDef(); TerrainDef hewn = new TerrainDef(); TerrainDef smooth = new TerrainDef(); rough.texturePath = "Terrain/Surfaces/RoughStone"; rough.edgeType = TerrainDef.TerrainEdgeType.FadeRough; rough.pathCost = 1; StatUtility.SetStatValueInList(ref rough.statBases, StatDefOf.Beauty, -1f); rough.scatterType = "Rocky"; rough.affordances = new List <TerrainAffordance>(); rough.affordances.Add(TerrainAffordance.Light); rough.affordances.Add(TerrainAffordance.Heavy); rough.affordances.Add(TerrainAffordance.SmoothableStone); rough.fertility = 0f; rough.renderPrecedence = 190 + i; rough.defName = rock.defName + "_Rough"; rough.label = "RoughStoneTerrainLabel".Translate(rock.label); rough.description = "RoughStoneTerrainDesc".Translate(rock.label); rough.color = rock.graphicData.color; rock.naturalTerrain = rough; hewn.texturePath = "Terrain/Surfaces/RoughHewnRock"; hewn.edgeType = TerrainDef.TerrainEdgeType.FadeRough; hewn.pathCost = 1; StatUtility.SetStatValueInList(ref hewn.statBases, StatDefOf.Beauty, -1f); hewn.scatterType = "Rocky"; hewn.affordances = new List <TerrainAffordance>(); hewn.affordances.Add(TerrainAffordance.Light); hewn.affordances.Add(TerrainAffordance.Heavy); hewn.affordances.Add(TerrainAffordance.SmoothableStone); hewn.fertility = 0f; hewn.renderPrecedence = 50 + i; hewn.defName = rock.defName + "_RoughHewn"; hewn.label = "RoughHewnStoneTerrainLabel".Translate(rock.label); hewn.description = "RoughHewnStoneTerrainDesc".Translate(rock.label); hewn.color = rock.graphicData.color; rock.leaveTerrain = hewn; smooth.texturePath = "Terrain/Surfaces/SmoothStone"; smooth.edgeType = TerrainDef.TerrainEdgeType.FadeRough; smooth.pathCost = 0; StatUtility.SetStatValueInList(ref smooth.statBases, StatDefOf.Beauty, 2f); smooth.scatterType = "Rocky"; smooth.affordances = new List <TerrainAffordance>(); smooth.affordances.Add(TerrainAffordance.Light); smooth.affordances.Add(TerrainAffordance.Heavy); smooth.affordances.Add(TerrainAffordance.SmoothHard); smooth.fertility = 0f; smooth.acceptTerrainSourceFilth = true; smooth.renderPrecedence = 140 + i; smooth.defName = rock.defName + "_Smooth"; smooth.label = "SmoothStoneTerrainLabel".Translate(rock.label); smooth.description = "SmoothStoneTerrainDesc".Translate(rock.label); smooth.color = rock.graphicData.color; rough.smoothedTerrain = smooth; hewn.smoothedTerrain = smooth; yield return(rough); /*Error: Unable to find new state assignment for yield return*/; } } yield break; IL_058c: /*Error near IL_058d: Unexpected return in MoveNext()*/; }
public static IEnumerable <ThingDef> ImpliedLeatherDefs() { int numLeathers = DefDatabase <ThingDef> .AllDefs.Where(ThingDefGenerator_Leather.GeneratesLeather).Count(); float eachLeatherCommonality = (float)(1.0 / (float)numLeathers); foreach (ThingDef item in DefDatabase <ThingDef> .AllDefs.ToList()) { if (ThingDefGenerator_Leather.GeneratesLeather(item) && item.race.useLeatherFrom == null) { ThingDef d = new ThingDef(); d.resourceReadoutPriority = ResourceCountPriority.Middle; d.category = ThingCategory.Item; d.thingClass = typeof(ThingWithComps); d.graphicData = new GraphicData(); d.graphicData.graphicClass = typeof(Graphic_Single); d.useHitPoints = true; d.selectable = true; d.SetStatBaseValue(StatDefOf.MaxHitPoints, 100f); d.altitudeLayer = AltitudeLayer.Item; d.stackLimit = 75; d.comps.Add(new CompProperties_Forbiddable()); d.SetStatBaseValue(StatDefOf.Beauty, -20f); d.SetStatBaseValue(StatDefOf.DeteriorationRate, 2f); d.alwaysHaulable = true; d.drawGUIOverlay = true; d.rotatable = false; d.pathCost = 15; d.category = ThingCategory.Item; d.description = "LeatherDesc".Translate(item.label); d.useHitPoints = true; d.SetStatBaseValue(StatDefOf.MaxHitPoints, 60f); d.SetStatBaseValue(StatDefOf.MarketValue, (float)(item.race.leatherMarketValueFactor * 2.0999999046325684)); d.SetStatBaseValue(StatDefOf.Mass, 0.03f); d.SetStatBaseValue(StatDefOf.Flammability, 1f); if (d.thingCategories == null) { d.thingCategories = new List <ThingCategoryDef>(); } DirectXmlCrossRefLoader.RegisterListWantsCrossRef(d.thingCategories, "Leathers"); d.graphicData.texPath = "Things/Item/Resource/Cloth"; d.stuffProps = new StuffProperties(); DirectXmlCrossRefLoader.RegisterListWantsCrossRef(d.stuffProps.categories, "Leathery"); StatUtility.SetStatValueInList(ref d.stuffProps.statFactors, StatDefOf.MarketValue, 1.3f); StatUtility.SetStatValueInList(ref d.stuffProps.statFactors, StatDefOf.ArmorRating_Blunt, 1.5f); StatUtility.SetStatValueInList(ref d.stuffProps.statFactors, StatDefOf.ArmorRating_Sharp, 1.5f); StatUtility.SetStatValueInList(ref d.stuffProps.statFactors, StatDefOf.ArmorRating_Heat, 1.7f); StatUtility.SetStatValueInList(ref d.stuffProps.statFactors, StatDefOf.ArmorRating_Electric, 4f); d.defName = item.defName + "_Leather"; if (!item.race.leatherLabel.NullOrEmpty()) { d.label = item.race.leatherLabel; } else { d.label = "LeatherLabel".Translate(item.label); } d.stuffProps.color = item.race.leatherColor; d.graphicData.color = item.race.leatherColor; d.graphicData.colorTwo = item.race.leatherColor; d.stuffProps.commonality = (float)(1.2000000476837158 * eachLeatherCommonality * item.race.leatherCommonalityFactor); StatUtility.SetStatValueInList(ref d.stuffProps.statFactors, StatDefOf.Insulation_Cold, item.race.leatherInsulation); StatUtility.SetStatValueInList(ref d.stuffProps.statFactors, StatDefOf.Insulation_Heat, item.race.leatherInsulation); List <StatModifier> sfos = item.race.leatherStatFactors; if (sfos != null) { foreach (StatModifier item2 in sfos) { StatUtility.SetStatValueInList(ref d.stuffProps.statFactors, item2.stat, item2.value); } } item.race.leatherDef = d; yield return(d); /*Error: Unable to find new state assignment for yield return*/; } } yield break; IL_05e9: /*Error near IL_05ea: Unexpected return in MoveNext()*/; }