Ejemplo n.º 1
0
        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());
        }
Ejemplo n.º 2
0
        // 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;
        }
Ejemplo n.º 3
0
        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());
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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());
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
 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;
         }
     }
 }
Ejemplo n.º 8
0
        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;
            }
        }
Ejemplo n.º 9
0
 public override void Reset()
 {
     base.Reset();
     bunker = (Building_Bunker)caster;
 }
Ejemplo n.º 10
0
 public override void Reset()
 {
     base.Reset();
     this.bunker = (Building_Bunker)this.caster;
 }