Refactor and redo Shattered Prism

This commit is contained in:
2025-11-24 22:08:04 +00:00
parent 9c9698a93d
commit c1ac0161f0
17 changed files with 545 additions and 652 deletions
@@ -0,0 +1,55 @@
using Microsoft.Xna.Framework;
using Terraria;
using Terraria.ID;
using Terraria.ModLoader;
namespace ForgottenWawiTech.Content.Projectiles.FragmentedPrism
{
public class FragmentedPrismBeam : ModProjectile
{
public override string Texture => "Terraria/Images/Projectile_440";
public override void SetDefaults()
{
Projectile.width = 18;
Projectile.height = 18;
Projectile.friendly = true;
Projectile.DamageType = DamageClass.Magic;
Projectile.penetrate = -1;
Projectile.tileCollide = false;
Projectile.ignoreWater = true;
Projectile.extraUpdates = 12;
Projectile.timeLeft = 26;
Projectile.usesLocalNPCImmunity = true;
Projectile.localNPCHitCooldown = 8;
Projectile.light = 0.55f;
}
public override void AI()
{
if (Projectile.velocity.LengthSquared() < 0.001f)
{
Projectile.Kill();
return;
}
Projectile.rotation = Projectile.velocity.ToRotation();
float progress = 1f - Projectile.timeLeft / 26f;
Projectile.scale = MathHelper.Lerp(0.85f, 1.35f, progress);
Lighting.AddLight(Projectile.Center, 0.2f, 0.35f, 0.55f);
if (Main.rand.NextBool(3))
{
Vector2 dustPos = Projectile.Center - Projectile.velocity * Main.rand.NextFloat(0.2f, 0.6f);
Dust dust = Dust.NewDustPerfect(dustPos, DustID.DungeonSpirit, Projectile.velocity * -0.15f, 150, default, 1.05f);
dust.noGravity = true;
}
}
public override bool? CanHitNPC(NPC target)
{
return base.CanHitNPC(target);
}
}
}