private void SpawnRequestedReinforcements() { Building_OrbitalRelay orbitalRelay = OG_Util.FindOrbitalRelay(this.Faction); if (orbitalRelay != null) { for (int pawnIndex = 0; pawnIndex < orbitalRelay.requestedOfficersNumber; pawnIndex++) { Pawn pawn = OG_Inhabitants.GeneratePawn(OG_Util.OutpostOfficerDef); GenSpawn.Spawn(pawn, this.Position); } for (int pawnIndex = 0; pawnIndex < orbitalRelay.requestedHeavyGuardsNumber; pawnIndex++) { Pawn pawn = OG_Inhabitants.GeneratePawn(OG_Util.OutpostHeavyGuardDef); GenSpawn.Spawn(pawn, this.Position); } for (int pawnIndex = 0; pawnIndex < orbitalRelay.requestedGuardsNumber; pawnIndex++) { Pawn pawn = OG_Inhabitants.GeneratePawn(OG_Util.OutpostGuardDef); GenSpawn.Spawn(pawn, this.Position); } for (int pawnIndex = 0; pawnIndex < orbitalRelay.requestedScoutsNumber; pawnIndex++) { Pawn pawn = OG_Inhabitants.GeneratePawn(OG_Util.OutpostScoutDef); GenSpawn.Spawn(pawn, this.Position); } for (int pawnIndex = 0; pawnIndex < orbitalRelay.requestedTechniciansNumber; pawnIndex++) { Pawn pawn = OG_Inhabitants.GeneratePawn(OG_Util.OutpostTechnicianDef); GenSpawn.Spawn(pawn, this.Position + Vector3Utility.RandomHorizontalOffset(4f).ToIntVec3()); } } }
private void SpawnRequestedReinforcements() { for (int pawnIndex = 0; pawnIndex < this.requestedOfficersNumber; pawnIndex++) { Pawn pawn = OG_Inhabitants.GeneratePawn(OG_Util.OutpostOfficerDef); GenSpawn.Spawn(pawn, CellFinder.RandomClosewalkCellNear(this.Position, 4)); } for (int pawnIndex = 0; pawnIndex < this.requestedHeavyGuardsNumber; pawnIndex++) { Pawn pawn = OG_Inhabitants.GeneratePawn(OG_Util.OutpostHeavyGuardDef); GenSpawn.Spawn(pawn, CellFinder.RandomClosewalkCellNear(this.Position, 4)); } for (int pawnIndex = 0; pawnIndex < this.requestedGuardsNumber; pawnIndex++) { Pawn pawn = OG_Inhabitants.GeneratePawn(OG_Util.OutpostGuardDef); GenSpawn.Spawn(pawn, CellFinder.RandomClosewalkCellNear(this.Position, 4)); } for (int pawnIndex = 0; pawnIndex < this.requestedScoutsNumber; pawnIndex++) { Pawn pawn = OG_Inhabitants.GeneratePawn(OG_Util.OutpostScoutDef); GenSpawn.Spawn(pawn, CellFinder.RandomClosewalkCellNear(this.Position, 4)); } for (int pawnIndex = 0; pawnIndex < this.requestedTechniciansNumber; pawnIndex++) { Pawn pawn = OG_Inhabitants.GeneratePawn(OG_Util.OutpostTechnicianDef); GenSpawn.Spawn(pawn, CellFinder.RandomClosewalkCellNear(this.Position, 4)); } }
void LaunchSecurityDropPods(int dropPodsNumber, PawnKindDef securityForcesDef, bool assaultColony) { IntVec3 dropPodSpot; List <Pawn> securityForcesList = new List <Pawn>(); if ((dropPodsNumber == 0) || (securityForcesDef == null)) { return; } OG_Inhabitants.InitializeUniformColorAccordingToBiome(); // Necessary in case of small outpost (no inhabitants were generated). for (int soldierIndex = 0; soldierIndex < dropPodsNumber; soldierIndex++) { bool validDropPodCellIsFound = DropCellFinder.TryFindDropSpotNear(this.dropZoneCenter, out dropPodSpot, true, false); if (validDropPodCellIsFound) { Pawn soldier = OG_Inhabitants.GeneratePawn(securityForcesDef); securityForcesList.Add(soldier); DropPodUtility.MakeDropPodAt(dropPodSpot, new DropPodInfo { SingleContainedThing = soldier, openDelay = 240, leaveSlag = false }); } } LordJob lordJob; if (assaultColony) { lordJob = new LordJob_AssaultColony(OG_Util.FactionOfMAndCo, true, true, false); } else { lordJob = new LordJob_DefendPoint(this.dropZoneCenter); } Lord lord = LordMaker.MakeNewLord(OG_Util.FactionOfMAndCo, lordJob, securityForcesList); }