public BossPawnKindDef(PawnKindDef def, float points, IEnumerable <BuffCat> strategy) { foreach (FieldInfo field in def.GetType().GetFields(BindingFlags.Public | BindingFlags.Instance)) { field.SetValue(this, field.GetValue(def)); } defName = "Boss" + def.defName + points; labelFemale = labelMale = label = "Boss " + def.label; combatPower = CombatPowerCalculator.BuffUpToThreshold(def, points, strategy, out buffMultiple); canArriveManhunter = true; wildSpawn_spawnWild = false; lifeStages = BossFightDefOf.PawnKindLifeStages(def.lifeStages, buffMultiple[BuffCat.Size]); minGenerationAge = BossFightSettings.VanillaBossMinimumAge; race = new BossPawnThingDef(BossFightDefOf.AllowedBossDefs.First(thingDef => thingDef.defName == def.defName), points, buffMultiple); ResolveReferences(); }
private static PawnKindDef BaseSlimeKindDef(SlimeGeneratorDef slimeGenerator) { var pawnKind = new PawnKindDef(); foreach (var fieldInfo in typeof(PawnKindDef).GetFields()) { try { var newField = pawnKind.GetType().GetField(fieldInfo.Name); newField.SetValue(pawnKind, fieldInfo.GetValue(slimeGenerator.slimeTypeDef.originPawnKind)); } catch { } } AssignNewVariables(ref pawnKind, slimeGenerator.slimeTypeDef.originPawnKind); pawnKind.defName = slimeGenerator.defName; pawnKind.label = slimeGenerator.label; if (slimeGenerator.description?.Length > 0) { pawnKind.description = slimeGenerator.description; } else { pawnKind.description = slimeGenerator.slimeTypeDef.originThingDef.description; } foreach (var lifeStage in pawnKind.lifeStages) { if (slimeGenerator.color != null) { lifeStage.bodyGraphicData.color = new Color(slimeGenerator.color.r, slimeGenerator.color.g, slimeGenerator.color.b, slimeGenerator.color.a); } else { lifeStage.bodyGraphicData.color = new Color(slimeGenerator.sourceThingDef.stuffProps.color.r, slimeGenerator.sourceThingDef.stuffProps.color.g, slimeGenerator.sourceThingDef.stuffProps.color.b, slimeGenerator.sourceThingDef.stuffProps.color.a); } } Utils.slimePawnKindDefs.Add(pawnKind); return(pawnKind); }