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

◆ AI_164_GetHomeLocation()

static Vector2 Terraria.Projectile.AI_164_GetHomeLocation ( Player master,
int stackedIndex,
int totalIndexes )
inlinestatic

Definition at line 38570 of file Projectile.cs.

38571 {
38572 int num = master.bodyFrame.Height;
38573 if (num == 0)
38574 {
38575 num = 1;
38576 }
38577 Vector2 vector = Main.OffsetsPlayerHeadgear[master.bodyFrame.Y / num];
38578 vector.Y -= 2f;
38579 float num2 = master.miscCounterNormalized * 2f;
38580 int num3 = stackedIndex / 4;
38581 int num4 = totalIndexes / 4;
38582 if (totalIndexes % 4 > 0)
38583 {
38584 num4++;
38585 }
38586 int num5 = (totalIndexes - num3 * 4) % 4;
38587 if (num5 == 0)
38588 {
38589 num5 = 4;
38590 }
38591 if (num4 - 1 != num3)
38592 {
38593 num5 = 4;
38594 }
38595 int num6 = stackedIndex % num5;
38596 float num7 = (float)num6 / (float)num5;
38597 num2 += (float)num3 / 8f;
38598 if (stackedIndex >= (num4 - 1) * 4 && num3 > 0)
38599 {
38600 num2 = 0f;
38601 switch (num5)
38602 {
38603 case 1:
38604 num7 = 0f;
38605 break;
38606 case 2:
38607 num7 = 0.25f + (float)num6 * 0.5f;
38608 break;
38609 case 3:
38610 num7 = (float)(num6 - 1) / 6f;
38611 break;
38612 case 4:
38613 num7 = ((float)num6 - 1.5f) / 6f;
38614 break;
38615 }
38616 }
38617 Vector2 vector2 = new Vector2(0f, -8 - 12 * num3).RotatedBy((num2 + num7) * ((float)Math.PI * 2f));
38618 vector += vector2 + new Vector2(0f, master.gravDir * -40f);
38619 Vector2 mountedCenter = master.MountedCenter;
38620 _ = master.direction;
38621 Vector2 vec = mountedCenter + new Vector2(0f, master.gravDir * -21f) + vector;
38622 vec.Y += master.gfxOffY;
38623 return vec.Floor();
38624 }
const double PI
Definition Math.cs:16

References Terraria.Player.bodyFrame, Terraria.Entity.direction, Terraria.Player.gfxOffY, Terraria.Player.gravDir, Microsoft.Xna.Framework.Rectangle.Height, Terraria.Player.MountedCenter, Terraria.Main.OffsetsPlayerHeadgear, and System.Math.PI.