Пример #1
0
        public override void GamblerShoot(Player player, Vector2 position, float speedX, float speedY, int type, int damage, float knockBack, bool dummy = false)
        {
            Main.PlaySound(2, (int)player.Center.X, (int)player.Center.Y - 200, 1);
            int projType = ProjectileType <Gambler.Projectiles.SkyCardProjAlt>();

            for (int l = 0; l < Main.projectile.Length; l++)
            {
                Projectile proj = Main.projectile[l];
                if (proj.active && proj.type == projType && proj.owner == player.whoAmI && proj.ai[1] == 0f)
                {
                    float distance = (position - proj.Center).Length();
                    if (distance < 500f)
                    {
                        return;
                    }
                }
            }

            Vector2 vel           = (new Vector2(0f, -1f).RotatedBy(MathHelper.ToRadians(10)));
            int     newProjectile = OrchidModGamblerHelper.DummyProjectile(Projectile.NewProjectile(position.X, position.Y, vel.X, vel.Y, projType, damage, knockBack, player.whoAmI), dummy);

            Main.projectile[newProjectile].ai[1]     = 0f;
            Main.projectile[newProjectile].netUpdate = true;
            for (int i = 0; i < 5; i++)
            {
                int dustType = 31;
                Main.dust[Dust.NewDust(player.Center, 10, 10, dustType)].velocity *= 0.25f;
            }
        }
Пример #2
0
        public override void GamblerShoot(Player player, Vector2 position, float speedX, float speedY, int type, int damage, float knockBack, bool dummy = false)
        {
            int  projType = ProjectileType <Gambler.Projectiles.EaterCardProj1>();
            bool found    = false;

            for (int l = 0; l < Main.projectile.Length; l++)
            {
                Projectile proj = Main.projectile[l];
                if (proj.active && proj.type == projType && proj.owner == player.whoAmI)
                {
                    found = true;
                    break;
                }
            }
            if (!found)
            {
                int newProjectile2 = (OrchidModGamblerHelper.DummyProjectile(Projectile.NewProjectile(position.X - speedX * 3f, position.Y - speedY * 3f, speedX, speedY, projType, damage, knockBack, player.whoAmI), dummy));
                Main.projectile[newProjectile2].ai[0] = 1f;
                int newProjectile = (OrchidModGamblerHelper.DummyProjectile(Projectile.NewProjectile(position.X, position.Y, speedX, speedY, projType, damage, knockBack, player.whoAmI), dummy));
                Main.projectile[newProjectile].ai[0]      = 0f;
                Main.projectile[newProjectile2].ai[1]     = newProjectile;
                Main.projectile[newProjectile].localAI[0] = newProjectile2;
                Main.projectile[newProjectile].netUpdate  = true;
                Main.projectile[newProjectile2].netUpdate = true;
                Main.PlaySound(2, (int)player.Center.X, (int)player.Center.Y - 200, 1);
            }
            else
            {
                Main.PlaySound(2, (int)player.Center.X, (int)player.Center.Y - 200, 7);
            }
        }
Пример #3
0
 public override void BonusProjectiles(Player player, OrchidModPlayer modPlayer, Projectile projectile, OrchidModGlobalProjectile modProjectile, bool dummy)
 {
     if (modProjectile.gamblerInternalCooldown == 0)
     {
         modProjectile.gamblerInternalCooldown = 30;
         float scale    = 1f - (Main.rand.NextFloat() * .3f);
         int   rand     = Main.rand.Next(3) + 1;
         int   projType = ProjectileType <Gambler.Projectiles.ForestCardProj>();
         for (int i = 0; i < rand; i++)
         {
             Vector2 target  = Main.MouseWorld;
             Vector2 heading = target - projectile.position;
             heading.Normalize();
             heading *= new Vector2(0f, 10f).Length();
             Vector2 vel = heading.RotatedByRandom(MathHelper.ToRadians(30));
             vel = vel * scale;
             int newProjectile = OrchidModGamblerHelper.DummyProjectile(Projectile.NewProjectile(projectile.Center.X, projectile.Center.Y, vel.X, vel.Y, projType, projectile.damage, projectile.knockBack, player.whoAmI), dummy);
             Main.projectile[newProjectile].ai[1]     = 1f;
             Main.projectile[newProjectile].netUpdate = true;
             if (i == 0)
             {
                 OrchidModProjectile.spawnDustCircle(projectile.Center, 31, 10, 10, true, 1.5f, 1f, 5f, true, true, false, 0, 0, true);
             }
         }
     }
 }
