public override bool SafeShoot(Player player, ref Vector2 position, ref float speedX, ref float speedY, ref int type, ref int damage, ref float knockBack) { OrchidModPlayer modPlayer = player.GetModPlayer <OrchidModPlayer>(); int BuffsCount = OrchidModShamanHelper.getNbShamanicBonds(player, modPlayer, mod); BuffsCount -= BuffsCount > 0 ? 1 : 0; float spread = 1f * 0.0574f; float baseSpeed = (float)Math.Sqrt(speedX * speedX + speedY * speedY); double startAngle = Math.Atan2(speedX, speedY) - spread; double deltaAngle = spread; double offsetAngle = startAngle - deltaAngle * 5; if (BuffsCount > 3) { offsetAngle -= deltaAngle * 4; } int i; for (i = 0; i < BuffsCount; i++) { offsetAngle += deltaAngle * 4; this.NewShamanProjectile(position.X, position.Y, baseSpeed * (float)Math.Sin(offsetAngle), baseSpeed * (float)Math.Cos(offsetAngle), mod.ProjectileType("TerraSpecterProj"), (int)(item.damage * 0.55), knockBack, item.owner); } return(true); }
public override void UpdateInventory(Player player) { OrchidModPlayer modPlayer = player.GetModPlayer <OrchidModPlayer>(); int nbBonds = OrchidModShamanHelper.getNbShamanicBonds(player, modPlayer, mod); switch (nbBonds) { case 0: item.useTime = 60; break; case 1: item.useTime = 30; break; case 2: item.useTime = 20; break; case 3: item.useTime = 15; break; case 4: item.useTime = 12; break; case 5: item.useTime = 10; break; } }
public override void SafeModifyWeaponDamage(Player player, ref float add, ref float mult, ref float flat) { OrchidModPlayer modPlayer = player.GetModPlayer <OrchidModPlayer>(); int nbBonds = OrchidModShamanHelper.getNbShamanicBonds(player, modPlayer, mod); mult *= modPlayer.shamanDamage + (nbBonds * 0.1f); }
public override void UpdateAccessory(Player player, bool hideVisual) { OrchidModPlayer modPlayer = player.GetModPlayer <OrchidModPlayer>(); if (OrchidModShamanHelper.getNbShamanicBonds(player, modPlayer, mod) > 0) { if (modPlayer.orbCountSmall == 0 && modPlayer.shamanOrbSmall != ShamanOrbSmall.NULL) { player.AddBuff(mod.BuffType("ShamanicBaubles"), 10 * 60); modPlayer.shamanOrbSmall = ShamanOrbSmall.NULL; } if (modPlayer.orbCountBig == 0 && modPlayer.shamanOrbBig != ShamanOrbBig.NULL) { player.AddBuff(mod.BuffType("ShamanicBaubles"), 10 * 60); modPlayer.shamanOrbBig = ShamanOrbBig.NULL; } if (modPlayer.orbCountLarge == 0 && modPlayer.shamanOrbLarge != ShamanOrbLarge.NULL) { player.AddBuff(mod.BuffType("ShamanicBaubles"), 10 * 60); modPlayer.shamanOrbLarge = ShamanOrbLarge.NULL; } if (modPlayer.orbCountUnique == 0 && modPlayer.shamanOrbUnique != ShamanOrbUnique.NULL) { player.AddBuff(mod.BuffType("ShamanicBaubles"), 10 * 60); modPlayer.shamanOrbUnique = ShamanOrbUnique.NULL; } } }
public override void UpdateInventory(Player player) { OrchidModPlayer modPlayer = player.GetModPlayer <OrchidModPlayer>(); int nbBonds = OrchidModShamanHelper.getNbShamanicBonds(player, modPlayer, mod); item.shootSpeed = 7f + 2f * nbBonds; }
public override void Kill(int timeLeft) { Player player = Main.player[projectile.owner]; OrchidModPlayer modPlayer = player.GetModPlayer <OrchidModPlayer>(); int nbBonds = OrchidModShamanHelper.getNbShamanicBonds(player, modPlayer, mod); Projectile.NewProjectile(projectile.position.X, projectile.position.Y, 0f, 0f, mod.ProjectileType("MoltenResidueScepterProjExplosion"), projectile.damage + (5 * nbBonds), 0.0f, projectile.owner, 0.0f, 0.0f); Main.PlaySound(2, (int)projectile.position.X, (int)projectile.position.Y, 14); float oldVelocityX = 0 + projectile.velocity.X / 2; float oldVelocityY = 0 + projectile.velocity.Y / 2; projectile.velocity.X *= 0; projectile.velocity.Y *= 0; for (int i = 1; i < nbBonds + 1; i++) { spawnDustCircle(6, 15 * i); } projectile.velocity.X = oldVelocityX; projectile.velocity.Y = oldVelocityY; projectile.position.X += projectile.velocity.X; projectile.position.Y += projectile.velocity.Y; spawnDustCircle(6, nbBonds * 15 + 15); projectile.position.X += projectile.velocity.X * 3; projectile.position.Y += projectile.velocity.Y * 3; spawnDustCircle(6, nbBonds * 10 + 10); projectile.position.X += projectile.velocity.X * 3; projectile.position.Y += projectile.velocity.Y * 3; spawnDustCircle(6, nbBonds * 5 + 5); projectile.velocity *= 0; }
public override void Kill(int timeLeft) { Player player = Main.player[projectile.owner]; OrchidModPlayer modPlayer = player.GetModPlayer <OrchidModPlayer>(); int dmg = (int)(10 * modPlayer.shamanDamage); for (int i = 0; i < 13; i++) { int dust = Dust.NewDust(projectile.position, projectile.width, projectile.height, 153); Main.dust[dust].noGravity = true; } for (int i = 0; i < OrchidModShamanHelper.getNbShamanicBonds(player, modPlayer, mod); i++) { if (Main.rand.Next(4) == 0) { if (player.strongBees && Main.rand.Next(2) == 0) { Projectile.NewProjectile(projectile.position.X, projectile.position.Y, 3 - Main.rand.Next(6), 3 - Main.rand.Next(6), 566, (int)(dmg * 1.15f), 0f, projectile.owner, 0f, 0f); } else { Projectile.NewProjectile(projectile.position.X, projectile.position.Y, 3 - Main.rand.Next(6), 3 - Main.rand.Next(6), 181, dmg, 0f, projectile.owner, 0f, 0f); } } } }
public override void SafeOnHitNPC(NPC target, int damage, float knockback, bool crit, Player player, OrchidModPlayer modPlayer) { if (OrchidModShamanHelper.getNbShamanicBonds(player, modPlayer, mod) > 1) { Projectile.NewProjectile(player.Center.X, player.Center.Y, projectile.velocity.X, projectile.velocity.Y, mod.ProjectileType("PatchWerkScepterProjAlt"), projectile.damage, 0f, 0, 0f, 0f); } }
public override bool SafeShoot(Player player, ref Vector2 position, ref float speedX, ref float speedY, ref int type, ref int damage, ref float knockBack) { OrchidModPlayer modPlayer = player.GetModPlayer <OrchidModPlayer>(); int nbBonds = OrchidModShamanHelper.getNbShamanicBonds(player, modPlayer, mod); player.ClearBuff(mod.BuffType("SporeEmpowerment")); for (int l = 0; l < Main.projectile.Length; l++) { Projectile proj = Main.projectile[l]; if (proj.active && proj.type == item.shoot && proj.owner == player.whoAmI) { proj.active = false; } } for (int i = 0; i < nbBonds + 2; i++) { Vector2 perturbedSpeed = new Vector2(speedX, speedY).RotatedByRandom(MathHelper.ToRadians(30)); float scale = 1f - (Main.rand.NextFloat() * .3f); perturbedSpeed = perturbedSpeed * scale; this.NewShamanProjectile(position.X, position.Y, perturbedSpeed.X, perturbedSpeed.Y, type, damage, knockBack, player.whoAmI); } return(false); }
public override void Kill(int timeLeft) { Player player = Main.player[projectile.owner]; OrchidModPlayer modPlayer = player.GetModPlayer <OrchidModPlayer>(); if (projectile.soundDelay == 0) { Main.PlaySound(mod.GetLegacySoundSlot(SoundType.Custom, "Sounds/Custom/Poof").WithPitchVariance(Main.rand.NextFloat(0.9f, 1f)), projectile.Center); } projectile.soundDelay = 10; int nbBonds = OrchidModShamanHelper.getNbShamanicBonds(player, modPlayer, mod); for (int i = 0; i < nbBonds; i++) { Vector2 perturbedSpeed = new Vector2(projectile.velocity.X / (Main.rand.Next(3) + 2), -3f).RotatedByRandom(MathHelper.ToRadians(30)); Projectile.NewProjectile(projectile.position.X, projectile.position.Y, perturbedSpeed.X, perturbedSpeed.Y, mod.ProjectileType("BoreanStriderScepterProjAlt"), (int)(projectile.damage * 0.70), 0.0f, player.whoAmI, 0.0f, 0.0f); } for (int i = 0; i < 10; i++) { var dust = Main.dust[Dust.NewDust(projectile.position, projectile.width, projectile.height, 67)]; dust.noGravity = true; dust.scale = 1.5f; dust.noLight = true; dust.velocity = new Vector2(0, Main.rand.NextFloat(2f, 4f)).RotatedBy(Main.rand.NextFloat(MathHelper.TwoPi)); } Projectile.NewProjectile(projectile.Center.X, projectile.Center.Y, 0, 0, ModContent.ProjectileType <BoreanStriderScepterKillProj>(), 0, 0.0f, player.whoAmI, Math.Sign(projectile.velocity.X) * 0.1f, projectile.rotation); }
public override void SafeOnHitNPC(NPC target, int damage, float knockback, bool crit, Player player, OrchidModPlayer modPlayer) { if (Main.rand.Next(8) < (OrchidModShamanHelper.getNbShamanicBonds(player, modPlayer, mod) + 1)) { Projectile.NewProjectile(player.position.X, player.position.Y, projectile.velocity.X, projectile.velocity.Y, mod.ProjectileType("ViscountScepterBat"), projectile.damage, 0f, 0, 0f, 0f); } }
public override void OnSpawn() { // I hate it Player player = Main.player[projectile.owner]; OrchidModPlayer modPlayer = player.GetModPlayer <OrchidModPlayer>(); int newCrit = 10 * OrchidModShamanHelper.getNbShamanicBonds(player, modPlayer, mod) + modPlayer.shamanCrit + player.inventory[player.selectedItem].crit; OrchidModGlobalProjectile modProjectile = projectile.GetGlobalProjectile <OrchidModGlobalProjectile>(); modProjectile.baseCritChance = newCrit; switch (Main.rand.Next(3)) { case 1: mainColor = new Color(231, 120, 255, 100); break; case 2: mainColor = new Color(120, 247, 255, 100); break; default: mainColor = new Color(215, 255, 120, 100); break; } projectile.ai[0] = 0.35f; projectile.ai[1] = 0; // Death Type startRotation = Main.rand.NextFloat(-(float)Math.PI, (float)Math.PI); }
public override void PostUpdateEquips() { this.updateBuffEffects(); this.updateItemEffects(); this.generalPostUpdateEquips(); OrchidModShamanHelper.shamanPostUpdateEquips(player, this, mod); OrchidModAlchemistHelper.alchemistPostUpdateEquips(player, this, mod); OrchidModGamblerHelper.gamblerPostUpdateEquips(player, this, mod); OrchidModDancerHelper.dancerPostUpdateEquips(player, this, mod); Mod thoriumMod = OrchidMod.ThoriumMod; if (thoriumMod != null) { object result = thoriumMod.Call("GetAllCrit", player); if (result is int thoriumCrit && thoriumCrit > 0) { this.customCrit += thoriumCrit; } } this.shamanCrit += this.customCrit; this.alchemistCrit += this.customCrit; this.gamblerCrit += this.customCrit; this.dancerCrit += this.customCrit; this.CheckWoodBreak(player); }
public override void AI() { Player player = Main.player[projectile.owner]; OrchidModPlayer modPlayer = player.GetModPlayer <OrchidModPlayer>(); int nbBonds = OrchidModShamanHelper.getNbShamanicBonds(player, modPlayer, mod); if (projectile.timeLeft == 45) { for (int i = 0; i < nbBonds; i++) { sizeBonus += 2; projectile.damage += 5; } projectile.netUpdate = true; } for (int index1 = 0; index1 < 3; ++index1) { int index2 = Dust.NewDust(projectile.Center, 0, 0, 169, 0.0f, 0.0f, 0, new Color(), 1f); Main.dust[index2].scale = (float)(Main.rand.Next(70, 110) * 0.013f) + ((sizeBonus) * 0.15f); Main.dust[index2].velocity = projectile.velocity; Main.dust[index2].noGravity = true; } if (projectile.timeLeft % 5 == 0) { int range = projectile.timeLeft - 10; range = range > 20 ? 20 : range; spawnDustCircle(169, range); } }
public override void UpdateInventory(Player player) { // I hate it OrchidModPlayer modPlayer = player.GetModPlayer <OrchidModPlayer>(); item.crit = 4 + 10 * OrchidModShamanHelper.getNbShamanicBonds(player, modPlayer, mod) + modPlayer.shamanCrit; }
public override void UpdateInventory(Player player) { OrchidModPlayer modPlayer = player.GetModPlayer <OrchidModPlayer>(); int nbBonds = OrchidModShamanHelper.getNbShamanicBonds(player, modPlayer, mod); item.useTime = 18 - (2 * nbBonds); item.useAnimation = 18 - (2 * nbBonds); }
public override void PostUpdate() { ignoreScrollHotbar = false; OrchidModShamanHelper.postUpdateShaman(player, this, mod); OrchidModGamblerHelper.postUpdateGambler(player, this, mod); OrchidModAlchemistHelper.postUpdateAlchemist(player, this, mod); }
public override void SafeOnHitNPC(NPC target, int damage, float knockback, bool crit, Player player, OrchidModPlayer modPlayer) { OrchidModProjectile.spawnDustCircle(projectile.Center, 127, 20, 20, true, 1f); if (OrchidModShamanHelper.getNbShamanicBonds(player, modPlayer, mod) > 2) { target.AddBuff((72), 5 * 60); // Midas } }
public override void SafeModifyWeaponDamage(Player player, ref float add, ref float mult, ref float flat) { OrchidModPlayer modPlayer = player.GetModPlayer <OrchidModPlayer>(); if (OrchidModShamanHelper.getNbShamanicBonds(player, modPlayer, mod) > 3) { flat += 7f; } }
public override void OnHitNPCWithProj(Projectile projectile, NPC target, int damage, float knockback, bool crit) { OrchidModGlobalProjectile modProjectile = projectile.GetGlobalProjectile <OrchidModGlobalProjectile>(); if (modProjectile.shamanProjectile) { OrchidModShamanHelper.OnHitNPCWithProjShaman(projectile, target, damage, knockback, crit, player, this, mod); } }
public override void AI() { if (RadiusProgress < 1) { RadiusProgress += 0.075f; } else if (RadiusProgress != 1) { RadiusProgress = 1; } float pr = MathHelper.SmoothStep(0, maxRadius, RadiusProgress); Player owner = Main.player[projectile.owner]; projectile.velocity.X = 0f; projectile.velocity.Y += +0.2f; if (projectile.velocity.Y > 16f) { projectile.velocity.Y = 16f; } // DPS Zone if (projectile.timeLeft % 120 == 0) { foreach (var target in Main.npc) { if (!target.active || !target.CanBeChasedBy() || Vector2.Distance(projectile.Center, target.Center) > pr) { continue; } target.StrikeNPCNoInteraction(projectile.damage, 0f, 0); if (NbBonds >= 3) { OrchidModGlobalProjectile modProjectile = projectile.GetGlobalProjectile <OrchidModGlobalProjectile>(); target.GetGlobalNPC <OrchidModGlobalNPC>().shamanShroom = 300; OrchidModShamanHelper.addShamanicEmpowerment(modProjectile.shamanEmpowermentType, owner, owner.GetModPlayer <OrchidModPlayer>(), mod); } target.netUpdate = true; } } // Buff Zone if (NbBonds >= 5) { Player buffPlayer = Main.player[Main.myPlayer]; // I hope it works if (Vector2.Distance(buffPlayer.Center, projectile.Center) <= pr) { buffPlayer.AddBuff(ModContent.BuffType <Buffs.ShroomHeal>(), 1); } } Color color = new Color(36, 129, 234) * 0.4f; Lighting.AddLight(projectile.Center, color.R / 255f, color.G / 255f, color.B / 255f); }
public override void SafeOnHitNPC(NPC target, int damage, float knockback, bool crit, Player player, OrchidModPlayer modPlayer) { float randX = target.position.X + (target.width / 2) + Main.rand.Next(700) - 350; float randY = target.position.Y + (target.height / 2) - Main.rand.Next(200) - 100; if (Main.rand.Next(20) < OrchidModShamanHelper.getNbShamanicBonds(player, modPlayer, mod)) { Projectile.NewProjectile(randX, randY, 0f, 0f, mod.ProjectileType("PharaohScepterPortal"), 0, 0.0f, projectile.owner, 0.0f, 0.0f); } }
public override void UpdateAccessory(Player player, bool hideVisual) { OrchidModPlayer modPlayer = player.GetModPlayer <OrchidModPlayer>(); if (OrchidModShamanHelper.getNbShamanicBonds(player, modPlayer, mod) > 0) { if (modPlayer.orbCountSmall == 0 && modPlayer.shamanOrbSmall != ShamanOrbSmall.NULL) { player.AddBuff(mod.BuffType("ShamanicBaubles"), 10 * 60); modPlayer.shamanOrbSmall = ShamanOrbSmall.NULL; if (Main.myPlayer == player.whoAmI) { player.HealEffect(5, true); } player.statLife += 5; } if (modPlayer.orbCountBig == 0 && modPlayer.shamanOrbBig != ShamanOrbBig.NULL) { player.AddBuff(mod.BuffType("ShamanicBaubles"), 10 * 60); modPlayer.shamanOrbBig = ShamanOrbBig.NULL; if (Main.myPlayer == player.whoAmI) { player.HealEffect(10, true); } player.statLife += 10; } if (modPlayer.orbCountLarge == 0 && modPlayer.shamanOrbLarge != ShamanOrbLarge.NULL) { player.AddBuff(mod.BuffType("ShamanicBaubles"), 10 * 60); modPlayer.shamanOrbLarge = ShamanOrbLarge.NULL; if (Main.myPlayer == player.whoAmI) { player.HealEffect(20, true); } player.statLife += 20; } if (modPlayer.orbCountUnique == 0 && modPlayer.shamanOrbUnique != ShamanOrbUnique.NULL) { player.AddBuff(mod.BuffType("ShamanicBaubles"), 10 * 60); modPlayer.shamanOrbUnique = ShamanOrbUnique.NULL; if (Main.myPlayer == player.whoAmI) { player.HealEffect(20, true); } player.statLife += 20; } } }
public override bool SafeShoot(Player player, ref Vector2 position, ref float speedX, ref float speedY, ref int type, ref int damage, ref float knockBack) { OrchidModPlayer modPlayer = player.GetModPlayer <OrchidModPlayer>(); int BuffsCount = OrchidModShamanHelper.getNbShamanicBonds(player, modPlayer, mod); if (BuffsCount > 2) { this.NewShamanProjectile(position.X, position.Y, speedX, speedY, mod.ProjectileType("DepthBatonProjAlt"), damage - 10, knockBack, player.whoAmI); } return(true); }
public override void SafeOnHitNPC(NPC target, int damage, float knockback, bool crit, Player player, OrchidModPlayer modPlayer) { //if (!(target.boss || target.type == NPCID.TargetDummy) && target.knockBackResist > 0f && slow) var owner = Main.player[projectile.owner]; if (OrchidModShamanHelper.getNbShamanicBonds(owner, owner.GetModPlayer <OrchidModPlayer>(), mod) >= 2 && !target.boss && target.CanBeChasedBy() && target.knockBackResist > 0f) { target.AddBuff(ModContent.BuffType <Buffs.Debuffs.LeafSlow>(), 60 * 5); } }
public override void SafeOnHitNPC(NPC target, int damage, float knockback, bool crit, Player player, OrchidModPlayer modPlayer) { if (OrchidModShamanHelper.getNbShamanicBonds(player, modPlayer, mod) > 4) { Mod thoriumMod = OrchidMod.ThoriumMod; if (thoriumMod != null) { target.AddBuff((thoriumMod.BuffType("BerserkSoul")), 5 * 60); } } }
public override bool SafeShoot(Player player, ref Vector2 position, ref float speedX, ref float speedY, ref int type, ref int damage, ref float knockBack) { OrchidModPlayer modPlayer = player.GetModPlayer <OrchidModPlayer>(); int nbBonds = OrchidModShamanHelper.getNbShamanicBonds(player, modPlayer, mod); for (int i = 0; i < nbBonds + 1; i++) { Vector2 perturbedSpeed = new Vector2(speedX, speedY).RotatedByRandom(MathHelper.ToRadians(nbBonds + 1)); this.NewShamanProjectile(position.X, position.Y, perturbedSpeed.X, perturbedSpeed.Y, type, damage, knockBack, player.whoAmI); } return(false); }
public override void AI() { projectile.alpha += 30; if (projectile.timeLeft == 80) { storeVelocity = projectile.velocity; storeDamage = projectile.damage; } if (projectile.timeLeft > 35) { projectile.velocity *= 0f; projectile.damage = 0; dustScale += 0.0195f; } if (projectile.timeLeft == 35) { projectile.damage = storeDamage; projectile.velocity = storeVelocity; projectile.extraUpdates = 1; OrchidModProjectile.spawnDustCircle(projectile.Center, 92, 20, 5, true, 1.5f, 1f, 1f, true, true, false, 0, 0, true); for (int i = 0; i < 5; i++) { int index = Dust.NewDust(projectile.position, projectile.width, projectile.height, 92); Main.dust[index].scale = 1.5f; Main.dust[index].velocity = projectile.velocity.RotatedByRandom(MathHelper.ToRadians(20)); Main.dust[index].noGravity = true; } } for (int i = 0; i < 3; i++) { Vector2 Position = projectile.position; int index2 = Dust.NewDust(Position, projectile.width, projectile.height, 92); Main.dust[index2].scale = (float)90 * 0.010f + dustScale / 3; Main.dust[index2].velocity *= 0.2f; Main.dust[index2].noGravity = true; } if (!this.initialized) { this.initialized = true; Player player = Main.player[projectile.owner]; OrchidModPlayer modPlayer = player.GetModPlayer <OrchidModPlayer>(); int newCrit = 10 * OrchidModShamanHelper.getNbShamanicBonds(player, modPlayer, mod) + modPlayer.shamanCrit + player.inventory[player.selectedItem].crit; OrchidModGlobalProjectile modProjectile = projectile.GetGlobalProjectile <OrchidModGlobalProjectile>(); modProjectile.baseCritChance = newCrit; } }
public override void UpdateAccessory(Player player, bool hideVisual) { OrchidModPlayer modPlayer = player.GetModPlayer <OrchidModPlayer>(); if (OrchidModShamanHelper.getNbShamanicBonds(player, modPlayer, mod) == 5 && modPlayer.timer120 % 2 == 0) { modPlayer.shamanFireTimer++; modPlayer.shamanWaterTimer++; modPlayer.shamanAirTimer++; modPlayer.shamanEarthTimer++; modPlayer.shamanSpiritTimer++; } }
public override bool SafeShoot(Player player, ref Vector2 position, ref float speedX, ref float speedY, ref int type, ref int damage, ref float knockBack) { OrchidModPlayer modPlayer = player.GetModPlayer <OrchidModPlayer>(); if (Main.rand.Next(101) < 4 + OrchidModShamanHelper.getNbShamanicBonds(player, modPlayer, mod) * 4) { this.NewShamanProjectile(position.X, position.Y, speedX, speedY, mod.ProjectileType("StrangePlatingScepterProjAlt"), damage * 2, knockBack, player.whoAmI); } else { this.NewShamanProjectile(position.X, position.Y, speedX, speedY, type, damage, knockBack, player.whoAmI); } return(false); }