public static RefreshThingList ( List |
||
listToRefresh | List |
|
return | List |
public override void Destroy(DestroyMode mode = DestroyMode.Vanish) { base.Destroy(mode); this.outpostThingList = OG_Util.RefreshThingList(this.outpostThingList); string eventTitle = "Coralie out"; string eventText = " M&Co. system maintenance request\n\n" + "Request author: Coralie\n" + "Function: M&Co. outpost AI\n\n" + "Defect description:\n" + "Coralie here. I detect several severe dysfunctions.\n" + "- video sensors: LINK DAMAGED\n" + "- threat sensors: NO RESPONSE\n" + "- security systems: OFFLINE\n" + "- power status: INTERNAL BAT LVL CRITICAL\n\n" + "I urgently request the sending of a repair tea-\n\n" + "*Grrz*... *Pchii*... *Fzzt*\n\n" + "---- End of transmision ---"; if (this.Faction == Faction.OfColony) { Find.LetterStack.ReceiveLetter(eventTitle, eventText, LetterType.BadUrgent); } else { ChangeOutpostThingsFaction(null); LaunchSecurityDropPods(4, OG_Util.OutpostScoutDef, false); Find.LetterStack.ReceiveLetter(eventTitle, eventText, LetterType.BadNonUrgent); } ChangeOutpostTurretsFaction(null, true); ChangeOutpostDoorsFaction(null, true); Thing coralie = ThingMaker.MakeThing(ThingDef.Named("AIPersonaCore")); GenSpawn.Spawn(coralie, this.Position); }
public override void ExposeData() { base.ExposeData(); this.outpostThingList = OG_Util.RefreshThingList(this.outpostThingList); Scribe_Collections.LookList <Thing>(ref this.outpostThingList, "outpostThingList", LookMode.MapReference); Scribe_Values.LookValue <IntVec3>(ref this.dropZoneCenter, "dropZoneCenter"); }
public void TryToCaptureOutpost(string eventTitle, string eventText, LetterType letterType, Faction turretsNewFaction, bool deactivateTurrets, Faction doorsNewFaction, bool deactivateDoors, int dropPodsNumber, PawnKindDef securityForcesDef) { SetOutpostSecurityForcesHostileToColony(); this.outpostThingList = OG_Util.RefreshThingList(this.outpostThingList); ChangeOutpostThingsFaction(null); ChangeOutpostTurretsFaction(turretsNewFaction, deactivateTurrets); ChangeOutpostDoorsFaction(doorsNewFaction, deactivateDoors); LaunchSecurityDropPods(dropPodsNumber, securityForcesDef, true); OG_Util.DestroyOutpostArea(); Find.LetterStack.ReceiveLetter(eventTitle, eventText, letterType, new TargetInfo(this.Position)); }
public static void GenerateOutpost(OG_OutpostData outpostDataParameter) { outpostData = outpostDataParameter; outpostData.triggerIntrusion = null; outpostData.outpostThingList = new List <Thing>(); // Reset zoneMap. for (int zoneOrd = 0; zoneOrd < verticalZonesNumber; zoneOrd++) { for (int zoneAbs = 0; zoneAbs < horizontalZonesNumber; zoneAbs++) { zoneMap[zoneOrd, zoneAbs] = new ZoneProperties(ZoneType.NotYetGenerated, Rot4.North, Rot4.North); } } // Clear the whole area and remove any roof. CellRect rect = new CellRect(outpostData.areaSouthWestOrigin.x - 1, outpostData.areaSouthWestOrigin.z - 1, areaSideLength + 2, areaSideLength + 2); foreach (IntVec3 cell in rect.Cells) { Find.RoofGrid.SetRoof(cell, null); List <Thing> thingList = cell.GetThingList(); for (int j = thingList.Count - 1; j >= 0; j--) { Thing thing = thingList[j]; if (thing.def.destroyable) { thing.Destroy(DestroyMode.Vanish); } } } // Create the intrusion trigger. outpostData.triggerIntrusion = (TriggerIntrusion)ThingMaker.MakeThing(ThingDef.Named("TriggerIntrusion")); GenSpawn.Spawn(outpostData.triggerIntrusion, rect.CenterCell); GenerateOutpostLayout(); // TODO: debug. Display the generated layout. /*for (int zoneOrd = 0; zoneOrd < verticalZonesNumber; zoneOrd++) * { * for (int zoneAbs = 0; zoneAbs < horizontalZonesNumber; zoneAbs++) * { * ZoneProperties zone = zoneMap[zoneOrd, zoneAbs]; * Log.Message("Layout: zoneMap[" + zoneOrd + "," + zoneAbs + "] => " + zone.zoneType.ToString() + "," + zone.rotation.ToString() + "," + zone.linkedZoneRelativeRotation.ToString()); * } * }*/ GenerateOutpostZones(outpostData.areaSouthWestOrigin); IntVec3 mainRoomZoneOrigin = Zone.GetZoneOrigin(outpostData.areaSouthWestOrigin, mainRoomZoneAbs, mainRoomZoneOrd); OG_Common.GenerateSas(mainRoomZoneOrigin + new IntVec3(5, 0, 10), Rot4.North, 3, smallRoomWallOffset * 2, ref outpostData); OG_Common.GenerateSas(mainRoomZoneOrigin + new IntVec3(10, 0, 5), Rot4.East, 3, smallRoomWallOffset * 2, ref outpostData); OG_Common.GenerateSas(mainRoomZoneOrigin + new IntVec3(5, 0, 0), Rot4.South, 3, smallRoomWallOffset * 2, ref outpostData); OG_Common.GenerateSas(mainRoomZoneOrigin + new IntVec3(0, 0, 5), Rot4.West, 3, smallRoomWallOffset * 2, ref outpostData); // Generate laser fences. OG_LaserFence.GenerateLaserFence(zoneMap, ref outpostData); // Generate battle remains. OG_WarfieldEffects.GenerateWarfieldEffects(zoneMap, horizontalZonesNumber, verticalZonesNumber, outpostData); // Damage outpost to reflect its history. OG_RuinEffects.GenerateRuinEffects(ref outpostData); // Don't generate permanent inhabitants for small outposts. Those are just used as a shack by exploration teams. // Initialize command console data. outpostData.outpostThingList = OG_Util.RefreshThingList(outpostData.outpostThingList); commandConsole.outpostThingList = outpostData.outpostThingList.ListFullCopy <Thing>(); commandConsole.dropZoneCenter = outpostData.dropZoneCenter; // Initialize intrusion trigger data. outpostData.triggerIntrusion.commandConsole = commandConsole; SendWelcomeLetter(outpostData); }