Пример #4
0
        public override bool OnTileCollide(Vector2 oldVelocity)
        {
            bool dummy = projectile.GetGlobalProjectile <OrchidModGlobalProjectile>().gamblerDummyProj;

            for (int i = 0; i < 3; i++)
            {
                int     projType = ProjectileType <Gambler.Projectiles.JungleSlimeCardProjAlt>();
                Vector2 vel      = new Vector2(0f, -3f).RotatedBy(MathHelper.ToRadians(20 * (i - 1)));
                OrchidModGamblerHelper.DummyProjectile(Projectile.NewProjectile(projectile.position.X + (5 * (i - 1)), projectile.position.Y - 10, vel.X, vel.Y, projType, (int)(projectile.damage * 0.75f), projectile.knockBack, projectile.owner), dummy);
            }

            if (projectile.velocity.Y > 0f)
            {
                projectile.velocity.Y = -8;
                if (this.baseDamage < projectile.damage)
                {
                    projectile.damage = this.baseDamage;
                    OrchidModProjectile.spawnDustCircle(projectile.Center, 60, 10, 10, true, 1.5f, 1f, 2f, true, true, false, 0, 0, false, true);
                }
            }
            else
            {
                projectile.velocity.Y = 1f;
            }
            if (projectile.velocity.X != oldVelocity.X)
            {
                projectile.velocity.X = -oldVelocity.X;
                projectile.velocity.Y = 0f;
            }

            return(false);
        }
Пример #5
0
        public override void GamblerShoot(Player player, Vector2 position, float speedX, float speedY, int type, int damage, float knockBack, bool dummy = false)
        {
            int  projType = ProjectileType <Gambler.Projectiles.KingSlimeCardProj>();
            bool found    = false;

            for (int l = 0; l < Main.projectile.Length; l++)
            {
                Projectile proj = Main.projectile[l];
                if (proj.active && proj.type == projType && proj.owner == player.whoAmI)
                {
                    found = true;
                    break;
                }
            }

            if (!found)
            {
                OrchidModGamblerHelper.DummyProjectile(Projectile.NewProjectile(position.X, position.Y, speedX, speedY, projType, damage, knockBack, player.whoAmI), dummy);
                Main.PlaySound(2, (int)player.Center.X, (int)player.Center.Y - 200, 1);
            }
            else
            {
                Main.PlaySound(2, (int)player.Center.X, (int)player.Center.Y - 200, 7);
            }
        }
Пример #6
0
        public override void GamblerShoot(Player player, Vector2 position, float speedX, float speedY, int type, int damage, float knockBack, bool dummy = false)
        {
            int  projType = ProjectileType <Gambler.Projectiles.BrainCardProj>();
            bool found    = false;

            for (int l = 0; l < Main.projectile.Length; l++)
            {
                Projectile proj = Main.projectile[l];
                if (proj.active && proj.type == projType && proj.owner == player.whoAmI)
                {
                    found = true;
                    break;
                }
            }
            if (!found)
            {
                for (int i = 0; i < 3; i++)
                {
                    int newProj = OrchidModGamblerHelper.DummyProjectile(Projectile.NewProjectile(position.X, position.Y, speedX, speedY, projType, damage, knockBack, player.whoAmI), dummy);
                    Main.projectile[newProj].ai[1]     = (float)(i);
                    Main.projectile[newProj].ai[0]     = (float)(i == 0 ? 300 : 0);
                    Main.projectile[newProj].friendly  = i == 0;
                    Main.projectile[newProj].netUpdate = true;
                }
                Main.PlaySound(2, (int)player.Center.X, (int)player.Center.Y - 200, 1);
            }
            else
            {
                Main.PlaySound(2, (int)player.Center.X, (int)player.Center.Y - 200, 7);
            }
        }
Пример #7
0
        public override void GamblerShoot(Player player, Vector2 position, float speedX, float speedY, int type, int damage, float knockBack, bool dummy = false)
        {
            int projType = ProjectileType <Gambler.Projectiles.IvyChestCardProj>();

            for (int l = 0; l < Main.projectile.Length; l++)
            {
                Projectile proj = Main.projectile[l];
                if (proj.active && proj.type == projType && proj.owner == player.whoAmI)
                {
                    proj.ai[1]++;
                    if (proj.ai[1] >= 3f)
                    {
                        proj.Kill();
                    }
                    proj.netUpdate = true;
                }
            }

            for (int i = 0; i < 5 + Main.rand.Next(4); i++)
            {
                float   scale = 1f - (Main.rand.NextFloat() * .3f);
                Vector2 vel   = new Vector2(speedX, speedY).RotatedByRandom(MathHelper.ToRadians(10));
                vel = vel * scale;
                OrchidModGamblerHelper.DummyProjectile(Projectile.NewProjectile(position.X, position.Y, vel.X, vel.Y, projType, damage, knockBack, player.whoAmI), dummy);
            }

            Main.PlaySound(6, (int)player.Center.X, (int)player.Center.Y, 0);
        }
