Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ AI_186_PrincessWeapon()

void Terraria.Projectile.AI_186_PrincessWeapon ( )
inlineprivate

Definition at line 34721 of file Projectile.cs.

34722 {
34723 float num = 60f;
34724 ai[0] += 1f;
34725 if (ai[0] >= num)
34726 {
34727 Kill();
34728 return;
34729 }
34730 Opacity = Utils.Remap(ai[0], 0f, num, 1f, 0f);
34731 float num2 = ai[0] / num;
34732 float num3 = 1f - (1f - num2) * (1f - num2);
34733 float num4 = 1f - (1f - num3) * (1f - num3);
34734 float num5 = Utils.Remap(ai[0], num - 15f, num, 0f, 1f);
34735 float num6 = num5 * num5;
34736 float num7 = 1f - num6;
34737 scale = (0.4f + 0.6f * num4) * num7;
34738 float num8 = Utils.Remap(ai[0], 20f, num, 0f, 1f);
34739 float num9 = 1f - (1f - num8) * (1f - num8);
34740 float num10 = 1f - (1f - num9) * (1f - num9);
34741 localAI[0] = (0.4f + 0.6f * num10) * num7;
34742 int num11 = width / 2;
34743 Color newColor = Main.hslToRgb(0.92f, 1f, 0.5f) * Opacity;
34744 float num12 = 6f;
34745 float num13 = 2f;
34746 if (num2 < 0.9f)
34747 {
34748 for (int i = 0; i < 3; i++)
34749 {
34750 if (Main.rand.Next(2) == 0)
34751 {
34752 Vector2 vector = Vector2.UnitX.RotatedBy(Main.rand.NextFloat() * ((float)Math.PI * 2f));
34753 Vector2 vector2 = vector * ((float)num11 * scale);
34754 Vector2 vector3 = base.Center + vector2;
34755 Vector2 vector4 = vector.RotatedBy(0.7853981852531433);
34756 vector3 += vector4 * num12;
34757 int num14 = Dust.NewDust(vector3, 0, 0, 267, 0f, 0f, 0, newColor);
34758 Main.dust[num14].position = vector3;
34759 Main.dust[num14].noGravity = true;
34760 Main.dust[num14].scale = 0.3f;
34761 Main.dust[num14].fadeIn = Main.rand.NextFloat() * 1.2f * scale;
34762 Main.dust[num14].velocity = vector4 * scale * (0f - num13);
34763 Main.dust[num14].scale *= scale;
34764 Main.dust[num14].velocity += velocity * 0.5f;
34765 Main.dust[num14].position += Main.dust[num14].velocity * -5f;
34766 if (num14 != 6000)
34767 {
34768 Dust dust = Dust.CloneDust(num14);
34769 dust.scale /= 2f;
34770 dust.fadeIn *= 0.85f;
34771 dust.color = new Color(255, 255, 255, 255);
34772 }
34773 }
34774 }
34775 }
34776 if (num2 < 0.9f)
34777 {
34778 for (int j = 0; j < 3; j++)
34779 {
34780 if (Main.rand.Next(2) == 0)
34781 {
34782 Vector2 vector5 = Vector2.UnitX.RotatedBy(Main.rand.NextFloat() * ((float)Math.PI * 2f));
34783 Vector2 vector6 = vector5 * ((float)num11 * scale);
34784 Vector2 vector7 = base.Center + vector6;
34785 Vector2 vector8 = vector5.RotatedBy(0.7853981852531433);
34786 vector7 += vector8 * (0f - num12);
34787 int num15 = Dust.NewDust(vector7, 0, 0, 267, 0f, 0f, 0, newColor);
34788 Main.dust[num15].position = vector7;
34789 Main.dust[num15].noGravity = true;
34790 Main.dust[num15].scale = 0.3f;
34791 Main.dust[num15].fadeIn = Main.rand.NextFloat() * 1.2f * scale;
34792 Main.dust[num15].velocity = vector8 * scale * num13;
34793 Main.dust[num15].scale *= scale;
34794 Main.dust[num15].velocity = velocity * 0.5f;
34795 if (num15 != 6000)
34796 {
34797 Dust dust2 = Dust.CloneDust(num15);
34798 dust2.scale /= 2f;
34799 dust2.fadeIn *= 0.85f;
34800 dust2.color = new Color(255, 255, 255, 255);
34801 }
34802 }
34803 }
34804 }
34805 if (num2 < 0.95f)
34806 {
34807 for (float num16 = 0f; num16 < 0.8f; num16 += 1f)
34808 {
34809 if (Main.rand.Next(4) == 0)
34810 {
34811 Vector2 vector9 = Vector2.UnitX.RotatedBy(Main.rand.NextFloat() * ((float)Math.PI * 2f) + (float)Math.PI / 2f) * ((float)num11 * scale);
34812 Vector2 positionInWorld = base.Center + vector9;
34814 {
34815 PositionInWorld = positionInWorld,
34816 MovementVector = velocity
34817 }, owner);
34818 }
34819 }
34820 }
34821 if (ai[0] == num - 10f)
34822 {
34823 for (float num17 = 0f; num17 < 1f; num17 += 0.25f)
34824 {
34825 Vector2 vector10 = Vector2.UnitX.RotatedBy((float)Math.PI * 2f * num17);
34826 _ = vector10 * ((float)num11 * scale);
34827 Vector2 center = base.Center;
34828 float num18 = 1f;
34830 {
34831 PositionInWorld = center,
34832 MovementVector = vector10 * num18
34833 }, owner);
34835 {
34836 PositionInWorld = center,
34837 MovementVector = vector10 * num18 * 2f
34838 }, owner);
34839 }
34840 }
34841 }
const double PI
Definition Math.cs:16
Vector2 velocity
Definition Entity.cs:16
static void RequestParticleSpawn(bool clientOnly, ParticleOrchestraType type, ParticleOrchestraSettings settings, int? overrideInvokingPlayerIndex=null)

References Terraria.Dust.CloneDust(), Terraria.Main.dust, Terraria.Main.hslToRgb(), Terraria.Dust.NewDust(), System.Math.PI, Terraria.Main.rand, Terraria.Utils.Remap(), Terraria.GameContent.Drawing.ParticleOrchestrator.RequestParticleSpawn(), and Microsoft.Xna.Framework.Vector2.UnitX.