Ejemplo n.º 1
0
 public static void NetUpdateDash(Mod mod, PlayerFX pfx)
 {
     if (Main.netMode == 1 && pfx.player.whoAmI == Main.myPlayer)
     {
         ModPacket message = mod.GetPacket();
         message.Write(1);
         message.Write(Main.myPlayer);
         message.Write(pfx.weaponDash);
         message.Send();
     }
 }
Ejemplo n.º 2
0
        // NETWORK //
        #region NetUpdate

        //These Network Methods are property of FlashKirby, do not copy them without his permission.
        public static void NetUpdateParry(Mod mod, PlayerFX pfx)
        {
            if (Main.netMode == 1 && pfx.player.whoAmI == Main.myPlayer)
            {
                ModPacket message = mod.GetPacket();
                message.Write(2);
                message.Write(Main.myPlayer);
                message.Write(pfx.parryTimeMax);
                message.Write(pfx.parryActive);
                message.Send();
            }
        }
Ejemplo n.º 3
0
        public override bool PreAI(Projectile projectile)
        {
            foreach (Player player in Main.player)
            {
                if (!player.active)
                {
                    continue;
                }
                if (projectile.melee ||
                    projectile.minion ||
                    projectile.npcProj ||
                    projectile.damage <= 0 ||
                    projectile.aiStyle == 7 ||
                    projectile.aiStyle == 13 ||
                    projectile.aiStyle == 15 ||
                    projectile.aiStyle == 19 ||
                    projectile.aiStyle == 20 ||
                    projectile.aiStyle == 26 ||
                    projectile.aiStyle == 84 ||
                    projectile.aiStyle == 85)
                {
                    continue;
                }

                PlayerFX pFX = player.GetModPlayer <PlayerFX>();
                if (!pFX.CanReflectProjectiles)
                {
                    continue;
                }
                Player pOwner = Main.player[projectile.owner];

                // based off Projectile.cs CanReflect()
                bool isHostile =
                    projectile.hostile &&
                    projectile.owner == Main.myPlayer;
                bool isUnfriendlyPlayer = projectile.friendly && !PlayerFX.SameTeam(
                    player, pOwner);
                if (projectile.damage > 0 && (isHostile || isUnfriendlyPlayer))
                {
                    // Can reflect

                    // Is close enoughplayer.GetModPlayer<CheezePlayer>();
                    if (Vector2.Distance(projectile.Center, player.Center) <= shieldDist +
                        Vector2.Distance(default(Vector2), projectile.velocity * 2.5f))
                    {
                        ReflectProjectilePlayer(projectile, player, pFX, true);
                    }
                }
            }
            return(true);
        }
Ejemplo n.º 4
0
        internal static void ReflectProjectilePlayer(Projectile projectile, Player player, PlayerFX modPlayer, bool showEffect)
        {
            // Set ownership
            projectile.hostile  = false;
            projectile.friendly = true;
            projectile.owner    = player.whoAmI;

            // Turn around
            projectile.velocity *= -1f;
            projectile.penetrate = 1;

            // Flip sprite
            if (projectile.Center.X > player.Center.X * 0.5f)
            {
                projectile.direction       = 1;
                projectile.spriteDirection = 1;
            }
            else
            {
                projectile.direction       = -1;
                projectile.spriteDirection = -1;
            }

            // Make last less time
            projectile.timeLeft = projectile.timeLeft / 2;

            // Don't know if this will help but here it is
            projectile.netUpdate = true;

            if (showEffect)
            {
                // Shield visual
                ShieldVisual(projectile, player);
            }
        }
Ejemplo n.º 5
0
        private void LunarAccessoryVisuals(Projectile projectile)
        {
            // Servers and server projectiles ignore projectile otherwise falling star bug
            if (Main.netMode == 2 || projectile.owner == 255)
            {
                return;
            }

            //Ignore npcs and statics
            if (projectile.npcProj || projectile.hostile)
            {
                return;
            }
            if (projectile.position == projectile.oldPosition)
            {
                return;
            }

            PlayerFX p = Main.player[projectile.owner].GetModPlayer <PlayerFX>();

            if (p.lunarMagicVisual && projectile.magic)
            {
                Dust d = Main.dust[Dust.NewDust(
                                       projectile.position, projectile.width, projectile.height,
                                       DustID.PinkFlame,
                                       projectile.velocity.X * 0.2f, projectile.velocity.Y * 0.2f,
                                       0, default(Color), 0.2f
                                       )];
                d.fadeIn    = 1f;
                d.velocity  = d.velocity * 0.7f;
                d.noGravity = true;

                if (Collision.SolidCollision(projectile.position, projectile.width, projectile.height))
                {
                    d.noLight = true;
                }
            }
            if (p.lunarRangeVisual && projectile.ranged)
            {
                Dust d = Main.dust[Dust.NewDust(
                                       projectile.Center - new Vector2(4, 4), 0, 0,
                                       DustID.Vortex
                                       )];
                d.scale     = (float)Math.Log10(projectile.width + projectile.height) * 0.7f;
                d.velocity  = d.velocity * 0.1f + projectile.velocity / 2;
                d.noGravity = true;

                if (Collision.SolidCollision(projectile.position, projectile.width, projectile.height))
                {
                    d.noLight = true;
                }
            }
            if (p.lunarThrowVisual && projectile.thrown)
            {
                if (projectile.whoAmI < 200) // Do not use Beenades.
                {
                    float   speed     = (10f + projectile.velocity.Length()) / 11;
                    Vector2 trailLeft = new Vector2(
                        projectile.velocity.X * 0.2f,
                        projectile.velocity.Y * 0.2f).
                                        RotatedBy(1);
                    Vector2 trailRght = new Vector2(
                        projectile.velocity.X * 0.2f,
                        projectile.velocity.Y * 0.2f).
                                        RotatedBy(-1);

                    bool solid = Collision.SolidCollision(projectile.position, projectile.width, projectile.height);

                    Vector2 pos = projectile.Center - new Vector2(4, 4) + projectile.velocity * 2;
                    Dust    d   = Main.dust[Dust.NewDust(
                                                pos, 0, 0,
                                                75,
                                                0, 0, 0, default(Color), projectile.scale * speed
                                                )];
                    d.velocity  = trailLeft;
                    d.noGravity = true;
                    if (solid)
                    {
                        d.noLight = true;
                    }
                    d = Main.dust[Dust.NewDust(
                                      pos, 0, 0,
                                      75,
                                      0, 0, 0, default(Color), projectile.scale * speed
                                      )];
                    d.velocity  = trailRght;
                    d.noGravity = true;
                    if (solid)
                    {
                        d.noLight = true;
                    }
                }
                else
                {
                    Dust d = Main.dust[Dust.NewDust(
                                           projectile.position, projectile.width, projectile.height,
                                           75,
                                           0, 0, 0, default(Color), 2f
                                           )];
                    d.velocity  = projectile.velocity * 0.6f;
                    d.noGravity = true;
                }
            }
        }