Пример #8
0
        public override void GamblerShoot(Player player, Vector2 position, float speedX, float speedY, int type, int damage, float knockBack, bool dummy = false)
        {
            OrchidModPlayer modPlayer = player.GetModPlayer <OrchidModPlayer>();

            if (Main.mouseLeft && Main.mouseLeftRelease || modPlayer.gamblerJustSwitched)
            {
                int projType = ProjectileType <Gambler.Projectiles.SlimeRainCardProj1>();
                for (int l = 0; l < Main.projectile.Length; l++)
                {
                    Projectile proj = Main.projectile[l];
                    if (proj.active && proj.type == projType && proj.owner == player.whoAmI)
                    {
                        proj.Kill();
                        break;
                    }
                }
                modPlayer.gamblerJustSwitched = false;
                OrchidModGamblerHelper.DummyProjectile(Projectile.NewProjectile(position.X, position.Y, speedX, speedY, projType, damage, knockBack, player.whoAmI), dummy);
                Main.PlaySound(2, (int)player.Center.X, (int)player.Center.Y - 200, 1);
            }
            else
            {
                Main.PlaySound(2, (int)player.Center.X, (int)player.Center.Y - 200, 7);
            }
        }
Пример #9
0
        public override void SafeOnHitNPC(NPC target, int damage, float knockback, bool crit, Player player, OrchidModPlayer modPlayer)
        {
            OrchidModGlobalNPC modTarget = target.GetGlobalNPC <OrchidModGlobalNPC>();

            if (projectile.owner == Main.myPlayer)
            {
                modTarget.gamblerDungeonCardCount++;
                if (modTarget.gamblerDungeonCardCount >= 3)
                {
                    modTarget.gamblerDungeonCardCount = 0;
                    OrchidModProjectile.spawnDustCircle(projectile.Center, 29, 10, 15, true, 1.3f, 1f, 8f, true, true, false, 0, 0, true);
                    Main.PlaySound(2, (int)projectile.Center.X, (int)projectile.Center.Y, 45);
                    int     projType = ProjectileType <Gambler.Projectiles.DungeonCardProjAlt>();
                    float   scale    = 10f - (Main.rand.NextFloat() * 2.5f);
                    Vector2 vel      = (projectile.velocity.RotatedByRandom(MathHelper.ToRadians(20)));
                    vel.Normalize();
                    vel *= scale;
                    bool       dummy      = projectile.GetGlobalProjectile <OrchidModGlobalProjectile>().gamblerDummyProj;
                    int        newProjInt = OrchidModGamblerHelper.DummyProjectile(Projectile.NewProjectile(projectile.Center.X, projectile.Center.Y, vel.X, vel.Y, projType, (int)(projectile.damage * 5), 0.1f, projectile.owner), dummy);
                    Projectile newProj    = Main.projectile[newProjInt];
                    newProj.ai[1]     = (int)target.whoAmI;
                    newProj.netUpdate = true;
                }
            }

            if (modPlayer.gamblerElementalLens)
            {
                target.AddBuff(31, 60 * 3);                 // Confused
            }
        }
Пример #10
0
        public override void GamblerShoot(Player player, Vector2 position, float speedX, float speedY, int type, int damage, float knockBack, bool dummy = false)
        {
            int projType = ProjectileType <Gambler.Projectiles.MushroomCardProj>();

            OrchidModGamblerHelper.DummyProjectile(Projectile.NewProjectile(position.X, position.Y, speedX, speedY, projType, damage, knockBack, player.whoAmI), dummy);
            Main.PlaySound(2, (int)player.Center.X, (int)player.Center.Y - 200, 1);
        }
Пример #11
0
        public override void GamblerShoot(Player player, Vector2 position, float speedX, float speedY, int type, int damage, float knockBack, bool dummy = false)
        {
            int  projType = ProjectileType <Gambler.Projectiles.DungeonCardProj>();
            bool found    = false;

            for (int l = 0; l < Main.projectile.Length; l++)
            {
                Projectile proj = Main.projectile[l];
                if (proj.active && proj.type == projType && proj.owner == player.whoAmI)
                {
                    found = true;
                    break;
                }
            }

            if (!found)
            {
                for (int k = 0; k < Main.npc.Length; k++)
                {
                    if (Main.npc[k].active)
                    {
                        OrchidModGlobalNPC modTarget = Main.npc[k].GetGlobalNPC <OrchidModGlobalNPC>();
                        modTarget.gamblerDungeonCardCount = 0;
                    }
                }
            }

            int newProj = OrchidModGamblerHelper.DummyProjectile(Projectile.NewProjectile(position.X, position.Y, speedX, speedY, projType, damage, knockBack, player.whoAmI), dummy);

            Main.projectile[newProj].ai[1]     = Main.rand.Next(4);
            Main.projectile[newProj].netUpdate = true;
            Main.PlaySound(2, (int)player.Center.X, (int)player.Center.Y, 8);
        }
