using Terraria.ID;
using Microsoft.Xna.Framework;
using Terraria.ModLoader;
namespace ExampleMod.Items.Weapons
{
public class ExampleGun : ModItem
{
public override void SetDefaults()
{
item.name = "Hotti Shotti";
item.damage = 20;
item.ranged = true;
item.width = 40;
item.height = 20;
item.toolTip = "FEEL THE BURN";
item.toolTip2 = "litteraly";
item.useTime = 20;
item.useAnimation = 20;
item.useStyle = 5;
item.noMelee = true; //so the item's animation doesn't do damage
item.knockBack = 4;
item.value = 10000;
item.rare = 2;
item.useSound = 11;
item.autoReuse = false;
item.shoot = 10; //idk why but all the guns in the vanilla source have this
item.shootSpeed = 16f;
item.useAmmo = ProjectileID.Bullet;
}
public static Microsoft.Xna.Framework.Vector2[] evenSpread (float speedX, float speedY, int angle, int num)
{
var posArray = new Microsoft.Xna.Framework.Vector2[num];
float spread = (float)(angle * 0.0174532925);
float baseSpeed = (float)System.Math.Sqrt(speedX * speedX + speedY * speedY);
double startAngle = System.Math.Atan2(speedX, speedY) - spread / 5 ; //i have no idea what to seat the spread / X at, so thats why it is at 5
double deltaAngle = spread / (float)num;
double offsetAngle;
for (int i = 0; i < num; ++i)
{
offsetAngle = startAngle + deltaAngle * i;
posArray[i] = new Microsoft.Xna.Framework.Vector2(baseSpeed * (float)System.Math.Sin(offsetAngle), baseSpeed * (float)System.Math.Cos(offsetAngle));
}
return (Microsoft.Xna.Framework.Vector2[])posArray;
}
public override bool Shoot(Player player, ref Vector2 position, ref float speedX, ref float speedY, ref int type, ref int damage, ref float knockBack)
{
Vector2[] speeds = ExampleGun.evenSpread(16f, 16f, 45, 5);
for (int i = 0; i < 5; ++i)
{
Terraria.Projectile.NewProjectile(position.X, position.Y, speeds[i].X, speeds[i].Y, 45, 45, 15f);
}
return false;
}
public override void AddRecipes()
{
ModRecipe recipe = new ModRecipe(mod);
recipe.AddIngredient(null, "ExampleItem", 10);
recipe.AddTile(null, "ExampleWorkbench");
recipe.SetResult(this);
recipe.AddRecipe();
}
}
}