private void AssaultColony()
        {
            faction.TrySetRelationKind(Faction.OfPlayer, FactionRelationKind.Hostile, canSendLetter: false);
            for (int i = 0; i < pawns.Count; i++)
            {
                pawns[i].GetLord()?.Notify_PawnLost(pawns[i], PawnLostCondition.ForcedByQuest);
            }
            for (int j = 0; j < pawns.Count; j++)
            {
                pawns[j].SetFaction(faction);
                if (!pawns[j].Awake())
                {
                    RestUtility.WakeUp(pawns[j]);
                }
            }
            Lord lord = LordMaker.MakeNewLord(faction, new LordJob_AssaultColony(faction), mapParent.Map);

            for (int k = 0; k < pawns.Count; k++)
            {
                if (!pawns[k].Dead)
                {
                    lord.AddPawn(pawns[k]);
                }
            }
            Complete();
        }
        public override void Apply(LocalTargetInfo target, LocalTargetInfo dest)
        {
            base.Apply(target, dest);
            Pawn pawn = target.Thing as Pawn;

            if (pawn != null && !pawn.InMentalState)
            {
                TryGiveMentalStateWithDuration(pawn.RaceProps.IsMechanoid ? (Props.stateDefForMechs ?? Props.stateDef) : Props.stateDef, pawn, parent.def, Props.durationMultiplier);
                RestUtility.WakeUp(pawn);
            }
        }
Exemple #3
0
        private Toil SetFollowerToil()
        {
            Toil toil = new Toil();

            toil.initAction = delegate
            {
                GatherAnimalsAndSlavesForCaravanUtility.SetFollower(AnimalOrSlave, pawn);
                RestUtility.WakeUp(pawn);
            };
            toil.defaultCompleteMode = ToilCompleteMode.Instant;
            return(toil);
        }
 private Toil SetFollowerToil()
 {
     return(new Toil
     {
         initAction = delegate
         {
             GatherAnimalsAndSlavesForCaravanUtility.SetFollower(this.AnimalOrSlave, this.pawn);
             RestUtility.WakeUp(this.pawn);
         },
         defaultCompleteMode = ToilCompleteMode.Instant
     });
 }
Exemple #5
0
 private void <SetFollowerToil> m__0()
 {
     GatherAnimalsAndSlavesForCaravanUtility.SetFollower(this.AnimalOrSlave, this.pawn);
     RestUtility.WakeUp(this.pawn);
 }
Exemple #6
0
 public override void Apply(LocalTargetInfo target, LocalTargetInfo dest)
 {
     if (affectedFactions == null)
     {
         affectedFactions = new Dictionary <Faction, Pair <bool, Pawn> >();
     }
     else
     {
         affectedFactions.Clear();
     }
     giveMentalStateTo.Clear();
     foreach (Pawn item in parent.pawn.Map.mapPawns.AllPawnsSpawned)
     {
         if (CanApplyEffects(item) && !item.Fogged())
         {
             bool flag = !item.Spawned || item.Position.InHorDistOf(parent.pawn.Position, parent.def.EffectRadius);
             AffectGoodwill(item.FactionOrExtraMiniOrHomeFaction, !flag, item);
             if (!flag)
             {
                 giveMentalStateTo.Add(item);
             }
             else
             {
                 GiveNeuroquakeThought(item);
             }
         }
     }
     foreach (Map map in Find.Maps)
     {
         if (map == parent.pawn.Map || Find.WorldGrid.TraversalDistanceBetween(map.Tile, parent.pawn.Map.Tile, passImpassable: true, Props.worldRangeTiles + 1) > Props.worldRangeTiles)
         {
             continue;
         }
         foreach (Pawn allPawn in map.mapPawns.AllPawns)
         {
             if (CanApplyEffects(allPawn))
             {
                 GiveNeuroquakeThought(allPawn);
             }
         }
     }
     foreach (Caravan caravan in Find.WorldObjects.Caravans)
     {
         if (Find.WorldGrid.TraversalDistanceBetween(caravan.Tile, parent.pawn.Map.Tile, passImpassable: true, Props.worldRangeTiles + 1) > Props.worldRangeTiles)
         {
             continue;
         }
         foreach (Pawn pawn in caravan.pawns)
         {
             if (CanApplyEffects(pawn))
             {
                 GiveNeuroquakeThought(pawn);
             }
         }
     }
     foreach (Pawn item2 in giveMentalStateTo)
     {
         MentalStateDef mentalStateDef = null;
         mentalStateDef = (item2.RaceProps.IsMechanoid ? MentalStateDefOf.BerserkMechanoid : MentalStateDefOf.Berserk);
         CompAbilityEffect_GiveMentalState.TryGiveMentalStateWithDuration(mentalStateDef, item2, parent.def, StatDefOf.PsychicSensitivity);
         RestUtility.WakeUp(item2);
     }
     foreach (Faction allFaction in Find.FactionManager.AllFactions)
     {
         if (!allFaction.IsPlayer && !allFaction.defeated && !allFaction.HostileTo(Faction.OfPlayer))
         {
             AffectGoodwill(allFaction, gaveMentalBreak: false);
         }
     }
     foreach (KeyValuePair <Faction, Pair <bool, Pawn> > affectedFaction in affectedFactions)
     {
         Faction key    = affectedFaction.Key;
         bool    first  = affectedFaction.Value.First;
         Pawn    second = affectedFaction.Value.Second;
         key.TryAffectGoodwillWith(parent.pawn.Faction, first ? Props.goodwillImpactForBerserk : Props.goodwillImpactForNeuroquake, canSendMessage: true, canSendHostilityLetter: true, (first ? "GoodwillChangedReason_CausedBerserk" : "GoodwillChangedReason_CausedNeuroquakeEcho").Translate(second.Named("PAWN")), second);
     }
     base.Apply(target, dest);
     affectedFactions.Clear();
     giveMentalStateTo.Clear();
 }