// Token: 0x06000013 RID: 19 RVA: 0x00003200 File Offset: 0x00001400 private static void GenerateAngryAncient(Building_XenomorphCryptosleepCasket pod) { PawnGenerationRequest pawnGenerationRequest; pawnGenerationRequest = new PawnGenerationRequest(Building_XenomorphCryptosleepCasket.FindRandomSpacerPawnForSpawn(), Faction.OfAncientsHostile, (PawnGenerationContext)2, (pod.Map != null ? pod.Map.Tile : pod.MapHeld.Tile), false, false, false, false, true, false, 1f, false, true, true, false, true, false, false); Pawn pawn = PawnGenerator.GeneratePawn(pawnGenerationRequest); if (Rand.Chance(0.15f)) { BodyPartRecord part = pawn.RaceProps.body.AllParts.Find(x => x.def == BodyPartDefOf.Head); pawn.health.AddHediff(XenomorphDefOf.RRY_FaceHuggerInfection, part); } else if (Rand.Chance(0.15f)) { BodyPartRecord part = pawn.RaceProps.body.AllParts.Find(x => x.def == BodyPartDefOf.Torso); HediffDef hediff = Rand.Chance(0.75f) ? XenomorphDefOf.RRY_HiddenXenomorphImpregnation : XenomorphDefOf.RRY_HiddenNeomorphImpregnation; pawn.health.AddHediff(hediff, part); } Building_XenomorphCryptosleepCasket.GiveRandomLootInventoryForTombPawn(pawn); bool flag = !pod.TryAcceptThing(pawn, false); if (flag) { Find.WorldPawns.PassToWorld(pawn, (PawnDiscardDecideMode)2); } }
// Token: 0x06000012 RID: 18 RVA: 0x0000314C File Offset: 0x0000134C FindRandomPreSpacerPawnForSpawn private static void GenerateSlave(Building_XenomorphCryptosleepCasket pod) { PawnGenerationRequest pawnGenerationRequest; pawnGenerationRequest = new PawnGenerationRequest(Building_XenomorphCryptosleepCasket.FindRandomPreSpacerPawnForSpawn(), Faction.OfAncients, (PawnGenerationContext)2, (pod.Map != null ? pod.Map.Tile : pod.MapHeld.Tile), false, false, false, false, true, false, 1f, false, true, true, false, true, false, false); Pawn pawn = PawnGenerator.GeneratePawn(pawnGenerationRequest); HealthUtility.DamageUntilDowned(pawn, true); if (Rand.Chance(0.75f)) { BodyPartRecord part = pawn.RaceProps.body.AllParts.Find(x => x.def == BodyPartDefOf.Head); pawn.health.AddHediff(XenomorphDefOf.RRY_FaceHuggerInfection, part); } Building_XenomorphCryptosleepCasket.GiveRandomLootInventoryForTombPawn(pawn); bool flag = Rand.Value < 0.5f; if (flag) { HealthUtility.DamageUntilDead(pawn); } bool flag2 = !pod.TryAcceptThing(pawn, false); if (flag2) { Find.WorldPawns.PassToWorld(pawn, (PawnDiscardDecideMode)2); } }
// Token: 0x06000014 RID: 20 RVA: 0x00003290 File Offset: 0x00001490 private static void GenerateHalfEatenAncient(Building_XenomorphCryptosleepCasket pod) { PawnGenerationRequest pawnGenerationRequest; pawnGenerationRequest = new PawnGenerationRequest(Building_XenomorphCryptosleepCasket.FindRandomSpacerPawnForSpawn(), Faction.OfAncients, (PawnGenerationContext)2, (pod.Map != null ? pod.Map.Tile : pod.MapHeld.Tile), false, false, false, false, true, false, 1f, false, true, true, false, true, false, false); Pawn pawn = PawnGenerator.GeneratePawn(pawnGenerationRequest); HediffSet hediffSet = pawn.health.hediffSet; int num = Rand.Range(5, 10); for (int i = 0; i < num; i++) { BodyPartRecord bodyPartRecord = GenCollection.RandomElementByWeight <BodyPartRecord>(Building_XenomorphCryptosleepCasket.HittablePartsViolence(hediffSet), (BodyPartRecord x) => x.coverageAbs); DamageDef bite = DamageDefOf.Bite; float num2 = (float)Rand.Range(3, 8); float num3 = 999f; BodyPartRecord bodyPartRecord2 = bodyPartRecord; DamageInfo damageInfo; damageInfo = new DamageInfo(bite, num2, num3, -1f, null, bodyPartRecord2, null, 0, null); pawn.TakeDamage(damageInfo); } if (Rand.Chance(0.75f)) { BodyPartRecord part = pawn.RaceProps.body.AllParts.Find(x => x.def == BodyPartDefOf.Head); pawn.health.AddHediff(XenomorphDefOf.RRY_FaceHuggerInfection, part); } else if (Rand.Chance(0.5f)) { BodyPartRecord part = pawn.RaceProps.body.AllParts.Find(x => x.def == BodyPartDefOf.Torso); HediffDef hediff = Rand.Chance(0.75f) ? XenomorphDefOf.RRY_HiddenXenomorphImpregnation : XenomorphDefOf.RRY_HiddenNeomorphImpregnation; pawn.health.AddHediff(hediff, part); } Building_XenomorphCryptosleepCasket.GiveRandomLootInventoryForTombPawn(pawn); List <Pawn> list = new List <Pawn>(); float value = Rand.Value; bool flag = (double)value < 0.1; int num4; if (flag) { list.Add(PawnGenerator.GeneratePawn(XenomorphDefOf.RRY_Xenomorph_Warrior, null)); num4 = 1; } else { bool flag2 = (double)value < 0.35; if (flag2) { list.Add(PawnGenerator.GeneratePawn(XenomorphDefOf.RRY_Xenomorph_Drone, null)); num4 = 1; } else { num4 = Rand.Range(3, 6); for (int j = 0; j < num4; j++) { list.Add(PawnGenerator.GeneratePawn(XenomorphDefOf.RRY_Xenomorph_FaceHugger, null)); } } } for (int k = 0; k < num4; k++) { Pawn pawn2 = list[k]; bool flag3 = !pod.TryAcceptThing(pawn2, false); if (flag3) { Find.WorldPawns.PassToWorld(pawn2, (PawnDiscardDecideMode)2); break; } //pawn2.mindState.mentalStateHandler.TryStartMentalState(MentalStateDefOf.Manhunter, null, false, false, null, false); } }