Пример #12
0
        public override void Kill(int timeLeft)
        {
            int projType = ProjectileType <Gambler.Projectiles.EaterCardProj2>();

            for (int l = 0; l < Main.projectile.Length; l++)
            {
                Projectile proj = Main.projectile[l];
                if (proj.active && proj.type == projType && proj.owner == projectile.owner)
                {
                    proj.Kill();
                }
            }
            for (int i = 0; i < 10; i++)
            {
                int dust = Dust.NewDust(projectile.position, projectile.width, projectile.height, 18);
                Main.dust[dust].velocity *= 1.5f;
                Main.dust[dust].scale    *= 1f;
            }
            projType = ProjectileType <Gambler.Projectiles.EaterCardProj3>();
            bool dummy = projectile.GetGlobalProjectile <OrchidModGlobalProjectile>().gamblerDummyProj;

            OrchidModGamblerHelper.DummyProjectile(Projectile.NewProjectile(projectile.Center.X, projectile.Center.Y, 0f, 0f, projType, projectile.damage * 5, 0, projectile.owner), dummy);
            OrchidModProjectile.spawnDustCircle(projectile.Center, 18, 5, 3 + Main.rand.Next(5), false, 1.5f, 1f, 7f, true, true, false, 0, 0, true);
            OrchidModProjectile.spawnDustCircle(projectile.Center, 18, 10, 5 + Main.rand.Next(5), false, 1f, 1f, 5f, true, true, false, 0, 0, true);
            Main.PlaySound(2, (int)projectile.Center.X, (int)projectile.Center.Y, 83);
        }
Пример #13
0
        public override void GamblerShoot(Player player, Vector2 position, float speedX, float speedY, int type, int damage, float knockBack, bool dummy = false)
        {
            OrchidModPlayer modPlayer   = player.GetModPlayer <OrchidModPlayer>();
            int             projType    = ProjectileType <Gambler.Projectiles.ShuffleCardProj>();
            float           aiType      = Main.rand.Next(4);
            int             count       = 0;
            int             damageCount = damage + (int)(OrchidModGamblerHelper.getNbGamblerCards(player, modPlayer) * 1.2f);

            for (int l = 0; l < Main.projectile.Length; l++)
            {
                Projectile proj = Main.projectile[l];
                if (player.whoAmI == proj.owner && proj.active && proj.ai[1] != 6f && proj.type == projType)
                {
                    aiType = proj.ai[0];
                    count++;
                    damageCount    = damage * (count + 1);
                    proj.damage    = damageCount;
                    proj.netUpdate = true;
                }
            }
            if (count < 5)
            {
                int        newProjInt = OrchidModGamblerHelper.DummyProjectile(Projectile.NewProjectile(position.X, position.Y, 0f, 0f, projType, damageCount, knockBack, player.whoAmI), dummy);
                Projectile newProj    = Main.projectile[newProjInt];
                newProj.ai[1]     = (float)(count + 1);
                newProj.ai[0]     = (float)aiType;
                newProj.netUpdate = true;
                Main.PlaySound(2, (int)player.Center.X, (int)player.Center.Y - 200, count == 4 ? 35 : 1);
            }
            else
            {
                Main.PlaySound(2, (int)player.Center.X, (int)player.Center.Y - 200, 7);
            }
        }
Пример #14
0
 public override void BonusProjectiles(Player player, OrchidModPlayer modPlayer, Projectile projectile, OrchidModGlobalProjectile modProjectile, bool dummy)
 {
     if (modProjectile.gamblerInternalCooldown == 0)
     {
         modProjectile.gamblerInternalCooldown = 40;
         int     projType = ProjectileType <Gambler.Projectiles.SnowCardProj>();
         Vector2 target   = Main.MouseWorld;
         Vector2 vel      = new Vector2(0f, 0f);
         float   absX     = (float)Math.Sqrt((projectile.Center.X - target.X) * (projectile.Center.X - target.X));
         float   absY     = (float)Math.Sqrt((projectile.Center.Y - target.Y) * (projectile.Center.Y - target.Y));
         if (absX > absY)
         {
             vel.X = target.X < projectile.Center.X ? 1f : -1f;
         }
         else
         {
             vel.Y = target.Y < projectile.Center.Y ? 1f : -1f;
         }
         vel.Normalize();
         vel *= new Vector2(0f, 5f).Length();
         int newProjectile = OrchidModGamblerHelper.DummyProjectile(Projectile.NewProjectile(projectile.Center.X, projectile.Center.Y, vel.X, vel.Y, projType, projectile.damage, projectile.knockBack, player.whoAmI), dummy);
         Main.projectile[newProjectile].ai[1]     = 1f;
         Main.projectile[newProjectile].netUpdate = true;
         OrchidModProjectile.spawnDustCircle(projectile.Center, 31, 25, 10, true, 1.5f, 1f, 5f, true, true, false, 0, 0, true);
     }
 }
