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

◆ AI_123_Deerclops_Movement()

void Terraria.NPC.AI_123_Deerclops_Movement ( bool haltMovement,
bool goHome )
inlineprivate

Definition at line 37760 of file NPC.cs.

37761 {
37762 float num = (float)life / (float)lifeMax;
37763 float num2 = 1f - num;
37764 float num3 = 3.5f + 1f * num2;
37765 float num4 = 4f;
37766 float num5 = -0.4f;
37767 float min = -8f;
37768 float num6 = 0.4f;
37770 if (goHome)
37771 {
37772 rectangle = new Rectangle(homeTileX * 16, homeTileY * 16, 16, 16);
37773 if (Distance(rectangle.Center.ToVector2()) < 240f)
37774 {
37775 rectangle.X = (int)(base.Center.X + (float)(160 * direction));
37776 }
37777 }
37778 float num7 = (float)rectangle.Center.X - base.Center.X;
37779 float num8 = Math.Abs(num7);
37780 if (goHome && num7 != 0f)
37781 {
37783 }
37784 bool flag = num8 < 80f;
37785 bool flag2 = flag || haltMovement;
37786 if (ai[0] == -1f)
37787 {
37788 num7 = 5f;
37789 num3 = 5.35f;
37790 flag2 = false;
37791 }
37792 if (flag2)
37793 {
37794 velocity.X *= 0.9f;
37795 if ((double)velocity.X > -0.1 && (double)velocity.X < 0.1)
37796 {
37797 velocity.X = 0f;
37798 }
37799 }
37800 else
37801 {
37802 int num9 = Math.Sign(num7);
37803 velocity.X = MathHelper.Lerp(velocity.X, (float)num9 * num3, 1f / num4);
37804 }
37805 int num10 = 40;
37806 int num11 = 20;
37807 int num12 = 0;
37808 Vector2 vector = new Vector2(base.Center.X - (float)(num10 / 2), position.Y + (float)height - (float)num11 + (float)num12);
37809 bool num13 = vector.X < (float)rectangle.X && vector.X + (float)width > (float)(rectangle.X + rectangle.Width);
37810 bool flag3 = vector.Y + (float)num11 < (float)(rectangle.Y + rectangle.Height - 16);
37811 bool acceptTopSurfaces = base.Bottom.Y >= (float)rectangle.Top;
37812 bool flag4 = Collision.SolidCollision(vector, num10, num11, acceptTopSurfaces);
37813 bool flag5 = Collision.SolidCollision(vector, num10, num11 - 4, acceptTopSurfaces);
37814 bool flag6 = !Collision.SolidCollision(vector + new Vector2(num10 * direction, 0f), 16, 80, acceptTopSurfaces);
37815 float num14 = 8f;
37816 if (flag4 || flag5)
37817 {
37818 localAI[0] = 0f;
37819 }
37820 if ((num13 || flag) && flag3)
37821 {
37822 velocity.Y = MathHelper.Clamp(velocity.Y + num6 * 2f, 0.001f, 16f);
37823 }
37824 else if (flag4 && !flag5)
37825 {
37826 velocity.Y = 0f;
37827 }
37828 else if (flag4)
37829 {
37830 velocity.Y = MathHelper.Clamp(velocity.Y + num5, min, 0f);
37831 }
37832 else if (velocity.Y == 0f && flag6)
37833 {
37834 velocity.Y = 0f - num14;
37835 localAI[0] = 1f;
37836 }
37837 else
37838 {
37839 velocity.Y = MathHelper.Clamp(velocity.Y + num6, 0f - num14, 16f);
37840 }
37841 }
static float Lerp(float value1, float value2, float amount)
Definition MathHelper.cs:53
static float Clamp(float value, float min, float max)
Definition MathHelper.cs:46
static double Abs(double value)
static int Sign(decimal value)
Definition Math.cs:1202
Vector2 velocity
Definition Entity.cs:16
float Distance(Vector2 Other)
Definition Entity.cs:187
Vector2 position
Definition Entity.cs:14
float[] localAI
Definition NPC.cs:449
int spriteDirection
Definition NPC.cs:517
int lifeMax
Definition NPC.cs:479
NPCAimedTarget GetTargetData(bool ignorePlayerTankPets=true)
Definition NPC.cs:864
float[] ai
Definition NPC.cs:447
int homeTileX
Definition NPC.cs:543
int life
Definition NPC.cs:477
int homeTileY
Definition NPC.cs:545

References System.Math.Abs(), Terraria.NPC.ai, Microsoft.Xna.Framework.MathHelper.Clamp(), Terraria.Entity.direction, Terraria.Entity.Distance(), Terraria.NPC.GetTargetData(), Terraria.Entity.height, Terraria.DataStructures.NPCAimedTarget.Hitbox, Terraria.NPC.homeTileX, Terraria.NPC.homeTileY, Microsoft.Xna.Framework.MathHelper.Lerp(), Terraria.NPC.life, Terraria.NPC.lifeMax, Terraria.NPC.localAI, Terraria.Entity.position, System.Math.Sign(), Terraria.Collision.SolidCollision(), Terraria.NPC.spriteDirection, Microsoft.Xna.Framework.Graphics.Vector2, Terraria.Entity.velocity, Terraria.Entity.width, Microsoft.Xna.Framework.Vector2.X, and Microsoft.Xna.Framework.Vector2.Y.

Referenced by Terraria.NPC.AI_123_Deerclops().