protected override IEnumerable <Toil> MakeNewToils() { yield return(Toils_General.DoAtomic(delegate { Pawn pawn = this.job.targetA.Thing as Pawn; if (pawn != null && pawn.Downed && this.pawn.mindState.duty != null && this.pawn.mindState.duty.attackDownedIfStarving && this.pawn.Starving()) { this.job.killIncappedTarget = true; } })); yield return(Toils_Misc.ThrowColonistAttackingMote(TargetIndex.A)); yield return(Toils_Combat.FollowAndMeleeAttack(TargetIndex.A, delegate { Thing thing = this.job.GetTarget(TargetIndex.A).Thing; if (this.pawn.meleeVerbs.TryMeleeAttack(thing, this.job.verbToUse, false)) { if (this.pawn.CurJob == null || this.pawn.jobs.curDriver != this) { return; } this.numMeleeAttacksMade++; if (this.numMeleeAttacksMade >= this.job.maxNumMeleeAttacks) { base.EndJobWith(JobCondition.Succeeded); return; } } }).FailOnDespawnedOrNull(TargetIndex.A)); yield break; }
public bool MoveNext() { uint num = (uint)this.$PC; this.$PC = -1; switch (num) { case 0u: this.$current = Toils_General.DoAtomic(delegate { Pawn pawn = this.job.targetA.Thing as Pawn; if (pawn != null && pawn.Downed && this.pawn.mindState.duty != null && this.pawn.mindState.duty.attackDownedIfStarving && this.pawn.Starving()) { this.job.killIncappedTarget = true; } }); if (!this.$disposing) { this.$PC = 1; } return(true); case 1u: this.$current = Toils_Misc.ThrowColonistAttackingMote(TargetIndex.A); if (!this.$disposing) { this.$PC = 2; } return(true); case 2u: this.$current = Toils_Combat.FollowAndMeleeAttack(TargetIndex.A, delegate { Thing thing = this.job.GetTarget(TargetIndex.A).Thing; if (this.pawn.meleeVerbs.TryMeleeAttack(thing, this.job.verbToUse, false)) { if (this.pawn.CurJob == null || this.pawn.jobs.curDriver != this) { return; } this.numMeleeAttacksMade++; if (this.numMeleeAttacksMade >= this.job.maxNumMeleeAttacks) { base.EndJobWith(JobCondition.Succeeded); return; } } }).FailOnDespawnedOrNull(TargetIndex.A); if (!this.$disposing) { this.$PC = 3; } return(true); case 3u: this.$PC = -1; break; } return(false); }
protected override IEnumerable <Toil> MakeNewToils() { yield return(Toils_General.DoAtomic(delegate { Pawn pawn = job.targetA.Thing as Pawn; if (pawn != null && pawn.Downed && base.pawn.mindState.duty != null && base.pawn.mindState.duty.attackDownedIfStarving && base.pawn.Starving()) { job.killIncappedTarget = true; } })); yield return(Toils_Misc.ThrowColonistAttackingMote(TargetIndex.A)); yield return(Toils_Combat.FollowAndMeleeAttack(TargetIndex.A, delegate { Thing thing = job.GetTarget(TargetIndex.A).Thing; Pawn p; if (job.reactingToMeleeThreat && (p = thing as Pawn) != null && !p.Awake()) { EndJobWith(JobCondition.InterruptForced); } else if (pawn.meleeVerbs.TryMeleeAttack(thing, job.verbToUse) && pawn.CurJob != null && pawn.jobs.curDriver == this) { numMeleeAttacksMade++; if (numMeleeAttacksMade >= job.maxNumMeleeAttacks) { EndJobWith(JobCondition.Succeeded); } } }).FailOnDespawnedOrNull(TargetIndex.A)); }
protected override IEnumerable <Toil> MakeNewToils() { yield return(Toils_General.DoAtomic(delegate { Pawn pawn = ((_003CMakeNewToils_003Ec__Iterator0) /*Error near IL_002a: stateMachine*/)._0024this.job.targetA.Thing as Pawn; if (pawn != null && pawn.Downed && ((_003CMakeNewToils_003Ec__Iterator0) /*Error near IL_002a: stateMachine*/)._0024this.pawn.mindState.duty != null && ((_003CMakeNewToils_003Ec__Iterator0) /*Error near IL_002a: stateMachine*/)._0024this.pawn.mindState.duty.attackDownedIfStarving && ((_003CMakeNewToils_003Ec__Iterator0) /*Error near IL_002a: stateMachine*/)._0024this.pawn.Starving()) { ((_003CMakeNewToils_003Ec__Iterator0) /*Error near IL_002a: stateMachine*/)._0024this.job.killIncappedTarget = true; } })); /*Error: Unable to find new state assignment for yield return*/; }
// Token: 0x06000054 RID: 84 RVA: 0x0000427A File Offset: 0x0000247A protected override IEnumerable <Toil> MakeNewToils() { yield return(Toils_General.DoAtomic(delegate { Pawn pawn = this.job.targetA.Thing as Pawn; bool flag = pawn != null && pawn.Downed && this.pawn.mindState.duty != null && this.pawn.mindState.duty.attackDownedIfStarving && this.pawn.Starving(); if (flag) { this.job.killIncappedTarget = true; } })); yield return(Toils_Combat.TrySetJobToUseAttackVerb(TargetIndex.A)); yield return(Toils_Misc.ThrowColonistAttackingMote(TargetIndex.A)); yield return(Toils_Combat.GotoCastPosition(TargetIndex.A, false, 1f)); yield return(Toils_Combat.CastVerb(TargetIndex.A, true)); yield break; }