Beispiel #1
0
 void ZapJellies()
 {
     UpdateFrame(0.15f, 10, 13);
     if (attackCounter > 20)
     {
         for (int j = 0; j < Main.npc.Length; j++)
         {
             if (Main.npc[j].type == mod.NPCType("MoonJellyMedium") && Main.npc[j].active && attackCounter % 5 == 0)
             {
                 NPC     other      = Main.npc[j];
                 Vector2 direction9 = other.Center - npc.Center;
                 int     distance   = (int)Math.Sqrt((direction9.X * direction9.X) + (direction9.Y * direction9.Y));
                 direction9.Normalize();
                 if (distance < 1000)
                 {
                     if (Main.netMode != NetmodeID.MultiplayerClient)
                     {
                         if (attackCounter < 60)
                         {
                             int proj = Projectile.NewProjectile(npc.Center.X, npc.Center.Y, (float)direction9.X * 15, (float)direction9.Y * 15, mod.ProjectileType("MoonPredictorTrail"), 0, 0);
                             Main.projectile[proj].timeLeft = (int)(distance / 15);
                         }
                         else
                         {
                             int proj = Projectile.NewProjectile(npc.Center.X, npc.Center.Y, (float)direction9.X * 30, (float)direction9.Y * 30, mod.ProjectileType("MoonLightning"), 30, 0);
                             Main.projectile[proj].timeLeft = (int)(distance / 30);
                             DustHelper.DrawElectricity(npc.Center, other.Center, 226, 0.3f, 30, default, 0.15f);
Beispiel #2
0
        public override bool Shoot(Player player, ref Vector2 position, ref float speedX, ref float speedY, ref int type, ref int damage, ref float knockBack)
        {
            int shardType;

            shardType = Main.rand.Next(new int[] { ModContent.ProjectileType <CobaltStaffProj>(), ModContent.ProjectileType <CobaltStaffProj1>() });

            //set the spawn position to the first solid tile in the direction of the cursor, or the cursor, whichever is closer
            float[] scanarray = new float[3];
            float   dist      = player.Distance(Main.MouseWorld);                                        //set the maximum distance to the distance between the player and the cursor

            Collision.LaserScan(player.Center, player.DirectionTo(Main.MouseWorld), 0, dist, scanarray); //scan to find the first solid tile in the direction of the cursor
            dist = 0;
            foreach (float array in scanarray)                                                           //make the distance the average of the samples
            {
                dist += array / (scanarray.Length);
            }

            Vector2 spawnpos = player.Center + player.DirectionTo(Main.MouseWorld) * dist;

            Projectile p = Projectile.NewProjectileDirect(spawnpos + Main.rand.NextVector2Square(-20, 20), Main.rand.NextVector2Circular(10, 10), shardType, damage, knockBack, player.whoAmI);

            p.scale     = Main.rand.NextFloat(.4f, 1.1f);
            p.netUpdate = true;
            DustHelper.DrawDiamond(spawnpos, 48, 1.5f, 1.2f, 1f);
            return(false);
        }
Beispiel #3
0
        public override bool OnTileCollide(Vector2 oldVelocity)
        {
            if (projectile.timeLeft > 800)             //smells like boilerplate. IDG-it kinda is
            {
                Point16 point = new Point16((int)((projectile.Center.X + (projectile.width / 3f) * projectile.spriteDirection) / 16), Math.Min(Main.maxTilesY, (int)((projectile.Center.Y) / 16) + 1));
                Tile    tile  = Framing.GetTileSafely(point.X, point.Y);

                //hard coded dust ids in worldgen.cs, still ew
                //Tile hit!
                if (tile != null && WorldGen.InWorld(point.X, point.Y, 1) && tile.active() && Main.tileSolid[tile.type])
                {
                    projectile.timeLeft    = 20;
                    projectile.ai[0]       = tile.type;
                    projectile.tileCollide = false;
                    projectile.position.Y += 16;

                    int dusttype = 0;

                    DustHelper.TileDust(tile, ref dusttype);

                    for (float num315 = 0.50f; num315 < 3; num315 += 0.25f)
                    {
                        float   angle    = MathHelper.ToRadians(-Main.rand.Next(70, 130));
                        Vector2 vecangle = new Vector2((float)Math.Cos(angle), (float)Math.Sin(angle)) * num315 * 3f;
                        int     num316   = Dust.NewDust(new Vector2(projectile.position.X, projectile.position.Y), projectile.width, (int)(projectile.height / 2f), dusttype, 0f, 0f, 50, default, (4f - num315) / 3f);
Beispiel #4
0
        protected virtual void Attack()
        {
            npc.velocity = Vector2.Zero;
            if (npc.frameCounter < 1)
            {
                shot = false;
            }

            if (npc.frameCounter > 2 && !shot)
            {
                int glyphnum = Main.rand.Next(10);
                DustHelper.DrawDustImage(npc.Center, 6, 0.05f, "SpiritMod/Effects/Glyphs/Glyph" + glyphnum, 1.5f);
                int proj = Projectile.NewProjectile(npc.Center, npc.velocity, ModContent.ProjectileType <AutomataCreeperProj>(), Main.expertMode ? 40 : 60, 4, npc.target, npc.ai[0], npc.ai[1]);
                if (Main.projectile[proj].modProjectile is AutomataCreeperProj modproj)
                {
                    modproj.moveDirection = moveDirection;
                }

                shot = true;

                if (Main.netMode == NetmodeID.MultiplayerClient)
                {
                    NetMessage.SendData(MessageID.SyncNPC, -1, -1, null, npc.whoAmI);
                    NetMessage.SendData(MessageID.SyncProjectile, -1, -1, null, proj);
                }
            }
        }
Beispiel #5
0
        public override void Kill(int timeLeft)
        {
            int sizeX = 120;
            int sizeY = 45;

            projectile.hostile     = false;
            projectile.tileCollide = false;
            projectile.alpha       = 255;
            projectile.position.X  = projectile.position.X + (float)(projectile.width / 2);
            projectile.position.Y  = projectile.position.Y + (float)(projectile.height / 2);
            projectile.width       = sizeX;
            projectile.height      = sizeY;
            projectile.position.X  = projectile.position.X - (float)(projectile.width / 2);
            projectile.position.Y  = projectile.position.Y - (float)(projectile.height / 2);
            projectile.Damage();
            Main.projectileIdentity[projectile.owner, projectile.identity] = -1;
            projectile.position.X = projectile.position.X + (float)(projectile.width / 2);
            projectile.position.Y = projectile.position.Y + (float)(projectile.height / 2);
            projectile.width      = (int)((float)sizeX / 5.8f);
            projectile.height     = (int)((float)sizeY / 5.8f);
            projectile.position.X = projectile.position.X - (float)(projectile.width / 2);
            projectile.position.Y = projectile.position.Y - (float)(projectile.height / 2);

            DustHelper.DrawDustImage(projectile.position, ModContent.DustType <MarbleDust>(), 0.075f, "SpiritMod/Effects/DustImages/Boom", 1.66f);
        }
Beispiel #6
0
        public override void PostUpdate()
        {
            //TidePoints = EnemyKills / 2;
            if (TidePoints >= 100)
            {
                TidePoints = 0;
                EnemyKills = 0;
                TideWaveIncrease();
                SendPacket(mod);
            }

            if (TheTide && TideWave == 5)
            {
                if (!NPC.AnyNPCs(ModContent.NPCType <Rylheian>()))
                {
                    Player player = Main.rand.Next(Main.player.Where(x => x.active && !x.dead && x.ZoneBeach).ToArray());

                    NPC npc = Main.npc[NPC.NewNPC((int)player.Center.X, (int)player.Center.Y - 400, ModContent.NPCType <Rylheian>(), 0, 2, 1, 0, 0, player.whoAmI)];
                    DustHelper.DrawDiamond(new Vector2(npc.Center.X, npc.Center.Y), 173, 8);
                    DustHelper.DrawTriangle(new Vector2(npc.Center.X, npc.Center.Y), 173, 8);
                    Main.PlaySound(SoundID.Zombie, npc.Center, 89);

                    if (Main.netMode != NetmodeID.SinglePlayer)
                    {
                        NetMessage.SendData(MessageID.SyncNPC, -1, -1, null, npc.whoAmI);
                    }
                }
            }
        }
Beispiel #7
0
        public void flowerAttack(Player player)
        {
            bool expertMode = Main.expertMode;
            int  damage     = expertMode ? 11 : 16;

            if (npc.ai[0] % 15 == 0)
            {
                Main.PlaySound(new LegacySoundStyle(SoundID.Item, 104).WithPitchVariance(0.2f), npc.Center);
                if (Main.netMode != NetmodeID.MultiplayerClient)
                {
                    int p = Projectile.NewProjectile(npc.Center.X + Main.rand.Next(-60, 60), npc.Center.Y + Main.rand.Next(-60, 60), Main.rand.NextFloat(-5.3f, 5.3f), Main.rand.NextFloat(-5.3f, 5.3f), ModContent.ProjectileType <ReachBossFlower>(), damage, 1, Main.myPlayer, 0, 0);
                    Main.projectile[p].scale = Main.rand.NextFloat(.6f, .8f);
                    DustHelper.DrawStar(Main.projectile[p].Center, 272, pointAmount: 6, mainSize: .9425f, dustDensity: 2, dustSize: .5f, pointDepthMult: 0.3f, noGravity: true);
                    if (Main.projectile[p].velocity == Vector2.Zero)
                    {
                        Main.projectile[p].velocity = new Vector2(2.25f, 2.25f);
                    }
                    if (Main.projectile[p].velocity.X <2.25f && Math.Sign(Main.projectile[p].velocity.X) == Math.Sign(1) || Main.projectile[p].velocity.X> -2.25f && Math.Sign(Main.projectile[p].velocity.X) == Math.Sign(-1))
                    {
                        Main.projectile[p].velocity.X *= 2.15f;
                    }
                    Main.projectile[p].netUpdate = true;
                }
            }
        }
Beispiel #8
0
 public override void AI()
 {
     if (!initialized)
     {
         initialPos  = projectile.Center;
         initialized = true;
         throwLine   = Vector2.One.RotatedBy(Main.rand.NextFloat(6.28f));
     }
     if (projectile.timeLeft < 585 && projectile.timeLeft % 3 == 0 && projectile.timeLeft > 500)
     {
         Projectile.NewProjectile(projectile.Center, throwLine * (dist / 20), mod.ProjectileType("MoonPredictorTrail"), 0, 0);
     }
     if (projectile.timeLeft <= 500 && projectile.timeLeft > 464)
     {
         radians            += 0.0872664626f;
         projectile.velocity = (float)Math.Sin((double)radians) * (dist / 36) * throwLine;
     }
     if (projectile.timeLeft <= 500)
     {
         projectile.hostile = true;
         Vector2 distance     = initialPos - projectile.Center;
         float   electricDist = distance.Length();
         distance.Normalize();
         if (projectile.timeLeft % 4 == 0)
         {
             DustHelper.DrawElectricity(projectile.Center, initialPos, 226, 0.6f, 30, default, 0.3f);
Beispiel #9
0
        public override void AI()
        {
            if (projectile.velocity.X != 0 || projectile.velocity.Y != 0)
            {
                DustHelper.CreateDust(projectile.Center, 64, Color.White, Vector2.Zero, scale: 1.3f, noGrav: true);
            }

            if (projectile.owner == Main.myPlayer)
            {
                if (_timer > 0)
                {
                    _timer--;
                }
                else
                {
                    _timer = 180;
                    float speed = Main.rand.NextFloat(4, 8);
                    float dir   = Main.rand.NextFloat(MathHelper.TwoPi);

                    projectile.velocity += dir.ToRotationVector2() * speed;
                    _timerr              = 30;
                    projectile.netUpdate = true;
                }

                if (_timerr > 0)
                {
                    _timerr--;
                }
                else
                {
                    projectile.velocity  = new Vector2(0, 0);
                    projectile.netUpdate = true;
                }
            }
        }
Beispiel #10
0
        public override void AI()
        {
            projectile.VelocityToRotation();

            for (int i = 0; i < 5; i++)
            {
                DustHelper.CreateDust(projectile.Center, 75, Color.White,
                                      -projectile.velocity.ToRotation().ToRotationVector2() * Main.rand.NextFloat(2, 8), noGrav: true,
                                      shader: GameShaders.Armor.GetSecondaryShader(102, Main.LocalPlayer));
            }

            if (--t == 0 && !a)
            {
                projectile.velocity *= 1.3f;
                a = true;
            }

            if (projectile.alpha > 0)
            {
                projectile.alpha -= 255 / 25;
            }

            if (++projectile.frameCounter >= 5)
            {
                projectile.frameCounter = 0;
                if (++projectile.frame >= 4)
                {
                    projectile.frame = 0;
                }
            }
        }
        public override void OnHitNPC(NPC target, int damage, float knockback, bool crit)
        {
            Vector2 mouse  = new Vector2(Main.mouseX, Main.mouseY) + Main.screenPosition;
            int     amount = Main.rand.Next(1, 3);

            for (int i = 0; i < amount; ++i)
            {
                Vector2 pos = new Vector2(mouse.X + target.width * 0.5f + Main.rand.Next(-35, 36), mouse.Y - 220f);
                pos.X  = (pos.X * 10f + mouse.X) / 11f - 350;
                pos.Y -= Main.rand.Next(-20, 20);
                float spX = mouse.X + target.width * 0.5f + Main.rand.Next(-100, 101) - mouse.X;
                float spY = mouse.Y - pos.Y;
                if (spY < 0f)
                {
                    spY *= -1f;
                }
                if (spY < 20f)
                {
                    spY = 20f;
                }

                float length = (float)Math.Sqrt((double)(spX * spX + spY * spY));
                length = 12 / length;
                spX   *= length;
                spY   *= length;
                spX    = spX + (float)Main.rand.Next(-40, 41) * 0.02f;
                spY    = spY + (float)Main.rand.Next(-40, 41) * 0.12f;
                spX   *= (float)Main.rand.Next(75, 150) * 0.006f;
                pos.X += (float)Main.rand.Next(-20, 21);
                DustHelper.DrawCircle(new Vector2(pos.X, pos.Y), 222, 1, 1f, 1.35f, .85f, .85f);

                Projectile.NewProjectile(pos.X, pos.Y, spX * projectile.direction, spY, ModContent.ProjectileType <MorningtideProjectile2>(), projectile.damage / 3 * 2, 2, Main.player[projectile.owner].whoAmI);
            }
        }
Beispiel #12
0
        private void dust(int rnd)
        {
            Vector2 position = new Vector2(projectile.Center.X + Main.rand.NextFloat(-rnd, rnd),
                                           projectile.Center.Y + Main.rand.NextFloat(-rnd, rnd));

            DustHelper.CreateDust(position, 156, Color.White, Vector2.Zero, 0.8f, noGrav: true);
        }
Beispiel #13
0
 private void RunTeleport(Player player, Vector2 pos)
 {
     player.Teleport(pos, 2, 0);
     player.velocity = Vector2.Zero;
     Main.PlaySound(SoundID.Item6, player.Center);
     DustHelper.DrawStar(player.Center, DustID.GoldCoin, pointAmount: 4, mainSize: 1.7425f, dustDensity: 6, dustSize: .65f, pointDepthMult: 3.6f, noGravity: true);
 }
Beispiel #14
0
        public override void AI()
        {
            Lighting.AddLight(projectile.Center, Main.DiscoColor.ToVector3() * 0.5f);
            for (int i = 0; i < 5; i++)
            {
                DustHelper.CreateDust(projectile.Center, dust, Main.DiscoColor, noGrav: true);
            }
            Vector2 a = projectile.velocity.ToRotation().ToRotationVector2();
            Vector2 b = new Vector2(a.Y, -a.X);

            projectile.timeLeft++;

            if (Main.player[projectile.owner].whoAmI == Main.myPlayer)
            {
                if (taken && Vector2.Distance(projectile.Center, Main.MouseWorld) > 70f)
                {
                    projectile.velocity = VectorHelper.FromTo(projectile.Center, Main.MouseWorld, 50f) / 4;
                }
                if (!Main.player[projectile.owner].controlUseItem)
                {
                    taken = false;
                }
            }
            projectile.VelocityToRotation();
        }
Beispiel #15
0
        public override bool Shoot(Player player, ref Vector2 position, ref float speedX, ref float speedY, ref int type, ref int damage, ref float knockBack)
		{
			if (type == ProjectileID.WoodenArrowFriendly) {
				type = ModContent.ProjectileType<ShadowmoorProjectile>();
                damage = (int)(damage * .75f);
            }
			else
            {
                float angle = Main.rand.NextFloat(MathHelper.PiOver4, -MathHelper.Pi - MathHelper.PiOver4);
                Vector2 spawnPlace = Vector2.Normalize(new Vector2((float)Math.Cos(angle), (float)Math.Sin(angle))) * 20f;
                if (Collision.CanHit(position, 0, 0, position + spawnPlace, 0, 0))
                {
                    position += spawnPlace;
                }

                Vector2 velocity = Vector2.Normalize(Main.MouseWorld - position) * item.shootSpeed;
                DustHelper.DrawDiamond(new Vector2(position.X, position.Y), 173, 2, .8f, .75f);
                int p1 = Projectile.NewProjectile(position.X, position.Y, velocity.X, velocity.Y, ModContent.ProjectileType<ShadowmoorProjectile>(), damage, knockBack, 0, 0.0f, 0.0f);

            }
            for (int I = 0; I < 4; I++)
            {
                float angle = Main.rand.NextFloat(MathHelper.PiOver4, -MathHelper.Pi - MathHelper.PiOver4);
                Vector2 spawnPlace = Vector2.Normalize(new Vector2((float)Math.Cos(angle), (float)Math.Sin(angle))) * 20f;
                if (Collision.CanHit(position, 0, 0, position + spawnPlace, 0, 0))
                {
                    position += spawnPlace;
                }

                Vector2 velocity = Vector2.Normalize(Main.MouseWorld - position) * item.shootSpeed;
                DustHelper.DrawDiamond(new Vector2(position.X, position.Y), 173, 2, .8f, .75f);
                int p = Projectile.NewProjectile(position.X, position.Y, velocity.X, velocity.Y, type, damage, knockBack, 0, 0.0f, 0.0f);
            }
			return false;
		}
 public override void Kill(int timeLeft)
 {
     DustHelper.DrawStar(projectile.Center, dustType, pointAmount: 5, mainSize: 1.2f * ScaleMult, dustDensity: 0.5f, pointDepthMult: 0.3f);
     Main.PlaySound(SoundID.Item10, projectile.Center);
     for (int k = 0; k < 35; k++)
     {
         Dust.NewDustPerfect(projectile.Center, dustType, Vector2.One.RotatedByRandom(6.28f) * (Main.rand.NextFloat(0.25f, 1.2f) * ScaleMult), 0, default, 1.5f);
Beispiel #17
0
 public override void AI()
 {
     for (int i = 0; i < 8; i++)
     {
         DustHelper.CreateDust(new Vector2(projectile.Center.X + Main.rand.NextFloat(-2, 3), projectile.Center.Y + Main.rand.NextFloat(-2, 3)), 59, Color.AliceBlue, Vector2.Zero, noGrav: true, scale: 0.7f);
     }
 }
        public override void ExplodeEffect()
        {
            Main.PlaySound(new LegacySoundStyle(soundId: SoundID.Item, style: 14).WithPitchVariance(0.1f), projectile.Center);
            DustHelper.DrawDustImage(projectile.Center, ModContent.DustType <WinterbornDust>(), 0.3f, "SpiritMod/Effects/Snowflakes/Flake" + Main.rand.Next(3), 0.4f);
            float rot = Main.rand.NextFloat(MathHelper.TwoPi);

            for (int i = 0; i < 8; i++)
            {
                DustHelper.DrawDustImage(projectile.Center + (Vector2.UnitX.RotatedBy(rot + (MathHelper.TwoPi * i / 8f)) * 60), ModContent.DustType <WinterbornDust>(), 0.15f, "SpiritMod/Effects/Snowflakes/Flake" + Main.rand.Next(3), 0.25f, rot: Main.rand.NextFloat(MathHelper.TwoPi));
            }

            for (int i = 0; i < 30; i++)
            {
                float   maxDist = 100;
                float   Dist    = Main.rand.NextFloat(maxDist);
                Vector2 offset  = Main.rand.NextVector2Unit();
                ParticleHandler.SpawnParticle(new SmokeParticle(projectile.Center + (offset * Dist), Main.rand.NextFloat(5f) * offset * (1 - (Dist / maxDist)), new Color(30, 30, 90) * 0.5f, Main.rand.NextFloat(0.4f, 0.6f), 40));
            }

            for (int i = 0; i < 8; i++)
            {
                ParticleHandler.SpawnParticle(new FireParticle(projectile.Center, (projectile.velocity / 4) - (Vector2.UnitY.RotatedByRandom(MathHelper.PiOver2 * 3) * Main.rand.NextFloat(4)),
                                                               new Color(135, 253, 255), new Color(0, 21, 255), Main.rand.NextFloat(0.5f, 0.7f), 40, delegate(Particle particle)
                {
                    if (particle.Velocity.Y < 16)
                    {
                        particle.Velocity.Y += 0.12f;
                    }
                }));
            }
        }
Beispiel #19
0
        public override void AI()
        {
            alphaCounter += 0.04f;
            Lighting.AddLight((int)((npc.position.X + (float)(npc.width / 2)) / 16f), (int)((npc.position.Y + (float)(npc.height / 2)) / 16f), 0.091f, 0.24f, .24f);
            npc.rotation = npc.velocity.X * .009f;
            aiTimer++;
            if (aiTimer == 100 || aiTimer == 240 || aiTimer == 360 || aiTimer == 620)
            {
                Vector2 direction = Main.player[npc.target].Center - npc.Center;
                direction.Normalize();
                Main.PlaySound(SoundID.DD2_WyvernDiveDown, npc.Center);
                direction.X    = direction.X * Main.rand.Next(8, 10);
                direction.Y    = direction.Y * Main.rand.Next(8, 10);
                npc.velocity.X = direction.X;
                npc.velocity.Y = direction.Y;
                npc.velocity  *= 0.96f;
            }
            if (aiTimer >= 680)
            {
                Main.PlaySound(SoundID.Item, npc.Center, 109);
                float ScaleMult = 2.33f;
                DustHelper.DrawStar(new Vector2(npc.Center.X, npc.Center.Y), DustID.GoldCoin, pointAmount: 5, mainSize: 2.25f * ScaleMult, dustDensity: 2, pointDepthMult: 0.3f, noGravity: true);

                for (int i = 0; i < 5; i++)
                {
                    if (Main.netMode != NetmodeID.MultiplayerClient)
                    {
                        Projectile.NewProjectile(npc.Center.X, npc.Center.Y, Main.rand.Next(-8, 8), Main.rand.Next(-8, 8), ModContent.ProjectileType <ShootingStarHostile>(), 30, 1, Main.myPlayer, 0, 0);
                    }
                }
                aiTimer = 0;
            }
        }
Beispiel #20
0
 public override void NearbyEffects(int i, int j, bool closer)
 {
     if (Main.rand.Next(1100) == 1)
     {
         int glyphnum = Main.rand.Next(10);
         DustHelper.DrawDustImage(new Vector2(i * 16, j * 16), ModContent.DustType <MarbleDust>(), 0.05f, "SpiritMod/Effects/Glyphs/Glyph" + glyphnum, 1f);
     }
 }
Beispiel #21
0
 public override void AI()
 {
     projectile.VelocityToRotation();
     for (int i = 0; i < 5; i++)
     {
         DustHelper.CreateDust(new Vector2(projectile.Center.X + Main.rand.Next(-3, 3), projectile.Center.Y + Main.rand.Next(-3, 3)), 156, Color.White, Vector2.Zero, 1f, 0, 0.7f, true);
     }
 }
 public override void Kill(int timeLeft)
 {
     for (int i = 0; i < Main.rand.Next(6, 12); i++)
     {
         int t = DustID.CrystalPulse2;
         DustHelper.CreateDust(projectile.Center, t, velocity: Main.rand.NextFloat(MathHelper.TwoPi).ToRotationVector2() * Main.rand.NextFloat(4, 8), scale: 0.8f, noGrav: true, alpha: 50);
     }
 }
Beispiel #23
0
 public override void AI()
 {
     for (int i = 0; i < 6; i++)
     {
         DustHelper.CreateDust(
             projectile.Center + new Vector2(Main.rand.Next(-8, 8), Main.rand.Next(-8, 8)) + (projectile.rotation + MathHelper.PiOver2).ToRotationVector2() * 10, 180,
             new Color(61 + Main.rand.Next(15), 142 - Main.rand.Next(20), 228), Vector2.Zero, scale: .7f, noGrav: true, fadeIn: .5f);
     }
 }
Beispiel #24
0
 public override bool PreKill(int timeLeft)
 {
     for (int i = 0; i < 10; i++)
     {
         DustHelper.CreateDust(new Vector2(projectile.Center.X + Main.rand.NextFloat(-4, 4),
                                           projectile.Center.Y + Main.rand.NextFloat(-4, 4)), 75, Color.White, projectile.oldVelocity.ToRotation().ToRotationVector2() * Main.rand.NextFloat(2, 6), 1, 0, 1.4f, true, shader: GameShaders.Armor.GetSecondaryShader(102, Main.LocalPlayer));
     }
     return(base.PreKill(timeLeft));
 }
Beispiel #25
0
 public override bool PreKill(int timeLeft)
 {
     for (int i = 0; i < 10; i++)
     {
         DustHelper.CreateDust(new Vector2(projectile.Center.X + Main.rand.NextFloat(-4, 4),
                                           projectile.Center.Y + Main.rand.NextFloat(-4, 4)), 156, Color.White, projectile.oldVelocity.ToRotation().ToRotationVector2() * Main.rand.NextFloat(2, 6), 1, 0, .8f, true);
     }
     return(base.PreKill(timeLeft));
 }
Beispiel #26
0
        public override void Kill(int timeLeft)
        {
            float len  = projectile.oldVelocity.Length();
            float len2 = len * 0.3f;

            for (int i = 0; i < 20; i++)
            {
                DustHelper.CreateDust(projectile.Center, dust, Main.DiscoColor, velocity: Main.rand.NextFloat(MathHelper.TwoPi).ToRotationVector2() * Main.rand.NextFloat(len2, len), noGrav: true);
            }
        }
Beispiel #27
0
 public override void Kill(int timeLeft)
 {
     Explode(6);
     for (int i = 0; i < 30; i++)
     {
         Vector2 pos = new Vector2(projectile.Center.X + Main.rand.NextFloat(-10, 10),
                                   projectile.Center.Y + Main.rand.NextFloat(-10, 10));
         DustHelper.CreateDust(pos, 156, Color.White, Vector2.Zero, noGrav: true);
     }
 }
        public override void AI()
        {
            projectile.VelocityToRotation();

            for (int i = 0; i < 5; i++)
            {
                DustHelper.CreateDust(new Vector2(projectile.Center.X + Main.rand.Next(-3, 3),
                                                  projectile.Center.Y + Main.rand.Next(-3, 3)), DustID.Fire, Color.White,
                                      -projectile.oldVelocity.ToRotation().ToRotationVector2() * Main.rand.Next(2, 8), 1f, 0, 1, true);
            }
        }
Beispiel #29
0
 public override void Kill(int timeLeft)
 {
     Explode(6);
     for (int i = 0; i < 30; i++)
     {
         int     rnd = 20;
         Vector2 pos = new Vector2(projectile.Center.X + Main.rand.NextFloat(-rnd, rnd),
                                   projectile.Center.Y + Main.rand.NextFloat(-rnd, rnd));
         DustHelper.CreateDust(pos, 75, Color.White, Vector2.Zero, scale: 1.4f, noGrav: true);
     }
 }
Beispiel #30
0
 public override void AI()
 {
     for (int i = 0; i < 6; i++)
     {
         DustHelper.CreateDust(projectile.Center, 254, Color.White, -projectile.velocity.ToRotation().ToRotationVector2() * Main.rand.NextFloat(5), noGrav: true, fadeIn: 1.2f, rotation: Main.rand.NextFloat(MathHelper.TwoPi));
     }
     if (Main.netMode != 1)
     {
         projectile.tileCollide = projectile.Center.Y > projectile.OwnerPlayer().Top.Y;
         projectile.netUpdate   = true;
     }
 }