Example #1
0
        public virtual void PostPostImpactEffects(Thing hitThing)
        {
            if (hitThing != null && hitThing is Pawn hitPawn && !hitPawn.Dead && !hitPawn.Downed)
            {
                //    Log.Message(string.Format("hit {0}", hitThing));
                if (OriginalPawn != null)
                {
                    //    Log.Message(string.Format("OriginalPawn {0}", OriginalPawn));
                }
                else
                {
                    //    Log.Message(string.Format("OriginalPawn null {0}", OriginalPawn));
                }
                Hediff         hediff  = HediffMaker.MakeHediff(YautjaDefOf.RRY_Hediff_BouncedProjectile, hitPawn);
                Hediff_Bouncer bouncer = (Hediff_Bouncer)hediff;
                bouncer.OriginalPawn       = this.OriginalPawn;
                bouncer.OriginalWeapon     = this.OriginalWeapon;
                bouncer.OriginalProjectile = this.OriginalProjectile;
                bouncer.TimesBounced       = this.timesBounced;
                if (hitPawn != OriginalPawn)
                {
                    hitPawn.health.AddHediff(bouncer);
                }
                else
                {
                    //    Log.Message(string.Format("hitPawn:{0} != OriginalPawn: {1}", hitThing, OriginalPawn));
                    //    Log.Message(string.Format("Making Projectile projectile"));
                    Projectile projectile = (Projectile)ThingMaker.MakeThing(ReturnDef, null);

                    //    Log.Message(string.Format("Target OriginalPawn {0}", OriginalPawn));
                    GenSpawn.Spawn(projectile, base.Position, launcher.Map, 0);
                    //    Log.Message(string.Format("Launch projectile2 {0} at {1}", projectile, OriginalPawn));
                    projectile.Launch(OriginalWeapon, base.Position.ToVector3ShiftedWithAltitude(AltitudeLayer.Projectile), OriginalPawn, OriginalPawn, ProjectileHitFlags.IntendedTarget, OriginalWeapon);
                }
            }
 public virtual void PostPostImpactEffects(Thing hitThing)
 {
     if (hitThing is Pawn hitPawn && !hitPawn.Dead && !hitPawn.Downed)
     {
         Hediff         hediff  = HediffMaker.MakeHediff(YautjaDefOf.RRY_Hediff_BouncedProjectile, hitPawn);
         Hediff_Bouncer bouncer = (Hediff_Bouncer)hediff;
         if (this.timesBounced == 0)
         {
             this.OriginalPawn       = (Pawn)launcher;
             this.OriginalWeapon     = launcher;
             this.OriginalProjectile = this;
         }
         bouncer.OriginalPawn       = this.OriginalPawn;
         bouncer.OriginalWeapon     = this.OriginalWeapon;
         bouncer.OriginalProjectile = this.OriginalProjectile;
         bouncer.TimesBounced       = this.timesBounced;
         if (hitPawn != OriginalPawn)
         {
             hitPawn.health.AddHediff(bouncer);
         }
         else
         {
             Projectile projectile2 = (Projectile)ThingMaker.MakeThing(DefDatabase <ThingDef> .GetNamed("RRY_SmartDisk_Returning"), null);
             GenSpawn.Spawn(projectile2, base.PositionHeld, launcher.Map, 0);
             projectile2.Launch(this, base.PositionHeld.ToVector3(), launcher, launcher, ProjectileHitFlags.IntendedTarget, launcher);
         }
     }