public override void Generate(Map map, GenStepParams parms) { TraverseParms traverseParams = TraverseParms.For(TraverseMode.NoPassClosedDoors); if (RCellFinder.TryFindRandomCellNearTheCenterOfTheMapWith((IntVec3 x) => x.Standable(map) && !x.Fogged(map) && map.reachability.CanReachMapEdge(x, traverseParams) && x.GetRoom(map).CellCount >= MinRoomCells, map, out var result)) { float points = ((parms.sitePart != null) ? parms.sitePart.parms.threatPoints : defaultPointsRange.RandomInRange); PawnKindDef animalKind; if (parms.sitePart != null && parms.sitePart.parms.animalKind != null) { animalKind = parms.sitePart.parms.animalKind; } else if (!ManhunterPackGenStepUtility.TryGetAnimalsKind(points, map.Tile, out animalKind)) { return; } List <Pawn> list = ManhunterPackIncidentUtility.GenerateAnimals_NewTmp(animalKind, map.Tile, points); for (int i = 0; i < list.Count; i++) { IntVec3 loc = CellFinder.RandomSpawnCellForPawnNear(result, map, 10); GenSpawn.Spawn(list[i], loc, map, Rot4.Random); list[i].health.AddHediff(HediffDefOf.Scaria); list[i].mindState.mentalStateHandler.TryStartMentalState(MentalStateDefOf.ManhunterPermanent); } } }
public override void Generate(Map map, GenStepParams parms) { TraverseParms traverseParams = TraverseParms.For(TraverseMode.NoPassClosedDoors, Danger.Deadly, false); IntVec3 root; if (RCellFinder.TryFindRandomCellNearTheCenterOfTheMapWith((IntVec3 x) => x.Standable(map) && !x.Fogged(map) && map.reachability.CanReachMapEdge(x, traverseParams) && x.GetRoom(map, RegionType.Set_Passable).CellCount >= this.MinRoomCells, map, out root)) { float points = (parms.siteCoreOrPart == null) ? this.defaultPointsRange.RandomInRange : parms.siteCoreOrPart.parms.threatPoints; PawnKindDef animalKind; if (parms.siteCoreOrPart != null && parms.siteCoreOrPart.parms.animalKind != null) { animalKind = parms.siteCoreOrPart.parms.animalKind; } else if (!ManhunterPackGenStepUtility.TryGetAnimalsKind(points, map.Tile, out animalKind)) { return; } List <Pawn> list = ManhunterPackIncidentUtility.GenerateAnimals(animalKind, map.Tile, points); for (int i = 0; i < list.Count; i++) { IntVec3 loc = CellFinder.RandomSpawnCellForPawnNear(root, map, 10); GenSpawn.Spawn(list[i], loc, map, Rot4.Random, WipeMode.Vanish, false); list[i].mindState.mentalStateHandler.TryStartMentalState(MentalStateDefOf.ManhunterPermanent, null, false, false, null, false); } } }
public override SiteCoreOrPartParams GenerateDefaultParams(Site site, float myThreatPoints) { SiteCoreOrPartParams siteCoreOrPartParams = base.GenerateDefaultParams(site, myThreatPoints); if (ManhunterPackGenStepUtility.TryGetAnimalsKind(siteCoreOrPartParams.threatPoints, site.Tile, out siteCoreOrPartParams.animalKind)) { siteCoreOrPartParams.threatPoints = Mathf.Max(siteCoreOrPartParams.threatPoints, siteCoreOrPartParams.animalKind.combatPower); } return(siteCoreOrPartParams); }
public override SitePartParams GenerateDefaultParams(float myThreatPoints, int tile, Faction faction) { SitePartParams sitePartParams = base.GenerateDefaultParams(myThreatPoints, tile, faction); if (ManhunterPackGenStepUtility.TryGetAnimalsKind(sitePartParams.threatPoints, tile, out sitePartParams.animalKind)) { sitePartParams.threatPoints = Mathf.Max(sitePartParams.threatPoints, sitePartParams.animalKind.combatPower); } return(sitePartParams); }