public static IntVec3 getEnterOutLoc(Building_Bunker bunker) { Map map = bunker.Map; IntVec3 center = bunker.Position; int direc = bunker.direc; List <IntVec3> cells = new List <IntVec3>(); for (int i = -2; i < 3; i++) { for (int j = -2; j < 3; j++) { if ((Math.Abs(i) > 1 || Math.Abs(j) > 1) && (Math.Abs(i * j) != 4)) { if ((direc == 0 && j > 0) || (direc == 1 && i > 0) || (direc == 2 && j < 0) || (direc == 3 && i < 0)) { IntVec3 cel = new IntVec3(center.x + i, center.y, center.z + j); if (canOut(cel, map)) { cells.Add(cel); } } } } } return(cells.RandomElement()); }
// Token: 0x060002E6 RID: 742 RVA: 0x0001C3FC File Offset: 0x0001A7FC protected override IEnumerable <Toil> MakeNewToils() { this.FailOnDespawnedOrNull(TargetIndex.A); yield return(Toils_bunker.GotoThing(TargetIndex.A, PathEndMode.ClosestTouch));//Toils_Goto.GotoThing(TargetIndex.A, PathEndMode.ClosestTouch); Toil enter = new Toil(); enter.initAction = delegate { Pawn actor = enter.actor; Building_Bunker pod = (Building_Bunker)actor.CurJob.targetA.Thing; Action action = delegate { if (pod.GetInner().InnerListForReading.Count >= pod.maxCount) { return; } actor.DeSpawn(DestroyMode.Vanish); pod.TryAcceptThing(actor, true); }; action(); }; enter.defaultCompleteMode = ToilCompleteMode.Instant; yield return(enter); yield break; }
private static LocalTargetInfo getBunkerNearCell(Pawn pawn, LocalTargetInfo bunker, TargetIndex ind, PathEndMode peMode) { Map map = bunker.Thing.Map; IntVec3 center = bunker.Cell; Building_Bunker bunk = (Building_Bunker)bunker.Thing; if (bunk == null) { return(null); } int direc = bunk.direc; List <IntVec3> cells = new List <IntVec3>(); for (int i = -2; i < 3; i++) { for (int j = -2; j < 3; j++) { if ((Math.Abs(i) > 1 || Math.Abs(j) > 1) && (Math.Abs(i * j) == 2)) { if ((direc == 0 && j > 0) || (direc == 1 && i > 0) || (direc == 2 && j < 0) || (direc == 3 && i < 0)) { IntVec3 cel = new IntVec3(center.x + i, center.y, center.z + j); if (canOut(cel, map)) { cells.Add(cel); } } } } } return(cells.RandomElement()); }
protected override bool TryCastShot() { verbss = new List <Verb>(); if (bunker == null) { bunker = (Building_Bunker)caster; } foreach (var pawn in bunker.GetInner().InnerListForReading) { if (pawn.TryGetAttackVerb(currentTarget.Thing) != null) { //Log.Warning(pawn.TryGetAttackVerb(this.currentTarget.Thing).TryStartCastOn(this.currentTarget) + "OH" + pawn.Name); verbss.Add(pawn.TryGetAttackVerb(currentTarget.Thing)); } } foreach (var vb in verbss) { // Thing tmpCaster = vb.caster; vb.caster = caster; var unused = vb.TryStartCastOn(currentTarget); //vb.caster = tmpCaster; } return(true); }
public static IntVec3 GetEnterOutLoc(Building_Bunker bunker) { var map = bunker.Map; var center = bunker.Position; var direc = bunker.direc; var cells = new List <IntVec3>(); for (var i = -2; i < 3; i++) { for (var j = -2; j < 3; j++) { if (Math.Abs(i) <= 1 && Math.Abs(j) <= 1 || Math.Abs(i * j) == 4) { continue; } if ((direc != 0 || j <= 0) && (direc != 1 || i <= 0) && (direc != 2 || j >= 0) && (direc != 3 || i >= 0)) { continue; } var cel = new IntVec3(center.x + i, center.y, center.z + j); if (CanOut(cel, map)) { cells.Add(cel); } } } return(cells.RandomElement()); }
protected override bool TryCastShot() { verbss = new List <Verb>(); if (this.bunker == null) { this.bunker = (Building_Bunker)this.caster; } foreach (Pawn pawn in this.bunker.GetInner().InnerListForReading) { if (pawn.TryGetAttackVerb(this.currentTarget.Thing) != null) { //Log.Warning(pawn.TryGetAttackVerb(this.currentTarget.Thing).TryStartCastOn(this.currentTarget) + "OH" + pawn.Name); verbss.Add(pawn.TryGetAttackVerb(this.currentTarget.Thing)); } else { // Log.Warning(pawn.Name+" no weapon"); } } foreach (Verb vb in this.verbss) { // Thing tmpCaster = vb.caster; vb.caster = this.caster; bool fired = vb.TryStartCastOn(this.currentTarget); //vb.caster = tmpCaster; } return(true); }
public void resetVerb() { if (this.bunker == null) { this.bunker = (Building_Bunker)this.caster; } foreach (Pawn pawn in this.bunker.GetInner().InnerListForReading) { if (pawn.TryGetAttackVerb(this.currentTarget.Thing) != null) { //Log.Warning(pawn.TryGetAttackVerb(this.currentTarget.Thing).TryStartCastOn(this.currentTarget) + "OH" + pawn.Name); pawn.TryGetAttackVerb(this.currentTarget.Thing).caster = pawn; } } }
public void ResetVerb() { if (bunker == null) { bunker = (Building_Bunker)caster; } foreach (var pawn in bunker.GetInner().InnerListForReading) { if (pawn.TryGetAttackVerb(currentTarget.Thing) == null) { continue; } //Log.Warning(pawn.TryGetAttackVerb(this.currentTarget.Thing).TryStartCastOn(this.currentTarget) + "OH" + pawn.Name); pawn.TryGetAttackVerb(currentTarget.Thing).caster = pawn; } }
public override void Reset() { base.Reset(); bunker = (Building_Bunker)caster; }
public override void Reset() { base.Reset(); this.bunker = (Building_Bunker)this.caster; }