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

◆ AI_192_JuminoAnimation()

void Terraria.Projectile.AI_192_JuminoAnimation ( )
inlineprivate

Definition at line 33905 of file Projectile.cs.

33906 {
33907 float num = 120f;
33908 float num2 = 420f + num;
33909 float num3 = num2 - 150f;
33910 if (Opacity > 0f && Opacity < 1f)
33911 {
33912 for (int i = 0; i < 1; i++)
33913 {
33914 Rectangle r = Utils.CenteredRectangle(base.Center + new Vector2(0f, 20f), new Vector2(32f, 32f));
33915 Dust dust = Dust.NewDustDirect(r.TopLeft(), r.Width, r.Height, 263, 0f, 0f, 100, new Color(80, 200, 255), 0.6f);
33916 dust.noGravity = true;
33917 dust.fadeIn = 0.9f;
33918 dust.velocity = new Vector2(0f, -0.3f);
33919 }
33920 }
33921 int num4 = 20;
33922 int num5 = 4;
33923 if (frame == 1)
33924 {
33925 num5 = 60;
33926 }
33928 if (timeSinceFall > 0f)
33929 {
33930 if (fall < 20f)
33931 {
33932 frame = 0;
33933 }
33934 else if (++frameCounter >= num5)
33935 {
33936 frameCounter = 0;
33937 if (++frame >= num4)
33938 {
33939 frame = num4 - 1;
33940 }
33941 }
33942 }
33943 else
33944 {
33945 frame = 1;
33946 }
33947 float num6 = Main.player[owner].Center.X - base.Center.X;
33948 direction = (spriteDirection = ((num6 >= 0f) ? 1 : (-1)));
33949 int num7 = 30;
33950 float num8 = num2 + (float)(num4 * num5) + (float)num7;
33951 Opacity = Utils.Remap(ai[0], num3 + 0f, num3 + 20f, 0f, 1f) * Utils.Remap(ai[0], num8 - 5f, num8, 1f, 0.5f);
33952 ai[0] += 1f;
33953 if (ai[0] <= 130f && ai[0] >= 60f)
33954 {
33955 float num9 = Utils.Remap(ai[0], 60f, 130f, 0f, 1f);
33956 if (Main.rand.NextFloat() < num9 * 0.5f)
33957 {
33958 Rectangle r2 = Utils.CenteredRectangle(base.Center + new Vector2(0f, 0f), new Vector2(70f, 70f) * num9);
33959 Dust dust2 = Dust.NewDustDirect(r2.TopLeft(), r2.Width, r2.Height, 263, 0f, 0f, 100, new Color(80, 200, 255), 0.6f);
33960 dust2.noGravity = true;
33961 dust2.fadeIn = 0.9f;
33962 dust2.velocity = Main.rand.NextVector2Circular(2f, 2f);
33963 }
33964 for (float num10 = 0f; num10 < 1f; num10 += 0.5f)
33965 {
33966 if (Main.rand.NextFloat() < 0.5f)
33967 {
33968 Dust dust3 = Dust.NewDustPerfect(base.Center, 263, (-Vector2.UnitY).RotatedBy(((0f - num9) * (3f - num9 * 0.6f) + num10 + Main.rand.NextFloatDirection() * 0.05f * (1f - num9)) * ((float)Math.PI * 2f)) * (2f + Main.rand.NextFloat() + Main.rand.NextFloat() * 3f * num9), 30, new Color(80, 200, 255));
33969 dust3.noGravity = true;
33970 dust3.fadeIn = 1.1f;
33971 }
33972 }
33973 }
33974 if (ai[0] <= 60f)
33975 {
33976 float num11 = Utils.Remap(ai[0], 0f, 60f, 0f, 1f);
33977 for (float num12 = 0f; num12 < 1f; num12 += 0.5f)
33978 {
33979 if (Main.rand.NextFloat() < 0.5f)
33980 {
33981 Dust dust4 = Dust.NewDustPerfect(base.Center, 263, (-Vector2.UnitY).RotatedBy(((0f - num11) * 3f + num12 + Main.rand.NextFloatDirection() * 0.05f) * ((float)Math.PI * 2f)) * (2f * num11 + Main.rand.NextFloat() * num11), 100, new Color(80, 200, 255), 2f - num11);
33982 dust4.noGravity = true;
33983 dust4.fadeIn = 1.1f;
33984 }
33985 }
33986 if (ai[0] == 58f)
33987 {
33988 for (float num13 = 0f; num13 < 1f; num13 += 1f / 12f)
33989 {
33990 Dust dust5 = Dust.NewDustPerfect(base.Center, 263, (-Vector2.UnitY).RotatedBy(((0f - num11) * 2f + num13 + Main.rand.NextFloatDirection() * 0.05f) * ((float)Math.PI * 2f)) * (1f * num11 + Main.rand.NextFloat() * num11 * 2f), 100, new Color(80, 200, 255), 0.8f);
33991 dust5.noGravity = true;
33992 dust5.fadeIn = 1.2f;
33993 }
33994 }
33995 }
33996 if (ai[0] >= num8 - 20f)
33997 {
33998 float num14 = Utils.Remap(ai[0], num8 - 20f, num8, 0.25f, 1f);
33999 Rectangle r3 = Utils.CenteredRectangle(base.Center + new Vector2(0f, 30f + num14 * -20f), new Vector2(82f, 72f) * num14);
34000 for (int j = 0; j < 5; j++)
34001 {
34002 Dust dust6 = Dust.NewDustDirect(r3.TopLeft(), r3.Width, r3.Height, 263, 0f, num14 * -4f, 100, new Color(80, 200, 255) * 0.75f, 0.1f);
34003 dust6.noGravity = true;
34004 dust6.fadeIn = 0.6f + Main.rand.NextFloat() * 0.3f;
34005 dust6.velocity = new Vector2(0f, -0.3f);
34006 }
34007 for (int k = 0; k < 1; k++)
34008 {
34009 Rectangle r4 = Utils.CenteredRectangle(base.Center + new Vector2(0f, 40f), new Vector2(32f, 32f));
34010 Dust dust7 = Dust.NewDustDirect(r4.TopLeft(), r4.Width, r4.Height, 263, 0f, 0f, 100, new Color(80, 200, 255), 0.6f);
34011 dust7.noGravity = true;
34012 dust7.fadeIn = 0.9f;
34013 dust7.velocity = new Vector2(0f, -0.3f);
34014 }
34015 }
34016 if (Main.rand.Next(6) == 0 && ai[0] >= 90f && ai[0] < num2)
34017 {
34018 Rectangle r5 = Utils.CenteredRectangle(base.Center + new Vector2(0f, 0f), new Vector2(104f, 104f));
34019 Dust dust8 = Dust.NewDustDirect(r5.TopLeft(), r5.Width, r5.Height, 263, 0f, 0f, 100, new Color(80, 200, 255), 0.6f);
34020 dust8.noGravity = true;
34021 dust8.fadeIn = 0.9f;
34022 dust8.velocity = new Vector2(0f, -0.3f);
34023 }
34024 if (ai[0] >= num8)
34025 {
34026 int num15 = Item.NewItem(new EntitySource_Gift(this), base.Center + new Vector2(0f, 12f), Vector2.Zero, 5276);
34027 Main.item[num15].velocity = new Vector2(0f, 0f);
34028 Kill();
34029 }
34030 }
const double PI
Definition Math.cs:16
static void AI_192_GetJuminoFall(Projectile proj, out float timeSinceFall, out float fall)

References Terraria.Utils.CenteredRectangle(), Terraria.Main.item, Terraria.Dust.NewDustDirect(), Terraria.Dust.NewDustPerfect(), Terraria.Item.NewItem(), System.Math.PI, Terraria.Main.player, Terraria.Main.rand, Terraria.Utils.Remap(), Microsoft.Xna.Framework.Vector2.UnitY, and Microsoft.Xna.Framework.Vector2.Zero.