public override void OnHitNPC(NPC target, int damage, float knockback, bool crit)
        {
            Player             player    = Main.player[projectile.owner];
            OrchidModPlayer    modPlayer = player.GetModPlayer <OrchidModPlayer>();
            OrchidModGlobalNPC modTarget = target.GetGlobalNPC <OrchidModGlobalNPC>();

            if (target.type != NPCID.TargetDummy && this.gamblingChipChance > 0)
            {
                OrchidModGamblerHelper.addGamblerChip(this.gamblingChipChance, player, modPlayer);
            }
            modTarget.gamblerHit = true;
            SafeOnHitNPC(target, damage, knockback, crit, player, modPlayer);
        }
Beispiel #2
0
        public static void drawGamblerCard(Player player, OrchidModPlayer modPlayer)
        {
            modPlayer.gamblerJustSwitched = true;

            if (modPlayer.gamblerCardNext.Count() != 3)
            {
                OrchidModGamblerHelper.clearGamblerCardsNext(player, modPlayer);
            }

            for (int i = 0; i < 3; i++)
            {
                if (modPlayer.gamblerCardNext[i].type == 0)
                {
                    int rand = Main.rand.Next(OrchidModGamblerHelper.getNbGamblerCards(player, modPlayer));
                    modPlayer.gamblerCardNext[i] = new Item();
                    modPlayer.gamblerCardNext[i].SetDefaults(modPlayer.gamblerCardsItem[rand].type, true);
                }
            }

            modPlayer.gamblerCardCurrent = new Item();
            modPlayer.gamblerCardCurrent.SetDefaults(modPlayer.gamblerCardNext[0].type, true);

            for (int i = 0; i < 2; i++)
            {
                modPlayer.gamblerCardNext[i] = new Item();
                modPlayer.gamblerCardNext[i].SetDefaults(modPlayer.gamblerCardNext[i + 1].type, true);
            }

            modPlayer.gamblerCardNext[2] = new Item();
            modPlayer.gamblerCardNext[2].SetDefaults(0, true);

            for (int i = 0; i < 3; i++)
            {
                if (modPlayer.gamblerCardNext[i].type == 0)
                {
                    int rand = Main.rand.Next(OrchidModGamblerHelper.getNbGamblerCards(player, modPlayer));
                    modPlayer.gamblerCardNext[i] = new Item();
                    modPlayer.gamblerCardNext[i].SetDefaults(modPlayer.gamblerCardsItem[rand].type, true);
                }
            }

            if (OrchidModGamblerHelper.getNbGamblerCards(player, modPlayer) > 3)
            {
                for (int i = 2; i > -1; i--)
                {
                    for (int j = 2; j > -1; j--)
                    {
                        int currentType = modPlayer.gamblerCardNext[i].type;
                        if ((currentType == modPlayer.gamblerCardNext[j].type || currentType == modPlayer.gamblerCardCurrent.type) && i != j)
                        {
                            int k = 0;
                            while (k < 5 && (currentType == modPlayer.gamblerCardNext[j].type || currentType == modPlayer.gamblerCardCurrent.type))
                            {
                                k++;
                                int rand = Main.rand.Next(OrchidModGamblerHelper.getNbGamblerCards(player, modPlayer));
                                modPlayer.gamblerCardNext[i] = new Item();
                                modPlayer.gamblerCardNext[i].SetDefaults(modPlayer.gamblerCardsItem[rand].type, true);
                                currentType = modPlayer.gamblerCardNext[i].type;
                            }
                        }
                    }
                }
            }

            modPlayer.gamblerShuffleCooldown = modPlayer.gamblerShuffleCooldownMax;

            if (modPlayer.gamblerDungeon)
            {
                int rand = Main.rand.Next(3);
                for (int i = 0; i < rand; i++)
                {
                    OrchidModGamblerHelper.addGamblerChip(100, player, modPlayer);
                }
            }

            if (modPlayer.gamblerPennant)
            {
                OrchidModGlobalItem orchidItem = modPlayer.gamblerCardCurrent.GetGlobalItem <OrchidModGlobalItem>();
                if (orchidItem.gamblerCardSets.Contains("Boss"))
                {
                    player.AddBuff(BuffType <Gambler.Buffs.ConquerorsPennantBuff>(), 60 * 10);
                }
            }

            if (modPlayer.gamblerVulture)
            {
                int rand     = Main.rand.Next(3) + 1;
                int projType = ProjectileType <Gambler.Projectiles.Equipment.VultureCharmProj>();
                for (int i = 0; i < rand; i++)
                {
                    float   scale   = 1f - (Main.rand.NextFloat() * .3f);
                    Vector2 target  = Main.MouseWorld;
                    Vector2 heading = target - player.Center;
                    heading.Normalize();
                    heading *= new Vector2(0f, 10f).Length();
                    Vector2 vel = heading.RotatedByRandom(MathHelper.ToRadians(20));
                    vel = vel * scale;
                    Projectile.NewProjectile(player.Center.X, player.Center.Y, vel.X, vel.Y, projType, 12, 0f, player.whoAmI);
                    if (i == 0)
                    {
                        OrchidModProjectile.spawnDustCircle(player.Center, 31, 10, 10, true, 1.5f, 1f, 5f, true, true, false, 0, 0, true);
                    }
                }
            }

            modPlayer.gamblerSeedCount = 0;
        }