Пример #15
0
        public override void GamblerShoot(Player player, Vector2 position, float speedX, float speedY, int type, int damage, float knockBack, bool dummy = false)
        {
            Vector2 vel      = new Vector2(speedX, speedY / 5f).RotatedByRandom(MathHelper.ToRadians(15));
            int     projType = ProjectileType <Gambler.Projectiles.JungleCardProj>();

            OrchidModGamblerHelper.DummyProjectile(Projectile.NewProjectile(position.X, position.Y, vel.X, vel.Y, projType, damage, knockBack, player.whoAmI), dummy);
            Main.PlaySound(2, (int)player.Center.X, (int)player.Center.Y - 200, 1);
        }
Пример #16
0
        public override void GamblerShoot(Player player, Vector2 position, float speedX, float speedY, int type, int damage, float knockBack, bool dummy = false)
        {
            int     projType = ProjectileType <Gambler.Projectiles.BubbleCardProj>();
            float   scale    = 1f - (Main.rand.NextFloat() * .3f);
            Vector2 vel      = new Vector2(0f, -3f).RotatedByRandom(MathHelper.ToRadians(30));

            vel = vel * scale;
            OrchidModGamblerHelper.DummyProjectile(Projectile.NewProjectile(position.X, position.Y, vel.X, vel.Y, projType, damage, knockBack, player.whoAmI), dummy);
            Main.PlaySound(2, (int)player.Center.X, (int)player.Center.Y - 200, 86);
        }
Пример #17
0
        public override void SafeAI()
        {
            if (!this.initialized)
            {
                this.initialized  = true;
                this.baseVelocity = projectile.velocity;
            }

            Player          player    = Main.player[projectile.owner];
            OrchidModPlayer modPlayer = player.GetModPlayer <OrchidModPlayer>();
            int             cardType  = projectile.GetGlobalProjectile <OrchidModGlobalProjectile>().gamblerDummyProj ? modPlayer.gamblerCardDummy.type : modPlayer.gamblerCardCurrent.type;

            projectile.rotation += projectile.ai[1] * 0.05f;
            this.fireTimer--;
            this.dustVal--;
            projectile.velocity += this.baseVelocity / 100f;

            if (Main.rand.Next(20) == 0)
            {
                int dust = Dust.NewDust(projectile.position, projectile.width, projectile.height, 27);
                Main.dust[dust].scale    *= 1.5f;
                Main.dust[dust].noGravity = true;
            }

            if (Main.myPlayer == projectile.owner)
            {
                Vector2 vectorDist = player.Center - projectile.Center;
                float   distanceTo = (float)Math.Sqrt(vectorDist.X * vectorDist.X + vectorDist.Y * vectorDist.Y);
                if ((!(Main.mouseLeft && cardType == ItemType <Gambler.Weapons.Cards.GoblinArmyCard>() && modPlayer.GamblerDeckInHand) && projectile.timeLeft < 840) || distanceTo > distance)
                {
                    bool dummy = projectile.GetGlobalProjectile <OrchidModGlobalProjectile>().gamblerDummyProj;
                    OrchidModProjectile.spawnDustCircle(projectile.Center, 27, 5, 5, true, 1.3f, 1f, 5f, true, true, false, 0, 0, true);
                    OrchidModProjectile.spawnDustCircle(projectile.Center, 27, 5, 5, true, 1.3f, 1f, 3f, true, true, false, 0, 0, true);
                    projectile.Kill();
                }
            }

            if (fireTimer <= 0 && projectile.ai[1] == 1f)
            {
                Vector2 target  = Main.MouseWorld;
                Vector2 heading = target - projectile.Center;
                heading.Normalize();
                heading *= 15f;
                int  projType = ProjectileType <Gambler.Projectiles.GoblinArmyCardProjAlt>();
                bool dummy    = projectile.GetGlobalProjectile <OrchidModGlobalProjectile>().gamblerDummyProj;
                OrchidModGamblerHelper.DummyProjectile(Projectile.NewProjectile(projectile.Center.X, projectile.Center.Y, heading.X, heading.Y, projType, projectile.damage, projectile.knockBack, projectile.owner), dummy);
                OrchidModProjectile.spawnDustCircle(projectile.Center, 27, 5, 5, true, 1.3f, 1f, 3f, true, true, false, 0, 0, true);
                fireTimerRef -= fireTimerRef > 15 ? 4 : 0;
                fireTimer     = fireTimerRef;
                Main.PlaySound(2, (int)projectile.Center.X, (int)projectile.Center.Y, 8);
            }

            this.spawnDust(27, (int)distance);
        }
