public override void SpawnSetup() { base.SpawnSetup(); RemoveAfterLeave = true; caravanAction = new CaravanArrivalAction_Doomsday(this); caravanAction2 = new CaravanArrivalAction_GiveRansom(this); comp = GetComponent <DoomsdayUltimatumComp>(); }
private void GeneratePawns(DoomsdayUltimatumComp comp, ref IntVec3 enterPos, Map map) { Log.Clear(); PawnGroupMakerParms pawnGroupMakerParms = new PawnGroupMakerParms { points = Rand.Range(600, 1500), generateFightersOnly = true, groupKind = PawnGroupKindDefOf.Combat }; List <Pawn> pawns = new List <Pawn>(); foreach (var faction in comp.HelpingFactions) { pawnGroupMakerParms.faction = faction; int pawnsCount = Rand.Range(2, 3); int i = 0; IEnumerable <Pawn> generatedPawns = PawnGroupMakerUtility.GeneratePawns(pawnGroupMakerParms); foreach (var p in generatedPawns) { if (i == pawnsCount) { break; } i++; GenSpawn.Spawn(p, enterPos, map); pawns.Add(p); } } LordJob lordJob = new LordJob_AssaultColony(Faction.OfPlayer, canKidnap: false, canTimeoutOrFlee: false, canSteal: false); Lord lord = LordMaker.MakeNewLord(Faction.OfPlayer, lordJob, map); lord.numPawnsLostViolently = int.MaxValue; foreach (var p in pawns) { lord.AddPawn(p); } }
private void CacheAndChangeRelations(DoomsdayUltimatumComp comp) { comp.CachedRelations = new List <FactionRelation>(); comp.CachedFactions = new List <Faction>(); foreach (var faction in comp.HelpingFactions) { foreach (var faction2 in comp.HelpingFactions) { if (faction2 == faction) { continue; } FactionRelation mainRelation = faction.RelationWith(faction2); if (mainRelation != null) { FactionRelation relation = new FactionRelation(); relation.other = mainRelation.other; relation.kind = mainRelation.kind; comp.CachedRelations.Add(relation); comp.CachedFactions.Add(faction); faction.TrySetRelationKind(faction2, FactionRelationKind.Ally); } } FactionRelation withPlayer = faction.RelationWith(Faction.OfPlayer); if (withPlayer != null) { FactionRelation relation = new FactionRelation(); relation.other = withPlayer.other; relation.kind = withPlayer.kind; comp.CachedRelations.Add(relation); comp.CachedFactions.Add(faction); faction.TrySetRelationKind(Faction.OfPlayer, FactionRelationKind.Ally); } } }