protected override IEnumerable <Toil> MakeNewToils() { Toil toil = Toils_Goto.GotoCell(TargetIndex.A, PathEndMode.OnCell); toil.AddPreTickAction(delegate { if (job.exitMapOnArrival && pawn.Map.exitMapGrid.IsExitCell(pawn.Position)) { TryExitMap(); } }); toil.FailOn(() => job.failIfCantJoinOrCreateCaravan && !CaravanExitMapUtility.CanExitMapAndJoinOrCreateCaravanNow(pawn)); yield return(toil); Toil toil2 = new Toil(); toil2.initAction = delegate { if (pawn.mindState != null && pawn.mindState.forcedGotoPosition == base.TargetA.Cell) { pawn.mindState.forcedGotoPosition = IntVec3.Invalid; } if (job.exitMapOnArrival && (pawn.Position.OnEdge(pawn.Map) || pawn.Map.exitMapGrid.IsExitCell(pawn.Position))) { TryExitMap(); } }; toil2.defaultCompleteMode = ToilCompleteMode.Instant; yield return(toil2); }
protected override IEnumerable <Toil> MakeNewToils() { Toil gotoCell = Toils_Goto.GotoCell(TargetIndex.A, PathEndMode.OnCell); gotoCell.AddPreTickAction(delegate { if (this.$this.job.exitMapOnArrival && this.$this.pawn.Map.exitMapGrid.IsExitCell(this.$this.pawn.Position)) { this.$this.TryExitMap(); } }); gotoCell.FailOn(() => this.$this.job.failIfCantJoinOrCreateCaravan && !CaravanExitMapUtility.CanExitMapAndJoinOrCreateCaravanNow(this.$this.pawn)); yield return(gotoCell); yield return(new Toil { initAction = delegate { if (this.$this.pawn.mindState != null && this.$this.pawn.mindState.forcedGotoPosition == this.$this.TargetA.Cell) { this.$this.pawn.mindState.forcedGotoPosition = IntVec3.Invalid; } if (this.$this.job.exitMapOnArrival && (this.$this.pawn.Position.OnEdge(this.$this.pawn.Map) || this.$this.pawn.Map.exitMapGrid.IsExitCell(this.$this.pawn.Position))) { this.$this.TryExitMap(); } }, defaultCompleteMode = ToilCompleteMode.Instant }); }
protected override IEnumerable <Toil> MakeNewToils() { this.FailOnDestroyedOrNull(TargetIndex.A); yield return(Toils_Goto.GotoThing(TargetIndex.A, PathEndMode.ClosestTouch).FailOnSomeonePhysicallyInteracting(TargetIndex.A)); yield return(Toils_Construct.UninstallIfMinifiable(TargetIndex.A).FailOnSomeonePhysicallyInteracting(TargetIndex.A)); yield return(Toils_Haul.StartCarryThing(TargetIndex.A)); Toil toil = Toils_Goto.GotoCell(TargetIndex.B, PathEndMode.OnCell); toil.AddPreTickAction(delegate { if (base.Map.exitMapGrid.IsExitCell(pawn.Position)) { pawn.ExitMap(allowedToJoinOrCreateCaravan: true, CellRect.WholeMap(base.Map).GetClosestEdge(pawn.Position)); } }); toil.FailOn(() => job.failIfCantJoinOrCreateCaravan && !CaravanExitMapUtility.CanExitMapAndJoinOrCreateCaravanNow(pawn)); yield return(toil); Toil toil2 = new Toil(); toil2.initAction = delegate { if (pawn.Position.OnEdge(pawn.Map) || pawn.Map.exitMapGrid.IsExitCell(pawn.Position)) { pawn.ExitMap(allowedToJoinOrCreateCaravan: true, CellRect.WholeMap(base.Map).GetClosestEdge(pawn.Position)); } }; toil2.FailOn(() => job.failIfCantJoinOrCreateCaravan && !CaravanExitMapUtility.CanExitMapAndJoinOrCreateCaravanNow(pawn)); toil2.defaultCompleteMode = ToilCompleteMode.Instant; yield return(toil2); }
private void TryExitMap() { if (!job.failIfCantJoinOrCreateCaravan || CaravanExitMapUtility.CanExitMapAndJoinOrCreateCaravanNow(pawn)) { pawn.ExitMap(allowedToJoinOrCreateCaravan: true, CellRect.WholeMap(base.Map).GetClosestEdge(pawn.Position)); } }
private void TryExitMap() { if (!this.job.failIfCantJoinOrCreateCaravan || CaravanExitMapUtility.CanExitMapAndJoinOrCreateCaravanNow(this.pawn)) { this.pawn.ExitMap(true, CellRect.WholeMap(base.Map).GetClosestEdge(this.pawn.Position)); } }
private void TryExitMap() { if (base.job.failIfCantJoinOrCreateCaravan && !CaravanExitMapUtility.CanExitMapAndJoinOrCreateCaravanNow(base.pawn)) { return; } base.pawn.ExitMap(true); }
private void TryExitMap() { // only allowed to join or create caravan? if (job.failIfCantJoinOrCreateCaravan && !CaravanExitMapUtility.CanExitMapAndJoinOrCreateCaravanNow(pawn)) { return; } pawn.ExitMap(true, CellRect.WholeMap(Map).GetClosestEdge(pawn.Position)); }
public bool MoveNext() { uint num = (uint)this.$PC; this.$PC = -1; switch (num) { case 0u: gotoCell = Toils_Goto.GotoCell(TargetIndex.A, PathEndMode.OnCell); gotoCell.AddPreTickAction(delegate { if (this.job.exitMapOnArrival && this.pawn.Map.exitMapGrid.IsExitCell(this.pawn.Position)) { base.TryExitMap(); } }); gotoCell.FailOn(() => this.job.failIfCantJoinOrCreateCaravan && !CaravanExitMapUtility.CanExitMapAndJoinOrCreateCaravanNow(this.pawn)); this.$current = gotoCell; if (!this.$disposing) { this.$PC = 1; } return(true); case 1u: { Toil arrive = new Toil(); arrive.initAction = delegate() { if (this.pawn.mindState != null && this.pawn.mindState.forcedGotoPosition == base.TargetA.Cell) { this.pawn.mindState.forcedGotoPosition = IntVec3.Invalid; } if (this.job.exitMapOnArrival && (this.pawn.Position.OnEdge(this.pawn.Map) || this.pawn.Map.exitMapGrid.IsExitCell(this.pawn.Position))) { base.TryExitMap(); } }; arrive.defaultCompleteMode = ToilCompleteMode.Instant; this.$current = arrive; if (!this.$disposing) { this.$PC = 2; } return(true); } case 2u: this.$PC = -1; break; } return(false); }
private void TryExitMap() { if (!job.failIfCantJoinOrCreateCaravan || CaravanExitMapUtility.CanExitMapAndJoinOrCreateCaravanNow(pawn)) { Messages.Message("VAEE.ReleasingToTheWildMessage".Translate(), MessageTypeDefOf.PositiveEvent); var factions = Find.FactionManager.AllFactions.Where(x => factionsToAffect.Contains(x.def)); foreach (var faction in factions) { faction.TryAffectGoodwillWith(Faction.OfPlayer, 2, true, false); } pawn.ExitMap(allowedToJoinOrCreateCaravan: true, CellRect.WholeMap(base.Map).GetClosestEdge(pawn.Position)); } }
protected override IEnumerable <Toil> MakeNewToils() { { var gotoCell = Toils_Goto.GotoCell(TargetIndex.A, PathEndMode.OnCell); gotoCell.AddPreTickAction(() => { // we check exit grid every tick to make sure the pawn leaves the map as soon as possible if (job.exitMapOnArrival && pawn.Map.exitMapGrid.IsExitCell(pawn.Position)) { TryExitMap(); } }); // only allowed to join or create caravan? gotoCell.FailOn(() => job.failIfCantJoinOrCreateCaravan && !CaravanExitMapUtility.CanExitMapAndJoinOrCreateCaravanNow(pawn)); yield return(gotoCell); } { Toil arrive = new Toil(); arrive.initAction = () => { // check if we arrived to our forced goto position if (pawn.mindState != null && pawn.mindState.forcedGotoPosition == TargetA.Cell) { pawn.mindState.forcedGotoPosition = IntVec3.Invalid; } if (job.exitMapOnArrival && (pawn.Position.OnEdge(pawn.Map) || pawn.Map.exitMapGrid.IsExitCell(pawn.Position))) { TryExitMap(); } }; arrive.defaultCompleteMode = ToilCompleteMode.Instant; yield return(arrive); } }
protected override IEnumerable <Toil> MakeNewToils() { Toil gotoCell = Toils_Goto.GotoCell(TargetIndex.A, PathEndMode.OnCell); gotoCell.AddPreTickAction(delegate { if (((_003CMakeNewToils_003Ec__Iterator0) /*Error near IL_0038: stateMachine*/)._0024this.job.exitMapOnArrival && ((_003CMakeNewToils_003Ec__Iterator0) /*Error near IL_0038: stateMachine*/)._0024this.pawn.Map.exitMapGrid.IsExitCell(((_003CMakeNewToils_003Ec__Iterator0) /*Error near IL_0038: stateMachine*/)._0024this.pawn.Position)) { ((_003CMakeNewToils_003Ec__Iterator0) /*Error near IL_0038: stateMachine*/)._0024this.TryExitMap(); } }); gotoCell.FailOn(() => ((_003CMakeNewToils_003Ec__Iterator0) /*Error near IL_004f: stateMachine*/)._0024this.job.failIfCantJoinOrCreateCaravan && !CaravanExitMapUtility.CanExitMapAndJoinOrCreateCaravanNow(((_003CMakeNewToils_003Ec__Iterator0) /*Error near IL_004f: stateMachine*/)._0024this.pawn)); yield return(gotoCell); /*Error: Unable to find new state assignment for yield return*/; }