Пример #18
0
        public override void GamblerShoot(Player player, Vector2 position, float speedX, float speedY, int type, int damage, float knockBack, bool dummy = false)
        {
            int        projType   = ProjectileType <Gambler.Projectiles.SkyCardProj>();
            Vector2    vel        = new Vector2(0f, 8f).RotatedByRandom(MathHelper.ToRadians(20));
            int        newProjInt = OrchidModGamblerHelper.DummyProjectile(Projectile.NewProjectile(position.X, position.Y - Main.screenHeight / 2 - 20, vel.X, vel.Y, projType, damage, knockBack, player.whoAmI), dummy);
            Projectile newProj    = Main.projectile[newProjInt];

            newProj.ai[0] = Main.screenPosition.Y + (float)Main.mouseY - 10;

            Main.PlaySound(2, (int)player.Center.X, (int)player.Center.Y, 9);
        }
Пример #19
0
        public override void GamblerShoot(Player player, Vector2 position, float speedX, float speedY, int type, int damage, float knockBack, bool dummy = false)
        {
            type = ModContent.ProjectileType <Gambler.Projectiles.SapCardProj>();

            Main.PlaySound(SoundID.Item, (int)player.Center.X, (int)player.Center.Y, 1);

            if (player.ownedProjectileCounts[type] == 0 && player.channel)
            {
                OrchidModGamblerHelper.DummyProjectile(Projectile.NewProjectile(position.X, position.Y, speedX, speedY, type, damage, knockBack, player.whoAmI), dummy);
            }
        }
Пример #20
0
        public override void GamblerShoot(Player player, Vector2 position, float speedX, float speedY, int type, int damage, float knockBack, bool dummy = false)
        {
            int     projType = ProjectileType <Gambler.Projectiles.GoldChestCardProj>();
            float   scale    = 1f - (Main.rand.NextFloat() * .3f);
            Vector2 vel      = new Vector2(speedX, speedY).RotatedByRandom(MathHelper.ToRadians(15));

            vel = vel * scale;
            int newProj = OrchidModGamblerHelper.DummyProjectile(Projectile.NewProjectile(position.X, position.Y, vel.X, vel.Y, projType, damage, knockBack, player.whoAmI), dummy);

            Main.projectile[newProj].ai[1]     = Main.rand.Next(4);
            Main.projectile[newProj].netUpdate = true;
            Main.PlaySound(2, (int)player.Center.X, (int)player.Center.Y - 200, 9);
        }
Пример #21
0
        public override void Kill(int timeLeft)
        {
            OrchidModProjectile.spawnDustCircle(projectile.Center, 172, 25, 10, true, 1.5f, 1f, 5f);
            int  projType = ProjectileType <Gambler.Projectiles.MushroomCardProjExplosion>();
            bool dummy    = projectile.GetGlobalProjectile <OrchidModGlobalProjectile>().gamblerDummyProj;

            OrchidModGamblerHelper.DummyProjectile(Projectile.NewProjectile(projectile.position.X, projectile.position.Y, 0f, 0f, projType, (int)(projectile.damage * 0.8), 3f, projectile.owner, 0.0f, 0.0f), dummy);
            int dustType = 172;

            for (int i = 0; i < 3; i++)
            {
                Main.dust[Dust.NewDust(projectile.position, projectile.width, projectile.height, dustType)].noGravity = true;
            }
        }
Пример #22
0
 public override void BonusProjectiles(Player player, OrchidModPlayer modPlayer, Projectile projectile, OrchidModGlobalProjectile modProjectile, bool dummy)
 {
     if (modProjectile.gamblerInternalCooldown == 0)
     {
         modProjectile.gamblerInternalCooldown = 50;
         int     projType = ProjectileType <Gambler.Projectiles.OceanCardProj>();
         Vector2 target   = Main.MouseWorld;
         Vector2 heading  = target - projectile.position;
         heading.Normalize();
         heading *= new Vector2(0f, 5f).Length();
         int newProjectile = OrchidModGamblerHelper.DummyProjectile(Projectile.NewProjectile(projectile.Center.X, projectile.Center.Y, heading.X, heading.Y, projType, projectile.damage, projectile.knockBack, player.whoAmI), dummy);
         Main.projectile[newProjectile].ai[1]     = 1f;
         Main.projectile[newProjectile].netUpdate = true;
         OrchidModProjectile.spawnDustCircle(projectile.Center, 31, 10, 10, true, 1.5f, 1f, 3f, true, true, false, 0, 0, true);
     }
 }
