Exemplo n.º 1
0
 public void Notify_MeleeAttackOn(Thing Target)
 {
     if (Target.Position != actor.Position)
     {
         jitterer.AddOffset(0.5f, (Target.Position - actor.Position).AngleFlat);
     }
     else
     {
         if (!(Target.DrawPos != actor.DrawPos))
         {
             return;
         }
         jitterer.AddOffset(0.25f, (Target.DrawPos - actor.DrawPos).AngleFlat());
     }
 }
Exemplo n.º 2
0
        protected override IEnumerable <Toil> MakeNewToils()
        {
            JitterHandler jitterer = fieldJitterer.GetValue(pawn.Drawer) as JitterHandler;

            yield return(Toils_Goto.GotoCell(TargetIndex.B, PathEndMode.OnCell));

            Toil practice = Toils_General.Wait(2000);

            practice.socialMode = RandomSocialMode.Normal;
            practice.tickAction = () =>
            {
                if (pawn.IsHashIntervalTick(200))
                {
                    pawn.skills.Learn(SkillDefOf.Melee, 5f);
                    if (jitterer != null)
                    {
                        jitterer.AddOffset(Rand.Range(0.25f, 0.75f), pawn.Rotation.AsAngle);
                        if (Rand.Value > 0.7f)
                        {
                            practice.handlingFacing = true;
                            pawn.Rotation           = Rot4.Random;
                        }
                    }
                }
            };

            yield return(practice);

            yield break;
        }
        protected override IEnumerable <Toil> MakeNewToils()
        {
            if (fieldJitterer == null)
            {
                fieldJitterer = typeof(Pawn_DrawTracker).GetFields(BindingFlags.NonPublic | BindingFlags.Instance).First(x => x.Name == "jitterer");
            }

            JitterHandler jitterer = fieldJitterer.GetValue(pawn.Drawer) as JitterHandler;

            yield return(Toils_Goto.GotoCell(TargetIndex.B, PathEndMode.OnCell));

            Toil practice = Toils_General.Wait(2000);

            practice.socialMode = RandomSocialMode.Normal;
            practice.FailOn(() => this.TargetB.Cell.IsForbidden(this.pawn));
            practice.tickAction = () =>
            {
                if (pawn.IsHashIntervalTick(200))
                {
                    pawn.skills.Learn(SkillDefOf.Melee, 5f);
                    if (jitterer != null)
                    {
                        jitterer.AddOffset(Rand.Range(0.25f, 0.75f), pawn.Rotation.AsAngle);
                        if (Rand.Value > 0.7f)
                        {
                            practice.handlingFacing = true;
                            pawn.Rotation           = Rot4.Random;
                        }
                    }
                }
            };

            yield return(practice);

            yield break;
        }