using Microsoft.Xna.Framework; using Terraria; using Terraria.Audio; using Terraria.DataStructures; using Terraria.ID; using Terraria.ModLoader; using ForgottenWawiTech.Content.Items; namespace ForgottenWawiTech.Content.Items { public class TrueNyanageddon : ModItem { public override void SetDefaults() { Item.damage = 1200; Item.DamageType = DamageClass.Ranged; Item.width = 40; Item.height = 40; Item.useTime = 7; Item.useAnimation = 7; Item.useStyle = ItemUseStyleID.Shoot; Item.knockBack = 20; Item.value = Item.buyPrice(gold: 60); Item.rare = ItemRarityID.Red; Item.UseSound = SoundID.Meowmere; Item.autoReuse = true; Item.noMelee = true; Item.shoot = ProjectileID.PurificationPowder; Item.shootSpeed = 20f; Item.useAmmo = AmmoID.None; } // On shoot, fire 5 Projectile ID 502 (the rainbow projectile) in an arc instead of the default ammo projectile public override bool Shoot(Player player, Terraria.DataStructures.EntitySource_ItemUse_WithAmmo source, Vector2 position, Vector2 velocity, int type, int damage, float knockBack) { for (int i = -2; i <= 2; i++) { Vector2 newVelocity = velocity.RotatedBy(MathHelper.ToRadians(3 * i)); Terraria.Projectile.NewProjectile(source, position, newVelocity, 502, damage, knockBack, player.whoAmI); } return false; // return false to prevent tModLoader from shooting the default projectile } public override Vector2? HoldoutOffset() { return new Vector2(2f, -2f); } public override void ModifyShootStats(Player player, ref Vector2 position, ref Vector2 velocity, ref int type, ref int damage, ref float knockback) { Vector2 muzzleOffset = Vector2.Normalize(velocity) * 25f; if (Collision.CanHit(position, 0, 0, position + muzzleOffset, 0, 0)) { position += muzzleOffset; } } public override void AddRecipes() { Recipe recipe = CreateRecipe(); recipe.AddIngredient(1); recipe.AddIngredient(ItemID.LunarBar, 20); recipe.AddIngredient(ItemID.Meowmere, 5); recipe.AddTile(TileID.LunarCraftingStation); recipe.Register(); } } }