Пример #23
0
        public override void SafeOnHitNPC(NPC target, int damage, float knockback, bool crit, Player player, OrchidModPlayer modPlayer)
        {
            if (justHit == 0)
            {
                projectile.damage += 2;
                bool dummy    = projectile.GetGlobalProjectile <OrchidModGlobalProjectile>().gamblerDummyProj;
                int  projType = ProjectileType <Gambler.Projectiles.KingSlimeCardProj2>();
                OrchidModGamblerHelper.DummyProjectile(Projectile.NewProjectile(projectile.Center.X, projectile.Center.Y, 0f, 0f, projType, projectile.damage, projectile.knockBack, projectile.owner), dummy);
                OrchidModProjectile.spawnDustCircle(projectile.Center, 59, 10, 10, true, 1.5f, 1f, 2f, true, true, false, 0, 0, false, true);
            }

            projectile.velocity.Y  = -10f;
            projectile.velocity.X *= 0.5f;
            this.justHit           = 30;
            projectile.ai[1]       = 1f;
        }
Пример #24
0
 public override void BonusProjectiles(Player player, OrchidModPlayer modPlayer, Projectile projectile, OrchidModGlobalProjectile modProjectile, bool dummy)
 {
     if (modProjectile.gamblerInternalCooldown == 0)
     {
         modProjectile.gamblerInternalCooldown = 30;
         int     projType = ProjectileType <Gambler.Projectiles.JungleCardProj>();
         Vector2 target   = Main.MouseWorld;
         Vector2 heading  = target - projectile.position;
         heading.Normalize();
         heading *= new Vector2(0f, 10f).Length();
         Vector2 vel           = heading.RotatedByRandom(MathHelper.ToRadians(15));
         int     newProjectile = OrchidModGamblerHelper.DummyProjectile(Projectile.NewProjectile(projectile.Center.X, projectile.Center.Y, vel.X, vel.Y, projType, projectile.damage, projectile.knockBack, player.whoAmI), dummy);
         Main.projectile[newProjectile].localAI[1] = projectile.ai[1];
         Main.projectile[newProjectile].netUpdate  = true;
         OrchidModProjectile.spawnDustCircle(projectile.Center - new Vector2(4, 4), 44, 10, 4, false, 1f, 1.5f, 5f, true, true, false, 0, 0, true);
     }
 }
Пример #25
0
 public override void BonusProjectiles(Player player, OrchidModPlayer modPlayer, Projectile projectile, OrchidModGlobalProjectile modProjectile, bool dummy)
 {
     if (modProjectile.gamblerInternalCooldown == 0)
     {
         modProjectile.gamblerInternalCooldown = 30;
         int     projType = ProjectileType <Gambler.Projectiles.SkyCardProj>();
         Vector2 target   = Main.MouseWorld;
         Vector2 heading  = target - projectile.position;
         heading.Normalize();
         heading *= new Vector2(0f, 15f).Length();
         Vector2 vel           = new Vector2(0f, 8f).RotatedByRandom(MathHelper.ToRadians(20));
         int     newProjectile = OrchidModGamblerHelper.DummyProjectile(Projectile.NewProjectile(projectile.Center.X, player.position.Y - Main.screenHeight / 2 - 20, vel.X, vel.Y, projType, projectile.damage, projectile.knockBack, projectile.owner), dummy);
         Main.projectile[newProjectile].ai[1]     = projectile.ai[1];
         Main.projectile[newProjectile].ai[0]     = Main.screenPosition.Y + (float)Main.mouseY - 10;
         Main.projectile[newProjectile].netUpdate = true;
         OrchidModProjectile.spawnDustCircle(projectile.Center, 64, 10, 10, true, 1.5f, 1f, 5f, true, true, false, 0, 0, true);
     }
 }
Пример #26
0
        public override void SafeOnHitNPC(NPC target, int damage, float knockback, bool crit, Player player, OrchidModPlayer modPlayer)
        {
            if (justHit == 0)
            {
                OrchidModProjectile.spawnDustCircle(projectile.Center, 6, 10, 10, true, 1.5f, 1f, 2f);
                projectile.damage += 6;

                nbBounces++;
                if (nbBounces > 2)
                {
                    nbBounces = 0;
                    OrchidModGamblerHelper.DummyProjectile(spawnGenericExplosion(projectile, projectile.damage, projectile.knockBack, 200, 3, true, 14), this.getDummy());
                }
            }

            projectile.velocity.Y  = -7;
            projectile.velocity.X *= 0.5f;
            this.justHit           = 30;
        }
Пример #27
0
        public override void GamblerShoot(Player player, Vector2 position, float speedX, float speedY, int type, int damage, float knockBack, bool dummy = false)
        {
            int     projType = ProjectileType <Gambler.Projectiles.IceChestCardProj>();
            Vector2 newPos   = Main.MouseWorld;
            Vector2 offSet   = new Vector2(0f, -15f);

            for (int i = 0; i < 50; i++)
            {
                offSet  = Collision.TileCollision(newPos, offSet, 14, 32, true, false, (int)player.gravDir);
                newPos += offSet;
                if (offSet.Y > -15f)
                {
                    break;
                }
            }
            newPos.Y = player.position.Y - newPos.Y > Main.screenHeight / 2 ? player.position.Y - Main.screenHeight / 2 : newPos.Y;
            OrchidModGamblerHelper.DummyProjectile(Projectile.NewProjectile(newPos.X, newPos.Y, 0f, 12.5f, projType, damage, knockBack, player.whoAmI), dummy);
            Main.PlaySound(2, (int)player.Center.X, (int)player.Center.Y - 200, 30);
        }
