Files
ForgottenWawiTech/Content/Items/Weapons/Magic/TomeOfUnyielding.cs
T

135 lines
5.2 KiB
C#

using Microsoft.Xna.Framework;
using Terraria;
using Terraria.Audio;
using Terraria.DataStructures;
using Terraria.ID;
using Terraria.ModLoader;
using ForgottenWawiTech.Content.Rarities;
namespace ForgottenWawiTech.Content.Items.Weapons.Magic
{
public class TomeOfUnyielding : ModItem
{
public override void SetDefaults()
{
Item.damage = 15000;
Item.mana = 30;
Item.crit = 100;
Item.DamageType = DamageClass.Magic;
Item.width = 40;
Item.height = 40;
Item.useTime = 20;
Item.useAnimation = 20;
Item.useStyle = ItemUseStyleID.Shoot;
Item.knockBack = 6;
Item.value = Item.buyPrice(platinum: 20);
Item.rare = ModContent.RarityType<SingularityItem>();
Item.autoReuse = true;
Item.noMelee = true;
Item.shoot = ProjectileID.PurificationPowder;
Item.shootSpeed = 50f;
Item.useAmmo = AmmoID.None;
}
public override bool Shoot(Player player, Terraria.DataStructures.EntitySource_ItemUse_WithAmmo source, Vector2 position, Vector2 velocity, int type, int damage, float knockBack)
{
// Shoot every projectile from vanilla Terraria magic weapons at once.
int[] projectiles = new int[] {
// Pre-Hardmode Magic Weapons
ProjectileID.WandOfSparkingSpark,
ProjectileID.AmethystBolt,
ProjectileID.TopazBolt,
ProjectileID.SapphireBolt,
ProjectileID.EmeraldBolt,
ProjectileID.RubyBolt,
ProjectileID.DiamondBolt,
ProjectileID.AmberBolt,
ProjectileID.VilethornBase,
ProjectileID.VilethornTip,
ProjectileID.Bee,
ProjectileID.WaterStream,
ProjectileID.BookOfSkullsSkull,
ProjectileID.DemonScythe,
ProjectileID.ThunderSpear,
ProjectileID.FlowerPetal,
ProjectileID.Flamelash,
ProjectileID.MagicMissile,
// Hardmode Magic Weapons
ProjectileID.SkyFracture,
ProjectileID.CrystalShard,
ProjectileID.CrystalStorm,
ProjectileID.CursedFlameFriendly,
ProjectileID.GoldenShowerFriendly,
//ProjectileID.CrystalSerpent,
ProjectileID.Meteor1,
ProjectileID.Meteor2,
ProjectileID.Meteor3,
ProjectileID.RainbowRodBullet,
//ProjectileID.MagicalHarp,
ProjectileID.IceBlock,
ProjectileID.RainCloudRaining,
ProjectileID.PoisonFang,
ProjectileID.VenomFang,
ProjectileID.NettleBurstLeft,
ProjectileID.NettleBurstRight,
//ProjectileID.LeafBlowerLeaf,
ProjectileID.ShadowBeamFriendly,
ProjectileID.SpectreWrath,
ProjectileID.InfernoFriendlyBolt,
ProjectileID.MagnetSphereBall,
ProjectileID.MagnetSphereBolt,
ProjectileID.RainbowFront,
ProjectileID.RainbowBack,
ProjectileID.NorthPoleSnowflake,
ProjectileID.Blizzard,
ProjectileID.HeatRay,
ProjectileID.LaserMachinegunLaser,
ProjectileID.ChargedBlasterOrb,
ProjectileID.Bubble,
ProjectileID.NightBeam,
ProjectileID.LightBeam,
ProjectileID.LunarFlare,
ProjectileID.NebulaArcanum,
ProjectileID.NebulaBlaze1,
ProjectileID.NebulaBlaze2,
ProjectileID.LastPrismLaser,
ProjectileID.ShadowFlame,
ProjectileID.ToxicFlask,
ProjectileID.BookStaffShot,
// Special/Event Magic Weapons
ProjectileID.FlaironBubble,
ProjectileID.UnholyTridentFriendly,
ProjectileID.RainFriendly,
ProjectileID.IceSickle,
ProjectileID.FrostBoltStaff,
ProjectileID.CrystalLeafShot,
ProjectileID.Spark,
ProjectileID.BeeArrow,
ProjectileID.Wasp,
ProjectileID.DD2PhoenixBowShot,
ProjectileID.MonkStaffT1,
ProjectileID.MonkStaffT2,
ProjectileID.MonkStaffT3,
};
foreach (int projectileType in projectiles)
{
Terraria.Projectile.NewProjectile(source, position, velocity, projectileType, 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;
}
}
}
}