예제 #1
0
파일: Class1.cs 프로젝트: BionicFrog/Bipods
        public override void VerbTickCE()
        {
            //if (CasterPawn != null)
            //{
            //List<IntVec3> cheese = CasterPawn.CellsAdjacent8WayAndInside().ToList();
            //if (cheese != null)
            //{
            //if (this.CasterPawn.jobs.posture != PawnPosture.Standing)
            //{
            //this.CasterPawn.jobs.posture = PawnPosture.Standing;
            //}
            //foreach (IntVec3 element in cheese)
            //{
            //if (element != null)
            //{

            //if (Verse.GridsUtility.GetCover(element, CasterPawn.Map) != null)
            //{
            //Building ting = Verse.GridsUtility.GetCover(element, CasterPawn.Map) as Building;
            //float flat = ting.def.fillPercent;
            //if (this.CasterPawn.jobs.posture != PawnPosture.Standing)
            //{
            //this.CasterPawn.jobs.posture = PawnPosture.Standing;
            //}

            //Log.Error(Verse.GridsUtility.GetCover(element, CasterPawn.Map).ToString());

            //}
            //else
            //{
            //if (!CasterPawn.pather.MovingNow)
            //{
            //if (BipodComp.BipodSetUp)
            //{

            //this.CasterPawn.jobs.posture = PawnPosture.LayingOnGroundNormal;



            //}


            //}

            //}

            //}

            //}
            //}
            //else
            //{
            //Log.Error("cheesent");
            //}

            //}


            //CasterPawn.cell
            if (BipodComp.Props.Recoilchange == this.VerbPropsCE.recoilAmount)
            {
                Log.Error(this.VerbPropsCE.recoilAmount.ToString());
            }
            if (CasterPawn != null)
            {
                if (BipodComp.BipodSetUp)
                {
                    this.VerbPropsCE.recoilAmount = BipodComp.Props.Recoilchange;
                }
                else
                {
                    this.VerbPropsCE.recoilAmount = BipodComp.InitRecoil;
                }
            }
            if (!Myself.TryGetComp <Biped2>().shoe)
            {
                if (Myself.ParentHolder != Myself.Map)
                {
                    if (CasterPawn != null)
                    {
                        if (daPawn != null)
                        {
                            if (daPawn.pather.Moving)
                            {
                                Myself.TryGetComp <Biped2>().BipodSetUp = false;
                            }

                            if (daPawn.Drafted)
                            {
                                if (Myself.TryGetComp <Biped2>().ShouldSetUpBipodGizmoBool)
                                {
                                    if (!daPawn.pather.Moving)
                                    {
                                        if (!daPawn.pather.MovingNow)
                                        {
                                            ThinkNode       jobGiver            = null;
                                            Pawn_JobTracker jobs                = this.CasterPawn.jobs;
                                            Job             job                 = this.TryMakeBipodJob();
                                            Job             newJob              = job;
                                            JobCondition    lastJobEndCondition = JobCondition.InterruptForced;
                                            Job             curJob              = this.CasterPawn.CurJob;
                                            if (jobs.curJob != job)
                                            {
                                                if (Myself.TryGetComp <Biped2>().BipodSetUp != true)
                                                {
                                                    jobs.StartJob(newJob, lastJobEndCondition, jobGiver, ((curJob != null) ? curJob.def : null) != job.def, true, null, null, false, false);
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }



            bool isAiming = this._isAiming;

            if (isAiming)
            {
                bool flag = !this.ShouldAim;
                if (flag)
                {
                    this.WarmupComplete();
                }
                bool flag2;
                if (!(this.caster is Building_TurretGunCE))
                {
                    Pawn shooterPawn = base.ShooterPawn;
                    Type left;
                    if (shooterPawn == null)
                    {
                        left = null;
                    }
                    else
                    {
                        Pawn_StanceTracker stances = shooterPawn.stances;
                        if (stances == null)
                        {
                            left = null;
                        }
                        else
                        {
                            Stance curStance = stances.curStance;
                            left = ((curStance != null) ? curStance.GetType() : null);
                        }
                    }
                    flag2 = (left != typeof(Stance_Warmup));
                }
                else
                {
                    flag2 = false;
                }
                bool flag3 = flag2;
                if (flag3)
                {
                    this._isAiming = false;
                }
            }
        }
        // Token: 0x0600295E RID: 10590 RVA: 0x00139BAC File Offset: 0x00137FAC
        public override void CompTickRare()
        {
            bool  selected = Find.Selector.SingleSelectedThing == this.parent;
            Thing thing    = GenClosest.ClosestThingReachable(this.parent.Position, this.parent.Map, ThingRequest.ForGroup(ThingRequestGroup.Pawn), PathEndMode.OnCell, TraverseParms.For(TraverseMode.NoPassClosedDoors, Danger.Deadly, false), Props.triggerRadius, x => XenomorphUtil.isInfectablePawn(((Pawn)x)), null, 0, -1, false, RegionType.Set_Passable, false);

            if (thing != null)
            {
                Pawn pawn = (Pawn)thing;
                bool flag = XenomorphUtil.isInfectablePawn(pawn);
#if DEBUG
                if (selected)
                {
                    Log.Message(string.Format("{0} isInfectable?: {1}", pawn.Label, flag));
                }
#endif
                if (flag)
                {
                    this.canHatch = true;
                }
                if (canHatch)
                {
                    float  thingdist      = DistanceBetween(this.parent.Position, pawn.Position);
                    float  thingsize      = pawn.BodySize;
                    float  thingstealth   = thing.GetStatValue(StatDefOf.HuntingStealth);
                    float  thingmovespeed = thing.GetStatValue(StatDefOf.MoveSpeed);
                    Stance thingstance    = pawn.stances.curStance;
#if DEBUG
                    if (selected)
                    {
                        Log.Message(string.Format("distance between {1} @{3} and {2} @ {4}: {0}", DistanceBetween(this.parent.Position, pawn.Position), this.parent.LabelShort, pawn.Label, this.parent.Position, pawn.Position));
                        Log.Message(string.Format("{0} thingsize: {1}, thingstealth: {2}, thingmovespeed: {3}, thingstance: {4}", pawn.Label, thingsize, thingstealth, thingmovespeed, thingstance));
                    }
#endif
                    float hatchon = ((100 / thingdist) * thingsize);
                    if (thingstance.GetType() == typeof(Stance_Mobile))
                    {
                        hatchon = (((100 / thingdist) * thingmovespeed) * thingsize);
                    }
                    float roll = (Rand.RangeInclusive(0, 100) / thingstealth);
#if DEBUG
                    if (selected)
                    {
                        Log.Message(string.Format("{0} hatchon: {1}, roll: {2}, moving?: {3}", pawn.Label, hatchon, roll, thingstance.GetType() == typeof(Stance_Mobile)));
                    }
#endif
                    if (roll < hatchon)
                    {
                        this.willHatch = true;
                    }
                }
            }
#if DEBUG
            if (thing == null)
            {
                if (selected)
                {
                    Log.Message(string.Format("{0} @ {1}, Cant hatch No suitable Host Found", this.parent.Label, this.parent.Position, canHatch));
                }
            }
#endif
        }