Пример #28
0
        public override void SafeOnHitNPC(NPC target, int damage, float knockback, bool crit, Player player, OrchidModPlayer modPlayer)
        {
            if (justHit == 0)
            {
                OrchidModProjectile.spawnDustCircle(projectile.Center, 178, 10, 10, true, 1.5f, 1f, 2f);
                projectile.damage += 4;

                bool dummy = projectile.GetGlobalProjectile <OrchidModGlobalProjectile>().gamblerDummyProj;
                for (int i = 0; i < 5; i++)
                {
                    int     projType = ProjectileType <Gambler.Projectiles.JungleSlimeCardProjAlt>();
                    Vector2 vel      = new Vector2(0f, -3f).RotatedBy(MathHelper.ToRadians(15 * (i - 2)));
                    OrchidModGamblerHelper.DummyProjectile(Projectile.NewProjectile(projectile.position.X + (5 * (i - 1)), projectile.position.Y - 10, vel.X, vel.Y, projType, (int)(projectile.damage * 0.75f), projectile.knockBack, projectile.owner), dummy);
                }
            }

            projectile.velocity.Y  = -8;
            projectile.velocity.X *= 0.5f;
            this.justHit           = 30;
        }
Пример #29
0
 public override void SafeOnHitNPC(NPC target, int damage, float knockback, bool crit, Player player, OrchidModPlayer modPlayer)
 {
     if (projectile.ai[1] != 1f && projectile.owner == Main.myPlayer)
     {
         modPlayer.gamblerSeedCount += 8 + (modPlayer.gamblerLuckySprout ? 2 : 0);
         if (modPlayer.gamblerSeedCount > 99)
         {
             modPlayer.gamblerSeedCount = 0;
             Vector2 vel      = (new Vector2(0f, -3f).RotatedBy(MathHelper.ToRadians(10)));
             int     projType = ProjectileType <Gambler.Projectiles.SnowCardProjAlt>();
             bool    dummy    = projectile.GetGlobalProjectile <OrchidModGlobalProjectile>().gamblerDummyProj;
             OrchidModGamblerHelper.DummyProjectile(Projectile.NewProjectile(player.Center.X, player.Center.Y, vel.X, vel.Y, projType, projectile.damage, projectile.knockBack, projectile.owner), dummy);
             for (int i = 0; i < 5; i++)
             {
                 int dustType = 31;
                 Main.dust[Dust.NewDust(player.Center, 10, 10, dustType)].velocity *= 0.25f;
             }
         }
     }
 }
Пример #30
0
        public override void SafeOnHitNPC(NPC target, int damage, float knockback, bool crit, Player player, OrchidModPlayer modPlayer)
        {
            projectile.friendly     = false;
            this.gamblingChipChance = 50;
            int  projType = ProjectileType <Gambler.Projectiles.BrainCardProj2>();
            bool dummy    = projectile.GetGlobalProjectile <OrchidModGlobalProjectile>().gamblerDummyProj;

            OrchidModGamblerHelper.DummyProjectile(Projectile.NewProjectile(projectile.Center.X, projectile.Center.Y, 0f, 0f, projType, projectile.damage, 0, projectile.owner), dummy);
            OrchidModProjectile.spawnDustCircle(projectile.Center, 5, 10, 5 + Main.rand.Next(5), false, 1f, 1f, 5f, true, true, false, 0, 0, true);
            Main.PlaySound(2, (int)projectile.Center.X, (int)projectile.Center.Y, 83);
            projectile.ai[0] = 0f;
            target.AddBuff(BuffID.Confused, 60 * 3);
            bool skipped  = false;
            bool switched = false;

            projType = ProjectileType <Gambler.Projectiles.BrainCardProj>();
            for (int l = 0; l < Main.projectile.Length; l++)
            {
                Projectile proj = Main.projectile[l];
                if (proj.active && proj.type == projType && proj.owner == player.whoAmI)
                {
                    proj.damage += 30;
                    if (proj.ai[1] != projectile.ai[1])
                    {
                        if ((Main.rand.Next(2) == 0 || skipped) && !switched)
                        {
                            proj.ai[0]     = 300f;
                            switched       = true;
                            proj.friendly  = true;
                            proj.netUpdate = true;
                            OrchidModProjectile.spawnDustCircle(proj.Center, 60, 10, 5 + Main.rand.Next(5), true, 1.5f, 1f, 5f, true, true, false, 0, 0, true, true);
                        }
                        else
                        {
                            skipped = true;
                        }
                    }
                }
            }
        }