public override void SafeOnHitNPC(NPC target, OrchidModAlchemistNPC modTarget, int damage, float knockback, bool crit, Player player, OrchidModPlayer modPlayer) { if (modTarget.alchemistFire > 0) { damage = (int)(damage * 1.1f); } }
public void DrawCard(Item item, SpriteBatch spriteBatch, Vector2 position, Player player, OrchidModPlayer orchidPlayer, int maxReq, bool canRemove = true) { if (item == null || item.type < ItemID.None) { return; } var cardTexture = Main.itemTexture[item.type]; var cardRect = new Rectangle((int)position.X, (int)position.Y, cardTexture.Width, cardTexture.Height); spriteBatch.Draw(cardTexture, cardRect, Color.White); if (!canRemove) { spriteBatch.Draw(deckBlockTexture, new Rectangle(cardRect.X - 2, cardRect.Y - 2, deckBlockTexture.Width, deckBlockTexture.Height), Color.White); } if (cardRect.Contains(Main.MouseScreen.ToPoint())) { player.mouseInterface = true; if (hoverCardType != item.type) { hoverCardType = item.type; scrollValue = 0; } // Scrolling { int num = -PlayerInput.ScrollWheelDelta / 120; int sign = Math.Sign(num); int progr = FontOffsetY; while (num != 0) { if (num < 0) { if (scrollValue >= progr) { scrollValue -= progr; } } else { if (scrollValue < (scrollMax - 5 * progr)) { scrollValue += progr; } } num -= sign; } } Rectangle tooltipRectangle = new Rectangle(drawZone.X + deckTexture.Width + 24, drawZone.Y + 14, Math.Abs(drawZone.Width - deckTexture.Width - 42), drawZone.Height - 28); DrawCardInfo(item, spriteBatch, tooltipRectangle, GetCardInfo(item, maxReq, canRemove)); if ((Main.mouseLeft && Main.mouseLeftRelease || Main.mouseRight && Main.mouseRightRelease) && canRemove) { OnCardClick(item, player, orchidPlayer); } } }
public override void SafeOnHitNPC(NPC target, int damage, float knockback, bool crit, Player player, OrchidModPlayer modPlayer) { if (modPlayer.shamanOrbBig != ShamanOrbBig.CHLOROPHYTE) { modPlayer.shamanOrbBig = ShamanOrbBig.CHLOROPHYTE; modPlayer.orbCountBig = 0; } modPlayer.orbCountBig++; //modPlayer.sendOrbCountPackets(); if (modPlayer.orbCountBig == 3) { Projectile.NewProjectile(player.Center.X - 30, player.position.Y - 30, 0f, 0f, mod.ProjectileType("ChlorophyteOrb"), 0, 0, projectile.owner, 0f, 0f); if (player.FindBuffIndex(mod.BuffType("ShamanicBaubles")) > -1) { modPlayer.orbCountBig += 3; Projectile.NewProjectile(player.Center.X - 15, player.position.Y - 38, 0f, 0f, mod.ProjectileType("ChlorophyteOrb"), 1, 0, projectile.owner, 0f, 0f); player.ClearBuff(mod.BuffType("ShamanicBaubles")); //modPlayer.sendOrbCountPackets(); } } if (modPlayer.orbCountBig == 6) { Projectile.NewProjectile(player.Center.X - 19, player.position.Y - 38, 0f, 0f, mod.ProjectileType("ChlorophyteOrb"), 0, 0, projectile.owner, 0f, 0f); } if (modPlayer.orbCountBig == 9) { Projectile.NewProjectile(player.Center.X - 2, player.position.Y - 40, 0f, 0f, mod.ProjectileType("ChlorophyteOrb"), 0, 0, projectile.owner, 0f, 0f); } if (modPlayer.orbCountBig == 12) { Projectile.NewProjectile(player.Center.X + 15, player.position.Y - 38, 0f, 0f, mod.ProjectileType("ChlorophyteOrb"), 0, 0, projectile.owner, 0f, 0f); } if (modPlayer.orbCountBig == 15) { Projectile.NewProjectile(player.Center.X + 32, player.position.Y - 30, 0f, 0f, mod.ProjectileType("ChlorophyteOrb"), 0, 0, projectile.owner, 0f, 0f); } if (modPlayer.orbCountBig > 15) { Vector2 perturbedSpeed = new Vector2(projectile.velocity.X, projectile.velocity.Y).RotatedByRandom(MathHelper.ToRadians(20)); Projectile.NewProjectile(player.Center.X, player.Center.Y - 50, perturbedSpeed.X, perturbedSpeed.Y, 228, projectile.damage, 0.0f, player.whoAmI, 0.0f, 0.0f); perturbedSpeed = new Vector2(projectile.velocity.X, projectile.velocity.Y).RotatedByRandom(MathHelper.ToRadians(20)); Projectile.NewProjectile(player.Center.X - 16, player.Center.Y - 48, perturbedSpeed.X, perturbedSpeed.Y, 228, projectile.damage, 0.0f, player.whoAmI, 0.0f, 0.0f); perturbedSpeed = new Vector2(projectile.velocity.X, projectile.velocity.Y).RotatedByRandom(MathHelper.ToRadians(20)); Projectile.NewProjectile(player.Center.X - 30, player.Center.Y - 40, perturbedSpeed.X, perturbedSpeed.Y, 228, projectile.damage, 0.0f, player.whoAmI, 0.0f, 0.0f); perturbedSpeed = new Vector2(projectile.velocity.X, projectile.velocity.Y).RotatedByRandom(MathHelper.ToRadians(20)); Projectile.NewProjectile(player.Center.X + 16, player.Center.Y - 48, perturbedSpeed.X, perturbedSpeed.Y, 228, projectile.damage, 0.0f, player.whoAmI, 0.0f, 0.0f); perturbedSpeed = new Vector2(projectile.velocity.X, projectile.velocity.Y).RotatedByRandom(MathHelper.ToRadians(20)); Projectile.NewProjectile(player.Center.X + 30, player.Center.Y - 40, perturbedSpeed.X, perturbedSpeed.Y, 228, projectile.damage, 0.0f, player.whoAmI, 0.0f, 0.0f); modPlayer.orbCountBig = -3; } }
public virtual void SafeOnHitNPC(NPC target, OrchidModAlchemistNPC modTarget, int damage, float knockback, bool crit, Player player, OrchidModPlayer modPlayer) { }
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 += 16 + (modPlayer.gamblerLuckySprout ? 5 : 0); if (modPlayer.gamblerSeedCount > 99) { modPlayer.gamblerSeedCount = 0; Vector2 vel = (new Vector2(0f, -3f).RotatedBy(MathHelper.ToRadians(10))); int projType = ProjectileType <Gambler.Projectiles.HellCardProjAlt>(); 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; } } } }
public override void SafeOnHitNPC(NPC target, int damage, float knockback, bool crit, Player player, OrchidModPlayer modPlayer) { this.gamblingChipChance = 3; }
public override void Reaction(Player player, OrchidModPlayer modPlayer) { }
public static void BlankEffect(AlchemistHiddenReactionRecipe recipe, Player player, OrchidModPlayer modPlayer) { }
public virtual void Reaction(Player player, OrchidModPlayer modPlayer) { }
public override void SafeAI() { Player player = Main.player[projectile.owner]; OrchidModPlayer modPlayer = player.GetModPlayer <OrchidModPlayer>(); int cardType = projectile.GetGlobalProjectile <OrchidModGlobalProjectile>().gamblerDummyProj ? modPlayer.gamblerCardDummy.type : modPlayer.gamblerCardCurrent.type; projectile.velocity.Y += (projectile.wet || projectile.lavaWet || projectile.honeyWet) ? projectile.velocity.Y > -5f ? -0.5f : 0f : projectile.velocity.Y < 5f ? 0.3f : 0f; projectile.frame = projectile.velocity.Y < 0f ? 1 : 0; this.justHit -= this.justHit > 0 ? 1 : 0; this.velocityStuck = projectile.Center.Y == oldPositionY ? this.velocityStuck + 1 : 0; this.oldPositionY = 0f + projectile.Center.Y; if (projectile.velocity.X > 5f) { projectile.velocity.X = 5f; } if (projectile.velocity.X < -5f) { projectile.velocity.X = -5f; } if (!this.initialized) { this.baseDamage = projectile.damage; this.initialized = true; } if (Main.myPlayer == projectile.owner) { if (velocityStuck >= 5) { projectile.velocity.Y = -5; this.velocityStuck = 0; } if (Main.mouseLeft && cardType == ItemType <Gambler.Weapons.Cards.JungleSlimeCard>() && modPlayer.GamblerDeckInHand) { Vector2 newMove = new Vector2(Main.screenPosition.X + (float)Main.mouseX, (float)projectile.Center.Y) - projectile.Center; float distanceTo = (float)Math.Sqrt(newMove.X * newMove.X + newMove.Y * newMove.Y); if (distanceTo > 5f) { if ((float)(Main.screenPosition.X + Main.mouseX) > projectile.Center.X) { projectile.velocity.X += projectile.velocity.X < 6f ? this.justHit > 0 ? 0.15f : 0.25f : 0f; } else { projectile.velocity.X -= projectile.velocity.X > -6f ? this.justHit > 0 ? 0.15f : 0.25f : 0f; } } else { if (projectile.velocity.Length() > 0.01f) { projectile.velocity.X *= 0.9f; } } bool fallThrough = Main.screenPosition.Y + Main.mouseY > projectile.Center.Y; if (projectile.ai[1] == 0f && fallThrough) { projectile.ai[1] = 1f; projectile.netUpdate = true; } else if (projectile.ai[1] == 1f && !fallThrough) { projectile.ai[1] = 0f; projectile.netUpdate = true; } int velocityXBy1000 = (int)(newMove.X * 1000f); int oldVelocityXBy1000 = (int)(projectile.velocity.X * 1000f); if (velocityXBy1000 != oldVelocityXBy1000) { projectile.netUpdate = true; } } else { projectile.Kill(); } } }
public override void AI() { Player player = Main.player[projectile.owner]; OrchidModPlayer modPlayer = player.GetModPlayer <OrchidModPlayer>(); if (modPlayer.timer120 == 65) { projectile.frame = 1; } if (modPlayer.timer120 == 70) { projectile.frame = 2; } if (modPlayer.timer120 == 75) { projectile.frame = 3; } if (modPlayer.timer120 == 80) { projectile.frame = 4; } if (modPlayer.timer120 == 85) { projectile.frame = 5; } if (modPlayer.timer120 == 90) { projectile.frame = 6; } if (modPlayer.timer120 == 95) { projectile.frame = 7; } if (modPlayer.timer120 == 100) { projectile.frame = 0; } if (Main.rand.Next(5) == 0) { int dust = Dust.NewDust(projectile.position, projectile.width, projectile.height, 169); Main.dust[dust].noGravity = true; Main.dust[dust].velocity /= 2f; } if (projectile.localAI[0] == 0f) { AdjustMagnitude(ref projectile.velocity); projectile.localAI[0] = 1f; } Vector2 move = Vector2.Zero; float distance; if (projectile.timeLeft < 300) { distance = 1000f; } else { distance = 10f; } bool target = false; for (int k = 0; k < 200; k++) { if (Main.npc[k].active && !Main.npc[k].dontTakeDamage && !Main.npc[k].friendly && Main.npc[k].lifeMax > 5 && Main.npc[k].type != NPCID.TargetDummy) { Vector2 newMove = Main.npc[k].Center - projectile.Center; float distanceTo = (float)Math.Sqrt(newMove.X * newMove.X + newMove.Y * newMove.Y); if (distanceTo < distance) { move = newMove; distance = distanceTo; target = true; } } } if (target) { AdjustMagnitude(ref move); projectile.velocity = (10 * projectile.velocity + move) / 7f; AdjustMagnitude(ref projectile.velocity); } }
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; }
public override void Reaction(Player player, OrchidModPlayer modPlayer) { player.QuickSpawnItem(ItemType <Alchemist.Misc.MushroomThread>(), 1); }
public override void SafeOnHitNPC(NPC target, int damage, float knockback, bool crit, Player player, OrchidModPlayer modPlayer) { Mod thoriumMod = OrchidMod.ThoriumMod; if (thoriumMod != null && Main.rand.Next(2) == 0) { target.AddBuff((thoriumMod.BuffType("LightCurse")), 1 * 60); } if (modPlayer.shamanOrbBig != ShamanOrbBig.VALADIUM) { modPlayer.shamanOrbBig = ShamanOrbBig.VALADIUM; modPlayer.orbCountBig = 0; } modPlayer.orbCountBig++; if (modPlayer.orbCountBig == 3) { Projectile.NewProjectile(player.Center.X - 30, player.position.Y - 30, 0f, 0f, mod.ProjectileType("ValadiumOrb"), 0, 0, projectile.owner, 0f, 0f); if (player.FindBuffIndex(mod.BuffType("ShamanicBaubles")) > -1) { modPlayer.orbCountBig += 3; Projectile.NewProjectile(player.Center.X - 15, player.position.Y - 38, 0f, 0f, mod.ProjectileType("ValadiumOrb"), 1, 0, projectile.owner, 0f, 0f); player.ClearBuff(mod.BuffType("ShamanicBaubles")); } } if (modPlayer.orbCountBig == 6) { Projectile.NewProjectile(player.Center.X - 15, player.position.Y - 38, 0f, 0f, mod.ProjectileType("ValadiumOrb"), 0, 0, projectile.owner, 0f, 0f); } if (modPlayer.orbCountBig == 9) { Projectile.NewProjectile(player.Center.X, player.position.Y - 40, 0f, 0f, mod.ProjectileType("ValadiumOrb"), 0, 0, projectile.owner, 0f, 0f); } if (modPlayer.orbCountBig == 12) { Projectile.NewProjectile(player.Center.X + 15, player.position.Y - 38, 0f, 0f, mod.ProjectileType("ValadiumOrb"), 0, 0, projectile.owner, 0f, 0f); } if (modPlayer.orbCountBig == 15) { Projectile.NewProjectile(player.Center.X + 30, player.position.Y - 30, 0f, 0f, mod.ProjectileType("ValadiumOrb"), 0, 0, projectile.owner, 0f, 0f); } if (modPlayer.orbCountBig > 15) { knockback = 0f; if (!(target.boss || target.type == NPCID.TargetDummy) && target.knockBackResist > 0f) { target.velocity.X = projectile.velocity.X > 0f ? 8f : -8f; target.velocity.Y = -10f; target.AddBuff((mod.BuffType("AquaBump")), 10 * 60); } spawnDustCircle(70, 35); modPlayer.orbCountBig = -3; } }
protected override void DrawSelf(SpriteBatch spriteBatch) { Player player = Main.player[Main.myPlayer]; OrchidModPlayer modPlayer = player.GetModPlayer <OrchidModPlayer>(); Vector2 vector = new Vector2((float)((int)(Main.LocalPlayer.position.X - Main.screenPosition.X) - Main.GameViewMatrix.Translation.X - (float)(Main.LocalPlayer.bodyFrame.Width / 2) + (float)(Main.LocalPlayer.width / 2)), (float)((int)(Main.LocalPlayer.position.Y - Main.screenPosition.Y) - Main.GameViewMatrix.Translation.Y + (float)Main.LocalPlayer.height - (float)Main.LocalPlayer.bodyFrame.Height + 12f + player.gfxOffY)) + Main.LocalPlayer.bodyPosition + new Vector2((float)(Main.LocalPlayer.bodyFrame.Width / 2)); vector *= Main.GameViewMatrix.Zoom; vector /= Main.UIScale; this.Left.Set(vector.X + 30f, 0f); this.Top.Set(vector.Y - 50f, 0f); CalculatedStyle dimensions = GetDimensions(); Point point = new Point((int)dimensions.X, (int)dimensions.Y - 100); int width = (int)Math.Ceiling(dimensions.Width); int height = (int)Math.Ceiling(dimensions.Height); if (!player.dead) { if (modPlayer.gamblerUIChipSpinDisplay) { int widthArrow = chipDirection.Width; int heightArrow = chipDirection.Height; Vector2 position = new Vector2(point.X - 30, point.Y + 150); float angle = MathHelper.ToRadians(modPlayer.gamblerChipSpin); // new Rectangle(point.X - 30, point.Y + 50, widthArrow, heightArrow); spriteBatch.Draw(chipDirection, position, null, backgroundColor, angle, chipDirection.Size() * 0.5f, 1f, SpriteEffects.None, 0f); //spriteBatch.Draw(texture, position, null, color, projectile.rotation, texture.Size() * 0.5f, projectile.scale, effect, 0f); } if (modPlayer.gamblerUIDeckDisplay) { if (player.talkNPC != -1) { spriteBatch.Draw(UIDeckbuilding, new Rectangle(point.X - 100, point.Y - 60, 140, 138), backgroundColor); int offSetX = 0; int offSetY = 0; string msg = ""; string msg2 = ""; string msg3 = ""; int[] nbCards = new int[20]; int maxReq = 0; int playerNbCards = OrchidModGamblerHelper.getNbGamblerCards(player, modPlayer); for (int i = 0; i < 20; i++) { nbCards[i] = 0; } for (int i = 0; i < playerNbCards; i++) { Item currentItem = modPlayer.gamblerCardsItem[i]; Texture2D currentTexture = Main.itemTexture[currentItem.type]; Rectangle currentRectangle = new Rectangle(point.X - 92 + offSetX, point.Y - 52 + offSetY, 20, 26); spriteBatch.Draw(currentTexture, currentRectangle, backgroundColor); offSetX += 26; if ((i - 4) % 5 == 0) { offSetX = 0; offSetY += 32; } if (currentItem.type != 0) { OrchidModGlobalItem orchidItem = currentItem.GetGlobalItem <OrchidModGlobalItem>(); int cardReq = orchidItem.gamblerCardRequirement; nbCards[cardReq]++; maxReq = cardReq > maxReq ? cardReq : maxReq; } } offSetX = 0; offSetY = 0; for (int i = 0; i < playerNbCards; i++) { Item currentItem = modPlayer.gamblerCardsItem[i]; Rectangle currentRectangle = new Rectangle(point.X - 92 + offSetX, point.Y - 52 + offSetY, 20, 26); offSetX += 26; if ((i - 4) % 5 == 0) { offSetX = 0; offSetY += 32; } if (currentItem.type != 0) { OrchidModGlobalItem orchidItem = currentItem.GetGlobalItem <OrchidModGlobalItem>(); int cardReq = orchidItem.gamblerCardRequirement; bool canRemove = (playerNbCards > maxReq + 1) || (cardReq == maxReq); if (currentRectangle.Contains(new Point((int)Main.MouseScreen.X, (int)Main.MouseScreen.Y))) { if (((Main.mouseLeft && Main.mouseLeftRelease) || (Main.mouseRight && Main.mouseRightRelease)) && canRemove) { player.QuickSpawnItem(currentItem.type, 1); OrchidModGamblerHelper.removeGamblerCard(currentItem, player, modPlayer); if (OrchidModGamblerHelper.getNbGamblerCards(player, modPlayer) > 0) { OrchidModGamblerHelper.clearGamblerCardCurrent(player, modPlayer); OrchidModGamblerHelper.clearGamblerCardsNext(player, modPlayer); modPlayer.gamblerShuffleCooldown = 0; modPlayer.gamblerRedraws = 0; OrchidModGamblerHelper.drawGamblerCard(player, modPlayer); } else { OrchidModGamblerHelper.onRespawnGambler(player, modPlayer); } } msg = currentItem.Name; msg2 = canRemove ? "Can be removed" : "Cannot be removed"; msg3 = canRemove ? "" : "Your highest cost card requires at least " + maxReq + " cards"; } if (!canRemove) { Rectangle blockRectangle = new Rectangle(currentRectangle.X - 2, currentRectangle.Y - 2, currentRectangle.Width + 4, currentRectangle.Height + 4); spriteBatch.Draw(UIDeckbuildingBlock, blockRectangle, backgroundColor); } } } if (msg != "") { ChatManager.DrawColorCodedStringWithShadow(Main.spriteBatch, Main.fontMouseText, msg, Main.MouseScreen + new Vector2(15f, 15f), new Color(Main.mouseTextColor, Main.mouseTextColor, Main.mouseTextColor, Main.mouseTextColor), 0f, Vector2.Zero, Vector2.One, -1f, 2f); } if (msg2 != "") { ChatManager.DrawColorCodedStringWithShadow(Main.spriteBatch, Main.fontMouseText, msg2, Main.MouseScreen + new Vector2(15f, 40f), new Color(Main.mouseTextColor, Main.mouseTextColor, Main.mouseTextColor, Main.mouseTextColor), 0f, Vector2.Zero, Vector2.One, -1f, 2f); } if (msg3 != "") { ChatManager.DrawColorCodedStringWithShadow(Main.spriteBatch, Main.fontMouseText, msg2, Main.MouseScreen + new Vector2(15f, 40f), new Color(Main.mouseTextColor, Main.mouseTextColor, Main.mouseTextColor, Main.mouseTextColor), 0f, Vector2.Zero, Vector2.One, -1f, 2f); } } else { modPlayer.gamblerUIDeckDisplay = false; } } if ((modPlayer.gamblerUIDisplayTimer > 0 || modPlayer.gamblerChips > 0) && modPlayer.gamblerUIFightDisplay) { if (modPlayer.gamblerCardCurrent.type != this.cardID) { UICard = this.getUiCardTexture(modPlayer, 0); this.cardID = modPlayer.gamblerCardCurrent.type; } if (modPlayer.gamblerCardNext[0].type != this.cardIDNext1) { UICardNext1 = this.getUiCardTexture(modPlayer, 1); this.cardIDNext1 = modPlayer.gamblerCardNext[0].type; } if (modPlayer.gamblerCardNext[1].type != this.cardIDNext2) { UICardNext2 = this.getUiCardTexture(modPlayer, 2); this.cardIDNext2 = modPlayer.gamblerCardNext[1].type; } if (modPlayer.gamblerCardNext[2].type != this.cardIDNext3) { UICardNext3 = this.getUiCardTexture(modPlayer, 3); this.cardIDNext3 = modPlayer.gamblerCardNext[2].type; } int drawHeight = 70; int drawSide = 0; int leftOffset = 0; int leftOffset2 = 0; Texture2D chip = chip1; spriteBatch.Draw(UIDeck, new Rectangle(point.X + 8, point.Y + 160, 26, 32), backgroundColor); spriteBatch.Draw(UICard, new Rectangle(point.X + 8, point.Y + 160, 20, 26), backgroundColor); if (modPlayer.gamblerSeeCards > 2) { spriteBatch.Draw(UICardNext3, new Rectangle(point.X + 40, point.Y + 194, 20, 26), backgroundColor); } if (modPlayer.gamblerSeeCards > 1) { spriteBatch.Draw(UICardNext2, new Rectangle(point.X + 24, point.Y + 194, 20, 26), backgroundColor); } if (modPlayer.gamblerSeeCards > 0) { spriteBatch.Draw(UICardNext1, new Rectangle(point.X + 8, point.Y + 194, 20, 26), backgroundColor); } for (int i = 0; i < modPlayer.gamblerRedraws; i++) { spriteBatch.Draw(UIRedraw, new Rectangle(point.X + 20 - drawSide, point.Y + 94, 14, 20), backgroundColor); drawSide += 4; } int unit = (int)(modPlayer.gamblerShuffleCooldownMax / 34) + 1; int val = 0; spriteBatch.Draw(ressourceBar, new Rectangle(point.X + 36, point.Y + 116, 12, 76), backgroundColor); while (val < modPlayer.gamblerShuffleCooldown) { spriteBatch.Draw(ressourceBarFull, new Rectangle(point.X + 40, point.Y + 116 + drawHeight, 4, 2), backgroundColor); drawHeight -= 2; val += unit; } if (val > 0) { drawHeight += 2; spriteBatch.Draw(ressourceBarTop, new Rectangle(point.X + 40, point.Y + 116 + drawHeight, 4, 2), backgroundColor); } if (modPlayer.gamblerDiceValue > 0) { Texture2D dice = dice1; switch (modPlayer.gamblerDiceValue) { case 1: dice = dice1; break; case 2: dice = dice2; break; case 3: dice = dice3; break; case 4: dice = dice4; break; case 5: dice = dice5; break; case 6: dice = dice6; break; default: break; } spriteBatch.Draw(dice, new Rectangle(point.X + 36, point.Y + 90, 24, 24), backgroundColor); drawHeight = 70; val = 0; spriteBatch.Draw(ressourceBar, new Rectangle(point.X + 50, point.Y + 116, 12, 76), backgroundColor); while (val < modPlayer.gamblerDiceDuration) { spriteBatch.Draw(ressourceBarDiceFull, new Rectangle(point.X + 54, point.Y + 116 + drawHeight, 4, 2), backgroundColor); drawHeight -= 2; val += 60; } if (val > 0) { spriteBatch.Draw(ressourceBarDiceTop, new Rectangle(point.X + 54, point.Y + 116 + drawHeight, 4, 2), backgroundColor); } } drawHeight = 36; for (int i = 1; i < modPlayer.gamblerChips + 1; i++) { spriteBatch.Draw(chip, new Rectangle(point.X + 18 - leftOffset - leftOffset2, point.Y + 116 + drawHeight, 14, 6), backgroundColor); drawHeight -= 4; if (i % 10 == 0) { drawHeight = 36; leftOffset2 = leftOffset2 == 4 ? 0 : 4; switch (i) { case 10: chip = chip2; break; case 20: chip = chip3; break; case 30: chip = chip4; break; case 40: chip = chip5; break; default: break; } } leftOffset = leftOffset == 2 ? 0 : 2; } } } }
public override void SafeOnHitNPC(NPC target, int damage, float knockback, bool crit, Player player, OrchidModPlayer modPlayer) { Mod thoriumMod = OrchidMod.ThoriumMod; if (thoriumMod != null) { target.AddBuff((thoriumMod.BuffType("Freezing")), 2 * 60); } }
public override void UpdateAccessory(Player player, bool hideVisual) { OrchidModPlayer modPlayer = player.GetModPlayer <OrchidModPlayer>(); modPlayer.gamblerSlimyLollipop = true; }
public override void SafeOnHitNPC(NPC target, int damage, float knockback, bool crit, Player player, OrchidModPlayer modPlayer) { if (modPlayer.gamblerElementalLens) { target.AddBuff(153, 60 * 2); // Shadowflame } }
protected override void DrawSelf(SpriteBatch spriteBatch) { if (this.usedScale != Main.UIScale) { this.usedScale = Main.UIScale; this.Left.Set(Main.screenWidth - 100f, 0f); this.Top.Set(Main.screenHeight - 130f, 0f); } Player player = Main.player[Main.myPlayer]; OrchidModPlayer modPlayer = player.GetModPlayer <OrchidModPlayer>(); CalculatedStyle dimensions = GetDimensions(); Point point = new Point((int)dimensions.X, (int)dimensions.Y - 100); if (Main.invasionType != 0 || Main.pumpkinMoon || Main.snowMoon) { point.Y -= 60; } int width = (int)Math.Ceiling(dimensions.Width); int height = (int)Math.Ceiling(dimensions.Height); if (!Main.playerInventory && !player.dead) { int buffTimerVal = ((int)(modPlayer.shamanBuffTimer * 60 / 25)); buffTimerVal += buffTimerVal == 0 ? 1 : 0; int buffTimerValRef = modPlayer.shamanBuffTimer * 60 - buffTimerVal; if (modPlayer.UIDisplayTimer > 0) { spriteBatch.Draw(shamanUIMainFrame, new Rectangle(point.X, point.Y, width, height), backgroundColor); this.drawnBondEffectBar(1, 100 - modPlayer.shamanFireBondLoading, spriteBatch, point); this.drawnBondEffectBar(2, 100 - modPlayer.shamanWaterBondLoading, spriteBatch, point); this.drawnBondEffectBar(3, 100 - modPlayer.shamanAirBondLoading, spriteBatch, point); this.drawnBondEffectBar(4, 100 - modPlayer.shamanEarthBondLoading, spriteBatch, point); this.drawnBondEffectBar(5, 100 - modPlayer.shamanSpiritBondLoading, spriteBatch, point); if (modPlayer.shamanFireTimer > 0) { spriteBatch.Draw(FireSymbolBasic, new Rectangle(point.X + 70, point.Y + 8, width / (94 / 18), height / (180 / 18)), backgroundColor); int timerRef = modPlayer.shamanFireTimer - buffTimerVal; timerRef = timerRef > modPlayer.shamanBuffTimer * 60 - buffTimerVal ? buffTimerValRef - buffTimerVal : timerRef; this.drawDuration(timerRef, 24, buffTimerVal, spriteBatch, point); List <Texture2D> symbolsList = new List <Texture2D>(); if (modPlayer.shamanFire) { symbolsList.Add(SymbolFire); } if (modPlayer.shamanIce) { symbolsList.Add(SymbolIce); } if (modPlayer.shamanPoison) { symbolsList.Add(SymbolPoison); } if (modPlayer.shamanDemonite) { symbolsList.Add(SymbolDemonite); } if (modPlayer.shamanVenom) { symbolsList.Add(SymbolVenom); } if (modPlayer.shamanSmite) { symbolsList.Add(SymbolSmite); } if (modPlayer.shamanRuby) { symbolsList.Add(SymbolRuby); } this.drawSymbols(2, symbolsList, spriteBatch, point); } if (modPlayer.shamanWaterTimer > 0) { spriteBatch.Draw(WaterSymbolBasic, new Rectangle(point.X + 70, point.Y + 44, width / (94 / 18), height / (180 / 18)), backgroundColor); int timerRef = modPlayer.shamanWaterTimer - buffTimerVal; timerRef = timerRef > modPlayer.shamanBuffTimer * 60 - buffTimerVal ? buffTimerValRef - buffTimerVal : timerRef; this.drawDuration(timerRef, 60, buffTimerVal, spriteBatch, point); List <Texture2D> symbolsList = new List <Texture2D>(); if (modPlayer.shamanWaterHoney) { symbolsList.Add(SymbolWaterHoney); } if (modPlayer.shamanSkull) { symbolsList.Add(SymbolSkull); } if (modPlayer.shamanDestroyer) { symbolsList.Add(SymbolDestroyer); } if (modPlayer.shamanSapphire) { symbolsList.Add(SymbolSapphire); } this.drawSymbols(38, symbolsList, spriteBatch, point); } if (modPlayer.shamanAirTimer > 0) { spriteBatch.Draw(AirSymbolBasic, new Rectangle(point.X + 70, point.Y + 80, width / (94 / 18), height / (180 / 18)), backgroundColor); int timerRef = modPlayer.shamanAirTimer - buffTimerVal; timerRef = timerRef > modPlayer.shamanBuffTimer * 60 - buffTimerVal ? buffTimerValRef - buffTimerVal : timerRef; this.drawDuration(timerRef, 96, buffTimerVal, spriteBatch, point); List <Texture2D> symbolsList = new List <Texture2D>(); if (modPlayer.shamanFeather) { symbolsList.Add(SymbolFeather); } if (modPlayer.shamanHarpyAnklet) { symbolsList.Add(SymbolAnklet); } if (modPlayer.shamanDripping) { symbolsList.Add(SymbolLava); } if (modPlayer.shamanWyvern) { symbolsList.Add(SymbolWyvern); } if (modPlayer.shamanEmerald) { symbolsList.Add(SymbolEmerald); } this.drawSymbols(74, symbolsList, spriteBatch, point); } if (modPlayer.shamanEarthTimer > 0) { spriteBatch.Draw(EarthSymbolBasic, new Rectangle(point.X + 70, point.Y + 116, width / (94 / 18), height / (180 / 18)), backgroundColor); int timerRef = modPlayer.shamanEarthTimer - buffTimerVal; timerRef = timerRef > modPlayer.shamanBuffTimer * 60 - buffTimerVal ? buffTimerValRef - buffTimerVal : timerRef; this.drawDuration(timerRef, 132, buffTimerVal, spriteBatch, point); List <Texture2D> symbolsList = new List <Texture2D>(); if (modPlayer.shamanHoney) { symbolsList.Add(SymbolBee); } if (modPlayer.shamanAmber) { symbolsList.Add(SymbolAmber); } if (modPlayer.shamanCrimtane) { symbolsList.Add(SymbolCrimtane); } if (modPlayer.shamanRage) { symbolsList.Add(SymbolRage); } if (modPlayer.shamanHeavy) { symbolsList.Add(SymbolHeavy); } if (modPlayer.shamanForest) { symbolsList.Add(SymbolForest); } if (modPlayer.shamanDiabolist) { symbolsList.Add(SymbolDiabolist); } if (modPlayer.shamanTopaz) { symbolsList.Add(SymbolTopaz); } this.drawSymbols(110, symbolsList, spriteBatch, point); } if (modPlayer.shamanSpiritTimer > 0) { spriteBatch.Draw(SpiritSymbolBasic, new Rectangle(point.X + 70, point.Y + 152, width / (94 / 18), height / (180 / 18)), backgroundColor); int timerRef = modPlayer.shamanSpiritTimer - buffTimerVal; timerRef = timerRef > modPlayer.shamanBuffTimer * 60 - buffTimerVal ? buffTimerValRef - buffTimerVal : timerRef; this.drawDuration(timerRef, 168, buffTimerVal, spriteBatch, point); List <Texture2D> symbolsList = new List <Texture2D>(); if (modPlayer.shamanAmethyst) { symbolsList.Add(SymbolAmethyst); } this.drawSymbols(146, symbolsList, spriteBatch, point); } } } }
public override void UpdateEquip(Player player) { OrchidModPlayer modPlayer = player.GetModPlayer <OrchidModPlayer>(); modPlayer.gamblerDamage += 0.1f; }
public override void UpdateAccessory(Player player, bool hideVisual) { OrchidModPlayer modPlayer = player.GetModPlayer <OrchidModPlayer>(); modPlayer.shamanBuffTimer += 3; }
protected override void DrawSelf(SpriteBatch spriteBatch) { Player player = Main.LocalPlayer; Vector2 position = (player.position + new Vector2(player.width * 0.5f, player.gfxOffY + player.gravDir > 0 ? player.height - 10 + player.gfxOffY : 10 + player.gfxOffY)).Floor(); position = Vector2.Transform(position - Main.screenPosition, Main.GameViewMatrix.EffectMatrix * Main.GameViewMatrix.ZoomMatrix) / Main.UIScale; this.Left.Set(position.X, 0f); this.Top.Set(position.Y, 0f); CalculatedStyle dimensions = GetDimensions(); Point point = new Point((int)dimensions.X, (int)dimensions.Y); OrchidModPlayer modPlayer = player.GetModPlayer <OrchidModPlayer>(); if (!player.dead) { if (modPlayer.UIDisplayTimer > 0) { int buffTimer = (60 * modPlayer.shamanBuffTimer) / 3; int attackTimer = modPlayer.shamanFireTimer; int defenseTimer = modPlayer.shamanWaterTimer; int criticalTimer = modPlayer.shamanAirTimer; int regenTimer = modPlayer.shamanEarthTimer; int speedTimer = modPlayer.shamanSpiritTimer; int[] currentTimers = new int[] { 0, 0, 0, 0, 0 }; int lastElement = 0; currentTimers[0] = attackTimer > buffTimer * 2 ? 3 : attackTimer > buffTimer ? 2 : attackTimer > 0 ? 1 : 0; currentTimers[1] = defenseTimer > buffTimer * 2 ? 3 : defenseTimer > buffTimer ? 2 : defenseTimer > 0 ? 1 : 0; currentTimers[2] = criticalTimer > buffTimer * 2 ? 3 : criticalTimer > buffTimer ? 2 : criticalTimer > 0 ? 1 : 0; currentTimers[3] = regenTimer > buffTimer * 2 ? 3 : regenTimer > buffTimer ? 2 : regenTimer > 0 ? 1 : 0; currentTimers[4] = speedTimer > buffTimer * 2 ? 3 : speedTimer > buffTimer ? 2 : speedTimer > 0 ? 1 : 0; for (int i = 0; i < 5; i++) { if (currentTimers[i] != this.shamanTimers[i]) { String str = ""; this.shamanTimers[i] = currentTimers[i]; if (i == 0) { switch (currentTimers[i]) { case 1: str = "Fire3"; break; case 2: str = "Fire2"; break; case 3: str = "Fire1"; break; default: str = "Disabled"; break; } symbolAttack = ModContent.GetTexture("OrchidMod/Shaman/UI/ModUITextures/Character/" + str); } else if (i == 1) { switch (currentTimers[i]) { case 1: str = "Water3"; break; case 2: str = "Water2"; break; case 3: str = "Water1"; break; default: str = "Disabled"; break; } symbolDefense = ModContent.GetTexture("OrchidMod/Shaman/UI/ModUITextures/Character/" + str); } else if (i == 2) { switch (currentTimers[i]) { case 1: str = "Wind3"; break; case 2: str = "Wind2"; break; case 3: str = "Wind1"; break; default: str = "Disabled"; break; } symbolCritical = ModContent.GetTexture("OrchidMod/Shaman/UI/ModUITextures/Character/" + str); } else if (i == 3) { switch (currentTimers[i]) { case 1: str = "Earth3"; break; case 2: str = "Earth2"; break; case 3: str = "Earth1"; break; default: str = "Disabled"; break; } symbolRegeneration = ModContent.GetTexture("OrchidMod/Shaman/UI/ModUITextures/Character/" + str); } else if (i == 4) { switch (currentTimers[i]) { case 1: str = "Spirit3"; break; case 2: str = "Spirit2"; break; case 3: str = "Spirit1"; break; default: str = "Disabled"; break; } symbolSpeed = ModContent.GetTexture("OrchidMod/Shaman/UI/ModUITextures/Character/" + str); } } } int drawSize = 12; int offSetY = modPlayer.alchemistPotencyDisplayTimer > 0 ? 50 : 20; spriteBatch.Draw(symbolAttack, new Rectangle(point.X - 38, point.Y + offSetY, drawSize, drawSize), backgroundColor); spriteBatch.Draw(symbolDefense, new Rectangle(point.X - 24, point.Y + 10 + offSetY, drawSize, drawSize), backgroundColor); spriteBatch.Draw(symbolCritical, new Rectangle(point.X - 6, point.Y + 14 + offSetY, drawSize, drawSize), backgroundColor); spriteBatch.Draw(symbolRegeneration, new Rectangle(point.X + 12, point.Y + 10 + offSetY, drawSize, drawSize), backgroundColor); spriteBatch.Draw(symbolSpeed, new Rectangle(point.X + 26, point.Y + offSetY, drawSize, drawSize), backgroundColor); offSetY += drawSize + 2; if (modPlayer.shamanPollFireMax) { spriteBatch.Draw(fireLoaded, new Rectangle(point.X - 38, point.Y + offSetY, drawSize, drawSize - 4), backgroundColor); } if (modPlayer.shamanPollWaterMax) { spriteBatch.Draw(waterLoaded, new Rectangle(point.X - 24, point.Y + 10 + offSetY, drawSize, drawSize - 4), backgroundColor); } if (modPlayer.shamanPollAirMax) { spriteBatch.Draw(airLoaded, new Rectangle(point.X - 6, point.Y + 14 + offSetY, drawSize, drawSize - 4), backgroundColor); } if (modPlayer.shamanPollEarthMax) { spriteBatch.Draw(earthLoaded, new Rectangle(point.X + 12, point.Y + 10 + offSetY, drawSize, drawSize - 4), backgroundColor); } if (modPlayer.shamanPollSpiritMax) { spriteBatch.Draw(spiritLoaded, new Rectangle(point.X + 26, point.Y + offSetY, drawSize, drawSize - 4), backgroundColor); } Item heldItem = player.HeldItem; if (heldItem.type != 0) { OrchidModGlobalItem orchidItem = heldItem.GetGlobalItem <OrchidModGlobalItem>(); if (orchidItem.shamanWeapon) { spriteBatch.Draw(resourceBar, new Rectangle(point.X - (resourceBar.Width / 2), point.Y + offSetY + 20, resourceBar.Width, resourceBar.Height), backgroundColor); Point newPoint = new Point(point.X - (resourceBar.Width / 2) + 6, point.Y + offSetY + 20 + 6); int val = 0; switch (orchidItem.shamanWeaponElement) { case 1: if (lastElement != 1) { resource = ModContent.GetTexture("OrchidMod/Shaman/UI/ModUITextures/ModUIMain/FireBar"); resourceEnd = ModContent.GetTexture("OrchidMod/Shaman/UI/ModUITextures/ModUIMain/FireBarEnd"); lastElement = 1; } val = 100 - modPlayer.shamanFireBondLoading; this.drawnBondEffectBar(val, spriteBatch, newPoint); this.drawWeakSymbol(val, spriteBatch, newPoint); break; case 2: if (lastElement != 2) { resource = ModContent.GetTexture("OrchidMod/Shaman/UI/ModUITextures/ModUIMain/WaterBar"); resourceEnd = ModContent.GetTexture("OrchidMod/Shaman/UI/ModUITextures/ModUIMain/WaterBarEnd"); lastElement = 2; } val = 100 - modPlayer.shamanWaterBondLoading; this.drawnBondEffectBar(val, spriteBatch, newPoint); this.drawWeakSymbol(val, spriteBatch, newPoint); break; case 3: if (lastElement != 3) { resource = ModContent.GetTexture("OrchidMod/Shaman/UI/ModUITextures/ModUIMain/AirBar"); resourceEnd = ModContent.GetTexture("OrchidMod/Shaman/UI/ModUITextures/ModUIMain/AirBarEnd"); lastElement = 3; } val = 100 - modPlayer.shamanAirBondLoading; this.drawnBondEffectBar(val, spriteBatch, newPoint); this.drawWeakSymbol(val, spriteBatch, newPoint); break; case 4: if (lastElement != 4) { resource = ModContent.GetTexture("OrchidMod/Shaman/UI/ModUITextures/ModUIMain/EarthBar"); resourceEnd = ModContent.GetTexture("OrchidMod/Shaman/UI/ModUITextures/ModUIMain/EarthBarEnd"); lastElement = 4; } val = 100 - modPlayer.shamanEarthBondLoading; this.drawnBondEffectBar(val, spriteBatch, newPoint); this.drawWeakSymbol(val, spriteBatch, newPoint); break; case 5: if (lastElement != 5) { resource = ModContent.GetTexture("OrchidMod/Shaman/UI/ModUITextures/ModUIMain/SpiritBar"); resourceEnd = ModContent.GetTexture("OrchidMod/Shaman/UI/ModUITextures/ModUIMain/SpiritBarEnd"); lastElement = 5; } val = 100 - modPlayer.shamanSpiritBondLoading; this.drawnBondEffectBar(val, spriteBatch, newPoint); this.drawWeakSymbol(val, spriteBatch, newPoint); break; default: break; } } } } } }
public override void SafeOnHitNPC(NPC target, int damage, float knockback, bool crit, Player player, OrchidModPlayer modPlayer) { projectile.friendly = false; projectile.timeLeft = projectile.timeLeft > 40 ? 40 : projectile.timeLeft; if (modPlayer.shamanOrbSmall != ShamanOrbSmall.RUBY) { modPlayer.shamanOrbSmall = ShamanOrbSmall.RUBY; modPlayer.orbCountSmall = 0; } modPlayer.orbCountSmall++; if (modPlayer.orbCountSmall == 1) { Projectile.NewProjectile(player.Center.X - 15, player.position.Y - 20, 0f, 0f, mod.ProjectileType("RubyOrb"), 0, 0, projectile.owner, 0f, 0f); if (player.FindBuffIndex(mod.BuffType("ShamanicBaubles")) > -1) { modPlayer.orbCountSmall++; Projectile.NewProjectile(player.Center.X, player.position.Y - 25, 0f, 0f, mod.ProjectileType("RubyOrb"), 1, 0, projectile.owner, 0f, 0f); player.ClearBuff(mod.BuffType("ShamanicBaubles")); } } if (modPlayer.orbCountSmall == 2) { Projectile.NewProjectile(player.Center.X, player.position.Y - 25, 0f, 0f, mod.ProjectileType("RubyOrb"), 0, 0, projectile.owner, 0f, 0f); } if (modPlayer.orbCountSmall == 3) { Projectile.NewProjectile(player.Center.X + 15, player.position.Y - 20, 0f, 0f, mod.ProjectileType("RubyOrb"), 0, 0, projectile.owner, 0f, 0f); } if (modPlayer.orbCountSmall > 3) { player.AddBuff(mod.BuffType("RubyEmpowerment"), 60 * 30); modPlayer.orbCountSmall = 0; } }
public override void AddVariousEffects(Player player, OrchidModPlayer modPlayer, AlchemistProj alchProj, Projectile proj, OrchidModGlobalItem globalItem) { alchProj.nbElementsNoExtract--; }
public override void SafeOnHitNPC(NPC target, int damage, float knockback, bool crit, Player player, OrchidModPlayer modPlayer) { Mod thoriumMod = OrchidMod.ThoriumMod; if (thoriumMod != null) { target.AddBuff((thoriumMod.BuffType("TerrariumMix")), 2 * 60); } if (modPlayer.shamanOrbLarge != ShamanOrbLarge.TERRARIUM) { modPlayer.shamanOrbLarge = ShamanOrbLarge.TERRARIUM; modPlayer.orbCountLarge = 0; } modPlayer.orbCountLarge++; float orbX = player.position.X + player.width / 2; float orbY = player.position.Y; if (player.FindBuffIndex(mod.BuffType("ShamanicBaubles")) > -1 && modPlayer.orbCountLarge < 5) { modPlayer.orbCountLarge += 5; Projectile.NewProjectile(orbX - 43, orbY - 38, 0f, 0f, mod.ProjectileType("TerrariumScepterOrb"), 0, 0, projectile.owner, 0f, 0f); player.ClearBuff(mod.BuffType("ShamanicBaubles")); } if (modPlayer.orbCountLarge == 5) { Projectile.NewProjectile(orbX - 43, orbY - 38, 0f, 0f, mod.ProjectileType("TerrariumScepterOrb"), 0, 0, projectile.owner, 0f, 0f); } if (modPlayer.orbCountLarge == 10) { Projectile.NewProjectile(orbX - 30, orbY - 48, 0f, 0f, mod.ProjectileType("TerrariumScepterOrb"), 0, 0, projectile.owner, 0f, 0f); } if (modPlayer.orbCountLarge == 15) { Projectile.NewProjectile(orbX - 15, orbY - 53, 0f, 0f, mod.ProjectileType("TerrariumScepterOrb"), 0, 0, projectile.owner, 0f, 0f); } if (modPlayer.orbCountLarge == 20) { Projectile.NewProjectile(orbX, orbY - 55, 0f, 0f, mod.ProjectileType("TerrariumScepterOrb"), 0, 0, projectile.owner, 0f, 0f); } if (modPlayer.orbCountLarge == 25) { Projectile.NewProjectile(orbX + 15, orbY - 53, 0f, 0f, mod.ProjectileType("TerrariumScepterOrb"), 0, 0, projectile.owner, 0f, 0f); } if (modPlayer.orbCountLarge == 30) { Projectile.NewProjectile(orbX + 30, orbY - 48, 0f, 0f, mod.ProjectileType("TerrariumScepterOrb"), 0, 0, projectile.owner, 0f, 0f); } if (modPlayer.orbCountLarge == 35) { Projectile.NewProjectile(orbX + 43, orbY - 38, 0f, 0f, mod.ProjectileType("TerrariumScepterOrb"), 0, 0, projectile.owner, 0f, 0f); } if (modPlayer.orbCountLarge > 35) { int dmg = (int)(80 * player.GetModPlayer <OrchidModPlayer>().shamanDamage); Projectile.NewProjectile(orbX - 43, orbY - 38, -3f, -5f, mod.ProjectileType("TerrariumScepterOrbProj"), dmg, 0f, projectile.owner, 0f, 0f); Projectile.NewProjectile(orbX - 30, orbY - 48, -2f, -5f, mod.ProjectileType("TerrariumScepterOrbProj"), dmg, 0f, projectile.owner, 0f, 0f); Projectile.NewProjectile(orbX - 15, orbY - 53, -1f, -5f, mod.ProjectileType("TerrariumScepterOrbProj"), dmg, 0f, projectile.owner, 0f, 0f); Projectile.NewProjectile(orbX, orbY - 55, 0f, -5f, mod.ProjectileType("TerrariumScepterOrbProj"), dmg, 0f, projectile.owner, 0f, 0f); Projectile.NewProjectile(orbX + 15, orbY - 53, 1f, -5f, mod.ProjectileType("TerrariumScepterOrbProj"), dmg, 0f, projectile.owner, 0f, 0f); Projectile.NewProjectile(orbX + 30, orbY - 48, 2f, -5f, mod.ProjectileType("TerrariumScepterOrbProj"), dmg, 0f, projectile.owner, 0f, 0f); Projectile.NewProjectile(orbX + 43, orbY - 38, 3f, -5f, mod.ProjectileType("TerrariumScepterOrbProj"), dmg, 0f, projectile.owner, 0f, 0f); modPlayer.orbCountLarge = 0; } }
public override void UpdateAccessory(Player player, bool hideVisual) { OrchidModPlayer modPlayer = player.GetModPlayer <OrchidModPlayer>(); modPlayer.shamanDamage += 0.15f; }
public override void SafeOnHitNPC(NPC target, int damage, float knockback, bool crit, Player player, OrchidModPlayer modPlayer) { }
public override void UpdateAccessory(Player player, bool hideVisual) { OrchidModPlayer modPlayer = player.GetModPlayer <OrchidModPlayer>(); modPlayer.shamanHarpyAnklet = true; }
public override void SafeOnHitNPC(NPC target, int damage, float knockback, bool crit, Player player, OrchidModPlayer modPlayer) { for (int i = 0; i < 4; i++) { int dust = Dust.NewDust(target.position, target.width, target.height, 159); Main.dust[dust].noGravity = true; Main.dust[dust].scale = (float)120 * 0.015f; Main.dust[dust].velocity *= 1.5f; } if (modPlayer.shamanOrbUnique != ShamanOrbUnique.GRANDTHUNDERBIRD) { modPlayer.shamanOrbUnique = ShamanOrbUnique.GRANDTHUNDERBIRD; modPlayer.orbCountUnique = 0; } modPlayer.orbCountUnique++; //modPlayer.sendOrbCountPackets(); if (modPlayer.orbCountUnique == 5) { Projectile.NewProjectile(player.Center.X, player.position.Y - 79, 0f, 0f, mod.ProjectileType("ThunderScepterOrb"), 0, 0, projectile.owner, 0f, 0f); } if (player.FindBuffIndex(mod.BuffType("ShamanicBaubles")) > -1 && modPlayer.orbCountUnique < 5) { modPlayer.orbCountUnique += 5; Projectile.NewProjectile(player.Center.X, player.position.Y - 79, 0f, 0f, mod.ProjectileType("ThunderScepterOrb"), 0, 0, projectile.owner, 0f, 0f); player.ClearBuff(mod.BuffType("ShamanicBaubles")); //modPlayer.sendOrbCountPackets(); } if (modPlayer.orbCountUnique == 20) { modPlayer.orbCountUnique = 0; Projectile.NewProjectile(player.Center.X, player.position.Y - 79, 0f, 5f, mod.ProjectileType("ThunderScepterOrbProj"), 0, 0.0f, projectile.owner, 0.0f, 0.0f); } }
public override void OnHitNPCSecond(NPC target, int damage, float knockback, bool crit, Player player, OrchidModPlayer modPlayer, OrchidModAlchemistNPC modTarget, OrchidModGlobalNPC modTargetGlobal, AlchemistProj alchProj, Projectile projectile, OrchidModGlobalItem globalItem) { if (!(target.boss || target.type == NPCID.TargetDummy) && target.knockBackResist > 0f) { target.AddBuff(mod.BuffType("SlimeSlow"), 90 * (alchProj.nbElements * 2)); } int rand = alchProj.nbElements; rand += alchProj.hasCloud() ? 2 : 0; if (Main.rand.Next(10) < rand && !alchProj.noCatalyticSpawn) { int dmg = getSecondaryDamage(player, modPlayer, alchProj.nbElements); int proj = ProjectileType <Alchemist.Projectiles.Reactive.SlimeBubbleLava>(); Vector2 perturbedSpeed = new Vector2(0f, -5f).RotatedByRandom(MathHelper.ToRadians(20)); Projectile.NewProjectile(projectile.Center.X, projectile.Center.Y, perturbedSpeed.X, perturbedSpeed.Y, proj, dmg, 0f, projectile.owner); } if (modTarget.alchemistFire > 0) { int nb = Main.rand.Next(3) + 3; int dmg = (int)(getSecondaryDamage(player, modPlayer, alchProj.nbElements) * 1.5); int proj = ProjectileType <Alchemist.Projectiles.Fire.HellSlimeFlaskProj>(); for (int i = 0; i < nb; i++) { Vector2 perturbedSpeed = projectile.velocity.RotatedByRandom(MathHelper.ToRadians(15)) * 0.75f; Projectile.NewProjectile(projectile.Center.X, projectile.Center.Y, perturbedSpeed.X, perturbedSpeed.Y, proj, dmg, 1f, projectile.owner); } } }