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); }
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; }