protected override IEnumerable <Toil> MakeNewToils() { this.FailOnDespawnedOrNull(TargetIndex.A); yield return(Toils_Combat.GotoCastPosition(TargetIndex.A, false)); /*Error: Unable to find new state assignment for yield return*/; }
public bool MoveNext() { uint num = (uint)this.$PC; this.$PC = -1; switch (num) { case 0u: this.FailOnDespawnedOrNull(TargetIndex.A); this.$current = Toils_Combat.GotoCastPosition(TargetIndex.A, false, 1f); if (!this.$disposing) { this.$PC = 1; } return(true); case 1u: this.$current = Toils_Combat.CastVerb(TargetIndex.A, true); if (!this.$disposing) { this.$PC = 2; } return(true); case 2u: this.$PC = -1; break; } return(false); }
protected override IEnumerable <Toil> MakeNewToils() { this.FailOnDespawnedOrNull(TargetIndex.A); yield return(Toils_Combat.GotoCastPosition(TargetIndex.A, false)); yield return(Toils_Combat.CastVerb(TargetIndex.A, true)); }
protected override IEnumerable <Toil> MakeNewToils() { this.FailOnDespawnedOrNull(TargetIndex.A); yield return(Toils_General.StopDead()); yield return(Toils_Combat.CastVerb(TargetIndex.A)); }
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; }
protected override IEnumerable <Toil> MakeNewToils() { this.EndOnDespawnedOrNull(TargetIndex.A, JobCondition.Succeeded); yield return(Toils_Combat.TrySetJobToUseAttackVerb()); /*Error: Unable to find new state assignment for yield return*/; }
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() { this.FailOnDespawnedOrNull(TargetIndex.A); Ability ability = ((Verb_CastAbility)job.verbToUse).ability; yield return(Toils_Goto.GotoThing(TargetIndex.A, PathEndMode.Touch).FailOn(() => !ability.CanApplyOn(job.targetA))); yield return(Toils_Combat.CastVerb(TargetIndex.A, TargetIndex.B, canHitNonTargetPawns: false)); }
public bool MoveNext() { uint num = (uint)this.$PC; this.$PC = -1; switch (num) { case 0u: this.EndOnDespawnedOrNull(TargetIndex.A, JobCondition.Succeeded); this.$current = Toils_Combat.TrySetJobToUseAttackVerb(TargetIndex.A); if (!this.$disposing) { this.$PC = 1; } return(true); case 1u: gotoCastPos = Toils_Combat.GotoCastPosition(TargetIndex.A, false, 0.95f); this.$current = gotoCastPos; if (!this.$disposing) { this.$PC = 2; } return(true); case 2u: jumpIfCannotHit = Toils_Jump.JumpIfTargetNotHittable(TargetIndex.A, gotoCastPos); this.$current = jumpIfCannotHit; if (!this.$disposing) { this.$PC = 3; } return(true); case 3u: this.$current = Toils_Combat.CastVerb(TargetIndex.A, true); if (!this.$disposing) { this.$PC = 4; } return(true); case 4u: this.$current = Toils_Jump.Jump(jumpIfCannotHit); if (!this.$disposing) { this.$PC = 5; } return(true); case 5u: this.$PC = -1; break; } return(false); }
protected override IEnumerable <Toil> MakeNewToils() { this.FailOnDespawnedOrNull(TargetIndex.A); Toil toil = new Toil(); toil.initAction = delegate { pawn.pather.StopDead(); }; toil.defaultCompleteMode = ToilCompleteMode.Instant; yield return(toil); yield return(Toils_Combat.CastVerb(TargetIndex.A, TargetIndex.B, canHitNonTargetPawns: false)); }
protected override IEnumerable <Toil> MakeNewToils() { this.EndOnDespawnedOrNull(TargetIndex.A, JobCondition.Succeeded); yield return(Toils_Combat.TrySetJobToUseAttackVerb()); Toil gotoCastPos = Toils_Combat.GotoCastPosition(TargetIndex.A, false); yield return(gotoCastPos); Toil jumpIfCannotHit = Toils_Jump.JumpIfTargetNotHittable(TargetIndex.A, gotoCastPos); yield return(jumpIfCannotHit); yield return(Toils_Combat.CastVerb(TargetIndex.A, true)); yield return(Toils_Jump.Jump(jumpIfCannotHit)); }
protected override IEnumerable <Toil> MakeNewToils() { this.EndOnDespawnedOrNull(VictimInd, JobCondition.Succeeded); yield return(Toils_Combat.TrySetJobToUseAttackVerb(VictimInd)); Toil gotoCastPos = Toils_Combat.GotoCastPosition(VictimInd, maxRangeFactor: 0.95f); // maxRangeFactor to prevent dithering yield return(gotoCastPos); Toil jumpIfCannotHit = Toils_Jump.JumpIfTargetNotHittable(VictimInd, gotoCastPos); yield return(jumpIfCannotHit); yield return(Toils_Combat.CastVerb(VictimInd)); yield return(Toils_Jump.Jump(jumpIfCannotHit)); }
protected override IEnumerable <Toil> MakeNewToils() { this.FailOnDespawnedOrNull(TargetIndex.A); Toil toil = new Toil(); toil.initAction = delegate { pawn.pather.StopDead(); }; toil.defaultCompleteMode = ToilCompleteMode.Instant; yield return(toil); Toil toil2 = Toils_Combat.CastVerb(TargetIndex.A, TargetIndex.B, canHitNonTargetPawns: false); if (job.ability != null && job.ability.def.showCastingProgressBar && job.verbToUse != null) { toil2.WithProgressBar(TargetIndex.A, () => job.verbToUse.WarmupProgress); } yield return(toil2); }
protected override IEnumerable <Toil> MakeNewToils() { yield return(Toils_Misc.ThrowColonistAttackingMote(TargetIndex.A)); yield return(Toils_Combat.FollowAndMeleeAttack(TargetIndex.A, delegate { Thing thing = this.$this.job.GetTarget(TargetIndex.A).Thing; if (this.$this.pawn.meleeVerbs.TryMeleeAttack(thing, this.$this.job.verbToUse, false)) { if (this.$this.pawn.CurJob == null || this.$this.pawn.jobs.curDriver != this.$this) { return; } this.$this.numMeleeAttacksMade++; if (this.$this.numMeleeAttacksMade >= this.$this.job.maxNumMeleeAttacks) { this.$this.EndJobWith(JobCondition.Succeeded); return; } } }).FailOnDespawnedOrNull(TargetIndex.A)); }
// 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; }
protected override IEnumerable <Toil> MakeNewToils() { yield return(Toils_Misc.ThrowColonistAttackingMote(TargetIndex.A)); Toil init = new Toil(); init.initAction = delegate { Pawn pawn2 = base.TargetThingA as Pawn; if (pawn2 != null) { startedIncapacitated = pawn2.Downed; } pawn.pather.StopDead(); }; init.tickAction = delegate { if (!base.TargetA.IsValid) { EndJobWith(JobCondition.Succeeded); } else { if (base.TargetA.HasThing) { Pawn pawn = base.TargetA.Thing as Pawn; if (base.TargetA.Thing.Destroyed || (pawn != null && !startedIncapacitated && pawn.Downed) || (pawn != null && pawn.IsInvisible())) { EndJobWith(JobCondition.Succeeded); return; } } if (numAttacksMade >= job.maxNumStaticAttacks && !base.pawn.stances.FullBodyBusy) { EndJobWith(JobCondition.Succeeded); } else if (base.pawn.TryStartAttack(base.TargetA)) { numAttacksMade++; } else if (!base.pawn.stances.FullBodyBusy) { Verb verb = base.pawn.TryGetAttackVerb(base.TargetA.Thing, !base.pawn.IsColonist); if (job.endIfCantShootTargetFromCurPos && (verb == null || !verb.CanHitTargetFrom(base.pawn.Position, base.TargetA))) { EndJobWith(JobCondition.Incompletable); } else if (job.endIfCantShootInMelee) { if (verb == null) { EndJobWith(JobCondition.Incompletable); } else { float num = verb.verbProps.EffectiveMinRange(base.TargetA, base.pawn); if ((float)base.pawn.Position.DistanceToSquared(base.TargetA.Cell) < num * num && base.pawn.Position.AdjacentTo8WayOrInside(base.TargetA.Cell)) { EndJobWith(JobCondition.Incompletable); } } } } } }; init.defaultCompleteMode = ToilCompleteMode.Never; init.activeSkill = () => Toils_Combat.GetActiveSkillForToil(init); yield return(init); }