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

◆ AI_121_QueenSlime_FlyMovement()

void Terraria.NPC.AI_121_QueenSlime_FlyMovement ( )
inlineprivate

Definition at line 38264 of file NPC.cs.

38265 {
38266 noTileCollide = true;
38267 noGravity = true;
38268 float num = 12f;
38269 float num2 = 0.085f;
38270 float num3 = 250f;
38271 TargetClosest();
38272 Vector2 desiredVelocity = base.Center;
38273 if (timeLeft > 10)
38274 {
38275 if (!Collision.CanHit(this, Main.player[target]))
38276 {
38277 bool flag = false;
38278 Vector2 center = Main.player[target].Center;
38279 for (int i = 0; i < 16; i++)
38280 {
38281 float num4 = 16 * i;
38282 Point point = (center + new Vector2(0f, 0f - num4)).ToTileCoordinates();
38283 if (WorldGen.SolidOrSlopedTile(point.X, point.Y))
38284 {
38285 desiredVelocity = center + new Vector2(0f, 0f - num4 + 16f) - base.Center;
38286 flag = true;
38287 break;
38288 }
38289 }
38290 if (!flag)
38291 {
38292 desiredVelocity = center - base.Center;
38293 }
38294 }
38295 else
38296 {
38297 desiredVelocity = Main.player[target].Center + new Vector2(0f, 0f - num3) - base.Center;
38298 }
38299 }
38300 else
38301 {
38302 desiredVelocity = base.Center + new Vector2(500f * (float)direction, 0f - num3) - base.Center;
38303 }
38304 float num5 = desiredVelocity.Length();
38305 if (Math.Abs(desiredVelocity.X) < 40f)
38306 {
38307 desiredVelocity.X = velocity.X;
38308 }
38309 float num6 = num - 2f;
38310 if (num5 > 100f && ((velocity.X < 0f - num6 && desiredVelocity.X > 0f) || (velocity.X > num6 && desiredVelocity.X < 0f)))
38311 {
38312 num2 *= 2f;
38313 }
38314 if (num5 < 40f)
38315 {
38317 }
38318 else if (num5 < 80f)
38319 {
38320 desiredVelocity.Normalize();
38321 desiredVelocity *= num * 0.65f;
38322 }
38323 else
38324 {
38325 desiredVelocity.Normalize();
38326 desiredVelocity *= num;
38327 }
38329 rotation = velocity.X * 0.1f;
38330 if (rotation > 0.5f)
38331 {
38332 rotation = 0.5f;
38333 }
38334 if (rotation < -0.5f)
38335 {
38336 rotation = -0.5f;
38337 }
38338 }
static double Abs(double value)
Vector2 velocity
Definition Entity.cs:16
int timeLeft
Definition NPC.cs:457
void TargetClosest(bool faceTarget=true)
Definition NPC.cs:69934
bool noGravity
Definition NPC.cs:503
float rotation
Definition NPC.cs:501
bool noTileCollide
Definition NPC.cs:505
void SimpleFlyMovement(Vector2 desiredVelocity, float moveSpeed)
Definition NPC.cs:69581
int target
Definition NPC.cs:459

References System.Math.Abs(), Terraria.Collision.CanHit(), Terraria.Entity.direction, Terraria.NPC.noGravity, Terraria.NPC.noTileCollide, Terraria.Main.player, Terraria.NPC.rotation, Terraria.NPC.SimpleFlyMovement(), Terraria.WorldGen.SolidOrSlopedTile(), Terraria.NPC.target, Terraria.NPC.TargetClosest(), Terraria.NPC.timeLeft, Microsoft.Xna.Framework.Graphics.Vector2, Terraria.Entity.velocity, Microsoft.Xna.Framework.Point.X, Microsoft.Xna.Framework.Vector2.X, and Microsoft.Xna.Framework.Point.Y.

Referenced by Terraria.NPC.AI_121_QueenSlime().