Esempio n. 1
0
        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);
                }
            }
        }