public override void PreApplyDamage(ref DamageInfo dinfo, out bool absorbed)
 {
     base.PreApplyDamage(ref dinfo, out absorbed);
     if (!absorbed)
     {
         stunner.Notify_DamageApplied(dinfo, affectedByEMP: true);
         absorbed = false;
     }
 }
Пример #2
0
        private void BreakShield(DamageInfo dinfo)
        {
            float fTheta;

            if (Active)
            {
                SoundDefOf.EnergyShield_Broken.PlayOneShot(new TargetInfo(parent));
                int num = Mathf.CeilToInt(Props.radius * 2f);
                fTheta = (float)Math.PI * 2f / (float)num;
                for (int i = 0; i < num; i++)
                {
                    MoteMaker.MakeConnectingLine(PosAtIndex(i), PosAtIndex((i + 1) % num), ThingDefOf.Mote_LineEMP, parent.Map, 1.5f);
                }
            }
            dinfo.SetAmount((float)Props.disarmedByEmpForTicks / 30f);
            stunner.Notify_DamageApplied(dinfo, affectedByEMP: true);
            Vector3 PosAtIndex(int index)
            {
                return(new Vector3(Props.radius * Mathf.Cos(fTheta * (float)index) + (float)parent.Position.x, 0f, Props.radius * Mathf.Sin(fTheta * (float)index) + (float)parent.Position.z));
            }
        }