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); } }
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 }); }
private void <SetFollowerToil> m__0() { GatherAnimalsAndSlavesForCaravanUtility.SetFollower(this.AnimalOrSlave, this.pawn); RestUtility.WakeUp(this.pawn); }
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(); }